/*! For license information please see bundle.js.LICENSE.txt */ !function(e){function t(t){for(var n,r,i=t[0],a=t[1],s=0,l=[];s(.*?)<\\/").concat(t,">|<").concat(t,">|<").concat(t,"\\s*\\/>)")]=n[t];o=g(o,e)}return o}(function(e,t){let n;t&&"object"==typeof t&&(n=t.count,Object.keys(t).forEach(e=>{void 0===t[e]&&(console.warn("safeCounterpartTranslate called with undefined interpolation name: "+e),t[e]="undefined"),null===t[e]&&(console.warn("safeCounterpartTranslate called with null interpolation name: "+e),t[e]="null")}));let o=a.a.translate(e,t);return void 0===o&&void 0!==n&&(o=a.a.translate(e,Object.assign({},t,{locale:"en"}))),o}(e,Object.assign({interpolate:!1},t)),t,n);return o}function g(e,t){const n=[e];let o=!1;for(const r in t){const i=new RegExp(r,"g");let a=!1;for(const e in n){const s=n[e];if("string"!=typeof s)continue;let c=i.exec(s);if(!c)continue;a=!0;const l=s.substr(0,c.index),u=[];let d;for(;c;){d=c;const e=c.slice(2);let n,a;if(n=t[r]instanceof Function?t[r].apply(null,e):t[r],"object"==typeof n&&(o=!0),"string"==typeof n&&""===n||u.push(n),c=i.exec(s),c){const e=d.index+d[0].length;a=s.substr(e,c.index-e)}else a=s.substr(d.index+d[0].length);a&&u.push(a)}n.splice(e,1,...u),""!==l&&n.splice(e,0,l)}a||"%\\(count\\)s"!==r&&console.log("Could not find ".concat(i," in ").concat(e))}return o?c.a.createElement("span",null,...n):n.join("")}function f(e){Array.isArray(e)||(e=[e]);const t=u.a.get();let n,o;return t&&t.setLanguage(e),C().then(t=>{o=t;for(let t=0;t{if(a.a.registerTranslations(n,e),a.a.setLocale(n),l.b.setValue("language",null,l.a.DEVICE,n),console.log("set language to "+n),"en"!==n)return x("i18n/"+o.en.fileName)}).then(e=>{e&&a.a.registerTranslations("en",e)})}function _(){return C().then(e=>{const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push({value:n,label:e[n].label});return t})}function v(){return navigator.languages&&navigator.languages.length?navigator.languages:navigator.language?[navigator.language]:[navigator.userLanguage||"en"]}function b(){return v()[0]}function y(e){const t=[],n=E(e),o=n.split("-");return 2===o.length&&o[0]===o[1]?t.push(o[0]):(t.push(n),2===o.length&&t.push(o[0])),t}function E(e){return e.toLowerCase().replace("_","-")}function S(){return a.a.getLocale()}function w(e){const t=S(),n=e.map(E);{const o=n.indexOf(t);if(o>-1)return e[o]}{const o=n.find(e=>e.substr(0,2)===t.substr(0,2));if(o>-1)return e[o]}{const t=n.find(e=>e.startsWith("en"));if(t>-1)return e[t]}return e[0]}function C(){return new Promise(async(e,t)=>{let n;n="string"==typeof d?d:"i18n/languages.json",r()({method:"GET",url:n},(n,o,r)=>{n||o.status<200||o.status>=300?t({err:n,response:o}):e(JSON.parse(r))})})}function x(e){return new Promise((t,n)=>{r()({method:"GET",url:e},(e,o,r)=>{e||o.status<200||o.status>=300?n({err:e,response:o}):t(function(e){const t={};for(const n of Object.keys(e)){const o=n.split("|",2);if(2===o.length){let r=t[o[0]];void 0===r&&(r={},t[o[0]]=r),r[o[1]]=e[n]}else t[n]=e[n]}return t}(JSON.parse(r)))})})}a.a.setSeparator("|"),a.a.setFallbackLocale("en")},function(e,t,n){e.exports=n(803)()},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));var o=n(279);function r(e){o.a.load(e)}function i(e){return o.a.getComponent(e)}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return b}));var o=n(13),r=n(10),i=n(30),a=n(182),s=n(3),c=n(231),l=n(7),u=n(355),d=n(9),p=n(62),h=n(158),m=n(186),g=n(66),f=n(91),_=n(98);class v{constructor(){this.matrixClient=null,this._justRegisteredUserId=null,this.opts={initialSyncLimit:20},this._currentClientCreds=null}setIndexedDbWorkerScript(e){c.a.indexedDbWorkerScript=e}get(){return this.matrixClient}unset(){this.matrixClient=null,u.a.stop()}setJustRegisteredUserId(e){this._justRegisteredUserId=e}currentUserIsJustRegistered(){return this.matrixClient&&this.matrixClient.credentials.userId===this._justRegisteredUserId}replaceUsingCreds(e){this._currentClientCreds=e,this._createClient(e)}async assign(){for(const t of["indexeddb","memory"])try{const e=this.matrixClient.store.startup();console.log("MatrixClientPeg: waiting for MatrixClient store to initialise"),await e;break}catch(n){if("indexeddb"!==t)throw console.error("Failed to start memory store!",n),n;console.error("Error starting matrixclient store - falling back to memory store",n),this.matrixClient.store=new o.l({localStorage:e.localStorage})}m.c(this.matrixClient);try{!l.b.getValue("lowBandwidth")&&this.matrixClient.initCrypto&&(await this.matrixClient.initCrypto(),this.matrixClient.setCryptoTrustCrossSignedDevices(!l.b.getValue("e2ee.manuallyVerifyAllSessions")),m.b(!0))}catch(e){if(e&&"InvalidCryptoStoreError"===e.name){const e=s.a("views.dialogs.CryptoStoreTooNewDialog");d.a.createDialog(e,{host:window.location.host})}console.warn("Unable to initialise e2e",e)}const t=r.c(this.opts);return t.pendingEventOrdering="detached",t.lazyLoadMembers=!0,u.a.start(this.matrixClient),h.a.matrixClient=this.matrixClient,t}async start(){const e=await this.assign();console.log("MatrixClientPeg: really starting MatrixClient"),await this.get().startClient(e),console.log("MatrixClientPeg: MatrixClient started")}getCredentials(){return{homeserverUrl:this.matrixClient.baseUrl,identityServerUrl:this.matrixClient.idBaseUrl,userId:this.matrixClient.credentials.userId,deviceId:this.matrixClient.getDeviceId(),accessToken:this.matrixClient.getAccessToken(),guest:this.matrixClient.isGuest()}}getHomeserverName(){const e=/^@.+:(.+)$/.exec(this.matrixClient.credentials.userId);if(null===e||e.length<1)throw new Error("Failed to derive homeserver name from user ID!");return e[1]}_createClient(e){const t={baseUrl:e.homeserverUrl,idBaseUrl:e.identityServerUrl,accessToken:e.accessToken,userId:e.userId,deviceId:e.deviceId,timelineSupport:!0,forceTURN:!l.b.getValue("webRtcAllowPeerToPeer",!1),fallbackICEServerAllowed:!!l.b.getValue("fallbackICEServerAllowed"),verificationMethods:[p.c.SAS,_.c,p.c.RECIPROCATE_QR_CODE],unstableClientRelationAggregation:!0,identityServer:new g.a,cryptoCallbacks:{}};Object.assign(t.cryptoCallbacks,f.c),this.matrixClient=Object(c.a)(t),this.matrixClient.setMaxListeners(500),this.matrixClient.setGuest(Boolean(e.guest));const n=new a.a(null,{timelineSupport:!0});n.getLiveTimeline().setPaginationToken("",i.a.BACKWARDS),this.matrixClient.setNotifTimelineSet(n)}}e.mxMatrixClientPeg||(e.mxMatrixClientPeg=new v);const b=e.mxMatrixClientPeg}).call(this,n(24))},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){"use strict";(function(e){var o=n(731),r=n.n(o);class i extends r.a.Dispatcher{dispatch(e,t){"function"!=typeof e?t?super.dispatch(e):setTimeout(super.dispatch.bind(this,e),0):e(e=>{this.dispatch(e,t)})}}void 0===e.mxDispatcher&&(e.mxDispatcher=new i),t.a=e.mxDispatcher}).call(this,n(24))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return v})),n.d(t,"b",(function(){return x}));var o=n(5),r=n.n(o),i=n(724),a=n(725),s=n(726),c=n(727),l=n(728),u=n(729),d=n(730),p=n(1),h=n(16),m=n(6),g=n(60),f=n(737),_=n(738);const v={DEVICE:"device",ROOM_DEVICE:"room-device",ROOM_ACCOUNT:"room-account",ACCOUNT:"account",ROOM:"room",CONFIG:"config",DEFAULT:"default"},b=new _.a,y={},E={},S=[];for(const e of Object.keys(g.a))y[e]=g.a[e].default,g.a[e].isFeature&&S.push(e),g.a[e].invertedSettingName&&(E[e]=!g.a[e].default);const w={device:new i.a(S,b),"room-device":new a.a(b),"room-account":new c.a(b),account:new l.a(b),room:new u.a(b),config:new d.a,default:new s.a(y,E)};for(const e of Object.keys(w))w[e]=new f.a(w[e]);const C=["device","room-device","room-account","account","room","config","default"];class x{static watchSetting(e,t,n){const o=g.a[e],r=e;if(!o)throw new Error("".concat(e," is not a setting"));o.invertedSettingName&&(e=o.invertedSettingName);const i="".concat((new Date).getTime(),"_").concat(x._watcherCount++,"_").concat(e,"_").concat(t),a=(e,t,o)=>{const i=x.getValue(r);n(r,e,t,o,i)};return console.log("Starting watcher for ".concat(e,"@").concat(t||""," as ID ").concat(i)),x._watchers[i]=a,b.watchSetting(e,t,a),i}static unwatchSetting(e){x._watchers[e]?(console.log("Ending watcher ID ".concat(e)),b.unwatchSetting(x._watchers[e]),delete x._watchers[e]):console.warn("Ending non-existent watcher ID ".concat(e))}static monitorSetting(e,t){this._monitors[e]||(this._monitors[e]={});const n=()=>{this._monitors[e][t]=x.watchSetting(e,t,(e,t,n,o,r)=>{m.a.dispatch({action:"setting_updated",settingName:e,roomId:t,level:n,newValueAtLevel:o,newValue:r})})};if(Object.keys(this._monitors[e]).find(e=>e===t||null===e)){if(null===t){for(const t of Object.keys(this._monitors[e]))x.unwatchSetting(this._monitors[e][t]);this._monitors[e]={},n()}}else n()}static getDisplayName(e,t="default"){if(!g.a[e]||!g.a[e].displayName)return null;let n=g.a[e].displayName;return n instanceof Object&&(n=n[t]?n[t]:n.default),Object(p.a)(n)}static getLabsFeatures(){const e=Object.keys(g.a).filter(e=>x.isFeature(e));return h.a.get().enableLabs?e:e.filter(e=>"labs"===x._getFeatureState(e))}static isFeature(e){return!!g.a[e]&&g.a[e].isFeature}static isFeatureEnabled(e,t=null){if(!x.isFeature(e))throw new Error("Setting "+e+" is not a feature");return x.getValue(e,t)}static setFeatureEnabled(e,t){if(!g.a[e])throw new Error("Setting '"+e+"' does not appear to be a setting.");if(!x.isFeature(e))throw new Error("Setting "+e+" is not a feature");return x.setValue(e,null,"device",t)}static getValue(e,t=null,n=!1){if(!g.a[e])throw new Error("Setting '"+e+"' does not appear to be a setting.");const o=g.a[e],r=o.supportedLevelsAreOrdered?o.supportedLevels:C;return x.getValueAt(r[0],e,t,!1,n)}static getValueAt(e,t,n=null,o=!1,r=!1){const i=g.a[t];if(!i)throw new Error("Setting '"+t+"' does not appear to be a setting.");const a=i.supportedLevelsAreOrdered?i.supportedLevels:C;a.includes("default")||a.push("default");const s=a.indexOf(e);if(-1===s)throw new Error("Level "+e+" is not prioritized");if(x.isFeature(t)){const e=x._getFeatureState(t);if("enable"===e)return!0;if("disable"===e)return!1}const c=x._getHandlers(t);if(i.invertedSettingName&&(t=i.invertedSettingName),o){const o=c[e];if(!o)return x._getFinalValue(i,e,n,null,null);const r=o.getValue(t,n);return x._getFinalValue(i,e,n,r,e)}for(let o=s;o")),console.log("--- default level order: ".concat(JSON.stringify(C))),console.log("--- registered handlers: ".concat(JSON.stringify(Object.keys(w))));const o=e=>{for(const n of Object.keys(w)){const o=w[n];try{const r=o.getValue(e,t);console.log("--- ".concat(n,"@").concat(t||""," = ").concat(JSON.stringify(r)))}catch(e){console.log("--- ".concat(o,"@").concat(t||""," THREW ERROR: ").concat(e.message)),console.error(e)}if(t)try{const t=o.getValue(e,null);console.log("--- ".concat(n,"@ = ").concat(JSON.stringify(t)))}catch(e){console.log("--- ".concat(o,"@ THREW ERROR: ").concat(e.message)),console.error(e)}}console.log("--- calculating as returned by SettingsStore"),console.log("--- these might not match if the setting uses a controller - be warned!");try{const n=x.getValue(e,t);console.log("--- SettingsStore#generic@".concat(t||""," = ").concat(JSON.stringify(n)))}catch(e){console.log("--- SettingsStore#generic@".concat(t||""," THREW ERROR: ").concat(e.message)),console.error(e)}if(t)try{const t=x.getValue(e,null);console.log("--- SettingsStore#generic@ = ".concat(JSON.stringify(t)))}catch(e){console.log("--- SettingsStore#generic@$ THREW ERROR: ".concat(e.message)),console.error(e)}for(const n of C){try{const o=x.getValueAt(n,e,t);console.log("--- SettingsStore#".concat(n,"@").concat(t||""," = ").concat(JSON.stringify(o)))}catch(e){console.log("--- SettingsStore#".concat(n,"@").concat(t||""," THREW ERROR: ").concat(e.message)),console.error(e)}if(t)try{const t=x.getValueAt(n,e,null);console.log("--- SettingsStore#".concat(n,"@ = ").concat(JSON.stringify(t)))}catch(e){console.log("--- SettingsStore#".concat(n,"@$ THREW ERROR: ").concat(e.message)),console.error(e)}}};o(e),n.invertedSettingName&&(console.log("--- TESTING INVERTED SETTING NAME"),console.log("--- inverted: ".concat(n.invertedSettingName)),o(n.invertedSettingName)),console.log("--- END DEBUG")}static _getHandler(e,t){const n=x._getHandlers(e);return n[t]?n[t]:null}static _getHandlers(e){if(!g.a[e])return{};const t={};for(const n of g.a[e].supportedLevels){if(!w[n])throw new Error("Unexpected level "+n);x.isLevelSupported(n)&&(t[n]=w[n])}return t.default||(t.default=w.default),t}static _getFeatureState(e){const t=h.a.get().features;let n=h.a.get().enableLabs?"labs":"disable";t&&void 0!==t[e]&&(n=t[e]);return["enable","disable","labs"].includes(n)||(console.warn("Feature state '"+n+"' is invalid for "+e),n="disable"),n}}r()(x,"_watchers",{}),r()(x,"_monitors",{}),r()(x,"_watcherCount",1),e.mxSettingsStore=x}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(134),r=n.n(o);r.a.methodFactory=function(e,t,n){return function(...t){return"error"===e||"warn"===e||"trace"===e||"info"===e?console[e](...t):console.log(...t)}};const i=r.a.getLogger("matrix");i.setLevel(r.a.levels.DEBUG)},function(e,t,n){"use strict";(function(e){var o=n(18),r=n.n(o),i=n(0),a=n.n(i),s=n(29),c=n.n(s),l=n(35),u=n(6),d=n(44),p=n(268);class h{constructor(){this._counter=0,this._priorityModal=null,this._staticModal=null,this._modals=[],this.onBackgroundClick=this.onBackgroundClick.bind(this)}hasDialogs(){return this._priorityModal||this._staticModal||this._modals.length>0}getOrCreateContainer(){let e=document.getElementById("mx_Dialog_Container");return e||(e=document.createElement("div"),e.id="mx_Dialog_Container",document.body.appendChild(e)),e}getOrCreateStaticContainer(){let e=document.getElementById("mx_Dialog_StaticContainer");return e||(e=document.createElement("div"),e.id="mx_Dialog_StaticContainer",document.body.appendChild(e)),e}createTrackedDialog(e,t,...n){return l.a.trackEvent("Modal",e,t),this.createDialog(...n)}appendTrackedDialog(e,t,...n){return l.a.trackEvent("Modal",e,t),this.appendDialog(...n)}createDialog(e,...t){return this.createDialogAsync(Promise.resolve(e),...t)}appendDialog(e,...t){return this.appendDialogAsync(Promise.resolve(e),...t)}createTrackedDialogAsync(e,t,...n){return l.a.trackEvent("Modal",e,t),this.createDialogAsync(...n)}appendTrackedDialogAsync(e,t,...n){return l.a.trackEvent("Modal",e,t),this.appendDialogAsync(...n)}_buildModal(e,t,n,o){const i={},[s,c]=this._getCloseFn(i,t),l=this._counter++;return i.elem=a.a.createElement(p.a,r()({key:l,prom:e},t,{onFinished:s})),i.onFinished=t?t.onFinished:null,i.className=n,i.onBeforeClose=o.onBeforeClose,i.beforeClosePromise=null,i.close=s,i.closeReason=null,{modal:i,closeDialog:s,onFinishedProm:c}}_getCloseFn(e,t){const n=Object(d.b)();return[async(...o)=>{if(e.beforeClosePromise)await e.beforeClosePromise;else if(e.onBeforeClose){e.beforeClosePromise=e.onBeforeClose(e.closeReason);const t=await e.beforeClosePromise;if(e.beforeClosePromise=null,!t)return}n.resolve(o),t&&t.onFinished&&t.onFinished.apply(null,o);const r=this._modals.indexOf(e);r>=0&&this._modals.splice(r,1),this._priorityModal===e&&(this._priorityModal=null,this._modals=[]),this._staticModal===e&&(this._staticModal=null,this._modals=[]),this._reRender()},n.promise]}createDialogAsync(e,t,n,o,r,i={}){const{modal:a,closeDialog:s,onFinishedProm:c}=this._buildModal(e,t,n,i);return o?this._priorityModal=a:r?this._staticModal=a:this._modals.unshift(a),this._reRender(),{close:s,finished:c}}appendDialogAsync(e,t,n){const{modal:o,closeDialog:r,onFinishedProm:i}=this._buildModal(e,t,n,{});return this._modals.push(o),this._reRender(),{close:r,finished:i}}onBackgroundClick(){const e=this._getCurrentModal();e&&(e.closeReason="backgroundClick",e.close(),e.closeReason=null)}_getCurrentModal(){return this._priorityModal?this._priorityModal:this._modals[0]||this._staticModal}_reRender(){if(0===this._modals.length&&!this._priorityModal&&!this._staticModal)return u.a.dispatch({action:"aria_unhide_main_app"}),c.a.unmountComponentAtNode(this.getOrCreateContainer()),void c.a.unmountComponentAtNode(this.getOrCreateStaticContainer());if(u.a.dispatch({action:"aria_hide_main_app"}),this._staticModal){const e="mx_Dialog_wrapper mx_Dialog_staticWrapper "+(this._staticModal.className?this._staticModal.className:""),t=a.a.createElement("div",{className:e},a.a.createElement("div",{className:"mx_Dialog"},this._staticModal.elem),a.a.createElement("div",{className:"mx_Dialog_background mx_Dialog_staticBackground",onClick:this.onBackgroundClick}));c.a.render(t,this.getOrCreateStaticContainer())}else c.a.unmountComponentAtNode(this.getOrCreateStaticContainer());const e=this._getCurrentModal();if(e!==this._staticModal){const t="mx_Dialog_wrapper "+(this._staticModal?"mx_Dialog_wrapperWithStaticUnder ":"")+(e.className?e.className:""),n=a.a.createElement("div",{className:t},a.a.createElement("div",{className:"mx_Dialog"},e.elem),a.a.createElement("div",{className:"mx_Dialog_background",onClick:this.onBackgroundClick}));c.a.render(n,this.getOrCreateContainer())}else c.a.unmountComponentAtNode(this.getOrCreateContainer())}}e.singletonModalManager||(e.singletonModalManager=new h),t.a=e.singletonModalManager}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"e",(function(){return i})),n.d(t,"f",(function(){return a})),n.d(t,"u",(function(){return s})),n.d(t,"j",(function(){return c})),n.d(t,"t",(function(){return l})),n.d(t,"B",(function(){return u})),n.d(t,"l",(function(){return d})),n.d(t,"k",(function(){return p})),n.d(t,"y",(function(){return h})),n.d(t,"q",(function(){return m})),n.d(t,"p",(function(){return g})),n.d(t,"a",(function(){return f})),n.d(t,"c",(function(){return _})),n.d(t,"b",(function(){return v})),n.d(t,"i",(function(){return b})),n.d(t,"o",(function(){return y})),n.d(t,"v",(function(){return E})),n.d(t,"s",(function(){return S})),n.d(t,"z",(function(){return w})),n.d(t,"h",(function(){return x})),n.d(t,"n",(function(){return T})),n.d(t,"g",(function(){return k})),n.d(t,"A",(function(){return R})),n.d(t,"r",(function(){return O})),n.d(t,"d",(function(){return D})),n.d(t,"w",(function(){return I})),n.d(t,"x",(function(){return F})),n.d(t,"m",(function(){return A}));var o=n(223),r=n.n(o);function i(e){let t="";for(const n in e)e.hasOwnProperty(n)&&(t+="&"+encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return t.substring(1)}function a(e,t){for(const n in t)t.hasOwnProperty(n)&&(e=e.replace(n,encodeURIComponent(t[n])));return e}function s(e,t){const n=new Array(e.length);for(let o=0;o=0;o--)if(t(e[o],o,e))return e[o]}else for(o=0;o=0;o--)if(t(e[o],o,e))return r=e[o],e.splice(o,1),r}else for(o=0;o{setTimeout(n,e,t)})}function O(e){return null==e}function D(){let e,t;const n=new Promise((n,o)=>{e=n,t=o});return{resolve:e,reject:t,promise:n}}async function I(e,t){for(const n of await e)await t(await n)}function F(e){return new Promise(t=>t(e()))}let N;function A(){return N}},function(e,t,n){"use strict";var o=n(0),r=n(801);if(void 0===o)throw Error("create-react-class could not find the React object. If you are using script tags, make sure that React is being loaded before create-react-class.");var i=(new o.Component).updater;e.exports=r(o.Component,o.isValidElement,i)},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var o=n(37),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(15);function u(e){const{element:t,onClick:n,children:o,kind:i,disabled:s}=e,c=r()(e,["element","onClick","children","kind","disabled"]);return s||(c.onClick=n,c.onKeyDown=function(e){if(e.key===l.a.ENTER)return e.stopPropagation(),e.preventDefault(),n(e);e.key===l.a.SPACE&&(e.stopPropagation(),e.preventDefault())},c.onKeyUp=function(e){if(e.key===l.a.SPACE)return e.stopPropagation(),e.preventDefault(),n(e);e.key===l.a.ENTER&&(e.stopPropagation(),e.preventDefault())}),c.ref=c.inputRef,delete c.inputRef,c.className=(c.className?c.className+" ":"")+"mx_AccessibleButton",i&&(c.className+=" mx_AccessibleButton_hasKind mx_AccessibleButton_kind_"+i),s&&(c.className+=" mx_AccessibleButton_disabled",c["aria-disabled"]=!0),a.a.createElement(t,c,o)}u.propTypes={children:c.a.node,inputRef:c.a.oneOfType([c.a.func,c.a.shape({current:c.a.instanceOf(Element)})]),element:c.a.string,onClick:c.a.func.isRequired,kind:c.a.string,role:c.a.string,tabIndex:c.a.oneOfType([c.a.number,c.a.string]),disabled:c.a.bool},u.defaultProps={element:"div",role:"button",tabIndex:"0"},u.displayName="AccessibleButton"},function(e,t,n){"use strict";(function(e){var o=n(92),r=n(56),i=n.n(r),a=n(723),s=n.n(a);let c;n.d(t,"a",(function(){return o.AutoDiscovery})),n.d(t,"b",(function(){return o.EventStatus})),n.d(t,"c",(function(){return o.EventTimeline})),n.d(t,"d",(function(){return o.Filter})),n.d(t,"e",(function(){return o.Group})),n.d(t,"f",(function(){return o.IndexedDBCryptoStore})),n.d(t,"g",(function(){return o.IndexedDBStore})),n.d(t,"h",(function(){return o.InteractiveAuth})),n.d(t,"i",(function(){return o.InvalidStoreError})),n.d(t,"j",(function(){return o.MatrixClient})),n.d(t,"k",(function(){return o.MatrixEvent})),n.d(t,"l",(function(){return o.MemoryStore})),n.d(t,"m",(function(){return o.Room})),n.d(t,"n",(function(){return o.RoomMember})),n.d(t,"o",(function(){return o.SERVICE_TYPES})),n.d(t,"p",(function(){return o.TimelineWindow})),n.d(t,"q",(function(){return o.User})),n.d(t,"r",(function(){return o.WebStorageSessionStore})),n.d(t,"s",(function(){return o.createClient})),n.d(t,"t",(function(){return o.createNewMatrixCall})),n.d(t,"v",(function(){return o.setMatrixCallAudioInput})),n.d(t,"w",(function(){return o.setMatrixCallAudioOutput})),n.d(t,"x",(function(){return o.setMatrixCallVideoInput})),o.request((function(e,t){return e.qs=s.a.stringify(e.qs||{},e.qsStringifyOptions),i()(e,t)}));try{c=e.indexedDB}catch(e){}c&&o.setCryptoStoreFactory((function(){return new o.IndexedDBCryptoStore(c,"matrix-js-sdk:crypto")})),t.u=o,e.matrixcs=o}).call(this,n(24))},function(e,t,n){var o;!function(){"use strict";var n={}.hasOwnProperty;function r(){for(var e=[],t=0;t",BACKTICK:"`",SPACE:" ",SLASH:"/",A:"a",B:"b",C:"c",D:"d",E:"e",F:"f",G:"g",H:"h",I:"i",J:"j",K:"k",L:"l",M:"m",N:"n",O:"o",P:"p",Q:"q",R:"r",S:"s",T:"t",U:"u",V:"v",W:"w",X:"x",Y:"y",Z:"z"},r=navigator.platform.toUpperCase().indexOf("MAC")>=0;function i(e){return r?e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey:e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey}function a(e){return r?e.metaKey&&!e.altKey&&!e.ctrlKey:e.ctrlKey&&!e.altKey&&!e.metaKey}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(5);const r={integrations_ui_url:"https://scalar.vector.im/",integrations_rest_url:"https://scalar.vector.im/api",bug_report_endpoint_url:null,jitsi:{preferredDomain:"jitsi.riot.im"}};class i{static setInstance(e){i.instance=e,window.mxReactSdkConfig=e}static get(){return i.instance||{}}static put(e){const t=Object.keys(r);for(let n=0;n{if(!e)return;let t=e.querySelector('[role^="menuitem"]');t||(t=e.querySelector("[tab-index]")),t&&t.focus(),this.setState({contextMenuElem:e})}),c()(this,"onContextMenu",t=>{if(this.props.onFinished){this.props.onFinished(),t.preventDefault();const n=t.clientX,o=t.clientY;e(()=>{const e=document.createEvent("MouseEvents");e.initMouseEvent("contextmenu",!0,!0,window,0,0,0,n,o,!1,!1,!1,!1,0,null),document.elementFromPoint(n,o).dispatchEvent(e)})}}),c()(this,"_onMoveFocus",(e,t)=>{let n=!1;do{const o=t?e.lastElementChild:e.firstElementChild,r=t?e.previousElementSibling:e.nextElementSibling;n?o?e=o:r?e=r:(n=!1,e=e.parentElement):r?(e=r,n=!0):e=e.parentElement,e&&e.classList.contains("mx_ContextualMenu")&&(e=t?e.lastElementChild:e.firstElementChild,n=!0)}while(e&&!w.has(e.getAttribute("role")));e&&e.focus()}),c()(this,"_onMoveFocusHomeEnd",(e,t)=>{let n=e.querySelectorAll('[role^="menuitem"]');n||(n=e.querySelectorAll("[tab-index]")),n&&n.length&&(t?n[0].focus():n[n.length-1].focus())}),c()(this,"_onKeyDown",e=>{if(!this.props.managed)return void(e.key===_.a.ESCAPE&&(this.props.onFinished(),e.stopPropagation(),e.preventDefault()));let t=!0;switch(e.key){case _.a.TAB:case _.a.ESCAPE:this.props.onFinished();break;case _.a.ARROW_UP:this._onMoveFocus(e.target,!0);break;case _.a.ARROW_DOWN:this._onMoveFocus(e.target,!1);break;case _.a.HOME:this._onMoveFocusHomeEnd(this.state.contextMenuElem,!0);break;case _.a.END:this._onMoveFocusHomeEnd(this.state.contextMenuElem,!1);break;default:t=!1}t&&(e.stopPropagation(),e.preventDefault())}),this.state={contextMenuElem:null},this.initialFocus=document.activeElement}componentWillUnmount(){this.initialFocus.focus()}renderMenu(e=this.props.hasBackground){const t={};let n=null;const o=this.props;o.top?t.top=o.top:t.bottom=o.bottom,o.left?(t.left=o.left,n="left"):(t.right=o.right,n="right");const r=this.state.contextMenuElem?this.state.contextMenuElem.getBoundingClientRect():null,i={};o.chevronFace&&(n=o.chevronFace);const a=n&&"none"!==n;if("top"===n||"bottom"===n)i.left=o.chevronOffset;else if(void 0!==t.top){const e=t.top;let n=e;r&&(n=Math.min(t.top,document.body.clientHeight-r.height-10)),t.top=n,i.top=Math.max(o.chevronOffset,o.chevronOffset+e-n)}let s;a&&(s=u.a.createElement("div",{style:i,className:"mx_ContextualMenu_chevron_"+n}));const c=f()({mx_ContextualMenu:!0,mx_ContextualMenu_left:!a&&t.left,mx_ContextualMenu_right:!a&&t.right,mx_ContextualMenu_top:!a&&t.top,mx_ContextualMenu_bottom:!a&&t.bottom,mx_ContextualMenu_withChevron_left:"left"===n,mx_ContextualMenu_withChevron_right:"right"===n,mx_ContextualMenu_withChevron_top:"top"===n,mx_ContextualMenu_withChevron_bottom:"bottom"===n}),l={};o.menuWidth&&(l.width=o.menuWidth),o.menuHeight&&(l.height=o.menuHeight),isNaN(Number(o.menuPaddingTop))||(l.paddingTop=o.menuPaddingTop),isNaN(Number(o.menuPaddingLeft))||(l.paddingLeft=o.menuPaddingLeft),isNaN(Number(o.menuPaddingBottom))||(l.paddingBottom=o.menuPaddingBottom),isNaN(Number(o.menuPaddingRight))||(l.paddingRight=o.menuPaddingRight);const d={};let p;return isNaN(Number(o.zIndex))||(l.zIndex=o.zIndex+1,d.zIndex=o.zIndex),e&&(p=u.a.createElement("div",{className:"mx_ContextualMenu_background",style:d,onClick:o.onFinished,onContextMenu:this.onContextMenu})),u.a.createElement("div",{className:"mx_ContextualMenu_wrapper",style:E({},t,{},d),onKeyDown:this._onKeyDown},u.a.createElement("div",{className:c,style:l,ref:this.collectContextMenuRect,role:this.props.managed?"menu":void 0},s,o.children),p)}render(){return p.a.createPortal(this.renderMenu(),S())}}c()(C,"propTypes",{top:m.a.number,bottom:m.a.number,left:m.a.number,right:m.a.number,menuWidth:m.a.number,menuHeight:m.a.number,chevronOffset:m.a.number,chevronFace:m.a.string,onFinished:m.a.func.isRequired,menuPaddingTop:m.a.number,menuPaddingRight:m.a.number,menuPaddingBottom:m.a.number,menuPaddingLeft:m.a.number,zIndex:m.a.number,hasBackground:m.a.bool,windowResize:m.a.func,managed:m.a.bool}),c()(C,"defaultProps",{hasBackground:!0,managed:!0});const x=e=>{let{label:t,isExpanded:n,children:o}=e,i=a()(e,["label","isExpanded","children"]);const s=v.a("elements.AccessibleButton");return u.a.createElement(s,r()({},i,{title:t,"aria-label":t,"aria-haspopup":!0,"aria-expanded":n}),o)};x.propTypes=E({},b.a.propTypes,{label:m.a.string,isExpanded:m.a.bool.isRequired});const T=e=>{let{children:t,label:n}=e,o=a()(e,["children","label"]);const i=v.a("elements.AccessibleButton");return u.a.createElement(i,r()({},o,{role:"menuitem",tabIndex:-1,"aria-label":n}),t)};T.propTypes=E({},b.a.propTypes,{label:m.a.string,className:m.a.string,onClick:m.a.func.isRequired});const k=e=>{let{children:t,label:n}=e,o=a()(e,["children","label"]);return u.a.createElement("div",r()({},o,{role:"group","aria-label":n}),t)};k.propTypes={label:m.a.string.isRequired,className:m.a.string};const R=e=>{let{children:t,label:n,active:o=!1,disabled:i=!1}=e,s=a()(e,["children","label","active","disabled"]);const c=v.a("elements.AccessibleButton");return u.a.createElement(c,r()({},s,{role:"menuitemcheckbox","aria-checked":o,"aria-disabled":i,tabIndex:-1,"aria-label":n}),t)};R.propTypes=E({},b.a.propTypes,{label:m.a.string,active:m.a.bool.isRequired,disabled:m.a.bool,className:m.a.string,onClick:m.a.func.isRequired});const O=e=>{let{children:t,label:n,active:o=!1,disabled:i=!1}=e,s=a()(e,["children","label","active","disabled"]);const c=v.a("elements.AccessibleButton");return u.a.createElement(c,r()({},s,{role:"menuitemradio","aria-checked":o,"aria-disabled":i,tabIndex:-1,"aria-label":n}),t)};O.propTypes=E({},b.a.propTypes,{label:m.a.string,active:m.a.bool.isRequired,disabled:m.a.bool,className:m.a.string,onClick:m.a.func.isRequired});const D=(e,t=12)=>{const n=e.right+window.pageXOffset+3;let o=e.top+e.height/2+window.pageYOffset;return o-=t+8,{left:n,top:o,chevronOffset:t}},I=(e,t="none")=>{const n={chevronFace:t},o=e.right+window.pageXOffset,r=e.bottom+window.pageYOffset,i=e.top+window.pageYOffset;return n.right=window.innerWidth-o,r{const e=Object(l.useRef)(null),[t,n]=Object(l.useState)(!1);return[t,e,()=>{n(!0)},()=>{n(!1)},n]};class N extends C{render(){return this.renderMenu(!1)}}function A(e,t){const n=function(...e){p.a.unmountComponentAtNode(S()),t&&t.onFinished&&t.onFinished.apply(null,e)},o=u.a.createElement(N,r()({},t,{onFinished:n,windowResize:n}),u.a.createElement(e,r()({},t,{onFinished:n})));return p.a.render(o,S()),{close:n}}}).call(this,n(637).setImmediate)},function(e,t){function n(){return e.exports=n=Object.assign||function(e){for(var t=1;t{const i=await e.getSessionIdForDevice(s,!0);null===i?(o[t]=o[t]||[],o[t].push(n)):(r[t]=r[t]||{},r[t][a]={device:n,sessionId:i})})())}return await Promise.all(i),[o,r]}async function h(e,t,n,o,i,a){"number"==typeof o&&(a=i,i=o,o=!1);const s=[],c={},l={};for(const[t,r]of Object.entries(n)){c[t]={};for(const n of r){const r=n.deviceId,i=n.getIdentityKey();e._sessionsInProgress[i]||(e._sessionsInProgress[i]=new Promise((t,n)=>{l[i]={resolve:(...n)=>{delete e._sessionsInProgress[i],t(...n)},reject:(...t)=>{delete e._sessionsInProgress[i],n(...t)}}}));const a=await e.getSessionIdForDevice(i,l[i]);null!==a&&l[i]&&(delete e._sessionsInProgress[i],l[i].resolve(),delete l[i]),(null===a||o)&&s.push([t,r]),c[t][r]={device:n,sessionId:a}}}if(0===s.length)return c;let u;try{u=await t.claimOneTimeKeys(s,"signed_curve25519",i)}catch(e){for(const e of Object.values(l))e.resolve();throw r.a.log("failed to claim one-time keys",e,s),e}a&&"failures"in u&&a.push(...Object.keys(u.failures));const d=u.one_time_keys||{},p=[];for(const[t,i]of Object.entries(n)){const n=d[t]||{};for(let a=0;a{l[d]&&l[d].resolve(e),c[t][u].sessionId=e},e=>{throw l[d]&&l[d].resolve(),e}));else{const e="No one-time keys (alg=signed_curve25519) for device "+t+":"+u;r.a.warn(e),l[d]&&l[d].resolve()}}}return await Promise.all(p),c}async function m(e,t,n,o){const i=o.deviceId;try{await g(e,t,n,i,o.getFingerprint())}catch(e){return r.a.error("Unable to verify signature on one-time key for device "+n+":"+i+":",e),null}let a;try{a=await e.createOutboundSession(o.getIdentityKey(),t.key)}catch(e){return r.a.error("Error starting olm session with device "+n+":"+i+": "+e),null}return r.a.log("Started new olm sessionid "+a+" for device "+n+":"+i),a}async function g(e,t,n,o,r){const i="ed25519:"+o,a=((t.signatures||{})[n]||{})[i];if(!a)throw Error("No signature");const c=Object.assign({},t);delete c.unsigned,delete c.signatures;const l=s.a.stringify(c);e.verifySignature(r,l,a)}function f(t,n,o,r){let i=!1;if(n instanceof Uint8Array){const t=new e.Olm.PkSigning;r=t.init_with_seed(n),n=t,i=!0}const a=t.signatures||{};delete t.signatures;const c=t.unsigned;t.unsigned&&delete t.unsigned;try{const e=a[o]||{};return a[o]=e,e["ed25519:"+r]=n.sign(s.a.stringify(t))}finally{t.signatures=a,c&&(t.unsigned=c),i&&n.free()}}function _(t,n,o){const r="ed25519:"+n;if(!(t.signatures&&t.signatures[o]&&t.signatures[o][r]))throw new Error("No signature");const i=t.signatures[o][r],a=new e.Olm.Utility,c=t.signatures;delete t.signatures;const l=t.unsigned;t.unsigned&&delete t.unsigned;try{a.ed25519_verify(n,s.a.stringify(t),i)}finally{t.signatures=c,l&&(t.unsigned=l),a.free()}}function v(e){return o.from(e).toString("base64")}function b(e){return v(e).replace(/=+$/g,"")}function y(e){return o.from(e,"base64")}}.call(this,n(24),n(139).Buffer)},function(e,t,n){"use strict";n.d(t,"a",(function(){return o})),n.d(t,"b",(function(){return r}));const o=Object.freeze({RoomMemberList:"RoomMemberList",FilePanel:"FilePanel",NotificationPanel:"NotificationPanel",RoomMemberInfo:"RoomMemberInfo",EncryptionPanel:"EncryptionPanel",Room3pidMemberInfo:"Room3pidMemberInfo",GroupMemberList:"GroupMemberList",GroupRoomList:"GroupRoomList",GroupRoomInfo:"GroupRoomInfo",GroupMemberInfo:"GroupMemberInfo"}),r=[o.NotificationPanel,o.FilePanel,o.RoomMemberList,o.GroupMemberList,o.GroupRoomList]},function(e,t,n){"use strict";var o=n(0);const r=Object(o.createContext)(void 0);r.displayName="MatrixClientContext",t.a=r},function(e,t,n){"use strict";var o=n(5),r=n.n(o),i=n(28),a=n.n(i),s=n(111),c=n(69),l=n(4);function u(e){return e.chunk.map(e=>Object(s.c)(e))}function d(e){return e.chunk.map(e=>Object(s.d)(e))}let p=0;const h=[];async function m(e){p>=3&&await new Promise((e,t)=>{h.push(e)}),p++;try{return await e()}catch(e){throw e}finally{p--,function(){const e=h.shift();"function"==typeof e&&e()}()}}class g extends a.a{constructor(){super(),r()(this,"STATE_KEY",{GroupMembers:"GroupMembers",GroupInvitedMembers:"GroupInvitedMembers",Summary:"Summary",GroupRooms:"GroupRooms"}),this._state={},this._state[this.STATE_KEY.Summary]={},this._state[this.STATE_KEY.GroupRooms]={},this._state[this.STATE_KEY.GroupMembers]={},this._state[this.STATE_KEY.GroupInvitedMembers]={},this._ready={},this._ready[this.STATE_KEY.Summary]={},this._ready[this.STATE_KEY.GroupRooms]={},this._ready[this.STATE_KEY.GroupMembers]={},this._ready[this.STATE_KEY.GroupInvitedMembers]={},this._fetchResourcePromise={[this.STATE_KEY.Summary]:{},[this.STATE_KEY.GroupRooms]:{},[this.STATE_KEY.GroupMembers]:{},[this.STATE_KEY.GroupInvitedMembers]:{}},this._resourceFetcher={[this.STATE_KEY.Summary]:e=>m(()=>l.a.get().getGroupSummary(e)),[this.STATE_KEY.GroupRooms]:e=>m(()=>l.a.get().getGroupRooms(e).then(d)),[this.STATE_KEY.GroupMembers]:e=>m(()=>l.a.get().getGroupUsers(e).then(u)),[this.STATE_KEY.GroupInvitedMembers]:e=>m(()=>l.a.get().getGroupInvitedUsers(e).then(u))}}_fetchResource(e,t){if(this._fetchResourcePromise[e][t])return;const n=this._resourceFetcher[e](t);return this._fetchResourcePromise[e][t]=n,n.then(n=>{this._state[e][t]=n,this._ready[e][t]=!0,this._notifyListeners()}).catch(n=>{e===this.STATE_KEY.GroupInvitedMembers&&403===n.httpStatus||(console.error("Failed to get resource ".concat(e," for ").concat(t),n),this.emit("error",n,t,e))}).finally(()=>{delete this._fetchResourcePromise[e][t]}),n}_notifyListeners(){this.emit("update")}registerListener(e,t){return this.on("update",t),this.emit("update"),e&&(this._fetchResource(this.STATE_KEY.Summary,e),this._fetchResource(this.STATE_KEY.GroupRooms,e),this._fetchResource(this.STATE_KEY.GroupMembers,e),this._fetchResource(this.STATE_KEY.GroupInvitedMembers,e)),{unregister:()=>{this.unregisterListener(t)}}}unregisterListener(e){this.removeListener("update",e)}isStateReady(e,t){return this._ready[t][e]}getGroupIdsForRoomId(e){return Object.keys(this._state[this.STATE_KEY.GroupRooms]).filter(t=>(this._state[this.STATE_KEY.GroupRooms][t]||[]).some(t=>t.roomId===e))}getSummary(e){return this._state[this.STATE_KEY.Summary][e]||{}}getGroupRooms(e){return this._state[this.STATE_KEY.GroupRooms][e]||[]}getGroupMembers(e){return this._state[this.STATE_KEY.GroupMembers][e]||[]}getGroupInvitedMembers(e){return this._state[this.STATE_KEY.GroupInvitedMembers][e]||[]}getGroupPublicity(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_publicised:null}isUserPrivileged(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_privileged:null}refreshGroupRooms(e){return this._fetchResource(this.STATE_KEY.GroupRooms,e)}refreshGroupMembers(e){return this._fetchResource(this.STATE_KEY.GroupMembers,e)}addRoomToGroup(e,t,n){return l.a.get().addRoomToGroup(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}updateGroupRoomVisibility(e,t,n){return l.a.get().updateGroupRoomVisibility(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}removeRoomFromGroup(e,t){return l.a.get().removeRoomFromGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}inviteUserToGroup(e,t){return l.a.get().inviteUserToGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}acceptGroupInvite(e){return l.a.get().acceptGroupInvite(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}joinGroup(e){return l.a.get().joinGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}leaveGroup(e){return l.a.get().leaveGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e))}addRoomToGroupSummary(e,t,n){return l.a.get().addRoomToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}addUserToGroupSummary(e,t,n){return l.a.get().addUserToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}removeRoomFromGroupSummary(e,t){return l.a.get().removeRoomFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}removeUserFromGroupSummary(e,t){return l.a.get().removeUserFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}setGroupPublicity(e,t){return l.a.get().setGroupPublicity(e,t).then(()=>{c.a.invalidatePublicisedGroups(l.a.get().credentials.userId)}).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}}let f=null;f||(f=new g),t.a=f},function(e,t,n){"use strict";(function(e){class n{constructor(){this.platform=null}get(){return this.platform}set(e){this.platform=e}}e.mxPlatformPeg||(e.mxPlatformPeg=new n),t.a=e.mxPlatformPeg}).call(this,n(24))},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){n.d(t,"i",(function(){return u})),n.d(t,"j",(function(){return d})),n.d(t,"a",(function(){return p})),n.d(t,"h",(function(){return h})),n.d(t,"g",(function(){return m})),n.d(t,"e",(function(){return g})),n.d(t,"d",(function(){return f})),n.d(t,"f",(function(){return _})),n.d(t,"b",(function(){return v})),n.d(t,"c",(function(){return b})),n.d(t,"k",(function(){return y}));var o=n(5),r=n.n(o),i=n(8),a=n(28),s=n(45),c=n(19);const l="m.key.verification.",u=l+"request",d=l+"start",p=l+"cancel",h=l+"ready",m=1,g=2,f=3,_=4,v=5,b=6;class y extends a.EventEmitter{constructor(e,t,n){super(),r()(this,"_cancelOnTimeout",()=>{try{this.cancel({reason:"Other party didn't accept in time",code:"m.timeout"})}catch(e){i.a.error("Error while cancelling verification request",e)}}),this.channel=e,this.channel._request=this,this._verificationMethods=t,this._client=n,this._commonMethods=[],this._setPhase(m,!1),this._eventsByUs=new Map,this._eventsByThem=new Map,this._observeOnly=!1,this._timeoutTimer=null,this._sharedSecret=null,this._accepting=!1,this._declining=!1,this._verifierHasFinished=!1}static validateEvent(e,t,n){const o=t.getContent();return!(!e||!e.startsWith(l))&&(o?e!==u&&e!==h||Array.isArray(o.methods)?e!==u&&e!==h&&e!==d||"string"==typeof o.from_device&&0!==o.from_device.length||(i.a.log("VerificationRequest: validateEvent: fail because from_device"),!1):(i.a.log("VerificationRequest: validateEvent: fail because methods"),!1):(i.a.log("VerificationRequest: validateEvent: no content"),!1))}get invalid(){return this.phase===m}get requested(){return this.phase===g}get cancelled(){return this.phase===v}get ready(){return this.phase===f}get started(){return this.phase===_}get done(){return this.phase===b}get methods(){return this._commonMethods}get timeout(){const e=this._getEventByEither(u);if(e){const t=Date.now()-this.channel.getTimestamp(e);return Math.max(0,6e5-t)}return 0}get requestEvent(){return this._getEventByEither(u)}get phase(){return this._phase}get verifier(){return this._verifier}get canAccept(){return this.phase{const o=()=>{let r=!1;return e(this)?(t(this),r=!0):this.cancelled&&(n(new Error("cancelled")),r=!0),r&&this.off("change",o),r};o()||this.on("change",o)})}_setPhase(e,t=!0){this._phase=e,t&&this.emit("change")}_getEventByEither(e){return this._eventsByThem.get(e)||this._eventsByUs.get(e)}_getEventBy(e,t){return t?this._eventsByThem.get(e):this._eventsByUs.get(e)}_calculatePhaseTransitions(){const e=[{phase:m}],t=()=>e[e.length-1].phase,n=this._eventsByThem.has(u),o=this._getEventBy(u,n);o&&e.push({phase:g,event:o});const r=o&&this._getEventBy(h,!n);let i;if(r&&t()===g&&e.push({phase:f,event:r}),r||!o){const e=this._eventsByThem.get(d),t=this._eventsByUs.get(d);i=e&&t?e.getSender()this._verificationMethods.has(e))}if(this.observeOnly||t!==g&&t!==_&&t!==f||this.channel.receiveStartFromOtherDevices&&this._wasSentByOwnUser(n)&&!this._wasSentByOwnDevice(n)&&(this._observeOnly=!0),t===_){const{method:e}=n.getContent();this._verifier||this.observeOnly||(this._verifier=this._createVerifier(e,n))}}_applyPhaseTransitions(){const e=this._calculatePhaseTransitions(),t=e.findIndex(e=>e.phase===this.phase),n=e.slice(t+1);for(const e of n)this._transitionToPhase(e);return n}_isWinningStartRace(e){if(e.getType()!==d)return!1;const t=this._verifier.startEvent,n=this.channel.userId===this._client.getUserId();let o,r;if(n)if(t){const e=t.getContent();o=e&&e.from_device}else o=this._client.getDeviceId();else o=t?t.getSender():this._client.getUserId();if(n){const t=e.getContent();r=t&&t.from_device}else r=e.getSender();return r").concat(this.phase,", ")+"observeOnly:".concat(a,"=>").concat(this._observeOnly))}}_setupTimeout(e){if(!this._timeoutTimer&&!this.observeOnly&&e===g&&this.initiatedByMe&&(this._timeoutTimer=setTimeout(this._cancelOnTimeout,this.timeout)),this._timeoutTimer){(e===_||e===f||e===b||e===v)&&(clearTimeout(this._timeoutTimer),this._timeoutTimer=null)}}async _cancelOnError(e,t){if(e===d){const e=t.getContent().method;if(!this._verificationMethods.has(e))return await this.cancel(Object(s.b)(Object(s.g)())),!0}const n=e===u&&this.phase!==m,o=e===h&&this.phase!==g;if(this.phase!==m&&(n||o)){i.a.warn("Cancelling, unexpected ".concat(e," verification ")+"event from ".concat(t.getSender()));const n="Unexpected ".concat(e," event in phase ").concat(this.phase);return await this.cancel(Object(s.b)(Object(s.f)({reason:n}))),!0}return!1}_adjustObserveOnly(e,t){t||(this._observeOnly=!0);const n=this.channel.getTimestamp(e);if(Number.isFinite(n)){const e=Date.now()-n;(e>597e3||e<-3e5)&&(this._observeOnly=!0)}}_addEvent(e,t,n){if(n?this._eventsByUs.set(e,t):this._eventsByThem.set(e,t),e===u)for(const[e,t]of this._eventsByThem.entries())t.getSender()!==this.otherUserId&&this._eventsByThem.delete(e)}_createVerifier(e,t=null,n=null){n||(n=this.targetDevice);const{userId:o,deviceId:r}=n,a=this._verificationMethods.get(e);if(a)return new a(this.channel,this._client,o,r,t,this);i.a.warn("could not find verifier constructor for method",e)}_wasSentByOwnUser(e){return e.getSender()===this._client.getUserId()}_wasSentByOwnDevice(e){if(!this._wasSentByOwnUser(e))return!1;const t=e.getContent();return!(!t||t.from_device!==this._client.getDeviceId())}onVerifierFinished(){this.channel.needsDoneMessage&&this.channel.send("m.key.verification.done",{}),this._verifierHasFinished=!0;const e=this._applyPhaseTransitions();e.length&&this._setPhase(e[e.length-1].phase)}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return l}));var o=n(28),r=n(10),i=n(8);const a={NOT_SENT:"not_sent",ENCRYPTING:"encrypting",SENDING:"sending",QUEUED:"queued",SENT:"sent",CANCELLED:"cancelled"},s={};function c(e){return s[e]||(s[e]=e),s[e]}const l=function(e){["state_key","type","sender","room_id","membership"].forEach(t=>{e[t]&&(e[t]=c(e[t]))}),["membership","avatar_url","displayname"].forEach(t=>{e.content&&e.content[t]&&(e.content[t]=c(e.content[t]))}),["rel_type"].forEach(t=>{e.content&&e.content["m.relates_to"]&&e.content["m.relates_to"][t]&&(e.content["m.relates_to"][t]=c(e.content["m.relates_to"][t]))}),this.event=e||{},this.sender=null,this.target=null,this.status=null,this.error=null,this.forwardLooking=!0,this._pushActions=null,this._replacingEvent=null,this._localRedactionEvent=null,this._isCancelled=!1,this._clearEvent={},this._senderCurve25519Key=null,this._claimedEd25519Key=null,this._forwardingCurve25519KeyChain=[],this._decryptionPromise=null,this._retryDecryption=!1,this.verificationRequest=null};r.o(l,o.EventEmitter),r.i(l.prototype,{getId:function(){return this.event.event_id},getSender:function(){return this.event.sender||this.event.user_id},getType:function(){return this._clearEvent.type||this.event.type},getWireType:function(){return this.event.type},getRoomId:function(){return this.event.room_id},getTs:function(){return this.event.origin_server_ts},getDate:function(){return this.event.origin_server_ts?new Date(this.event.origin_server_ts):null},getOriginalContent:function(){return this._localRedactionEvent?{}:this._clearEvent.content||this.event.content||{}},getContent:function(){return this._localRedactionEvent?{}:this._replacingEvent?this._replacingEvent.getContent()["m.new_content"]||{}:this.getOriginalContent()},getWireContent:function(){return this.event.content||{}},getPrevContent:function(){return this.getUnsigned().prev_content||this.event.prev_content||{}},getDirectionalContent:function(){return this.forwardLooking?this.getContent():this.getPrevContent()},getAge:function(){return this.getUnsigned().age||this.event.age},getLocalAge:function(){return Date.now()-this.getTs()},getStateKey:function(){return this.event.state_key},isState:function(){return void 0!==this.event.state_key},makeEncrypted:function(e,t,n,o){this._clearEvent={type:this.event.type,content:this.event.content},this.event.type=e,this.event.content=t,this._senderCurve25519Key=n,this._claimedEd25519Key=o},isBeingDecrypted:function(){return null!=this._decryptionPromise},isDecryptionFailure:function(){return this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"===this._clearEvent.content.msgtype},attemptDecryption:async function(e){if(!this.isEncrypted())throw new Error("Attempt to decrypt event which isn't encrypted");if(this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"!==this._clearEvent.content.msgtype)throw new Error("Attempt to decrypt event which has already been encrypted");return this._decryptionPromise?(i.a.log("Event ".concat(this.getId()," already being decrypted; queueing a retry")),this._retryDecryption=!0,this._decryptionPromise):(this._decryptionPromise=this._decryptionLoop(e),this._decryptionPromise)},cancelAndResendKeyRequest:function(e,t){const n=this.getWireContent();return e.requestRoomKey({algorithm:n.algorithm,room_id:this.getRoomId(),session_id:n.session_id,sender_key:n.sender_key},this.getKeyRequestRecipients(t),!0)},getKeyRequestRecipients:function(e){const t=this.getWireContent(),n=[{userId:e,deviceId:"*"}],o=this.getSender();return o!==e&&n.push({userId:o,deviceId:t.device_id}),n},_decryptionLoop:async function(e){for(await Promise.resolve();;){let t,n;this._retryDecryption=!1;try{t=e?await e.decryptEvent(this):this._badEncryptedMessage("Encryption not enabled")}catch(e){if("DecryptionError"!==e.name)return i.a.error("Error decrypting event (id=".concat(this.getId(),"): ").concat(e.stack||e)),this._decryptionPromise=null,void(this._retryDecryption=!1);if(n=e,this._retryDecryption){i.a.log("Got error decrypting event (id=".concat(this.getId(),": ")+"".concat(e,"), but retrying"));continue}i.a.warn("Error decrypting event (id=".concat(this.getId(),"): ").concat(e.detailedString)),t=this._badEncryptedMessage(e.message)}return this._decryptionPromise=null,this._retryDecryption=!1,this._setClearData(t),this.setPushActions(null),void this.emit("Event.decrypted",this,n)}},_badEncryptedMessage:function(e){return{clearEvent:{type:"m.room.message",content:{msgtype:"m.bad.encrypted",body:"** Unable to decrypt: "+e+" **"}}}},_setClearData:function(e){this._clearEvent=e.clearEvent,this._senderCurve25519Key=e.senderCurve25519Key||null,this._claimedEd25519Key=e.claimedEd25519Key||null,this._forwardingCurve25519KeyChain=e.forwardingCurve25519KeyChain||[]},getClearContent:function(){const e=this._clearEvent;return e&&e.content?e.content:null},isEncrypted:function(){return"m.room.encrypted"===this.event.type},getSenderKey:function(){return this._senderCurve25519Key},getKeysClaimed:function(){return{ed25519:this._claimedEd25519Key}},getClaimedEd25519Key:function(){return this._claimedEd25519Key},getForwardingCurve25519KeyChain:function(){return this._forwardingCurve25519KeyChain},getUnsigned:function(){return this.event.unsigned||{}},unmarkLocallyRedacted:function(){const e=this._localRedactionEvent;return this._localRedactionEvent=null,this.event.unsigned&&(this.event.unsigned.redacted_because=null),!!e},markLocallyRedacted:function(e){this._localRedactionEvent||(this.emit("Event.beforeRedaction",this,e),this._localRedactionEvent=e,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event)},makeRedacted:function(e){if(!e.event)throw new Error("invalid redaction_event in makeRedacted");let t;for(t in this._localRedactionEvent=null,this.emit("Event.beforeRedaction",this,e),this._replacingEvent=null,this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=e.event,this.event)this.event.hasOwnProperty(t)&&(u[t]||delete this.event[t]);const n=d[this.getType()]||{},o=this.getContent();for(t in o)o.hasOwnProperty(t)&&(n[t]||delete o[t])},isRedacted:function(){return Boolean(this.getUnsigned().redacted_because)},isRedaction:function(){return"m.room.redaction"===this.getType()},getPushActions:function(){return this._pushActions},setPushActions:function(e){this._pushActions=e},handleRemoteEcho:function(e){const t=this.getUnsigned(),n=this.getId();this.event=e,t.redacted_because&&(this.event.unsigned||(this.event.unsigned={}),this.event.unsigned.redacted_because=t.redacted_because),this.setStatus(null),this.getId()!==n&&this.emit("Event.localEventIdReplaced",this)},isSending(){return!!this.status},setStatus(e){this.status=e,this.emit("Event.status",this,e)},replaceLocalEventId(e){this.event.event_id=e,this.emit("Event.localEventIdReplaced",this)},isRelation(e){const t=this.getWireContent(),n=t&&t["m.relates_to"];return n&&n.rel_type&&n.event_id&&(e&&n.rel_type===e||!e)},getRelation(){return this.isRelation()?this.getWireContent()["m.relates_to"]:null},makeReplaced(e){this.isRedacted()&&e||this._replacingEvent!==e&&(this._replacingEvent=e,this.emit("Event.replaced",this))},getAssociatedStatus(){return this._replacingEvent?this._replacingEvent.status:this._localRedactionEvent?this._localRedactionEvent.status:this.status},getServerAggregatedRelation(e){const t=this.getUnsigned()["m.relations"];if(t)return t[e]},replacingEventId(){const e=this.getServerAggregatedRelation("m.replace");return e?e.event_id:this._replacingEvent?this._replacingEvent.getId():void 0},replacingEvent(){return this._replacingEvent},replacingEventDate(){const e=this.getServerAggregatedRelation("m.replace");if(e){const t=e.origin_server_ts;if(Number.isFinite(t))return new Date(t)}else if(this._replacingEvent)return this._replacingEvent.getDate()},localRedactionEvent(){return this._localRedactionEvent},getAssociatedId(){const e=this.getRelation();return e?e.event_id:this.isRedaction()?this.event.redacts:void 0},hasAssocation(){return!!this.getAssociatedId()},updateAssociatedId(e){const t=this.getRelation();t?t.event_id=e:this.isRedaction()&&(this.event.redacts=e)},flagCancelled(e=!0){this._isCancelled=e},isCancelled(){return this._isCancelled},toJSON(){const e={type:this.getType(),sender:this.getSender(),content:this.getContent(),event_id:this.getId(),origin_server_ts:this.getTs(),unsigned:this.getUnsigned(),room_id:this.getRoomId()};return this.isRedaction()&&(e.redacts=this.event.redacts),this.isEncrypted()?{decrypted:e,encrypted:this.event}:e},setVerificationRequest:function(e){this.verificationRequest=e}});const u=["event_id","type","room_id","user_id","sender","state_key","prev_state","content","unsigned","origin_server_ts"].reduce((function(e,t){return e[t]=1,e}),{}),d={"m.room.member":{membership:1},"m.room.create":{creator:1},"m.room.join_rules":{join_rule:1},"m.room.power_levels":{ban:1,events:1,events_default:1,kick:1,redact:1,state_default:1,users:1,users_default:1},"m.room.aliases":{aliases:1}}},function(e,t,n){"use strict";var o=n(6),r=n(103),i=n(4),a=n(3),s=n(9),c=n(1),l=n(233);const u={joining:!1,joinError:null,roomId:null,initialEventId:null,isInitialEventHighlighted:!1,roomAlias:null,roomLoading:!1,roomLoadError:null,forwardingEvent:null,quotingEvent:null,matrixClientIsReady:!1};class d extends r.Store{constructor(){super(o.a),this._state=u,i.a.get()&&(this._state.matrixClientIsReady=i.a.get().isInitialSyncComplete())}_setState(e){let t=!1;for(const n of Object.keys(e))if(this._state[n]!==e[n]){t=!0;break}t&&(this._state=Object.assign(this._state,e),this.__emitChange())}__onDispatch(e){switch(e.action){case"view_room":this._viewRoom(e);break;case"view_my_groups":case"view_group":this._setState({roomId:null,roomAlias:null});break;case"view_room_error":this._viewRoomError(e);break;case"will_join":this._setState({joining:!0});break;case"cancel_join":this._setState({joining:!1});break;case"join_room":this._joinRoom(e);break;case"join_room_error":this._joinRoomError(e);break;case"on_client_not_viable":case"on_logged_out":this.reset();break;case"forward_event":this._setState({forwardingEvent:e.event});break;case"reply_to_event":e.event&&e.event.getRoomId()!==this._state.roomId?o.a.dispatch({action:"view_room",room_id:e.event.getRoomId(),replyingToEvent:e.event}):this._setState({replyingToEvent:e.event});break;case"open_room_settings":{const t=a.a("dialogs.RoomSettingsDialog");s.a.createTrackedDialog("Room settings","",t,{roomId:e.room_id||this._state.roomId},null,!1,!0);break}case"sync_state":this._setState({matrixClientIsReady:i.a.get().isInitialSyncComplete()})}}async _viewRoom(e){if(e.room_id){const t={roomId:e.room_id,roomAlias:e.room_alias,initialEventId:e.event_id,isInitialEventHighlighted:e.highlighted,forwardingEvent:null,roomLoading:!1,roomLoadError:null,shouldPeek:void 0===e.should_peek||e.should_peek,joining:e.joining||!1,replyingToEvent:null,isEditingSettings:!1};e.replyingToEvent&&e.replyingToEvent.getRoomId()===e.room_id&&(t.replyingToEvent=e.replyingToEvent),this._state.forwardingEvent&&o.a.dispatch({action:"send_event",room_id:t.roomId,event:this._state.forwardingEvent}),this._setState(t),e.auto_join&&this._joinRoom(e)}else if(e.room_alias){let t=Object(l.a)(e.room_alias);if(!t){this._setState({roomId:null,initialEventId:null,initialEventPixelOffset:null,isInitialEventHighlighted:null,roomAlias:e.room_alias,roomLoading:!0,roomLoadError:null});try{const n=await i.a.get().getRoomIdForAlias(e.room_alias);Object(l.b)(e.room_alias,n.room_id),t=n.room_id}catch(t){return void o.a.dispatch({action:"view_room_error",room_id:null,room_alias:e.room_alias,err:t})}}o.a.dispatch({action:"view_room",room_id:t,event_id:e.event_id,highlighted:e.highlighted,room_alias:e.room_alias,auto_join:e.auto_join,oob_data:e.oob_data})}}_viewRoomError(e){this._setState({roomId:e.room_id,roomAlias:e.room_alias,roomLoading:!1,roomLoadError:e.err})}_joinRoom(e){this._setState({joining:!0}),i.a.get().joinRoom(this._state.roomAlias||this._state.roomId,e.opts).then(()=>{},e=>{o.a.dispatch({action:"join_room_error",err:e});let t=e.message?e.message:JSON.stringify(e);t&&t.startsWith("CORS request rejected")&&(t=Object(c.a)("There was an error joining the room")),"M_INCOMPATIBLE_ROOM_VERSION"===e.errcode&&(t=React.createElement("div",null,Object(c.a)("Sorry, your homeserver is too old to participate in this room."),React.createElement("br",null),Object(c.a)("Please contact your homeserver administrator.")));const n=a.a("dialogs.ErrorDialog");s.a.createTrackedDialog("Failed to join room","",n,{title:Object(c.a)("Failed to join room"),description:t})})}_joinRoomError(e){this._setState({joining:!1,joinError:e.err})}reset(){this._state=Object.assign({},u)}getRoomId(){return this._state.roomId}getInitialEventId(){return this._state.initialEventId}isInitialEventHighlighted(){return this._state.isInitialEventHighlighted}getRoomAlias(){return this._state.roomAlias}isRoomLoading(){return this._state.roomLoading}getRoomLoadError(){return this._state.roomLoadError}isJoining(){return this._state.joining}getJoinError(){return this._state.joinError}getForwardingEvent(){return this._state.forwardingEvent}getQuotingEvent(){return this._state.replyingToEvent}shouldPeek(){return this._state.shouldPeek&&this._state.matrixClientIsReady}}let p=null;p||(p=new d),t.a=p},function(e,t,n){"use strict";var o,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};o=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var c=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function d(e,t,n,o){var r,i,a,s;if(l(n),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),a=i[t]),void 0===a)a=i[t]=n,++e._eventsCount;else if("function"==typeof a?a=i[t]=o?[n,a]:[a,n]:o?a.unshift(n):a.push(n),(r=u(e))>0&&a.length>r&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,s=c,console&&console.warn&&console.warn(s)}return e}function p(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,n){var o={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=p.bind(o);return r.listener=n,o.wrapFn=r,r}function m(e,t,n){var o=e._events;if(void 0===o)return[];var r=o[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(a=t[0]),a instanceof Error)throw a;var s=new Error("Unhandled error."+(a?" ("+a.message+")":""));throw s.context=a,s}var c=r[e];if(void 0===c)return!1;if("function"==typeof c)i(c,this,t);else{var l=c.length,u=f(c,l);for(n=0;n=0;i--)if(n[i]===t||n[i].listener===t){a=n[i].listener,r=i;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1=0;o--)this.removeListener(e,t[o]);return this},s.prototype.listeners=function(e){return m(this,e,!0)},s.prototype.rawListeners=function(e){return m(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):g.call(e,t)},s.prototype.listenerCount=g,s.prototype.eventNames=function(){return this._eventsCount>0?o(this._events):[]}},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(798)},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var o=n(225);function r(e){this._eventTimelineSet=e,this._roomId=e.room?e.room.roomId:null,this._events=[],this._baseIndex=0,this._startState=new o.a(this._roomId),this._startState.paginationToken=null,this._endState=new o.a(this._roomId),this._endState.paginationToken=null,this._prevTimeline=null,this._nextTimeline=null,this._paginationRequests={b:null,f:null},this._name=this._roomId+":"+(new Date).toISOString()}r.BACKWARDS="b",r.FORWARDS="f",r.prototype.initialiseState=function(e){if(this._events.length>0)throw new Error("Cannot initialise state after events are added");for(const t of e)Object.freeze(t);this._startState.setStateEvents(e),this._endState.setStateEvents(e)},r.prototype.forkLive=function(e){const t=this.getState(e),n=new r(this._eventTimelineSet);return n._startState=t.clone(),n._endState=t,this._endState=t.clone(),n},r.prototype.fork=function(e){const t=this.getState(e),n=new r(this._eventTimelineSet);return n._startState=t.clone(),n._endState=t.clone(),n},r.prototype.getRoomId=function(){return this._roomId},r.prototype.getFilter=function(){return this._eventTimelineSet.getFilter()},r.prototype.getTimelineSet=function(){return this._eventTimelineSet},r.prototype.getBaseIndex=function(){return this._baseIndex},r.prototype.getEvents=function(){return this._events},r.prototype.getState=function(e){if(e==r.BACKWARDS)return this._startState;if(e==r.FORWARDS)return this._endState;throw new Error("Invalid direction '"+e+"'")},r.prototype.getPaginationToken=function(e){return this.getState(e).paginationToken},r.prototype.setPaginationToken=function(e,t){this.getState(t).paginationToken=e},r.prototype.getNeighbouringTimeline=function(e){if(e==r.BACKWARDS)return this._prevTimeline;if(e==r.FORWARDS)return this._nextTimeline;throw new Error("Invalid direction '"+e+"'")},r.prototype.setNeighbouringTimeline=function(e,t){if(this.getNeighbouringTimeline(t))throw new Error("timeline already has a neighbouring timeline - cannot reset neighbour (direction: "+t+")");if(t==r.BACKWARDS)this._prevTimeline=e;else{if(t!=r.FORWARDS)throw new Error("Invalid direction '"+t+"'");this._nextTimeline=e}this.setPaginationToken(null,t)},r.prototype.addEvent=function(e,t){const n=t?this._startState:this._endState,o=this.getTimelineSet();let i;o.room&&o.room.getUnfilteredTimelineSet()===o&&(r.setEventMetadata(e,n,t),e.isState()&&(n.setStateEvents([e]),e.sender&&("m.room.member"!==e.getType()||t)||r.setEventMetadata(e,n,t))),i=t?0:this._events.length,this._events.splice(i,0,e),t&&this._baseIndex++},r.setEventMetadata=function(e,t,n){e.sender=t.getSentinelMember(e.getSender()),"m.room.member"===e.getType()&&(e.target=t.getSentinelMember(e.getStateKey())),e.isState()&&n&&(e.forwardLooking=!1)},r.prototype.removeEvent=function(e){for(let t=this._events.length-1;t>=0;t--){const n=this._events[t];if(n.getId()==e)return this._events.splice(t,1),tencodeURIComponent(e)).join("&via=")):""}parsePermalink(e){if(!e||!e.startsWith(this._riotUrl))throw new Error("Does not appear to be a permalink");const t=e.substring("".concat(this._riotUrl,"/#/").length).split("/");if(t.length<2)throw new Error("URL is missing parts");const n=t[0],o=t[1];if("user"===n)return c.a.forUser(o);if("group"===n)return c.a.forGroup(o);if("room"===n){if(2===t.length)return c.a.forRoom(o,[]);const e=(t.length>2?t.slice(2).join("/"):"").split("?"),n=e[0],r=(e.length>1?e[1]:"").split("via=").filter(e=>!!e);return c.a.forEvent(o,n,r)}throw new Error("Unknown entity type in permalink")}}var p=n(100),h=n(16);class m{constructor(e,t=null){if(this._room=e,this._roomId=e?e.roomId:t,this._highestPlUserId=null,this._populationMap=null,this._bannedHostsRegexps=null,this._allowedHostsRegexps=null,this._serverCandidates=null,this._started=!1,!this._roomId)throw new Error("Failed to resolve a roomId for the permalink creator to use");this.onMembership=this.onMembership.bind(this),this.onRoomState=this.onRoomState.bind(this)}load(){this._room&&this._room.currentState?(this._updateAllowedServers(),this._updateHighestPlUser(),this._updatePopulationMap(),this._updateServerCandidates()):console.warn("Tried to load a permalink creator with no room state")}start(){this.load(),this._room.on("RoomMember.membership",this.onMembership),this._room.on("RoomState.events",this.onRoomState),this._started=!0}stop(){this._room.removeListener("RoomMember.membership",this.onMembership),this._room.removeListener("RoomState.events",this.onRoomState),this._started=!1}isStarted(){return this._started}forEvent(e){return w().forEvent(this._roomId,e,this._serverCandidates)}forRoom(){return w().forRoom(this._roomId,this._serverCandidates)}onRoomState(e){switch(e.getType()){case"m.room.server_acl":return this._updateAllowedServers(),this._updateHighestPlUser(),this._updatePopulationMap(),void this._updateServerCandidates();case"m.room.power_levels":return this._updateHighestPlUser(),void this._updateServerCandidates()}}onMembership(e,t,n){const o=t.userId,r=t.membership,i=x(o),a="join"!==n&&"join"===r;"join"===n&&"join"!==r?this._populationMap[i]--:a&&this._populationMap[i]++,this._updateHighestPlUser(),this._updateServerCandidates()}_updateHighestPlUser(){const e=this._room.currentState.getStateEvents("m.room.power_levels","");if(e){const t=e.getContent();if(t){const e=t.users;if(e){const t=Object.entries(e).filter(([e])=>{const t=this._room.getMember(e);if(!t||"join"!==t.membership)return!1;const n=x(e);return!R(n)&&!k(n,this._bannedHostsRegexps)&&k(n,this._allowedHostsRegexps)}).reduce((e,t)=>t[1]>e[1]?t:e,[null,0]),[n,o]=t;if(null!==n&&o>=50)return void(this._highestPlUserId=n)}}}this._highestPlUserId=null}_updateAllowedServers(){const e=[];let t=[new RegExp(".*")];if(this._room.currentState){const n=this._room.currentState.getStateEvents("m.room.server_acl","");if(n&&n.getContent()){const o=e=>new RegExp("^"+a.n(e,!1)+"$");(n.getContent().deny||[]).forEach(t=>e.push(o(t)));const r=n.getContent().allow||[];t=[],r.forEach(e=>t.push(o(e)))}}this._bannedHostsRegexps=e,this._allowedHostsRegexps=t}_updatePopulationMap(){const e={};for(const t of this._room.getJoinedMembers()){const n=x(t.userId);e[n]||(e[n]=0),e[n]++}this._populationMap=e}_updateServerCandidates(){let e=[];this._highestPlUserId&&e.push(x(this._highestPlUserId));const t=Object.keys(this._populationMap).sort((e,t)=>this._populationMap[t]-this._populationMap[e]).filter(t=>!e.includes(t)&&!R(t)&&!k(t,this._bannedHostsRegexps)&&k(t,this._allowedHostsRegexps)).slice(0,3-e.length);e=e.concat(t),this._serverCandidates=e}}function g(e){return w().forEntity(e)}function f(e){return w().forUser(e)}function _(e){if(!e)throw new Error("can't permalink a falsey roomId");if("!"!==e[0])return w().forRoom(e,[]);const t=o.a.get().getRoom(e);if(!t)return w().forRoom(e,[]);const n=new m(t);return n.load(),n.forRoom()}function v(e){return w().forGroup(e)}function b(e){return!!(new s.b).isPermalinkHost(e)||w().isPermalinkHost(e)}function y(e){return e?"#"===e[0]||"!"===e[0]?_(e):"@"===e[0]?f(e):"+"===e[0]?v(e):E(e):null}function E(e){if(!e.startsWith("http:")&&!e.startsWith("https:"))return e;const t=e.match(p.a.VECTOR_URL_PATTERN);if(t)return t[1];try{const t=C(e);if(t)if(t.roomIdOrAlias){const n=t.eventId?"/".concat(t.eventId):"";e="#/room/".concat(t.roomIdOrAlias).concat(n)}else t.groupId?e="#/group/".concat(t.groupId):t.userId&&(e="#/user/".concat(t.userId))}catch(e){}return e}function S(e){try{let t=C(e);if(!t){const n=e.match(p.a.VECTOR_URL_PATTERN);if(n){const e=new d("http://localhost"),o=n[1].split("#").slice(1).join("#");t=e.parsePermalink("http://localhost/#".concat(o))}}if(!t)return null;if(t.userId)return t.userId;if(t.groupId)return t.groupId;if(t.roomIdOrAlias)return t.roomIdOrAlias}catch(e){}return null}function w(){const e=h.a.get().permalinkPrefix;return e&&e!==s.a?new d(e):new s.b}function C(e){const t=h.a.get().permalinkPrefix;return e.startsWith(s.a)?(new s.b).parsePermalink(e):t&&e.startsWith(t)?new d(t).parsePermalink(e):null}function x(e){return e.split(":").splice(1).join(":")}function T(e){return e?new URL("https://".concat(e)).hostname:null}function k(e,t){if(!(e=T(e)))return!0;if(t.length>0&&!t[0].test)throw new Error(t[0]);return t.filter(t=>t.test(e)).length>0}function R(e){return!!(e=T(e))&&(e.startsWith("[")&&e.endsWith("]")&&(e=e.substring(1,e.length-1)),i()(e))}},function(e,t,n){"use strict";var o=n(777),r=n(778);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){r.isString(e)&&(e=b(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,l=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),u=["'"].concat(l),d=["%","/","?",";","#"].concat(u),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},f={javascript:!0,"javascript:":!0},_={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(157);function b(e,t,n){if(e&&r.isObject(e)&&e instanceof i)return e;var o=new i;return o.parse(e,t,n),o}i.prototype.parse=function(e,t,n){if(!r.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),s=-1!==i&&i127?N+="x":N+=F[A];if(!N.match(h)){var P=D.slice(0,k),L=D.slice(k+1),U=F.match(m);U&&(P.push(U[1]),L.unshift(U[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=P.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),O||(this.hostname=o.toASCII(this.hostname));var j=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+j,this.href+=this.host,O&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!g[S])for(k=0,I=u.length;k0)&&n.host.split("@"))&&(n.auth=O.shift(),n.host=n.hostname=O.shift());return n.search=e.search,n.query=e.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var x=w.slice(-1)[0],T=(n.host||e.host||w.length>1)&&("."===x||".."===x)||""===x,k=0,R=w.length;R>=0;R--)"."===(x=w[R])?w.splice(R,1):".."===x?(w.splice(R,1),k++):k&&(w.splice(R,1),k--);if(!E&&!S)for(;k--;k)w.unshift("..");!E||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),T&&"/"!==w.join("/").substr(-1)&&w.push("");var O,D=""===w[0]||w[0]&&"/"===w[0].charAt(0);C&&(n.hostname=n.host=D?"":w.length?w.shift():"",(O=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=O.shift(),n.host=n.hostname=O.shift()));return(E=E||n.host&&w.length)&&!D&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return l}));var o=n(8),r=n(267),i=n(155),a=n(277),s=n(96),c=n(181);class l{constructor(e,t){this._indexedDB=e,this._dbName=t,this._backendPromise=null,this._backend=null}static exists(e,t){return c.a(e,t)}startup(){return this._backendPromise||(this._backendPromise=new Promise((e,t)=>{if(!this._indexedDB)return void t(new Error("no indexeddb support available"));o.a.log("connecting to indexeddb ".concat(this._dbName));const n=this._indexedDB.open(this._dbName,a.b);n.onupgradeneeded=e=>{const t=e.target.result,n=e.oldVersion;a.c(t,n)},n.onblocked=()=>{o.a.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},n.onerror=e=>{o.a.log("Error connecting to indexeddb",e),t(e.target.error)},n.onsuccess=t=>{const n=t.target.result;o.a.log("connected to indexeddb ".concat(this._dbName)),e(new a.a(n))}}).then(e=>e.doTxn("readonly",[l.STORE_INBOUND_GROUP_SESSIONS,l.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],t=>{e.getEndToEndInboundGroupSession("","",t,()=>{})}).then(()=>e)).catch(t=>{if("VersionError"===t.name)throw o.a.warn("Crypto DB is too new for us to use!",t),new s.a(s.a.TOO_NEW);o.a.warn("unable to connect to indexeddb ".concat(this._dbName)+": falling back to localStorage store: ".concat(t));try{return new r.a(e.localStorage)}catch(t){return o.a.warn("unable to open localStorage: falling back to in-memory store: ".concat(t)),new i.a}}).then(e=>{this._backend=e})),this._backendPromise}deleteAllData(){return new Promise((e,t)=>{if(!this._indexedDB)return void t(new Error("no indexeddb support available"));o.a.log("Removing indexeddb instance: ".concat(this._dbName));const n=this._indexedDB.deleteDatabase(this._dbName);n.onblocked=()=>{o.a.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},n.onerror=e=>{o.a.log("Error deleting data from indexeddb",e),t(e.target.error)},n.onsuccess=()=>{o.a.log("Removed indexeddb instance: ".concat(this._dbName)),e()}}).catch(e=>{o.a.warn("unable to delete IndexedDBCryptoStore: ".concat(e))})}getOrAddOutgoingRoomKeyRequest(e){return this._backend.getOrAddOutgoingRoomKeyRequest(e)}getOutgoingRoomKeyRequest(e){return this._backend.getOutgoingRoomKeyRequest(e)}getOutgoingRoomKeyRequestByState(e){return this._backend.getOutgoingRoomKeyRequestByState(e)}getOutgoingRoomKeyRequestsByTarget(e,t,n){return this._backend.getOutgoingRoomKeyRequestsByTarget(e,t,n)}updateOutgoingRoomKeyRequest(e,t,n){return this._backend.updateOutgoingRoomKeyRequest(e,t,n)}deleteOutgoingRoomKeyRequest(e,t){return this._backend.deleteOutgoingRoomKeyRequest(e,t)}getAccount(e,t){this._backend.getAccount(e,t)}storeAccount(e,t){this._backend.storeAccount(e,t)}getCrossSigningKeys(e,t){this._backend.getCrossSigningKeys(e,t)}getSecretStorePrivateKey(e,t,n){this._backend.getSecretStorePrivateKey(e,t,n)}storeCrossSigningKeys(e,t){this._backend.storeCrossSigningKeys(e,t)}storeSecretStorePrivateKey(e,t,n){this._backend.storeSecretStorePrivateKey(e,t,n)}countEndToEndSessions(e,t){this._backend.countEndToEndSessions(e,t)}getEndToEndSession(e,t,n,o){this._backend.getEndToEndSession(e,t,n,o)}getEndToEndSessions(e,t,n){this._backend.getEndToEndSessions(e,t,n)}getAllEndToEndSessions(e,t){this._backend.getAllEndToEndSessions(e,t)}storeEndToEndSession(e,t,n,o){this._backend.storeEndToEndSession(e,t,n,o)}storeEndToEndSessionProblem(e,t,n){return this._backend.storeEndToEndSessionProblem(e,t,n)}getEndToEndSessionProblem(e,t){return this._backend.getEndToEndSessionProblem(e,t)}filterOutNotifiedErrorDevices(e){return this._backend.filterOutNotifiedErrorDevices(e)}getEndToEndInboundGroupSession(e,t,n,o){this._backend.getEndToEndInboundGroupSession(e,t,n,o)}getAllEndToEndInboundGroupSessions(e,t){this._backend.getAllEndToEndInboundGroupSessions(e,t)}addEndToEndInboundGroupSession(e,t,n,o){this._backend.addEndToEndInboundGroupSession(e,t,n,o)}storeEndToEndInboundGroupSession(e,t,n,o){this._backend.storeEndToEndInboundGroupSession(e,t,n,o)}storeEndToEndInboundGroupSessionWithheld(e,t,n,o){this._backend.storeEndToEndInboundGroupSessionWithheld(e,t,n,o)}storeEndToEndDeviceData(e,t){this._backend.storeEndToEndDeviceData(e,t)}getEndToEndDeviceData(e,t){this._backend.getEndToEndDeviceData(e,t)}storeEndToEndRoom(e,t,n){this._backend.storeEndToEndRoom(e,t,n)}getEndToEndRooms(e,t){this._backend.getEndToEndRooms(e,t)}getSessionsNeedingBackup(e){return this._backend.getSessionsNeedingBackup(e)}countSessionsNeedingBackup(e){return this._backend.countSessionsNeedingBackup(e)}unmarkSessionsNeedingBackup(e,t){return this._backend.unmarkSessionsNeedingBackup(e,t)}markSessionsNeedingBackup(e,t){return this._backend.markSessionsNeedingBackup(e,t)}doTxn(e,t,n){return this._backend.doTxn(e,t,n)}}l.STORE_ACCOUNT="account",l.STORE_SESSIONS="sessions",l.STORE_INBOUND_GROUP_SESSIONS="inbound_group_sessions",l.STORE_INBOUND_GROUP_SESSIONS_WITHHELD="inbound_group_sessions_withheld",l.STORE_DEVICE_DATA="device_data",l.STORE_ROOMS="rooms",l.STORE_BACKUP="sessions_needing_backup"}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var o=n(4),r=n(16),i=n(6),a=n(32),s=n(80),c=n(7),l=n(49),u=n(39),d=n(110);class p{static canUserModifyWidgets(e){if(!e)return console.warn("No room ID specified"),!1;const t=o.a.get();if(!t)return console.warn("User must be be logged in"),!1;const n=t.getRoom(e);if(!n)return console.warn("Room ID ".concat(e," is not recognised")),!1;const r=t.credentials.userId;return r?"join"!==n.getMyMembership()?(console.warn("User ".concat(r," is not in room ").concat(e)),!1):n.currentState.maySendStateEvent("im.vector.modular.widgets",r):(console.warn("Failed to get user ID"),!1)}static isScalarUrl(e){if(!e)return console.error("Scalar URL check failed. No URL specified"),!1;const t=a.parse(e);let n=r.a.get().integrations_widgets_urls;if(!n||0===n.length){const e=u.a.sharedInstance().getPrimaryManager();n=e?[e.apiUrl]:[]}for(let e=0;e{function i(n){return!(!n||!n.getContent())&&(t?void 0!==n.getContent()[e]:void 0===n.getContent()[e])}if(i(o.a.get().getAccountData("m.widgets")))return void n();function a(e){i(o.a.get().getAccountData("m.widgets"))&&(o.a.get().removeListener("accountData",a),clearTimeout(s),n())}const s=setTimeout(()=>{o.a.get().removeListener("accountData",a),r(new Error("Timed out waiting for widget ID "+e+" to appear"))},2e4);o.a.get().on("accountData",a)})}static waitForRoomWidget(e,t,n){return new Promise((r,i)=>{function a(t){const o=t.some(t=>t.getContent()&&t.getContent().id===e);return n?o:!o}const s=o.a.get().getRoom(t);if(a(s.currentState.getStateEvents("im.vector.modular.widgets")))return void r();function c(e){if(e.getRoomId()!==t)return;a(s.currentState.getStateEvents("im.vector.modular.widgets"))&&(o.a.get().removeListener("RoomState.events",c),clearTimeout(l),r())}const l=setTimeout(()=>{o.a.get().removeListener("RoomState.events",c),i(new Error("Timed out waiting for widget ID "+e+" to appear"))},2e4);o.a.get().on("RoomState.events",c)})}static setUserWidget(e,t,n,r,a){const s={type:t,url:n,name:r,data:a},c=o.a.get(),l=JSON.parse(JSON.stringify(p.getUserWidgets()));try{delete l[e]}catch(e){console.error("$widgetId is non-configurable")}const u=Boolean(n);return u&&(l[e]={content:s,sender:c.getUserId(),state_key:e,type:"m.widget",id:e}),c.setAccountData("m.widgets",l).then(()=>p.waitForUserWidget(e,u)).then(()=>{i.a.dispatch({action:"user_widget_updated"})})}static setRoomWidget(e,t,n,r,i,a){let c;const l=Boolean(r);return c=l?{type:n,url:r,name:i,data:a}:{},s.a.setRoomWidgetEcho(e,t,c),o.a.get().sendStateEvent(e,"im.vector.modular.widgets",c,t).then(()=>p.waitForRoomWidget(t,e,l)).finally(()=>{s.a.removeRoomWidgetEcho(e,t)})}static getRoomWidgets(e){const t=e.currentState.getStateEvents("im.vector.modular.widgets");return t?t.filter(e=>e.getContent().type&&e.getContent().url):[]}static getUserWidgets(){const e=o.a.get();if(!e)throw new Error("User not logged in");const t=e.getAccountData("m.widgets");return t&&t.getContent()?t.getContent():{}}static getUserWidgetsArray(){return Object.values(p.getUserWidgets())}static getStickerpickerWidgets(){return p.getUserWidgetsArray().filter(e=>e.content&&"m.stickerpicker"===e.content.type)}static getIntegrationManagerWidgets(){return p.getUserWidgetsArray().filter(e=>e.content&&"m.integration_manager"===e.content.type)}static removeIntegrationManagerWidgets(){const e=o.a.get();if(!e)throw new Error("User not logged in");const t=e.getAccountData("m.widgets");if(!t)return;const n=t.getContent()||{};return Object.entries(n).forEach(([e,t])=>{t.content&&"m.integration_manager"===t.content.type&&delete n[e]}),e.setAccountData("m.widgets",n)}static addIntegrationManagerWidget(e,t,n){return p.setUserWidget("integration_manager_"+(new Date).getTime(),"m.integration_manager",t,"Integration Manager: "+e,{api_url:n})}static removeStickerpickerWidgets(){const e=o.a.get();if(!e)throw new Error("User not logged in");const t=e.getAccountData("m.widgets");if(!t)return;const n=t.getContent()||{};return Object.entries(n).forEach(([e,t])=>{t.content&&"m.stickerpicker"===t.content.type&&delete n[e]}),e.setAccountData("m.widgets",n)}static makeAppConfig(e,t,n,o,r){if(!n)throw new Error("Widgets must be created by someone - provide a senderUserId");return t.creatorUserId=n,t.id=e,t.eventId=r,t.name=t.name||t.type,t}static getCapWhitelistForAppTypeInRoomId(e,t){const n=c.b.getValue("enableWidgetScreenshots",t)?[d.a.Screenshot]:[];return"jitsi"===e&&n.push(d.a.AlwaysOnScreen),n}static getWidgetSecurityKey(e,t,n){let o=l.a.getRoomId(e);if(n){const n=p.getUserWidgetsArray().find(n=>n.id===e&&n.content&&n.content.url===t);if(!n)throw new Error("No matching user widget to form security key");o=n.sender}if(!o)throw new Error("Failed to locate where the widget resides");return encodeURIComponent("".concat(o,"::").concat(t))}static getLocalJitsiWrapperUrl(e={}){const t=["conferenceDomain=$domain","conferenceId=$conferenceId","isAudioOnly=$isAudioOnly","displayName=$matrix_display_name","avatarUrl=$matrix_avatar_url","userId=$matrix_user_id"].join("&");let n=window.location;return"https:"===window.location.protocol||e.forLocalRender||(n="https://riot.im/app/"),new URL("jitsi.html#"+t,n).href}}},function(e,t,n){"use strict";(function(e){var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(1),c=n(23),l=n(16),u=n(9),d=n(3);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const h=/#\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/,m=/#\/(group|room|user)\/.*$/;function g(){const{origin:e,hash:t}=window.location;let{pathname:n}=window.location;return e.startsWith("file://")&&(n="//"),e+n+function(e){return h.exec(e)?m.test(e)?e.replace(m,"#/$1/"):e.replace(h,"#/$1"):(console.warn('Unexpected hash location "'.concat(e,'"')),"#/")}(t)}const f={"App Platform":{id:1,expl:Object(s.b)("The platform you're on"),example:"Electron Platform"},"App Version":{id:2,expl:Object(s.b)("The version of Riot"),example:"15.0.0"},"User Type":{id:3,expl:Object(s.b)("Whether or not you're logged in (we don't record your username)"),example:"Logged In"},"Chosen Language":{id:4,expl:Object(s.b)("Your language of choice"),example:"en"},Instance:{id:5,expl:Object(s.b)("Which officially provided instance you are using, if any"),example:"app"},"RTE: Uses Richtext Mode":{id:6,expl:Object(s.b)("Whether or not you're using the Richtext mode of the Rich Text Editor"),example:"off"},"Homeserver URL":{id:7,expl:Object(s.b)("Your homeserver's URL"),example:"https://matrix.org"},"Touch Input":{id:8,expl:Object(s.b)("Whether you're using Riot on a device where touch is the primary input mechanism"),example:"false"},Breadcrumbs:{id:9,expl:Object(s.b)("Whether or not you're using the 'breadcrumbs' feature (avatars above the room list)"),example:"disabled"},"Installed PWA":{id:10,expl:Object(s.b)("Whether you're using Riot as an installed Progressive Web App"),example:"false"}};const _="mx_Riot_Analytics_uid";class v{constructor(){r()(this,"showDetailsModal",()=>{let e=[];e=this.disabled?Object.keys(f).map(e=>[e,Object(s.a)("e.g. %(exampleValue)s",{exampleValue:f[e].example})]):Object.values(this.visitVariables);const t="".concat(window.screen.width,"x").concat(window.screen.height),n=[{expl:Object(s.b)("Every page you use in the app"),value:Object(s.a)("e.g. ",{},{CurrentPageURL:g()})},{expl:Object(s.b)("Your user agent"),value:navigator.userAgent},{expl:Object(s.b)("Your device resolution"),value:t}],o=d.a("dialogs.ErrorDialog");u.a.createTrackedDialog("Analytics Details","",o,{title:Object(s.a)("Analytics"),description:a.a.createElement("div",{className:"mx_AnalyticsModal"},a.a.createElement("div",null,Object(s.a)("The information being sent to us to help make Riot better includes:")),a.a.createElement("table",null,e.map(e=>a.a.createElement("tr",{key:e[0]},a.a.createElement("td",null,Object(s.a)(f[e[0]].expl)),void 0!==e[1]&&a.a.createElement("td",null,a.a.createElement("code",null,e[1])))),n.map((e,t)=>a.a.createElement("tr",{key:t},a.a.createElement("td",null,Object(s.a)(e.expl)),a.a.createElement("td",null,a.a.createElement("code",null,e.value))))),a.a.createElement("div",null,Object(s.a)("Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.")))})}),this.baseUrl=null,this.siteId=null,this.visitVariables={},this.firstPage=!0,this._heartbeatIntervalID=null,this.creationTs=localStorage.getItem("mx_Riot_Analytics_cts"),this.creationTs||localStorage.setItem("mx_Riot_Analytics_cts",this.creationTs=(new Date).getTime()),this.lastVisitTs=localStorage.getItem("mx_Riot_Analytics_lvts"),this.visitCount=localStorage.getItem("mx_Riot_Analytics_vc")||0,localStorage.setItem("mx_Riot_Analytics_vc",parseInt(this.visitCount,10)+1)}get disabled(){return!this.baseUrl}async enable(){if(!this.disabled)return;const e=l.a.get();if(!(e&&e.piwik&&e.piwik.url&&e.piwik.siteId))return;this.baseUrl=new URL("piwik.php",e.piwik.url),this.baseUrl.searchParams.set("rec",1),this.baseUrl.searchParams.set("idsite",e.piwik.siteId),this.baseUrl.searchParams.set("apiv",1),this.baseUrl.searchParams.set("send_image",0),this.baseUrl.searchParams.set("_id",function(){try{let e=localStorage.getItem(_);return e||localStorage.setItem(_,e=[...Array(16)].map(()=>Math.random().toString(16)[2]).join("")),e}catch(e){return console.error("Analytics error: ",e),""}}()),this.baseUrl.searchParams.set("_idts",this.creationTs),this.baseUrl.searchParams.set("_idvc",parseInt(this.visitCount,10)+1),this.lastVisitTs&&this.baseUrl.searchParams.set("_viewts",this.lastVisitTs);const t=c.a.get();this._setVisitVariable("App Platform",t.getHumanReadableName());try{this._setVisitVariable("App Version",await t.getAppVersion())}catch(e){this._setVisitVariable("App Version","unknown")}this._setVisitVariable("Chosen Language",Object(s.d)()),"riot.im"===window.location.hostname&&this._setVisitVariable("Instance",window.location.pathname);let n="unknown";try{n=window.matchMedia("(display-mode: standalone)").matches}catch(e){}this._setVisitVariable("Installed PWA",n);let o="unknown";try{o=window.matchMedia("(pointer: coarse)").matches}catch(e){}this._setVisitVariable("Touch Input",o),this._heartbeatIntervalID=window.setInterval(this.ping.bind(this),3e4)}disable(){this.disabled||(this.trackEvent("Analytics","opt-out"),window.clearInterval(this._heartbeatIntervalID),this.baseUrl=null,this.visitVariables={},localStorage.removeItem(_),localStorage.removeItem("mx_Riot_Analytics_cts"),localStorage.removeItem("mx_Riot_Analytics_vc"),localStorage.removeItem("mx_Riot_Analytics_lvts"))}async _track(e){if(this.disabled)return;const t=new Date,n=function(e){for(var t=1;t"))}setBreadcrumbs(e){this.disabled||this._setVisitVariable("Breadcrumbs",e?"enabled":"disabled")}}e.mxAnalytics||(e.mxAnalytics=new v),t.a=e.mxAnalytics}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return h}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(13),c=n(1),l=n(272),u=n(16);const d=[s.a.ERROR_INVALID_HOMESERVER,s.a.ERROR_INVALID_IDENTITY_SERVER];class p{constructor(){r()(this,"hsUrl",void 0),r()(this,"hsName",void 0),r()(this,"hsNameIsDifferent",void 0),r()(this,"isUrl",void 0),r()(this,"isDefault",void 0),r()(this,"warning",void 0)}}class h{static isLivelinessError(e){return!!e&&!!d.find(t=>t===e||t===e.message)}static authComponentStateForError(e,t="login"){if(!e)return{serverIsAlive:!0,serverErrorIsFatal:!1,serverDeadError:null};let n=Object(c.a)("Cannot reach homeserver"),o=Object(c.a)("Ensure you have a stable internet connection, or get in touch with the server admin");h.isLivelinessError(e)||(n=Object(c.a)("Your Riot is misconfigured"),o=Object(c.a)("Ask your Riot admin to check your config for incorrect or duplicate entries.",{},{a:e=>a.a.createElement("a",{href:"https://github.com/vector-im/riot-web/blob/master/docs/config.md",target:"_blank",rel:"noreferrer noopener"},e)}));let r=!0;return(e.message?e.message:e)===s.a.ERROR_INVALID_IDENTITY_SERVER&&(r=!1,n=Object(c.a)("Cannot reach identity server"),o="register"===t?Object(c.a)("You can register, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin."):"reset_password"===t?Object(c.a)("You can reset your password, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin."):Object(c.a)("You can log in, but some features will be unavailable until the identity server is back online. If you keep seeing this warning, check your configuration or contact a server admin.")),{serverIsAlive:!1,serverErrorIsFatal:r,serverDeadError:a.a.createElement("div",null,a.a.createElement("strong",null,n),a.a.createElement("div",null,o))}}static async validateServerConfigWithStaticUrls(e,t,n=!1){if(!e)throw Object(c.h)(Object(c.b)("No homeserver URL provided"));const o={"m.homeserver":{base_url:e}};t&&(o["m.identity_server"]={base_url:t});const r=await s.a.fromDiscoveryConfig(o),i=new URL(e).hostname;return h.buildValidatedConfigFromDiscovery(i,r,n)}static async validateServerName(e){const t=await s.a.findClientConfig(e);return h.buildValidatedConfigFromDiscovery(e,t)}static buildValidatedConfigFromDiscovery(e,t,n=!1){if(!t||!t["m.homeserver"])throw console.error("Ended up in a state of not knowing which homeserver to connect to."),Object(c.h)(Object(c.b)("Unexpected error resolving homeserver configuration"));const o=t["m.homeserver"],r=t["m.identity_server"],i=u.a.get().validated_server_config;let a=i&&i.isUrl;if(r&&r.state===s.a.SUCCESS)a=r.base_url;else if(r&&r.state!==s.a.PROMPT){if(console.error("Error determining preferred identity server URL:",r),r.state===s.a.FAIL_ERROR){if(-1!==s.a.ALL_ERRORS.indexOf(r.error))throw Object(c.h)(r.error);throw Object(c.h)(Object(c.b)("Unexpected error resolving identity server configuration"))}o.error=s.a.ERROR_INVALID_IDENTITY_SERVER,r.base_url&&(a=r.base_url)}if(o.state!==s.a.SUCCESS&&(console.error("Error processing homeserver config:",o),!n||!h.isLivelinessError(o.error))){if(-1!==s.a.ALL_ERRORS.indexOf(o.error))throw Object(c.h)(o.error);throw Object(c.h)(Object(c.b)("Unexpected error resolving homeserver configuration"))}const d=o.base_url;let m=e||o.server_name;const g=new URL(d);if(m||(m=g.hostname),!m)throw console.error("Failed to parse homeserver name from homeserver URL"),Object(c.h)(Object(c.b)("Unexpected error resolving homeserver configuration"));return Object(l.a)(p,{hsUrl:d,hsName:m,hsNameIsDifferent:g.hostname!==m,isUrl:a,isDefault:!1,warning:o.error})}}},function(e,t,n){var o=n(246);e.exports=function(e,t){if(null==e)return{};var n,r,i=o(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}},function(e,t,n){"use strict";(function(e){n.d(t,"f",(function(){return s})),n.d(t,"g",(function(){return c})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return u})),n.d(t,"e",(function(){return d})),n.d(t,"b",(function(){return p})),n.d(t,"a",(function(){return m}));var o=n(717),r=n(10),i=n(8),a=n(171);const s="/_matrix/client/r0",c="/_matrix/client/unstable",l="/_matrix/identity/api/v1",u="/_matrix/identity/v2",d="/_matrix/media/r0";function p(e,t){r.a(t,["baseUrl","request","prefix"]),t.onlyData=t.onlyData||!1,this.event_emitter=e,this.opts=t,this.useAuthorizationHeader=Boolean(t.useAuthorizationHeader),this.uploads=[]}p.prototype={setIdBaseUrl:function(e){this.opts.idBaseUrl=e},getContentUri:function(){const e={access_token:this.opts.accessToken};return{base:this.opts.baseUrl,path:"/_matrix/media/r0/upload",params:e}},uploadContent:function(t,n){r.q(n)?n={callback:n}:void 0===n&&(n={});const o=!1!==n.includeFilename,s=n.type||t.type||"application/octet-stream",c=n.name||t.name;let l=t;l.stream&&"function"!=typeof l.stream&&(i.a.warn("Using `file.stream` as the content to upload. Future versions of the js-sdk will change this to expect `file` to be the content directly."),l=l.stream);let u=n.rawResponse;void 0===u&&(e.XMLHttpRequest?u=!1:(i.a.warn("Returning the raw JSON from uploadContent(). Future versions of the js-sdk will change this default, to return the parsed object. Set opts.rawResponse=false to change this behaviour now."),u=!0));let d=n.onlyContentUri;u||void 0!==d||(e.XMLHttpRequest?(i.a.warn("Returning only the content-uri from uploadContent(). Future versions of the js-sdk will change this default, to return the whole response object. Set opts.onlyContentUri=false to change this behaviour now."),d=!0):d=!1);const p={loaded:0,total:0};let m,g=null;if(u||(g=function(e){let t=JSON.parse(e);if(d&&(t=t.content_uri,void 0===t))throw Error("Bad response");return t}),e.XMLHttpRequest){const t=r.d(),i=new e.XMLHttpRequest;p.xhr=i;const u=h(t,n.callback,this.opts.onlyData),d=function(){i.abort(),u(new Error("Timeout"))};i.timeout_timer=a.b(d,3e4),i.onreadystatechange=function(){switch(i.readyState){case e.XMLHttpRequest.DONE:var t;a.a(i.timeout_timer);try{if(!i.responseText)throw new Error("No response body.");t=i.responseText,g&&(t=g(t))}catch(e){return e.http_status=i.status,void u(e)}u(void 0,i,t)}},i.upload.addEventListener("progress",(function(e){a.a(i.timeout_timer),p.loaded=e.loaded,p.total=e.total,i.timeout_timer=a.b(d,3e4),n.progressHandler&&n.progressHandler({loaded:e.loaded,total:e.total})}));let f=this.opts.baseUrl+"/_matrix/media/r0/upload";const _=[];o&&c&&_.push("filename="+encodeURIComponent(c)),this.useAuthorizationHeader||_.push("access_token="+encodeURIComponent(this.opts.accessToken)),_.length>0&&(f+="?"+_.join("&")),i.open("POST",f),this.useAuthorizationHeader&&i.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),i.setRequestHeader("Content-Type",s),i.send(l),m=t.promise,m.abort=i.abort.bind(i)}else{const e={};o&&c&&(e.filename=c),m=this.authedRequest(n.callback,"POST","/upload",e,l,{prefix:"/_matrix/media/r0",headers:{"Content-Type":s},json:!1,bodyParser:g})}const f=this,_=m.finally((function(){for(let e=0;e{v&&(g&&a.a(g),g=a.b((function(){_=!0,f&&f.abort&&f.abort(),p.reject(new m({error:"Locally timed out waiting for a response",errcode:"ORG.MATRIX.JSSDK_TIMEOUT",timeout:v}))}),v))};b();const y=p.promise;try{f=this.opts.request({uri:n,method:t,withCredentials:!1,qs:o,qsStringifyOptions:s.qsStringifyOptions,useQuerystring:!0,body:i,json:!1,timeout:v,headers:l||{},_matrix_opts:this.opts},(function(t,n,o){if(v&&(a.a(g),_))return;h(p,e,c.opts.onlyData,d)(t,n,o)})),f&&("onprogress"in f&&(f.onprogress=e=>{b()}),f.abort&&(y.abort=f.abort.bind(f)))}catch(t){p.reject(t),e&&e(t)}return y}};const h=function(e,t,n,r){return t=t||function(){},function(i,a,s){if(!i)try{a.statusCode>=400?i=function(e,t){const n=e.statusCode,r=function(e){let t;e.getResponseHeader?t=e.getResponseHeader("Content-Type"):e.headers&&(t=e.headers["content-type"]||null);if(!t)return null;try{return Object(o.parse)(t)}catch(e){throw new Error("Error parsing Content-Type '".concat(t,"': ").concat(e))}}(e);let i;if(r)if("application/json"===r.type){const e="object"==typeof t?t:JSON.parse(t);i=new m(e)}else"text/plain"===r.type&&(i=new Error("Server returned ".concat(n," error: ").concat(t)));i||(i=new Error("Server returned ".concat(n," error")));return i.httpStatus=n,i}(a,s):r&&(s=r(s))}catch(e){i=new Error("Error parsing server response: ".concat(e))}if(i)e.reject(i),t(i);else{const o={code:a.statusCode,headers:a.headers,data:s};e.resolve(n?s:o),t(null,n?s:o)}}};function m(e){e=e||{},this.errcode=e.errcode,this.name=e.errcode||"Unknown error code",this.message=e.error||"Unknown message",this.data=e}m.prototype=Object.create(Error.prototype),m.prototype.constructor=m}).call(this,n(24))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return m}));var o=n(5),r=n.n(o),i=n(16),a=n(3),s=n(9),c=n(88),l=n(34),u=n(4),d=n(13),p=n(7);const h=[c.b,c.d,c.c];class m{static sharedInstance(){return m._instance||(m._instance=new m),m._instance}constructor(){r()(this,"_managers",[]),r()(this,"_client",void 0),r()(this,"_wellknownRefreshTimerId",null),r()(this,"_primaryManager",void 0),r()(this,"_onAccountData",e=>{"m.widgets"===e.getType()&&this._compileManagers()}),this._compileManagers()}startWatching(){this.stopWatching(),this._client=u.a.get(),this._client.on("accountData",this._onAccountData),this._compileManagers(),setInterval(()=>this._setupHomeserverManagers(),288e5)}stopWatching(){this._client&&(this._client.removeListener("accountData",this._onAccountData),null!==this._wellknownRefreshTimerId&&clearInterval(this._wellknownRefreshTimerId))}_compileManagers(){this._managers=[],this._setupConfiguredManager(),this._setupHomeserverManagers(),this._setupAccountManagers()}_setupConfiguredManager(){const e=i.a.get().integrations_rest_url,t=i.a.get().integrations_ui_url;e&&t&&(this._managers.push(new c.a(c.c,e,t)),this._primaryManager=null)}async _setupHomeserverManagers(){if(u.a.get())try{console.log("Updating homeserver-configured integration managers...");const e=u.a.getHomeserverName(),t=await d.a.getRawClientConfig(e);if(t&&t["m.integrations"]){let e=t["m.integrations"].managers;Array.isArray(e)||(e=[]),console.log("Homeserver has ".concat(e.length," integration managers")),this._managers=this._managers.filter(e=>e.kind!==c.d);for(const t of e)t.api_url&&this._managers.push(new c.a(c.d,t.api_url,t.ui_url));this._primaryManager=null}else console.log("Homeserver has no integration managers")}catch(e){console.error(e)}}_setupAccountManagers(){if(!this._client||!this._client.getUserId())return;l.a.getIntegrationManagerWidgets().forEach(e=>{const t=e.content.data;if(!t)return;const n=e.content.url,o=t.api_url;if(!o||!n)return;const r=new c.a(c.b,o,n);r.id=e.id||e.state_key||"",this._managers.push(r)}),this._primaryManager=null}hasManager(){return this._managers.length>0}getOrderedManagers(){const e=[];for(const t of h){const n=this._managers.filter(e=>e.kind===t);n&&n.length&&(t===c.b&&n.sort((e,t)=>e.id.localeCompare(t.id)),e.push(...n))}return e}getPrimaryManager(){return this.hasManager()?(this._primaryManager||(this._primaryManager=this.getOrderedManagers()[0]),this._primaryManager):null}openNoManagerDialog(){const e=a.a("dialogs.IntegrationsImpossibleDialog");s.a.createTrackedDialog("Integrations impossible","",e)}openAll(e=null,t=null,n=null){if(!p.b.getValue("integrationProvisioning"))return this.showDisabledDialog();if(0===this._managers.length)return this.openNoManagerDialog();const o=a.a("views.dialogs.TabbedIntegrationManagerDialog");s.a.createTrackedDialog("Tabbed Integration Manager","",o,{room:e,screen:t,integrationId:n},"mx_TabbedIntegrationManagerDialog")}showDisabledDialog(){const e=a.a("dialogs.IntegrationsDisabledDialog");s.a.createTrackedDialog("Integrations disabled","",e)}async overwriteManagerOnAccount(e){await l.a.removeIntegrationManagerWidgets(),await l.a.addIntegrationManagerWidget(e.name,e.uiUrl,e.apiUrl)}async tryDiscoverManager(e){if(console.log("Looking up integration manager via .well-known"),e.startsWith("http:")||e.startsWith("https:")){const t=t.parse(e);e=t.host}let t;try{const n=await fetch("https://".concat(e,"/.well-known/matrix/integrations"));t=await n.json()}catch(e){return console.error(e),console.warn("Failed to locate integration manager"),null}if(!t||!t["m.integrations_widget"])return console.warn("Missing integrations widget on .well-known response"),null;const n=t["m.integrations_widget"];if(!n.url||!n.data||!n.data.api_url)return console.warn("Malformed .well-known response for integrations widget"),null;const o=new c.a(c.b,n.data.api_url,n.url);return console.log("Got an integration manager (untested)"),o}}r()(m,"_instance",void 0),e.mxIntegrationManagers=m}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"h",(function(){return D})),n.d(t,"g",(function(){return I})),n.d(t,"f",(function(){return F})),n.d(t,"c",(function(){return N})),n.d(t,"a",(function(){return j})),n.d(t,"e",(function(){return B})),n.d(t,"d",(function(){return q})),n.d(t,"b",(function(){return G}));var o=n(85),r=n(0),i=n.n(r),a=n(136),s=n.n(a),c=n(740),l=n(100),u=n(741),d=n.n(u),p=n(742),h=n.n(p),m=n(14),g=n.n(m),f=n(4),_=n(32),v=n.n(_),b=n(743),y=n.n(b),E=n(31),S=n(106);Object(l.a)(c);const w=/([\ud800-\udbff])([\udc00-\udfff])/,C=/([\u2100-\u2bff])/,x=new RegExp("‍| ","g"),T=new RegExp("\\s","g"),k=new RegExp("^(".concat(y.a.source,")+$"),"i"),R=/^#[0-9a-fA-F]{6}$/,O=["http","https","ftp","mailto","magnet"];function D(e){const t=Object(S.d)(e);return t&&t.shortcodes?":".concat(t.shortcodes[0],":"):""}function I(e){e=e.slice(1,e.length-1);const t=S.c.get(e);return t?t.unicode:null}function F(e){const t=s()(e,M);return i.a.createElement("div",{dangerouslySetInnerHTML:{__html:t},dir:"auto"})}function N(e){try{const t=v.a.parse(e);return!!t.protocol&&O.includes(t.protocol.slice(0,-1))}catch(e){return!1}}const A={a:function(e,t){if(t.href){t.target="_blank";const e=Object(E.j)(t.href);(e!==t.href||t.href.match(l.a.VECTOR_URL_PATTERN))&&(t.href=e,delete t.target)}return t.rel="noreferrer noopener",{tagName:e,attribs:t}},img:function(e,t){return t.src&&t.src.startsWith("mxc://")?(t.src=f.a.get().mxcUrlToHttp(t.src,t.width||800,t.height||600),{tagName:e,attribs:t}):{tagName:e,attribs:{}}},code:function(e,t){if(void 0!==t.class){const e=t.class.split(/\s/).filter((function(e){return e.startsWith("language-")}));t.class=e.join(" ")}return{tagName:e,attribs:t}},"*":function(e,t){delete t.style;const n={"data-mx-color":"color","data-mx-bg-color":"background-color"};let o="";return Object.keys(n).forEach(e=>{const r=n[e],i=t[e];i&&"string"==typeof i&&R.test(i)&&(o+=r+":"+i+";",delete t[e])}),o&&(t.style=o),{tagName:e,attribs:t}}},M={allowedTags:["font","del","h1","h2","h3","h4","h5","h6","blockquote","p","a","ul","ol","sup","sub","nl","li","b","i","u","strong","em","strike","code","hr","br","div","table","thead","caption","tbody","tr","th","td","pre","span","img"],allowedAttributes:{font:["color","data-mx-bg-color","data-mx-color","style"],span:["data-mx-bg-color","data-mx-color","data-mx-spoiler","style"],a:["href","name","target","rel"],img:["src","width","height","alt","title"],ol:["start"],code:["class"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:O,allowProtocolRelative:!1,transformTags:A},P=Object.assign({},M);P.transformTags={code:A.code,"*":A["*"]};class L{constructor(e,t){this.highlightClass=e,this.highlightLink=t}applyHighlights(e,t){let n,o=0,r=[];const i=t[0];for(;(n=e.toLowerCase().indexOf(i.toLowerCase(),o))>=0;){if(n>o){var a=e.substring(o,n);r=r.concat(this._applySubHighlights(a,t))}const s=n+i.length;r.push(this._processSnippet(e.substring(n,s),!0)),o=s}return o!==e.length&&(a=e.substring(o,void 0),r=r.concat(this._applySubHighlights(a,t))),r}_applySubHighlights(e,t){return t[1]?this.applyHighlights(e,t.slice(1)):[this._processSnippet(e,!1)]}}class U extends L{_processSnippet(e,t){if(!t)return e;let n=''+e+"";return this.highlightLink&&(n=''+n+""),n}}function j(e,t,n={}){const r="org.matrix.custom.html"===e.format&&e.formatted_body;let a,c,l,u=!1,d=M;n.forComposerQuote&&(d=P);try{if(t&&t.length>0){const e=new U("mx_EventTile_searchHighlight",n.highlightLink),o=t.map((function(e){return s()(e,d)}));d.textFilter=function(t){return e.applyHighlights(t,o).join("")}}let i="string"==typeof e.formatted_body?e.formatted_body:null;const h="string"==typeof e.body?e.body:null;n.stripReplyFallback&&i&&(i=o.a.stripHTMLReply(i)),a=n.stripReplyFallback?o.a.stripPlainReply(h):h,p=r?i:h,u=w.test(p)||C.test(p),r&&(l=!0,c=s()(i,d))}finally{delete d.textFilter}var p;if(n.returnString)return l?c:a;let h=!1;if(!n.disableBigEmoji&&u){let t=void 0!==a?a.trim():"";t=t.replace(T,""),t=t.replace(x,"");const n=k.exec(t);h=n&&n[0]&&n[0].length===t.length&&(null==e.formatted_body||!e.formatted_body.includes("http:")&&!e.formatted_body.includes("https:"))}const m=g()({mx_EventTile_body:!0,mx_EventTile_bigEmoji:h,"markdown-body":r&&!h});return l?i.a.createElement("span",{key:"body",ref:n.ref,className:m,dangerouslySetInnerHTML:{__html:c},dir:"auto"}):i.a.createElement("span",{key:"body",ref:n.ref,className:m,dir:"auto"},a)}function B(e,t=l.a.options){return d()(e,t)}function q(e,t=l.a.options){return s()(function(e,t=l.a.options){return h()(e,t)}(e,t),M)}function G(e){switch(e.nodeName){case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"PRE":case"BLOCKQUOTE":case"DIV":case"P":case"UL":case"OL":case"LI":case"HR":case"TABLE":case"THEAD":case"TBODY":case"TR":case"TH":case"TD":return!0;default:return!1}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var o=n(4),r=n(208),i=n.n(r);n(92);class a{constructor(e){this.matrixClient=e,this.roomToUser=null,this._hasSentOutPatchDirectAccountDataPatch=!1,this._onAccountData=this._onAccountData.bind(this);const t=e.getAccountData("m.direct");this.mDirectEvent=t?t.getContent():{},this.userToRooms=null}static makeShared(){return a._sharedInstance=new a(o.a.get()),a._sharedInstance}static shared(){return a._sharedInstance}start(){this._populateRoomToUser(),this.matrixClient.on("accountData",this._onAccountData)}stop(){this.matrixClient.removeListener("accountData",this._onAccountData)}_onAccountData(e){"m.direct"==e.getType()&&(this.mDirectEvent=this.matrixClient.getAccountData("m.direct").getContent()||{},this.userToRooms=null,this.roomToUser=null)}_patchUpSelfDMs(e){const t=this.matrixClient.getUserId(),n=e[t];if(n){const o=n.map(e=>{const n=this.matrixClient.getRoom(e);if(n){const o=n.guessDMUserId();if(o&&o!==t)return{userId:o,roomId:e}}}).filter(e=>!!e);return!!o.length&&(e[t]=n.filter(e=>!o.some(t=>t.roomId===e)),o.forEach(({userId:t,roomId:n})=>{const o=e[t];o?(o.push(n),e[t]=i()(o)):e[t]=[n]}),!0)}}getDMRoomsForUserId(e){return this._getUserToRooms()[e]||[]}getDMRoomForIdentifiers(e){let t=this.getDMRoomsForUserId(e[0]);for(let n=1;no.includes(e))}return t.map(e=>o.a.get().getRoom(e)).filter(e=>e&&"join"===e.getMyMembership())[0]}getUserIdForRoomId(e){if(null==this.roomToUser&&this._populateRoomToUser(),void 0===this.roomToUser[e]){const t=this.matrixClient.getRoom(e);if(t)return t.getDMInviter()}return this.roomToUser[e]}getUniqueRoomsWithIndividuals(){return this.roomToUser?Object.keys(this.roomToUser).map(e=>({userId:this.getUserIdForRoomId(e),room:this.matrixClient.getRoom(e)})).filter(e=>e.userId&&e.room&&2===e.room.getInvitedAndJoinedMemberCount()).reduce((e,t)=>(e[t.userId]=t.room)&&e,{}):{}}_getUserToRooms(){if(!this.userToRooms){const e=this.mDirectEvent,t=e[this.matrixClient.getUserId()];if(t&&t.length){const t=this._patchUpSelfDMs(e);console.warn("Invalid m.direct account data detected (self-chats that shouldn't be), patching it up."),t&&!this._hasSentOutPatchDirectAccountDataPatch&&(this._hasSentOutPatchDirectAccountDataPatch=!0,this.matrixClient.setAccountData("m.direct",e))}this.userToRooms=e}return this.userToRooms}_populateRoomToUser(){this.roomToUser={};for(const e of Object.keys(this._getUserToRooms()))for(const t of this.userToRooms[e])this.roomToUser[t]=e}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"d",(function(){return s})),n.d(t,"f",(function(){return c})),n.d(t,"c",(function(){return l})),n.d(t,"e",(function(){return u})),n.d(t,"n",(function(){return d})),n.d(t,"m",(function(){return p})),n.d(t,"h",(function(){return h})),n.d(t,"g",(function(){return m})),n.d(t,"i",(function(){return g})),n.d(t,"j",(function(){return f})),n.d(t,"l",(function(){return _})),n.d(t,"k",(function(){return v}));var o=n(4),r=n(94);const i="all_messages_loud",a="all_messages",s="mentions_only",c="mute",l=[a,i],u=[...l,s];function d(e){return l.includes(e)}function p(e){return u.includes(e)}function h(e){return e.reduce((e,t,n)=>{const r=f(t.roomId),i=t.getUnreadNotificationCount("highlight")>0,a=t.getUnreadNotificationCount()>0&&d(r),s=i&&p(r),c=t.hasMembershipState(o.a.get().credentials.userId,"invite");return(a||s||c)&&(e.count++,i&&(e.highlight=!0)),e},{count:0,highlight:!1})}function m(e){return e.reduce((e,t,n)=>{const o=f(t.roomId),r=t.getUnreadNotificationCount("highlight")>0,i=t.getUnreadNotificationCount(),a=i>0&&d(o),s=r&&p(o);return(a||s)&&(e.count+=i,r&&(e.highlight=!0)),e},{count:0,highlight:!1})}function g(e){const t=f(e.roomId),n=e.getUnreadNotificationCount("highlight")>0,o=e.getUnreadNotificationCount()>0&&d(t),r=n&&p(t);return o||r}function f(e){if(o.a.get().isGuest())return a;if(b(e))return c;let t=null;try{t=o.a.get().getRoomPushRule("global",e)}catch(e){return null}if(!t||!t.enabled)return a;if(E(t))return s;return r.a.actionListToActionsObject(t.actions).tweaks.sound?i:null}function _(e,t){return t===c?function(e){const t=o.a.get(),n=[],r=t.getRoomPushRule("global",e);r&&n.push(t.deletePushRule("global","room",r.rule_id));return n.push(t.addPushRule("global","override",e,{conditions:[{kind:"event_match",key:"room_id",pattern:e}],actions:["dont_notify"]})),Promise.all(n)}(e):function(e,t){const n=o.a.get(),r=[],i=b(e);i&&r.push(n.deletePushRule("global","override",i.rule_id));if("all_messages"===t){const t=n.getRoomPushRule("global",e);t&&r.push(n.deletePushRule("global","room",t.rule_id))}else"mentions_only"===t?(r.push(n.addPushRule("global","room",e,{actions:["dont_notify"]})),r.push(n.setPushRuleEnabled("global","room",e,!0))):(r.push(n.addPushRule("global","room",e,{actions:["notify",{set_tweak:"sound",value:"default"}]})),r.push(n.setPushRuleEnabled("global","room",e,!0)));return Promise.all(r)}(e,t)}function v(e,t=null){let n=e.getUnreadNotificationCount(t);const r=e.currentState.getStateEvents("m.room.create","");if(r&&r.getContent().predecessor){const e=r.getContent().predecessor.room_id,t=o.a.get().getRoom(e);t&&(n+=t.getUnreadNotificationCount("highlight"))}return n}function b(e){if(!o.a.get().pushRules||!o.a.get().pushRules.global||!o.a.get().pushRules.global.override)return null;for(const t of o.a.get().pushRules.global.override)if(y(e,t)&&E(t)&&t.enabled)return t;return null}function y(e,t){if(1!==t.conditions.length)return!1;const n=t.conditions[0];return"event_match"===n.kind&&"room_id"===n.key&&n.pattern===e}function E(e){return 1===e.actions.length&&"dont_notify"===e.actions[0]}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var o=n(0),r=n.n(o);function i(e){const t=document.createElement("div");t.className="mx_AutoHideScrollbar",t.style.position="absolute",t.style.top="-9999px",t.style.width="100px",t.style.height="100px",t.style.overflow="scroll",e&&(t.style.overflow=e),t.style.msOverflowStyle="-ms-autohiding-scrollbar",document.body.appendChild(t);const n=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),n}const a=function(){let e=!1;return function(){e||(!function(){const e=i();if(0!==e){if(0===i("overlay"))document.body.classList.add("mx_scrollbar_overlay_noautohide");else{document.body.classList.add("mx_scrollbar_nooverlay");const t=document.createElement("style");t.type="text/css",t.innerText="body.mx_scrollbar_nooverlay { --scrollbar-width: ".concat(e,"px; }"),document.head.appendChild(t)}}}(),e=!0)}}();class s extends r.a.Component{constructor(e){super(e),this.onOverflow=this.onOverflow.bind(this),this.onUnderflow=this.onUnderflow.bind(this),this._collectContainerRef=this._collectContainerRef.bind(this),this._needsOverflowListener=null}onOverflow(){this.containerRef.classList.add("mx_AutoHideScrollbar_overflow"),this.containerRef.classList.remove("mx_AutoHideScrollbar_underflow")}onUnderflow(){this.containerRef.classList.remove("mx_AutoHideScrollbar_overflow"),this.containerRef.classList.add("mx_AutoHideScrollbar_underflow")}checkOverflow(){this._needsOverflowListener&&(this.containerRef.scrollHeight>this.containerRef.clientHeight?this.onOverflow():this.onUnderflow())}componentDidUpdate(){this.checkOverflow()}componentDidMount(){a(),this._needsOverflowListener=document.body.classList.contains("mx_scrollbar_nooverlay"),this.checkOverflow()}_collectContainerRef(e){e&&!this.containerRef&&(this.containerRef=e),this.props.wrappedRef&&this.props.wrappedRef(e)}getScrollTop(){return this.containerRef.scrollTop}render(){return r.a.createElement("div",{ref:this._collectContainerRef,style:this.props.style,className:["mx_AutoHideScrollbar",this.props.className].join(" "),onScroll:this.props.onScroll,onWheel:this.props.onWheel},r.a.createElement("div",{className:"mx_AutoHideScrollbar_offset"},this.props.children))}}},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"d",(function(){return r})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a}));const o=(e,t)=>new Promise(n=>{setTimeout(n,e,t)});async function r(e,t,n){const o=new Promise(o=>{const r=setTimeout(o,n,t);e.then(()=>{clearTimeout(r)})});return Promise.race([e,o])}function i(){let e,t;const n=new Promise((n,o)=>{e=n,t=o});return{resolve:e,reject:t,promise:n}}function a(e){return Promise.allSettled?Promise.allSettled(e):Promise.all(e.map(e=>e.then(e=>({status:"fulfilled",value:e})).catch(e=>({status:"rejected",reason:e}))))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"h",(function(){return i})),n.d(t,"e",(function(){return a})),n.d(t,"g",(function(){return s})),n.d(t,"f",(function(){return c})),n.d(t,"d",(function(){return l})),n.d(t,"i",(function(){return u})),n.d(t,"c",(function(){return d})),n.d(t,"b",(function(){return p}));var o=n(26);function r(e,t){return function(n){return function(e,t,n){const r=Object.assign({},{code:e,reason:t},n);return new o.b({type:"m.key.verification.cancel",content:r})}(e,t,n)}}const i=r("m.user","Cancelled by user"),a=r("m.timeout","Timed out"),s=(r("m.unknown_transaction","Unknown transaction"),r("m.unknown_method","Unknown method")),c=r("m.unexpected_message","Unexpected message"),l=r("m.key_mismatch","Key mismatch"),u=r("m.user_error","User mismatch"),d=r("m.invalid_message","Invalid message");function p(e){const t=e.getContent();if(t){const{code:e,reason:n}=t;return{code:e,reason:n}}return{code:"Unknown error",reason:"m.unknown"}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var o=n(0),r=n.n(o),i=n(2),a=n.n(i),s=n(14),c=n.n(s),l=n(1),u=n(269),d=n(12),p=n(228);const h={VERIFIED:"verified",WARNING:"warning",UNKNOWN:"unknown",NORMAL:"normal"},m={[h.WARNING]:Object(l.b)("This user has not verified all of their sessions."),[h.NORMAL]:Object(l.b)("You have not verified this user."),[h.VERIFIED]:Object(l.b)("You have verified this user. This user has verified all of their sessions.")},g={[h.WARNING]:Object(l.b)("Someone is using an unknown session"),[h.NORMAL]:Object(l.b)("This room is end-to-end encrypted"),[h.VERIFIED]:Object(l.b)("Everyone in this room is verified")},f={[h.WARNING]:Object(l.b)("Some sessions for this user are not trusted"),[h.VERIFIED]:Object(l.b)("All sessions for this user are trusted")},_={[h.WARNING]:Object(l.b)("Some sessions in this encrypted room are not trusted"),[h.VERIFIED]:Object(l.b)("All sessions in this encrypted room are trusted")},v=({isUser:e,status:t,className:n,size:i,onClick:a,hideTooltip:s})=>{const[v,b]=Object(o.useState)(!1),y=c()({mx_E2EIcon:!0,mx_E2EIcon_warning:t===h.WARNING,mx_E2EIcon_normal:t===h.NORMAL,mx_E2EIcon_verified:t===h.VERIFIED},n);let E;const S=Object(u.a)("feature_cross_signing");let w;S&&e?E=m[t]:S&&!e?E=g[t]:!S&&e?E=f[t]:S||e||(E=_[t]),i&&(w={width:"".concat(i,"px"),height:"".concat(i,"px")});const C=()=>b(!0),x=()=>b(!1);let T;return v&&!s&&(T=r.a.createElement(p.a,{label:E?Object(l.a)(E):""})),a?r.a.createElement(d.a,{onClick:a,onMouseOver:C,onMouseOut:x,className:y,style:w},T):r.a.createElement("div",{onMouseOver:C,onMouseOut:x,className:y,style:w},T)};v.propTypes={isUser:a.a.bool,status:a.a.oneOf(Object.values(h)),className:a.a.string,size:a.a.number,onClick:a.a.func},t.b=v},function(e,t,n){"use strict";n.d(t,"i",(function(){return k})),n.d(t,"d",(function(){return R})),n.d(t,"c",(function(){return O})),n.d(t,"a",(function(){return D})),n.d(t,"e",(function(){return I})),n.d(t,"b",(function(){return F})),n.d(t,"l",(function(){return N})),n.d(t,"f",(function(){return A})),n.d(t,"j",(function(){return j})),n.d(t,"m",(function(){return B})),n.d(t,"h",(function(){return q})),n.d(t,"g",(function(){return G})),n.d(t,"k",(function(){return V})),n.d(t,"n",(function(){return z}));var o=n(13),r=n(4),i=n(54),a=n(231),s=n(35),c=n(70),l=n(189),u=n(6),d=n(73);const p=["online","offline","unavailable"];var h=new class{constructor(){this._activitySignal=null,this._unavailableTimer=null,this._onAction=this._onAction.bind(this),this._dispatcherRef=null}async start(){for(this._unavailableTimer=new d.a(18e4),this._dispatcherRef=u.a.register(this._onAction);this._unavailableTimer;)try{await this._unavailableTimer.finished(),this.setState("unavailable")}catch(e){}}stop(){this._dispatcherRef&&(u.a.unregister(this._dispatcherRef),this._dispatcherRef=null),this._unavailableTimer&&(this._unavailableTimer.abort(),this._unavailableTimer=null)}getState(){return this.state}_onAction(e){"user_activity"===e.action&&(this.setState("online"),this._unavailableTimer.restart())}async setState(e){if(e===this.state)return;if(-1===p.indexOf(e))throw new Error("Bad presence state: "+e);const t=this.state;if(this.state=e,!r.a.get().isGuest())try{await r.a.get().setPresence(this.state),console.info("Presence: %s",e)}catch(e){console.error("Failed to set presence: %s",e),this.state=t}}},m=n(41),g=n(9),f=n(3),_=n(49),v=n(23),b=n(132),y=n(186),E=n(7),S=n(232),w=n(52),C=n(39),x=n(87),T=n(187);async function k(e){try{let t=e.enableGuest||!1;const n=e.guestHsUrl,r=e.guestIsUrl,i=e.fragmentQueryParams||{},a=e.defaultDeviceDisplayName;return t&&!n&&(console.warn("Cannot enable guest access: can't determine HS URL to use"),t=!1),t&&i.guest_user_id&&i.guest_access_token?(console.log("Using guest access credentials"),M({userId:i.guest_user_id,accessToken:i.guest_access_token,homeserverUrl:n,identityServerUrl:r,guest:!0},!0).then(()=>!0)):!!await async function(e){const t=e.ignoreGuest;if(!localStorage)return!1;const{hsUrl:n,isUrl:o,accessToken:r,userId:i,deviceId:a,isGuest:s}=F();return r&&i&&n?t&&s?(console.log("Ignoring stored guest account: "+i),!1):(console.log("Restoring session for ".concat(i)),await M({userId:i,deviceId:a,accessToken:r,homeserverUrl:n,identityServerUrl:o,guest:s},!1),!0):(console.log("No previous session found."),!1)}({ignoreGuest:Boolean(e.ignoreGuest)})||!!t&&function(e,t,n){return console.log("Doing guest login on ".concat(e)),o.u.createClient({baseUrl:e}).registerGuest({body:{initial_device_display_name:n}}).then(n=>(console.log("Registered as guest: ".concat(n.user_id)),M({userId:n.user_id,deviceId:n.device_id,accessToken:n.access_token,homeserverUrl:e,identityServerUrl:t,guest:!0},!0).then(()=>!0)),e=>(console.error("Failed to register as guest",e),!1))}(n,r,a)}catch(e){return!(e instanceof P)&&async function(e){console.error("Unable to load session",e);const t=f.a("views.dialogs.SessionRestoreErrorDialog"),n=g.a.createTrackedDialog("Session Restore Error","",t,{error:e.message}),[o]=await n.finished;if(o)return await H(),!1;return k()}(e)}}function R(){const{hsUrl:e,userId:t,accessToken:n}=F();return e&&t&&n?t:null}function O(){const e=F();return e.hsUrl&&e.userId&&e.accessToken?e.isGuest:null}function D(e,t){return e.loginToken?e.homeserver?Object(b.b)(e.homeserver,e.identityServer,"m.login.token",{token:e.loginToken,initial_device_display_name:t}).then((function(e){return console.log("Logged in with token"),H().then(()=>(L(e),!0))})).catch(e=>(console.error("Failed to log in with login token: "+e+" "+e.data),!1)):(console.warn("Cannot log in with token: can't determine HS URL to use"),Promise.resolve(!1)):Promise.resolve(!1)}function I(e){if(e.reason===o.u.InvalidStoreError.TOGGLED_LAZY_LOADING)return Promise.resolve().then(()=>{if(e.value){const e=f.a("views.dialogs.LazyLoadingResyncDialog");return new Promise(t=>{g.a.createDialog(e,{onFinished:t})})}{const e=f.a("views.dialogs.LazyLoadingDisabledDialog");return new Promise(t=>{g.a.createDialog(e,{onFinished:t,host:window.location.host})})}}).then(()=>r.a.get().store.deleteAllData()).then(()=>{v.a.get().reload()})}function F(){const e=localStorage.getItem("mx_hs_url"),t=localStorage.getItem("mx_is_url"),n=localStorage.getItem("mx_access_token"),o=localStorage.getItem("mx_user_id"),r=localStorage.getItem("mx_device_id");let i;return i=null!==localStorage.getItem("mx_is_guest")?"true"===localStorage.getItem("mx_is_guest"):"true"===localStorage.getItem("matrix-is-guest"),{hsUrl:e,isUrl:t,accessToken:n,userId:o,deviceId:r,isGuest:i}}function N(e){return z(),M(e,!0)}function A(e){const t=r.a.get().getUserId(),n=r.a.get().getDeviceId();z(),localStorage.removeItem("mx_soft_logout"),U=!1;const o=e.userId!==t||e.deviceId!==n;return o&&console.warn("Clearing all data: Old session belongs to a different user/session"),M(e,o)}async function M(e,t){e.guest=Boolean(e.guest);const n=q();console.log("setLoggedIn: mxid: "+e.userId+" deviceId: "+e.deviceId+" guest: "+e.guest+" hs: "+e.homeserverUrl+" softLogout: "+n),u.a.dispatch({action:"on_logging_in"},!0),t&&await H();const o=await y.a();if(o.dataInLocalStorage&&o.cryptoInited&&!o.dataInCryptoStore){if(await function(){const e=f.a("views.dialogs.StorageEvictedDialog");return new Promise(t=>{g.a.createTrackedDialog("Storage evicted","",e,{onFinished:t})})}())throw await H(),new P("Aborting login in progress because of storage inconsistency")}if(s.a.setLoggedIn(e.guest,e.homeserverUrl),localStorage)try{L(e),e.password&&u.a.dispatch({action:"cached_password",cachedPassword:e.password})}catch(e){console.warn("Error using local storage: can't persist session!",e)}else console.warn("No local storage available: can't persist session!");return r.a.replaceUsingCreds(e),u.a.dispatch({action:"on_logged_in"}),await async function(e=!0){console.log("Lifecycle: Starting MatrixClient"),u.a.dispatch({action:"will_start_client"},!0),c.default.start(),l.a.sharedInstance().start(),S.a.sharedInstance().reset(),w.a.sharedInstance().reset(),E.b.getValue("lowBandwidth")||h.start();m.a.makeShared().start(),C.a.sharedInstance().startWatching(),_.a.start(),x.a.sharedInstance().start(),e?(await i.a.init(),await r.a.start()):(console.warn("Caller requested only auxiliary services be started"),await r.a.assign());T.a.sharedInstance().start(),u.a.dispatch({action:"client_started"}),q()&&B()}(!n),r.a.get()}class P extends Error{}function L(e){localStorage.setItem("mx_hs_url",e.homeserverUrl),e.identityServerUrl&&localStorage.setItem("mx_is_url",e.identityServerUrl),localStorage.setItem("mx_user_id",e.userId),localStorage.setItem("mx_access_token",e.accessToken),localStorage.setItem("mx_is_guest",JSON.stringify(e.guest)),e.deviceId&&localStorage.setItem("mx_device_id",e.deviceId),console.log("Session persisted for ".concat(e.userId))}let U=!1;function j(){r.a.get()&&(r.a.get().isGuest()?V():(U=!0,r.a.get().logout().then(V,e=>{console.log("Failed to call logout API: token will not be invalidated"),V()})))}function B(){r.a.get()&&(localStorage.setItem("mx_soft_logout","true"),console.log("Soft logout initiated"),U=!0,u.a.dispatch({action:"on_client_not_viable"}),z(!1))}function q(){return"true"===localStorage.getItem("mx_soft_logout")}function G(){return U}async function V(){U=!1,u.a.dispatch({action:"on_logged_out"},!0),z(),await H()}async function H(){s.a.disable(),window.localStorage&&window.localStorage.clear();const e=Object(a.a)({baseUrl:""});await i.a.deleteEventIndex(),await e.clearStores()}function z(e=!0){c.default.stop(),l.a.sharedInstance().stop(),S.a.sharedInstance().reset(),h.stop(),_.a.stop(),C.a.sharedInstance().stopWatching(),x.a.sharedInstance().stop(),T.a.sharedInstance().stop(),m.a.shared()&&m.a.shared().stop(),i.a.stop();const t=r.a.get();t&&(t.stopClient(),t.removeAllListeners(),e&&(r.a.unset(),i.a.unset()))}},function(e,t,n){"use strict";n.d(t,"c",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"e",(function(){return s})),n.d(t,"f",(function(){return c})),n.d(t,"b",(function(){return l}));var o=n(1);function r(e){return e<1e3?e:e<1e4?(e/1e3).toFixed(1)+"K":e<1e5?(e/1e3).toFixed(0)+"K":e<1e7?(e/1e6).toFixed(1)+"M":e<1e8?(e/1e6).toFixed(0)+"M":(e/1e9).toFixed(1)+"B"}function i(e){return(new Intl.NumberFormat).format(e)}function a(e,t=2){if(0===e)return"0 Bytes";const n=t<0?0:t,o=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,o)).toFixed(n))+" "+["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"][o]}function s(e){return e.match(/.{1,4}/g).join(" ")}function c(e){const t=function(e){let t,n,o=0;if(0===e.length)return o;for(t=0;t0)return e=e.slice(0,t),Object(o.a)("%(items)s and %(count)s others",{items:e.join(", "),count:n});{const t=e.pop();return Object(o.a)("%(items)s and %(lastItem)s",{items:e.join(", "),lastItem:t})}}},function(e,t,n){"use strict";(function(e){var o=n(28),r=n.n(o),i=n(4);class a extends r.a{constructor(){super(),this._persistentWidgetId=null,this._capsByWidgetId={},this._widgetMessagingByWidgetId={},this._roomIdByWidgetId={},this.onRoomStateEvents=this.onRoomStateEvents.bind(this),this.dispatcherRef=null}start(){i.a.get().on("RoomState.events",this.onRoomStateEvents)}stop(){i.a.get()&&i.a.get().removeListener("RoomState.events",this.onRoomStateEvents),this._capsByWidgetId={},this._widgetMessagingByWidgetId={},this._roomIdByWidgetId={}}onRoomStateEvents(e,t){"im.vector.modular.widgets"===e.getType()&&e.getStateKey()===this._persistentWidgetId&&this.destroyPersistentWidget(this._persistentWidgetId)}destroyPersistentWidget(e){if(e!==this._persistentWidgetId)return;const t=this._persistentWidgetId;this.setWidgetPersistence(t,!1),this.delWidgetMessaging(t),this.delWidgetCapabilities(t),this.delRoomId(t)}setWidgetPersistence(e,t){this._persistentWidgetId!==e||t?this._persistentWidgetId!==e&&t&&(this._persistentWidgetId=e):this._persistentWidgetId=null,this.emit("update")}getWidgetPersistence(e){return this._persistentWidgetId===e}getPersistentWidgetId(){return this._persistentWidgetId}setWidgetCapabilities(e,t){this._capsByWidgetId[e]=t,this.emit("update")}widgetHasCapability(e,t){return this._capsByWidgetId[e]&&this._capsByWidgetId[e].includes(t)}delWidgetCapabilities(e){delete this._capsByWidgetId[e],this.emit("update")}setWidgetMessaging(e,t){this.delWidgetMessaging(e),this._widgetMessagingByWidgetId[e]=t,this.emit("update")}getWidgetMessaging(e){return this._widgetMessagingByWidgetId[e]}delWidgetMessaging(e){if(this._widgetMessagingByWidgetId[e]){try{this._widgetMessagingByWidgetId[e].stop()}catch(e){console.error("Failed to stop listening for widgetMessaging events",e.message)}delete this._widgetMessagingByWidgetId[e],this.emit("update")}}getRoomId(e){return this._roomIdByWidgetId[e]}setRoomId(e,t){this._roomIdByWidgetId[e]=t,this.emit("update")}delRoomId(e){delete this._roomIdByWidgetId[e],this.emit("update")}}void 0===e.singletonActiveWidgetStore&&(e.singletonActiveWidgetStore=new a),t.a=e.singletonActiveWidgetStore}).call(this,n(24))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c}));var o=n(103),r=n(6),i=n(41),a=n(128),s=n(7);const c="im.vector.fake.direct",l=["red","grey","bold","idle"],u=(e,t)=>{switch(e){case"im.vector.fake.invite":case"im.vector.fake.recent":case"im.vector.fake.archived":case"m.lowpriority":case c:return t;case"m.favourite":default:return"manual"}},d=new Set(["m.favourite","im.vector.fake.invite","im.vector.fake.recent","im.vector.fake.archived","m.lowpriority",c]);class p extends o.Store{constructor(){super(r.a),this._init(),this._getManualComparator=this._getManualComparator.bind(this),this._recentsComparator=this._recentsComparator.bind(this)}updateSortingAlgorithm(e,t){console.log("Updating room sorting algorithm: ",{algorithm:e,orderImportantFirst:t}),this._setState({algorithm:e,orderImportantFirst:t}),this._generateInitialRoomLists()}_init(){const e={"m.server_notice":[],"im.vector.fake.invite":[],"m.favourite":[],"im.vector.fake.recent":[],[c]:[],"m.lowpriority":[],"im.vector.fake.archived":[]};this._state={lists:e,presentationLists:e,ready:!1,stickyRoomId:null,algorithm:"recent",orderImportantFirst:!1},s.b.monitorSetting("RoomList.orderAlphabetically",null),s.b.monitorSetting("RoomList.orderByImportance",null),s.b.monitorSetting("feature_custom_tags",null)}_setState(e){if(e.lists){const t={};for(const n of Object.keys(e.lists))t[n]=e.lists[n].map(e=>e.room);e.presentationLists=t}this._state=Object.assign(this._state,e),this.__emitChange()}__onDispatch(e){const t=this._matrixClient&&this._state.ready;switch(e.action){case"setting_updated":if(!t)break;switch(e.settingName){case"RoomList.orderAlphabetically":this.updateSortingAlgorithm(e.newValue?"alphabetic":"recent",this._state.orderImportantFirst);break;case"RoomList.orderByImportance":this.updateSortingAlgorithm(this._state.algorithm,e.newValue);break;case"feature_custom_tags":this._setState({tagsEnabled:e.newValue}),this._generateInitialRoomLists()}break;case"MatrixActions.sync":{if("PREPARED"===e.prevState||"PREPARED"!==e.state)break;this._setState({tagsEnabled:s.b.isFeatureEnabled("feature_custom_tags")}),this._matrixClient=e.matrixClient;const t=s.b.getValue("RoomList.orderByImportance"),n=s.b.getValue("RoomList.orderAlphabetically");this.updateSortingAlgorithm(n?"alphabetic":"recent",t)}break;case"MatrixActions.Room.receipt":{if(!t)break;const n=this._matrixClient.getUserId();for(const t of Object.keys(e.event.getContent())){if(Object.keys(e.event.getContent()[t]["m.read"]||{}).includes(n))return void this._roomUpdateTriggered(e.room.roomId)}}break;case"MatrixActions.Room.tags":if(!t)break;this._generateInitialRoomLists();break;case"MatrixActions.Room.timeline":if(!(t&&e.isLiveEvent&&e.isLiveUnfilteredRoomTimelineEvent&&this._eventTriggersRecentReorder(e.event)&&"recent"===this._state.algorithm))break;this._roomUpdateTriggered(e.event.getRoomId());break;case"MatrixActions.Event.decrypted":{if(!t)break;const n=e.event.getRoomId();if(!n)break;const o=this._matrixClient.getRoom(n);if(!o)break;if(o.getLiveTimeline()!==o.getTimelineForEvent(e.event.getId())||!this._eventTriggersRecentReorder(e.event))break;this._roomUpdateTriggered(n)}break;case"MatrixActions.accountData":if(!t)break;if("m.direct"!==e.event_type)break;this._generateInitialRoomLists();break;case"MatrixActions.Room.myMembership":case"MatrixActions.Room":if(!t)break;this._roomUpdateTriggered(e.room.roomId,!0);break;case"on_client_not_viable":case"on_logged_out":this._init(),this._matrixClient=null;break;case"view_room":{if(!t)break;const n=this._state.stickyRoomId;this._setState({stickyRoomId:e.room_id}),n&&this._setRoomCategory(this._matrixClient.getRoom(n),"idle")}}}_roomUpdateTriggered(e,t){if(this._state.stickyRoomId!==e||t){const t=this._matrixClient.getRoom(e);if(!t)return;const n=this._calculateCategory(t);this._setRoomCategory(t,n)}}_filterTags(e){return e=e?Object.keys(e):[],this._state.tagsEnabled?e:e.filter(e=>d.has(e))}_getRecommendedTagsForRoom(e){const t=[],n=e.getMyMembership();if("join"===n||"invite"===n){t.push(...this._filterTags(e.tags));const o=i.a.shared();"invite"===n?t.push("im.vector.fake.invite"):o.getUserIdForRoomId(e.roomId)&&0===t.length?t.push(c):0===t.length&&t.push("im.vector.fake.recent")}else n&&t.push("im.vector.fake.archived");return t}_slotRoomIntoList(e,t,n,o,r,i){const a=l.indexOf(t);let s=(e,t)=>i(e.room)>=i(t.room);const c=u(n,this._state.algorithm);"recent"===c?s=(e,t)=>this._recentsComparator(e,t,i):"alphabetic"===c&&(s=(e,t)=>this._lexicographicalComparator(e,t));let d=0,p=!1,h=!1;for(const n of o)if(n.room.roomId!==e.roomId){if(n.room.roomId!==this._state.stickyRoomId&&!h){const o=l.indexOf(n.category);o>=a&&!p&&(d=r.length-1,p=!0);const i=o>a,c=o===a;(i||c&&s({room:e},n)<=0)&&(i?r.splice(d,0,{room:e,category:t}):r.push({room:e,category:t}),h=!0)}r.push(n)}return!h&&d>=0&&(console.warn("!! Room ".concat(e.roomId," nearly lost: Ran off the end of ").concat(n)),console.warn("!! Inserting at position ".concat(d," with category ").concat(t)),r.splice(d,0,{room:e,category:t}),h=!0),h}_setRoomCategory(e,t){if(!e)return;const n={},o={},r=e=>(o[e.roomId]||(o[e.roomId]=this._tsOfNewestEvent(e)),o[e.roomId]),i=this._getRecommendedTagsForRoom(e),a=[];for(const o of Object.keys(this._state.lists)){if(i.includes(o))if("manual"===u(o,this._state.algorithm))n[o]=this._state.lists[o].filter(t=>t.room.roomId!==e.roomId),n[o].push({room:e,category:t}),a.push(o);else{n[o]=[],this._slotRoomIntoList(e,t,o,this._state.lists[o],n[o],r)||(console.warn("!! Room ".concat(e.roomId," nearly lost: Failed to find a position")),console.warn("!! Inserting at position 0 in the list and flagging as inserted"),console.warn("!! Additional info: ",{category:t,key:o,upToIndex:n[o].length,expectedCount:this._state.lists[o].length}),n[o].splice(0,0,{room:e,category:t})),a.push(o)}else n[o]=this._state.lists[o].filter(t=>t.room.roomId!==e.roomId)}for(const o of i){let r=0;for(const e of a)e===o&&r++;1!==r&&console.warn("!! Room ".concat(e.roomId," inserted ").concat(r," times to ").concat(o)),0===r&&(console.warn("!! Recovering ".concat(e.roomId," for tag ").concat(o," at position 0")),n[o]||(console.warn("!! List for tag ".concat(o," does not exist - creating")),n[o]=[]),n[o].splice(0,0,{room:e,category:t}))}for(const e of Object.keys(n))"manual"===u(e,this._state.algorithm)&&n[e].sort(this._getManualComparator(e));this._setState({lists:n})}_generateInitialRoomLists(){console.log("Generating initial room lists");const e={"m.server_notice":[],"im.vector.fake.invite":[],"m.favourite":[],"im.vector.fake.recent":[],[c]:[],"m.lowpriority":[],"im.vector.fake.archived":[]},t=i.a.shared();this._matrixClient.getRooms().forEach(n=>{const o=this._matrixClient.getUserId(),r=n.getMyMembership(),i=n.getMember(o);if("invite"===r)e["im.vector.fake.invite"].push({room:n,category:"red"});else if("join"===r||"ban"===r||i&&i.isKicked()){let o=Object.keys(n.tags);if(o=o.filter(t=>void 0!==e[t]||!t.startsWith("m.")&&this._state.tagsEnabled),o.length)for(let t=0;t{if(!e)return Number.MAX_SAFE_INTEGER;if(n[e.roomId])return n[e.roomId];const t=this._tsOfNewestEvent(e);return n[e.roomId]=t,t};Object.keys(e).forEach(t=>{let n;switch(u(t,this._state.algorithm)){case"recent":n=(e,t)=>this._recentsComparator(e,t,o);break;case"alphabetic":n=this._lexicographicalComparator;break;case"manual":default:n=this._getManualComparator(t)}this._state.orderImportantFirst?e[t].sort((e,t)=>{if(e.category!==t.category){const n=l.indexOf(e.category),o=l.indexOf(t.category);return n>o?1:n=0;--t){const n=e.timeline[t];if(this._eventTriggersRecentReorder(n))return n.getTs()}return e.timeline.length&&e.timeline[0].getTs()?e.timeline[0].getTs():Number.MAX_SAFE_INTEGER}_calculateCategory(e){if(!this._state.orderImportantFirst)return"idle";if(e.getUnreadNotificationCount("highlight")>0)return"red";let t=e.getUnreadNotificationCount()>0;return t?"grey":(t=a.a(e),t?"bold":"idle")}_recentsComparator(e,t,n){const o=n(e.room);return n(t.room)-o}_lexicographicalComparator(e,t){return e.room.name.localeCompare(t.room.name)}_getManualComparator(e,t){return(n,o)=>{const r=n.room,i=o.room;let a=r.tags[e],s=i.tags[e];t&&r===t.room&&(a=t.metaData),t&&i===t.room&&(s=t.metaData);const c=a?Number(a.order):void 0,l=s?Number(s.order):void 0;return void 0===c&&void 0!==l?1:void 0!==c&&void 0===l?-1:c===l?this._lexicographicalComparator(n,o):c>l?1:-1}}getRoomLists(){return this._state.presentationLists}}void 0===e.singletonRoomListStore&&(e.singletonRoomListStore=new p),t.b=e.singletonRoomListStore}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"c",(function(){return l})),n.d(t,"b",(function(){return u})),n.d(t,"d",(function(){return p})),n.d(t,"e",(function(){return h}));var o=n(1);function r(){return[Object(o.a)("Sun"),Object(o.a)("Mon"),Object(o.a)("Tue"),Object(o.a)("Wed"),Object(o.a)("Thu"),Object(o.a)("Fri"),Object(o.a)("Sat")]}function i(){return[Object(o.a)("Jan"),Object(o.a)("Feb"),Object(o.a)("Mar"),Object(o.a)("Apr"),Object(o.a)("May"),Object(o.a)("Jun"),Object(o.a)("Jul"),Object(o.a)("Aug"),Object(o.a)("Sep"),Object(o.a)("Oct"),Object(o.a)("Nov"),Object(o.a)("Dec")]}function a(e){return(e<10?"0":"")+e}function s(e,t=!1){let n=e.getHours()%12;const r=a(e.getMinutes()),i=e.getHours()>=12?Object(o.a)("PM"):Object(o.a)("AM");if(n=n||12,t){const t=a(e.getSeconds());return"".concat(n,":").concat(r,":").concat(t).concat(i)}return"".concat(n,":").concat(r).concat(i)}function c(e,t=!1){const n=new Date,a=r(),s=i();return e.toDateString()===n.toDateString()?p(e,t):n.getTime()-e.getTime()<5184e5?Object(o.a)("%(weekDayName)s %(time)s",{weekDayName:a[e.getDay()],time:p(e,t)}):n.getFullYear()===e.getFullYear()?Object(o.a)("%(weekDayName)s, %(monthName)s %(day)s %(time)s",{weekDayName:a[e.getDay()],monthName:s[e.getMonth()],day:e.getDate(),time:p(e,t)}):u(e,t)}function l(e){const t=r(),n=i();return Object(o.a)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",{weekDayName:t[e.getDay()],monthName:n[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear()})}function u(e,t=!1){const n=r(),a=i();return Object(o.a)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",{weekDayName:n[e.getDay()],monthName:a[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear(),time:d(e,t)})}function d(e,t=!1){return t?s(e,!0):a(e.getHours())+":"+a(e.getMinutes())+":"+a(e.getSeconds())}function p(e,t=!1){return t?s(e):a(e.getHours())+":"+a(e.getMinutes())}function h(e,t){return!(!t||!e)&&(Math.abs(e.getTime()-t.getTime())>864e5||e.getDay()!==t.getDay())}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return s}));var o=n(5),r=n.n(o),i=n(28),a=n.n(i);class s extends a.a{static sharedInstance(){return e.mx_ToastStore||(e.mx_ToastStore=new s),e.mx_ToastStore}constructor(){super(),this._dispatcherRef=null,this._toasts=[]}reset(){this._toasts=[]}addOrReplaceToast(e){void 0===e.priority&&(e.priority=s.PRIORITY_DEFAULT);const t=this._toasts.findIndex(t=>t.key===e.key);-1===t?e.priority?this._toasts.unshift(e):this._toasts.push(e):this._toasts[t]=e,this.emit("update")}dismissToast(e){this._toasts=this._toasts.filter(t=>t.key!==e),this.emit("update")}getToasts(){return this._toasts}}r()(s,"PRIORITY_REALTIME",1),r()(s,"PRIORITY_DEFAULT",0)}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"e",(function(){return s})),n.d(t,"d",(function(){return c})),n.d(t,"g",(function(){return l})),n.d(t,"c",(function(){return u})),n.d(t,"f",(function(){return d})),n.d(t,"a",(function(){return p})),n.d(t,"b",(function(){return m}));var o=n(5),r=n.n(o),i=n(190),a=n(4);const s="m.room.rule.user",c="m.room.rule.server",l=[s,"org.matrix.mjolnir.rule.user"],u=["m.room.rule.room","org.matrix.mjolnir.rule.room"],d=[c,"org.matrix.mjolnir.rule.server"],p=[...l,...u,...d];function h(e,t=!0){return l.includes(e)?t?l[l.length-1]:s:u.includes(e)?t?u[u.length-1]:"m.room.rule.room":d.includes(e)?t?d[d.length-1]:c:null}class m{constructor(e){r()(this,"_rules",[]),r()(this,"_roomId",void 0),this._roomId=e,this.updateList()}get roomId(){return this._roomId}get serverRules(){return this._rules.filter(e=>e.kind===c)}get userRules(){return this._rules.filter(e=>e.kind===s)}get roomRules(){return this._rules.filter(e=>"m.room.rule.room"===e.kind)}async banEntity(e,t,n){await a.a.get().sendStateEvent(this._roomId,h(e,!0),{entity:t,reason:n,recommendation:Object(i.c)(i.b,!0)},"rule:"+t),this._rules.push(new i.a(t,i.b,n,h(e,!1)))}async unbanEntity(e,t){await a.a.get().sendStateEvent(this._roomId,h(e,!0),{},"rule:"+t),this._rules=this._rules.filter(n=>n.kind!==h(e,!1)||n.entity!==t)}updateList(){this._rules=[];const e=a.a.get().getRoom(this._roomId);if(e)for(const t of p){const n=e.currentState.getStateEvents(t,void 0);for(const e of n){if(!e.getStateKey())continue;const n=h(t,!1),o=e.getContent().entity,r=e.getContent().recommendation,a=e.getContent().reason;o&&r&&a&&this._rules.push(new i.a(o,r,a,n))}}}}},function(e,t,n){"use strict";(function(e){var o=n(23),r=n(739),i=n(7);class a{constructor(){this.index=null,this._supportIsInstalled=!1}async init(){if(!i.b.isFeatureEnabled("feature_event_indexing"))return!1;const e=o.a.get().getEventIndexingManager();return e?(this._supportIsInstalled=await e.supportsEventIndexing(),this.supportIsInstalled()?i.b.getValueAt(i.a.DEVICE,"enableEventIndexing")?this.initEventIndex():(console.log("EventIndex: Event indexing is disabled, not initializing"),!1):(console.log("EventIndex: Event indexing isn't installed for the platform, not initializing."),!1)):(console.log("EventIndex: Platform doesn't support event indexing, not initializing."),!1)}async initEventIndex(){const e=new r.a;try{await e.init()}catch(e){return console.log("EventIndex: Error initializing the event index",e),!1}return this.index=e,!0}platformHasSupport(){return null!==o.a.get().getEventIndexingManager()}supportIsInstalled(){return this._supportIsInstalled}get(){return this.index}start(){null!==this.index&&this.index.startCrawler()}stop(){null!==this.index&&this.index.stopCrawler()}async unset(){null!==this.index&&(await this.index.close(),this.index=null)}async deleteEventIndex(){const e=o.a.get().getEventIndexingManager();null!==e&&(await this.unset(),console.log("EventIndex: Deleting event index."),await e.deleteEventIndex())}}e.mxEventIndexPeg||(e.mxEventIndexPeg=new a),t.a=e.mxEventIndexPeg}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var o=n(10);function r(e,t,n,r,i,a){if("string"!=typeof t||!t)return"";if(0!==t.indexOf("mxc://"))return a?t:"";let s=t.slice(6),c="/_matrix/media/r0/download/";const l={};n&&(l.width=Math.round(n)),r&&(l.height=Math.round(r)),i&&(l.method=i),o.t(l).length>0&&(c="/_matrix/media/r0/thumbnail/");const u=s.indexOf("#");let d="";return u>=0&&(d=s.substr(u),s=s.substr(0,u)),e+c+s+(0===o.t(l).length?"":"?"+o.e(l))+d}function i(e,t,n,r){if(!t)return null;n||(n=96),r||(r=96);const i={width:n,height:r};return e+o.f("/_matrix/media/unstable/identicon/$ident",{$ident:t})+(0===o.t(i).length?"":"?"+o.e(i))}},function(e,t,n){var o,r,i;r=[],void 0===(i="function"==typeof(o=function(){var e=XMLHttpRequest;if(!e)throw new Error("missing XMLHttpRequest");function t(i,a){if("function"!=typeof a)throw new Error("Bad callback given: "+a);if(!i)throw new Error("No options given");var s=i.onResponse;if((i="string"==typeof i?{uri:i}:JSON.parse(JSON.stringify(i))).onResponse=s,i.verbose&&(t.log=function(){var e,t,n={},i=["trace","debug","info","warn","error"];for(t=0;t>18&63,i=c>>12&63,a=c>>6&63,s=63&c,h[d++]=l.charAt(r)+l.charAt(i)+l.charAt(a)+l.charAt(s)}while(u299)&&o.error){for(var r in e=new Error("CouchDB error: "+(o.error.reason||o.error.error)),o)e[r]=o[r];return n(e,t,o)}return n(e,t,o)}))},t})?o.apply(t,r):o)||(e.exports=i)},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(133);class u extends a.a.Component{render(){let e=a.a.createElement("span",{className:"mx_SettingsFlag_label"},this.props.label),t=a.a.createElement(l.a,{checked:this.props.value,disabled:this.props.disabled,onChange:this.props.onChange,"aria-label":this.props.label});if(this.props.toggleInFront){const n=e;e=t,t=n}return a.a.createElement("div",{className:"mx_SettingsFlag"},e,t)}}r()(u,"propTypes",{value:c.a.bool.isRequired,onChange:c.a.func.isRequired,label:c.a.string.isRequired,disabled:c.a.bool,toggleInFront:c.a.bool})},function(e,t,n){"use strict";(function(e){var o=n(4),r=n(23),i=n(9),a=n(3),s=n(1),c=n(13),l=n(6),u=n(16),d=n(163),p=n(34),h=n(80),m=n(7),g=n(732);e.mxCalls={};const f=e.mxCalls;let _=null;const v={};function b(e){const t=document.getElementById(e);if(t){const n=async()=>{try{await t.play()}catch(e){console.log("Unable to play audio clip",e)}};v[e]?v[e]=v[e].then(()=>(t.load(),n())):v[e]=n()}}function y(e){const t=document.getElementById(e);t&&(v[e]?v[e]=v[e].then(()=>t.pause()):v[e]=t.pause())}function E(e){e.on("error",(function(t){if(console.error("Call error:",t),"unknown_devices"===t.code){const t=a.a("dialogs.QuestionDialog");i.a.createTrackedDialog("Call Failed","",t,{title:Object(s.a)("Call Failed"),description:Object(s.a)("There are unknown sessions in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call."),button:Object(s.a)("Review Sessions"),onFinished:function(t){if(t){const t=o.a.get().getRoom(e.roomId);Object(d.c)(o.a.get(),t,()=>{!function(e){"outbound"===e.direction?l.a.dispatch({action:"place_call",room_id:e.roomId,type:e.type}):e.answer()}(e)},"outbound"===e.direction?Object(s.a)("Call Anyway"):Object(s.a)("Answer Anyway"),"outbound"===e.direction?Object(s.a)("Call"):Object(s.a)("Answer"))}}})}else{if(0===o.a.get().getTurnServers().length&&null===m.b.getValue("fallbackICEServerAllowed"))return void function(){const e=o.a.get(),t=a.a("dialogs.QuestionDialog"),n=e=>React.createElement("code",null,e);i.a.createTrackedDialog("No TURN servers","",t,{title:Object(s.a)("Call failed due to misconfigured server"),description:React.createElement("div",null,React.createElement("p",null,Object(s.a)("Please ask the administrator of your homeserver (%(homeserverDomain)s) to configure a TURN server in order for calls to work reliably.",{homeserverDomain:e.getDomain()},{code:n})),React.createElement("p",null,Object(s.a)("Alternatively, you can try to use the public server at turn.matrix.org, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings.",null,{code:n}))),button:Object(s.a)("Try using turn.matrix.org"),cancelButton:Object(s.a)("OK"),onFinished:t=>{m.b.setValue("fallbackICEServerAllowed",null,m.a.DEVICE,t),e.setFallbackICEServerAllowed(t)}},null,!0)}();const e=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Call Failed","",e,{title:Object(s.a)("Call Failed"),description:t.message})}})),e.on("hangup",(function(){S(void 0,e.roomId,"ended")})),e.on("state",(function(t,n){if("ringing"===t)S(e,e.roomId,"ringing"),y("ringbackAudio");else if("invite_sent"===t)S(e,e.roomId,"ringback"),b("ringbackAudio");else if("ended"===t&&"connected"===n)S(void 0,e.roomId,"ended"),y("ringbackAudio"),b("callendAudio");else if("ended"===t&&"invite_sent"===n&&("remote"===e.hangupParty||"local"===e.hangupParty&&"invite_timeout"===e.hangupReason)){S(e,e.roomId,"busy"),y("ringbackAudio"),b("busyAudio");const t=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Call Handler","Call Timeout",t,{title:Object(s.a)("Call Timeout"),description:Object(s.a)("The remote side failed to pick up")+"."})}else"invite_sent"===n?(S(e,e.roomId,"stop_ringback"),y("ringbackAudio")):"ringing"===n?(S(e,e.roomId,"stop_ringing"),y("ringbackAudio")):"connected"===t&&(S(e,e.roomId,"connected"),y("ringbackAudio"))}))}function S(e,t,n){console.log("Call state in ".concat(t," changed to ").concat(n," (").concat(e?e.call_state:"-",")")),f[t]=e,"ringing"===n?b("ringAudio"):e&&"ringing"===e.call_state&&y("ringAudio"),e&&(e.call_state=n),l.a.dispatch({action:"call_state",room_id:t,state:n})}e.mxCallHandler||(l.a.register((function(e){switch(e.action){case"place_call":{if(w.getAnyActiveCall()){const e=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Call Handler","Existing Call",e,{title:Object(s.a)("Existing Call"),description:Object(s.a)("You are already in a call.")})}if(!o.a.get().supportsVoip()){const e=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Call Handler","VoIP is unsupported",e,{title:Object(s.a)("VoIP is unsupported"),description:Object(s.a)("You cannot place VoIP calls in this browser.")})}const t=o.a.get().getRoom(e.room_id);if(!t)return void console.error("Room %s does not exist.",e.room_id);const n=t.getJoinedMembers();if(n.length<=1){const e=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Call Handler","Cannot place call with self",e,{description:Object(s.a)("You cannot place a call with yourself.")})}if(2===n.length){console.info("Place %s call in %s",e.type,e.room_id),function(t){if(E(t),"voice"===e.type)t.placeVoiceCall();else if("video"===e.type)t.placeVideoCall(e.remote_element,e.local_element);else if("screensharing"===e.type){const n=r.a.get().screenCaptureErrorString();if(n){S(void 0,t.roomId,"ended"),console.log("Can't capture screen: "+n);const e=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Call Handler","Unable to capture screen",e,{title:Object(s.a)("Unable to capture screen"),description:n})}t.placeScreenSharingCall(e.remote_element,e.local_element)}else console.error("Unknown conf call type: %s",e.type)}(c.u.createNewMatrixCall(o.a.get(),e.room_id))}else l.a.dispatch({action:"place_conference_call",room_id:e.room_id,type:e.type,remote_element:e.remote_element,local_element:e.local_element})}break;case"place_conference_call":console.info("Place conference call in %s",e.room_id),async function(e,t){l.a.dispatch({action:"appsDrawer",show:!0});const n=o.a.get().getRoom(e),r=p.a.getRoomWidgets(n);if(h.a.roomHasPendingWidgetsOfType(e,r,"jitsi")){const e=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Call already in progress","",e,{title:Object(s.a)("Call in Progress"),description:Object(s.a)("A call is currently being placed!")})}if(r.filter(e=>"jitsi"===e.getContent().type).length>0){console.warn("Refusing to start conference call widget in "+e+" a conference call widget is already present");const t=a.a("dialogs.ErrorDialog");return void i.a.createTrackedDialog("Already have Jitsi Widget","",t,{title:Object(s.a)("Call in Progress"),description:Object(s.a)("A call is already in progress!")})}const c="JitsiConference".concat(Object(g.a)()),d=u.a.get().jitsi.preferredDomain;let m=p.a.getLocalJitsiWrapperUrl();const f=new URL(m);f.search="",f.searchParams.set("confId",c),m=f.toString();const _={conferenceId:c,isAudioOnly:"voice"===t,domain:d},v="jitsi_"+o.a.get().credentials.userId+"_"+Date.now();p.a.setRoomWidget(e,v,"jitsi",m,"Jitsi",_).then(()=>{console.log("Jitsi widget added")}).catch(e=>{if("M_FORBIDDEN"===e.errcode){const e=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Call Failed","",e,{title:Object(s.a)("Permission Required"),description:Object(s.a)("You do not have permission to start a conference call in this room")})}console.error(e)})}(e.room_id,e.type);break;case"incoming_call":{if(w.getAnyActiveCall())return;if(!o.a.get().supportsVoip())return;const t=e.call;E(t),S(t,t.roomId,"ringing")}break;case"hangup":if(!f[e.room_id])return;f[e.room_id].hangup(),S(null,e.room_id,"ended");break;case"answer":if(!f[e.room_id])return;f[e.room_id].answer(),S(f[e.room_id],e.room_id,"connected"),l.a.dispatch({action:"view_room",room_id:e.room_id})}})),navigator.mediaSession&&(navigator.mediaSession.setActionHandler("play",(function(){})),navigator.mediaSession.setActionHandler("pause",(function(){})),navigator.mediaSession.setActionHandler("seekbackward",(function(){})),navigator.mediaSession.setActionHandler("seekforward",(function(){})),navigator.mediaSession.setActionHandler("previoustrack",(function(){})),navigator.mediaSession.setActionHandler("nexttrack",(function(){}))));const w={getCallForRoom:function(e){let t=w.getCall(e);return t||(_&&(t=_.getConferenceCallForRoom(e)),t||null)},getCall:function(e){return f[e]||null},getAnyActiveCall:function(){const e=Object.keys(f);for(let t=0;t{e.otherUserId===s.a.get().getUserId()&&(this.verificationRequest&&this.verificationRequest.off("change",this.onVerificationRequestChange),this.verificationRequest=e,await e.accept(),e.on("change",this.onVerificationRequestChange),this.emit("update"))}),r()(this,"onVerificationRequestChange",()=>{this.verificationRequest.cancelled&&(this.verificationRequest.off("change",this.onVerificationRequestChange),this.verificationRequest=null,this.emit("update"))})}static sharedInstance(){return e.mx_SetupEncryptionStore||(e.mx_SetupEncryptionStore=new m),e.mx_SetupEncryptionStore}start(){this._started||(this._started=!0,this.phase=l,this.verificationRequest=null,this.backupInfo=null,s.a.get().on("crypto.verification.request",this.onVerificationRequest))}stop(){this._started&&(this._started=!1,this.verificationRequest&&this.verificationRequest.off("change",this.onVerificationRequestChange),s.a.get()&&s.a.get().removeListener("crypto.verification.request",this.onVerificationRequest))}async usePassPhrase(){this.phase=u,this.emit("update");const e=s.a.get();try{const t=await e.getKeyBackupVersion();this.backupInfo=t,this.emit("update"),await new Promise((n,o)=>{try{Object(c.b)(async()=>{await e.checkOwnCrossSigningTrust(),n(),t&&await e.restoreKeyBackupWithSecretStorage(t)}).catch(o)}catch(e){console.error(e),o(e)}}),e.getCrossSigningId()&&(this.phase=d,this.emit("update"))}catch(e){e instanceof c.a||console.log(e),this.phase=l,this.emit("update")}}skip(){this.phase=p,this.emit("update")}skipConfirm(){this.phase=h,this.emit("update")}returnAfterSkip(){this.phase=l,this.emit("update")}done(){this.phase=h,this.emit("update")}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return x}));var o=n(13),r=n(1),i=n(121),a=n(4),s=n(94);function c(){const e=new s.a(a.a.get()).getPushRuleById(".m.rule.master");return e?!e.enabled:(console.warn("No master push rule! Notifications are disabled for this user."),!1)}function l(){let e=n(70);return e.default&&(e=e.default),e}class u extends i.a{getValueOverride(e,t,n,o){return!!l().isPossible()&&(null===n||"default"===o?c():n)}onChange(e,t,n){l().supportsDesktopNotifications()&&l().setEnabled(n)}}class d extends i.a{getValueOverride(e,t,n){return!!l().isPossible()&&(null===n?c():n)}}class p extends i.a{getValueOverride(e,t,n){return!!l().isPossible()&&n}}var h=n(6);class m extends i.a{onChange(e,t,n){h.a.dispatch({action:"feature_custom_status_changed"})}}var g=n(115);var f=n(23);class _ extends i.a{onChange(e,t,n){f.a.get().reload()}}var v=n(20);const b=["device","room-device","room-account","account","config"],y=["device","room-device","room-account","account","config","room"],E=["device","account","config"],S=["device","config"],w=["device"],C=["device","config"],x={feature_pinning:{isFeature:!0,displayName:Object(r.b)("Message Pinning"),supportedLevels:S,default:!1},feature_custom_status:{isFeature:!0,displayName:Object(r.b)("Custom user status messages"),supportedLevels:S,default:!1,controller:new m},feature_custom_tags:{isFeature:!0,displayName:Object(r.b)("Group & filter rooms by custom tags (refresh to apply changes)"),supportedLevels:S,default:!1},feature_state_counters:{isFeature:!0,displayName:Object(r.b)("Render simple counters in room header"),supportedLevels:S,default:!1},feature_many_integration_managers:{isFeature:!0,displayName:Object(r.b)("Multiple integration managers"),supportedLevels:S,default:!1},feature_mjolnir:{isFeature:!0,displayName:Object(r.b)("Try out new ways to ignore people (experimental)"),supportedLevels:S,default:!1},feature_presence_in_room_list:{isFeature:!0,displayName:Object(r.b)("Show a presence dot next to DMs in the room list"),supportedLevels:S,default:!1},feature_custom_themes:{isFeature:!0,displayName:Object(r.b)("Support adding custom themes"),supportedLevels:S,default:!1},mjolnirRooms:{supportedLevels:["account"],default:[]},mjolnirPersonalRoom:{supportedLevels:["account"],default:null},feature_cross_signing:{isFeature:!0,displayName:Object(r.b)("Enable cross-signing to verify per-user instead of per-session (in development)"),supportedLevels:S,default:!1},feature_event_indexing:{isFeature:!0,supportedLevels:S,displayName:Object(r.b)("Enable local event indexing and E2EE search (requires restart)"),default:!1},feature_bridge_state:{isFeature:!0,supportedLevels:S,displayName:Object(r.b)("Show info about bridges in room settings"),default:!1},feature_invite_only_padlocks:{isFeature:!0,supportedLevels:S,displayName:Object(r.b)("Show padlocks on invite only rooms"),default:!0},"MessageComposerInput.suggestEmoji":{supportedLevels:E,displayName:Object(r.b)("Enable Emoji suggestions while typing"),default:!0,invertedSettingName:"MessageComposerInput.dontSuggestEmoji"},useCompactLayout:{supportedLevels:E,displayName:Object(r.b)("Use compact timeline layout"),default:!1},showRedactions:{supportedLevels:y,displayName:Object(r.b)("Show a placeholder for removed messages"),default:!0,invertedSettingName:"hideRedactions"},showJoinLeaves:{supportedLevels:y,displayName:Object(r.b)("Show join/leave messages (invites/kicks/bans unaffected)"),default:!0,invertedSettingName:"hideJoinLeaves"},showAvatarChanges:{supportedLevels:y,displayName:Object(r.b)("Show avatar changes"),default:!0,invertedSettingName:"hideAvatarChanges"},showDisplaynameChanges:{supportedLevels:y,displayName:Object(r.b)("Show display name changes"),default:!0,invertedSettingName:"hideDisplaynameChanges"},showReadReceipts:{supportedLevels:b,displayName:Object(r.b)("Show read receipts sent by other users"),default:!0,invertedSettingName:"hideReadReceipts"},showTwelveHourTimestamps:{supportedLevels:E,displayName:Object(r.b)("Show timestamps in 12 hour format (e.g. 2:30pm)"),default:!1},alwaysShowTimestamps:{supportedLevels:E,displayName:Object(r.b)("Always show message timestamps"),default:!1},autoplayGifsAndVideos:{supportedLevels:E,displayName:Object(r.b)("Autoplay GIFs and videos"),default:!1},alwaysShowEncryptionIcons:{supportedLevels:E,displayName:Object(r.b)("Always show encryption icons"),default:!0},showRoomRecoveryReminder:{supportedLevels:E,displayName:Object(r.b)("Show a reminder to enable Secure Message Recovery in encrypted rooms"),default:!0},enableSyntaxHighlightLanguageDetection:{supportedLevels:E,displayName:Object(r.b)("Enable automatic language detection for syntax highlighting"),default:!1},"Pill.shouldShowPillAvatar":{supportedLevels:E,displayName:Object(r.b)("Show avatars in user and room mentions"),default:!0,invertedSettingName:"Pill.shouldHidePillAvatar"},"TextualBody.enableBigEmoji":{supportedLevels:E,displayName:Object(r.b)("Enable big emoji in chat"),default:!0,invertedSettingName:"TextualBody.disableBigEmoji"},"MessageComposerInput.isRichTextEnabled":{supportedLevels:E,default:!1},"MessageComposer.showFormatting":{supportedLevels:E,default:!1},sendTypingNotifications:{supportedLevels:E,displayName:Object(r.b)("Send typing notifications"),default:!0,invertedSettingName:"dontSendTypingNotifications"},showTypingNotifications:{supportedLevels:E,displayName:Object(r.b)("Show typing notifications"),default:!0},"MessageComposerInput.autoReplaceEmoji":{supportedLevels:E,displayName:Object(r.b)("Automatically replace plain text Emoji"),default:!1},"VideoView.flipVideoHorizontally":{supportedLevels:E,displayName:Object(r.b)("Mirror local video feed"),default:!1},"TagPanel.enableTagPanel":{supportedLevels:E,displayName:Object(r.b)("Enable Community Filter Panel"),default:!0,invertedSettingName:"TagPanel.disableTagPanel"},theme:{supportedLevels:E,default:"light",controller:new g.a},custom_themes:{supportedLevels:E,default:[]},use_system_theme:{supportedLevels:w,default:!0,displayName:Object(r.b)("Match system theme")},webRtcAllowPeerToPeer:{supportedLevels:C,displayName:Object(r.b)("Allow Peer-to-Peer for 1:1 calls"),default:!0,invertedSettingName:"webRtcForceTURN"},webrtc_audiooutput:{supportedLevels:w,default:null},webrtc_audioinput:{supportedLevels:w,default:null},webrtc_videoinput:{supportedLevels:w,default:null},language:{supportedLevels:C,default:"en"},breadcrumb_rooms:{supportedLevels:["account"],default:[]},room_directory_servers:{supportedLevels:["account"],default:[]},integrationProvisioning:{supportedLevels:["account"],default:!0},allowedWidgets:{supportedLevels:["room-account"],default:{}},analyticsOptIn:{supportedLevels:C,displayName:Object(r.b)("Send analytics data"),default:!1},showCookieBar:{supportedLevels:C,default:!0},autocompleteDelay:{supportedLevels:C,default:200},readMarkerInViewThresholdMs:{supportedLevels:C,default:3e3},readMarkerOutOfViewThresholdMs:{supportedLevels:C,default:3e4},blacklistUnverifiedDevices:{supportedLevels:["room-device","device"],supportedLevelsAreOrdered:!0,displayName:{default:Object(r.b)("Never send encrypted messages to unverified sessions from this session"),"room-device":Object(r.b)("Never send encrypted messages to unverified sessions in this room from this session")},default:!1},urlPreviewsEnabled:{supportedLevels:y,displayName:{default:Object(r.b)("Enable inline URL previews by default"),"room-account":Object(r.b)("Enable URL previews for this room (only affects you)"),room:Object(r.b)("Enable URL previews by default for participants in this room")},default:!0},urlPreviewsEnabled_e2ee:{supportedLevels:["room-device","room-account"],displayName:{"room-account":Object(r.b)("Enable URL previews for this room (only affects you)")},default:!1},roomColor:{supportedLevels:y,displayName:Object(r.b)("Room Colour"),default:{primary_color:null,secondary_color:null}},notificationsEnabled:{supportedLevels:w,default:!1,controller:new u},notificationSound:{supportedLevels:["room-account","account"],default:!1},notificationBodyEnabled:{supportedLevels:w,default:!0,controller:new d},audioNotificationsEnabled:{supportedLevels:w,default:!0,controller:new p},enableWidgetScreenshots:{supportedLevels:E,displayName:Object(r.b)("Enable widget screenshots on supported widgets"),default:!1},"PinnedEvents.isOpen":{supportedLevels:["room-device"],default:!1},promptBeforeInviteUnknownUsers:{supportedLevels:E,displayName:Object(r.b)("Prompt before sending invites to potentially invalid matrix IDs"),default:!0},showDeveloperTools:{supportedLevels:E,displayName:Object(r.b)("Show developer tools"),default:!1},widgetOpenIDPermissions:{supportedLevels:w,default:{allow:[],deny:[]}},"RoomList.orderAlphabetically":{supportedLevels:E,displayName:Object(r.b)("Order rooms by name"),default:!1},"RoomList.orderByImportance":{supportedLevels:E,displayName:Object(r.b)("Show rooms with unread notifications first"),default:!0},breadcrumbs:{supportedLevels:E,displayName:Object(r.b)("Show shortcuts to recently viewed rooms above the room list"),default:!0},showHiddenEventsInTimeline:{displayName:Object(r.b)("Show hidden events in timeline"),supportedLevels:w,default:!1},lowBandwidth:{supportedLevels:C,displayName:Object(r.b)("Low bandwidth mode"),default:!1,controller:new _},fallbackICEServerAllowed:{supportedLevels:w,displayName:Object(r.b)("Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)"),default:null},sendReadReceipts:{supportedLevels:b,displayName:Object(r.b)("Send read receipts for messages (requires compatible homeserver to disable)"),default:!0},showImages:{supportedLevels:E,displayName:Object(r.b)("Show previews/thumbnails for images"),default:!0},showRightPanelInRoom:{supportedLevels:w,default:!1},showRightPanelInGroup:{supportedLevels:w,default:!1},lastRightPanelPhaseForRoom:{supportedLevels:w,default:v.a.RoomMemberInfo},lastRightPanelPhaseForGroup:{supportedLevels:w,default:v.a.GroupMemberList},enableEventIndexing:{supportedLevels:w,displayName:Object(r.b)("Enable message search in encrypted rooms"),default:!0},keepSecretStoragePassphraseForSession:{supportedLevels:["device","config"],displayName:Object(r.b)("Keep secret storage passphrase in memory for this session"),default:!1},crawlerSleepTime:{supportedLevels:w,displayName:Object(r.b)("How fast should messages be downloaded."),default:3e3},showCallButtonsInComposer:{supportedLevels:C,default:!0},"e2ee.manuallyVerifyAllSessions":{supportedLevels:w,displayName:Object(r.b)("Manually verify all remote sessions"),default:!1,controller:new class{constructor(e,t){this._setter=e,this._inverse=t}getValueOverride(e,t,n,o){return null}onChange(e,t,n){this._setter.call(a.a.get(),this._inverse?!n:n)}}(o.j.prototype.setCryptoTrustCrossSignedDevices,!0)}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return p})),n.d(t,"d",(function(){return h})),n.d(t,"a",(function(){return m})),n.d(t,"c",(function(){return g}));var o=n(4),r=n(9),i=n(3),a=n(1),s=n(6),c=n(95),l=n(41),u=n(74),d=n(7);function p(e){void 0===(e=e||{}).spinner&&(e.spinner=!0),void 0===e.guestAccess&&(e.guestAccess=!0),void 0===e.encryption&&(e.encryption=!1);const t=i.a("dialogs.ErrorDialog"),n=i.a("elements.Spinner"),l=o.a.get();if(l.isGuest())return s.a.dispatch({action:"require_registration"}),Promise.resolve(null);const d=e.dmUserId?"trusted_private_chat":"private_chat",p=e.createOpts||{};if(p.preset=p.preset||d,p.visibility=p.visibility||"private",e.dmUserId&&void 0===p.invite)switch(Object(u.c)(e.dmUserId)){case"mx-user-id":p.invite=[e.dmUserId];break;case"email":p.invite_3pid=[{id_server:o.a.get().getIdentityServerUrl(!0),medium:"email",address:e.dmUserId}]}let h,m;return e.dmUserId&&void 0===p.is_direct&&(p.is_direct=!0),void 0===e.andView&&(e.andView=!0),p.initial_state=p.initial_state||[],e.guestAccess&&p.initial_state.push({type:"m.room.guest_access",state_key:"",content:{guest_access:"can_join"}}),e.encryption&&p.initial_state.push({type:"m.room.encryption",state_key:"",content:{algorithm:"m.megolm.v1.aes-sha2"}}),e.spinner&&(h=r.a.createDialog(n,null,"mx_Dialog_spinner")),l.createRoom(p).finally((function(){h&&h.close()})).then((function(t){return m=t.room_id,e.dmUserId?c.d(m,e.dmUserId):Promise.resolve()})).then((function(){return e.andView&&s.a.dispatch({action:"view_room",room_id:m,should_peek:!1,joining:!0}),m}),(function(n){if(e.inlineErrors)throw n;s.a.dispatch({action:"join_room_error"}),console.error("Failed to create room "+m+" "+n);let o=Object(a.a)("Server may be unavailable, overloaded, or you hit a bug.");return"M_UNSUPPORTED_ROOM_VERSION"===n.errcode&&(o=Object(a.a)("The server does not support the room version specified.")),r.a.createTrackedDialog("Failure to create room","",t,{title:Object(a.a)("Failure to create room"),description:o}),null}))}function h(e,t){const n=l.a.shared().getDMRoomsForUserId(t).map(t=>e.getRoom(t)).filter(e=>{if(e&&"join"===e.getMyMembership()){const n=e.getMember(t);return n&&("invite"===n.membership||"join"===n.membership)}return!1});if(n.length)return n[0]}async function m(e,t){const n=await e.downloadKeys(t);return Object.values(n).every(e=>Object.keys(e).length>0)}async function g(e,t){const n=h(e,t);let o;if(n)o=n.roomId;else{let n;d.b.isFeatureEnabled("feature_cross_signing")&&(n=m(e,[t])),o=await p({encryption:n,dmUserId:t,spinner:!1,andView:!1}),await async function(e,t,n,o={timeout:1500}){const{timeout:r}=o;let i;return new Promise(o=>{i=function(e,r,i){i.userId===n&&i.roomId===t&&o(!0)},e.on("RoomState.newMember",i),setTimeout(o,r,!1)}).finally(()=>{e.removeListener("RoomState.newMember",i)})}(e,o,t)}return o}},function(e,t,n){"use strict";(function(e){n.d(t,"c",(function(){return D})),n.d(t,"b",(function(){return I})),n.d(t,"a",(function(){return F}));var o=n(135),r=n.n(o),i=n(28),a=n(206),s=n(8),c=n(10),l=n(188),u=n(19),d=n(720),p=n(79),h=n(170),m=n(86),g=n(191),f=n(721),_=n(33),v=n(98),b=n(278),y=n(183),E=n(162),S=n(25),w=n(239),C=n(101),x=n(38),T=n(347),k=n(96);const R=p.a.DeviceVerification,O={[v.a.NAME]:v.a,[b.a.NAME]:b.a,[v.c]:T.a,[v.b]:T.a},D={RECIPROCATE_QR_CODE:v.a.NAME,SAS:b.a.NAME};function I(){return Boolean(e.Olm)}function F(e,t,n,o,r,i,s,u){if(this._onDeviceListUserCrossSigningUpdated=this._onDeviceListUserCrossSigningUpdated.bind(this),this._trustCrossSignedDevices=!0,this._reEmitter=new a.a(this),this._baseApis=e,this._sessionStore=t,this._userId=n,this._deviceId=o,this._clientStore=r,this._cryptoStore=i,this._roomList=s,u){this._verificationMethods=new Map;for(const e of u)"string"==typeof e?O[e]&&this._verificationMethods.set(e,O[e]):e.NAME?this._verificationMethods.set(e.NAME,e):console.warn("Excluding unknown verification method ".concat(e))}else this._verificationMethods=O;this.backupInfo=null,this.backupKey=null,this._checkedForBackup=!1,this._sendingBackups=!1,this._olmDevice=new l.a(i),this._deviceList=new d.a(e,i,this._olmDevice),this._deviceList.on("userCrossSigningUpdated",this._onDeviceListUserCrossSigningUpdated),this._reEmitter.reEmit(this._deviceList,["crypto.devicesUpdated"]),this._lastOneTimeKeyCheck=null,this._oneTimeKeyCheckInProgress=!1,this._roomEncryptors={},this._roomDecryptors={},this._supportedAlgorithms=c.t(h.a),this._deviceKeys={},this._globalBlacklistUnverifiedDevices=!1,this._globalErrorOnUnknownDevices=!0,this._outgoingRoomKeyRequestManager=new f.a(e,this._deviceId,this._cryptoStore),this._receivedRoomKeyRequests=[],this._receivedRoomKeyRequestCancellations=[],this._processingRoomKeyRequests=!1,this._lazyLoadMembers=!1,this._roomDeviceTrackingState={},this._lastNewSessionForced={},this._toDeviceVerificationRequests=new C.b,this._inRoomVerificationRequests=new w.b;const p=this._baseApis._cryptoCallbacks||{},_=Object(m.e)(i);this._crossSigningInfo=new m.a(n,p,_),this._secretStorage=new g.b(e,p,this._crossSigningInfo),!p.getCrossSigningKey&&p.getSecretStorageKey&&(p.getCrossSigningKey=async e=>m.a.getFromSecretStorage(e,this._secretStorage))}function N(e){if(e._oneTimeKeyCheckInProgress)return;const t=Date.now();if(null!==e._lastOneTimeKeyCheck&&t-e._lastOneTimeKeyCheck<6e4)return;e._lastOneTimeKeyCheck=t;const n=e._olmDevice.maxNumberOfOneTimeKeys(),o=Math.floor(n/2);function r(t){if(o<=t)return Promise.resolve();const n=Math.min(o-t,5);return e._olmDevice.generateOneTimeKeys(n).then(()=>async function(e){const t=await e._olmDevice.getOneTimeKeys(),n={},o=[];for(const r in t.curve25519)if(t.curve25519.hasOwnProperty(r)){const i={key:t.curve25519[r]};n["signed_curve25519:"+r]=i,o.push(e._signObject(i))}await Promise.all(o);const r=await e._baseApis.uploadKeysRequest({one_time_keys:n});return await e._olmDevice.markKeysAsPublished(),r}(e)).then(e=>{if(e.one_time_key_counts&&e.one_time_key_counts.signed_curve25519)return r(e.one_time_key_counts.signed_curve25519);throw new Error("response for uploading keys does not contain one_time_key_counts.signed_curve25519")})}e._oneTimeKeyCheckInProgress=!0,Promise.resolve().then(()=>void 0!==e._oneTimeKeyCount?Promise.resolve(e._oneTimeKeyCount):e._baseApis.uploadKeysRequest({}).then(e=>e.one_time_key_counts.signed_curve25519||0)).then(e=>r(e)).catch(e=>{s.a.error("Error uploading one-time keys",e.stack||e)}).finally(()=>{e._oneTimeKeyCount=void 0,e._oneTimeKeyCheckInProgress=!1})}c.o(F,i.EventEmitter),F.prototype.init=async function(t){const{exportedOlmDevice:n}=t||{};s.a.log("Crypto: initialising Olm..."),await e.Olm.init(),s.a.log(n?"Crypto: initialising Olm device from exported device...":"Crypto: initialising Olm device..."),await this._olmDevice.init({fromExportedDevice:n}),s.a.log("Crypto: loading device list..."),await this._deviceList.load(),this._deviceKeys["ed25519:"+this._deviceId]=this._olmDevice.deviceEd25519Key,this._deviceKeys["curve25519:"+this._deviceId]=this._olmDevice.deviceCurve25519Key,s.a.log("Crypto: fetching own devices...");let o=this._deviceList.getRawStoredDevicesForUser(this._userId);if(o||(o={}),!o[this._deviceId]){s.a.log("Crypto: adding this device to the store...");const e={keys:this._deviceKeys,algorithms:this._supportedAlgorithms,verified:R.VERIFIED,known:!0};o[this._deviceId]=e,this._deviceList.storeDevicesForUser(this._userId,o),this._deviceList.saveIfDirty()}await this._cryptoStore.doTxn("readonly",[_.a.STORE_ACCOUNT],e=>{this._cryptoStore.getCrossSigningKeys(e,e=>{e&&(s.a.log("Loaded cross-signing public keys from crypto store"),this._crossSigningInfo.setKeys(e))})}),this._deviceList.startTrackingDeviceList(this._userId),s.a.log("Crypto: checking for key backup..."),this._checkAndStartKeyBackup()},F.prototype.getCryptoTrustCrossSignedDevices=function(){return this._trustCrossSignedDevices},F.prototype.setCryptoTrustCrossSignedDevices=function(e){this._trustCrossSignedDevices=e;for(const e of this._deviceList.getKnownUserIds()){const t=this._deviceList.getRawStoredDevicesForUser(e);for(const n of Object.keys(t)){const t=this.checkDeviceTrust(e,n);if(!t.isLocallyVerified()&&t.isCrossSigningVerified()){const t=this._deviceList.getStoredDevice(e,n);this.emit("deviceVerificationChanged",e,n,t)}}}},F.prototype.createRecoveryKeyFromPassphrase=async function(t){const n=new e.Olm.PkDecryption;try{const e={};if(t){const o=await Object(y.c)(t);e.passphrase={algorithm:"m.pbkdf2",iterations:o.iterations,salt:o.salt},e.pubkey=n.init_with_private_key(o.key)}else e.pubkey=n.generate_key();const o=n.get_private_key();return[e,Object(E.b)(o),o]}finally{n&&n.free()}},F.prototype.isCrossSigningReady=async function(){const e=this._crossSigningInfo.getId(),t=await this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage),n=await this._secretStorage.hasKey();return e&&t&&n},F.prototype.bootstrapSecretStorage=async function({authUploadDeviceSigningKeys:e,createSecretStorageKey:t=(async()=>{}),keyBackupInfo:n,setupNewKeyBackup:o,setupNewSecretStorage:r,getKeyBackupPassphrase:i}={}){s.a.log("Bootstrapping Secure Secret Storage");const a={},c=Object.assign({},this._baseApis._cryptoCallbacks);let l=null;const d={};this._baseApis._cryptoCallbacks.getSecretStorageKey=async({keys:e},t)=>{for(const t of Object.keys(e))if(d[t])return[t,d[t]];const n=await c.getSecretStorageKey({keys:e},t);if(n){const[e,t]=n;d[e]=t}return n};try{const p=await this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage),h=!r&&p;if(p&&!Object.values(p).some(e=>e.algorithm===g.a)){s.a.log("Switching to symmetric");const e={};this._baseApis._cryptoCallbacks.getCrossSigningKey=e=>a[e];for(const t of["master","self_signing","user_signing"]){const n="m.cross_signing.".concat(t),o=await this.getSecret(n);e[t]=o,a[t]=u.decodeBase64(o)}await this.checkOwnCrossSigningTrust();const t={};let n=null;for(const[e,o]of Object.entries(p))if(e in d){n=e,o.passphrase&&(t.passphrase=o.passphrase);break}l=await this.addSecretStorageKey(g.a,t),n&&(d[l]=d[n]),await this.setDefaultSecretStorageKeyId(l);for(const t of["master","self_signing","user_signing"]){const n="m.cross_signing.".concat(t);await this.storeSecret(n,e[t],[l])}}else this._crossSigningInfo.getId()&&h?s.a.log("Cross signing keys are present in secret storage"):(s.a.log("Cross-signing public and/or private keys not found, checking secret storage for private keys"),h?(s.a.log("Cross-signing private keys found in secret storage"),await this.checkOwnCrossSigningTrust()):(s.a.log("Cross-signing private keys not found in secret storage, creating new keys"),this._baseApis._cryptoCallbacks.saveCrossSigningKeys=e=>Object.assign(a,e),this._baseApis._cryptoCallbacks.getCrossSigningKey=e=>a[e],await this.resetCrossSigningKeys(m.b.MASTER,{authUploadDeviceSigningKeys:e})));const f=await this.getSecretStorageKey();if(r||l||!f||f[1].algorithm!==g.a)if(n){s.a.log("Secret storage default key not found, using key backup key");const e=await i();if(!l){const t={};n.auth_data.private_key_salt&&n.auth_data.private_key_iterations&&(t.passphrase={algorithm:"m.pbkdf2",iterations:n.auth_data.private_key_iterations,salt:n.auth_data.private_key_salt,bits:256}),l=await this.addSecretStorageKey(g.a,t),this.setDefaultSecretStorageKeyId(l),d[l]=e}(await this.checkKeyBackup(n)).trustInfo.usable?(s.a.log("Adding cross signing signature to key backup"),await this._crossSigningInfo.signObject(n.auth_data,"master"),await this._baseApis._http.authedRequest(void 0,"PUT","/room_keys/version/"+n.version,void 0,n,{prefix:x.g}),await this.storeSecret("m.megolm_backup.v1",u.encodeBase64(e),[l])):s.a.log("Key backup is NOT TRUSTED: NOT adding cross signing signature")}else{if(!l){s.a.log("Secret storage default key not found, creating new key");const e=await t();l=await this.addSecretStorageKey(g.a,e),await this.setDefaultSecretStorageKeyId(l)}if(await this.isSecretStored("m.megolm_backup.v1")){const e=await this.getSecret("m.megolm_backup.v1");await this.storeSecret("m.megolm_backup.v1",e,[l])}}else s.a.log("Have secret storage key");if(Object.keys(a).length&&(s.a.log("Storing cross-signing private keys in secret storage"),await this._secretStorage.signKey(),c.saveCrossSigningKeys||await m.a.storeInSecretStorage(a,this._secretStorage)),this._crossSigningInfo._cacheCallbacks)for(const e of["self_signing","user_signing"])s.a.log("Cache ".concat(e," cross-signing private key locally")),await this._crossSigningInfo.getCrossSigningKey(e);if(o&&!n){const e=await this._baseApis.prepareKeyBackupVersion(null,{secureSecretStorage:!0});await this._baseApis.createKeyBackupVersion(e)}}finally{for(const e of Object.keys(this._baseApis._cryptoCallbacks))delete this._baseApis._cryptoCallbacks[e];Object.assign(this._baseApis._cryptoCallbacks,c)}s.a.log("Secure Secret Storage ready")},F.prototype.addSecretStorageKey=function(e,t,n){return this._secretStorage.addKey(e,t,n)},F.prototype.hasSecretStorageKey=function(e){return this._secretStorage.hasKey(e)},F.prototype.secretStorageKeyNeedsUpgrade=function(e){return this._secretStorage.keyNeedsUpgrade(e)},F.prototype.getSecretStorageKey=function(e){return this._secretStorage.getKey(e)},F.prototype.storeSecret=function(e,t,n){return this._secretStorage.store(e,t,n)},F.prototype.getSecret=function(e){return this._secretStorage.get(e)},F.prototype.isSecretStored=function(e,t){return this._secretStorage.isStored(e,t)},F.prototype.requestSecret=function(e,t){return t||(t=Object.keys(this._deviceList.getRawStoredDevicesForUser(this._userId))),this._secretStorage.request(e,t)},F.prototype.getDefaultSecretStorageKeyId=function(){return this._secretStorage.getDefaultKeyId()},F.prototype.setDefaultSecretStorageKeyId=function(e){return this._secretStorage.setDefaultKeyId(e)},F.prototype.checkSecretStoragePrivateKey=function(t,n){let o=null;try{return o=new e.Olm.PkDecryption,o.init_with_private_key(t)===n}finally{o&&o.free()}},F.prototype.getSessionBackupPrivateKey=async function(){return new Promise(e=>{this._cryptoStore.doTxn("readonly",[_.a.STORE_ACCOUNT],t=>{this._cryptoStore.getSecretStorePrivateKey(t,e,"m.megolm_backup.v1")})})},F.prototype.storeSessionBackupPrivateKey=async function(e){return this._cryptoStore.doTxn("readwrite",[_.a.STORE_ACCOUNT],t=>{this._cryptoStore.storeSecretStorePrivateKey(t,"m.megolm_backup.v1",e)})},F.prototype.checkCrossSigningPrivateKey=function(t,n){let o=null;try{return o=new e.Olm.PkSigning,o.init_with_seed(t)===n}finally{o&&o.free()}},F.prototype.resetCrossSigningKeys=async function(e,{authUploadDeviceSigningKeys:t=(async e=>await e())}={}){s.a.info("Resetting cross-signing keys at level ".concat(e));const n=Object.assign({},this._crossSigningInfo.keys);try{await this._crossSigningInfo.resetKeys(e),await this._signObject(this._crossSigningInfo.keys.master);const n={};for(const[e,t]of Object.entries(this._crossSigningInfo.keys))n[e+"_key"]=t;await t(async e=>{await this._baseApis.uploadDeviceSigningKeys(e,n)}),await this._cryptoStore.doTxn("readwrite",[_.a.STORE_ACCOUNT],e=>{this._cryptoStore.storeCrossSigningKeys(e,this._crossSigningInfo.keys)})}catch(e){throw s.a.error("Resetting cross-signing keys failed, revert to previous keys",e),this._crossSigningInfo.keys=n,e}this._baseApis.emit("crossSigning.keysChanged",{}),await this._afterCrossSigningLocalKeyChange(),s.a.info("Cross-signing key reset complete")},F.prototype._afterCrossSigningLocalKeyChange=async function(){s.a.info("Starting cross-signing key change post-processing");const e=this._deviceList.getStoredDevice(this._userId,this._deviceId),t=await this._crossSigningInfo.signDevice(this._userId,e);s.a.info("Starting background key sig upload for ".concat(this._deviceId));const n=({shouldEmit:e})=>this._baseApis.uploadKeySignatures({[this._userId]:{[this._deviceId]:t}}).then(t=>{const{failures:o}=t||{};if(Object.keys(o||[]).length>0)throw e&&this._baseApis.emit("crypto.keySignatureUploadFailure",o,"_afterCrossSigningLocalKeyChange",n),new k.c("Key upload failed",{failures:o});s.a.info("Finished background key sig upload for ".concat(this._deviceId))}).catch(e=>{s.a.error("Error during background key sig upload for ".concat(this._deviceId),e)});n({shouldEmit:!0});const o=this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications;if(o){s.a.info("Starting device verification upgrade");const e={};for(const[t,n]of Object.entries(this._deviceList._crossSigningInfo)){const o=await this._checkForDeviceVerificationUpgrade(t,m.a.fromStorage(n,t));o&&(e[t]=o)}if(Object.keys(e).length>0){s.a.info("Found ".concat(Object.keys(e).length," verif users to upgrade"));try{const t=await o({users:e});if(t)for(const n of t)n in e&&await this._baseApis.setDeviceVerified(n,e[n].crossSigningInfo.getId())}catch(e){s.a.log("shouldUpgradeDeviceVerifications threw an error: not upgrading",e)}}s.a.info("Finished device verification upgrade")}s.a.info("Finished cross-signing key change post-processing")},F.prototype._checkForDeviceVerificationUpgrade=async function(e,t){const n=this._crossSigningInfo.checkUserTrust(t);if(t.firstUse&&!n.verified){const n=this._deviceList.getRawStoredDevicesForUser(e),o=await this._checkForValidDeviceSignature(e,t.keys.master,n);if(o.length)return{devices:o.map(e=>p.a.fromStorage(n[e],e)),crossSigningInfo:t}}},F.prototype._checkForValidDeviceSignature=async function(e,t,n){const o=[];if(n&&t.signatures&&t.signatures[e])for(const r of Object.keys(t.signatures[e])){const[,i]=r.split(":",2);if(i in n&&n[i].verified===R.VERIFIED)try{await u.verifySignature(this._olmDevice,t,e,i,n[i].keys[r]),o.push(i)}catch(e){}}return o},F.prototype.getCrossSigningId=function(e){return this._crossSigningInfo.getId(e)},F.prototype.getStoredCrossSigningForUser=function(e){return this._deviceList.getStoredCrossSigningForUser(e)},F.prototype.checkUserTrust=function(e){const t=this._deviceList.getStoredCrossSigningForUser(e);return t?this._crossSigningInfo.checkUserTrust(t):new m.d(!1,!1)},F.prototype.checkDeviceTrust=function(e,t){const n=this._deviceList.getStoredDevice(e,t);return this._checkDeviceInfoTrust(e,n)},F.prototype._checkDeviceInfoTrust=function(e,t){const n=!(!t||!t.isVerified()),o=this._deviceList.getStoredCrossSigningForUser(e);if(t&&o){const r=this._trustCrossSignedDevices||e===this._userId;return this._crossSigningInfo.checkDeviceTrust(o,t,n,r)}return new m.c(!1,!1,n,!1)},F.prototype._onDeviceListUserCrossSigningUpdated=async function(e){if(e===this._userId){const t=this._deviceList.getStoredCrossSigningForUser(e),n=t?t.getId():null,o=this._crossSigningInfo.getId(),r=o!==n;o&&n&&!r?await this.checkOwnCrossSigningTrust():this.emit("crossSigning.keysChanged",{})}else await this._checkDeviceVerifications(e),this.emit("userTrustStatusChanged",e,this.checkUserTrust(e))},F.prototype.checkOwnCrossSigningTrust=async function(){const e=this._userId;await this.downloadKeys([this._userId]);const t=this._deviceList.getStoredCrossSigningForUser(e);if(!t)return void s.a.error("Got cross-signing update event for user "+e+" but no new cross-signing information found!");const n=t.getId(),o=this._crossSigningInfo.getId()!==n;if(o){s.a.info("Got new master public key",n);let e=null;try{if(e=(await this._crossSigningInfo.getCrossSigningKey("master",n))[1],!e)throw new Error("Cross-signing master private key not available")}finally{e&&e.free()}s.a.info("Got matching private key from callback for new public master key")}const r=this._crossSigningInfo.getId("self_signing"),i=this._crossSigningInfo.getId("user_signing");this._storeTrustedSelfKeys(t.keys);const a={};if(r!==t.getId("self_signing")){s.a.info("Got new self-signing key",t.getId("self_signing"));const e=this._deviceList.getStoredDevice(this._userId,this._deviceId),n=await this._crossSigningInfo.signDevice(this._userId,e);a[this._deviceId]=n}if(i!==t.getId("user_signing")&&s.a.info("Got new user-signing key",t.getId("user_signing")),o){const e=this._crossSigningInfo.keys.master;await this._signObject(e);const t=e.signatures[this._userId]["ed25519:"+this._deviceId];a[this._crossSigningInfo.getId()]=Object.assign({},e,{signatures:{[this._userId]:{["ed25519:"+this._deviceId]:t}}})}const c=Object.keys(a);if(c.length){const e=({shouldEmit:t})=>(s.a.info("Starting background key sig upload for ".concat(c)),this._baseApis.uploadKeySignatures({[this._userId]:a}).then(n=>{const{failures:o}=n||{};if(s.a.info("Finished background key sig upload for ".concat(c)),Object.keys(o||[]).length>0)throw t&&this._baseApis.emit("crypto.keySignatureUploadFailure",o,"checkOwnCrossSigningTrust",e),new k.c("Key upload failed",{failures:o})}).catch(e=>{s.a.error("Error during background key sig upload for ".concat(c),e)}));e({shouldEmit:!0})}this.emit("userTrustStatusChanged",e,this.checkUserTrust(e)),o&&(this._baseApis.emit("crossSigning.keysChanged",{}),await this._afterCrossSigningLocalKeyChange()),await this.checkKeyBackup()},F.prototype._storeTrustedSelfKeys=async function(e){this._crossSigningInfo.setKeys(e),await this._cryptoStore.doTxn("readwrite",[_.a.STORE_ACCOUNT],e=>{this._cryptoStore.storeCrossSigningKeys(e,this._crossSigningInfo.keys)})},F.prototype._checkDeviceVerifications=async function(e){const t=this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications;if(t){if(s.a.info("Starting device verification upgrade for ".concat(e)),this._crossSigningInfo.keys.user_signing){const n=this._deviceList.getStoredCrossSigningForUser(e);if(n){const o=await this._checkForDeviceVerificationUpgrade(e,n);if(o){(await t({users:{[e]:o}})).includes(e)&&await this._baseApis.setDeviceVerified(e,n.getId())}}}s.a.info("Finished device verification upgrade for ".concat(e))}},F.prototype._checkAndStartKeyBackup=async function(){if(s.a.log("Checking key backup status..."),this._baseApis.isGuest())return s.a.log("Skipping key backup check since user is guest"),this._checkedForBackup=!0,null;let e;try{e=await this._baseApis.getKeyBackupVersion()}catch(e){return s.a.log("Error checking for active key backup",e),e.httpStatus/100==4&&(this._checkedForBackup=!0),null}this._checkedForBackup=!0;const t=await this.isKeyBackupTrusted(e);return t.usable&&!this.backupInfo?(s.a.log("Found usable key backup v"+e.version+": enabling key backups"),this._baseApis.enableKeyBackup(e)):!t.usable&&this.backupInfo?(s.a.log("No usable key backup: disabling key backup"),this._baseApis.disableKeyBackup()):t.usable||this.backupInfo?t.usable&&this.backupInfo&&(e.version!==this.backupInfo.version?(s.a.log("On backup version "+this.backupInfo.version+" but found version "+e.version+": switching."),this._baseApis.disableKeyBackup(),this._baseApis.enableKeyBackup(e)):s.a.log("Backup version "+e.version+" still current")):s.a.log("No usable key backup: not enabling key backup"),{backupInfo:e,trustInfo:t}},F.prototype.setTrustedBackupPubKey=async function(e){this._sessionStore.setLocalTrustedBackupPubKey(e),await this.checkKeyBackup()},F.prototype.checkKeyBackup=async function(){return this._checkedForBackup=!1,this._checkAndStartKeyBackup()},F.prototype.isKeyBackupTrusted=async function(e){const t={usable:!1,trusted_locally:!1,sigs:[]};if(!(e&&e.algorithm&&e.auth_data&&e.auth_data.public_key&&e.auth_data.signatures))return s.a.info("Key backup is absent or missing required data"),t;const n=this._sessionStore.getLocalTrustedBackupPubKey();e.auth_data.public_key===n&&(s.a.info("Backup public key "+n+" is trusted locally"),t.trusted_locally=!0);const o=e.auth_data.signatures[this._userId]||[];for(const n of Object.keys(o)){const o=n.split(":");if("ed25519"!==o[0]){s.a.log("Ignoring unknown signature type: "+o[0]);continue}const r={deviceId:o[1]},i=this._crossSigningInfo.getId();if(i===r.deviceId){r.crossSigningId=!0;try{await u.verifySignature(this._olmDevice,e.auth_data,this._userId,r.deviceId,i),r.valid=!0}catch(e){s.a.warning("Bad signature from cross signing key "+i,e),r.valid=!1}t.sigs.push(r);continue}const a=this._deviceList.getStoredDevice(this._userId,r.deviceId);if(a){r.device=a,r.deviceTrust=await this.checkDeviceTrust(this._userId,r.deviceId);try{await u.verifySignature(this._olmDevice,e.auth_data,this._userId,a.deviceId,a.getFingerprint()),r.valid=!0}catch(t){s.a.info("Bad signature from key ID "+n+" userID "+this._userId+" device ID "+a.deviceId+" fingerprint: "+a.getFingerprint(),e.auth_data,t),r.valid=!1}}else r.valid=null,s.a.info("Ignoring signature from unknown key "+n);t.sigs.push(r)}return t.usable=t.sigs.some(e=>e.valid&&(e.device&&e.deviceTrust.isVerified()||e.crossSigningId)),t.usable|=t.trusted_locally,t},F.prototype.enableLazyLoading=function(){this._lazyLoadMembers=!0},F.prototype.registerEventHandlers=function(e){const t=this;e.on("RoomMember.membership",(function(e,n,o){try{t._onRoomMembership(e,n,o)}catch(e){s.a.error("Error handling membership change:",e)}})),e.on("toDeviceEvent",t._onToDeviceEvent.bind(t));const n=t._onTimelineEvent.bind(t);e.on("Room.timeline",n),e.on("Event.decrypted",n)},F.prototype.start=function(){this._outgoingRoomKeyRequestManager.start()},F.prototype.stop=function(){this._outgoingRoomKeyRequestManager.stop(),this._deviceList.stop()},F.getOlmVersion=function(){return l.a.getOlmVersion()},F.prototype.getDeviceEd25519Key=function(){return this._olmDevice.deviceEd25519Key},F.prototype.getDeviceCurve25519Key=function(){return this._olmDevice.deviceCurve25519Key},F.prototype.setGlobalBlacklistUnverifiedDevices=function(e){this._globalBlacklistUnverifiedDevices=e},F.prototype.getGlobalBlacklistUnverifiedDevices=function(){return this._globalBlacklistUnverifiedDevices},F.prototype.setGlobalErrorOnUnknownDevices=function(e){this._globalErrorOnUnknownDevices=e},F.prototype.getGlobalErrorOnUnknownDevices=function(){return this._globalErrorOnUnknownDevices},F.prototype.uploadDeviceKeys=function(){const e=this,t=e._userId,n=e._deviceId,o={algorithms:e._supportedAlgorithms,device_id:n,keys:e._deviceKeys,user_id:t};return e._signObject(o).then(()=>e._baseApis.uploadKeysRequest({device_keys:o}))},F.prototype.updateOneTimeKeyCount=function(e){if(!isFinite(e))throw new TypeError("Parameter for updateOneTimeKeyCount has to be a number");this._oneTimeKeyCount=e},F.prototype.downloadKeys=function(e,t){return this._deviceList.downloadKeys(e,t)},F.prototype.getStoredDevicesForUser=function(e){return this._deviceList.getStoredDevicesForUser(e)},F.prototype.getStoredDevice=function(e,t){return this._deviceList.getStoredDevice(e,t)},F.prototype.saveDeviceList=function(e){return this._deviceList.saveIfDirty(e)},F.prototype.setDeviceVerification=async function(e,t,n,o,r){void 0===n&&(n=null),void 0===o&&(o=null),void 0===r&&(r=null);const i=this._deviceList.getStoredCrossSigningForUser(e);if(i&&i.getId()===t){if(null!==o||null!==r)throw new Error("Cannot set blocked or known for a cross-signing key");if(!n)throw new Error("Cannot set a cross-signing key as unverified");if(this._crossSigningInfo.getId()||e!==this._crossSigningInfo.userId||this._storeTrustedSelfKeys(i.keys),e!==this._userId){s.a.info("Master key "+i.getId()+" for "+e+" marked verified. Signing...");const n=await this._crossSigningInfo.signUser(i);if(n){const o=async({shouldEmit:r})=>{s.a.info("Uploading signature for "+e+"...");const i=await this._baseApis.uploadKeySignatures({[e]:{[t]:n}}),{failures:a}=i||{};if(Object.keys(a||[]).length>0)throw r&&this._baseApis.emit("crypto.keySignatureUploadFailure",a,"setDeviceVerification",o),new k.c("Key upload failed",{failures:a})};await o({shouldEmit:!0})}return n}return i}const a=this._deviceList.getRawStoredDevicesForUser(e);if(!a||!a[t])throw new Error("Unknown device "+e+":"+t);const c=a[t];let l=c.verified;n?l=R.VERIFIED:null!==n&&l==R.VERIFIED&&(l=R.UNVERIFIED),o?l=R.BLOCKED:null!==o&&l==R.BLOCKED&&(l=R.UNVERIFIED);let u=c.known;if(null!==r&&(u=r),c.verified===l&&c.known===u||(c.verified=l,c.known=u,this._deviceList.storeDevicesForUser(e,a),this._deviceList.saveIfDirty()),n&&e===this._userId){s.a.info("Own device "+t+" marked verified: signing");const n=await this._crossSigningInfo.signDevice(e,p.a.fromStorage(c,t));if(n){const o=async({shouldEmit:r})=>{s.a.info("Uploading signature for "+t);const i=await this._baseApis.uploadKeySignatures({[e]:{[t]:n}}),{failures:a}=i||{};if(Object.keys(a||[]).length>0)throw r&&this._baseApis.emit("crypto.keySignatureUploadFailure",a,"setDeviceVerification",o),new k.c("Key upload failed",{failures:a})};await o({shouldEmit:!0})}}const d=p.a.fromStorage(c,t);return this.emit("deviceVerificationChanged",e,t,d),d},F.prototype.findVerificationRequestDMInProgress=function(e){return this._inRoomVerificationRequests.findRequestInProgress(e)},F.prototype.requestVerificationDM=function(e,t){const n=this._inRoomVerificationRequests.findRequestInProgress(t);if(n)return Promise.resolve(n);const o=new w.a(this._baseApis,t,e);return this._requestVerificationWithChannel(e,o,this._inRoomVerificationRequests)},F.prototype.requestVerification=function(e,t){t||(t=Object.keys(this._deviceList.getRawStoredDevicesForUser(e)));const n=this._toDeviceVerificationRequests.findRequestInProgress(e,t);if(n)return Promise.resolve(n);const o=new C.a(this._baseApis,e,t);return this._requestVerificationWithChannel(e,o,this._toDeviceVerificationRequests)},F.prototype._requestVerificationWithChannel=async function(e,t,n){let o=new S.k(t,this._verificationMethods,this._baseApis);await o.sendRequest();const r=n.getRequestByChannel(t);return r?o=r:(s.a.log("Crypto: adding new request to "+"requestsByTxnId with id ".concat(t.transactionId," ").concat(t.roomId)),n.setRequestByChannel(t,o)),o},F.prototype.beginKeyVerification=function(e,t,n,o=null){let r;if(o){if(r=this._toDeviceVerificationRequests.getRequestBySenderAndTxnId(t,o),!r)throw new Error("No request found for user ".concat(t," with ")+"transactionId ".concat(o))}else{o=C.a.makeTransactionId();const e=new C.a(this._baseApis,t,[n],o,n);r=new S.k(e,this._verificationMethods,this._baseApis),this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(t,o,r)}return r.beginKeyVerification(e,{userId:t,deviceId:n})},F.prototype.legacyDeviceVerification=async function(e,t,n){const o=C.a.makeTransactionId(),r=new C.a(this._baseApis,e,[t],o,t),i=new S.k(r,this._verificationMethods,this._baseApis);this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(e,o,i);const a=i.beginKeyVerification(n,{userId:e,deviceId:t});return await Promise.race([a.verify(),i.waitFor(e=>e.started)]),i},F.prototype.getOlmSessionsForUser=async function(e){const t=this.getStoredDevicesForUser(e)||[],n={};for(let e=0;e0)return null;const o=this._deviceList.getDeviceByIdentityKey(n,t);if(null===o)return null;const r=e.getClaimedEd25519Key();return r?r!==o.getFingerprint()?(s.a.warn("Event "+e.getId()+" claims ed25519 key "+r+"but sender device has key "+o.getFingerprint()),null):o:(s.a.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),null)},F.prototype.forceDiscardSession=function(e){const t=this._roomEncryptors[e];if(void 0===t)throw new Error("Room not encrypted");if(void 0===t.forceDiscardSession)throw new Error("Room encryption algorithm doesn't support session discarding");t.forceDiscardSession()},F.prototype.setRoomEncryption=async function(e,t,n){if(!t.algorithm)return void s.a.log("Ignoring setRoomEncryption with no algorithm");const o=this._roomList.getRoomEncryption(e);if(o&&JSON.stringify(o)!=JSON.stringify(t))return void s.a.error("Ignoring m.room.encryption event which requests a change of config in "+e);if(this._roomEncryptors[e])return;let r=null;o||(r=this._roomList.setRoomEncryption(e,t));const i=h.c[t.algorithm];if(!i)throw new Error("Unable to encrypt with "+t.algorithm);const a=new i({userId:this._userId,deviceId:this._deviceId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e,config:t});this._roomEncryptors[e]=a,r&&await r,this._lazyLoadMembers?s.a.log("Enabling encryption in "+e):(s.a.log("Enabling encryption in "+e+"; starting to track device lists for all users therein"),await this.trackRoomDevices(e),this.inhibitDeviceQuery||this._deviceList.refreshOutdatedDeviceLists())},F.prototype.trackRoomDevices=function(e){const t=async()=>{if(!this._roomEncryptors[e])return;const t=this._clientStore.getRoom(e);if(!t)throw new Error("Unable to start tracking devices in unknown room ".concat(e));s.a.log("Starting to track devices for room ".concat(e," ...")),(await t.getEncryptionTargetMembers()).forEach(e=>{this._deviceList.startTrackingDeviceList(e.userId)})};let n=this._roomDeviceTrackingState[e];return n||(n=t(),this._roomDeviceTrackingState[e]=n),n},F.prototype.ensureOlmSessionsForUsers=function(e){const t={};for(let n=0;n{this._cryptoStore.getAllEndToEndInboundGroupSessions(t,t=>{if(null===t)return;const n=this._olmDevice.exportInboundGroupSession(t.senderKey,t.sessionId,t.sessionData);delete n.first_known_index,n.algorithm=u.MEGOLM_ALGORITHM,e.push(n)})}),e},F.prototype.importRoomKeys=function(e){return Promise.all(e.map(e=>{if(!e.room_id||!e.algorithm)return s.a.warn("ignoring room key entry with missing fields",e),null;return this._getRoomDecryptor(e.room_id,e.algorithm).importRoomKey(e)}))},F.prototype.scheduleKeyBackupSend=async function(e=1e4){if(!this._sendingBackups){this._sendingBackups=!0;try{const t=Math.random()*e;await Object(c.A)(t);let n=0;for(;;){if(!this.backupKey)return;try{if(0===await this._backupPendingKeys(200))return;n=0}catch(e){if(n++,s.a.log("Key backup request failed",e),e.data&&("M_NOT_FOUND"==e.data.errcode||"M_WRONG_ROOM_KEYS_VERSION"==e.data.errcode))throw await this.checkKeyBackup(),this.emit("crypto.keyBackupFailed",e.data.errcode),e}n&&await Object(c.A)(1e3*Math.pow(2,Math.min(n-1,4)))}}finally{this._sendingBackups=!1}}},F.prototype._backupPendingKeys=async function(e){const t=await this._cryptoStore.getSessionsNeedingBackup(e);if(!t.length)return 0;let n=await this._cryptoStore.countSessionsNeedingBackup();this.emit("crypto.keyBackupSessionsRemaining",n);const o={};for(const e of t){const t=e.sessionData.room_id;void 0===o[t]&&(o[t]={sessions:{}});const n=await this._olmDevice.exportInboundGroupSession(e.senderKey,e.sessionId,e.sessionData);n.algorithm=u.MEGOLM_ALGORITHM,delete n.session_id,delete n.room_id;const r=n.first_known_index;delete n.first_known_index;const i=this.backupKey.encrypt(JSON.stringify(n)),a=(n.forwarding_curve25519_key_chain||[]).length,s=this._deviceList.getUserByIdentityKey(u.MEGOLM_ALGORITHM,e.senderKey),c=this._deviceList.getDeviceByIdentityKey(u.MEGOLM_ALGORITHM,e.senderKey),l=this._checkDeviceInfoTrust(s,c).isVerified();o[t].sessions[e.sessionId]={first_message_index:r,forwarded_count:a,is_verified:l,session_data:i}}return await this._baseApis.sendKeyBackup(void 0,void 0,this.backupInfo.version,{rooms:o}),await this._cryptoStore.unmarkSessionsNeedingBackup(t),n=await this._cryptoStore.countSessionsNeedingBackup(),this.emit("crypto.keyBackupSessionsRemaining",n),t.length},F.prototype.backupGroupSession=async function(e,t,n,o,r,i,a){if(!this.backupInfo)throw new Error("Key backups are not enabled");await this._cryptoStore.markSessionsNeedingBackup([{senderKey:t,sessionId:o}]),this.scheduleKeyBackupSend()},F.prototype.scheduleAllGroupSessionsForBackup=async function(){await this.flagAllGroupSessionsForBackup(),this.scheduleKeyBackupSend(0)},F.prototype.flagAllGroupSessionsForBackup=async function(){await this._cryptoStore.doTxn("readwrite",[_.a.STORE_INBOUND_GROUP_SESSIONS,_.a.STORE_BACKUP],e=>{this._cryptoStore.getAllEndToEndInboundGroupSessions(e,t=>{null!==t&&this._cryptoStore.markSessionsNeedingBackup([t],e)})});const e=await this._cryptoStore.countSessionsNeedingBackup();return this.emit("crypto.keyBackupSessionsRemaining",e),e},F.prototype.prepareToEncrypt=function(e){const t=e.roomId,n=this._roomEncryptors[t];n&&n.prepareToEncrypt(e)},F.prototype.encryptEvent=async function(e,t){if(!t)throw new Error("Cannot send encrypted messages in unknown rooms");const n=e.getRoomId(),o=this._roomEncryptors[n];if(!o)throw new Error("Room was previously configured to use encryption, but is no longer. Perhaps the homeserver is hiding the configuration event.");this._roomDeviceTrackingState[n]||this.trackRoomDevices(n),await this._roomDeviceTrackingState[n];let r=e.getContent();const i=r["m.relates_to"];i&&(r=Object.assign({},r),delete r["m.relates_to"]);const a=await o.encryptMessage(t,e.getType(),r);i&&(a["m.relates_to"]=i),e.makeEncrypted("m.room.encrypted",a,this._olmDevice.deviceCurve25519Key,this._olmDevice.deviceEd25519Key)},F.prototype.decryptEvent=function(e){if(e.isRedacted())return Promise.resolve({clearEvent:{room_id:e.getRoomId(),type:"m.room.message",content:{}}});const t=e.getWireContent();return this._getRoomDecryptor(e.getRoomId(),t.algorithm).decryptEvent(e)},F.prototype.handleDeviceListChanges=async function(e,t){e.oldSyncToken&&await this._evalDeviceListChanges(t)},F.prototype.requestRoomKey=function(e,t,n=!1){return this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(e,t,n).catch(e=>{s.a.error("Error requesting key for event",e)})},F.prototype.cancelRoomKeyRequest=function(e){this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(e).catch(e=>{s.a.warn("Error clearing pending room key requests",e)})},F.prototype.onCryptoEvent=async function(e){const t=e.getRoomId(),n=e.getContent();try{await this.setRoomEncryption(t,n,!0)}catch(e){s.a.error("Error configuring encryption in room "+t+":",e)}},F.prototype.onSyncWillProcess=async function(e){e.oldSyncToken||(s.a.log("Initial sync performed - resetting device tracking state"),this._deviceList.stopTrackingAllDeviceLists(),this._deviceList.startTrackingDeviceList(this._userId),this._roomDeviceTrackingState={})},F.prototype.onSyncCompleted=async function(e){const t=e.nextSyncToken;this._deviceList.setSyncToken(e.nextSyncToken),this._deviceList.saveIfDirty(),this._deviceList.lastKnownSyncToken=t,this._deviceList.startTrackingDeviceList(this._userId),this._deviceList.refreshOutdatedDeviceLists(),e.catchingUp||(N(this),this._processReceivedRoomKeyRequests())},F.prototype._evalDeviceListChanges=async function(e){if(e.changed&&Array.isArray(e.changed)&&e.changed.forEach(e=>{this._deviceList.invalidateUserDeviceList(e)}),e.left&&Array.isArray(e.left)&&e.left.length){const t=new Set(await this._getTrackedE2eUsers());e.left.forEach(e=>{t.has(e)||this._deviceList.stopTrackingDeviceList(e)})}},F.prototype._getTrackedE2eUsers=async function(){const e=[];for(const t of this._getTrackedE2eRooms()){const n=await t.getEncryptionTargetMembers();for(const t of n)e.push(t.userId)}return e},F.prototype._getTrackedE2eRooms=function(){return this._clientStore.getRooms().filter(e=>{if(!this._roomEncryptors[e.roomId])return!1;if(!this._roomDeviceTrackingState[e.roomId])return!1;const t=e.getMyMembership();return"join"===t||"invite"===t})},F.prototype._onToDeviceEvent=function(e){try{s.a.log("received to_device ".concat(e.getType()," from: ")+"".concat(e.getSender()," id: ").concat(e.getId())),"m.room_key"==e.getType()||"m.forwarded_room_key"==e.getType()?this._onRoomKeyEvent(e):"m.room_key_request"==e.getType()?this._onRoomKeyRequestEvent(e):"m.secret.request"===e.getType()?this._secretStorage._onRequestReceived(e):"m.secret.send"===e.getType()?this._secretStorage._onSecretReceived(e):"org.matrix.room_key.withheld"===e.getType()?this._onRoomKeyWithheldEvent(e):e.getContent().transaction_id?this._onKeyVerificationMessage(e):"m.bad.encrypted"===e.getContent().msgtype?this._onToDeviceBadEncrypted(e):e.isBeingDecrypted()&&e.once("Event.decrypted",e=>{this._onToDeviceEvent(e)})}catch(e){s.a.error("Error handling toDeviceEvent:",e)}},F.prototype._onRoomKeyEvent=function(e){const t=e.getContent();t.room_id&&t.algorithm?(this._checkedForBackup||this._checkAndStartKeyBackup(),this._getRoomDecryptor(t.room_id,t.algorithm).onRoomKeyEvent(e)):s.a.error("key event is missing fields")},F.prototype._onRoomKeyWithheldEvent=function(e){const t=e.getContent();if(!(("m.no_olm"===t.code||t.room_id&&t.session_id)&&t.algorithm&&t.sender_key))return void s.a.error("key withheld event is missing fields");s.a.info("Got room key withheld event from ".concat(e.getSender()," (").concat(t.sender_key,") ")+"for ".concat(t.algorithm,"/").concat(t.room_id,"/").concat(t.session_id," ")+"with reason ".concat(t.code," (").concat(t.reason,")"));const n=this._getRoomDecryptor(t.room_id,t.algorithm);if(n.onRoomKeyWithheldEvent&&n.onRoomKeyWithheldEvent(e),!t.room_id){const e=this._getRoomDecryptors(t.algorithm);for(const n of e)n.retryDecryptionFromSender(t.sender_key)}},F.prototype._onKeyVerificationMessage=function(e){if(!C.a.validateEvent(e,this._baseApis))return;this._handleVerificationEvent(e,this._toDeviceVerificationRequests,e=>{if(!C.a.canCreateRequest(C.a.getEventType(e)))return;const t=e.getContent(),n=t&&t.from_device;if(!n)return;const o=e.getSender(),r=new C.a(this._baseApis,o,[n]);return new S.k(r,this._verificationMethods,this._baseApis)})},F.prototype._onTimelineEvent=function(e,t,n,o,{liveEvent:r}={}){if(!w.a.validateEvent(e,this._baseApis))return;this._handleVerificationEvent(e,this._inRoomVerificationRequests,e=>{const t=new w.a(this._baseApis,e.getRoomId());return new S.k(t,this._verificationMethods,this._baseApis)},r)},F.prototype._handleVerificationEvent=async function(e,t,n,o=!0){let r=t.getRequest(e),i=!1;if(!r){if(r=n(e),!r)return void s.a.log("Crypto: could not find VerificationRequest for "+"".concat(e.getType(),", and could not create one, so ignoring."));i=!0,t.setRequest(e,r)}e.setVerificationRequest(r);try{await r.channel.handleEvent(e,r,o)}catch(e){s.a.error("error while handling verification event: "+e.message)}i&&!r.initiatedByMe&&!r.invalid&&!r.observeOnly&&this._baseApis.emit("crypto.verification.request",r)},F.prototype._onToDeviceBadEncrypted=async function(e){const t=e.getWireContent(),n=e.getSender(),o=t.algorithm,r=t.sender_key,i=()=>{const e=this._getRoomDecryptors(u.MEGOLM_ALGORITHM);for(const t of e)t.retryDecryptionFromSender(r)};if(void 0===n||void 0===r||void 0===r)return;this._lastNewSessionForced[n]=this._lastNewSessionForced[n]||{};const a=this._lastNewSessionForced[n][r]||0;if(a+36e5>Date.now())return s.a.debug("New session already forced with device "+n+":"+r+" at "+a+": not forcing another"),await this._olmDevice.recordSessionProblem(r,"wedged",!0),void i();let c=this._deviceList.getDeviceByIdentityKey(o,r);if(!c&&(await this.downloadKeys([n],!1),c=this._deviceList.getDeviceByIdentityKey(o,r),!c))return s.a.info("Couldn't find device for identity key "+r+": not re-establishing session"),await this._olmDevice.recordSessionProblem(r,"wedged",!1),void i();const l={};l[n]=[c],await u.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,l,!0),this._lastNewSessionForced[n][r]=Date.now();const d={algorithm:u.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}};await u.encryptMessageForDevice(d.ciphertext,this._userId,this._deviceId,this._olmDevice,n,c,{type:"m.dummy"}),await this._olmDevice.recordSessionProblem(r,"wedged",!0),i(),await this._baseApis.sendToDevice("m.room.encrypted",{[n]:{[c.deviceId]:d}});const p=await this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(n,c.deviceId);for(const e of p)this.requestRoomKey(e.requestBody,e.recipients,!0)},F.prototype._onRoomMembership=function(e,t,n){const o=t.roomId,r=this._roomEncryptors[o];r&&(this._roomDeviceTrackingState[o]&&("join"==t.membership?(s.a.log("Join event for "+t.userId+" in "+o),this._deviceList.startTrackingDeviceList(t.userId)):"invite"==t.membership&&this._clientStore.getRoom(o).shouldEncryptForInvitedMembers()&&(s.a.log("Invite event for "+t.userId+" in "+o),this._deviceList.startTrackingDeviceList(t.userId))),r.onRoomMembership(e,t,n))},F.prototype._onRoomKeyRequestEvent=function(e){const t=e.getContent();if("request"===t.action){const t=new A(e);this._receivedRoomKeyRequests.push(t)}else if("request_cancellation"===t.action){const t=new M(e);this._receivedRoomKeyRequestCancellations.push(t)}},F.prototype._processReceivedRoomKeyRequests=async function(){if(!this._processingRoomKeyRequests){this._processingRoomKeyRequests=!0;try{const e=this._receivedRoomKeyRequests;this._receivedRoomKeyRequests=[];const t=this._receivedRoomKeyRequestCancellations;this._receivedRoomKeyRequestCancellations=[],await Promise.all(e.map(e=>this._processReceivedRoomKeyRequest(e))),await Promise.all(t.map(e=>this._processReceivedRoomKeyRequestCancellation(e)))}catch(e){s.a.error("Error processing room key requsts: ".concat(e))}finally{this._processingRoomKeyRequests=!1}}},F.prototype._processReceivedRoomKeyRequest=async function(e){const t=e.userId,n=e.deviceId,o=e.requestBody,r=o.room_id,i=o.algorithm;if(s.a.log("m.room_key_request from ".concat(t,":").concat(n)+" for ".concat(r," / ").concat(o.session_id," (id ").concat(e.requestId,")")),t!==this._userId){if(!this._roomEncryptors[r])return void s.a.debug("room key request for unencrypted room ".concat(r));const e=this._roomEncryptors[r],i=this._deviceList.getStoredDevice(t,n);if(!i)return void s.a.debug("Ignoring keyshare for unknown device ".concat(t,":").concat(n));try{await e.reshareKeyWithDevice(o.sender_key,o.session_id,t,i)}catch(e){s.a.warn("Failed to re-share keys for session "+o.session_id+" with device "+t+":"+i.deviceId,e)}return}if(!this._roomDecryptors[r])return void s.a.log("room key request for unencrypted room ".concat(r));const a=this._roomDecryptors[r][i];if(a)if(await a.hasKeysForKeyRequest(e)){if(e.share=()=>{a.shareKeysWithDevice(e)},this.checkDeviceTrust(t,n).isVerified())return s.a.log("device is already verified: sharing keys"),void e.share();this.emit("crypto.roomKeyRequest",e)}else s.a.log("room key request for unknown session ".concat(r," / ")+o.session_id);else s.a.log("room key request for unknown alg ".concat(i," in room ").concat(r))},F.prototype._processReceivedRoomKeyRequestCancellation=async function(e){s.a.log("m.room_key_request cancellation for ".concat(e.userId,":")+"".concat(e.deviceId," (id ").concat(e.requestId,")")),this.emit("crypto.roomKeyRequestCancellation",e)},F.prototype._getRoomDecryptor=function(e,t){let n,o;if((e=e||null)&&(n=this._roomDecryptors[e],n||(this._roomDecryptors[e]=n={}),o=n[t],o))return o;const r=h.a[t];if(!r)throw new h.b("UNKNOWN_ENCRYPTION_ALGORITHM",'Unknown encryption algorithm "'+t+'".');return o=new r({userId:this._userId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e}),n&&(n[t]=o),o},F.prototype._getRoomDecryptors=function(e){const t=[];for(const n of Object.values(this._roomDecryptors))e in n&&t.push(n[e]);return t},F.prototype._signObject=async function(e){const t=e.signatures||{},n=e.unsigned;delete e.signatures,delete e.unsigned,t[this._userId]=t[this._userId]||{},t[this._userId]["ed25519:"+this._deviceId]=await this._olmDevice.sign(r.a.stringify(e)),e.signatures=t,void 0!==n&&(e.unsigned=n)};class A{constructor(e){const t=e.getContent();this.userId=e.getSender(),this.deviceId=t.requesting_device_id,this.requestId=t.request_id,this.requestBody=t.body||{},this.share=()=>{throw new Error("don't know how to share keys for this request yet")}}}class M{constructor(e){const t=e.getContent();this.userId=e.getSender(),this.deviceId=t.requesting_device_id,this.requestId=t.request_id}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i})),n.d(t,"b",(function(){return a}));var o=n(32),r=n.n(o);function i(e){if(!e)return"";const t=r.a.parse(e);return t&&"/"===t.path?t.host:e}function a(e){if(!e)return"";let t=e;return e.startsWith("https://")||(t="https://"+e),null===r.a.parse(t).hostname?e:t}},function(e,t,n){"use strict";(function(e){class n{constructor(){this.keyRgb=["rgb(118, 207, 166)","rgb(234, 245, 240)","rgb(211, 239, 225)"],this.keyHex=["#76CFA6","#EAF5F0","#D3EFE1","#FFFFFF","#000000"],this.colors=[this.keyHex[0],this.keyHex[1],this.keyHex[2],this.keyHex[3],this.keyHex[4]],this.currentTint=[void 0,void 0,void 0,void 0,void 0],this.cssFixups=[],this.cssAttrs=["color","backgroundColor","borderColor","borderTopColor","borderBottomColor","borderLeftColor"],this.svgAttrs=["fill","stroke"],this.tintables=[],this.theme=void 0,this.forceTint=!1}registerTintable(e){this.tintables.push(e),e()}getKeyRgb(){return this.keyRgb}tint(e,t,n){}tintSvgWhite(e){this.currentTint[3]=e,e||(e=this.colors[3]),this.colors[3]!==e&&(this.colors[3]=e,this.tintables.forEach((function(e){e()})))}tintSvgBlack(e){this.currentTint[4]=e,e||(e=this.colors[4]),this.colors[4]!==e&&(this.colors[4]=e,this.tintables.forEach((function(e){e()})))}setTheme(e){this.theme=e,document.getElementById("mx_theme_accentColor")&&(this.keyRgb[0]=window.getComputedStyle(document.getElementById("mx_theme_accentColor")).color),document.getElementById("mx_theme_secondaryAccentColor")&&(this.keyRgb[1]=window.getComputedStyle(document.getElementById("mx_theme_secondaryAccentColor")).color),document.getElementById("mx_theme_tertiaryAccentColor")&&(this.keyRgb[2]=window.getComputedStyle(document.getElementById("mx_theme_tertiaryAccentColor")).color),this.calcCssFixups(),this.forceTint=!0,this.tint(this.currentTint[0],this.currentTint[1],this.currentTint[2]),"dark"===e?(this.tintSvgWhite("#2d2d2d"),this.tintSvgBlack("#dddddd")):(this.tintSvgWhite("#ffffff"),this.tintSvgBlack("#000000"))}calcCssFixups(){if(!this.cssFixups[this.theme]){0,this.cssFixups[this.theme]=[];for(let e=0;e to validate an email address or phone number, but the server does not have any terms of service.",{},{server:()=>React.createElement("b",null,Object(u.a)(t))})),React.createElement("p",null,Object(s.a)("Only continue if you trust the owner of the server."))),button:Object(s.a)("Trust")}),[o]=await n;if(!o)throw new d("User aborted identity server action without terms");Object(l.d)()}}async registerForToken(e=!0){const t=await r.a.get().getOpenIdToken(),{access_token:n,token:o}=await this._matrixClient.registerWithIdentityServer(t),i=o||n;return e&&await this._checkToken(i),i}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return l})),n.d(t,"d",(function(){return u})),n.d(t,"c",(function(){return d}));var o=n(14),r=n.n(o),i=n(4),a=n(3),s=n(9);class c extends Error{}class l{constructor(e,t,n){this.serviceType=e,this.baseUrl=t,this.accessToken=n}}async function u(e,t=d){const n=e.map(e=>i.a.get().getTerms(e.serviceType,e.baseUrl)),o=(await Promise.all(n)).map((t,n)=>({service:e[n],policies:t.policies})),r=await i.a.get().getAccountData("m.accepted_terms");let a;a=r&&r.getContent()&&r.getContent().accepted?new Set(r.getContent().accepted):new Set;const s=[];for(const{service:e,policies:t}of o){const n={};for(const[e,o]of Object.entries(t)){let t=!1;for(const e of Object.keys(o))if("version"!==e&&a.has(o[e].url)){t=!0;break}t||(n[e]=o)}Object.keys(n).length>0&&s.push({service:e,policies:n})}const c=a.size;if(s.length>0){const e=await t(s,[...a]);console.log("User has agreed to URLs",e),e.forEach(e=>a.add(e))}else console.log("User has already agreed to all required policies");if(a.size!==c){const e={accepted:Array.from(a)};await i.a.get().setAccountData("m.accepted_terms",e)}const l=o.map(e=>{const t=Array.from(a).filter(t=>{for(const n of Object.values(e.policies))for(const e of Object.keys(n))if("version"!==e&&n[e].url===t)return!0;return!1});return 0===t.length?Promise.resolve():i.a.get().agreeToTerms(e.service.serviceType,e.service.baseUrl,e.service.accessToken,t)});return Promise.all(l)}function d(e,t,n){return new Promise((o,i)=>{console.log("Terms that need agreement",e);const l=a.a("views.dialogs.TermsDialog");s.a.createTrackedDialog("Terms of Service","",l,{policiesAndServicePairs:e,agreedUrls:t,onFinished:(e,t)=>{e?o(t):i(new c)}},r()("mx_TermsDialog",n))})}},function(e,t,n){"use strict";n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return s})),n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return l}));var o=n(13),r=n(16),i=n(4);function a(){return r.a.get().validated_server_config.isUrl}function s(){const e=a();i.a.get().setAccountData("m.identity_server",{base_url:e})}async function c(e){let t;try{t=await i.a.get().getTerms(o.o.IS,e)}catch(e){if(console.error(e),"rejected"!==e.cors&&404!==e.httpStatus)throw e;t=null}return t&&t.policies&&Object.keys(t.policies).length>0}function l(){const e=i.a.get().getAccountData("m.identity_server");return e&&e.getContent()&&e.getContent().base_url}},function(e,t,n){"use strict";(function(e){var o=n(28),r=n.n(o);let i=!0;class a extends r.a{constructor(e){super(),this._matrixClient=e,this._userGroups={},this._groupProfiles={},this._groupProfilesPromise={},this._usersPending={},this._usersInFlight={},this._debounceTimeoutID=null}groupSupport(){return i}invalidatePublicisedGroups(e){delete this._userGroups[e]}getPublicisedGroupsCached(e,t){return this._userGroups[t]?Promise.resolve(this._userGroups[t]):this._usersPending[t]?this._usersPending[t].prom:this._usersInFlight[t]?this._usersInFlight[t].prom:(this._usersPending[t]={},this._usersPending[t].prom=new Promise((e,n)=>{this._usersPending[t].resolve=e,this._usersPending[t].reject=n}).then(e=>(this._userGroups[t]=e,setTimeout(()=>{delete this._userGroups[t]},18e5),this._userGroups[t])).catch(e=>{if("M_UNRECOGNIZED"===e.errcode)return console.warn("Cannot display flair, server does not support groups"),void(i=!1);throw console.error("Could not get groups for user",t,e),e}).finally(()=>{delete this._usersInFlight[t]}),this._debounceTimeoutID&&clearTimeout(this._debounceTimeoutID),this._debounceTimeoutID=setTimeout(()=>{this._batchedGetPublicGroups(e)},200),this._usersPending[t].prom)}async _batchedGetPublicGroups(e){this._usersInFlight=this._usersPending,this._usersPending={};let t={users:[]};try{t=await e.getPublicisedGroups(Object.keys(this._usersInFlight))}catch(e){return void Object.keys(this._usersInFlight).forEach(t=>{this._usersInFlight[t]&&this._usersInFlight[t].reject(e)})}const n=t.users;Object.keys(this._usersInFlight).forEach(e=>{this._usersInFlight[e]&&this._usersInFlight[e].resolve(n[e]||[])})}async getGroupProfileCached(e,t){if(this._groupProfiles[t])return this._groupProfiles[t];if(this._groupProfilesPromise[t]){try{await this._groupProfilesPromise[t]}catch(e){return null}return this._groupProfiles[t]}let n;console.log("FlairStore: Request group profile of "+t),this._groupProfilesPromise[t]=e.getGroupProfile(t);try{n=await this._groupProfilesPromise[t]}catch(e){return console.log("FlairStore: Failed to get group profile for "+t,e),delete this._groupProfilesPromise[t],null}return this._groupProfiles[t]={groupId:t,avatarUrl:n.avatar_url,name:n.name,shortDescription:n.short_description},delete this._groupProfilesPromise[t],console.log("FlairStore: Emit updateGroupProfile for "+t),this.emit("updateGroupProfile"),setTimeout(()=>{this.refreshGroupProfile(e,t)},18e5),this._groupProfiles[t]}refreshGroupProfile(e,t){return delete this._groupProfiles[t],this.getGroupProfileCached(e,t)}}void 0===e.singletonFlairStore&&(e.singletonFlairStore=new a),t.a=e.singletonFlairStore}).call(this,n(24))},function(e,t,n){"use strict";n.r(t),function(e){var o=n(4),r=n(23),i=n(159),a=n(35),s=n(71),c=n(6),l=n(3),u=n(1),d=n(9),p=n(7);const h={notifsByRoom:{},pendingEncryptedEventIds:[],notificationMessageForEvent:function(e){return i.a(e)},_displayPopupNotification:function(t,n){const o=r.a.get();if(!o)return;if(!o.supportsNotifications()||!o.maySendNotifications())return;if(e.document.hasFocus())return;let i,a=this.notificationMessageForEvent(t);if(!a)return;t.sender&&n.name!==t.sender.name?"m.room.member"===t.getType()?i=n.name:t.sender&&(i=t.sender.name+" ("+n.name+")",t.getContent().body&&(a=t.getContent().body)):(i=n.name,t.getContent().body&&(a=t.getContent().body)),this.isBodyEnabled()||(a="");let c=null;t.sender&&!p.b.getValue("lowBandwidth")&&(c=s.a(t.sender,40,40,"crop"));const l=o.displayNotification(i,a,c,n);l&&(void 0===this.notifsByRoom[t.getRoomId()]&&(this.notifsByRoom[t.getRoomId()]=[]),this.notifsByRoom[t.getRoomId()].push(l))},getSoundForRoom:async function(e){const t=p.b.getValue("notificationSound",e);return t?t.url?t.url.startsWith("mxc://")?{url:o.a.get().mxcUrlToHttp(t.url),name:t.name,type:t.type,size:t.size}:(console.warn("".concat(e," has custom notification sound event, but url is not a mxc url")),null):(console.warn("".concat(e," has custom notification sound event, but no url key")),null):null},_playAudioNotification:async function(e,t){const n=await this.getSoundForRoom(t.roomId);console.log("Got sound ".concat(n&&n.name||"default"," for ").concat(t.roomId));try{const e=document.querySelector(n?"audio[src='".concat(n.url,"']"):"#messageAudio");let t=e;if(!e){if(!n)return void console.error("No audio element or sound to play for notification");t=new Audio(n.url),n.type&&(t.type=n.type),document.body.appendChild(t)}await t.play()}catch(e){console.warn("Caught error when trying to fetch room notification sound:",e)}},start:function(){this.boundOnEvent=this.boundOnEvent||this.onEvent.bind(this),this.boundOnSyncStateChange=this.boundOnSyncStateChange||this.onSyncStateChange.bind(this),this.boundOnRoomReceipt=this.boundOnRoomReceipt||this.onRoomReceipt.bind(this),this.boundOnEventDecrypted=this.boundOnEventDecrypted||this.onEventDecrypted.bind(this),o.a.get().on("event",this.boundOnEvent),o.a.get().on("Room.receipt",this.boundOnRoomReceipt),o.a.get().on("Event.decrypted",this.boundOnEventDecrypted),o.a.get().on("sync",this.boundOnSyncStateChange),this.toolbarHidden=!1,this.isSyncing=!1},stop:function(){o.a.get()&&(o.a.get().removeListener("Event",this.boundOnEvent),o.a.get().removeListener("Room.receipt",this.boundOnRoomReceipt),o.a.get().removeListener("Event.decrypted",this.boundOnEventDecrypted),o.a.get().removeListener("sync",this.boundOnSyncStateChange)),this.isSyncing=!1},supportsDesktopNotifications:function(){const e=r.a.get();return e&&e.supportsNotifications()},setEnabled:function(e,t){const n=r.a.get();n&&(a.a.trackEvent("Notifier","Set Enabled",e),p.b.isLevelSupported(p.a.DEVICE)&&p.b.setValue("audioNotificationsEnabled",null,p.a.DEVICE,this.isEnabled()),e?n.requestNotificationPermission().then(e=>{if("granted"===e)t&&t(),c.a.dispatch({action:"notifier_enabled",value:!0});else{const t="denied"===e?Object(u.a)("Riot does not have permission to send you notifications - please check your browser settings"):Object(u.a)("Riot was not given permission to send notifications - please try again"),n=l.a("dialogs.ErrorDialog");d.a.createTrackedDialog("Unable to enable Notifications",e,n,{title:Object(u.a)("Unable to enable Notifications"),description:t})}}):c.a.dispatch({action:"notifier_enabled",value:!1}),this.setToolbarHidden(!0))},isEnabled:function(){return this.isPossible()&&p.b.getValue("notificationsEnabled")},isPossible:function(){const e=r.a.get();return!!e&&(!!e.supportsNotifications()&&!!e.maySendNotifications())},isBodyEnabled:function(){return this.isEnabled()&&p.b.getValue("notificationBodyEnabled")},isAudioEnabled:function(){return this.isEnabled()&&p.b.getValue("audioNotificationsEnabled")},setToolbarHidden:function(t,n=!0){this.toolbarHidden=t,a.a.trackEvent("Notifier","Set Toolbar Hidden",t),c.a.dispatch({action:"notifier_enabled",value:this.isEnabled()}),n&&e.localStorage&&e.localStorage.setItem("notifications_hidden",t)},shouldShowToolbar:function(){const e=o.a.get();return!!e&&(!e.isGuest()&&this.supportsDesktopNotifications()&&!this.isEnabled()&&!this._isToolbarHidden())},_isToolbarHidden:function(){return e.localStorage?"true"===e.localStorage.getItem("notifications_hidden"):this.toolbarHidden},onSyncStateChange:function(e){"SYNCING"===e?this.isSyncing=!0:"STOPPED"!==e&&"ERROR"!==e||(this.isSyncing=!1)},onEvent:function(e){if(this.isSyncing&&(!e.sender||e.sender.userId!==o.a.get().credentials.userId))if(e.isBeingDecrypted()||e.isDecryptionFailure())for(this.pendingEncryptedEventIds.push(e.getId());this.pendingEncryptedEventIds.length>20;)this.pendingEncryptedEventIds.shift();else this._evaluateEvent(e)},onEventDecrypted:function(e){if(e.isDecryptionFailure())return;const t=this.pendingEncryptedEventIds.indexOf(e.getId());-1!==t&&(this.pendingEncryptedEventIds.splice(t,1),this._evaluateEvent(e))},onRoomReceipt:function(e,t){if(0===t.getUnreadNotificationCount()){const e=r.a.get();if(!e)return;if(void 0===this.notifsByRoom[t.roomId])return;for(const n of this.notifsByRoom[t.roomId])e.clearNotification(n);delete this.notifsByRoom[t.roomId]}},_evaluateEvent:function(e){const t=o.a.get().getRoom(e.getRoomId()),n=o.a.get().getPushActionsForEvent(e);n&&n.notify&&(this.isEnabled()&&this._displayPopupNotification(e,t),n.tweaks.sound&&this.isAudioEnabled()&&(r.a.get().loudNotification(e,t),this._playAudioNotification(e,t)))}};e.mxNotifier||(e.mxNotifier=h),t.default=e.mxNotifier}.call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return s})),n.d(t,"d",(function(){return c})),n.d(t,"e",(function(){return l})),n.d(t,"b",(function(){return u}));var o=n(4),r=n(41),i=n(55);function a(e,t,n,r){let i;return e&&e.getAvatarUrl&&(i=e.getAvatarUrl(o.a.get().getHomeserverUrl(),Math.floor(t*window.devicePixelRatio),Math.floor(n*window.devicePixelRatio),r,!1,!1)),i||(i=c(e?e.userId:"")),i}function s(e,t,n,r){const a=Object(i.a)(o.a.get().getHomeserverUrl(),e.avatarUrl,Math.floor(t*window.devicePixelRatio),Math.floor(n*window.devicePixelRatio),r);return a&&0!==a.length?a:null}function c(e){const t=["03b381","368bd6","ac3ba8"];let o=0;for(let t=0;t=55296&&r<=56319&&e[t+1]){const n=e.charCodeAt(t+1);n>=56320&&n<=57343&&o++}return e.substring(t,t+o).toUpperCase()}function u(e,t,n,i){if(!e)return null;const a=e.getAvatarUrl(o.a.get().getHomeserverUrl(),t,n,i,!1);if(a)return a;let s=null;const c=r.a.shared().getUserIdForRoomId(e.roomId);return s=c?e.getMember(c):e.getAvatarFallbackMember(),s?s.getAvatarUrl(o.a.get().getHomeserverUrl(),t,n,i,!1):null}},function(e,t,n){"use strict";(function(e){var o=n(103),r=n(6),i=n(22),a=n(35),s=n(42),c=n(4),l=n(7);const u={orderedTags:null,orderedTagsAccountData:null,hasSynced:!1,joinedGroupIds:null,selectedTags:[],anchorTag:null};class d extends o.Store{constructor(){super(r.a),this._state=Object.assign({},u),l.b.monitorSetting("TagPanel.enableTagPanel",null)}_setState(e){this._state=Object.assign(this._state,e),this.__emitChange()}__onDispatch(e){switch(e.action){case"view_room":{const t=i.a.getGroupIdsForRoomId(e.room_id);this._updateBadges(t);break}case"MatrixActions.sync":{if("SYNCING"!==e.state&&"PREPARED"!==e.state||this._updateBadges(),"PREPARED"===e.prevState||"PREPARED"!==e.state)break;const t=e.matrixClient.getAccountData("im.vector.web.tag_ordering"),n=t?t.getContent():{};this._setState({orderedTagsAccountData:n.tags||null,removedTagsAccountData:n.removedTags||null,hasSynced:!0}),this._updateOrderedTags();break}case"MatrixActions.accountData":if("im.vector.web.tag_ordering"!==e.event_type)break;if(e.event_content._storeId===this.getStoreId())break;this._setState({orderedTagsAccountData:e.event_content?e.event_content.tags:null,removedTagsAccountData:e.event_content?e.event_content.removedTags:null}),this._updateOrderedTags();break;case"GroupActions.fetchJoinedGroups.success":this._setState({joinedGroupIds:e.result.groups.sort(),hasFetchedJoinedGroups:!0}),this._updateOrderedTags();break;case"TagOrderActions.moveTag.pending":this._setState({orderedTags:e.request.tags,removedTagsAccountData:e.request.removedTags});break;case"TagOrderActions.removeTag.pending":this._setState({removedTagsAccountData:e.request.removedTags}),this._updateOrderedTags();break;case"select_tag":{let t=[];if(e.shiftKey){let n=this._state.orderedTags.indexOf(this._state.anchorTag),o=this._state.orderedTags.indexOf(e.tag);if(-1===n&&(n=o),n>o){const e=n;n=o,o=e}t=e.ctrlOrCmdKey?this._state.selectedTags:[],t=[...new Set(this._state.orderedTags.slice(n,o+1).concat(t))]}else t=e.ctrlOrCmdKey?this._state.selectedTags.includes(e.tag)?this._state.selectedTags.filter(t=>t!==e.tag):[...this._state.selectedTags,e.tag]:1===this._state.selectedTags.length&&this._state.selectedTags.includes(e.tag)?[]:[e.tag],this._state.selectedTags.includes(e.tag)||this._setState({anchorTag:e.tag});this._setState({selectedTags:t}),a.a.trackEvent("FilterStore","select_tag")}break;case"deselect_tags":this._setState({selectedTags:[]}),a.a.trackEvent("FilterStore","deselect_tags");break;case"on_client_not_viable":case"on_logged_out":this._state=Object.assign({},u);break;case"setting_updated":"TagPanel.enableTagPanel"!==e.settingName||e.newValue||(this._setState({selectedTags:[]}),a.a.trackEvent("FilterStore","disable_tags"))}}_updateBadges(e=this._state.joinedGroupIds){if(e&&e.length){const t=c.a.get(),n={};e.forEach(e=>{const o=i.a.getGroupRooms(e).map(e=>t.getRoom(e.roomId)).filter(e=>null!=e),r=o&&s.g(o);n[e]=r&&0!==r.count?r:void 0});const o=Object.assign({},this._state.badges,n);this._setState({badges:o})}}_updateOrderedTags(){this._setState({orderedTags:this._state.hasSynced&&this._state.hasFetchedJoinedGroups?this._mergeGroupsAndTags():null})}_mergeGroupsAndTags(){const e=this._state.joinedGroupIds||[],t=this._state.orderedTagsAccountData||[],n=new Set(this._state.removedTagsAccountData||[]),o=t.filter(t=>("+"!==t[0]||e.includes(t))&&!n.has(t)),r=e.filter(e=>!t.includes(e)&&!n.has(e));return o.concat(r)}getGroupBadge(e){const t=this._state.badges;return t&&t[e]}getOrderedTags(){return this._state.orderedTags}getRemovedTagsAccountData(){return this._state.removedTagsAccountData}getStoreId(){return this._id||(this._id=Math.random().toString(16).slice(2,10)),this._id}getSelectedTags(){return this._state.selectedTags}}void 0===e.singletonTagOrderStore&&(e.singletonTagOrderStore=new d),t.a=e.singletonTagOrderStore}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{constructor(e){this._timeout=e,this._onTimeout=this._onTimeout.bind(this),this._setNotStarted()}_setNotStarted(){this._timerHandle=null,this._startTs=null,this._promise=new Promise((e,t)=>{this._resolve=e,this._reject=t}).finally(()=>{this._timerHandle=null})}_onTimeout(){const e=Date.now()-this._startTs;if(e>=this._timeout)this._resolve(),this._setNotStarted();else{const t=this._timeout-e;this._timerHandle=setTimeout(this._onTimeout,t)}}changeTimeout(e){if(e===this._timeout)return;const t=e1&&void 0!==arguments[1]?arguments[1]:{},i=[],a=0,s=void 0,c=void 0,l=void 0,u=void 0,d=void 0,p=void 0,h=void 0,m=void 0,g=void 0,f=void 0,_=void 0,v=void 0,b=void 0,y=void 0;if(isNaN(e))throw new Error("Invalid arguments");return l=!0===t.bits,_=!0===t.unix,c=t.base||2,f=void 0!==t.round?t.round:_?1:2,v=void 0!==t.spacer?t.spacer:_?"":" ",y=t.symbols||t.suffixes||{},b=2===c&&t.standard||"jedec",g=t.output||"string",d=!0===t.fullform,p=t.fullforms instanceof Array?t.fullforms:[],s=void 0!==t.exponent?t.exponent:-1,u=c>2?1e3:1024,(h=(m=Number(e))<0)&&(m=-m),(-1===s||isNaN(s))&&(s=Math.floor(Math.log(m)/Math.log(u)))<0&&(s=0),s>8&&(s=8),0===m?(i[0]=0,i[1]=_?"":o[b][l?"bits":"bytes"][s]):(a=m/(2===c?Math.pow(2,10*s):Math.pow(1e3,s)),l&&(a*=8)>=u&&s<8&&(a/=u,s++),i[0]=Number(a.toFixed(s>0?f:0)),i[1]=10===c&&1===s?l?"kb":"kB":o[b][l?"bits":"bytes"][s],_&&(i[1]="jedec"===b?i[1].charAt(0):s>0?i[1].replace(/B$/,""):i[1],n.test(i[1])&&(i[0]=Math.floor(i[0]),i[1]=""))),h&&(i[0]=-i[0]),i[1]=y[i[1]]||i[1],"array"===g?i:"exponent"===g?s:"object"===g?{value:i[0],suffix:i[1],symbol:i[1]}:(d&&(i[1]=p[s]?p[s]:r[b][s]+(l?"bit":"byte")+(1===i[0]?"":"s")),i.join(v))}i.partial=function(e){return function(t){return i(t,e)}},e.exports=i}("undefined"!=typeof window&&window)}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return h}));var o=n(5),r=n.n(o),i=n(6),a=n(103),s=n(7),c=n(20);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}const u={showRoomPanel:s.b.getValue("showRightPanelInRoom"),showGroupPanel:s.b.getValue("showRightPanelInGroup"),lastRoomPhase:s.b.getValue("lastRightPanelPhaseForRoom"),lastGroupPhase:s.b.getValue("lastRightPanelPhaseForGroup"),lastRoomPhaseParams:{}},d=Object.keys(c.a).filter(e=>e.startsWith("Group")),p=[c.a.RoomMemberInfo,c.a.Room3pidMemberInfo,c.a.EncryptionPanel];class h extends a.Store{constructor(){super(i.a),this._state=u}get isOpenForRoom(){return this._state.showRoomPanel}get isOpenForGroup(){return this._state.showGroupPanel}get roomPanelPhase(){return this._state.lastRoomPhase}get groupPanelPhase(){return this._state.lastGroupPhase}get visibleRoomPanelPhase(){return this.isOpenForRoom?this.roomPanelPhase:null}get visibleGroupPanelPhase(){return this.isOpenForGroup?this.groupPanelPhase:null}get roomPanelPhaseParams(){return this._state.lastRoomPhaseParams||{}}_setState(e){this._state=Object.assign(this._state,e),s.b.setValue("showRightPanelInRoom",null,s.a.DEVICE,this._state.showRoomPanel),s.b.setValue("showRightPanelInGroup",null,s.a.DEVICE,this._state.showGroupPanel),c.b.includes(this._state.lastRoomPhase)&&s.b.setValue("lastRightPanelPhaseForRoom",null,s.a.DEVICE,this._state.lastRoomPhase),c.b.includes(this._state.lastGroupPhase)&&s.b.setValue("lastRightPanelPhaseForGroup",null,s.a.DEVICE,this._state.lastGroupPhase),this.__emitChange()}__onDispatch(e){switch(e.action){case"view_room":case"view_group":p.includes(this._state.lastRoomPhase)&&this._setState({lastRoomPhase:c.a.RoomMemberList,lastRoomPhaseParams:{}}),this._state.lastGroupPhase===c.a.GroupMemberInfo&&this._setState({lastGroupPhase:c.a.GroupMemberList});break;case"set_right_panel_phase":{const t=e.phase;if(!c.a[t])return void console.warn("Tried to switch right panel to unknown phase: ".concat(t));d.includes(t)?t===this._state.lastGroupPhase?this._setState({showGroupPanel:!this._state.showGroupPanel}):this._setState({lastGroupPhase:t,showGroupPanel:!0}):t!==this._state.lastRoomPhase||e.refireParams?this._setState({lastRoomPhase:t,showRoomPanel:!0,lastRoomPhaseParams:e.refireParams||{}}):this._setState({showRoomPanel:!this._state.showRoomPanel}),i.a.dispatch(function(e){for(var t=1;t{let i=t,a=n;a>600&&(i=Math.floor(i*(600/a)),a=600),i>800&&(a=Math.floor(a*(800/i)),i=800);const s=document.createElement("canvas");s.width=i,s.height=a,s.getContext("2d").drawImage(e,0,0,i,a),s.toBlob((function(e){r({info:{thumbnail_info:{w:i,h:a,mimetype:e.type,size:e.size},w:t,h:n},thumbnail:e})}),o)})}function _(e,t,n){let o,r="image/png";return"image/jpeg"==n.type&&(r="image/jpeg"),async function(e){const t=document.createElement("img"),n=URL.createObjectURL(e),o=new Promise((e,o)=>{t.onload=function(){URL.revokeObjectURL(n),e(t)},t.onerror=function(e){o(e)}});let r;if(t.src=n,"image/png"===e.type){r=b(e).then(e=>{const t=new Uint8Array(e),n=h()(t);for(const e of n)if("pHYs"===e.name){if(e.data.byteLength!==m.length)return;return e.data.every((e,t)=>e===m[t])}return!1})}const[i]=await Promise.all([r,o]);return{width:i?t.width>>1:t.width,height:i?t.height>>1:t.height,img:t}}(n).then((function(e){return f(e.img,e.width,e.height,r)})).then((function(n){return o=n.info,y(e,t,n.thumbnail)})).then((function(e){return o.thumbnail_url=e.url,o.thumbnail_file=e.file,o}))}function v(e,t,n){let o;return function(e){return new Promise((t,n)=>{const o=document.createElement("video"),r=new FileReader;r.onload=function(e){o.src=e.target.result,o.onloadeddata=function(){t(o)},o.onerror=function(e){n(e)}},r.onerror=function(e){n(e)},r.readAsDataURL(e)})}(n).then((function(e){return f(e,e.videoWidth,e.videoHeight,"image/jpeg")})).then((function(n){return o=n.info,y(e,t,n.thumbnail)})).then((function(e){return o.thumbnail_url=e.url,o.thumbnail_file=e.file,o}))}function b(e){return new Promise((t,n)=>{const o=new FileReader;o.onload=function(e){t(e.target.result)},o.onerror=function(e){n(e)},o.readAsArrayBuffer(e)})}function y(e,t,n,o){if(e.isRoomEncrypted(t)){let t,r,a=!1;const s=b(n).then((function(e){if(a)throw new g;return d.a.encryptAttachment(e)})).then((function(n){if(a)throw new g;r=n.info;const i=new Blob([n.data]);return t=e.uploadContent(i,{progressHandler:o,includeFilename:!1}),t})).then((function(e){return r.url=e,n.type&&(r.mimetype=n.type),{file:r}}));return s.abort=()=>{a=!0,t&&i.a.get().cancelUpload(t)},s}{const t=e.uploadContent(n,{progressHandler:o}),r=t.then((function(e){return{url:e}}));return r.abort=t.abort,r}}class E{constructor(){this.inprogress=[],this.nextId=0,this._mediaConfig=null}static sharedInstance(){return void 0===e.mx_ContentMessages&&(e.mx_ContentMessages=new E),e.mx_ContentMessages}_isFileSizeAcceptable(e){return!(null!==this._mediaConfig&&void 0!==this._mediaConfig["m.upload.size"]&&e.size>this._mediaConfig["m.upload.size"])}_ensureMediaConfigFetched(){if(null===this._mediaConfig)return console.log("[Media Config] Fetching"),i.a.get().getMediaConfig().then(e=>(console.log("[Media Config] Fetched config:",e),e)).catch(()=>(console.log("[Media Config] Could not fetch config, so not limiting uploads."),{})).then(e=>{this._mediaConfig=e})}sendStickerContentToRoom(e,t,n,o,r){return i.a.get().sendStickerMessage(t,e,n,o).catch(n=>{throw console.warn("Failed to send content with URL ".concat(e," to room ").concat(t),n),n})}getUploadLimit(){return null!==this._mediaConfig&&void 0!==this._mediaConfig["m.upload.size"]?this._mediaConfig["m.upload.size"]:null}async sendContentListToRoom(e,t,n){if(n.isGuest())return void r.a.dispatch({action:"require_registration"});if(Boolean(l.a.getQuotingEvent())){const e=a.a("dialogs.QuestionDialog");if(!await new Promise(t=>{c.a.createTrackedDialog("Upload Reply Warning","",e,{title:Object(s.a)("Replying With Files"),description:React.createElement("div",null,Object(s.a)("At this time it is not possible to reply with a file. Would you like to upload this file without replying?")),hasCancelButton:!0,button:Object(s.a)("Continue"),onFinished:e=>{t(e)}})}))return}await this._ensureMediaConfigFetched();const o=[],i=[];for(let t=0;t0){const t=a.a("dialogs.UploadFailureDialog"),n=new Promise(n=>{c.a.createTrackedDialog("Upload Failure","",t,{badFiles:o,totalFiles:e.length,contentMessages:this,onFinished:e=>{n(e)}})});if(!await n)return}const u=a.a("dialogs.UploadConfirmDialog");let d=!1,p=Promise.resolve();for(let e=0;e{c.a.createTrackedDialog("Upload Files confirmation","",u,{file:o,currentIndex:e,totalFiles:i.length,onFinished:(e,n)=>{n&&(d=!0),t(e)}})}))break}p=this._sendContentToRoom(o,t,n,p)}}_sendContentToRoom(e,t,n,i){const l={body:e.name||"Attachment",info:{size:e.size}};e.type&&(l.info.mimetype=e.type);const u=new Promise(r=>{0==e.type.indexOf("image/")?(l.msgtype="m.image",_(n,t,e).then(e=>{Object(o.a)(l.info,e),r()},e=>{console.error(e),l.msgtype="m.file",r()})):0==e.type.indexOf("audio/")?(l.msgtype="m.audio",r()):0==e.type.indexOf("video/")?(l.msgtype="m.video",v(n,t,e).then(e=>{Object(o.a)(l.info,e),r()},e=>{l.msgtype="m.file",r()})):(l.msgtype="m.file",r())}),d={fileName:e.name||"Attachment",roomId:t,total:0,loaded:0};let p;function h(e){d.total=e.total,d.loaded=e.loaded,r.a.dispatch({action:"upload_progress",upload:d})}return this.inprogress.push(d),r.a.dispatch({action:"upload_started"}),r.a.dispatch({action:"focus_composer"}),u.then((function(){return d.promise=y(n,t,e,h),d.promise.then((function(e){l.file=e.file,l.url=e.url}))})).then(e=>i).then((function(){return n.sendMessage(t,l)}),(function(e){if(p=e,!d.canceled){let t=Object(s.a)("The file '%(fileName)s' failed to upload.",{fileName:d.fileName});413==e.http_status&&(t=Object(s.a)("The file '%(fileName)s' exceeds this homeserver's size limit for uploads",{fileName:d.fileName}));const n=a.a("dialogs.ErrorDialog");c.a.createTrackedDialog("Upload failed","",n,{title:Object(s.a)("Upload Failed"),description:t})}})).finally(()=>{const e=Object.keys(this.inprogress);for(let t=0;t!e.canceled)}cancelUpload(e){const t=Object.keys(this.inprogress);let n;for(let o=0;o0:Object.values(o).some(e=>e.type===n)}roomHasPendingWidgets(e,t){return this.roomHasPendingWidgetsOfType(e,t)}setRoomWidgetEcho(e,t,n){void 0===this._roomWidgetEcho[e]&&(this._roomWidgetEcho[e]={}),this._roomWidgetEcho[e][t]=n,this.emit("update")}removeRoomWidgetEcho(e,t){delete this._roomWidgetEcho[e][t],0===Object.keys(this._roomWidgetEcho[e]).length&&delete this._roomWidgetEcho[e],this.emit("update")}}let a=null;a||(a=new i),t.a=a},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var o=n(4),r=n(6),i=n(13);class a{static resendUnsentEvents(e){e.getPendingEvents().filter((function(e){return e.status===i.b.NOT_SENT})).forEach((function(e){a.resend(e)}))}static cancelUnsentEvents(e){e.getPendingEvents().filter((function(e){return e.status===i.b.NOT_SENT})).forEach((function(e){a.removeFromQueue(e)}))}static resend(e){const t=o.a.get().getRoom(e.getRoomId());o.a.get().resendEvent(e,t).then((function(t){r.a.dispatch({action:"message_sent",event:e})}),(function(t){console.log("Resend got send failure: "+t.name+"("+t+")"),r.a.dispatch({action:"message_send_failed",event:e})}))}static removeFromQueue(e){o.a.get().cancelPendingEvent(e)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.closest=t.distance=t.patch=t.absolute=t.negate=t.isEqual=t.subtract=t.add=void 0;var o=i(n(251)),r=i(n(126));function i(e){return e&&e.__esModule?e:{default:e}}t.add=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},t.subtract=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},t.isEqual=function(e,t){return e.x===t.x&&e.y===t.y},t.negate=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},t.absolute=function(e){return{x:Math.abs(e.x),y:Math.abs(e.y)}},t.patch=function(e,t){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return n={},(0,r.default)(n,e,t),(0,r.default)(n,"x"===e?"y":"x",o),n};var a=t.distance=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))};t.closest=function(e,t){return Math.min.apply(Math,(0,o.default)(t.map((function(t){return a(e,t)}))))}},function(e,t,n){"use strict";n.d(t,"a",(function(){return d})),n.d(t,"e",(function(){return p})),n.d(t,"d",(function(){return h})),n.d(t,"c",(function(){return m})),n.d(t,"b",(function(){return g}));var o=n(0),r=n.n(o),i=n(4),a=n(118),s=n(9),c=n(3),l=n(1),u=n(212);function d(e,t){const n=new a.a(e);return n.invite(t).then(e=>Promise.resolve({states:e,inviter:n}))}function p(){const e=c.a("dialogs.InviteDialog");s.a.createTrackedDialog("Start DM","",e,{kind:u.a},null,!1,!0)}function h(e){const t=c.a("dialogs.InviteDialog");s.a.createTrackedDialog("Invite Users","",t,{kind:u.b,roomId:e},null,!1,!0)}function m(e){if(!e||"m.room.third_party_invite"!==e.getType())return!1;const t=["key_validity_url","public_key","display_name"];for(let n=0;n{const n=i.a.get().getRoom(e);return function(e,t,n){const o=Object.keys(e).filter(t=>"error"===e[t]);if(1===o.length&&n.fatal){const e=c.a("dialogs.ErrorDialog");s.a.createTrackedDialog("Failed to invite users to the room","",e,{title:Object(l.a)("Failed to invite users to the room:",{roomName:t.name}),description:n.getErrorText(o[0])})}else{const i=[];for(const t of o)if("error"===e[t]){const e=n.getErrorText(t);i.push(t+": "+e)}if(i.length>0){const e=r.a.createElement("div",null,i.map(e=>r.a.createElement("div",{key:e},e))),n=c.a("dialogs.ErrorDialog");s.a.createTrackedDialog("Failed to invite the following users to the room","",n,{title:Object(l.a)("Failed to invite the following users to the %(roomName)s room:",{roomName:t.name}),description:e})}}return e}(t.states,n,t.inviter)}).catch(e=>{console.error(e.stack);const t=c.a("dialogs.ErrorDialog");s.a.createTrackedDialog("Failed to invite","",t,{title:Object(l.a)("Failed to invite"),description:e&&e.message?e.message:Object(l.a)("Operation failed")})})}},function(e,t,n){"use strict";n.d(t,"b",(function(){return N}));var o=n(5),r=n.n(o),i=n(18),a=n.n(i),s=n(85),c=n(0),l=n.n(c),u=n(2),d=n.n(u),p=n(11),h=n.n(p),m=n(14),g=n.n(m),f=n(1),_=n(159),v=n(3),b=n(6),y=n(7),E=n(13),S=n(51),w=n(4),C=n(53),x=n(113),T=n(21),k=n(46);const R={"m.room.message":"messages.MessageEvent","m.sticker":"messages.MessageEvent","m.key.verification.cancel":"messages.MKeyVerificationConclusion","m.key.verification.done":"messages.MKeyVerificationConclusion","m.room.encryption":"messages.EncryptionEvent","m.call.invite":"messages.TextualEvent","m.call.answer":"messages.TextualEvent","m.call.hangup":"messages.TextualEvent"},O={"m.room.encryption":"messages.EncryptionEvent","m.room.canonical_alias":"messages.TextualEvent","m.room.create":"messages.RoomCreate","m.room.member":"messages.TextualEvent","m.room.name":"messages.TextualEvent","m.room.avatar":"messages.RoomAvatarEvent","m.room.third_party_invite":"messages.TextualEvent","m.room.history_visibility":"messages.TextualEvent","m.room.topic":"messages.TextualEvent","m.room.power_levels":"messages.TextualEvent","m.room.pinned_events":"messages.TextualEvent","m.room.server_acl":"messages.TextualEvent","im.vector.modular.widgets":"messages.TextualEvent","m.room.tombstone":"messages.TextualEvent","m.room.join_rules":"messages.TextualEvent","m.room.guest_access":"messages.TextualEvent","m.room.related_groups":"messages.TextualEvent"};for(const e of C.a)O[e]="messages.TextualEvent";function D(e){const t=e.getType();if("m.room.message"===t){const t=e.getContent();if(t&&"m.key.verification.request"===t.msgtype){const n=w.a.get(),o=n&&n.getUserId();return e.getSender()!==o&&t.to!==o?void 0:"messages.MKeyVerificationRequest"}}if("m.key.verification.done"===t){const t=w.a.get(),n=t&&t.getUserId();if(e.getSender()!==n)return}if("m.key.verification.cancel"===t&&y.b.getValue("showHiddenEventsInTimeline")){if(!v.a("messages.MKeyVerificationConclusion").prototype._shouldRender.call(null,e,e.request))return}return e.isState()?O[t]:R[t]}t.a=h()({displayName:"EventTile",propTypes:{mxEvent:d.a.object.isRequired,isRedacted:d.a.bool,continuation:d.a.bool,last:d.a.bool,contextual:d.a.bool,highlights:d.a.array,highlightLink:d.a.string,showUrlPreview:d.a.bool,isSelectedEvent:d.a.bool,onHeightChanged:d.a.func,readReceipts:d.a.arrayOf(d.a.object),readReceiptMap:d.a.object,checkUnmounting:d.a.func,eventSendStatus:d.a.string,tileShape:d.a.string,isTwelveHour:d.a.bool,getRelationsForEvent:d.a.func,showReactions:d.a.bool},getDefaultProps:function(){return{onHeightChanged:function(){}}},getInitialState:function(){return{actionBarFocused:!1,allReadAvatars:!1,verified:null,previouslyRequestedKeys:!1,reactions:this.getReactions()}},statics:{contextType:T.a},componentWillMount:function(){this._suppressReadReceiptAnimation=!0,this._verifyEvent(this.props.mxEvent),this._tile=Object(c.createRef)(),this._replyThread=Object(c.createRef)()},componentDidMount:function(){this._suppressReadReceiptAnimation=!1;const e=this.context;e.on("deviceVerificationChanged",this.onDeviceVerificationChanged),e.on("userTrustStatusChanged",this.onUserVerificationChanged),this.props.mxEvent.on("Event.decrypted",this._onDecrypted),this.props.showReactions&&this.props.mxEvent.on("Event.relationsCreated",this._onReactionsCreated)},componentWillReceiveProps:function(e){e.eventSendStatus!==this.props.eventSendStatus&&this._verifyEvent(e.mxEvent)},shouldComponentUpdate:function(e,t){return!x.a(this.state,t)||!this._propsEqual(this.props,e)},componentWillUnmount:function(){const e=this.context;e.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged),e.removeListener("userTrustStatusChanged",this.onUserVerificationChanged),this.props.mxEvent.removeListener("Event.decrypted",this._onDecrypted),this.props.showReactions&&this.props.mxEvent.removeListener("Event.relationsCreated",this._onReactionsCreated)},_onDecrypted:function(){this._verifyEvent(this.props.mxEvent),this.forceUpdate()},onDeviceVerificationChanged:function(e,t){e===this.props.mxEvent.getSender()&&this._verifyEvent(this.props.mxEvent)},onUserVerificationChanged:function(e,t){e===this.props.mxEvent.getSender()&&this._verifyEvent(this.props.mxEvent)},_verifyEvent:async function(e){if(!e.isEncrypted())return;if(await this.context.isEventSenderVerified(e))return void this.setState({verified:k.a.VERIFIED},()=>{this.props.onHeightChanged()});if(!y.b.isFeatureEnabled("feature_cross_signing"))return void this.setState({verified:k.a.WARNING},this.props.onHeightChanged);if(!this.context.checkUserTrust(e.getSender()).isCrossSigningVerified())return void this.setState({verified:k.a.NORMAL},this.props.onHeightChanged);const t=await this.context.checkEventSenderTrust(e);t?this.setState({verified:t.isVerified()?k.a.VERIFIED:k.a.WARNING},this.props.onHeightChanged):this.setState({verified:k.a.UNKNOWN},this.props.onHeightChanged)},_propsEqual:function(e,t){const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let o=0;o0&&(r=l.a.createElement("span",{className:"mx_EventTile_readAvatarRemainder",onClick:this.toggleAllReadAvatars,style:{right:-(n-15)}},e,"+"))}return l.a.createElement("span",{className:"mx_EventTile_readAvatars"},r,t)},onSenderProfileClick:function(e){const t=this.props.mxEvent;b.a.dispatch({action:"insert_mention",user_id:t.getSender()})},onRequestKeysClick:function(){this.setState({previouslyRequestedKeys:!0}),this.context.cancelAndResendEventRoomKeyRequest(this.props.mxEvent)},onPermalinkClicked:function(e){e.preventDefault(),b.a.dispatch({action:"view_room",event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId()})},_renderE2EPadlock:function(){const e=this.props.mxEvent;if("m.bad.encrypted"===e.getContent().msgtype)return l.a.createElement(A,null);if(e.isEncrypted())return this.state.verified===k.a.NORMAL||this.state.verified===k.a.VERIFIED?void 0:this.state.verified===k.a.UNKNOWN?l.a.createElement(L,null):l.a.createElement(M,null);if(this.context.isRoomEncrypted(e.getRoomId())){if(e.status===E.b.ENCRYPTING)return;if(e.status===E.b.NOT_SENT)return;if(e.isState())return;return l.a.createElement(P,null)}return null},onActionBarFocusChange(e){this.setState({actionBarFocused:e})},getTile(){return this._tile.current},getReplyThread(){return this._replyThread.current},getReactions(){if(!this.props.showReactions||!this.props.getRelationsForEvent)return null;const e=this.props.mxEvent.getId();return e||(console.error("EventTile attempted to get relations for an event without an ID"),console.log(JSON.stringify(this.props.mxEvent,null,4)),console.trace("Stacktrace for https://github.com/vector-im/riot-web/issues/11120")),this.props.getRelationsForEvent(e,"m.annotation","m.reaction")},_onReactionsCreated(e,t){"m.annotation"===e&&"m.reaction"===t&&(this.props.mxEvent.removeListener("Event.relationsCreated",this._onReactionsCreated),this.setState({reactions:this.getReactions()}))},render:function(){const e=v.a("messages.MessageTimestamp"),t=v.a("messages.SenderProfile"),n=v.a("avatars.MemberAvatar"),o=this.props.mxEvent.getContent().msgtype,r=this.props.mxEvent.getType(),i=r.startsWith("m.key.verification")||"m.room.message"===r&&o&&o.startsWith("m.key.verification")||"m.room.encryption"===r;let a=!i&&"m.room.message"!==r&&"m.sticker"!==r&&"m.room.create"!==r,c=D(this.props.mxEvent);if((!c||this.props.mxEvent.isRelation("m.replace"))&&y.b.getValue("showHiddenEventsInTimeline")&&(c="messages.ViewSourceEvent",a=!0),!c){const{mxEvent:e}=this.props;return console.warn("Event type not supported: type:".concat(e.getType()," isState:").concat(e.isState())),l.a.createElement("div",{className:"mx_EventTile mx_EventTile_info mx_MNoticeBody"},l.a.createElement("div",{className:"mx_EventTile_line"},Object(f.a)("This event could not be displayed")))}const u=v.a(c),d=-1!==["sending","queued","encrypting"].indexOf(this.props.eventSendStatus),p=F(this.props.mxEvent)&&this.props.isRedacted,h=this.props.mxEvent.isDecryptionFailure(),m=!!this.props.editState,_=g()({mx_EventTile_bubbleContainer:i,mx_EventTile:!0,mx_EventTile_isEditing:m,mx_EventTile_info:a,mx_EventTile_12hr:this.props.isTwelveHour,mx_EventTile_encrypting:"encrypting"===this.props.eventSendStatus,mx_EventTile_sending:!m&&d,mx_EventTile_notSent:"not_sent"===this.props.eventSendStatus,mx_EventTile_highlight:"notif"!==this.props.tileShape&&this.shouldHighlight(),mx_EventTile_selected:this.props.isSelectedEvent,mx_EventTile_continuation:this.props.tileShape?"":this.props.continuation,mx_EventTile_last:this.props.last,mx_EventTile_contextual:this.props.contextual,mx_EventTile_actionBarFocused:this.state.actionBarFocused,mx_EventTile_verified:!i&&this.state.verified===k.a.VERIFIED,mx_EventTile_unverified:!i&&this.state.verified===k.a.WARNING,mx_EventTile_unknown:!i&&this.state.verified===k.a.UNKNOWN,mx_EventTile_bad:h,mx_EventTile_emote:"m.emote"===o,mx_EventTile_redacted:p});let b="#";this.props.permalinkCreator&&(b=this.props.permalinkCreator.forEvent(this.props.mxEvent.getId()));const E=this.getReadAvatars();let w,C,x,T;if("notif"===this.props.tileShape?(x=24,T=!0):"messages.RoomCreate"===c||i?(x=0,T=!1):a?(x=14,T=!1):this.props.continuation&&"file_grid"!==this.props.tileShape?(x=0,T=!1):(x=30,T=!0),this.props.mxEvent.sender&&x&&(w=l.a.createElement("div",{className:"mx_EventTile_avatar"},l.a.createElement(n,{member:this.props.mxEvent.sender,width:x,height:x,viewUserOnClick:!0}))),T){let e=null;this.props.tileShape&&"reply"!==this.props.tileShape&&"reply_preview"!==this.props.tileShape?C=l.a.createElement(t,{mxEvent:this.props.mxEvent,enableFlair:!0}):("m.image"===o?e=Object(f.b)("%(senderName)s sent an image"):"m.video"===o?e=Object(f.b)("%(senderName)s sent a video"):"m.file"===o&&(e=Object(f.b)("%(senderName)s uploaded a file")),C=l.a.createElement(t,{onClick:this.onSenderProfileClick,mxEvent:this.props.mxEvent,enableFlair:!e,text:e}))}const R=v.a("messages.MessageActionBar"),O=m?void 0:l.a.createElement(R,{mxEvent:this.props.mxEvent,reactions:this.state.reactions,permalinkCreator:this.props.permalinkCreator,getTile:this.getTile,getReplyThread:this.getReplyThread,onFocusChange:this.onActionBarFocusChange}),I=this.props.mxEvent.getTs()?l.a.createElement(e,{showTwelveHour:this.props.isTwelveHour,ts:this.props.mxEvent.getTs()}):null,N=l.a.createElement("div",{className:"mx_EventTile_keyRequestInfo_tooltip_contents"},l.a.createElement("p",null,this.state.previouslyRequestedKeys?Object(f.a)("Your key share request has been sent - please check your other sessions for key share requests."):Object(f.a)("Key share requests are sent to your other sessions automatically. If you rejected or dismissed the key share request on your other sessions, click here to request the keys for this session again.")),l.a.createElement("p",null,Object(f.a)("If your other sessions do not have the key for this message you will not be able to decrypt them."))),A=this.state.previouslyRequestedKeys?Object(f.a)("Key request sent."):Object(f.a)("Re-request encryption keys from your other sessions.",{},{requestLink:e=>l.a.createElement("a",{onClick:this.onRequestKeysClick},e)}),M=v.a("elements.TooltipButton"),P=h?l.a.createElement("div",{className:"mx_EventTile_keyRequestInfo"},l.a.createElement("span",{className:"mx_EventTile_keyRequestInfo_text"},A),l.a.createElement(M,{helpText:N})):null;let L;if(!p){const e=v.a("messages.ReactionsRow");L=l.a.createElement(e,{mxEvent:this.props.mxEvent,reactions:this.state.reactions})}switch(this.props.tileShape){case"notif":{const e=this.context.getRoom(this.props.mxEvent.getRoomId());return l.a.createElement("div",{className:_},l.a.createElement("div",{className:"mx_EventTile_roomName"},l.a.createElement("a",{href:b,onClick:this.onPermalinkClicked},e?e.name:"")),l.a.createElement("div",{className:"mx_EventTile_senderDetails"},w,l.a.createElement("a",{href:b,onClick:this.onPermalinkClicked},C,I)),l.a.createElement("div",{className:"mx_EventTile_line"},l.a.createElement(u,{ref:this._tile,mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,onHeightChanged:this.props.onHeightChanged})))}case"file_grid":return l.a.createElement("div",{className:_},l.a.createElement("div",{className:"mx_EventTile_line"},l.a.createElement(u,{ref:this._tile,mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,tileShape:this.props.tileShape,onHeightChanged:this.props.onHeightChanged})),l.a.createElement("a",{className:"mx_EventTile_senderDetailsLink",href:b,onClick:this.onPermalinkClicked},l.a.createElement("div",{className:"mx_EventTile_senderDetails"},C,I)));case"reply":case"reply_preview":{let e;return"reply_preview"===this.props.tileShape&&(e=s.a.makeThread(this.props.mxEvent,this.props.onHeightChanged,this.props.permalinkCreator,this._replyThread)),l.a.createElement("div",{className:_},w,C,l.a.createElement("div",{className:"mx_EventTile_reply"},l.a.createElement("a",{href:b,onClick:this.onPermalinkClicked},I),!i&&this._renderE2EPadlock(),e,l.a.createElement(u,{ref:this._tile,mxEvent:this.props.mxEvent,highlights:this.props.highlights,highlightLink:this.props.highlightLink,onHeightChanged:this.props.onHeightChanged,showUrlPreview:!1})))}default:{const e=s.a.makeThread(this.props.mxEvent,this.props.onHeightChanged,this.props.permalinkCreator,this._replyThread);return l.a.createElement("div",{className:_,tabIndex:-1},l.a.createElement("div",{className:"mx_EventTile_msgOption"},E),C,l.a.createElement("div",{className:"mx_EventTile_line"},l.a.createElement("a",{href:b,onClick:this.onPermalinkClicked,"aria-label":Object(S.d)(new Date(this.props.mxEvent.getTs()),this.props.isTwelveHour)},I),!i&&this._renderE2EPadlock(),e,l.a.createElement(u,{ref:this._tile,mxEvent:this.props.mxEvent,replacingEventId:this.props.replacingEventId,editState:this.props.editState,highlights:this.props.highlights,highlightLink:this.props.highlightLink,showUrlPreview:this.props.showUrlPreview,onHeightChanged:this.props.onHeightChanged}),P,L,O),w)}}}});const I=["m.room.message","m.sticker"];function F(e){return I.includes(e.getType())}function N(e){if(e.isRedacted()&&!F(e))return!1;if(e.isRelation("m.replace"))return!1;const t=D(e);return void 0!==t&&("messages.TextualEvent"===t?""!==_.a(e):"messages.RoomCreate"!==t||Boolean(e.getContent().predecessor))}function A(e){return l.a.createElement(U,a()({title:Object(f.a)("This message cannot be decrypted"),icon:"undecryptable"},e))}function M(e){return l.a.createElement(U,a()({title:Object(f.a)("Encrypted by an unverified session"),icon:"unverified"},e))}function P(e){return l.a.createElement(U,a()({title:Object(f.a)("Unencrypted"),icon:"unencrypted"},e))}function L(e){return l.a.createElement(U,a()({title:Object(f.a)("Encrypted by a deleted session"),icon:"unknown"},e))}class U extends l.a.Component{constructor(){super(),r()(this,"onHoverStart",()=>{this.setState({hover:!0})}),r()(this,"onHoverEnd",()=>{this.setState({hover:!1})}),this.state={hover:!1}}render(){let e=null;if(this.state.hover){const t=v.a("elements.Tooltip");e=l.a.createElement(t,{className:"mx_EventTile_e2eIcon_tooltip",label:this.props.title,dir:"auto"})}let t="mx_EventTile_e2eIcon mx_EventTile_e2eIcon_".concat(this.props.icon);return y.b.getValue("alwaysShowEncryptionIcons")||(t+=" mx_EventTile_e2eIcon_hidden"),l.a.createElement("div",{className:t,onClick:this.onClick,onMouseEnter:this.onHoverStart,onMouseLeave:this.onHoverEnd},e)}}r()(U,"propTypes",{icon:d.a.string.isRequired,title:d.a.string.isRequired})},function(e,t,n){"use strict";n.d(t,"a",(function(){return b}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(3),c=n(1),l=n(2),u=n.n(l),d=n(6),p=n(51),h=n(13),m=n(31),g=n(7),f=n(735),_=n.n(f),v=n(21);class b extends a.a.Component{constructor(e){super(e),r()(this,"onRoomRedaction",(e,t)=>{this.unmounted||this.state.events.some(t=>t.getId()===e.getId())&&this.forceUpdate()}),this.state={events:[],loadedEv:null,loading:!0,err:!1},this.onQuoteClick=this.onQuoteClick.bind(this),this.canCollapse=this.canCollapse.bind(this),this.collapse=this.collapse.bind(this)}static getParentEventId(e){if(!e||e.isRedacted())return;const t=e.getWireContent()["m.relates_to"];if(t&&t["m.in_reply_to"]){const e=t["m.in_reply_to"];if(e&&e.event_id)return e.event_id}}static stripPlainReply(e){const t=e.split("\n");for(;t.length&&t[0].startsWith("> ");)t.shift();return""===t[0]&&t.shift(),t.join("\n")}static stripHTMLReply(e){return e.replace(/^[\s\S]+?<\/mx-reply>/,"")}static getNestedReplyText(e,t){if(!e)return null;let{body:n,formatted_body:o}=e.getContent();this.getParentEventId(e)&&(n&&(n=this.stripPlainReply(n)),o&&(o=this.stripHTMLReply(o))),n||(n=""),o||(o=_()(n).replace(/\n/g,"
"));const r=t.forEvent(e.getId()),i=Object(m.g)(e.getSender()),a=e.getSender();switch(e.getContent().msgtype){case"m.text":case"m.notice":{o='
In reply to ').concat(a,"")+"
".concat(o,"
");const e=n.trim().split("\n");e.length>0&&(e[0]="<".concat(a,"> ").concat(e[0]),n=e.map(e=>"> ".concat(e)).join("\n")+"\n\n");break}case"m.image":o='
In reply to ').concat(a,"")+"
sent an image.
",n="> <".concat(a,"> sent an image.\n\n");break;case"m.video":o='
In reply to ').concat(a,"")+"
sent a video.
",n="> <".concat(a,"> sent a video.\n\n");break;case"m.audio":o='
In reply to ').concat(a,"")+"
sent an audio file.
",n="> <".concat(a,"> sent an audio file.\n\n");break;case"m.file":o='
In reply to ').concat(a,"")+"
sent a file.
",n="> <".concat(a,"> sent a file.\n\n");break;case"m.emote":{o='
In reply to * ')+'').concat(a,"
").concat(o,"
");const e=n.trim().split("\n");e.length>0&&(e[0]="* <".concat(a,"> ").concat(e[0]),n=e.map(e=>"> ".concat(e)).join("\n")+"\n\n");break}default:return null}return{body:n,html:o}}static makeReplyMixIn(e){return e?{"m.relates_to":{"m.in_reply_to":{event_id:e.getId()}}}:{}}static makeThread(e,t,n,o){return b.getParentEventId(e)?a.a.createElement(b,{parentEv:e,onHeightChanged:t,ref:o,permalinkCreator:n}):a.a.createElement("div",null)}componentWillMount(){this.unmounted=!1,this.room=this.context.getRoom(this.props.parentEv.getRoomId()),this.room.on("Room.redaction",this.onRoomRedaction),this.room.on("Room.redactionCancelled",this.onRoomRedaction),this.initialize()}componentDidUpdate(){this.props.onHeightChanged()}componentWillUnmount(){this.unmounted=!0,this.room&&(this.room.removeListener("Room.redaction",this.onRoomRedaction),this.room.removeListener("Room.redactionCancelled",this.onRoomRedaction))}async initialize(){const{parentEv:e}=this.props,t=await this.getEvent(b.getParentEventId(e));this.unmounted||(t?this.setState({events:[t]},this.loadNextEvent):this.setState({err:!0}))}async loadNextEvent(){if(this.unmounted)return;const e=this.state.events[0],t=b.getParentEventId(e);if(!t)return void this.setState({loading:!1});const n=await this.getEvent(t);this.unmounted||(n?this.setState({loadedEv:n}):this.setState({err:!0}))}async getEvent(e){const t=this.room.findEventById(e);if(t)return t;try{await this.context.getEventTimeline(this.room.getUnfilteredTimelineSet(),e)}catch(e){return null}return this.room.findEventById(e)}canCollapse(){return this.state.events.length>1}collapse(){this.initialize()}onQuoteClick(){const e=[this.state.loadedEv,...this.state.events];this.setState({loadedEv:null,events:e},this.loadNextEvent),d.a.dispatch({action:"focus_composer"})}render(){let e=null;if(this.state.err)e=a.a.createElement("blockquote",{className:"mx_ReplyThread mx_ReplyThread_error"},Object(c.a)("Unable to load event that was replied to, it either does not exist or you do not have permission to view it."));else if(this.state.loadedEv){const t=this.state.loadedEv,n=s.a("elements.Pill"),o=this.context.getRoom(t.getRoomId());e=a.a.createElement("blockquote",{className:"mx_ReplyThread"},Object(c.a)("In reply to ",{},{a:e=>a.a.createElement("a",{onClick:this.onQuoteClick,className:"mx_ReplyThread_show"},e),pill:a.a.createElement(n,{type:n.TYPE_USER_MENTION,room:o,url:Object(m.g)(t.getSender()),shouldShowPillAvatar:!0})}))}else if(this.state.loading){const t=s.a("elements.Spinner");e=a.a.createElement(t,{w:16,h:16})}const t=s.a("views.rooms.EventTile"),n=s.a("messages.DateSeparator"),o=this.state.events.map(e=>{let o=null;return Object(p.e)(this.props.parentEv.getDate(),e.getDate())&&(o=a.a.createElement("a",{href:this.props.url},a.a.createElement(n,{ts:e.getTs()}))),a.a.createElement("blockquote",{className:"mx_ReplyThread",key:e.getId()},o,a.a.createElement(t,{mxEvent:e,tileShape:"reply",onHeightChanged:this.props.onHeightChanged,permalinkCreator:this.props.permalinkCreator,isRedacted:e.isRedacted(),isTwelveHour:g.b.getValue("showTwelveHourTimestamps")}))});return a.a.createElement("div",null,a.a.createElement("div",null,e),a.a.createElement("div",null,o))}}r()(b,"propTypes",{parentEv:u.a.instanceOf(h.k),onHeightChanged:u.a.func.isRequired,permalinkCreator:u.a.instanceOf(m.a).isRequired}),r()(b,"contextType",v.a)},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l})),n.d(t,"d",(function(){return u})),n.d(t,"c",(function(){return d})),n.d(t,"e",(function(){return p}));var o=n(19),r=n(28),i=n(8),a=n(33);function s(e){return Object.values(e.keys)[0]}class c extends r.EventEmitter{constructor(e,t,n){super(),Object.defineProperty(this,"userId",{enumerable:!0,value:e}),this._callbacks=t||{},this._cacheCallbacks=n||{},this.keys={},this.firstUse=!0}async getCrossSigningKey(t,n){const o=["self_signing","user_signing"].indexOf(t)>=0;if(!this._callbacks.getCrossSigningKey)throw new Error("No getCrossSigningKey callback supplied");function r(t){if(!t)return;const o=new e.Olm.PkSigning,r=o.init_with_seed(t);if(r===n)return[r,o];o.free()}let i;void 0===n&&(n=this.getId(t)),this._cacheCallbacks.getCrossSigningKeyCache&&o&&(i=await this._cacheCallbacks.getCrossSigningKeyCache(t,n));const a=r(i);if(a)return a;i=await this._callbacks.getCrossSigningKey(t,n);const s=r(i);if(s)return this._cacheCallbacks.storeCrossSigningKeyCache&&o&&await this._cacheCallbacks.storeCrossSigningKeyCache(t,i),s;if(!i)throw new Error("getCrossSigningKey callback for "+t+" returned falsey");throw new Error("Key type "+t+" from getCrossSigningKey callback did not match")}static fromStorage(e,t){const n=new c(t);for(const t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);return n}toStorage(){return{keys:this.keys,firstUse:this.firstUse}}async isStoredInSecretStorage(e){const t=await e.isStored("m.cross_signing.master",!1)||{};function n(e){for(const n of Object.keys(t))e[n]||delete t[n]}for(const t of["self_signing","user_signing"])n(await e.isStored("m.cross_signing.".concat(t),!1)||{});return Object.keys(t).length?t:null}static async storeInSecretStorage(e,t){for(const n of Object.keys(e)){const r=Object(o.encodeBase64)(e[n]);await t.store("m.cross_signing.".concat(n),r)}}static async getFromSecretStorage(e,t){const n=await t.get("m.cross_signing.".concat(e));return Object(o.decodeBase64)(n)}getId(e){if(e=e||"master",!this.keys[e])return null;return s(this.keys[e])}async resetKeys(t){if(!this._callbacks.saveCrossSigningKeys)throw new Error("No saveCrossSigningKeys callback supplied");if(void 0===t||t&l.MASTER||!this.keys.master)t=l.MASTER|l.USER_SIGNING|l.SELF_SIGNING;else if(0===t)return;const n={},r={};let i,a;try{if(t&l.MASTER?(i=new e.Olm.PkSigning,n.master=i.generate_seed(),a=i.init_with_seed(n.master),r.master={user_id:this.userId,usage:["master"],keys:{["ed25519:"+a]:a}}):[a,i]=await this.getCrossSigningKey("master"),t&l.SELF_SIGNING){const t=new e.Olm.PkSigning;try{n.self_signing=t.generate_seed();const e=t.init_with_seed(n.self_signing);r.self_signing={user_id:this.userId,usage:["self_signing"],keys:{["ed25519:"+e]:e}},Object(o.pkSign)(r.self_signing,i,this.userId,a)}finally{t.free()}}if(t&l.USER_SIGNING){const t=new e.Olm.PkSigning;try{n.user_signing=t.generate_seed();const e=t.init_with_seed(n.user_signing);r.user_signing={user_id:this.userId,usage:["user_signing"],keys:{["ed25519:"+e]:e}},Object(o.pkSign)(r.user_signing,i,this.userId,a)}finally{t.free()}}Object.assign(this.keys,r),this._callbacks.saveCrossSigningKeys(n)}finally{i&&i.free()}}setKeys(e){const t={};if(e.master){if(e.master.user_id!==this.userId){const t="Mismatched user ID "+e.master.user_id+" in master key from "+this.userId;throw i.a.error(t),new Error(t)}this.keys.master?s(e.master)!==this.getId()&&(this.firstUse=!1):this.firstUse=!0,t.master=e.master}else{if(!this.keys.master)throw new Error("Tried to set cross-signing keys without a master key");t.master=this.keys.master}const n=s(t.master);if(e.user_signing){if(e.user_signing.user_id!==this.userId){const t="Mismatched user ID "+e.master.user_id+" in user_signing key from "+this.userId;throw i.a.error(t),new Error(t)}try{Object(o.pkVerify)(e.user_signing,n,this.userId)}catch(e){throw i.a.error("invalid signature on user-signing key"),e}}if(e.self_signing){if(e.self_signing.user_id!==this.userId){const t="Mismatched user ID "+e.master.user_id+" in self_signing key from "+this.userId;throw i.a.error(t),new Error(t)}try{Object(o.pkVerify)(e.self_signing,n,this.userId)}catch(e){throw i.a.error("invalid signature on self-signing key"),e}}e.master&&(this.keys.master=e.master,this.keys.self_signing=null,this.keys.user_signing=null),e.self_signing&&(this.keys.self_signing=e.self_signing),e.user_signing&&(this.keys.user_signing=e.user_signing)}async signObject(e,t){if(!this.keys[t])throw new Error("Attempted to sign with "+t+" key but no such key present");const[n,r]=await this.getCrossSigningKey(t);try{return Object(o.pkSign)(e,r,this.userId,n),e}finally{r.free()}}async signUser(e){if(this.keys.user_signing)return this.signObject(e.keys.master,"user_signing");i.a.info("No user signing key: not signing user")}async signDevice(e,t){if(e!==this.userId)throw new Error("Trying to sign ".concat(e,"'s device; can only sign our own device"));if(this.keys.self_signing)return this.signObject({algorithms:t.algorithms,keys:t.keys,device_id:t.deviceId,user_id:e},"self_signing");i.a.info("No self signing key: not signing device")}checkUserTrust(e){if(this.userId===e.userId&&this.getId()&&this.getId()===e.getId()&&this.getId("self_signing")&&this.getId("self_signing")===e.getId("self_signing"))return new u(!0,this.firstUse);if(!this.keys.user_signing)return new u(!1,e.firstUse);let t;const n=e.keys.master,r=this.getId("user_signing");try{Object(o.pkVerify)(n,r,this.userId),t=!0}catch(e){t=!1}return new u(t,e.firstUse)}checkDeviceTrust(e,t,n,r){const i=this.checkUserTrust(e),a=e.keys.self_signing;if(!a)return new d(!1,!1,n,r);const c=function(e,t){return{algorithms:e.algorithms,keys:e.keys,device_id:e.deviceId,user_id:t,signatures:e.signatures}}(t,e.userId);try{return Object(o.pkVerify)(a,e.getId(),e.userId),Object(o.pkVerify)(c,s(a),e.userId),d.fromUserTrustLevel(i,n,r)}catch(e){return new d(!1,!1,n,r)}}getCacheCallbacks(){return this._cacheCallbacks}}const l={MASTER:4,USER_SIGNING:2,SELF_SIGNING:1};class u{constructor(e,t){this._crossSigningVerified=e,this._tofu=t}isVerified(){return this.isCrossSigningVerified()}isCrossSigningVerified(){return this._crossSigningVerified}isTofu(){return this._tofu}}class d{constructor(e,t,n,o){this._crossSigningVerified=e,this._tofu=t,this._localVerified=n,this._trustCrossSignedDevices=o}static fromUserTrustLevel(e,t,n){return new d(e._crossSigningVerified,e._tofu,t,n)}isVerified(){return Boolean(this.isLocallyVerified()||this._trustCrossSignedDevices&&this.isCrossSigningVerified())}isCrossSigningVerified(){return this._crossSigningVerified}isLocallyVerified(){return this._localVerified}isTofu(){return this._tofu}}function p(e){return{getCrossSigningKeyCache:function(t,n){return new Promise(n=>e.doTxn("readonly",[a.a.STORE_ACCOUNT],o=>{e.getSecretStorePrivateKey(o,n,t)}))},storeCrossSigningKeyCache:function(t,n){return e.doTxn("readwrite",[a.a.STORE_ACCOUNT],o=>{e.storeSecretStorePrivateKey(o,t,n)})}}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var o=n(5),r=n.n(o),i=n(4),a=n(53),s=n(7),c=n(1),l=n(6);class u{constructor(){r()(this,"_lists",[]),r()(this,"_roomIds",[]),r()(this,"_mjolnirWatchRef",null),r()(this,"_dispatcherRef",null),r()(this,"_onAction",e=>{"setup_mjolnir"===e.action&&(console.log("Setting up Mjolnir: after sync"),this.setup())}),r()(this,"_onEvent",e=>{i.a.get()&&this._roomIds.includes(e.getRoomId())&&a.a.includes(e.getType())&&this._updateLists(this._roomIds)})}get roomIds(){return this._roomIds}get lists(){return this._lists}start(){this._mjolnirWatchRef=s.b.watchSetting("mjolnirRooms",null,this._onListsChanged.bind(this)),this._dispatcherRef=l.a.register(this._onAction),l.a.dispatch({action:"do_after_sync_prepared",deferred_action:{action:"setup_mjolnir"}})}setup(){i.a.get()&&(this._updateLists(s.b.getValue("mjolnirRooms")),i.a.get().on("RoomState.events",this._onEvent))}stop(){this._mjolnirWatchRef&&(s.b.unwatchSetting(this._mjolnirWatchRef),this._mjolnirWatchRef=null),this._dispatcherRef&&(l.a.unregister(this._dispatcherRef),this._dispatcherRef=null),i.a.get()&&i.a.get().removeListener("RoomState.events",this._onEvent)}async getOrCreatePersonalList(){let e=s.b.getValue("mjolnirPersonalRoom");if(!e){const t=await i.a.get().createRoom({name:Object(c.a)("My Ban List"),topic:Object(c.a)("This is your list of users/servers you have blocked - don't leave the room!"),preset:"private_chat"});e=t.room_id,await s.b.setValue("mjolnirPersonalRoom",null,s.a.ACCOUNT,e),await s.b.setValue("mjolnirRooms",null,s.a.ACCOUNT,[e,...this._roomIds])}if(!e)throw new Error("Error finding a room ID to use");let t=this._lists.find(t=>t.roomId===e);return t||(t=new a.b(e)),t}getPersonalList(){const e=s.b.getValue("mjolnirPersonalRoom");if(!e)return null;let t=this._lists.find(t=>t.roomId===e);return t||(t=new a.b(e)),t}async subscribeToList(e){const t=[...this._roomIds,e];await s.b.setValue("mjolnirRooms",null,s.a.ACCOUNT,t),this._lists.push(new a.b(e))}async unsubscribeFromList(e){const t=this._roomIds.filter(t=>t!==e);await s.b.setValue("mjolnirRooms",null,s.a.ACCOUNT,t),this._lists=this._lists.filter(t=>t.roomId!==e)}_onListsChanged(e,t,n,o){this._updateLists(o)}_updateLists(e){if(i.a.get()&&(console.log("Updating Mjolnir ban lists to: "+e),this._lists=[],this._roomIds=e||[],e))for(const t of e)this._lists.push(new a.b(t))}isServerBanned(e){for(const t of this._lists)for(const n of t.serverRules)if(n.isMatch(e))return!0;return!1}isUserBanned(e){for(const t of this._lists)for(const n of t.userRules)if(n.isMatch(e))return!0;return!1}static sharedInstance(){return u._instance||(u._instance=new u),u._instance}}r()(u,"_instance",null)},function(e,t,n){"use strict";n.d(t,"b",(function(){return v})),n.d(t,"c",(function(){return b})),n.d(t,"d",(function(){return y})),n.d(t,"a",(function(){return E}));var o=n(5),r=n.n(o),i=n(32),a=n.n(i),s=n(7),c=n(67),l=n(4),u=n(56),d=n.n(u),p=n(13),h=n(16);class m{constructor(e,t){this.apiUrl=e,this.uiUrl=t,this.scalarToken=null,this.termsInteractionCallback=void 0;const n=h.a.get().integrations_rest_url,o=h.a.get().integrations_ui_url;this.isDefaultManager=e===n&&o===t}_writeTokenToStore(){window.localStorage.setItem("mx_scalar_token_at_"+this.apiUrl,this.scalarToken),this.isDefaultManager&&window.localStorage.removeItem("mx_scalar_token")}_readTokenFromStore(){let e=window.localStorage.getItem("mx_scalar_token_at_"+this.apiUrl);return!e&&this.isDefaultManager&&(e=window.localStorage.getItem("mx_scalar_token")),e}_readToken(){return this.scalarToken?this.scalarToken:this._readTokenFromStore()}setTermsInteractionCallback(e){this.termsInteractionCallback=e}connect(){return this.getScalarToken().then(e=>{this.scalarToken=e})}hasCredentials(){return null!=this.scalarToken}getScalarToken(){const e=this._readToken();return e?this._checkToken(e).catch(e=>{if(e instanceof c.b)throw e;return this.registerForToken()}):this.registerForToken()}_getAccountName(e){const t=this.apiUrl+"/account";return new Promise((function(n,o){d()({method:"GET",uri:t,qs:{scalar_token:e,v:"1.1"},json:!0},(e,t,r)=>{e?o(e):r&&"M_TERMS_NOT_SIGNED"===r.errcode?o(new c.b):t.statusCode/100!=2?o(r):r&&r.user_id?n(r.user_id):o(new Error("Missing user_id in response"))})}))}_checkToken(e){return this._getAccountName(e).then(t=>{const n=l.a.get().getUserId();if(t!==n)throw new Error("Scalar token is owned by someone else: "+n);return e}).catch(t=>{if(t instanceof c.b){console.log("Integration manager requires new terms to be agreed to");const t=a.a.parse(this.apiUrl);return t.path="",t.pathname="",Object(c.d)([new c.a(p.o.IM,t.format(),e)],this.termsInteractionCallback).then(()=>e)}throw t})}registerForToken(){return l.a.get().getOpenIdToken().then(e=>this.exchangeForScalarToken(e)).then(e=>this._checkToken(e)).then(e=>(this.scalarToken=e,this._writeTokenToStore(),e))}exchangeForScalarToken(e){const t=this.apiUrl;return new Promise((function(n,o){d()({method:"POST",uri:t+"/register",qs:{v:"1.1"},body:e,json:!0},(e,t,r)=>{e?o(e):t.statusCode/100!=2?o({statusCode:t.statusCode}):r&&r.scalar_token?n(r.scalar_token):o(new Error("Missing scalar_token in response"))})}))}getScalarPageTitle(e){let t=this.apiUrl+"/widgets/title_lookup";return t=this.getStarterLink(t),t+="&curl="+encodeURIComponent(e),new Promise((function(e,n){d()({method:"GET",uri:t,json:!0},(t,o,r)=>{if(t)n(t);else if(o.statusCode/100!=2)n({statusCode:o.statusCode});else if(r){let t="";r.page_title_cache_item&&r.page_title_cache_item.cached_title&&(t=r.page_title_cache_item.cached_title),e(t)}else n(new Error("Missing page title in response"))})}))}disableWidgetAssets(e,t){let n=this.apiUrl+"/widgets/set_assets_state";return n=this.getStarterLink(n),new Promise((o,r)=>{d()({method:"GET",uri:n,json:!0,qs:{widget_type:e,widget_id:t,state:"disable"}},(e,t,n)=>{e?r(e):t.statusCode/100!=2?r({statusCode:t.statusCode}):n?o():r(new Error("Failed to set widget assets state"))})})}getScalarInterfaceUrlForRoom(e,t,n){const o=e.roomId,r=e.name;let i=this.uiUrl;return i+="?scalar_token="+encodeURIComponent(this.scalarToken),i+="&room_id="+encodeURIComponent(o),i+="&room_name="+encodeURIComponent(r),i+="&theme="+encodeURIComponent(s.b.getValue("theme")),n&&(i+="&integ_id="+encodeURIComponent(n)),t&&(i+="&screen="+encodeURIComponent(t)),i}getStarterLink(e){return e+"?scalar_token="+encodeURIComponent(this.scalarToken)}}var g=n(3),f=n(9),_=n(39);const v="account",b="config",y="homeserver";class E{constructor(e,t,n){r()(this,"apiUrl",void 0),r()(this,"uiUrl",void 0),r()(this,"kind",void 0),r()(this,"id",void 0),this.kind=e,this.apiUrl=t,this.uiUrl=n,this.uiUrl||(this.uiUrl=this.apiUrl)}get name(){return a.a.parse(this.uiUrl).host}get trimmedApiUrl(){const e=a.a.parse(this.apiUrl);return e.pathname="",e.path="",e.format()}getScalarClient(){return new m(this.apiUrl,this.uiUrl)}async open(e=null,t=null,n=null){if(!s.b.getValue("integrationProvisioning"))return _.a.sharedInstance().showDisabledDialog();const o=g.a("views.settings.IntegrationManager"),r=f.a.createTrackedDialog("Integration Manager","",o,{loading:!0},"mx_IntegrationManager"),i=this.getScalarClient();i.setTermsInteractionCallback((e,t)=>Object(c.c)(e,t,"mx_TermsDialog_forIntegrationManager"));const a={};try{await i.connect(),i.hasCredentials()?a.url=i.getScalarInterfaceUrlForRoom(e,t,n):a.connected=!1}catch(e){if(e instanceof c.b)return void r.close();console.error(e),a.connected=!1}r.close(),f.a.createTrackedDialog("Integration Manager","",o,a,"mx_IntegrationManager")}}},function(e,t){var n=e.exports={version:"2.6.11"};"number"==typeof __e&&(__e=n)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,n=void 0,r=[],i=void 0,a=!1,s=function(e,n){return t(e,r[n])},c=function(){for(var t=arguments.length,o=Array(t),c=0;c1)throw new Error("Multiple storage key requests not implemented");const[l,u]=n[0];if(h()&&d[l])return[l,d[l]];const p=async({passphrase:e,recoveryKey:t})=>e?Object(a.a)(e,u.passphrase.salt,u.passphrase.iterations):Object(s.a)(t),g=r.a("dialogs.secretstorage.AccessSecretStorageDialog"),{finished:f}=o.a.createTrackedDialog("Access Secret Storage dialog","",g,{keyInfo:u,checkPrivateKey:async e=>{if(!u.pubkey)return!0;const t=await p(e);return i.a.get().checkSecretStoragePrivateKey(t,u.pubkey)}},null,!1,!1,{onBeforeClose:async e=>"backgroundClick"!==e||async function(e){let t;t="m.cross_signing.user_signing"===e?Object(c.a)("If you cancel now, you won't complete verifying the other user."):"m.cross_signing.self_signing"===e?Object(c.a)("If you cancel now, you won't complete verifying your other session."):Object(c.a)("If you cancel now, you won't complete your secret storage operation.");const n=r.a("dialogs.QuestionDialog"),[i]=await o.a.createDialog(n,{title:Object(c.a)("Cancel entering passphrase?"),description:t,danger:!0,cancelButton:Object(c.a)("Enter passphrase"),button:Object(c.a)("Cancel")}).finished;return i}(t)}),[_]=await f;if(!_)throw new m;const v=await p(_);return h()&&(d[l]=v),[l,v]},onSecretRequested:async function({user_id:e,device_id:t,request_id:n,name:o,device_trust:r}){console.log("onSecretRequested",e,t,n,o,r);const a=i.a.get();if(e===a.getUserId())if(r&&r.isVerified()){if(o.startsWith("m.cross_signing")){const e=a.getCrossSigningCacheCallbacks();if(!e.getCrossSigningKeyCache)return;if("m.cross_signing.self_signing"===o){const n=await e.getCrossSigningKeyCache("self_signing");return n||console.log("self_signing requested by ".concat(t,", but not found in cache")),n&&Object(u.encodeBase64)(n)}if("m.cross_signing.user_signing"===o){const n=await e.getCrossSigningKeyCache("user_signing");return n||console.log("user_signing requested by ".concat(t,", but not found in cache")),n&&Object(u.encodeBase64)(n)}}else if("m.megolm_backup.v1"===o){const e=await a._crypto.getSessionBackupPrivateKey();return e||console.log("session backup key requested by ".concat(t,", but not found in cache")),e&&Object(u.encodeBase64)(e)}console.warn("onSecretRequested didn't recognise the secret named ",o)}else console.log("CrossSigningManager: Ignoring request from untrusted device ".concat(t))}};async function f(){let e;const t=r.a("dialogs.keybackup.RestoreKeyBackupDialog"),{finished:n}=o.a.createTrackedDialog("Restore Backup","",t,{showSummary:!1,keyCallback:t=>e=t},null,!1,!0);if(!await n)throw new Error("Key backup prompt cancelled");return e}async function _(e=(async()=>{}),t=!1){const a=i.a.get();p=!0;try{if(!await a.hasSecretStorageKey()||t){const{finished:e}=o.a.createTrackedDialogAsync("Create Secret Storage dialog","",Promise.all([n.e(0),n.e(3)]).then(n.bind(null,1430)),{force:t},null,!1,!0),[r]=await e;if(!r)throw new Error("Secret storage creation canceled")}else{const e=r.a("dialogs.InteractiveAuthDialog");await a.bootstrapSecretStorage({authUploadDeviceSigningKeys:async t=>{const{finished:n}=o.a.createTrackedDialog("Cross-signing keys dialog","",e,{title:Object(c.a)("Setting up keys"),matrixClient:i.a.get(),makeRequest:t}),[r]=await n;if(!r)throw new Error("Cross-signing key upload auth canceled")},getBackupPassphrase:f})}return await e()}finally{p=!1,h()||(d={})}}},function(e,t,n){"use strict";n.r(t),function(e){n.d(t,"ContentHelpers",(function(){return R})),n.d(t,"request",(function(){return D})),n.d(t,"getRequest",(function(){return I})),n.d(t,"wrapRequest",(function(){return F})),n.d(t,"setCryptoStoreFactory",(function(){return A})),n.d(t,"createClient",(function(){return M}));var o=n(155),r=n(97),i=n(262),a=n(263);n.d(t,"CRYPTO_ENABLED",(function(){return a.a})),n.d(t,"MatrixClient",(function(){return a.b}));var s=n(38);n.d(t,"PREFIX_R0",(function(){return s.f})),n.d(t,"PREFIX_UNSTABLE",(function(){return s.g})),n.d(t,"PREFIX_IDENTITY_V1",(function(){return s.c})),n.d(t,"PREFIX_IDENTITY_V2",(function(){return s.d})),n.d(t,"PREFIX_MEDIA_R0",(function(){return s.e})),n.d(t,"MatrixHttpApi",(function(){return s.b})),n.d(t,"MatrixError",(function(){return s.a}));var c=n(226);n.d(t,"AutoDiscovery",(function(){return c.a}));var l=n(179);n.d(t,"SyncAccumulator",(function(){return l.a}));var u=n(96);n.d(t,"InvalidStoreError",(function(){return u.b})),n.d(t,"InvalidCryptoStoreError",(function(){return u.a})),n.d(t,"KeySignatureUploadError",(function(){return u.c}));var d=n(26);n.d(t,"EventStatus",(function(){return d.a})),n.d(t,"MatrixEvent",(function(){return d.b}));var p=n(265);n.d(t,"Room",(function(){return p.a}));var h=n(264);n.d(t,"Group",(function(){return h.a}));var m=n(30);n.d(t,"EventTimeline",(function(){return m.a}));var g=n(182);n.d(t,"EventTimelineSet",(function(){return g.a}));var f=n(180);n.d(t,"RoomMember",(function(){return f.a}));var _=n(225);n.d(t,"RoomState",(function(){return _.a}));var v=n(156);n.d(t,"User",(function(){return v.a})),n.d(t,"MatrixScheduler",(function(){return i.a}));var b=n(114);n.d(t,"Filter",(function(){return b.a}));var y=n(362);n.d(t,"TimelineWindow",(function(){return y.b})),n.d(t,"TimelineIndex",(function(){return y.a}));var E=n(363);n.d(t,"InteractiveAuth",(function(){return E.a}));var S=n(224);n.d(t,"SERVICE_TYPES",(function(){return S.a})),n.d(t,"MemoryStore",(function(){return r.a}));var w=n(364);n.d(t,"IndexedDBStore",(function(){return w.a}));var C=n(365);n.d(t,"WebStorageSessionStore",(function(){return C.a})),n.d(t,"MemoryCryptoStore",(function(){return o.a}));var x=n(33);n.d(t,"IndexedDBCryptoStore",(function(){return x.a}));var T=n(55);n.d(t,"getHttpUriForMxc",(function(){return T.a})),n.d(t,"getIdenticonUri",(function(){return T.b}));var k=n(127);n.d(t,"createNewMatrixCall",(function(){return k.a})),n.d(t,"setMatrixCallAudioOutput",(function(){return k.c})),n.d(t,"setMatrixCallAudioInput",(function(){return k.b})),n.d(t,"setMatrixCallVideoInput",(function(){return k.d}));const R=Promise.resolve().then(n.bind(null,167));let O;function D(e){O=e}function I(){return O}function F(e){const t=O;O=function(n,o){return e(t,n,o)}}let N=()=>new o.a;function A(e){N=e}function M(t){return"string"==typeof t&&(t={baseUrl:t}),t.request=t.request||O,t.store=t.store||new r.a({localStorage:e.localStorage}),t.scheduler=t.scheduler||new i.a,t.cryptoStore=t.cryptoStore||N(),new a.b(t)}}.call(this,n(24))},function(e,t,n){"use strict";function o(e){let t="";const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let o=0;o{for(let o=0;o]*)([0-9]*)$/);if(!i)return!1;const a=i[1],s=parseInt(i[2]);if(isNaN(s))return!1;switch(a){case"":case"==":return r==s;case"<":return r":return r>s;case"<=":return r<=s;case">=":return r>=s;default:return!1}},d=function(t,n){let r=n.getContent();if(n.isEncrypted()&&n.getClearContent()&&(r=n.getClearContent()),!r||!r.body||"string"!=typeof r.body)return!1;const i=e.getRoom(n.getRoomId());if(!(i&&i.currentState&&i.currentState.members&&i.currentState.getMember(e.credentials.userId)))return!1;const a=i.currentState.getMember(e.credentials.userId).name,s=new RegExp("(^|\\W)"+Object(o.h)(a)+"(\\W|$)","i");return r.body.search(s)>-1},p=function(e,t){return!1},h=function(e,t){if(!e.key)return!1;const n=g(e.key,t);if("string"!=typeof n)return!1;if(e.value)return e.value===n;let o;return o="content.body"==e.key?m("(^|\\W)",e.pattern,"(\\W|$)"):m("^",e.pattern,"$"),!!n.match(o)},m=function(e,n,r){return t[n]||(t[n]=new RegExp(e+Object(o.n)(n)+r,"i")),t[n]},g=function(e,t){const n=e.split(".");let r;const i=n[0];for("content"===i?(r=t.getContent(),n.shift()):"type"===i?(r=t.getType(),n.shift()):r=t.event;n.length>0;){const e=n.shift();if(Object(o.r)(r[e]))return null;r=r[e]}return r},f=function(t,o){const r=function(t,o){if(!o||!o.device)return null;if(t.getSender()==e.credentials.userId)return null;const r=Object.keys(o.device);for(let e=0;et.rule_id===e.rule_id)){const t=e.rule_id;console.warn("Adding default global override for ".concat(t)),n.push(e)}}return t}(e.pushRules);return f(t,n)},this.getPushRuleById=function(t){for(const n of["device","global"])if(void 0!==e.pushRules[n])for(const o of r)if(void 0!==e.pushRules[n][o])for(const r of e.pushRules[n][o])if(r.rule_id===t)return r;return null}}a.actionListToActionsObject=function(e){const t={notify:!1,tweaks:{}};for(let n=0;n{const t=i.find(t=>t.rule_id===e.rule_id);return t?(e.default=t.default,e.conditions=t.conditions,e.actions=t.actions,e):e}),t}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return a})),n.d(t,"b",(function(){return s})),n.d(t,"d",(function(){return c}));var o=n(4);function r(e){return e.getCanonicalAlias()||e.getAltAliases()[0]}const i={};function a(e,t,n){if(void 0!==i[e.roomId])return i[e.roomId];const o=function(e,t,n){if(!n)return!1;if("join"!=e.getMyMembership())return!1;const o=function(e,t){return 2===e.currentState.getJoinedMemberCount()?e.getJoinedMembers().filter((function(e){return e.userId!==t}))[0]:null}(e,t);return!!o&&!!n.isConferenceUser(o.userId)}(e,t,n);return i[e.roomId]=o,o}function s(e,t){let n;if(t){n=function(e,t){let n,o;for(const r of e.getJoinedMembers())r.userId!=t&&(void 0===n||r.events.member&&r.events.member.getTs()-1&&o.splice(t,1)}}if(t){const n=r[t]||[];-1==n.indexOf(e)&&n.push(e),r[t]=n}return o.a.get().setAccountData("m.direct",r)}},function(e,t,n){"use strict";function o(e,t){const n="Store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again",o=Reflect.construct(Error,[n]);return Reflect.setPrototypeOf(o,Reflect.getPrototypeOf(this)),o.reason=e,o.value=t,o}function r(e){const t="Crypto store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again",n=Reflect.construct(Error,[t]);return Reflect.setPrototypeOf(n,Reflect.getPrototypeOf(this)),n.reason=e,n.name="InvalidCryptoStoreError",n}n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return r})),n.d(t,"c",(function(){return i})),o.TOGGLED_LAZY_LOADING="TOGGLED_LAZY_LOADING",o.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),Reflect.setPrototypeOf(o,Error),r.TOO_NEW="TOO_NEW",r.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),Reflect.setPrototypeOf(r,Error);class i extends Error{constructor(e,t){super(e),this.value=t}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(156),r=n(10);function i(e){e=e||{},this.rooms={},this.groups={},this.users={},this.syncToken=null,this.filters={},this.accountData={},this.localStorage=e.localStorage,this._oobMembers={},this._clientOptions={}}i.prototype={getSyncToken:function(){return this.syncToken},isNewlyCreated:function(){return Promise.resolve(!0)},setSyncToken:function(e){this.syncToken=e},storeGroup:function(e){this.groups[e.groupId]=e},getGroup:function(e){return this.groups[e]||null},getGroups:function(){return r.B(this.groups)},storeRoom:function(e){this.rooms[e.roomId]=e,e.currentState.on("RoomState.members",this._onRoomMember.bind(this));const t=this;e.currentState.getMembers().forEach((function(n){t._onRoomMember(null,e.currentState,n)}))},_onRoomMember:function(e,t,n){if("invite"===n.membership)return;const r=this.users[n.userId]||new o.a(n.userId);n.name&&(r.setDisplayName(n.name),n.events.member&&r.setRawDisplayName(n.events.member.getDirectionalContent().displayname)),n.events.member&&n.events.member.getContent().avatar_url&&r.setAvatarUrl(n.events.member.getContent().avatar_url),this.users[r.userId]=r},getRoom:function(e){return this.rooms[e]||null},getRooms:function(){return r.B(this.rooms)},removeRoom:function(e){this.rooms[e]&&this.rooms[e].removeListener("RoomState.members",this._onRoomMember),delete this.rooms[e]},getRoomSummaries:function(){return r.u(r.B(this.rooms),(function(e){return e.summary}))},storeUser:function(e){this.users[e.userId]=e},getUser:function(e){return this.users[e]||null},getUsers:function(){return r.B(this.users)},scrollback:function(e,t){return[]},storeEvents:function(e,t,n,o){},storeFilter:function(e){e&&(this.filters[e.userId]||(this.filters[e.userId]={}),this.filters[e.userId][e.filterId]=e)},getFilter:function(e,t){return this.filters[e]&&this.filters[e][t]?this.filters[e][t]:null},getFilterIdByName:function(e){if(!this.localStorage)return null;try{return this.localStorage.getItem("mxjssdk_memory_filter_"+e)}catch(e){}return null},setFilterIdByName:function(e,t){if(this.localStorage)try{this.localStorage.setItem("mxjssdk_memory_filter_"+e,t)}catch(e){}},storeAccountDataEvents:function(e){const t=this;e.forEach((function(e){t.accountData[e.getType()]=e}))},getAccountData:function(e){return this.accountData[e]},setSyncData:function(e){return Promise.resolve()},wantsSave:function(){return!1},save:function(e){},startup:function(){return Promise.resolve()},getSavedSync:function(){return Promise.resolve(null)},getSavedSyncToken:function(){return Promise.resolve(null)},deleteAllData:function(){return this.rooms={},this.users={},this.syncToken=null,this.filters={},this.accountData={},Promise.resolve()},getOutOfBandMembers:function(e){return Promise.resolve(this._oobMembers[e]||null)},setOutOfBandMembers:function(e,t){return this._oobMembers[e]=t,Promise.resolve()},clearOutOfBandMembers:function(){return this._oobMembers={},Promise.resolve()},getClientOptions:function(){return Promise.resolve(this._clientOptions)},storeClientOptions:function(e){return this._clientOptions=Object.assign({},e),Promise.resolve()}}},function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return s}));var o=n(161),r=n(45);const i="m.qr_code.show.v1",a="m.qr_code.scan.v1";class s extends o.b{static factory(...e){return new s(...e)}static get NAME(){return"m.reciprocate.v1"}async _doVerification(){if(!this.startEvent)throw new Error("It is not currently possible to start verificationwith this method yet.");const e=this.startEvent.getSender();if(this.userId){if(e!==this.userId)throw Object(r.i)({expected:this.userId,actual:e})}else console.log("Asking to confirm user ID"),this.userId=await new Promise((t,n)=>{this.emit("confirm_user_id",{userId:e,confirm:t,cancel:()=>n(Object(r.i)())})});if(this.startEvent.getContent().secret!==this.request.encodedSharedSecret)throw Object(r.d)();const t=this._baseApis.getStoredCrossSigningForUser(this.userId);if(!t)throw new Error("Missing cross signing info");const n=t.getId("master"),o="ed25519:".concat(n),i={[o]:n},a=(await this._baseApis.getStoredDevicesForUser(this.userId)||[]).find(e=>e.deviceId===this.request.targetDevice.deviceId);if(!a)throw new Error("Device not found, somehow");i["ed25519:".concat(a.deviceId)]=a.getFingerprint(),this.request.requestingUserId===this.request.receivingUserId&&delete i[o],await this._verifyKeys(this.userId,i,(e,t,n)=>{const o=i[e];if(!o)throw Object(r.d)();if(n!==o)throw console.error("key ID from key info does not match"),Object(r.d)();for(const e in t.keys){if(!e.startsWith("ed25519"))continue;const n=i[e];if(!n)throw Object(r.d)();if(t.keys[e]!==n)throw console.error("master key does not match"),Object(r.d)()}})}}},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a}));var o=n(5),r=n.n(o);class i{forEvent(e,t,n){throw new Error("Not implemented")}forRoom(e,t){throw new Error("Not implemented")}forGroup(e){throw new Error("Not implemented")}forUser(e){throw new Error("Not implemented")}forEntity(e){throw new Error("Not implemented")}isPermalinkHost(e){throw new Error("Not implemented")}parsePermalink(e){throw new Error("Not implemented")}}class a{constructor(e,t,n,o,i){r()(this,"roomIdOrAlias",void 0),r()(this,"eventId",void 0),r()(this,"userId",void 0),r()(this,"groupId",void 0),r()(this,"viaServers",void 0),this.roomIdOrAlias=e,this.eventId=t,this.groupId=o,this.userId=n,this.viaServers=i}static forUser(e){return new a(null,null,e,null,null)}static forGroup(e){return new a(null,null,null,e,null)}static forRoom(e,t){return new a(e,null,null,null,t||[])}static forEvent(e,t,n){return new a(e,t,null,null,n||[])}}},function(e,t,n){"use strict";var o=n(168),r=n(31);function i(e){const t=e.scanner.TOKENS,n=e.parser.TOKENS.Base,o=e.parser.start;if(void 0===t.UNDERSCORE)throw new Error("linkify-matrix requires linkifyjs 2.1.1: this version is too old.");const r=function(e){n.call(this,e),this.type="roomalias",this.isLink=!0};r.prototype=new n;const i=o.jump(t.POUND),a=new e.parser.State,s=new e.parser.State,c=new e.parser.State,l=new e.parser.State,u=new e.parser.State(r),d=new e.parser.State,p=new e.parser.State(r),h=[t.DOT,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.UNDERSCORE,t.POUND,t.LOCALHOST];i.on(h,a),a.on(h,a),a.on(t.DOMAIN,a),a.on(t.COLON,s),s.on(t.DOMAIN,c),s.on(t.LOCALHOST,u),s.on(t.TLD,u),c.on(t.DOT,l),l.on(t.DOMAIN,c),l.on(t.TLD,u),u.on(t.DOT,l),u.on(t.COLON,d),d.on(t.NUM,p);const m=function(e){n.call(this,e),this.type="userid",this.isLink=!0};m.prototype=new n;const g=o.jump(t.AT),f=new e.parser.State,_=new e.parser.State,v=new e.parser.State,b=new e.parser.State,y=new e.parser.State(m),E=new e.parser.State,S=new e.parser.State(m),w=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];g.on(w,f),f.on(w,f),f.on(t.DOMAIN,f),f.on(t.COLON,_),_.on(t.DOMAIN,v),_.on(t.LOCALHOST,y),_.on(t.TLD,y),v.on(t.DOT,b),b.on(t.DOMAIN,v),b.on(t.TLD,y),y.on(t.DOT,b),y.on(t.COLON,E),E.on(t.NUM,S);const C=function(e){n.call(this,e),this.type="groupid",this.isLink=!0};C.prototype=new n;const x=o.jump(t.PLUS),T=new e.parser.State,k=new e.parser.State,R=new e.parser.State,O=new e.parser.State,D=new e.parser.State(C),I=new e.parser.State,F=new e.parser.State(C),N=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];x.on(N,T),T.on(N,T),T.on(t.DOMAIN,T),T.on(t.COLON,k),k.on(t.DOMAIN,R),k.on(t.LOCALHOST,D),k.on(t.TLD,D),R.on(t.DOT,O),O.on(t.DOMAIN,R),O.on(t.TLD,D),D.on(t.DOT,O),D.on(t.COLON,I),I.on(t.NUM,F)}i.onUserClick=function(e,t){e.preventDefault()},i.onAliasClick=function(e,t){e.preventDefault()},i.onGroupClick=function(e,t){e.preventDefault()};i.VECTOR_URL_PATTERN="^(?:https?://)?(?:"+(window.location.host+window.location.pathname).replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"|(?:www\\.)?(?:riot|vector)\\.im/(?:app|beta|staging|develop)/)(#.*)",i.MATRIXTO_URL_PATTERN="^(?:https?://)?(?:www\\.)?matrix\\.to/#/(([#@!+]).*)",i.MATRIXTO_MD_LINK_PATTERN="\\[([^\\]]*)\\]\\((?:https?://)?(?:www\\.)?matrix\\.to/#/([#@!+][^\\)]*)\\)",i.MATRIXTO_BASE_URL=o.a,i.options={events:function(e,t){switch(t){case"url":try{const t=Object(r.h)(e);if(t&&t.userId)return{click:function(e){i.onUserClick(e,t.userId)}}}catch(e){}break;case"userid":return{click:function(t){i.onUserClick(t,e)}};case"roomalias":return{click:function(t){i.onAliasClick(t,e)}};case"groupid":return{click:function(t){i.onGroupClick(t,e)}}}},formatHref:function(e,t){switch(t){case"roomalias":case"userid":case"groupid":default:return Object(r.i)(e)}},linkAttributes:{rel:"noreferrer noopener"},target:function(e,t){if("url"===t){return Object(r.j)(e)!==e||e.match(i.VECTOR_URL_PATTERN)?null:"_blank"}return null}},t.a=i},function(e,t,n){"use strict";n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l}));var o=n(93),r=n(8),i=n(25),a=n(45),s=n(26);class c{constructor(e,t,n,o=null,r=null){this._client=e,this.userId=t,this._devices=n,this.transactionId=o,this._deviceId=r}isToDevices(e){if(e.length===this._devices.length){for(const t of e){if(!this._devices.find(e=>e.deviceId===t.deviceId))return!1}return!0}return!1}get deviceId(){return this._deviceId}get needsDoneMessage(){return!1}static getEventType(e){return e.getType()}static getTransactionId(e){const t=e.getContent();return t&&t.transaction_id}static canCreateRequest(e){return e===i.i||e===i.j}static validateEvent(e,t){if(e.isCancelled())return r.a.warn("Ignoring flagged verification request from "+e.getSender()),!1;const n=e.getContent();if(!n)return r.a.warn("ToDeviceChannel.validateEvent: invalid: no content"),!1;if(!n.transaction_id)return r.a.warn("ToDeviceChannel.validateEvent: invalid: no transaction_id"),!1;const o=e.getType();if(o===i.i){if(!Number.isFinite(n.timestamp))return r.a.warn("ToDeviceChannel.validateEvent: invalid: no timestamp"),!1;if(e.getSender()===t.getUserId()&&n.from_device==t.getDeviceId())return r.a.warn("ToDeviceChannel.validateEvent: invalid: from own device"),!1}return i.k.validateEvent(o,e,t)}getTimestamp(e){const t=e.getContent();return t&&t.timestamp}async handleEvent(e,t,n){const o=e.getType(),r=e.getContent();if(o===i.i||o===i.h||o===i.j){this.transactionId||(this.transactionId=r.transaction_id);const e=r.from_device;if(!this._deviceId&&this._devices.includes(e)&&(this._deviceId=e),!this._deviceId||this._deviceId!==e){const t=this.completeContent(Object(a.b)(Object(a.f)()));return this._sendToDevices(i.a,t,[e])}}const s=t.phase===i.f||t.phase===i.d;await t.handleEvent(e.getType(),e,n,!1,!1);const c=t.phase===i.f||t.phase===i.d;if((o===i.j||o===i.h)&&!s&&c&&this._deviceId){const e=this._devices.filter(e=>e!==this._deviceId);if(e.length){const t=this.completeContent({code:"m.accepted",reason:"Verification request accepted by another device"});await this._sendToDevices(i.a,t,e)}}}completedContentFromEvent(e){return e.getContent()}completeContent(e,t){return t=Object.assign({},t),this.transactionId&&(t.transaction_id=this.transactionId),e!==i.i&&e!==i.h&&e!==i.j||(t.from_device=this._client.getDeviceId()),e===i.i&&(t.timestamp=Date.now()),t}send(e,t={}){e!==i.i&&e!==i.j||this.transactionId||(this.transactionId=c.makeTransactionId());const n=this.completeContent(e,t);return this.sendCompleted(e,n)}async sendCompleted(e,t){let n;n=e===i.i?await this._sendToDevices(e,t,this._devices):await this._sendToDevices(e,t,[this._deviceId]);const o=new s.b({sender:this._client.getUserId(),content:t,type:e});return await this._request.handleEvent(e,o,!0,!0,!0),n}_sendToDevices(e,t,n){if(n.length){const o={};for(const e of n)o[e]=t;return this._client.sendToDevice(e,{[this.userId]:o})}return Promise.resolve()}static makeTransactionId(){return Object(o.a)(32)}}class l{constructor(){this._requestsByUserId=new Map}getRequest(e){return this.getRequestBySenderAndTxnId(e.getSender(),c.getTransactionId(e))}getRequestByChannel(e){return this.getRequestBySenderAndTxnId(e.userId,e.transactionId)}getRequestBySenderAndTxnId(e,t){const n=this._requestsByUserId.get(e);if(n)return n.get(t)}setRequest(e,t){this.setRequestBySenderAndTxnId(e.getSender(),c.getTransactionId(e),t)}setRequestByChannel(e,t){this.setRequestBySenderAndTxnId(e.userId,e.transactionId,t)}setRequestBySenderAndTxnId(e,t,n){let o=this._requestsByUserId.get(e);o||(o=new Map,this._requestsByUserId.set(e,o)),o.set(t,n)}removeRequest(e){const t=e.getSender(),n=this._requestsByUserId.get(t);n&&(n.delete(c.getTransactionId(e)),0===n.size&&this._requestsByUserId.delete(t))}findRequestInProgress(e,t){const n=this._requestsByUserId.get(e);if(n)for(const e of n.values())if(e.pending&&e.channel.isToDevices(t))return e}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{getValue(e,t){return console.error("Invalid operation: getValue was not overridden"),null}setValue(e,t,n){return console.error("Invalid operation: setValue was not overridden"),Promise.reject()}canSetValue(e,t){return!1}isSupported(){return!1}}},function(e,t,n){e.exports.Container=n(842),e.exports.MapStore=n(844),e.exports.Mixin=n(852),e.exports.ReduceStore=n(376),e.exports.Store=n(377)},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var o=n(3);function r(e,t){return()=>o.a(e)||t}},function(e,t,n){"use strict";var o=n(0),r=n.n(o),i=n(11),a=n.n(i);t.a=a()({displayName:"Spinner",render:function(){const e=this.props.w||32,t=this.props.h||32,o=this.props.imgClassName||"";return r.a.createElement("div",{className:"mx_Spinner"},r.a.createElement("img",{src:n(176),width:e,height:t,className:o}))}})},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"c",(function(){return a})),n.d(t,"d",(function(){return s})),n.d(t,"a",(function(){return l}));var o=n(270);const r=new Map,i=new Map,a=new Map,s=e=>r.get(u(e)),c=["people","people","control","nature","foods","places","activity","objects","symbols","flags"],l={people:[],nature:[],foods:[],places:[],activity:[],objects:[],symbols:[],flags:[]};function u(e){return e.replace(/[\uFE00-\uFE0F]$/,"")}o.forEach(e=>{const t=c[e.group];l.hasOwnProperty(t)&&l[t].push(e),e.filterString="".concat(e.annotation,"\n").concat(e.shortcodes.join("\n"),"}\n").concat(e.emoticon||"").toLowerCase(),r.set(u(e.unicode),e),e.emoticon&&i.set(e.emoticon,e),e.shortcodes&&e.shortcodes.forEach(t=>{a.set(t,e)})})},function(e,t){e.exports="img/cancel.4b9715b.svg"},function(e,t){e.exports="img/warning.05cc423.svg"},function(e,t,n){(function(e,o){var r;(function(){var i="Expected a function",a="__lodash_placeholder__",s=[["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]",p="[object Error]",h="[object Function]",m="[object GeneratorFunction]",g="[object Map]",f="[object Number]",_="[object Object]",v="[object RegExp]",b="[object Set]",y="[object String]",E="[object Symbol]",S="[object WeakMap]",w="[object ArrayBuffer]",C="[object DataView]",x="[object Float32Array]",T="[object Float64Array]",k="[object Int8Array]",R="[object Int16Array]",O="[object Int32Array]",D="[object Uint8Array]",I="[object Uint16Array]",F="[object Uint32Array]",N=/\b__p \+= '';/g,A=/\b(__p \+=) '' \+/g,M=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,L=/[&<>"']/g,U=RegExp(P.source),j=RegExp(L.source),B=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,V=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,z=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,K=/[\\^$.*+?()[\]{}|]/g,W=RegExp(K.source),Y=/^\s+|\s+$/g,$=/^\s+/,Q=/\s+$/,J=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,X=/\{\n\/\* \[wrapped with (.+)\] \*/,Z=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,oe=/\w*$/,re=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,ae=/^\[object .+?Constructor\]$/,se=/^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,pe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",he="\\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",me="[\\ud800-\\udfff]",ge="["+he+"]",fe="["+pe+"]",_e="\\d+",ve="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",ye="[^\\ud800-\\udfff"+he+_e+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",Ee="\\ud83c[\\udffb-\\udfff]",Se="[^\\ud800-\\udfff]",we="(?:\\ud83c[\\udde6-\\uddff]){2}",Ce="[\\ud800-\\udbff][\\udc00-\\udfff]",xe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Te="(?:"+be+"|"+ye+")",ke="(?:"+xe+"|"+ye+")",Re="(?:"+fe+"|"+Ee+")"+"?",Oe="[\\ufe0e\\ufe0f]?"+Re+("(?:\\u200d(?:"+[Se,we,Ce].join("|")+")[\\ufe0e\\ufe0f]?"+Re+")*"),De="(?:"+[ve,we,Ce].join("|")+")"+Oe,Ie="(?:"+[Se+fe+"?",fe,we,Ce,me].join("|")+")",Fe=RegExp("['’]","g"),Ne=RegExp(fe,"g"),Ae=RegExp(Ee+"(?="+Ee+")|"+Ie+Oe,"g"),Me=RegExp([xe+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ge,xe,"$"].join("|")+")",ke+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ge,xe+Te,"$"].join("|")+")",xe+"?"+Te+"+(?:['’](?:d|ll|m|re|s|t|ve))?",xe+"+(?:['’](?: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_])",_e,De].join("|"),"g"),Pe=RegExp("[\\u200d\\ud800-\\udfff"+pe+"\\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 ]/,Ue=["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"],je=-1,Be={};Be[x]=Be[T]=Be[k]=Be[R]=Be[O]=Be[D]=Be["[object Uint8ClampedArray]"]=Be[I]=Be[F]=!0,Be[c]=Be[l]=Be[w]=Be[u]=Be[C]=Be[d]=Be[p]=Be[h]=Be[g]=Be[f]=Be[_]=Be[v]=Be[b]=Be[y]=Be[S]=!1;var qe={};qe[c]=qe[l]=qe[w]=qe[C]=qe[u]=qe[d]=qe[x]=qe[T]=qe[k]=qe[R]=qe[O]=qe[g]=qe[f]=qe[_]=qe[v]=qe[b]=qe[y]=qe[E]=qe[D]=qe["[object Uint8ClampedArray]"]=qe[I]=qe[F]=!0,qe[p]=qe[h]=qe[S]=!1;var Ge={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ve=parseFloat,He=parseInt,ze="object"==typeof e&&e&&e.Object===Object&&e,Ke="object"==typeof self&&self&&self.Object===Object&&self,We=ze||Ke||Function("return this")(),Ye=t&&!t.nodeType&&t,$e=Ye&&"object"==typeof o&&o&&!o.nodeType&&o,Qe=$e&&$e.exports===Ye,Je=Qe&&ze.process,Xe=function(){try{var e=$e&&$e.require&&$e.require("util").types;return e||Je&&Je.binding&&Je.binding("util")}catch(e){}}(),Ze=Xe&&Xe.isArrayBuffer,et=Xe&&Xe.isDate,tt=Xe&&Xe.isMap,nt=Xe&&Xe.isRegExp,ot=Xe&&Xe.isSet,rt=Xe&&Xe.isTypedArray;function it(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 at(e,t,n,o){for(var r=-1,i=null==e?0:e.length;++r-1}function pt(e,t,n){for(var o=-1,r=null==e?0:e.length;++o-1;);return n}function At(e,t){for(var n=e.length;n--&&Et(t,e[n],0)>-1;);return n}function Mt(e,t){for(var n=e.length,o=0;n--;)e[n]===t&&++o;return o}var Pt=Tt({"À":"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=Tt({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ut(e){return"\\"+Ge[e]}function jt(e){return Pe.test(e)}function Bt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,o){n[++t]=[o,e]})),n}function qt(e,t){return function(n){return e(t(n))}}function Gt(e,t){for(var n=-1,o=e.length,r=0,i=[];++n",""":'"',"'":"'"});var Yt=function e(t){var n,o=(t=null==t?We:Yt.defaults(We.Object(),t,Yt.pick(We,Ue))).Array,r=t.Date,pe=t.Error,he=t.Function,me=t.Math,ge=t.Object,fe=t.RegExp,_e=t.String,ve=t.TypeError,be=o.prototype,ye=he.prototype,Ee=ge.prototype,Se=t["__core-js_shared__"],we=ye.toString,Ce=Ee.hasOwnProperty,xe=0,Te=(n=/[^.]+$/.exec(Se&&Se.keys&&Se.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",ke=Ee.toString,Re=we.call(ge),Oe=We._,De=fe("^"+we.call(Ce).replace(K,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ie=Qe?t.Buffer:void 0,Ae=t.Symbol,Pe=t.Uint8Array,Ge=Ie?Ie.allocUnsafe:void 0,ze=qt(ge.getPrototypeOf,ge),Ke=ge.create,Ye=Ee.propertyIsEnumerable,$e=be.splice,Je=Ae?Ae.isConcatSpreadable:void 0,Xe=Ae?Ae.iterator:void 0,vt=Ae?Ae.toStringTag:void 0,Tt=function(){try{var e=ei(ge,"defineProperty");return e({},"",{}),e}catch(e){}}(),$t=t.clearTimeout!==We.clearTimeout&&t.clearTimeout,Qt=r&&r.now!==We.Date.now&&r.now,Jt=t.setTimeout!==We.setTimeout&&t.setTimeout,Xt=me.ceil,Zt=me.floor,en=ge.getOwnPropertySymbols,tn=Ie?Ie.isBuffer:void 0,nn=t.isFinite,on=be.join,rn=qt(ge.keys,ge),an=me.max,sn=me.min,cn=r.now,ln=t.parseInt,un=me.random,dn=be.reverse,pn=ei(t,"DataView"),hn=ei(t,"Map"),mn=ei(t,"Promise"),gn=ei(t,"Set"),fn=ei(t,"WeakMap"),_n=ei(ge,"create"),vn=fn&&new fn,bn={},yn=ki(pn),En=ki(hn),Sn=ki(mn),wn=ki(gn),Cn=ki(fn),xn=Ae?Ae.prototype:void 0,Tn=xn?xn.valueOf:void 0,kn=xn?xn.toString:void 0;function Rn(e){if(Ha(e)&&!Na(e)&&!(e instanceof Fn)){if(e instanceof In)return e;if(Ce.call(e,"__wrapped__"))return Ri(e)}return new In(e)}var On=function(){function e(){}return function(t){if(!Va(t))return{};if(Ke)return Ke(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function Dn(){}function In(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function Fn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Nn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Qn(e,t,n,o,r,i){var a,s=1&t,l=2&t,p=4&t;if(n&&(a=r?n(e,o,r,i):n(e)),void 0!==a)return a;if(!Va(e))return e;var S=Na(e);if(S){if(a=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Ce.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!s)return vr(e,a)}else{var N=oi(e),A=N==h||N==m;if(La(e))return pr(e,s);if(N==_||N==c||A&&!r){if(a=l||A?{}:ii(e),!s)return l?function(e,t){return br(e,ni(e),t)}(e,function(e,t){return e&&br(t,Es(t),e)}(a,e)):function(e,t){return br(e,ti(e),t)}(e,Kn(a,e))}else{if(!qe[N])return r?e:{};a=function(e,t,n){var o=e.constructor;switch(t){case w:return hr(e);case u:case d:return new o(+e);case C:return function(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case x:case T:case k:case R:case O:case D:case"[object Uint8ClampedArray]":case I:case F:return mr(e,n);case g:return new o;case f:case y:return new o(e);case v:return function(e){var t=new e.constructor(e.source,oe.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new o;case E:return r=e,Tn?ge(Tn.call(r)):{}}var r}(e,N,s)}}i||(i=new Ln);var M=i.get(e);if(M)return M;i.set(e,a),$a(e)?e.forEach((function(o){a.add(Qn(o,t,n,o,e,i))})):za(e)&&e.forEach((function(o,r){a.set(r,Qn(o,t,n,r,e,i))}));var P=S?void 0:(p?l?Wr:Kr:l?Es:ys)(e);return st(P||e,(function(o,r){P&&(o=e[r=o]),Vn(a,r,Qn(o,t,n,r,e,i))})),a}function Jn(e,t,n){var o=n.length;if(null==e)return!o;for(e=ge(e);o--;){var r=n[o],i=t[r],a=e[r];if(void 0===a&&!(r in e)||!i(a))return!1}return!0}function Xn(e,t,n){if("function"!=typeof e)throw new ve(i);return yi((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,o){var r=-1,i=dt,a=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=ht(t,Dt(n))),o?(i=pt,a=!1):t.length>=200&&(i=Ft,a=!1,t=new Pn(t));e:for(;++r-1},An.prototype.set=function(e,t){var n=this.__data__,o=Hn(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this},Mn.prototype.clear=function(){this.size=0,this.__data__={hash:new Nn,map:new(hn||An),string:new Nn}},Mn.prototype.delete=function(e){var t=Xr(this,e).delete(e);return this.size-=t?1:0,t},Mn.prototype.get=function(e){return Xr(this,e).get(e)},Mn.prototype.has=function(e){return Xr(this,e).has(e)},Mn.prototype.set=function(e,t){var n=Xr(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?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 An,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 An){var o=n.__data__;if(!hn||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new Mn(o)}return n.set(e,t),this.size=n.size,this};var eo=Sr(co),to=Sr(lo,!0);function no(e,t){var n=!0;return eo(e,(function(e,o,r){return n=!!t(e,o,r)})),n}function oo(e,t,n){for(var o=-1,r=e.length;++o0&&n(s)?t>1?io(s,t-1,n,o,r):mt(r,s):o||(r[r.length]=s)}return r}var ao=wr(),so=wr(!0);function co(e,t){return e&&ao(e,t,ys)}function lo(e,t){return e&&so(e,t,ys)}function uo(e,t){return ut(t,(function(t){return Ba(e[t])}))}function po(e,t){for(var n=0,o=(t=cr(t,e)).length;null!=e&&nt}function fo(e,t){return null!=e&&Ce.call(e,t)}function _o(e,t){return null!=e&&t in ge(e)}function vo(e,t,n){for(var r=n?pt:dt,i=e[0].length,a=e.length,s=a,c=o(a),l=1/0,u=[];s--;){var d=e[s];s&&t&&(d=ht(d,Dt(t))),l=sn(d.length,l),c[s]=!n&&(t||i>=120&&d.length>=120)?new Pn(s&&d):void 0}d=e[0];var p=-1,h=c[0];e:for(;++p=s)return c;var l=n[o];return c*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)}))}function Ao(e,t,n){for(var o=-1,r=t.length,i={};++o-1;)s!==e&&$e.call(s,c,1),$e.call(e,c,1);return e}function Po(e,t){for(var n=e?t.length:0,o=n-1;n--;){var r=t[n];if(n==o||r!==i){var i=r;si(r)?$e.call(e,r,1):er(e,r)}}return e}function Lo(e,t){return e+Zt(un()*(t-e+1))}function Uo(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 jo(e,t){return Ei(gi(e,t,Ks),e+"")}function Bo(e){return jn(Os(e))}function qo(e,t){var n=Os(e);return Ci(n,$n(t,0,n.length))}function Go(e,t,n,o){if(!Va(e))return e;for(var r=-1,i=(t=cr(t,e)).length,a=i-1,s=e;null!=s&&++ri?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=o(i);++r>>1,a=e[i];null!==a&&!Ja(a)&&(n?a<=t:a=200){var l=t?null:Ur(e);if(l)return Vt(l);a=!1,r=Ft,c=new Pn}else c=t?[]:s;e:for(;++o=o?e:Ko(e,t,n)}var dr=$t||function(e){return We.clearTimeout(e)};function pr(e,t){if(t)return e.slice();var n=e.length,o=Ge?Ge(n):new e.constructor(n);return e.copy(o),o}function hr(e){var t=new e.constructor(e.byteLength);return new Pe(t).set(new Pe(e)),t}function mr(e,t){var n=t?hr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function gr(e,t){if(e!==t){var n=void 0!==e,o=null===e,r=e==e,i=Ja(e),a=void 0!==t,s=null===t,c=t==t,l=Ja(t);if(!s&&!l&&!i&&e>t||i&&a&&c&&!s&&!l||o&&a&&c||!n&&c||!r)return 1;if(!o&&!i&&!l&&e1?n[r-1]:void 0,a=r>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(r--,i):void 0,a&&ci(n[0],n[1],a)&&(i=r<3?void 0:i,r=1),t=ge(t);++o-1?r[i?t[a]:a]:void 0}}function Rr(e){return zr((function(t){var n=t.length,o=n,r=In.prototype.thru;for(e&&t.reverse();o--;){var a=t[o];if("function"!=typeof a)throw new ve(i);if(r&&!s&&"wrapper"==$r(a))var s=new In([],!0)}for(o=s?o:n;++o1&&b.reverse(),d&&ls))return!1;var l=i.get(e);if(l&&i.get(t))return l==t;var u=-1,d=!0,p=2&n?new Pn:void 0;for(i.set(e,t),i.set(t,e);++u-1&&e%1==0&&e1?"& ":"")+t[o],t=t.join(n>2?", ":" "),e.replace(J,"{\n/* [wrapped with "+t+"] */\n")}(o,function(e,t){return st(s,(function(n){var o="_."+n[0];t&n[1]&&!dt(e,o)&&e.push(o)})),e.sort()}(function(e){var t=e.match(X);return t?t[1].split(Z):[]}(o),n)))}function wi(e){var t=0,n=0;return function(){var o=cn(),r=16-(o-n);if(n=o,r>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Ci(e,t){var n=-1,o=e.length,r=o-1;for(t=void 0===t?o:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yi(e,n)}));function ta(e){var t=Rn(e);return t.__chain__=!0,t}function na(e,t){return t(e)}var oa=zr((function(e){var t=e.length,n=t?e[0]:0,o=this.__wrapped__,r=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&o instanceof Fn&&si(n)?((o=o.slice(n,+n+(t?1:0))).__actions__.push({func:na,args:[r],thisArg:void 0}),new In(o,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(r)}));var ra=yr((function(e,t,n){Ce.call(e,n)?++e[n]:Wn(e,n,1)}));var ia=kr(Fi),aa=kr(Ni);function sa(e,t){return(Na(e)?st:eo)(e,Jr(t,3))}function ca(e,t){return(Na(e)?ct:to)(e,Jr(t,3))}var la=yr((function(e,t,n){Ce.call(e,n)?e[n].push(t):Wn(e,n,[t])}));var ua=jo((function(e,t,n){var r=-1,i="function"==typeof t,a=Ma(e)?o(e.length):[];return eo(e,(function(e){a[++r]=i?it(t,e,n):bo(e,t,n)})),a})),da=yr((function(e,t,n){Wn(e,n,t)}));function pa(e,t){return(Na(e)?ht:Ro)(e,Jr(t,3))}var ha=yr((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ma=jo((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ci(e,t[0],t[1])?t=[]:n>2&&ci(t[0],t[1],t[2])&&(t=[t[0]]),No(e,io(t,1),[])})),ga=Qt||function(){return We.Date.now()};function fa(e,t,n){return t=n?void 0:t,Br(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function _a(e,t){var n;if("function"!=typeof t)throw new ve(i);return e=os(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var va=jo((function(e,t,n){var o=1;if(n.length){var r=Gt(n,Qr(va));o|=32}return Br(e,o,t,n,r)})),ba=jo((function(e,t,n){var o=3;if(n.length){var r=Gt(n,Qr(ba));o|=32}return Br(t,o,e,n,r)}));function ya(e,t,n){var o,r,a,s,c,l,u=0,d=!1,p=!1,h=!0;if("function"!=typeof e)throw new ve(i);function m(t){var n=o,i=r;return o=r=void 0,u=t,s=e.apply(i,n)}function g(e){return u=e,c=yi(_,t),d?m(e):s}function f(e){var n=e-l;return void 0===l||n>=t||n<0||p&&e-u>=a}function _(){var e=ga();if(f(e))return v(e);c=yi(_,function(e){var n=t-(e-l);return p?sn(n,a-(e-u)):n}(e))}function v(e){return c=void 0,h&&o?m(e):(o=r=void 0,s)}function b(){var e=ga(),n=f(e);if(o=arguments,r=this,l=e,n){if(void 0===c)return g(l);if(p)return dr(c),c=yi(_,t),m(l)}return void 0===c&&(c=yi(_,t)),s}return t=is(t)||0,Va(n)&&(d=!!n.leading,a=(p="maxWait"in n)?an(is(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),b.cancel=function(){void 0!==c&&dr(c),u=0,o=l=r=c=void 0},b.flush=function(){return void 0===c?s:v(ga())},b}var Ea=jo((function(e,t){return Xn(e,1,t)})),Sa=jo((function(e,t,n){return Xn(e,is(t)||0,n)}));function wa(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ve(i);var n=function(){var o=arguments,r=t?t.apply(this,o):o[0],i=n.cache;if(i.has(r))return i.get(r);var a=e.apply(this,o);return n.cache=i.set(r,a)||i,a};return n.cache=new(wa.Cache||Mn),n}function Ca(e){if("function"!=typeof e)throw new ve(i);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)}}wa.Cache=Mn;var xa=lr((function(e,t){var n=(t=1==t.length&&Na(t[0])?ht(t[0],Dt(Jr())):ht(io(t,1),Dt(Jr()))).length;return jo((function(o){for(var r=-1,i=sn(o.length,n);++r=t})),Fa=yo(function(){return arguments}())?yo:function(e){return Ha(e)&&Ce.call(e,"callee")&&!Ye.call(e,"callee")},Na=o.isArray,Aa=Ze?Dt(Ze):function(e){return Ha(e)&&mo(e)==w};function Ma(e){return null!=e&&Ga(e.length)&&!Ba(e)}function Pa(e){return Ha(e)&&Ma(e)}var La=tn||ic,Ua=et?Dt(et):function(e){return Ha(e)&&mo(e)==d};function ja(e){if(!Ha(e))return!1;var t=mo(e);return t==p||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Wa(e)}function Ba(e){if(!Va(e))return!1;var t=mo(e);return t==h||t==m||"[object AsyncFunction]"==t||"[object Proxy]"==t}function qa(e){return"number"==typeof e&&e==os(e)}function Ga(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Va(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Ha(e){return null!=e&&"object"==typeof e}var za=tt?Dt(tt):function(e){return Ha(e)&&oi(e)==g};function Ka(e){return"number"==typeof e||Ha(e)&&mo(e)==f}function Wa(e){if(!Ha(e)||mo(e)!=_)return!1;var t=ze(e);if(null===t)return!0;var n=Ce.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&we.call(n)==Re}var Ya=nt?Dt(nt):function(e){return Ha(e)&&mo(e)==v};var $a=ot?Dt(ot):function(e){return Ha(e)&&oi(e)==b};function Qa(e){return"string"==typeof e||!Na(e)&&Ha(e)&&mo(e)==y}function Ja(e){return"symbol"==typeof e||Ha(e)&&mo(e)==E}var Xa=rt?Dt(rt):function(e){return Ha(e)&&Ga(e.length)&&!!Be[mo(e)]};var Za=Mr(ko),es=Mr((function(e,t){return e<=t}));function ts(e){if(!e)return[];if(Ma(e))return Qa(e)?Kt(e):vr(e);if(Xe&&e[Xe])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Xe]());var t=oi(e);return(t==g?Bt:t==b?Vt:Os)(e)}function ns(e){return e?(e=is(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function os(e){var t=ns(e),n=t%1;return t==t?n?t-n:t:0}function rs(e){return e?$n(os(e),0,4294967295):0}function is(e){if("number"==typeof e)return e;if(Ja(e))return NaN;if(Va(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Va(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(Y,"");var n=ie.test(e);return n||se.test(e)?He(e.slice(2),n?2:8):re.test(e)?NaN:+e}function as(e){return br(e,Es(e))}function ss(e){return null==e?"":Xo(e)}var cs=Er((function(e,t){if(pi(t)||Ma(t))br(t,ys(t),e);else for(var n in t)Ce.call(t,n)&&Vn(e,n,t[n])})),ls=Er((function(e,t){br(t,Es(t),e)})),us=Er((function(e,t,n,o){br(t,Es(t),e,o)})),ds=Er((function(e,t,n,o){br(t,ys(t),e,o)})),ps=zr(Yn);var hs=jo((function(e,t){e=ge(e);var n=-1,o=t.length,r=o>2?t[2]:void 0;for(r&&ci(t[0],t[1],r)&&(o=1);++n1),t})),br(e,Wr(e),n),o&&(n=Qn(n,7,Vr));for(var r=t.length;r--;)er(n,t[r]);return n}));var xs=zr((function(e,t){return null==e?{}:function(e,t){return Ao(e,t,(function(t,n){return fs(e,n)}))}(e,t)}));function Ts(e,t){if(null==e)return{};var n=ht(Wr(e),(function(e){return[e]}));return t=Jr(t),Ao(e,n,(function(e,n){return t(e,n[0])}))}var ks=jr(ys),Rs=jr(Es);function Os(e){return null==e?[]:It(e,ys(e))}var Ds=xr((function(e,t,n){return t=t.toLowerCase(),e+(n?Is(t):t)}));function Is(e){return js(ss(e).toLowerCase())}function Fs(e){return(e=ss(e))&&e.replace(le,Pt).replace(Ne,"")}var Ns=xr((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),As=xr((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ms=Cr("toLowerCase");var Ps=xr((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var Ls=xr((function(e,t,n){return e+(n?" ":"")+js(t)}));var Us=xr((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),js=Cr("toUpperCase");function Bs(e,t,n){return e=ss(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(Me)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var qs=jo((function(e,t){try{return it(e,void 0,t)}catch(e){return ja(e)?e:new pe(e)}})),Gs=zr((function(e,t){return st(t,(function(t){t=Ti(t),Wn(e,t,va(e[t],e))})),e}));function Vs(e){return function(){return e}}var Hs=Rr(),zs=Rr(!0);function Ks(e){return e}function Ws(e){return Co("function"==typeof e?e:Qn(e,1))}var Ys=jo((function(e,t){return function(n){return bo(n,e,t)}})),$s=jo((function(e,t){return function(n){return bo(e,n,t)}}));function Qs(e,t,n){var o=ys(t),r=uo(t,o);null!=n||Va(t)&&(r.length||!o.length)||(n=t,t=e,e=this,r=uo(t,ys(t)));var i=!(Va(n)&&"chain"in n&&!n.chain),a=Ba(e);return st(r,(function(n){var o=t[n];e[n]=o,a&&(e.prototype[n]=function(){var t=this.__chain__;if(i||t){var n=e(this.__wrapped__),r=n.__actions__=vr(this.__actions__);return r.push({func:o,args:arguments,thisArg:e}),n.__chain__=t,n}return o.apply(e,mt([this.value()],arguments))})})),e}function Js(){}var Xs=Fr(ht),Zs=Fr(lt),ec=Fr(_t);function tc(e){return li(e)?xt(Ti(e)):function(e){return function(t){return po(t,e)}}(e)}var nc=Ar(),oc=Ar(!0);function rc(){return[]}function ic(){return!1}var ac=Ir((function(e,t){return e+t}),0),sc=Lr("ceil"),cc=Ir((function(e,t){return e/t}),1),lc=Lr("floor");var uc,dc=Ir((function(e,t){return e*t}),1),pc=Lr("round"),hc=Ir((function(e,t){return e-t}),0);return Rn.after=function(e,t){if("function"!=typeof t)throw new ve(i);return e=os(e),function(){if(--e<1)return t.apply(this,arguments)}},Rn.ary=fa,Rn.assign=cs,Rn.assignIn=ls,Rn.assignInWith=us,Rn.assignWith=ds,Rn.at=ps,Rn.before=_a,Rn.bind=va,Rn.bindAll=Gs,Rn.bindKey=ba,Rn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Na(e)?e:[e]},Rn.chain=ta,Rn.chunk=function(e,t,n){t=(n?ci(e,t,n):void 0===t)?1:an(os(t),0);var r=null==e?0:e.length;if(!r||t<1)return[];for(var i=0,a=0,s=o(Xt(r/t));ir?0:r+n),(o=void 0===o||o>r?r:os(o))<0&&(o+=r),o=n>o?0:rs(o);n>>0)?(e=ss(e))&&("string"==typeof t||null!=t&&!Ya(t))&&!(t=Xo(t))&&jt(e)?ur(Kt(e),0,n):e.split(t,n):[]},Rn.spread=function(e,t){if("function"!=typeof e)throw new ve(i);return t=null==t?0:an(os(t),0),jo((function(n){var o=n[t],r=ur(n,0,t);return o&&mt(r,o),it(e,this,r)}))},Rn.tail=function(e){var t=null==e?0:e.length;return t?Ko(e,1,t):[]},Rn.take=function(e,t,n){return e&&e.length?Ko(e,0,(t=n||void 0===t?1:os(t))<0?0:t):[]},Rn.takeRight=function(e,t,n){var o=null==e?0:e.length;return o?Ko(e,(t=o-(t=n||void 0===t?1:os(t)))<0?0:t,o):[]},Rn.takeRightWhile=function(e,t){return e&&e.length?nr(e,Jr(t,3),!1,!0):[]},Rn.takeWhile=function(e,t){return e&&e.length?nr(e,Jr(t,3)):[]},Rn.tap=function(e,t){return t(e),e},Rn.throttle=function(e,t,n){var o=!0,r=!0;if("function"!=typeof e)throw new ve(i);return Va(n)&&(o="leading"in n?!!n.leading:o,r="trailing"in n?!!n.trailing:r),ya(e,t,{leading:o,maxWait:t,trailing:r})},Rn.thru=na,Rn.toArray=ts,Rn.toPairs=ks,Rn.toPairsIn=Rs,Rn.toPath=function(e){return Na(e)?ht(e,Ti):Ja(e)?[e]:vr(xi(ss(e)))},Rn.toPlainObject=as,Rn.transform=function(e,t,n){var o=Na(e),r=o||La(e)||Xa(e);if(t=Jr(t,4),null==n){var i=e&&e.constructor;n=r?o?new i:[]:Va(e)&&Ba(i)?On(ze(e)):{}}return(r?st:co)(e,(function(e,o,r){return t(n,e,o,r)})),n},Rn.unary=function(e){return fa(e,1)},Rn.union=Hi,Rn.unionBy=zi,Rn.unionWith=Ki,Rn.uniq=function(e){return e&&e.length?Zo(e):[]},Rn.uniqBy=function(e,t){return e&&e.length?Zo(e,Jr(t,2)):[]},Rn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Zo(e,void 0,t):[]},Rn.unset=function(e,t){return null==e||er(e,t)},Rn.unzip=Wi,Rn.unzipWith=Yi,Rn.update=function(e,t,n){return null==e?e:tr(e,t,sr(n))},Rn.updateWith=function(e,t,n,o){return o="function"==typeof o?o:void 0,null==e?e:tr(e,t,sr(n),o)},Rn.values=Os,Rn.valuesIn=function(e){return null==e?[]:It(e,Es(e))},Rn.without=$i,Rn.words=Bs,Rn.wrap=function(e,t){return Ta(sr(t),e)},Rn.xor=Qi,Rn.xorBy=Ji,Rn.xorWith=Xi,Rn.zip=Zi,Rn.zipObject=function(e,t){return ir(e||[],t||[],Vn)},Rn.zipObjectDeep=function(e,t){return ir(e||[],t||[],Go)},Rn.zipWith=ea,Rn.entries=ks,Rn.entriesIn=Rs,Rn.extend=ls,Rn.extendWith=us,Qs(Rn,Rn),Rn.add=ac,Rn.attempt=qs,Rn.camelCase=Ds,Rn.capitalize=Is,Rn.ceil=sc,Rn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=is(n))==n?n:0),void 0!==t&&(t=(t=is(t))==t?t:0),$n(is(e),t,n)},Rn.clone=function(e){return Qn(e,4)},Rn.cloneDeep=function(e){return Qn(e,5)},Rn.cloneDeepWith=function(e,t){return Qn(e,5,t="function"==typeof t?t:void 0)},Rn.cloneWith=function(e,t){return Qn(e,4,t="function"==typeof t?t:void 0)},Rn.conformsTo=function(e,t){return null==t||Jn(e,t,ys(t))},Rn.deburr=Fs,Rn.defaultTo=function(e,t){return null==e||e!=e?t:e},Rn.divide=cc,Rn.endsWith=function(e,t,n){e=ss(e),t=Xo(t);var o=e.length,r=n=void 0===n?o:$n(os(n),0,o);return(n-=t.length)>=0&&e.slice(n,r)==t},Rn.eq=Oa,Rn.escape=function(e){return(e=ss(e))&&j.test(e)?e.replace(L,Lt):e},Rn.escapeRegExp=function(e){return(e=ss(e))&&W.test(e)?e.replace(K,"\\$&"):e},Rn.every=function(e,t,n){var o=Na(e)?lt:no;return n&&ci(e,t,n)&&(t=void 0),o(e,Jr(t,3))},Rn.find=ia,Rn.findIndex=Fi,Rn.findKey=function(e,t){return bt(e,Jr(t,3),co)},Rn.findLast=aa,Rn.findLastIndex=Ni,Rn.findLastKey=function(e,t){return bt(e,Jr(t,3),lo)},Rn.floor=lc,Rn.forEach=sa,Rn.forEachRight=ca,Rn.forIn=function(e,t){return null==e?e:ao(e,Jr(t,3),Es)},Rn.forInRight=function(e,t){return null==e?e:so(e,Jr(t,3),Es)},Rn.forOwn=function(e,t){return e&&co(e,Jr(t,3))},Rn.forOwnRight=function(e,t){return e&&lo(e,Jr(t,3))},Rn.get=gs,Rn.gt=Da,Rn.gte=Ia,Rn.has=function(e,t){return null!=e&&ri(e,t,fo)},Rn.hasIn=fs,Rn.head=Mi,Rn.identity=Ks,Rn.includes=function(e,t,n,o){e=Ma(e)?e:Os(e),n=n&&!o?os(n):0;var r=e.length;return n<0&&(n=an(r+n,0)),Qa(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&Et(e,t,n)>-1},Rn.indexOf=function(e,t,n){var o=null==e?0:e.length;if(!o)return-1;var r=null==n?0:os(n);return r<0&&(r=an(o+r,0)),Et(e,t,r)},Rn.inRange=function(e,t,n){return t=ns(t),void 0===n?(n=t,t=0):n=ns(n),function(e,t,n){return e>=sn(t,n)&&e=-9007199254740991&&e<=9007199254740991},Rn.isSet=$a,Rn.isString=Qa,Rn.isSymbol=Ja,Rn.isTypedArray=Xa,Rn.isUndefined=function(e){return void 0===e},Rn.isWeakMap=function(e){return Ha(e)&&oi(e)==S},Rn.isWeakSet=function(e){return Ha(e)&&"[object WeakSet]"==mo(e)},Rn.join=function(e,t){return null==e?"":on.call(e,t)},Rn.kebabCase=Ns,Rn.last=ji,Rn.lastIndexOf=function(e,t,n){var o=null==e?0:e.length;if(!o)return-1;var r=o;return void 0!==n&&(r=(r=os(n))<0?an(o+r,0):sn(r,o-1)),t==t?function(e,t,n){for(var o=n+1;o--;)if(e[o]===t)return o;return o}(e,t,r):yt(e,wt,r,!0)},Rn.lowerCase=As,Rn.lowerFirst=Ms,Rn.lt=Za,Rn.lte=es,Rn.max=function(e){return e&&e.length?oo(e,Ks,go):void 0},Rn.maxBy=function(e,t){return e&&e.length?oo(e,Jr(t,2),go):void 0},Rn.mean=function(e){return Ct(e,Ks)},Rn.meanBy=function(e,t){return Ct(e,Jr(t,2))},Rn.min=function(e){return e&&e.length?oo(e,Ks,ko):void 0},Rn.minBy=function(e,t){return e&&e.length?oo(e,Jr(t,2),ko):void 0},Rn.stubArray=rc,Rn.stubFalse=ic,Rn.stubObject=function(){return{}},Rn.stubString=function(){return""},Rn.stubTrue=function(){return!0},Rn.multiply=dc,Rn.nth=function(e,t){return e&&e.length?Fo(e,os(t)):void 0},Rn.noConflict=function(){return We._===this&&(We._=Oe),this},Rn.noop=Js,Rn.now=ga,Rn.pad=function(e,t,n){e=ss(e);var o=(t=os(t))?zt(e):0;if(!t||o>=t)return e;var r=(t-o)/2;return Nr(Zt(r),n)+e+Nr(Xt(r),n)},Rn.padEnd=function(e,t,n){e=ss(e);var o=(t=os(t))?zt(e):0;return t&&ot){var o=e;e=t,t=o}if(n||e%1||t%1){var r=un();return sn(e+r*(t-e+Ve("1e-"+((r+"").length-1))),t)}return Lo(e,t)},Rn.reduce=function(e,t,n){var o=Na(e)?gt:kt,r=arguments.length<3;return o(e,Jr(t,4),n,r,eo)},Rn.reduceRight=function(e,t,n){var o=Na(e)?ft:kt,r=arguments.length<3;return o(e,Jr(t,4),n,r,to)},Rn.repeat=function(e,t,n){return t=(n?ci(e,t,n):void 0===t)?1:os(t),Uo(ss(e),t)},Rn.replace=function(){var e=arguments,t=ss(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Rn.result=function(e,t,n){var o=-1,r=(t=cr(t,e)).length;for(r||(r=1,e=void 0);++o9007199254740991)return[];var n=4294967295,o=sn(e,4294967295);e-=4294967295;for(var r=Ot(o,t=Jr(t));++n=i)return e;var s=n-zt(o);if(s<1)return o;var c=a?ur(a,0,s).join(""):e.slice(0,s);if(void 0===r)return c+o;if(a&&(s+=c.length-s),Ya(r)){if(e.slice(s).search(r)){var l,u=c;for(r.global||(r=fe(r.source,ss(oe.exec(r))+"g")),r.lastIndex=0;l=r.exec(u);)var d=l.index;c=c.slice(0,void 0===d?s:d)}}else if(e.indexOf(Xo(r),s)!=s){var p=c.lastIndexOf(r);p>-1&&(c=c.slice(0,p))}return c+o},Rn.unescape=function(e){return(e=ss(e))&&U.test(e)?e.replace(P,Wt):e},Rn.uniqueId=function(e){var t=++xe;return ss(e)+t},Rn.upperCase=Us,Rn.upperFirst=js,Rn.each=sa,Rn.eachRight=ca,Rn.first=Mi,Qs(Rn,(uc={},co(Rn,(function(e,t){Ce.call(Rn.prototype,t)||(uc[t]=e)})),uc),{chain:!1}),Rn.VERSION="4.17.15",st(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Rn[e].placeholder=Rn})),st(["drop","take"],(function(e,t){Fn.prototype[e]=function(n){n=void 0===n?1:an(os(n),0);var o=this.__filtered__&&!t?new Fn(this):this.clone();return o.__filtered__?o.__takeCount__=sn(n,o.__takeCount__):o.__views__.push({size:sn(n,4294967295),type:e+(o.__dir__<0?"Right":"")}),o},Fn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),st(["filter","map","takeWhile"],(function(e,t){var n=t+1,o=1==n||3==n;Fn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Jr(e,3),type:n}),t.__filtered__=t.__filtered__||o,t}})),st(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Fn.prototype[e]=function(){return this[n](1).value()[0]}})),st(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Fn.prototype[e]=function(){return this.__filtered__?new Fn(this):this[n](1)}})),Fn.prototype.compact=function(){return this.filter(Ks)},Fn.prototype.find=function(e){return this.filter(e).head()},Fn.prototype.findLast=function(e){return this.reverse().find(e)},Fn.prototype.invokeMap=jo((function(e,t){return"function"==typeof e?new Fn(this):this.map((function(n){return bo(n,e,t)}))})),Fn.prototype.reject=function(e){return this.filter(Ca(Jr(e)))},Fn.prototype.slice=function(e,t){e=os(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Fn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=os(t))<0?n.dropRight(-t):n.take(t-e)),n)},Fn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Fn.prototype.toArray=function(){return this.take(4294967295)},co(Fn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),o=/^(?:head|last)$/.test(t),r=Rn[o?"take"+("last"==t?"Right":""):t],i=o||/^find/.test(t);r&&(Rn.prototype[t]=function(){var t=this.__wrapped__,a=o?[1]:arguments,s=t instanceof Fn,c=a[0],l=s||Na(t),u=function(e){var t=r.apply(Rn,mt([e],a));return o&&d?t[0]:t};l&&n&&"function"==typeof c&&1!=c.length&&(s=l=!1);var d=this.__chain__,p=!!this.__actions__.length,h=i&&!d,m=s&&!p;if(!i&&l){t=m?t:new Fn(this);var g=e.apply(t,a);return g.__actions__.push({func:na,args:[u],thisArg:void 0}),new In(g,d)}return h&&m?e.apply(this,a):(g=this.thru(u),h?o?g.value()[0]:g.value():g)})})),st(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",o=/^(?:pop|shift)$/.test(e);Rn.prototype[e]=function(){var e=arguments;if(o&&!this.__chain__){var r=this.value();return t.apply(Na(r)?r:[],e)}return this[n]((function(n){return t.apply(Na(n)?n:[],e)}))}})),co(Fn.prototype,(function(e,t){var n=Rn[t];if(n){var o=n.name+"";Ce.call(bn,o)||(bn[o]=[]),bn[o].push({name:t,func:n})}})),bn[Or(void 0,2).name]=[{name:"wrapper",func:void 0}],Fn.prototype.clone=function(){var e=new Fn(this.__wrapped__);return e.__actions__=vr(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=vr(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=vr(this.__views__),e},Fn.prototype.reverse=function(){if(this.__filtered__){var e=new Fn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Fn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Na(e),o=t<0,r=n?e.length:0,i=function(e,t,n){var o=-1,r=n.length;for(;++o=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Rn.prototype.plant=function(e){for(var t,n=this;n instanceof Dn;){var o=Ri(n);o.__index__=0,o.__values__=void 0,t?r.__wrapped__=o:t=o;var r=o;n=n.__wrapped__}return r.__wrapped__=e,t},Rn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Fn){var t=e;return this.__actions__.length&&(t=new Fn(this)),(t=t.reverse()).__actions__.push({func:na,args:[Vi],thisArg:void 0}),new In(t,this.__chain__)}return this.thru(Vi)},Rn.prototype.toJSON=Rn.prototype.valueOf=Rn.prototype.value=function(){return or(this.__wrapped__,this.__actions__)},Rn.prototype.first=Rn.prototype.head,Xe&&(Rn.prototype[Xe]=function(){return this}),Rn}();We._=Yt,void 0===(r=function(){return Yt}.call(t,n,t,o))||(o.exports=r)}).call(this)}).call(this,n(24),n(213)(e))},function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return s})),n.d(t,"c",(function(){return l}));var o=n(5),r=n.n(o),i=n(93);let a,s,c;!function(e){e.Screenshot="m.capability.screenshot",e.Sticker="m.sticker",e.AlwaysOnScreen="m.always_on_screen"}(a||(a={})),function(e){e.GetSupportedApiVersions="supported_api_versions",e.TakeScreenshot="screenshot",e.GetCapabilities="capabilities",e.SendEvent="send_event",e.UpdateVisibility="visibility",e.ReceiveOpenIDCredentials="openid_credentials",e.SetAlwaysOnScreen="set_always_on_screen",e.ClientReady="im.vector.ready"}(s||(s={})),function(e){e.ToWidget="toWidget",e.FromWidget="fromWidget"}(c||(c={}));class l{constructor(e,t,n){this.widgetId=t,this.requestedCapabilities=n,r()(this,"origin",void 0),r()(this,"inFlightRequests",{}),r()(this,"readyPromise",void 0),r()(this,"readyPromiseResolve",void 0),r()(this,"expectingExplicitReady",!1),this.origin=new URL(e).origin,this.readyPromise=new Promise(e=>this.readyPromiseResolve=e),window.addEventListener("message",e=>{if(e.origin!==this.origin)return;if(!e.data)return;if(e.data.widgetId!==this.widgetId)return;const t=e.data;if(t.api===c.ToWidget&&t.action)console.log("[WidgetAPI] Got request: ".concat(JSON.stringify(t))),t.action===s.GetCapabilities?(this.onCapabilitiesRequest(t),this.expectingExplicitReady||this.readyPromiseResolve()):t.action===s.ClientReady?(this.readyPromiseResolve(),this.replyToRequest(t,{})):console.warn("[WidgetAPI] Got unexpected action: ".concat(t.action));else if(t.api===c.FromWidget&&this.inFlightRequests[t.requestId]){console.log("[WidgetAPI] Got reply: ".concat(JSON.stringify(t)));const e=this.inFlightRequests[t.requestId];delete this.inFlightRequests[t.requestId],e(t)}else console.warn("[WidgetAPI] Unhandled payload: ".concat(JSON.stringify(t)))})}waitReady(){return this.readyPromise}replyToRequest(e,t){if(!window.parent)return;const n=JSON.parse(JSON.stringify(e));n.response=t,window.parent.postMessage(n,this.origin)}onCapabilitiesRequest(e){return this.replyToRequest(e,{capabilities:this.requestedCapabilities})}callAction(e,t,n){if(!window.parent)return;const o={api:c.FromWidget,widgetId:this.widgetId,action:e,requestId:Object(i.a)(160),data:t,response:{}};n&&(this.inFlightRequests[o.requestId]=n),console.log("[WidgetAPI] Sending request: ",o),window.parent.postMessage(o,"*")}setAlwaysOnScreen(e){return new Promise(t=>{this.callAction(s.SetAlwaysOnScreen,{value:e},null),t()})}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a})),n.d(t,"b",(function(){return s})),n.d(t,"c",(function(){return c})),n.d(t,"d",(function(){return l}));var o=n(2),r=n.n(o),i=n(1);const a=r.a.shape({userId:r.a.string.isRequired,displayname:r.a.string,avatarUrl:r.a.string}),s=r.a.shape({displayname:r.a.string,name:r.a.string,roomId:r.a.string.isRequired,canonicalAlias:r.a.string,avatarUrl:r.a.string});function c(e){return{userId:e.user_id,displayname:e.displayname,avatarUrl:e.avatar_url,isPrivileged:e.is_privileged}}function l(e){return{displayname:e.name||e.canonical_alias||Object(i.a)("Unnamed Room"),name:e.name,roomId:e.room_id,canonicalAlias:e.canonical_alias,avatarUrl:e.avatar_url,topic:e.topic,numJoinedMembers:e.num_joined_members,worldReadable:e.world_readable,guestCanJoin:e.guest_can_join,isPublic:!1!==e.is_public}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));const o=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;function r(e){return o.test(e)}},function(e,t,n){"use strict";function o(e,t){if(e===t)return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let o=0;o0)return!1;const o=i[t];if(o&&!o.map(n))return!1}const a=this.filter_json.contains_url;return void 0===a||a===o},o.prototype.filter=function(e){return e.filter(this.check,this)},o.prototype.limit=function(){return void 0!==this.filter_json.limit?this.filter_json.limit:10},i.LAZY_LOADING_MESSAGES_FILTER={lazy_load_members:!0},i.LAZY_LOADING_SYNC_FILTER={room:{state:i.LAZY_LOADING_MESSAGES_FILTER}},i.prototype.getFilterId=function(){return this.filterId},i.prototype.getDefinition=function(){return this.definition},i.prototype.setDefinition=function(e){this.definition=e;const t=e.room,n={};t&&(t.rooms&&(n.rooms=t.rooms),t.rooms&&(n.not_rooms=t.not_rooms),this._include_leave=t.include_leave||!1),this._room_filter=new o(n),this._room_timeline_filter=new o(t&&t.timeline||{})},i.prototype.getRoomTimelineFilterComponent=function(){return this._room_timeline_filter},i.prototype.filterRoomTimeline=function(e){return this._room_timeline_filter.filter(this._room_filter.filter(e))},i.prototype.setTimelineLimit=function(e){r(this.definition,"room.timeline.limit",e)},i.prototype.setIncludeLeaveRooms=function(e){r(this.definition,"room.include_leave",e)},i.fromJson=function(e,t,n){const o=new i(e,t);return o.setDefinition(n),o}},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var o=n(5),r=n.n(o),i=n(121),a=n(122);class s extends i.a{getValueOverride(e,t,n,o){if(!n)return null;if(s.isLogin)return"light";return Object(a.c)()[n]?null:a.a}}r()(s,"isLogin",!1)},function(e,t,n){var o=n(302)("wks"),r=n(249),i=n(142).Symbol,a="function"==typeof i;(e.exports=function(e){return o[e]||(o[e]=a&&i[e]||(a?i:r)("Symbol."+e))}).store=o},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var o=n(4),r=n(74),i=n(22),a=n(1),s=n(3),c=n(9),l=n(7),u=n(44);class d{constructor(e){"+"===e[0]?(this.roomId=null,this.groupId=e):(this.roomId=e,this.groupId=null),this.canceled=!1,this.addrs=[],this.busy=!1,this.completionStates={},this.errors={},this.deferred=null}invite(e){if(this.addrs.length>0)throw new Error("Already inviting/invited");this.addrs.push(...e);for(const e of this.addrs)null===Object(r.c)(e)&&(this.completionStates[e]="error",this.errors[e]={errcode:"M_INVALID",errorText:Object(a.a)("Unrecognised address")});return this.deferred=Object(u.b)(),this._inviteMore(0),this.deferred.promise}cancel(){this.busy&&(this._canceled=!0,this.deferred.reject(new Error("canceled")))}getCompletionState(e){return this.completionStates[e]}getErrorText(e){return this.errors[e]?this.errors[e].errorText:null}async _inviteToRoom(e,t,n){const i=Object(r.c)(t);if("email"===i)return o.a.get().inviteByEmail(e,t);if("mx-user-id"===i){const r=o.a.get().getRoom(e);if(!r)throw new Error("Room not found");const i=r.getMember(t);if(i&&["join","invite"].includes(i.membership))throw{errcode:"RIOT.ALREADY_IN_ROOM",error:"Member already invited"};if(!n&&l.b.getValue("promptBeforeInviteUnknownUsers",this.roomId))try{if(!await o.a.get().getProfileInfo(t))throw new Error("User has no profile")}catch(e){throw{errcode:"RIOT.USER_NOT_FOUND",error:"User does not have a profile or does not exist."}}return o.a.get().invite(e,t)}throw new Error("Unsupported address")}_doInvite(e,t){return new Promise((n,o)=>{let r;console.log("Inviting ".concat(e)),r=null!==this.groupId?i.a.inviteUserToGroup(this.groupId,e):this._inviteToRoom(this.roomId,e,t),r.then(()=>{this._canceled||(this.completionStates[e]="invited",delete this.errors[e],n())}).catch(r=>{if(this._canceled)return;let i;console.error(r);let s=!1;if("M_FORBIDDEN"===r.errcode)s=!0,i=Object(a.a)("You do not have permission to invite people to this room.");else if("RIOT.ALREADY_IN_ROOM"===r.errcode)i=Object(a.a)("User %(userId)s is already in the room",{userId:e});else{if("M_LIMIT_EXCEEDED"===r.errcode)return void setTimeout(()=>{this._doInvite(e,t).then(n,o)},5e3);["M_NOT_FOUND","M_USER_NOT_FOUND","RIOT.USER_NOT_FOUND"].includes(r.errcode)?i=Object(a.a)("User %(user_id)s does not exist",{user_id:e}):"M_PROFILE_UNDISCLOSED"===r.errcode?i=Object(a.a)("User %(user_id)s may or may not exist",{user_id:e}):"M_PROFILE_NOT_FOUND"!==r.errcode||t?i="M_BAD_STATE"===r.errcode?Object(a.a)("The user must be unbanned before they can be invited."):"M_UNSUPPORTED_ROOM_VERSION"===r.errcode?Object(a.a)("The user's homeserver does not support the version of the room."):Object(a.a)("Unknown server error"):(console.warn("User ".concat(e," does not have a profile - inviting anyways automatically")),this._doInvite(e,!0).then(n,o))}this.completionStates[e]="error",this.errors[e]={errorText:i,errcode:r.errcode},this.busy=!s,this.fatal=s,s?o():n()})})}_inviteMore(e,t){if(this._canceled)return;if(e===this.addrs.length){if(this.busy=!1,Object.keys(this.errors).length>0&&!this.groupId){const e=["M_NOT_FOUND","M_USER_NOT_FOUND","M_PROFILE_UNDISCLOSED","M_PROFILE_NOT_FOUND","RIOT.USER_NOT_FOUND"],t=Object.keys(this.errors).filter(t=>e.includes(this.errors[t].errcode));if(t.length>0){const e=()=>{const e=t.map(e=>this._doInvite(e,!0));Promise.all(e).then(()=>this.deferred.resolve(this.completionStates))};if(!l.b.getValue("promptBeforeInviteUnknownUsers",this.roomId))return void e();const n=s.a("dialogs.AskInviteAnywayDialog");return console.log("Showing failed to invite dialog..."),void c.a.createTrackedDialog("Failed to invite the following users to the room","",n,{unknownProfileUsers:t.map(e=>({userId:e,errorText:this.errors[e].errorText})),onInviteAnyways:()=>e(),onGiveUp:()=>{for(const e of t)this.completionStates[e]="invited";this.deferred.resolve(this.completionStates)}})}}return void this.deferred.resolve(this.completionStates)}const n=this.addrs[e];null!==Object(r.c)(n)&&"invited"!==this.completionStates[n]?this._doInvite(n,t).then(()=>{this._inviteMore(e+1,t)}).catch(()=>this.deferred.resolve(this.completionStates)):this._inviteMore(e+1)}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var o=n(7);function r(e){const t=t=>o.b.getValue(t,e.getRoomId());if(e.isRedacted()&&!t("showRedactions"))return!0;if(e.isRelation("m.replace"))return!0;const n=function(e){const t={isMemberEvent:"m.room.member"===e.getType()};if(!t.isMemberEvent)return t;const n=e.getContent(),o=e.getPrevContent(),r=n.membership!==o.membership;t.isJoin=r&&"join"===n.membership,t.isPart=r&&"leave"===n.membership&&e.getStateKey()===e.getSender();const i=!r&&"join"===n.membership;return t.isDisplaynameChange=i&&n.displayname!==o.displayname,t.isAvatarChange=i&&n.avatar_url!==o.avatar_url,t}(e);if(n.isMemberEvent){if((n.isJoin||n.isPart)&&!t("showJoinLeaves"))return!0;if(n.isAvatarChange&&!t("showAvatarChanges"))return!0;if(n.isDisplaynameChange&&!t("showDisplaynameChanges"))return!0}return!1}},function(e,t,n){var o=n(337),r=n(1402),i=n(1406),a=n(1407),s=i((function(e,t){if(null==e)return[];var n=t.length;return n>1&&a(e,t[0],t[1])?t=[]:n>2&&a(t[0],t[1],t[2])&&(t=[t[0]]),r(e,o(t,1),[])}));e.exports=s},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{getValueOverride(e,t,n,o){return null}onChange(e,t,n){}}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"c",(function(){return p})),n.d(t,"d",(function(){return h}));var o=n(5),r=n.n(o),i=n(1),a=n(64),s=n(6),c=n(7),l=n(115);const u="light";class d{constructor(){r()(this,"_onChange",()=>{this.recheck()}),r()(this,"_onAction",e=>{"recheck_theme"===e.action&&this.recheck(e.forceTheme)}),this._themeWatchRef=null,this._systemThemeWatchRef=null,this._dispatcherRef=null,this._preferDark=e.matchMedia("(prefers-color-scheme: dark)"),this._preferLight=e.matchMedia("(prefers-color-scheme: light)"),this._currentTheme=this.getEffectiveTheme()}start(){this._themeWatchRef=c.b.watchSetting("theme",null,this._onChange),this._systemThemeWatchRef=c.b.watchSetting("use_system_theme",null,this._onChange),this._preferDark.addEventListener&&(this._preferDark.addEventListener("change",this._onChange),this._preferLight.addEventListener("change",this._onChange)),this._dispatcherRef=s.a.register(this._onAction)}stop(){this._preferDark.addEventListener&&(this._preferDark.removeEventListener("change",this._onChange),this._preferLight.removeEventListener("change",this._onChange)),c.b.unwatchSetting(this._systemThemeWatchRef),c.b.unwatchSetting(this._themeWatchRef),s.a.unregister(this._dispatcherRef)}recheck(e){const t=this._currentTheme;this._currentTheme=void 0===e?this.getEffectiveTheme():e,t!==this._currentTheme&&h(this._currentTheme)}getEffectiveTheme(){if(l.a.isLogin)return"light";if(c.b.getValueAt(c.a.DEVICE,"use_system_theme",null,!1,!0)){if(console.log("returning explicit system theme"),this._preferDark.matches)return"dark";if(this._preferLight.matches)return"light"}const e=c.b.getValueAt(c.a.DEVICE,"theme",null,!1,!0);if(e)return console.log("returning explicit theme: "+e),e;if(c.b.getValue("use_system_theme")){if(this._preferDark.matches)return"dark";if(this._preferLight.matches)return"light"}return console.log("returning theme value"),c.b.getValue("theme")}isSystemThemeSupported(){return this._preferDark.matches||this._preferLight.matches}}function p(){const e={light:Object(i.a)("Light theme"),dark:Object(i.a)("Dark theme")},t=c.b.getValue("custom_themes"),n={};for(const{name:e}of t)n["custom-".concat(e)]=e;return Object.assign({},n,e)}async function h(e){if(!e){const t=new d;e=t.getEffectiveTheme()}let t=e;if(e.startsWith("custom-")){const n=function(e){const t=c.b.getValue("custom_themes");if(!t)throw new Error("No custom themes set, can't set custom theme \"".concat(e,'"'));const n=t.find(t=>t.name===e);if(!n){const n=t.map(e=>e.name).join(", ");throw new Error("Can't find custom theme \"".concat(e,'", only know ').concat(n))}return n}(e.substr(7));t=n.is_dark?"dark-custom":"light-custom",function(e){const{style:t}=document.body;if(e.colors)for(const[n,o]of Object.entries(e.colors))t.setProperty("--".concat(n),o),t.setProperty("--".concat(n,"-0pct"),o+"00"),t.setProperty("--".concat(n,"-50pct"),o+"7F")}(n)}const n=Object.create(null);let o;for(let e=0;o=document.getElementsByTagName("link")[e];e++){const e=o.getAttribute("href").match(/^bundles\/.*\/theme-(.*)\.css$/);e&&(n[e[1]]=o)}if(!(t in n))throw new Error("Unknown theme "+t);return n[t].disabled=!1,new Promise(o=>{const r=function(){n[t].disabled=!1,Object.values(n).forEach(e=>{e!=n[t]&&(e.disabled=!0)}),a.a.setTheme(e),o()};let i=!1;n[t].onload=()=>{r()};for(let e=0;ee.deviceId===n);a.secondKeyB64=o.getFingerprint()}else 2===r&&(a.firstKeyB64=t.getDeviceEd25519Key(),a.secondKeyB64=s.getId("master"));return a}constructor(e){super(e),this.state={dataUri:null},this.generateQrCode()}componentDidUpdate(e){JSON.stringify(this.props)!==JSON.stringify(e)&&this.generateQRCode()}async generateQrCode(){let t=e.alloc(0);const n=n=>{const o=e.from([n]);t=e.concat([t,o])},o=(n,o,r=!0)=>{const i=e.from(n,o);r&&(n=>{const o=e.alloc(2);o.writeInt16BE(n,0),t=e.concat([t,o])})(i.byteLength),t=e.concat([t,i])},r=n=>{const o=Object(g.decodeBase64)(n),r=e.from(o);t=e.concat([t,r])};o(this.props.prefix,"ascii",!1),n(this.props.version),n(this.props.mode),o(this.props.transactionId,"utf-8"),r(this.props.firstKeyB64),r(this.props.secondKeyB64),r(this.props.secretB64);const i=await _.toDataURL([{data:t,mode:"byte"}],{errorCorrectionLevel:"L"});this.setState({dataUri:i})}render(){return this.state.dataUri?l.a.createElement("img",{src:this.state.dataUri,className:"mx_VerificationQRCode"}):l.a.createElement("div",{className:"mx_VerificationQRCode"},l.a.createElement(f.a,null))}},s()(r,"propTypes",{prefix:d.a.string.isRequired,version:d.a.number.isRequired,mode:d.a.number.isRequired,transactionId:d.a.string.isRequired,firstKeyB64:d.a.string.isRequired,secondKeyB64:d.a.string.isRequired,secretB64:d.a.string.isRequired}),o=i))||o}).call(this,n(139).Buffer)},function(e,t,n){"use strict";var o=n(787),r=n(367).isArray,i=n(367).isDate,a=n(790).sprintf,s=n(28),c=n(791),l=n(793);function u(e){return"string"==typeof e||"[object String]"===Object.prototype.toString.call(e)}function d(e){return u(e)&&":"===e[0]}function p(e,t){return t.reduce((function(e,t){return null!==(n=e)&&"[object Object]"===Object.prototype.toString.call(n)&&function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:null;var n}),e)}function h(){s.EventEmitter.apply(this),this._registry={locale:"en",interpolate:!0,fallbackLocales:[],scope:null,translations:{},interpolations:{},normalizedKeys:{},separator:".",keepTrailingDot:!1,keyTransformer:function(e){return e},generateMissingEntry:function(e){return"missing translation: "+e}},this.registerTranslations("en",n(795)),this.setMaxListeners(0)}h.prototype=s.EventEmitter.prototype,h.prototype.constructor=s.EventEmitter,h.prototype.getLocale=function(){return this._registry.locale},h.prototype.setLocale=function(e){var t=this._registry.locale;return t!=e&&(this._registry.locale=e,this.emit("localechange",e,t)),t},h.prototype.getFallbackLocale=function(){return this._registry.fallbackLocales},h.prototype.setFallbackLocale=function(e){var t=this._registry.fallbackLocales;return this._registry.fallbackLocales=[].concat(e||[]),t},h.prototype.getAvailableLocales=function(){return this._registry.availableLocales||Object.keys(this._registry.translations)},h.prototype.setAvailableLocales=function(e){var t=this.getAvailableLocales();return this._registry.availableLocales=e,t},h.prototype.getSeparator=function(){return this._registry.separator},h.prototype.setSeparator=function(e){var t=this._registry.separator;return this._registry.separator=e,t},h.prototype.setInterpolate=function(e){var t=this._registry.interpolate;return this._registry.interpolate=e,t},h.prototype.getInterpolate=function(){return this._registry.interpolate},h.prototype.setKeyTransformer=function(e){var t=this._registry.keyTransformer;return this._registry.keyTransformer=e,t},h.prototype.getKeyTransformer=function(){return this._registry.keyTransformer},h.prototype.setMissingEntryGenerator=function(e){var t=this._registry.generateMissingEntry;return this._registry.generateMissingEntry=e,t},h.prototype.getMissingEntryGenerator=function(){return this._registry.generateMissingEntry},h.prototype.registerTranslations=function(e,t){var n={};return n[e]=t,o(!0,this._registry.translations,n),n},h.prototype.registerInterpolations=function(e){return o(!0,this._registry.interpolations,e)},h.prototype.onLocaleChange=h.prototype.addLocaleChangeListener=function(e){this.addListener("localechange",e)},h.prototype.offLocaleChange=h.prototype.removeLocaleChangeListener=function(e){this.removeListener("localechange",e)},h.prototype.onTranslationNotFound=h.prototype.addTranslationNotFoundListener=function(e){this.addListener("translationnotfound",e)},h.prototype.offTranslationNotFound=h.prototype.removeTranslationNotFoundListener=function(e){this.removeListener("translationnotfound",e)},h.prototype.onError=h.prototype.addErrorListener=function(e){this.addListener("error",e)},h.prototype.offError=h.prototype.removeErrorListener=function(e){this.removeListener("error",e)},h.prototype.translate=function(e,t){if(!r(e)&&!u(e)||!e.length)throw new Error("invalid argument: key");d(e)&&(e=e.substr(1)),e=this._registry.keyTransformer(e,t);var n=(t=o(!0,{},t)).locale||this._registry.locale;delete t.locale;var i=t.scope||this._registry.scope;delete t.scope;var a=t.separator||this._registry.separator;delete t.separator;var s=[].concat(t.fallbackLocale||this._registry.fallbackLocales);delete t.fallbackLocale;var c=this._normalizeKeys(n,i,e,a),l=p(this._registry.translations,c);if(null===l&&(this.emit("translationnotfound",n,e,t.fallback,i),t.fallback&&(l=this._fallback(n,i,e,t.fallback,t))),null===l&&s.length>0&&-1===s.indexOf(n))for(var h=0,m=s.length;h=0;i--)""===o[i]&&(o.splice(i,1),!0===this._registry.keepTrailingDot&&i==o.length&&(o[o.length-1]+=""+t));return o}.bind(this)(e),this._registry.normalizedKeys[t][e]},h.prototype._interpolate=function(e,t){if("string"!=typeof e)return e;try{return a(e,o({},this._registry.interpolations,t))}catch(n){if(!(this.listenerCount("error")>0))throw n;return this.emit("error",n,e,t),null}},h.prototype._resolve=function(e,t,n,r,i){if(!1===(i=i||{}).resolve)return r;var a,s;if(d(r))a=this.translate(r,o({},i,{locale:e,scope:t}));else if("function"==typeof(s=r)||"[object Function]"===Object.prototype.toString.call(s)){var c;i.object?(c=i.object,delete i.object):c=n,a=this._resolve(e,t,n,r(c,i))}else a=r;return/^missing translation:/.test(a)?null:a},h.prototype._fallback=function(e,t,n,o,i){if(i=c(i,"fallback"),r(o)){for(var a=0,s=o.length;a-1?this.type="video":this.type="voice",e.getAge()&&setTimeout((function(){"ringing"==t.state&&(v("Call invite has expired. Hanging up."),t.hangupParty="remote",l(t,"ended"),h(t),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),t.emit("hangup",t))}),this.msg.lifetime-e.getAge())},a.prototype._initWithHangup=function(e){this.msg=e.getContent(),l(this,"ended")},a.prototype.answer=function(){v("Answering call %s of type %s",this.callId,this.type);const e=this;e._answerContent?e._sendAnswer():this.localAVStream||this.waitForLocalAVStream?this.localAVStream?this._maybeGotUserMediaForAnswer(this.localAVStream):this.waitForLocalAVStream&&l(this,"wait_local_media"):(this.webRtc.getUserMedia(w(this.type),C(e,e._maybeGotUserMediaForAnswer),C(e,e._maybeGotUserMediaForAnswer)),l(this,"wait_local_media"))},a.prototype._replacedBy=function(e){v(this.callId+" being replaced by "+e.callId),"wait_local_media"==this.state?(v("Telling new call to wait for local media"),e.waitForLocalAVStream=!0):("create_offer"==this.state||"invite_sent"==this.state)&&(v("Handing local stream to new call"),e._maybeGotUserMediaForAnswer(this.localAVStream),delete this.localAVStream),e.localVideoElement=this.localVideoElement,e.remoteVideoElement=this.remoteVideoElement,e.remoteAudioElement=this.remoteAudioElement,this.successor=e,this.emit("replaced",e),this.hangup(!0)},a.prototype.hangup=function(e,t){if("ended"==this.state)return;v("Ending call "+this.callId),p(this,"local",e,!t);const n={version:0,call_id:this.callId,reason:e};u(this,"m.call.hangup",n)},a.prototype.setLocalVideoMuted=function(e){this.localAVStream&&s(this.localAVStream.getVideoTracks(),!e)},a.prototype.isLocalVideoMuted=function(){return!!this.localAVStream&&!c(this.localAVStream.getVideoTracks())},a.prototype.setMicrophoneMuted=function(e){this.localAVStream&&s(this.localAVStream.getAudioTracks(),!e)},a.prototype.isMicrophoneMuted=function(){return!!this.localAVStream&&!c(this.localAVStream.getAudioTracks())},a.prototype._maybeGotUserMediaForInvite=function(e){if(this.successor)return void this.successor._maybeGotUserMediaForAnswer(e);if("ended"==this.state)return;v("_maybeGotUserMediaForInvite -> "+this.type);const t=this,n=e,o={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};if(e instanceof MediaStream){const n=this.getLocalVideoElement();n&&"video"==this.type&&(n.autoplay=!0,this.screenSharingStream?(v("Setting screen sharing stream to the local video element"),this.assignElement(n,this.screenSharingStream,"localVideo")):this.assignElement(n,e,"localVideo"),n.muted=!0,setTimeout((function(){const e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")}),0)),this.screenSharingStream&&(this.screenSharingStream.addTrack(e.getAudioTracks()[0]),e=this.screenSharingStream),this.localAVStream=e,s(e.getAudioTracks(),!0),this.peerConn=E(this),this.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return v("Failed to getUserMedia: "+n.name),void this._getUserMediaFailed(n);v("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only."),this.peerConn=E(this)}this.peerConn.createOffer(C(t,t._gotLocalOffer),C(t,t._getLocalOfferFailed),o),l(t,"create_offer")},a.prototype._sendAnswer=function(e){u(this,"m.call.answer",this._answerContent).then(()=>{l(this,"connecting"),b(this)}).catch(e=>{l(this,"ringing"),this.client.cancelPendingEvent(e.event);let t=a.ERR_SEND_ANSWER,n="Failed to send answer";throw"UnknownDeviceError"==e.name&&(t=a.ERR_UNKNOWN_DEVICES,n="Unknown devices present in the room"),this.emit("error",_(t,n)),e})},a.prototype._maybeGotUserMediaForAnswer=function(e){const t=this;if("ended"==t.state)return;const n=e;if(e instanceof MediaStream){const n=t.getLocalVideoElement();n&&"video"==t.type&&(n.autoplay=!0,this.assignElement(n,e,"localVideo"),n.muted=!0,setTimeout((function(){const e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")}),0)),t.localAVStream=e,s(e.getAudioTracks(),!0),t.peerConn.addStream(e)}else{if("PermissionDeniedError"!==n.name)return v("Failed to getUserMedia: "+n.name),void this._getUserMediaFailed(n);v("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only.")}const o={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};t.peerConn.createAnswer((function(e){v("Created answer: ",e),t.peerConn.setLocalDescription(e,(function(){t._answerContent={version:0,call_id:t.callId,answer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type}},t._sendAnswer()}),(function(){v("Error setting local description!")}),o)}),(function(e){v("Failed to create answer: "+e)})),l(t,"create_answer")},a.prototype._gotLocalIceCandidate=function(e){if(e.candidate){if(v("Got local ICE "+e.candidate.sdpMid+" candidate: "+e.candidate.candidate),"ended"==this.state)return;const t={candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid,sdpMLineIndex:e.candidate.sdpMLineIndex};d(this,t)}},a.prototype._gotRemoteIceCandidate=function(e){"ended"!=this.state&&(v("Got remote ICE "+e.sdpMid+" candidate: "+e.candidate),this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(e),(function(){}),(function(e){})))},a.prototype._receivedAnswer=function(e){if("ended"==this.state)return;this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(e.answer),C(this,this._onSetRemoteDescriptionSuccess),C(this,this._onSetRemoteDescriptionError)),l(this,"connecting")},a.prototype._gotLocalOffer=function(e){const t=this;v("Created offer: ",e),"ended"!=t.state?t.peerConn.setLocalDescription(e,(function(){const e={version:0,call_id:t.callId,offer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type},lifetime:a.CALL_TIMEOUT_MS};u(t,"m.call.invite",e).then(()=>{l(t,"invite_sent"),setTimeout((function(){"invite_sent"==t.state&&t.hangup("invite_timeout")}),a.CALL_TIMEOUT_MS)}).catch(e=>{let n=a.ERR_SEND_INVITE,o="Failed to send invite";throw"UnknownDeviceError"==e.name&&(n=a.ERR_UNKNOWN_DEVICES,o="Unknown devices present in the room"),t.client.cancelPendingEvent(e.event),p(t,"local",n,!1),t.emit("error",_(n,o)),e})}),(function(){v("Error setting local description!")})):v("Ignoring newly created offer on call ID "+t.callId+" because the call has ended")},a.prototype._getLocalOfferFailed=function(e){this.emit("error",_(a.ERR_LOCAL_OFFER_FAILED,"Failed to start audio for call!"))},a.prototype._getUserMediaFailed=function(e){p(this,"local","user_media_failed",!1),this.emit("error",_(a.ERR_NO_USER_MEDIA,"Couldn't start capturing media! Is your microphone set up and does this app have permission?"))},a.prototype._onIceConnectionStateChanged=function(){"ended"!=this.state&&(v("Ice connection state changed to: "+this.peerConn.iceConnectionState),"completed"==this.peerConn.iceConnectionState||"connected"==this.peerConn.iceConnectionState?(l(this,"connected"),this.didConnect=!0):"failed"==this.peerConn.iceConnectionState&&this.hangup("ice_failed"))},a.prototype._onSignallingStateChanged=function(){v("call "+this.callId+": Signalling state changed to: "+this.peerConn.signalingState)},a.prototype._onSetRemoteDescriptionSuccess=function(){v("Set remote description")},a.prototype._onSetRemoteDescriptionError=function(e){v("Failed to set remote description"+e)},a.prototype._onAddStream=function(e){v("Stream id "+e.stream.id+" added");const t=e.stream;t.getVideoTracks().length>0?(this.type="video",this.remoteAVStream=t,this.remoteAStream=t):(this.type="voice",this.remoteAStream=t);const n=this;x(t,(function(e){v("Track id "+e.id+" added"),e.onstarted=C(n,n._onRemoteStreamTrackStarted)})),void 0!==e.stream.oninactive?e.stream.oninactive=C(n,n._onRemoteStreamEnded):e.stream.onended=C(n,n._onRemoteStreamEnded),e.stream.onstarted=C(n,n._onRemoteStreamStarted),"video"===this.type?(m(this),g(this)):g(this)},a.prototype._onRemoteStreamStarted=function(e){l(this,"connected")},a.prototype._onRemoteStreamEnded=function(e){v("Remote stream ended"),this.hangupParty="remote",l(this,"ended"),h(this),"closed"!=this.peerConn.signalingState&&this.peerConn.close(),this.emit("hangup",this)},a.prototype._onRemoteStreamTrackStarted=function(e){l(this,"connected")},a.prototype._onHangupReceived=function(e){v("Hangup received"),p(this,"remote",e.reason,!0)},a.prototype._onAnsweredElsewhere=function(e){v("Answered elsewhere"),p(this,"remote","answered_elsewhere",!0)};const s=function(e,t){for(let n=0;n5)return v("Failed to send candidates on attempt %s. Giving up for now.",e.candidateSendTries),void(e.candidateSendTries=0);const o=500*Math.pow(2,e.candidateSendTries);++e.candidateSendTries,v("Failed to send candidates. Retrying in "+o+"ms"),setTimeout((function(){b(e)}),o)}))},y=function(e,t){e.client.callList[e.callId]=e,e.webRtc.getUserMedia(t,C(e,e._maybeGotUserMediaForInvite),C(e,e._maybeGotUserMediaForInvite)),l(e,"wait_local_media"),e.direction="outbound",e.config=t},E=function(e){const t=new e.webRtc.RtcPeerConnection({iceTransportPolicy:e.forceTURN?"relay":void 0,iceServers:e.turnServers});return t.oniceconnectionstatechange=C(e,e._onIceConnectionStateChanged),t.onsignalingstatechange=C(e,e._onSignallingStateChanged),t.onicecandidate=C(e,e._gotLocalIceCandidate),t.onaddstream=C(e,e._onAddStream),t},S=function(t){const n=e.screen;if(n)return{video:{mediaSource:"screen",mandatory:{chromeMediaSource:"screen",chromeMediaSourceId:""+Date.now(),maxWidth:n.width,maxHeight:n.height,minFrameRate:1,maxFrameRate:10}}};t.emit("error",_(a.ERR_NO_USER_MEDIA,"Couldn't determine screen sharing constaints."))},w=function(t){const n=!!e.window.navigator.webkitGetUserMedia;switch(t){case"voice":return{audio:{deviceId:k?{ideal:k}:void 0},video:!1};case"video":return{audio:{deviceId:k?{ideal:k}:void 0},video:{deviceId:R?{ideal:R}:void 0,width:n?{exact:640}:{ideal:640},height:n?{exact:360}:{ideal:360}}}}},C=function(e,t){return function(){return t.apply(e,arguments)}},x=function(e,t){!function(e,t){const n=e.getVideoTracks();for(let e=0;e-1)return!0;return!1}},l=i.navigator.getUserMedia||i.navigator.webkitGetUserMedia||i.navigator.mozGetUserMedia;l&&(c.getUserMedia=function(){return l.apply(i.navigator,arguments)});try{c.RtcPeerConnection=i.RTCPeerConnection||i.webkitRTCPeerConnection||i.mozRTCPeerConnection,c.RtcSessionDescription=i.RTCSessionDescription||i.webkitRTCSessionDescription||i.mozRTCSessionDescription,c.RtcIceCandidate=i.RTCIceCandidate||i.webkitRTCIceCandidate||i.mozRTCIceCandidate,c.vendor=null,i.mozRTCPeerConnection?c.vendor="mozilla":i.webkitRTCPeerConnection?c.vendor="webkit":i.RTCPeerConnection&&(c.vendor="generic")}catch(e){return o.a.error("Failed to set up WebRTC object: possible browser interference?"),o.a.error(e),null}if(!(c.RtcIceCandidate&&c.RtcSessionDescription&&c.RtcPeerConnection&&c.getUserMedia))return null;const u=!!r&&r.forceTURN;return new a({webRtc:c,client:t,URL:i.URL,roomId:n,turnServers:t.getTurnServers(),forceTURN:t._forceTURN||u})}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return s}));var o=n(4),r=n(119),i=(n(3),n(84));function a(e){return(!e.sender||e.sender.userId!=o.a.get().credentials.userId)&&("m.room.member"!=e.getType()&&("m.room.third_party_invite"!=e.getType()&&("m.call.answer"!=e.getType()&&"m.call.hangup"!=e.getType()&&(("m.room.message"!=e.getType()||"m.notify"!=e.getContent().msgtype)&&("m.room.aliases"!=e.getType()&&"m.room.canonical_alias"!=e.getType()&&("m.room.server_acl"!=e.getType()&&Object(i.b)(e)))))))}function s(e){const t=o.a.get().credentials.userId,n=e.getEventReadUpTo(t);if(e.timeline.length&&e.timeline[e.timeline.length-1].sender&&e.timeline[e.timeline.length-1].sender.userId===t)return!1;for(let t=e.timeline.length-1;t>=0;--t){const o=e.timeline[t];if(o.getId()==n)return!1;if(!Object(r.a)(o)&&a(o))return!0}return!0}},function(e,t,n){"use strict";var o=n(0),r=n.n(o),i=n(2),a=n.n(i);const s=e=>{const t=["mx_ResizeHandle"];return e.vertical?t.push("mx_ResizeHandle_vertical"):t.push("mx_ResizeHandle_horizontal"),e.reverse&&t.push("mx_ResizeHandle_reverse"),r.a.createElement("div",{className:t.join(" "),"data-id":e.id},r.a.createElement("div",null))};s.propTypes={vertical:a.a.bool,reverse:a.a.bool,id:a.a.string},t.a=s},function(e,t,n){"use strict";n.d(t,"b",(function(){return p})),n.d(t,"a",(function(){return h}));var o=n(0),r=n.n(o),i=n(9),a=n(3),s=n(118),c=n(1),l=n(4),u=n(22),d=n(44);function p(e){return new Promise((t,n)=>{const o=r.a.createElement("div",null,r.a.createElement("div",null,Object(c.a)("Who would you like to add to this community?")),r.a.createElement("div",{className:"warning"},Object(c.a)("Warning: any person you add to a community will be publicly visible to anyone who knows the community ID"))),l=a.a("dialogs.AddressPickerDialog");i.a.createTrackedDialog("Group Invite","",l,{title:Object(c.a)("Invite new community members"),description:o,placeholder:Object(c.a)("Name or Matrix ID"),button:Object(c.a)("Invite to Community"),validAddressTypes:["mx-user-id"],onFinished:(o,r)=>{o&&function(e,t){const n=new s.a(e),o=t.map(e=>e.address);return n.invite(o).then(n=>{const o=[];for(const e of Object.keys(n))"error"===t[e]&&o.push(e);if(o.length>0){const t=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Failed to invite the following users to the group","",t,{title:Object(c.a)("Failed to invite the following users to %(groupId)s:",{groupId:e}),description:o.join(", ")})}}).catch(t=>{const n=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Failed to invite users to group","",n,{title:Object(c.a)("Failed to invite users to community"),description:Object(c.a)("Failed to invite users to %(groupId)s",{groupId:e})})})}(e,r).then(t,n)}},null,!1,!0)})}function h(e){return new Promise((t,n)=>{let o=!1;const s=r.a.createElement("div",null,r.a.createElement("div",null,Object(c.a)("Which rooms would you like to add to this community?"))),p=r.a.createElement("label",{className:"mx_GroupAddressPicker_checkboxContainer"},r.a.createElement("input",{type:"checkbox",onChange:e=>{o=e.target.checked}}),r.a.createElement("div",null,Object(c.a)("Show these rooms to non-members on the community page and room list?"))),h=a.a("dialogs.AddressPickerDialog");i.a.createTrackedDialog("Add Rooms to Group","",h,{title:Object(c.a)("Add rooms to the community"),description:s,extraNode:p,placeholder:Object(c.a)("Room name or alias"),button:Object(c.a)("Add to community"),pickerType:"room",validAddressTypes:["mx-room-id"],onFinished:(r,s)=>{r&&function(e,t,n){const o=l.a.get(),r=[];return Object(d.a)(t.map(t=>u.a.addRoomToGroup(e,t.address,n).catch(()=>{r.push(t.address)}).then(()=>{const n=t.address,r=o.getRoom(n);if(!r||!r.currentState.mayClientSendStateEvent("m.room.related_groups",o))return;const i=r.currentState.getStateEvents("m.room.related_groups",""),a=i&&i.getContent().groups||[];return a.includes(e)?void 0:(a.push(e),l.a.get().sendStateEvent(n,"m.room.related_groups",{groups:a},""))}))).then(()=>{if(0===r.length)return;const t=a.a("dialogs.ErrorDialog");i.a.createTrackedDialog("Failed to add the following room to the group","",t,{title:Object(c.a)("Failed to add the following rooms to %(groupId)s:",{groupId:e}),description:r.join(", ")})})}(e,s,o).then(t,n)}},null,!1,!0)})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(908);Object.defineProperty(t,"DragDropContext",{enumerable:!0,get:function(){return a(o).default}});var r=n(989);Object.defineProperty(t,"Droppable",{enumerable:!0,get:function(){return a(r).default}});var i=n(1010);function a(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Draggable",{enumerable:!0,get:function(){return a(i).default}})},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var o=n(13);class r{constructor(e,t,n,o){this._hsUrl=e,this._isUrl=t,this._fallbackHsUrl=n,this._currentFlowIndex=0,this._flows=[],this._defaultDeviceDisplayName=o.defaultDeviceDisplayName,this._tempClient=null}getHomeserverUrl(){return this._hsUrl}getIdentityServerUrl(){return this._isUrl}setHomeserverUrl(e){this._tempClient=null,this._hsUrl=e}setIdentityServerUrl(e){this._tempClient=null,this._isUrl=e}createTemporaryClient(){return this._tempClient?this._tempClient:this._tempClient=o.u.createClient({baseUrl:this._hsUrl,idBaseUrl:this._isUrl})}getFlows(){const e=this;return this.createTemporaryClient().loginFlows().then((function(t){return e._flows=t.flows,e._currentFlowIndex=0,e._flows}))}chooseFlow(e){this._currentFlowIndex=e}getCurrentFlowStep(){const e=this._flows[this._currentFlowIndex];return e?e.type:null}loginViaPassword(e,t,n,o){const r=this,a=e.indexOf("@")>0;let s;s=t&&n?{type:"m.id.phone",country:t,number:n}:a?{type:"m.id.thirdparty",medium:"email",address:e}:{type:"m.id.user",user:e};const c={password:o,identifier:s,initial_device_display_name:this._defaultDeviceDisplayName},l=e=>i(r._fallbackHsUrl,this._isUrl,"m.login.password",c).catch(t=>{throw console.log("fallback HS login failed",t),e});let u=null;return i(r._hsUrl,r._isUrl,"m.login.password",c).catch(e=>{if(u=e,403===e.httpStatus&&r._fallbackHsUrl)return l(u);throw u}).catch(e=>{throw console.log("Login failed",e),e})}}async function i(e,t,n,r){const i=o.u.createClient({baseUrl:e,idBaseUrl:t}),a=await i.login(n,r),s=a.well_known;return s&&(s["m.homeserver"]&&s["m.homeserver"].base_url&&(e=s["m.homeserver"].base_url,console.log("Overrode homeserver setting with ".concat(e," from login response"))),s["m.identity_server"]&&s["m.identity_server"].base_url&&(t=s["m.identity_server"].base_url,console.log("Overrode IS setting with ".concat(t," from login response")))),{homeserverUrl:e,identityServerUrl:t,userId:a.user_id,deviceId:a.device_id,accessToken:a.access_token}}},function(e,t,n){"use strict";var o=n(18),r=n.n(o),i=n(37),a=n.n(i),s=n(0),c=n.n(s),l=n(2),u=n.n(l),d=n(14),p=n.n(d),h=n(3);const m=e=>{let{checked:t,disabled:n=!1,onChange:o}=e,i=a()(e,["checked","disabled","onChange"]);const s=p()({mx_ToggleSwitch:!0,mx_ToggleSwitch_on:t,mx_ToggleSwitch_enabled:!n}),l=h.a("elements.AccessibleButton");return c.a.createElement(l,r()({},i,{className:s,onClick:e=>{n||o(!t)},role:"switch","aria-checked":t,"aria-disabled":n}),c.a.createElement("div",{className:"mx_ToggleSwitch_ball"}))};m.propTypes={checked:u.a.bool.isRequired,disabled:u.a.bool,onChange:u.a.func.isRequired},t.a=m},function(e,t,n){var o,r;!function(i,a){"use strict";void 0===(r="function"==typeof(o=function(){var e=function(){},t="undefined"!=typeof window&&void 0!==window.navigator&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function o(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function r(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function i(n){return"debug"===n&&(n="log"),"undefined"!=typeof console&&("trace"===n&&t?r:void 0!==console[n]?o(console,n):void 0!==console.log?o(console,"log"):e)}function a(t,o){for(var r=0;r=0&&t<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(r=t,!1!==o&&function(e){var t=(n[e]||"silent").toUpperCase();if("undefined"!=typeof window){try{return void(window.localStorage[s]=t)}catch(e){}try{window.document.cookie=encodeURIComponent(s)+"="+t+";"}catch(e){}}}(t),a.call(i,t,e),"undefined"==typeof console&&t0?a-4:a;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;return 2===s&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,c[u++]=255&t),1===s&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t),c},n.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],a=0,s=n-r;as?s:a+16383));return 1===r?(t=e[n-1],i.push(o[t>>2]+o[t<<4&63]+"==")):2===r&&(t=(e[n-2]<<8)+e[n-1],i.push(o[t>>10]+o[t>>4&63]+o[t<<2&63]+"=")),i.join("")};for(var o=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,c=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var r,i,a=[],s=t;s>18&63]+o[i>>12&63]+o[i>>6&63]+o[63&i]);return a.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},{}],2:[function(e,t,n){},{}],3:[function(e,t,n){(function(t){var o=e("base64-js"),r=e("ieee754"),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function a(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var n=new Uint8Array(e);return Object.setPrototypeOf(n,t.prototype),n}function t(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return s(e,t,n)}function s(e,n,o){if("string"==typeof e)return function(e,n){if("string"==typeof n&&""!==n||(n="utf8"),!t.isEncoding(n))throw new TypeError("Unknown encoding: "+n);var o=0|h(e,n),r=a(o),i=r.write(e,n);return i!==o&&(r=r.slice(0,i)),r}(e,n);if(ArrayBuffer.isView(e))return d(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+c(e));if(j(e,ArrayBuffer)||e&&j(e.buffer,ArrayBuffer))return function(e,n,o){if(n<0||e.byteLength=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|e}function h(e,n){if(t.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||j(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+c(e));var o=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===o)return 0;for(var i=!1;;)switch(n){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":return P(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return L(e).length;default:if(i)return r?-1:P(e).length;n=(""+n).toLowerCase(),i=!0}}function m(e,t,n){var o=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,n);case"utf8":case"utf-8":return x(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return k(this,t,n);case"base64":return C(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(o)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),o=!0}}function g(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function f(e,n,o,r,i){if(0===e.length)return-1;if("string"==typeof o?(r=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),B(o=+o)&&(o=i?0:e.length-1),o<0&&(o=e.length+o),o>=e.length){if(i)return-1;o=e.length-1}else if(o<0){if(!i)return-1;o=0}if("string"==typeof n&&(n=t.from(n,r)),t.isBuffer(n))return 0===n.length?-1:_(e,n,o,r,i);if("number"==typeof n)return n&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,n,o):Uint8Array.prototype.lastIndexOf.call(e,n,o):_(e,[n],o,r,i);throw new TypeError("val must be string, number or Buffer")}function _(e,t,n,o,r){var i,a=1,s=e.length,c=t.length;if(void 0!==o&&("ucs2"===(o=String(o).toLowerCase())||"ucs-2"===o||"utf16le"===o||"utf-16le"===o)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var u=-1;for(i=n;is&&(n=s-c),i=n;i>=0;i--){for(var d=!0,p=0;pr&&(o=r):o=r;var i=t.length;o>i/2&&(o=i/2);for(var a=0;a>8,r=n%256,i.push(r),i.push(o);return i}(t,e.length-n),e,n,o)}function C(e,t,n){return 0===t&&n===e.length?o.fromByteArray(e):o.fromByteArray(e.slice(t,n))}function x(e,t,n){n=Math.min(e.length,n);for(var o=[],r=t;r239?4:l>223?3:l>191?2:1;if(r+d<=n)switch(d){case 1:l<128&&(u=l);break;case 2:128==(192&(i=e[r+1]))&&(c=(31&l)<<6|63&i)>127&&(u=c);break;case 3:i=e[r+1],a=e[r+2],128==(192&i)&&128==(192&a)&&(c=(15&l)<<12|(63&i)<<6|63&a)>2047&&(c<55296||c>57343)&&(u=c);break;case 4:i=e[r+1],a=e[r+2],s=e[r+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(c=(15&l)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(u=c)}null===u?(u=65533,d=1):u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|1023&u),o.push(u),r+=d}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);for(var n="",o=0;oo)&&(n=o);for(var r="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function I(e,n,o,r,i,a){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(n>i||ne.length)throw new RangeError("Index out of range")}function F(e,t,n,o,r,i){if(n+o>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function N(e,t,n,o,i){return t=+t,n>>>=0,i||F(e,0,n,4),r.write(e,t,n,o,23,4),n+4}function A(e,t,n,o,i){return t=+t,n>>>=0,i||F(e,0,n,8),r.write(e,t,n,o,52,8),n+8}n.Buffer=t,n.SlowBuffer=function(e){return+e!=e&&(e=0),t.alloc(+e)},n.INSPECT_MAX_BYTES=50,n.kMaxLength=2147483647,t.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),t.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(t.prototype,"parent",{enumerable:!0,get:function(){if(t.isBuffer(this))return this.buffer}}),Object.defineProperty(t.prototype,"offset",{enumerable:!0,get:function(){if(t.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&t[Symbol.species]===t&&Object.defineProperty(t,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),t.poolSize=8192,t.from=function(e,t,n){return s(e,t,n)},Object.setPrototypeOf(t.prototype,Uint8Array.prototype),Object.setPrototypeOf(t,Uint8Array),t.alloc=function(e,t,n){return function(e,t,n){return l(e),e<=0?a(e):void 0!==t?"string"==typeof n?a(e).fill(t,n):a(e).fill(t):a(e)}(e,t,n)},t.allocUnsafe=function(e){return u(e)},t.allocUnsafeSlow=function(e){return u(e)},t.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==t.prototype},t.compare=function(e,n){if(j(e,Uint8Array)&&(e=t.from(e,e.offset,e.byteLength)),j(n,Uint8Array)&&(n=t.from(n,n.offset,n.byteLength)),!t.isBuffer(e)||!t.isBuffer(n))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===n)return 0;for(var o=e.length,r=n.length,i=0,a=Math.min(o,r);it&&(e+=" ... "),""},i&&(t.prototype[i]=t.prototype.inspect),t.prototype.compare=function(e,n,o,r,i){if(j(e,Uint8Array)&&(e=t.from(e,e.offset,e.byteLength)),!t.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+c(e));if(void 0===n&&(n=0),void 0===o&&(o=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),n<0||o>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&n>=o)return 0;if(r>=i)return-1;if(n>=o)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(r>>>=0),s=(o>>>=0)-(n>>>=0),l=Math.min(a,s),u=this.slice(r,i),d=e.slice(n,o),p=0;p>>=0,isFinite(n)?(n>>>=0,void 0===o&&(o="utf8")):(o=n,n=void 0)}var r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");o||(o="utf8");for(var i=!1;;)switch(o){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return b(this,e,t,n);case"ascii":return y(this,e,t,n);case"latin1":case"binary":return E(this,e,t,n);case"base64":return S(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+o);o=(""+o).toLowerCase(),i=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},t.prototype.slice=function(e,n){var o=this.length;(e=~~e)<0?(e+=o)<0&&(e=0):e>o&&(e=o),(n=void 0===n?o:~~n)<0?(n+=o)<0&&(n=0):n>o&&(n=o),n>>=0,t>>>=0,n||D(e,t,this.length);for(var o=this[e],r=1,i=0;++i>>=0,t>>>=0,n||D(e,t,this.length);for(var o=this[e+--t],r=1;t>0&&(r*=256);)o+=this[e+--t]*r;return o},t.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},t.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},t.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},t.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},t.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},t.prototype.readIntLE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);for(var o=this[e],r=1,i=0;++i=(r*=128)&&(o-=Math.pow(2,8*t)),o},t.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);for(var o=t,r=1,i=this[e+--o];o>0&&(r*=256);)i+=this[e+--o]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*t)),i},t.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},t.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},t.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},t.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},t.prototype.readFloatLE=function(e,t){return e>>>=0,t||D(e,4,this.length),r.read(this,e,!0,23,4)},t.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),r.read(this,e,!1,23,4)},t.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),r.read(this,e,!0,52,8)},t.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),r.read(this,e,!1,52,8)},t.prototype.writeUIntLE=function(e,t,n,o){e=+e,t>>>=0,n>>>=0,o||I(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,o||I(this,e,t,n,Math.pow(2,8*n)-1,0);var r=n-1,i=1;for(this[t+r]=255&e;--r>=0&&(i*=256);)this[t+r]=e/i&255;return t+n},t.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,1,255,0),this[t]=255&e,t+1},t.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},t.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},t.prototype.writeIntLE=function(e,t,n,o){if(e=+e,t>>>=0,!o){var r=Math.pow(2,8*n-1);I(this,e,t,n,r-1,-r)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},t.prototype.writeIntBE=function(e,t,n,o){if(e=+e,t>>>=0,!o){var r=Math.pow(2,8*n-1);I(this,e,t,n,r-1,-r)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},t.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},t.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},t.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||I(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},t.prototype.writeFloatLE=function(e,t,n){return N(this,e,t,!0,n)},t.prototype.writeFloatBE=function(e,t,n){return N(this,e,t,!1,n)},t.prototype.writeDoubleLE=function(e,t,n){return A(this,e,t,!0,n)},t.prototype.writeDoubleBE=function(e,t,n){return A(this,e,t,!1,n)},t.prototype.copy=function(e,n,o,r){if(!t.isBuffer(e))throw new TypeError("argument should be a Buffer");if(o||(o=0),r||0===r||(r=this.length),n>=e.length&&(n=e.length),n||(n=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-n=0;--a)e[a+n]=this[a+o];else Uint8Array.prototype.set.call(e,this.subarray(o,r),n);return i},t.prototype.fill=function(e,n,o,r){if("string"==typeof e){if("string"==typeof n?(r=n,n=0,o=this.length):"string"==typeof o&&(r=o,o=this.length),void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!t.isEncoding(r))throw new TypeError("Unknown encoding: "+r);if(1===e.length){var i=e.charCodeAt(0);("utf8"===r&&i<128||"latin1"===r)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(n<0||this.length>>=0,o=void 0===o?this.length:o>>>0,e||(e=0),"number"==typeof e)for(a=n;a55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===o){(t-=3)>-1&&i.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&i.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function L(e){return o.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function U(e,t,n,o){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function j(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function B(e){return e!=e}var q=function(){for(var e=new Array(256),t=0;t<16;++t)for(var n=16*t,o=0;o<16;++o)e[n+o]="0123456789abcdef"[t]+"0123456789abcdef"[o];return e}()}).call(this,e("buffer").Buffer)},{"base64-js":1,buffer:3,ieee754:32}],4:[function(e,t,n){t.exports={elementNames:{altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",fedropshadow:"feDropShadow",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},attributeNames:{definitionurl:"definitionURL",attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"}}},{}],5:[function(e,t,n){var o=e("domelementtype"),r=e("entities"),i=e("./foreignNames.json");i.elementNames.__proto__=null,i.attributeNames.__proto__=null;var a={__proto__:null,style:!0,script:!0,xmp:!0,iframe:!0,noembed:!0,noframes:!0,plaintext:!0,noscript:!0},s={__proto__:null,area:!0,base:!0,basefont:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,isindex:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0},c=t.exports=function(e,t){Array.isArray(e)||e.cheerio||(e=[e]),t=t||{};for(var n="",r=0;r=0&&(t=Object.assign({},t,{xmlMode:!1}))),!t.xmlMode&&["svg","math"].indexOf(e.name)>=0&&(t=Object.assign({},t,{xmlMode:"foreign"}));var n="<"+e.name,o=function(e,t){if(e){var n,o="";for(var a in e)n=e[a],o&&(o+=" "),"foreign"===t.xmlMode&&(a=i.attributeNames[a]||a),o+=a,(null!==n&&""!==n||t.xmlMode)&&(o+='="'+(t.decodeEntities?r.encodeXML(n):n.replace(/\"/g,"""))+'"');return o}}(e.attribs,t);return o&&(n+=" "+o),!t.xmlMode||e.children&&0!==e.children.length?(n+=">",e.children&&(n+=c(e.children,t)),s[e.name]&&!t.xmlMode||(n+="")):n+="/>",n}function d(e){return"<"+e.data+">"}function p(e,t){var n=e.data||"";return!t.decodeEntities||e.parent&&e.parent.name in a||(n=r.encodeXML(n)),n}function h(e){return""}function m(e){return"\x3c!--"+e.data+"--\x3e"}},{"./foreignNames.json":4,domelementtype:6,entities:20}],6:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0}),n.isTag=function(e){return"tag"===e.type||"script"===e.type||"style"===e.type},n.Text="text",n.Directive="directive",n.Comment="comment",n.Script="script",n.Style="style",n.Tag="tag",n.CDATA="cdata",n.Doctype="doctype"},{}],7:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("./node");n.Node=o.Node,n.Element=o.Element,n.DataNode=o.DataNode,n.NodeWithChildren=o.NodeWithChildren;var r=/\s+/g,i={normalizeWhitespace:!1,withStartIndices:!1,withEndIndices:!1},a=function(){function e(e,t,n){this.dom=[],this._done=!1,this._tagStack=[],this._lastNode=null,this._parser=null,"function"==typeof t&&(n=t,t=i),"object"===c(e)&&(t=e,e=void 0),this._callback=e||null,this._options=t||i,this._elementCB=n||null}return e.prototype.onparserinit=function(e){this._parser=e},e.prototype.onreset=function(){this.dom=[],this._done=!1,this._tagStack=[],this._lastNode=null,this._parser=this._parser||null},e.prototype.onend=function(){this._done||(this._done=!0,this._parser=null,this.handleCallback(null))},e.prototype.onerror=function(e){this.handleCallback(e)},e.prototype.onclosetag=function(){this._lastNode=null;var e=this._tagStack.pop();e&&this._parser&&(this._options.withEndIndices&&(e.endIndex=this._parser.endIndex),this._elementCB&&this._elementCB(e))},e.prototype.onopentag=function(e,t){var n=new o.Element(e,t);this.addNode(n),this._tagStack.push(n)},e.prototype.ontext=function(e){var t=this._options.normalizeWhitespace,n=this._lastNode;if(n&&"text"===n.type)t?n.data=(n.data+e).replace(r," "):n.data+=e;else{t&&(e=e.replace(r," "));var i=new o.DataNode("text",e);this.addNode(i),this._lastNode=i}},e.prototype.oncomment=function(e){if(this._lastNode&&"comment"===this._lastNode.type)this._lastNode.data+=e;else{var t=new o.DataNode("comment",e);this.addNode(t),this._lastNode=t}},e.prototype.oncommentend=function(){this._lastNode=null},e.prototype.oncdatastart=function(){var e=new o.DataNode("text",""),t=new o.NodeWithChildren("cdata",[e]);this.addNode(t),e.parent=t,this._lastNode=e},e.prototype.oncdataend=function(){this._lastNode=null},e.prototype.onprocessinginstruction=function(e,t){var n=new o.ProcessingInstruction(e,t);this.addNode(n)},e.prototype.handleCallback=function(e){if("function"==typeof this._callback)this._callback(e,this.dom);else if(e)throw e},e.prototype.addNode=function(e){var t=this._tagStack[this._tagStack.length-1],n=t?t.children:this.dom,o=n[n.length-1];this._parser&&(this._options.withStartIndices&&(e.startIndex=this._parser.startIndex),this._options.withEndIndices&&(e.endIndex=this._parser.endIndex)),n.push(e),o&&(e.prev=o,o.next=e),t&&(e.parent=t),this._lastNode=null},e.prototype.addDataNode=function(e){this.addNode(e),this._lastNode=e},e}();n.DomHandler=a,n.default=a},{"./node":8}],8:[function(e,t,n){var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(n,"__esModule",{value:!0});var i=new Map([["tag",1],["script",1],["style",1],["directive",1],["text",3],["cdata",4],["comment",8]]),a=function(){function e(e){this.type=e,this.parent=null,this.prev=null,this.next=null,this.startIndex=null,this.endIndex=null}return Object.defineProperty(e.prototype,"nodeType",{get:function(){return i.get(this.type)||1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"parentNode",{get:function(){return this.parent||null},set:function(e){this.parent=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"previousSibling",{get:function(){return this.prev||null},set:function(e){this.prev=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nextSibling",{get:function(){return this.next||null},set:function(e){this.next=e},enumerable:!0,configurable:!0}),e}();n.Node=a;var s=function(e){function t(t,n){var o=e.call(this,t)||this;return o.data=n,o}return r(t,e),Object.defineProperty(t.prototype,"nodeValue",{get:function(){return this.data},set:function(e){this.data=e},enumerable:!0,configurable:!0}),t}(a);n.DataNode=s;var c=function(e){function t(t,n){var o=e.call(this,"directive",n)||this;return o.name=t,o}return r(t,e),t}(s);n.ProcessingInstruction=c;var l=function(e){function t(t,n){var o=e.call(this,t)||this;return o.children=n,o}return r(t,e),Object.defineProperty(t.prototype,"firstChild",{get:function(){return this.children[0]||null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"lastChild",{get:function(){return this.children[this.children.length-1]||null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"childNodes",{get:function(){return this.children},set:function(e){this.children=e},enumerable:!0,configurable:!0}),t}(a);n.NodeWithChildren=l;var u=function(e){function t(t,n){var o=e.call(this,"script"===t?"script":"style"===t?"style":"tag",[])||this;return o.name=t,o.attribs=n,o.attribs=n,o}return r(t,e),Object.defineProperty(t.prototype,"tagName",{get:function(){return this.name},set:function(e){this.name=e},enumerable:!0,configurable:!0}),t}(l);n.Element=u},{}],9:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("./tagtypes");function r(e,t){var n=[],r=[];if(e===t)return 0;for(var i=o.hasChildren(e)?e:e.parent;i;)n.unshift(i),i=i.parent;for(i=o.hasChildren(t)?t:t.parent;i;)r.unshift(i),i=i.parent;for(var a=0;n[a]===r[a];)a++;if(0===a)return 1;var s=n[a-1],c=s.children,l=n[a],u=r[a];return c.indexOf(l)>c.indexOf(u)?s===t?20:4:s===e?10:2}n.removeSubsets=function(e){for(var t=e.length;--t>=0;){var n=e[t];if(t>0&&e.lastIndexOf(n,t-1)>=0)e.splice(t,1);else for(var o=n.parent;o;o=o.parent)if(e.indexOf(o)>-1){e.splice(t,1);break}}return e},n.compareDocumentPosition=r,n.uniqueSort=function(e){return(e=e.filter((function(e,t,n){return!n.includes(e,t+1)}))).sort((function(e,t){var n=r(e,t);return 2&n?-1:4&n?1:0})),e}},{"./tagtypes":15}],10:[function(e,t,n){function o(e){for(var t in e)n.hasOwnProperty(t)||(n[t]=e[t])}Object.defineProperty(n,"__esModule",{value:!0}),o(e("./stringify")),o(e("./traversal")),o(e("./manipulation")),o(e("./querying")),o(e("./legacy")),o(e("./helpers")),o(e("./tagtypes"))},{"./helpers":9,"./legacy":11,"./manipulation":12,"./querying":13,"./stringify":14,"./tagtypes":15,"./traversal":16}],11:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("./querying"),r=e("./tagtypes");function i(e){return"text"===e.type}var a={tag_name:function(e){return"function"==typeof e?function(t){return r.isTag(t)&&e(t.name)}:"*"===e?r.isTag:function(t){return r.isTag(t)&&t.name===e}},tag_type:function(e){return"function"==typeof e?function(t){return e(t.type)}:function(t){return t.type===e}},tag_contains:function(e){return"function"==typeof e?function(t){return i(t)&&e(t.data)}:function(t){return i(t)&&t.data===e}}};function s(e,t){return"function"==typeof t?function(n){return r.isTag(n)&&t(n.attribs[e])}:function(n){return r.isTag(n)&&n.attribs[e]===t}}function c(e,t){return function(n){return e(n)||t(n)}}function l(e){var t=Object.keys(e).map((function(t){var n=e[t];return t in a?a[t](n):s(t,n)}));return 0===t.length?null:t.reduce(c)}n.testElement=function(e,t){var n=l(e);return!n||n(t)},n.getElements=function(e,t,n,r){void 0===r&&(r=1/0);var i=l(e);return i?o.filter(i,t,n,r):[]},n.getElementById=function(e,t,n){return void 0===n&&(n=!0),Array.isArray(t)||(t=[t]),o.findOne(s("id",e),t,n)},n.getElementsByTagName=function(e,t,n,r){return void 0===r&&(r=1/0),o.filter(a.tag_name(e),t,n,r)},n.getElementsByTagType=function(e,t,n,r){return void 0===n&&(n=!0),void 0===r&&(r=1/0),o.filter(a.tag_type(e),t,n,r)}},{"./querying":13,"./tagtypes":15}],12:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0}),n.removeElement=function(e){if(e.prev&&(e.prev.next=e.next),e.next&&(e.next.prev=e.prev),e.parent){var t=e.parent.children;t.splice(t.lastIndexOf(e),1)}},n.replaceElement=function(e,t){var n=t.prev=e.prev;n&&(n.next=t);var o=t.next=e.next;o&&(o.prev=t);var r=t.parent=e.parent;if(r){var i=r.children;i[i.lastIndexOf(e)]=t}},n.appendChild=function(e,t){if(t.parent=e,1!==e.children.push(t)){var n=e.children[e.children.length-2];n.next=t,t.prev=n,t.next=null}},n.append=function(e,t){var n=e.parent,o=e.next;if(t.next=o,t.prev=e,e.next=t,t.parent=n,o){if(o.prev=t,n){var r=n.children;r.splice(r.lastIndexOf(o),0,t)}}else n&&n.children.push(t)},n.prepend=function(e,t){var n=e.parent;if(n){var o=n.children;o.splice(o.lastIndexOf(e),0,t)}e.prev&&(e.prev.next=t),t.parent=n,t.prev=e.prev,t.next=e,e.prev=t}},{}],13:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("./tagtypes");function r(e,t,n,i){for(var a=[],s=0;s0){var l=r(e,c.children,n,i);if(a=a.concat(l),(i-=l.length)<=0)break}}return a}n.filter=function(e,t,n,o){return void 0===n&&(n=!0),void 0===o&&(o=1/0),Array.isArray(t)||(t=[t]),r(e,t,n,o)},n.find=r,n.findOneChild=function(e,t){for(var n=0;n0&&(i=e(t,s.children)))}return i},n.existsOne=function e(t,n){for(var r=0;r0&&e(t,i.children)))return!0}return!1},n.findAll=function(e,t){for(var n=[],r=t.slice();r.length;){var i=r.shift();i&&o.isTag(i)&&(i.children&&i.children.length>0&&r.unshift.apply(r,i.children),e(i)&&n.push(i))}return n}},{"./tagtypes":15}],14:[function(e,t,n){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});var r=e("./tagtypes"),i=o(e("dom-serializer"));n.getOuterHTML=i.default,n.getInnerHTML=function(e,t){return r.hasChildren(e)?e.children.map((function(e){return n.getOuterHTML(e,t)})).join(""):""},n.getText=function e(t){return Array.isArray(t)?t.map(e).join(""):r.isTag(t)?"br"===t.name?"\n":e(t.children):r.isCDATA(t)?e(t.children):r.isText(t)?t.data:""}},{"./tagtypes":15,"dom-serializer":5}],15:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("domelementtype");n.isTag=function(e){return o.isTag(e)},n.isCDATA=function(e){return"cdata"===e.type},n.isText=function(e){return"text"===e.type},n.isComment=function(e){return"comment"===e.type},n.hasChildren=function(e){return Object.prototype.hasOwnProperty.call(e,"children")}},{domelementtype:6}],16:[function(e,t,n){function o(e){return e.children||null}function r(e){return e.parent||null}function i(e,t){return e.attribs&&e.attribs[t]}Object.defineProperty(n,"__esModule",{value:!0}),n.getChildren=o,n.getParent=r,n.getSiblings=function(e){var t=r(e);return t?o(t):[e]},n.getAttributeValue=i,n.hasAttrib=function(e,t){return!!i(e,t)},n.getName=function(e){return e.name}},{}],17:[function(e,t,n){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});var r=o(e("./maps/entities.json")),i=o(e("./maps/legacy.json")),a=o(e("./maps/xml.json")),s=o(e("./decode_codepoint"));function c(e){var t=Object.keys(e).join("|"),n=u(e),o=new RegExp("&(?:"+(t+="|#[xX][\\da-fA-F]+|#\\d+")+");","g");return function(e){return String(e).replace(o,n)}}n.decodeXML=c(a.default),n.decodeHTMLStrict=c(r.default);var l=function(e,t){return e=55296&&e<=57343||e>1114111)return"�";e in r.default&&(e=r.default[e]);var t="";return e>65535&&(e-=65536,t+=String.fromCharCode(e>>>10&1023|55296),e=56320|1023&e),t+=String.fromCharCode(e)}},{"./maps/decode.json":21}],19:[function(e,t,n){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});var r=c(o(e("./maps/xml.json")).default),i=l(r);n.encodeXML=m(r,i);var a=c(o(e("./maps/entities.json")).default),s=l(a);function c(e){return Object.keys(e).sort().reduce((function(t,n){return t[e[n]]="&"+n+";",t}),{})}function l(e){var t=[],n=[];return Object.keys(e).forEach((function(e){return 1===e.length?t.push("\\"+e):n.push(e)})),n.unshift("["+t.join("")+"]"),new RegExp(n.join("|"),"g")}n.encodeHTML=m(a,s);var u=/[^\0-\x7F]/g,d=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function p(e){return"&#x"+e.charCodeAt(0).toString(16).toUpperCase()+";"}function h(e,t){return"&#x"+(1024*(e.charCodeAt(0)-55296)+e.charCodeAt(1)-56320+65536).toString(16).toUpperCase()+";"}function m(e,t){return function(n){return n.replace(t,(function(t){return e[t]})).replace(d,h).replace(u,p)}}var g=l(r);n.escape=function(e){return e.replace(g,p).replace(d,h).replace(u,p)}},{"./maps/entities.json":22,"./maps/xml.json":24}],20:[function(e,t,n){Object.defineProperty(n,"__esModule",{value:!0});var o=e("./decode"),r=e("./encode");n.decode=function(e,t){return(!t||t<=0?o.decodeXML:o.decodeHTML)(e)},n.decodeStrict=function(e,t){return(!t||t<=0?o.decodeXML:o.decodeHTMLStrict)(e)},n.encode=function(e,t){return(!t||t<=0?r.encodeXML:r.encodeHTML)(e)};var i=e("./encode");n.encodeXML=i.encodeXML,n.encodeHTML=i.encodeHTML,n.escape=i.escape,n.encodeHTML4=i.encodeHTML,n.encodeHTML5=i.encodeHTML;var a=e("./decode");n.decodeXML=a.decodeXML,n.decodeHTML=a.decodeHTML,n.decodeHTMLStrict=a.decodeHTMLStrict,n.decodeHTML4=a.decodeHTML,n.decodeHTML5=a.decodeHTML,n.decodeHTML4Strict=a.decodeHTMLStrict,n.decodeHTML5Strict=a.decodeHTMLStrict,n.decodeXMLStrict=a.decodeXML},{"./decode":17,"./encode":19}],21:[function(e,t,n){t.exports={0:65533,128:8364,130:8218,131:402,132:8222,133:8230,134:8224,135:8225,136:710,137:8240,138:352,139:8249,140:338,142:381,145:8216,146:8217,147:8220,148:8221,149:8226,150:8211,151:8212,152:732,153:8482,154:353,155:8250,156:339,158:382,159:376}},{}],22:[function(e,t,n){t.exports={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"}},{}],23:[function(e,t,n){t.exports={Aacute:"Á",aacute:"á",Acirc:"Â",acirc:"â",acute:"´",AElig:"Æ",aelig:"æ",Agrave:"À",agrave:"à",amp:"&",AMP:"&",Aring:"Å",aring:"å",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",brvbar:"¦",Ccedil:"Ç",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",Eacute:"É",eacute:"é",Ecirc:"Ê",ecirc:"ê",Egrave:"È",egrave:"è",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",Iacute:"Í",iacute:"í",Icirc:"Î",icirc:"î",iexcl:"¡",Igrave:"Ì",igrave:"ì",iquest:"¿",Iuml:"Ï",iuml:"ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",Ntilde:"Ñ",ntilde:"ñ",Oacute:"Ó",oacute:"ó",Ocirc:"Ô",ocirc:"ô",Ograve:"Ò",ograve:"ò",ordf:"ª",ordm:"º",Oslash:"Ø",oslash:"ø",Otilde:"Õ",otilde:"õ",Ouml:"Ö",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",THORN:"Þ",thorn:"þ",times:"×",Uacute:"Ú",uacute:"ú",Ucirc:"Û",ucirc:"û",Ugrave:"Ù",ugrave:"ù",uml:"¨",Uuml:"Ü",uuml:"ü",Yacute:"Ý",yacute:"ý",yen:"¥",yuml:"ÿ"}},{}],24:[function(e,t,n){t.exports={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'}},{}],25:[function(e,t,n){var o=Object.create||function(e){var t=function(){};return t.prototype=e,new t},r=Object.keys||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return n},i=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function a(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=o(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._maxListeners=void 0;var s,l=10;try{var u={};Object.defineProperty&&Object.defineProperty(u,"x",{value:0}),s=0===u.x}catch(e){s=!1}function d(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function p(e,t,n){if(t)e.call(n);else for(var o=e.length,r=S(e,o),i=0;i0&&s.length>i){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=s.length,"object"===("undefined"==typeof console?"undefined":c(console))&&console.warn&&console.warn("%s: %s",l.name,l.message)}}else s=a[t]=n,++e._eventsCount;return e}function v(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t1&&(t=arguments[1]),t instanceof Error)throw t;var c=new Error('Unhandled "error" event. ('+t+")");throw c.context=t,c}if(!(n=a[e]))return!1;var l="function"==typeof n;switch(o=arguments.length){case 1:p(n,l,this);break;case 2:h(n,l,this,arguments[1]);break;case 3:m(n,l,this,arguments[1],arguments[2]);break;case 4:g(n,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(r=new Array(o-1),i=1;i=0;a--)if(n[a]===t||n[a].listener===t){s=n[a].listener,i=a;break}if(i<0)return this;0===i?n.shift():function(e,t){for(var n=t,o=n+1,r=e.length;o=0;i--)this.removeListener(e,t[i]);return this},a.prototype.listeners=function(e){return y(this,e,!0)},a.prototype.rawListeners=function(e){return y(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):E.call(e,t)},a.prototype.listenerCount=E,a.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],26:[function(e,t,n){var o,r=this&&this.__extends||(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});var a=function(e){function t(t){void 0===t&&(t={});var n=e.call(this,(function(e){for(var t,o=[],r=1;r0;this._cbs.onclosetag(this._stack[--e]));this._cbs.onend&&this._cbs.onend()},t.prototype.reset=function(){this._cbs.onreset&&this._cbs.onreset(),this._tokenizer.reset(),this._tagname="",this._attribname="",this._attribs=null,this._stack=[],this._cbs.onparserinit&&this._cbs.onparserinit(this)},t.prototype.parseComplete=function(e){this.reset(),this.end(e)},t.prototype.write=function(e){this._tokenizer.write(e)},t.prototype.end=function(e){this._tokenizer.end(e)},t.prototype.pause=function(){this._tokenizer.pause()},t.prototype.resume=function(){this._tokenizer.resume()},t}(s.EventEmitter);n.Parser=g},{"./Tokenizer":30,events:25}],30:[function(e,t,n){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0});var r=o(e("entities/lib/decode_codepoint")),i=o(e("entities/lib/maps/entities.json")),a=o(e("entities/lib/maps/legacy.json")),s=o(e("entities/lib/maps/xml.json"));function c(e){return" "===e||"\n"===e||"\t"===e||"\f"===e||"\r"===e}function l(e,t,n){var o=e.toLowerCase();return e===o?function(e,r){r===o?e._state=t:(e._state=n,e._index--)}:function(r,i){i===o||i===e?r._state=t:(r._state=n,r._index--)}}function u(e,t){var n=e.toLowerCase();return function(o,r){r===n||r===e?o._state=t:(o._state=3,o._index--)}}var d=l("C",23,16),p=l("D",24,16),h=l("A",25,16),m=l("T",26,16),g=l("A",27,16),f=u("R",34),_=u("I",35),v=u("P",36),b=u("T",37),y=l("R",39,1),E=l("I",40,1),S=l("P",41,1),w=l("T",42,1),C=u("Y",44),x=u("L",45),T=u("E",46),k=l("Y",48,1),R=l("L",49,1),O=l("E",50,1),D=l("#",52,53),I=l("X",55,54),F=function(){function e(e,t){this._state=1,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=1,this._special=1,this._running=!0,this._ended=!1,this._cbs=t,this._xmlMode=!(!e||!e.xmlMode),this._decodeEntities=!(!e||!e.decodeEntities)}return e.prototype.reset=function(){this._state=1,this._buffer="",this._sectionStart=0,this._index=0,this._bufferOffset=0,this._baseState=1,this._special=1,this._running=!0,this._ended=!1},e.prototype._stateText=function(e){"<"===e?(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._state=2,this._sectionStart=this._index):this._decodeEntities&&1===this._special&&"&"===e&&(this._index>this._sectionStart&&this._cbs.ontext(this._getSection()),this._baseState=1,this._state=51,this._sectionStart=this._index)},e.prototype._stateBeforeTagName=function(e){"/"===e?this._state=5:"<"===e?(this._cbs.ontext(this._getSection()),this._sectionStart=this._index):">"===e||1!==this._special||c(e)?this._state=1:"!"===e?(this._state=15,this._sectionStart=this._index+1):"?"===e?(this._state=17,this._sectionStart=this._index+1):(this._state=this._xmlMode||"s"!==e&&"S"!==e?3:31,this._sectionStart=this._index)},e.prototype._stateInTagName=function(e){("/"===e||">"===e||c(e))&&(this._emitToken("onopentagname"),this._state=8,this._index--)},e.prototype._stateBeforeClosingTagName=function(e){c(e)||(">"===e?this._state=1:1!==this._special?"s"===e||"S"===e?this._state=32:(this._state=1,this._index--):(this._state=6,this._sectionStart=this._index))},e.prototype._stateInClosingTagName=function(e){(">"===e||c(e))&&(this._emitToken("onclosetag"),this._state=7,this._index--)},e.prototype._stateAfterClosingTagName=function(e){">"===e&&(this._state=1,this._sectionStart=this._index+1)},e.prototype._stateBeforeAttributeName=function(e){">"===e?(this._cbs.onopentagend(),this._state=1,this._sectionStart=this._index+1):"/"===e?this._state=4:c(e)||(this._state=9,this._sectionStart=this._index)},e.prototype._stateInSelfClosingTag=function(e){">"===e?(this._cbs.onselfclosingtag(),this._state=1,this._sectionStart=this._index+1):c(e)||(this._state=8,this._index--)},e.prototype._stateInAttributeName=function(e){("="===e||"/"===e||">"===e||c(e))&&(this._cbs.onattribname(this._getSection()),this._sectionStart=-1,this._state=10,this._index--)},e.prototype._stateAfterAttributeName=function(e){"="===e?this._state=11:"/"===e||">"===e?(this._cbs.onattribend(),this._state=8,this._index--):c(e)||(this._cbs.onattribend(),this._state=9,this._sectionStart=this._index)},e.prototype._stateBeforeAttributeValue=function(e){'"'===e?(this._state=12,this._sectionStart=this._index+1):"'"===e?(this._state=13,this._sectionStart=this._index+1):c(e)||(this._state=14,this._sectionStart=this._index,this._index--)},e.prototype._stateInAttributeValueDoubleQuotes=function(e){'"'===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},e.prototype._stateInAttributeValueSingleQuotes=function(e){"'"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},e.prototype._stateInAttributeValueNoQuotes=function(e){c(e)||">"===e?(this._emitToken("onattribdata"),this._cbs.onattribend(),this._state=8,this._index--):this._decodeEntities&&"&"===e&&(this._emitToken("onattribdata"),this._baseState=this._state,this._state=51,this._sectionStart=this._index)},e.prototype._stateBeforeDeclaration=function(e){this._state="["===e?22:"-"===e?18:16},e.prototype._stateInDeclaration=function(e){">"===e&&(this._cbs.ondeclaration(this._getSection()),this._state=1,this._sectionStart=this._index+1)},e.prototype._stateInProcessingInstruction=function(e){">"===e&&(this._cbs.onprocessinginstruction(this._getSection()),this._state=1,this._sectionStart=this._index+1)},e.prototype._stateBeforeComment=function(e){"-"===e?(this._state=19,this._sectionStart=this._index+1):this._state=16},e.prototype._stateInComment=function(e){"-"===e&&(this._state=20)},e.prototype._stateAfterComment1=function(e){this._state="-"===e?21:19},e.prototype._stateAfterComment2=function(e){">"===e?(this._cbs.oncomment(this._buffer.substring(this._sectionStart,this._index-2)),this._state=1,this._sectionStart=this._index+1):"-"!==e&&(this._state=19)},e.prototype._stateBeforeCdata6=function(e){"["===e?(this._state=28,this._sectionStart=this._index+1):(this._state=16,this._index--)},e.prototype._stateInCdata=function(e){"]"===e&&(this._state=29)},e.prototype._stateAfterCdata1=function(e){this._state="]"===e?30:28},e.prototype._stateAfterCdata2=function(e){">"===e?(this._cbs.oncdata(this._buffer.substring(this._sectionStart,this._index-2)),this._state=1,this._sectionStart=this._index+1):"]"!==e&&(this._state=28)},e.prototype._stateBeforeSpecial=function(e){"c"===e||"C"===e?this._state=33:"t"===e||"T"===e?this._state=43:(this._state=3,this._index--)},e.prototype._stateBeforeSpecialEnd=function(e){2!==this._special||"c"!==e&&"C"!==e?3!==this._special||"t"!==e&&"T"!==e?this._state=1:this._state=47:this._state=38},e.prototype._stateBeforeScript5=function(e){("/"===e||">"===e||c(e))&&(this._special=2),this._state=3,this._index--},e.prototype._stateAfterScript5=function(e){">"===e||c(e)?(this._special=1,this._state=6,this._sectionStart=this._index-6,this._index--):this._state=1},e.prototype._stateBeforeStyle4=function(e){("/"===e||">"===e||c(e))&&(this._special=3),this._state=3,this._index--},e.prototype._stateAfterStyle4=function(e){">"===e||c(e)?(this._special=1,this._state=6,this._sectionStart=this._index-5,this._index--):this._state=1},e.prototype._parseNamedEntityStrict=function(){if(this._sectionStart+16&&(t=6);t>=2;){var n=this._buffer.substr(e,t);if(Object.prototype.hasOwnProperty.call(a.default,n))return this._emitPartial(a.default[n]),void(this._sectionStart+=t+1);t--}},e.prototype._stateInNamedEntity=function(e){";"===e?(this._parseNamedEntityStrict(),this._sectionStart+1"z")&&(e<"A"||e>"Z")&&(e<"0"||e>"9")&&(this._xmlMode||this._sectionStart+1===this._index||(1!==this._baseState?"="!==e&&this._parseNamedEntityStrict():this._parseLegacyEntity()),this._state=this._baseState,this._index--)},e.prototype._decodeNumericEntity=function(e,t){var n=this._sectionStart+e;if(n!==this._index){var o=this._buffer.substring(n,this._index),i=parseInt(o,t);this._emitPartial(r.default(i)),this._sectionStart=this._index}else this._sectionStart--;this._state=this._baseState},e.prototype._stateInNumericEntity=function(e){";"===e?(this._decodeNumericEntity(2,10),this._sectionStart++):(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(2,10),this._index--)},e.prototype._stateInHexEntity=function(e){";"===e?(this._decodeNumericEntity(3,16),this._sectionStart++):(e<"a"||e>"f")&&(e<"A"||e>"F")&&(e<"0"||e>"9")&&(this._xmlMode?this._state=this._baseState:this._decodeNumericEntity(3,16),this._index--)},e.prototype._cleanup=function(){this._sectionStart<0?(this._buffer="",this._bufferOffset+=this._index,this._index=0):this._running&&(1===this._state?(this._sectionStart!==this._index&&this._cbs.ontext(this._buffer.substr(this._sectionStart)),this._buffer="",this._bufferOffset+=this._index,this._index=0):this._sectionStart===this._index?(this._buffer="",this._bufferOffset+=this._index,this._index=0):(this._buffer=this._buffer.substr(this._sectionStart),this._index-=this._sectionStart,this._bufferOffset+=this._sectionStart),this._sectionStart=0)},e.prototype.write=function(e){this._ended&&this._cbs.onerror(Error(".write() after done!")),this._buffer+=e,this._parse()},e.prototype._parse=function(){for(;this._index>1,u=-7,d=n?r-1:0,p=n?-1:1,h=e[t+d];for(d+=p,i=h&(1<<-u)-1,h>>=-u,u+=s;u>0;i=256*i+e[t+d],d+=p,u-=8);for(a=i&(1<<-u)-1,i>>=-u,u+=o;u>0;a=256*a+e[t+d],d+=p,u-=8);if(0===i)i=1-l;else{if(i===c)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,o),i-=l}return(h?-1:1)*a*Math.pow(2,i-o)},n.write=function(e,t,n,o,r,i){var a,s,c,l=8*i-r-1,u=(1<>1,p=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=o?0:i-1,m=o?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-a))<1&&(a--,c*=2),(t+=a+d>=1?p/c:p*Math.pow(2,1-d))*c>=2&&(a++,c/=2),a+d>=u?(s=0,a=u):a+d>=1?(s=(t*c-1)*Math.pow(2,r),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,r),a=0));r>=8;e[n+h]=255&s,h+=m,s/=256,r-=8);for(a=a<0;e[n+h]=255&a,h+=m,a/=256,l-=8);e[n+h-m]|=128*g}},{}],33:[function(e,t,o){(function(e){var n="[object Arguments]",r="[object Function]",i="[object GeneratorFunction]",a="[object Map]",s="[object Set]",l=/\w*$/,u=/^\[object .+?Constructor\]$/,d=/^(?:0|[1-9]\d*)$/,p={};p[n]=p["[object Array]"]=p["[object ArrayBuffer]"]=p["[object DataView]"]=p["[object Boolean]"]=p["[object Date]"]=p["[object Float32Array]"]=p["[object Float64Array]"]=p["[object Int8Array]"]=p["[object Int16Array]"]=p["[object Int32Array]"]=p[a]=p["[object Number]"]=p["[object Object]"]=p["[object RegExp]"]=p[s]=p["[object String]"]=p["[object Symbol]"]=p["[object Uint8Array]"]=p["[object Uint8ClampedArray]"]=p["[object Uint16Array]"]=p["[object Uint32Array]"]=!0,p["[object Error]"]=p[r]=p["[object WeakMap]"]=!1;var h="object"==c(e)&&e&&e.Object===Object&&e,m="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,g=h||m||Function("return this")(),f="object"==c(o)&&o&&!o.nodeType&&o,_=f&&"object"==c(t)&&t&&!t.nodeType&&t,v=_&&_.exports===f;function b(e,t){return e.set(t[0],t[1]),e}function y(e,t){return e.add(t),e}function E(e,t,n,o){var r=-1,i=e?e.length:0;for(o&&i&&(n=e[++r]);++r-1},ae.prototype.set=function(e,t){var n=this.__data__,o=de(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},se.prototype.clear=function(){this.__data__={hash:new ie,map:new(W||ae),string:new ie}},se.prototype.delete=function(e){return fe(this,e).delete(e)},se.prototype.get=function(e){return fe(this,e).get(e)},se.prototype.has=function(e){return fe(this,e).has(e)},se.prototype.set=function(e,t){return fe(this,e).set(e,t),this},ce.prototype.clear=function(){this.__data__=new ae},ce.prototype.delete=function(e){return this.__data__.delete(e)},ce.prototype.get=function(e){return this.__data__.get(e)},ce.prototype.has=function(e){return this.__data__.has(e)},ce.prototype.set=function(e,t){var n=this.__data__;if(n instanceof ae){var o=n.__data__;if(!W||o.length<199)return o.push([e,t]),this;n=this.__data__=new se(o)}return n.set(e,t),this};var ve=V?C(V,Object):function(){return[]},be=function(e){return A.call(e)};function ye(e,t){return!!(t=null==t?9007199254740991:t)&&("number"==typeof e||d.test(e))&&e>-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991}(e.length)&&!ke(e)}var Te=H||function(){return!1};function ke(e){var t=Re(e)?A.call(e):"";return t==r||t==i}function Re(e){var t=c(e);return!!e&&("object"==t||"function"==t)}function Oe(e){return xe(e)?le(e):function(e){if(!Ee(e))return z(e);var t=[];for(var n in Object(e))N.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}t.exports=function(e){return pe(e,!0,!0)}}).call(this,void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],34:[function(e,t,o){(function(e){var n=/[\\^$.*+?()[\]{}|]/g,o=RegExp(n.source),r="object"==c(e)&&e&&e.Object===Object&&e,i="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,a=r||i||Function("return this")(),s=Object.prototype.toString,l=a.Symbol,u=l?l.prototype:void 0,d=u?u.toString:void 0;function p(e){if("string"==typeof e)return e;if(function(e){return"symbol"==c(e)||function(e){return!!e&&"object"==c(e)}(e)&&"[object Symbol]"==s.call(e)}(e))return d?d.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}t.exports=function(e){var t;return(e=null==(t=e)?"":p(t))&&o.test(e)?e.replace(n,"\\$&"):e}}).call(this,void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],35:[function(e,t,n){var o,r,i=Function.prototype,a=Object.prototype,s=i.toString,l=a.hasOwnProperty,u=s.call(Object),d=a.toString,p=(o=Object.getPrototypeOf,r=Object,function(e){return o(r(e))});t.exports=function(e){if(!function(e){return!!e&&"object"==c(e)}(e)||"[object Object]"!=d.call(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e))return!1;var t=p(e);if(null===t)return!0;var n=l.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&s.call(n)==u}},{}],36:[function(e,t,n){var o=Object.prototype.toString,r=Array.isArray;t.exports=function(e){return"string"==typeof e||!r(e)&&function(e){return!!e&&"object"==c(e)}(e)&&"[object String]"==o.call(e)}},{}],37:[function(e,t,o){(function(e){var n=/^\[object .+?Constructor\]$/,r=/^(?:0|[1-9]\d*)$/,i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1;var a="object"==c(e)&&e&&e.Object===Object&&e,s="object"==("undefined"==typeof self?"undefined":c(self))&&self&&self.Object===Object&&self,l=a||s||Function("return this")(),u="object"==c(o)&&o&&!o.nodeType&&o,d=u&&"object"==c(t)&&t&&!t.nodeType&&t,p=d&&d.exports===u,h=p&&a.process,m=function(){try{var e=d&&d.require&&d.require("util").types;return e||h&&h.binding&&h.binding("util")}catch(e){}}(),g=m&&m.isTypedArray;function f(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)}var _,v,b,y=Array.prototype,E=Function.prototype,S=Object.prototype,w=l["__core-js_shared__"],C=E.toString,x=S.hasOwnProperty,T=(_=/[^.]+$/.exec(w&&w.keys&&w.keys.IE_PROTO||""))?"Symbol(src)_1."+_:"",k=S.toString,R=C.call(Object),O=RegExp("^"+C.call(x).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),D=p?l.Buffer:void 0,I=l.Symbol,F=l.Uint8Array,N=D?D.allocUnsafe:void 0,A=(v=Object.getPrototypeOf,b=Object,function(e){return v(b(e))}),M=Object.create,P=S.propertyIsEnumerable,L=y.splice,U=I?I.toStringTag:void 0,j=function(){try{var e=ue(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),B=D?D.isBuffer:void 0,q=Math.max,G=Date.now,V=ue(l,"Map"),H=ue(Object,"create"),z=function(){function e(){}return function(t){if(!Se(t))return{};if(M)return M(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function K(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1},W.prototype.set=function(e,t){var n=this.__data__,o=Z(n,e);return o<0?(++this.size,n.push([e,t])):n[o][1]=t,this},Y.prototype.clear=function(){this.size=0,this.__data__={hash:new K,map:new(V||W),string:new K}},Y.prototype.delete=function(e){var t=le(this,e).delete(e);return this.size-=t?1:0,t},Y.prototype.get=function(e){return le(this,e).get(e)},Y.prototype.has=function(e){return le(this,e).has(e)},Y.prototype.set=function(e,t){var n=le(this,e),o=n.size;return n.set(e,t),this.size+=n.size==o?0:1,this},$.prototype.clear=function(){this.__data__=new W,this.size=0},$.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},$.prototype.get=function(e){return this.__data__.get(e)},$.prototype.has=function(e){return this.__data__.has(e)},$.prototype.set=function(e,t){var n=this.__data__;if(n instanceof W){var o=n.__data__;if(!V||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new Y(o)}return n.set(e,t),this.size=n.size,this};var te,ne=function(e,t,n){for(var o=-1,r=Object(e),i=n(e),a=i.length;a--;){var s=i[te?a:++o];if(!1===t(r[s],s,r))break}return e};function oe(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":U&&U in Object(e)?function(e){var t=x.call(e,U),n=e[U];try{e[U]=void 0;var o=!0}catch(e){}var r=k.call(e);return o&&(t?e[U]=n:delete e[U]),r}(e):function(e){return k.call(e)}(e)}function re(e){return we(e)&&"[object Arguments]"==oe(e)}function ie(e){return!(!Se(e)||function(e){return!!T&&T in e}(e))&&(ye(e)?O:n).test(function(e){if(null!=e){try{return C.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function ae(e){if(!Se(e))return function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}(e);var t=pe(e),n=[];for(var o in e)("constructor"!=o||!t&&x.call(e,o))&&n.push(o);return n}function se(e,t,n,o,r){e!==t&&ne(t,(function(i,a){if(r||(r=new $),Se(i))!function(e,t,n,o,r,i,a){var s=he(e,n),c=he(t,n),l=a.get(c);if(l)J(e,n,l);else{var u,d,p,h,m,g=i?i(s,c,n+"",e,t,a):void 0,f=void 0===g;if(f){var _=_e(c),v=!_&&be(c),b=!_&&!v&&Ce(c);g=c,_||v||b?_e(s)?g=s:we(m=s)&&ve(m)?g=function(e,t){var n=-1,o=e.length;for(t||(t=Array(o));++n-1&&e%1==0&&e0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(j?function(e,t){return j(e,"toString",{configurable:!0,enumerable:!1,value:(n=t,function(){return n}),writable:!0});var n}:Re);function ge(e,t){return e===t||e!=e&&t!=t}var fe=re(function(){return arguments}())?re:function(e){return we(e)&&x.call(e,"callee")&&!P.call(e,"callee")},_e=Array.isArray;function ve(e){return null!=e&&Ee(e.length)&&!ye(e)}var be=B||function(){return!1};function ye(e){if(!Se(e))return!1;var t=oe(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Ee(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Se(e){var t=c(e);return null!=e&&("object"==t||"function"==t)}function we(e){return null!=e&&"object"==c(e)}var Ce=g?function(e){return function(t){return e(t)}}(g):function(e){return we(e)&&Ee(e.length)&&!!i[oe(e)]};function xe(e){return ve(e)?Q(e,!0):ae(e)}var Te,ke=(Te=function(e,t,n,o){se(e,t,n,o)},ce((function(e,t){var n=-1,o=t.length,r=o>1?t[o-1]:void 0,i=o>2?t[2]:void 0;for(r=Te.length>3&&"function"==typeof r?(o--,r):void 0,i&&function(e,t,n){if(!Se(n))return!1;var o=c(t);return!!("number"==o?ve(n)&&de(t,n.length):"string"==o&&t in n)&&ge(n[t],e)}(t[0],t[1],i)&&(r=o<3?void 0:r,o=1),e=Object(e);++n=0;o--){var r=e[o];"."===r?e.splice(o,1):".."===r?(e.splice(o,1),n++):n&&(e.splice(o,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function o(e,t){if(e.filter)return e.filter(t);for(var n=[],o=0;o=-1&&!r;i--){var a=i>=0?arguments[i]:e.cwd();if("string"!=typeof a)throw new TypeError("Arguments to path.resolve must be strings");a&&(n=a+"/"+n,r="/"===a.charAt(0))}return(r?"/":"")+(n=t(o(n.split("/"),(function(e){return!!e})),!r).join("/"))||"."},n.normalize=function(e){var i=n.isAbsolute(e),a="/"===r(e,-1);return(e=t(o(e.split("/"),(function(e){return!!e})),!i).join("/"))||i||(e="."),e&&a&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(o(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},n.relative=function(e,t){function o(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var r=o(e.split("/")),i=o(t.split("/")),a=Math.min(r.length,i.length),s=a,c=0;c=1;--i)if(47===(t=e.charCodeAt(i))){if(!r){o=i;break}}else r=!1;return-1===o?n?"/":".":n&&1===o?"/":e.slice(0,o)},n.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,o=-1,r=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!r){n=t+1;break}}else-1===o&&(r=!1,o=t+1);return-1===o?"":e.slice(n,o)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},n.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,o=-1,r=!0,i=0,a=e.length-1;a>=0;--a){var s=e.charCodeAt(a);if(47!==s)-1===o&&(r=!1,o=a+1),46===s?-1===t?t=a:1!==i&&(i=1):-1!==t&&(i=-1);else if(!r){n=a+1;break}}return-1===t||-1===o||0===i||1===i&&t===o-1&&t===n+1?"":e.slice(t,o)};var r="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,e("_process"))},{_process:63}],39:[function(e,t,n){var o;n.__esModule=!0,n.default=void 0;var r=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).type="atrule",n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var r=o.prototype;return r.append=function(){var t;this.nodes||(this.nodes=[]);for(var n=arguments.length,o=new Array(n),r=0;r=s.length)break;u=s[l++]}else{if((l=s.next()).done)break;u=l.value}var d=u;this.nodes.push(d)}}return this},d.prepend=function(){for(var e=arguments.length,t=new Array(e),n=0;n=o.length)break;a=o[i++]}else{if((i=o.next()).done)break;a=i.value}var s=a,c=this.normalize(s,this.first,"prepend").reverse(),l=c,u=Array.isArray(l),d=0;for(l=u?l:l[Symbol.iterator]();;){var p;if(u){if(d>=l.length)break;p=l[d++]}else{if((d=l.next()).done)break;p=d.value}var h=p;this.nodes.unshift(h)}for(var m in this.indexes)this.indexes[m]=this.indexes[m]+c.length}return this},d.cleanRaws=function(e){if(t.prototype.cleanRaws.call(this,e),this.nodes){var n=this.nodes,o=Array.isArray(n),r=0;for(n=o?n:n[Symbol.iterator]();;){var i;if(o){if(r>=n.length)break;i=n[r++]}else{if((r=n.next()).done)break;i=r.value}i.cleanRaws(e)}}},d.insertBefore=function(e,t){var n,o=0===(e=this.index(e))&&"prepend",r=this.normalize(t,this.nodes[e],o).reverse(),i=r,a=Array.isArray(i),s=0;for(i=a?i:i[Symbol.iterator]();;){var c;if(a){if(s>=i.length)break;c=i[s++]}else{if((s=i.next()).done)break;c=s.value}var l=c;this.nodes.splice(e,0,l)}for(var u in this.indexes)e<=(n=this.indexes[u])&&(this.indexes[u]=n+r.length);return this},d.insertAfter=function(e,t){e=this.index(e);var n,o=this.normalize(t,this.nodes[e]).reverse(),r=o,i=Array.isArray(r),a=0;for(r=i?r:r[Symbol.iterator]();;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if((a=r.next()).done)break;s=a.value}var c=s;this.nodes.splice(e+1,0,c)}for(var l in this.indexes)e<(n=this.indexes[l])&&(this.indexes[l]=n+o.length);return this},d.removeChild=function(e){var t;for(var n in e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1),this.indexes)(t=this.indexes[n])>=e&&(this.indexes[n]=t-1);return this},d.removeAll=function(){var e=this.nodes,t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var o;if(t){if(n>=e.length)break;o=e[n++]}else{if((n=e.next()).done)break;o=n.value}o.parent=void 0}return this.nodes=[],this},d.replaceValues=function(e,t,n){return n||(n=t,t={}),this.walkDecls((function(o){t.props&&-1===t.props.indexOf(o.prop)||t.fast&&-1===o.value.indexOf(t.fast)||(o.value=o.value.replace(e,n))})),this},d.every=function(e){return this.nodes.every(e)},d.some=function(e){return this.nodes.some(e)},d.index=function(e){return"number"==typeof e?e:this.nodes.indexOf(e)},d.normalize=function(t,n){var i=this;if("string"==typeof t)t=function e(t){return t.map((function(t){return t.nodes&&(t.nodes=e(t.nodes)),delete t.source,t}))}(e("./parse")(t).nodes);else if(Array.isArray(t)){var a=t=t.slice(0),s=Array.isArray(a),c=0;for(a=s?a:a[Symbol.iterator]();;){var l;if(s){if(c>=a.length)break;l=a[c++]}else{if((c=a.next()).done)break;l=c.value}var u=l;u.parent&&u.parent.removeChild(u,"ignore")}}else if("root"===t.type){var d=t=t.nodes.slice(0),p=Array.isArray(d),h=0;for(d=p?d:d[Symbol.iterator]();;){var m;if(p){if(h>=d.length)break;m=d[h++]}else{if((h=d.next()).done)break;m=h.value}var g=m;g.parent&&g.parent.removeChild(g,"ignore")}}else if(t.type)t=[t];else if(t.prop){if(void 0===t.value)throw new Error("Value field is missed in node creation");"string"!=typeof t.value&&(t.value=String(t.value)),t=[new o.default(t)]}else if(t.selector)t=[new(e("./rule"))(t)];else if(t.name)t=[new(e("./at-rule"))(t)];else{if(!t.text)throw new Error("Unknown node type in node creation");t=[new r.default(t)]}return t.map((function(e){return e.parent&&e.parent.removeChild(e),void 0===e.raws.before&&n&&void 0!==n.raws.before&&(e.raws.before=n.raws.before.replace(/[^\s]/g,"")),e.parent=i,e}))},c=s,(l=[{key:"first",get:function(){if(this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}}])&&a(c.prototype,l),u&&a(c,u),s}(i(e("./node")).default);n.default=s,t.exports=n.default},{"./at-rule":39,"./comment":40,"./declaration":43,"./node":48,"./parse":49,"./rule":56}],42:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o=a(e("supports-color")),r=a(e("chalk")),i=a(e("./terminal-highlight"));function a(e){return e&&e.__esModule?e:{default:e}}function s(e){var t="function"==typeof Map?new Map:void 0;return(s=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,o)}function o(){return l(e,arguments,d(this).constructor)}return o.prototype=Object.create(e.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),u(o,e)})(e)}function c(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function l(e,t,n){return(l=c()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&u(r,n.prototype),r}).apply(null,arguments)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var p=function(e){var t,n;function a(t,n,o,r,i,s){var c;return(c=e.call(this,t)||this).name="CssSyntaxError",c.reason=t,i&&(c.file=i),r&&(c.source=r),s&&(c.plugin=s),void 0!==n&&void 0!==o&&(c.line=n,c.column=o),c.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(c),a),c}n=e,(t=a).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=a.prototype;return s.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},s.showSourceCode=function(e){var t=this;if(!this.source)return"";var n=this.source;i.default&&(void 0===e&&(e=o.default.stdout),e&&(n=(0,i.default)(n)));var a=n.split(/\r?\n/),s=Math.max(this.line-3,0),c=Math.min(this.line+2,a.length),l=String(c).length;function u(t){return e&&r.default.red?r.default.red.bold(t):t}function d(t){return e&&r.default.gray?r.default.gray(t):t}return a.slice(s,c).map((function(e,n){var o=s+1+n,r=" "+(" "+o).slice(-l)+" | ";if(o===t.line){var i=d(r.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return u(">")+d(r)+e+"\n "+i+u("^")}return" "+d(r)+e})).join("\n")},s.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},a}(s(Error));n.default=p,t.exports=n.default},{"./terminal-highlight":2,chalk:2,"supports-color":2}],43:[function(e,t,n){var o;n.__esModule=!0,n.default=void 0;var r=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).type="decl",n}return n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,o}(((o=e("./node"))&&o.__esModule?o:{default:o}).default);n.default=r,t.exports=n.default},{"./node":48}],44:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o=a(e("path")),r=a(e("./css-syntax-error")),i=a(e("./previous-map"));function a(e){return e&&e.__esModule?e:{default:e}}function s(e,t){for(var n=0;n"),this.map&&(this.map.file=this.from)}var t,n,a,u=e.prototype;return u.error=function(e,t,n,o){var i;void 0===o&&(o={});var a=this.origin(t,n);return(i=a?new r.default(e,a.line,a.column,a.source,a.file,o.plugin):new r.default(e,t,n,this.css,this.file,o.plugin)).input={line:t,column:n,source:this.css},this.file&&(i.input.file=this.file),i},u.origin=function(e,t){if(!this.map)return!1;var n=this.map.consumer(),o=n.originalPositionFor({line:e,column:t});if(!o.source)return!1;var r={file:this.mapResolve(o.source),line:o.line,column:o.column},i=n.sourceContentFor(o.source);return i&&(r.source=i),r},u.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:o.default.resolve(this.map.consumer().sourceRoot||".",e)},t=e,(n=[{key:"from",get:function(){return this.file||this.id}}])&&s(t.prototype,n),a&&s(t,a),e}();n.default=u,t.exports=n.default},{"./css-syntax-error":42,"./previous-map":52,path:38}],45:[function(e,t,n){(function(o){n.__esModule=!0,n.default=void 0;var r=u(e("./map-generator")),i=u(e("./stringify")),a=u(e("./warn-once")),s=u(e("./result")),l=u(e("./parse"));function u(e){return e&&e.__esModule?e:{default:e}}function d(e,t){for(var n=0;nparseInt(s[1]))&&console.error("Unknown error from PostCSS plugin. Your current PostCSS version is "+i+", but "+n+" uses "+r+". Perhaps this is the source of the error below.")}}else e.plugin=t.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}},h.asyncTick=function(e,t){var n=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,e();try{var o=this.processor.plugins[this.plugin],r=this.run(o);this.plugin+=1,p(r)?r.then((function(){n.asyncTick(e,t)})).catch((function(e){n.handleError(e,o),n.processed=!0,t(e)})):this.asyncTick(e,t)}catch(e){this.processed=!0,t(e)}},h.async=function(){var e=this;return this.processed?new Promise((function(t,n){e.error?n(e.error):t(e.stringify())})):(this.processing||(this.processing=new Promise((function(t,n){if(e.error)return n(e.error);e.plugin=0,e.asyncTick(t,n)})).then((function(){return e.processed=!0,e.stringify()}))),this.processing)},h.sync=function(){if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error("Use process(css).then(cb) to work with async plugins");if(this.error)throw this.error;var e=this.result.processor.plugins,t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var o;if(t){if(n>=e.length)break;o=e[n++]}else{if((n=e.next()).done)break;o=n.value}var r=o;if(p(this.run(r)))throw new Error("Use process(css).then(cb) to work with async plugins")}return this.result},h.run=function(e){this.result.lastPlugin=e;try{return e(this.result.root,this.result)}catch(t){throw this.handleError(t,e),t}},h.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=i.default;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var n=new r.default(t,this.result.root,this.result.opts).generate();return this.result.css=n[0],this.result.map=n[1],this.result},t=e,(n=[{key:"processor",get:function(){return this.result.processor}},{key:"opts",get:function(){return this.result.opts}},{key:"css",get:function(){return this.stringify().css}},{key:"content",get:function(){return this.stringify().content}},{key:"map",get:function(){return this.stringify().map}},{key:"root",get:function(){return this.sync().root}},{key:"messages",get:function(){return this.sync().messages}}])&&d(t.prototype,n),u&&d(t,u),e}();n.default=h,t.exports=n.default}).call(this,e("_process"))},{"./map-generator":47,"./parse":49,"./result":54,"./stringify":58,"./warn-once":61,_process:63}],46:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o={split:function(e,t,n){for(var o=[],r="",i=!1,a=0,s=!1,c=!1,l=0;l0&&(a-=1):0===a&&-1!==t.indexOf(u)&&(i=!0),i?(""!==r&&o.push(r.trim()),r="",i=!1):r+=u}return(n||""!==r)&&o.push(r.trim()),o},space:function(e){return o.split(e,[" ","\n","\t"])},comma:function(e){return o.split(e,[","],!0)}},r=o;n.default=r,t.exports=n.default},{}],47:[function(e,t,n){(function(o){n.__esModule=!0,n.default=void 0;var r=a(e("source-map")),i=a(e("path"));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(e,t,n){this.stringify=e,this.mapOpts=n.map||{},this.root=t,this.opts=n}var t=e.prototype;return t.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},t.previous=function(){var e=this;return this.previousMaps||(this.previousMaps=[],this.root.walk((function(t){if(t.source&&t.source.input.map){var n=t.source.input.map;-1===e.previousMaps.indexOf(n)&&e.previousMaps.push(n)}}))),this.previousMaps},t.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((function(e){return e.inline})))},t.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((function(e){return e.withContent()}))},t.clearAnnotation=function(){if(!1!==this.mapOpts.annotation)for(var e,t=this.root.nodes.length-1;t>=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)},t.setSourcesContent=function(){var e=this,t={};this.root.walk((function(n){if(n.source){var o=n.source.input.from;if(o&&!t[o]){t[o]=!0;var r=e.relative(o);e.map.setSourceContent(r,n.source.input.css)}}}))},t.applyPrevMaps=function(){var e=this.previous(),t=Array.isArray(e),n=0;for(e=t?e:e[Symbol.iterator]();;){var o;if(t){if(n>=e.length)break;o=e[n++]}else{if((n=e.next()).done)break;o=n.value}var a=o,s=this.relative(a.file),c=a.root||i.default.dirname(a.file),l=void 0;!1===this.mapOpts.sourcesContent?(l=new r.default.SourceMapConsumer(a.text)).sourcesContent&&(l.sourcesContent=l.sourcesContent.map((function(){return null}))):l=a.consumer(),this.map.applySourceMap(l,s,this.relative(c))}},t.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((function(e){return e.annotation})))},t.toBase64=function(e){return o?o.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},t.addAnnotation=function(){var e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:this.outputFile()+".map";var t="\n";-1!==this.css.indexOf("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"},t.outputFile=function(){return this.opts.to?this.relative(this.opts.to):this.opts.from?this.relative(this.opts.from):"to.css"},t.generateMap=function(){return this.generateString(),this.isSourcesContent()&&this.setSourcesContent(),this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},t.relative=function(e){if(0===e.indexOf("<"))return e;if(/^\w+:\/\//.test(e))return e;var t=this.opts.to?i.default.dirname(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(t=i.default.dirname(i.default.resolve(t,this.mapOpts.annotation))),e=i.default.relative(t,e),"\\"===i.default.sep?e.replace(/\\/g,"/"):e},t.sourcePath=function(e){return this.mapOpts.from?this.mapOpts.from:this.relative(e.source.input.from)},t.generateString=function(){var e=this;this.css="",this.map=new r.default.SourceMapGenerator({file:this.outputFile()});var t,n,o=1,i=1;this.stringify(this.root,(function(r,a,s){if(e.css+=r,a&&"end"!==s&&(a.source&&a.source.start?e.map.addMapping({source:e.sourcePath(a),generated:{line:o,column:i-1},original:{line:a.source.start.line,column:a.source.start.column-1}}):e.map.addMapping({source:"",original:{line:1,column:0},generated:{line:o,column:i-1}})),(t=r.match(/\n/g))?(o+=t.length,n=r.lastIndexOf("\n"),i=r.length-n):i+=r.length,a&&"start"!==s){var c=a.parent||{raws:{}};("decl"!==a.type||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?e.map.addMapping({source:e.sourcePath(a),generated:{line:o,column:i-2},original:{line:a.source.end.line,column:a.source.end.column-1}}):e.map.addMapping({source:"",original:{line:1,column:0},generated:{line:o,column:i-1}}))}}))},t.generate=function(){if(this.clearAnnotation(),this.isMap())return this.generateMap();var e="";return this.stringify(this.root,(function(t){e+=t})),[e]},e}();n.default=s,t.exports=n.default}).call(this,e("buffer").Buffer)},{buffer:3,path:38,"source-map":78}],48:[function(e,t,n){(function(o){n.__esModule=!0,n.default=void 0;var r=s(e("./css-syntax-error")),i=s(e("./stringifier")),a=s(e("./stringify"));function s(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(e){if(void 0===e&&(e={}),this.raws={},"production"!==o.env.NODE_ENV&&"object"!==c(e)&&void 0!==e)throw new Error("PostCSS nodes constructor accepts object, not "+JSON.stringify(e));for(var t in e)this[t]=e[t]}var t=e.prototype;return t.error=function(e,t){if(void 0===t&&(t={}),this.source){var n=this.positionBy(t);return this.source.input.error(e,n.line,n.column,t)}return new r.default(e)},t.warn=function(e,t,n){var o={node:this};for(var r in n)o[r]=n[r];return e.warn(t,o)},t.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},t.toString=function(e){void 0===e&&(e=a.default),e.stringify&&(e=e.stringify);var t="";return e(this,(function(e){t+=e})),t},t.clone=function(e){void 0===e&&(e={});var t=function e(t,n){var o=new t.constructor;for(var r in t)if(t.hasOwnProperty(r)){var i=t[r],a=c(i);"parent"===r&&"object"===a?n&&(o[r]=n):"source"===r?o[r]=i:i instanceof Array?o[r]=i.map((function(t){return e(t,o)})):("object"===a&&null!==i&&(i=e(i)),o[r]=i)}return o}(this);for(var n in e)t[n]=e[n];return t},t.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},t.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},t.replaceWith=function(){if(this.parent){for(var e=arguments.length,t=new Array(e),n=0;n0&&this.unclosedBracket(r),t&&o){for(;a.length&&("space"===(s=a[a.length-1][0])||"comment"===s);)this.tokenizer.back(a.pop());this.decl(a)}else this.unknownWord(a)},t.rule=function(e){e.pop();var t=new c.default;this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t},t.decl=function(e){var t=new o.default;this.init(t);var n,r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),r[4]?t.source.end={line:r[4],column:r[5]}:t.source.end={line:r[2],column:r[3]};"word"!==e[0][0];)1===e.length&&this.unknownWord(e),t.raws.before+=e.shift()[1];for(t.source.start={line:e[0][2],column:e[0][3]},t.prop="";e.length;){var i=e[0][0];if(":"===i||"space"===i||"comment"===i)break;t.prop+=e.shift()[1]}for(t.raws.between="";e.length;){if(":"===(n=e.shift())[0]){t.raws.between+=n[1];break}"word"===n[0]&&/\w/.test(n[1])&&this.unknownWord([n]),t.raws.between+=n[1]}"_"!==t.prop[0]&&"*"!==t.prop[0]||(t.raws.before+=t.prop[0],t.prop=t.prop.slice(1)),t.raws.between+=this.spacesAndCommentsFromStart(e),this.precheckMissedSemicolon(e);for(var a=e.length-1;a>0;a--){if("!important"===(n=e[a])[1].toLowerCase()){t.important=!0;var s=this.stringFrom(e,a);" !important"!==(s=this.spacesFromEnd(e)+s)&&(t.raws.important=s);break}if("important"===n[1].toLowerCase()){for(var c=e.slice(0),l="",u=a;u>0;u--){var d=c[u][0];if(0===l.trim().indexOf("!")&&"space"!==d)break;l=c.pop()[1]+l}0===l.trim().indexOf("!")&&(t.important=!0,t.raws.important=l,e=c)}if("space"!==n[0]&&"comment"!==n[0])break}this.raw(t,"value",e),-1!==t.value.indexOf(":")&&this.checkMissedSemicolon(e)},t.atrule=function(e){var t,n,o=new a.default;o.name=e[1].slice(1),""===o.name&&this.unnamedAtrule(o,e),this.init(o,e[2],e[3]);for(var r=!1,i=!1,s=[];!this.tokenizer.endOfFile();){if(";"===(e=this.tokenizer.nextToken())[0]){o.source.end={line:e[2],column:e[3]},this.semicolon=!0;break}if("{"===e[0]){i=!0;break}if("}"===e[0]){if(s.length>0){for(t=s[n=s.length-1];t&&"space"===t[0];)t=s[--n];t&&(o.source.end={line:t[4],column:t[5]})}this.end(e);break}if(s.push(e),this.tokenizer.endOfFile()){r=!0;break}}o.raws.between=this.spacesAndCommentsFromEnd(s),s.length?(o.raws.afterName=this.spacesAndCommentsFromStart(s),this.raw(o,"params",s),r&&(e=s[s.length-1],o.source.end={line:e[4],column:e[5]},this.spaces=o.raws.between,o.raws.between="")):(o.raws.afterName="",o.params=""),i&&(o.nodes=[],this.current=o)},t.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:e[2],column:e[3]},this.current=this.current.parent):this.unexpectedClose(e)},t.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces},t.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},t.init=function(e,t,n){this.current.push(e),e.source={start:{line:t,column:n},input:this.input},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},t.raw=function(e,t,n){for(var o,r,i,a,s=n.length,c="",l=!0,u=/^([.|#])?([\w])+/i,d=0;d=0&&("space"===(n=e[r])[0]||2!==(o+=1));r--);throw this.input.error("Missed semicolon",n[2],n[3])}},e}();n.default=u,t.exports=n.default},{"./at-rule":39,"./comment":40,"./declaration":43,"./root":55,"./rule":56,"./tokenize":59}],51:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o=h(e("./declaration")),r=h(e("./processor")),i=h(e("./stringify")),a=h(e("./comment")),s=h(e("./at-rule")),c=h(e("./vendor")),l=h(e("./parse")),u=h(e("./list")),d=h(e("./rule")),p=h(e("./root"));function h(e){return e&&e.__esModule?e:{default:e}}function m(){for(var e=arguments.length,t=new Array(e),n=0;n0)},t.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},t.loadAnnotation=function(e){var t=e.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);t&&(this.annotation=t[1].trim())},t.decodeInline=function(e){var t,n="data:application/json,";if(this.startWith(e,n))return decodeURIComponent(e.substr(n.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),o?o.from(t,"base64").toString():window.atob(t);var r=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+r)},t.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"==typeof t){var n=t(e);if(n&&a.default.existsSync&&a.default.existsSync(n))return a.default.readFileSync(n,"utf-8").toString().trim();throw new Error("Unable to load previous source map: "+n.toString())}if(t instanceof r.default.SourceMapConsumer)return r.default.SourceMapGenerator.fromSourceMap(t).toString();if(t instanceof r.default.SourceMapGenerator)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var o=this.annotation;return e&&(o=i.default.join(i.default.dirname(e),o)),this.root=i.default.dirname(o),!(!a.default.existsSync||!a.default.existsSync(o))&&a.default.readFileSync(o,"utf-8").toString().trim()}},t.isMap=function(e){return"object"===c(e)&&("string"==typeof e.mappings||"string"==typeof e._mappings)},e}();n.default=l,t.exports=n.default}).call(this,e("buffer").Buffer)},{buffer:3,fs:2,path:38,"source-map":78}],53:[function(e,t,n){(function(o){n.__esModule=!0,n.default=void 0;var r,i=(r=e("./lazy-result"))&&r.__esModule?r:{default:r},a=function(){function e(e){void 0===e&&(e=[]),this.version="7.0.27",this.plugins=this.normalize(e)}var t=e.prototype;return t.use=function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this},t.process=function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e,t){return void 0===t&&(t={}),0===this.plugins.length&&t.parser===t.stringifier&&"production"!==o.env.NODE_ENV&&"undefined"!=typeof console&&console.warn&&console.warn("You did not set any plugins, parser, or stringifier. Right now, PostCSS does nothing. Pick plugins for your case on https://www.postcss.parts/ and use them in postcss.config.js."),new i.default(this,e,t)})),t.normalize=function(e){var t=[],n=e,r=Array.isArray(n),i=0;for(n=r?n:n[Symbol.iterator]();;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if((i=n.next()).done)break;a=i.value}var s=a;if(s.postcss&&(s=s.postcss),"object"===c(s)&&Array.isArray(s.plugins))t=t.concat(s.plugins);else if("function"==typeof s)t.push(s);else{if("object"!==c(s)||!s.parse&&!s.stringify)throw new Error(s+" is not a PostCSS plugin");if("production"!==o.env.NODE_ENV)throw new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation.")}}return t},e}();n.default=a,t.exports=n.default}).call(this,e("_process"))},{"./lazy-result":45,_process:63}],54:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o,r=(o=e("./warning"))&&o.__esModule?o:{default:o};function i(e,t){for(var n=0;n1&&(this.nodes[1].raws.before=this.nodes[o].raws.before),t.prototype.removeChild.call(this,e)},i.normalize=function(e,n,o){var r=t.prototype.normalize.call(this,e);if(n)if("prepend"===o)this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n){var i=r,a=Array.isArray(i),s=0;for(i=a?i:i[Symbol.iterator]();;){var c;if(a){if(s>=i.length)break;c=i[s++]}else{if((s=i.next()).done)break;c=s.value}c.raws.before=n.raws.before}}return r},i.toResult=function(t){return void 0===t&&(t={}),new(e("./lazy-result"))(new(e("./processor")),this,t).stringify()},r}(((o=e("./container"))&&o.__esModule?o:{default:o}).default);n.default=r,t.exports=n.default},{"./container":41,"./lazy-result":45,"./processor":53}],56:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o=i(e("./container")),r=i(e("./list"));function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){for(var n=0;n0&&"comment"===e.nodes[t].type;)t-=1;for(var n=this.raw(e,"semicolon"),o=0;o0&&void 0!==e.raws.after)return-1!==(t=e.raws.after).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/[^\s]/g,"")),t},t.rawBeforeOpen=function(e){var t;return e.walk((function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1})),t},t.rawColon=function(e){var t;return e.walkDecls((function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t},t.beforeAfter=function(e,t){var n;n="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var o=e.parent,r=0;o&&"root"!==o.type;)r+=1,o=o.parent;if(-1!==n.indexOf("\n")){var i=this.raw(e,null,"indent");if(i.length)for(var a=0;a=q)){var t=!!e&&e.ignoreUnclosed;switch(((n=j.charCodeAt(H))===s||n===l||n===d&&j.charCodeAt(H+1)!==s)&&(G=H,V+=1),n){case s:case c:case u:case d:case l:T=H;do{T+=1,(n=j.charCodeAt(T))===s&&(G=T,V+=1)}while(n===c||n===s||n===u||n===d||n===l);U=["space",j.slice(H,T)],H=T-1;break;case p:case h:case f:case _:case y:case v:case g:var Y=String.fromCharCode(n);U=[Y,Y,V,H-G];break;case m:if(P=z.length?z.pop()[1]:"",L=j.charCodeAt(H+1),"url"===P&&L!==o&&L!==r&&L!==c&&L!==s&&L!==u&&L!==l&&L!==d){T=H;do{if(A=!1,-1===(T=j.indexOf(")",T+1))){if(B||t){T=H;break}W("bracket")}for(M=T;j.charCodeAt(M-1)===i;)M-=1,A=!A}while(A);U=["brackets",j.slice(H,T+1),V,H-G,V,T-G],H=T}else T=j.indexOf(")",H+1),D=j.slice(H,T+1),-1===T||C.test(D)?U=["(","(",V,H-G]:(U=["brackets",D,V,H-G,V,T-G],H=T);break;case o:case r:k=n===o?"'":'"',T=H;do{if(A=!1,-1===(T=j.indexOf(k,T+1))){if(B||t){T=H+1;break}W("string")}for(M=T;j.charCodeAt(M-1)===i;)M-=1,A=!A}while(A);D=j.slice(H,T+1),R=D.split("\n"),(O=R.length-1)>0?(F=V+O,N=T-R[O].length):(F=V,N=G),U=["string",j.slice(H,T+1),V,H-G,F,T-N],G=N,V=F,H=T;break;case E:S.lastIndex=H+1,S.test(j),T=0===S.lastIndex?j.length-1:S.lastIndex-2,U=["at-word",j.slice(H,T+1),V,H-G,V,T-G],H=T;break;case i:for(T=H,I=!0;j.charCodeAt(T+1)===i;)T+=1,I=!I;if(n=j.charCodeAt(T+1),I&&n!==a&&n!==c&&n!==s&&n!==u&&n!==d&&n!==l&&(T+=1,x.test(j.charAt(T)))){for(;x.test(j.charAt(T+1));)T+=1;j.charCodeAt(T+1)===c&&(T+=1)}U=["word",j.slice(H,T+1),V,H-G,V,T-G],H=T;break;default:n===a&&j.charCodeAt(H+1)===b?(0===(T=j.indexOf("*/",H+2)+1)&&(B||t?T=j.length:W("comment")),D=j.slice(H,T+1),R=D.split("\n"),(O=R.length-1)>0?(F=V+O,N=T-R[O].length):(F=V,N=G),U=["comment",D,V,H-G,F,T-N],G=N,V=F,H=T):(w.lastIndex=H+1,w.test(j),T=0===w.lastIndex?j.length-1:w.lastIndex-2,U=["word",j.slice(H,T+1),V,H-G,V,T-G],z.push(U),H=T)}return H++,U}},endOfFile:function(){return 0===K.length&&H>=q},position:function(){return H}}};var o="'".charCodeAt(0),r='"'.charCodeAt(0),i="\\".charCodeAt(0),a="/".charCodeAt(0),s="\n".charCodeAt(0),c=" ".charCodeAt(0),l="\f".charCodeAt(0),u="\t".charCodeAt(0),d="\r".charCodeAt(0),p="[".charCodeAt(0),h="]".charCodeAt(0),m="(".charCodeAt(0),g=")".charCodeAt(0),f="{".charCodeAt(0),_="}".charCodeAt(0),v=";".charCodeAt(0),b="*".charCodeAt(0),y=":".charCodeAt(0),E="@".charCodeAt(0),S=/[ \n\t\r\f{}()'"\\;/[\]#]/g,w=/[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g,C=/.[\\/("'\n]/,x=/[a-f0-9]/i;t.exports=n.default},{}],60:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o={prefix:function(e){var t=e.match(/^(-\w+-)/);return t?t[0]:""},unprefixed:function(e){return e.replace(/^-\w+-/,"")}};n.default=o,t.exports=n.default},{}],61:[function(e,t,n){n.__esModule=!0,n.default=function(e){o[e]||(o[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e))};var o={};t.exports=n.default},{}],62:[function(e,t,n){n.__esModule=!0,n.default=void 0;var o=function(){function e(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var n=t.node.positionBy(t);this.line=n.line,this.column=n.column}for(var o in t)this[o]=t[o]}return e.prototype.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e}();n.default=o,t.exports=n.default},{}],63:[function(e,t,n){var o,r,i=t.exports={};function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function c(e){if(o===setTimeout)return setTimeout(e,0);if((o===a||!o)&&setTimeout)return o=setTimeout,setTimeout(e,0);try{return o(e,0)}catch(t){try{return o.call(null,e,0)}catch(t){return o.call(this,e,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:a}catch(e){o=a}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var l,u=[],d=!1,p=-1;function h(){d&&l&&(d=!1,l.length?u=l.concat(u):p=-1,u.length&&m())}function m(){if(!d){var e=c(h);d=!0;for(var t=u.length;t;){for(l=u,u=[];++p1)for(var n=1;n= 0x80 (not a basic code point)","invalid-input":"Invalid input"},g=Math.floor,f=String.fromCharCode;function _(e){throw new RangeError(m[e])}function v(e,t){for(var n=e.length,o=[];n--;)o[n]=t(e[n]);return o}function b(e,t){var n=e.split("@"),o="";return n.length>1&&(o=n[0]+"@",e=n[1]),o+v((e=e.replace(h,".")).split("."),t).join(".")}function y(e){for(var t,n,o=[],r=0,i=e.length;r=55296&&t<=56319&&r65535&&(t+=f((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=f(e)})).join("")}function S(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,n){var o=0;for(e=n?g(e/700):e>>1,e+=g(e/t);e>455;o+=36)e=g(e/35);return g(o+36*e/(e+38))}function C(e){var t,n,o,r,i,a,s,c,l,d,p,h=[],m=e.length,f=0,v=128,b=72;for((n=e.lastIndexOf("-"))<0&&(n=0),o=0;o=128&&_("not-basic"),h.push(e.charCodeAt(o));for(r=n>0?n+1:0;r=m&&_("invalid-input"),((c=(p=e.charCodeAt(r++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:36)>=36||c>g((u-f)/a))&&_("overflow"),f+=c*a,!(c<(l=s<=b?1:s>=b+26?26:s-b));s+=36)a>g(u/(d=36-l))&&_("overflow"),a*=d;b=w(f-i,t=h.length+1,0==i),g(f/t)>u-v&&_("overflow"),v+=g(f/t),f%=t,h.splice(f++,0,v)}return E(h)}function x(e){var t,n,o,r,i,a,s,c,l,d,p,h,m,v,b,E=[];for(h=(e=y(e)).length,t=128,n=0,i=72,a=0;a=t&&pg((u-n)/(m=o+1))&&_("overflow"),n+=(s-t)*m,t=s,a=0;au&&_("overflow"),p==t){for(c=n,l=36;!(c<(d=l<=i?1:l>=i+26?26:l-i));l+=36)b=c-d,v=36-d,E.push(f(S(d+b%v,0))),c=g(b/v);E.push(f(S(c,0))),i=w(n,m,o==r),n=0,++o}++n,++t}return E.join("")}if(s={version:"1.4.1",ucs2:{decode:y,encode:E},decode:C,encode:x,toASCII:function(e){return b(e,(function(e){return p.test(e)?"xn--"+x(e):e}))},toUnicode:function(e){return b(e,(function(e){return d.test(e)?C(e.slice(4).toLowerCase()):e}))}},r&&i)if(t.exports==r)i.exports=s;else for(l in s)s.hasOwnProperty(l)&&(r[l]=s[l]);else n.punycode=s}(this)}).call(this,void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],65:[function(e,t,n){function o(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,n,i){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var s=/\+/g;e=e.split(t);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var l=e.length;c>0&&l>c&&(l=c);for(var u=0;u=0?(d=g.substr(0,f),p=g.substr(f+1)):(d=g,p=""),h=decodeURIComponent(d),m=decodeURIComponent(p),o(a,h)?r(a[h])?a[h].push(m):a[h]=[a[h],m]:a[h]=m}return a};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],66:[function(e,t,n){var o=function(e){switch(c(e)){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,n,s){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"===c(e)?i(a(e),(function(a){var s=encodeURIComponent(o(a))+n;return r(e[a])?i(e[a],(function(e){return s+encodeURIComponent(o(e))})).join(t):s+encodeURIComponent(o(e[a]))})).join(t):s?encodeURIComponent(o(s))+n+encodeURIComponent(o(e)):""};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o=0)return t}else{var n=o.toSetString(e);if(r.call(this._set,n))return this._set[n]}throw new Error('"'+e+'" is not in the set.')},a.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),n+=o.encode(t)}while(r>0);return n},n.decode=function(e,t,n){var r,i,a,s,c=e.length,l=0,u=0;do{if(t>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=o.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(32&i),l+=(i&=31)<>1,1==(1&a)?-s:s),n.rest=t}},{"./base64":70}],70:[function(e,t,n){var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e0?o-c>1?e(c,o,r,i,a,s):s==n.LEAST_UPPER_BOUND?o1?e(t,c,r,i,a,s):s==n.LEAST_UPPER_BOUND?c:t<0?-1:t}(-1,t.length,e,t,o,r||n.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===o(t[i],t[i-1],!0);)--i;return i}},{}],72:[function(e,t,n){var o=e("./util");function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}r.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},r.prototype.add=function(e){var t,n,r,i,a,s;t=this._last,n=e,r=t.generatedLine,i=n.generatedLine,a=t.generatedColumn,s=n.generatedColumn,i>r||i==r&&s>=a||o.compareByGeneratedPositionsInflated(t,n)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},r.prototype.toArray=function(){return this._sorted||(this._array.sort(o.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=r},{"./util":77}],73:[function(e,t,n){function o(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function r(e,t,n,i){if(n=0){var s=this._originalMappings[a];if(void 0===e.column)for(var c=s.originalLine;s&&s.originalLine===c;)i.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a];else for(var l=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==l;)i.push({line:o.getArg(s,"generatedLine",null),column:o.getArg(s,"generatedColumn",null),lastColumn:o.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++a]}return i},n.SourceMapConsumer=c,l.prototype=Object.create(c.prototype),l.prototype.consumer=c,l.prototype._findSourceIndex=function(e){var t,n=e;if(null!=this.sourceRoot&&(n=o.relative(this.sourceRoot,n)),this._sources.has(n))return this._sources.indexOf(n);for(t=0;t1&&(n.source=g+i[1],g+=i[1],n.originalLine=h+i[2],h=n.originalLine,n.originalLine+=1,n.originalColumn=m+i[3],m=n.originalColumn,i.length>4&&(n.name=f+i[4],f+=i[4])),S.push(n),"number"==typeof n.originalLine&&E.push(n)}s(S,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,s(E,o.compareByOriginalPositions),this.__originalMappings=E},l.prototype._findMapping=function(e,t,n,o,i,a){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[o]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[o]);return r.search(e,t,i,a)},l.prototype.computeColumnSpans=function(){for(var e=0;e=0){var r=this._generatedMappings[n];if(r.generatedLine===t.generatedLine){var i=o.getArg(r,"source",null);null!==i&&(i=this._sources.at(i),i=o.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=o.getArg(r,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:o.getArg(r,"originalLine",null),column:o.getArg(r,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},l.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e}))},l.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var n=this._findSourceIndex(e);if(n>=0)return this.sourcesContent[n];var r,i=e;if(null!=this.sourceRoot&&(i=o.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(r=o.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!r.path||"/"==r.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},l.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var n={source:t,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},r=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",c.GREATEST_LOWER_BOUND));if(r>=0){var i=this._originalMappings[r];if(i.source===n.source)return{line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=l,d.prototype=Object.create(c.prototype),d.prototype.constructor=c,d.prototype._version=3,Object.defineProperty(d.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||o)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:o}))},s.prototype._serializeMappings=function(){for(var e,t,n,i,a=0,s=1,c=0,l=0,u=0,d=0,p="",h=this._mappings.toArray(),m=0,g=h.length;m0){if(!r.compareByGeneratedPositionsInflated(t,h[m-1]))continue;e+=","}e+=o.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=o.encode(i-d),d=i,e+=o.encode(t.originalLine-1-l),l=t.originalLine-1,e+=o.encode(t.originalColumn-c),c=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=o.encode(n-u),u=n)),p+=e}return p},s.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=r.relative(t,e));var n=r.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null}),this)},s.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},s.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=s},{"./array-set":68,"./base64-vlq":69,"./mapping-list":72,"./util":77}],76:[function(e,t,n){var o=e("./source-map-generator").SourceMapGenerator,r=e("./util"),i=/(\r?\n)/,a="$$$isSourceNode$$$";function s(e,t,n,o,r){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==r?null:r,this[a]=!0,null!=o&&this.add(o)}s.fromStringWithSourceMap=function(e,t,n){var o=new s,a=e.split(i),c=0,l=function(){return e()+(e()||"");function e(){return c=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},s.prototype.walk=function(e){for(var t,n=0,o=this.children.length;n0){for(t=[],n=0;n=0;u--)"."===(r=c[u])?c.splice(u,1):".."===r?l++:l>0&&(""===r?(c.splice(u+1,l),l=0):(c.splice(u,2),l--));return""===(t=c.join("/"))&&(t=s?"/":"."),o?(o.path=t,a(o)):t}function c(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),o=i(e);if(o&&(e=o.path||"/"),n&&!n.scheme)return o&&(n.scheme=o.scheme),a(n);if(n||t.match(r))return t;if(o&&!o.host&&!o.path)return o.host=t,a(o);var c="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=c,a(o)):c}n.urlParse=i,n.urlGenerate=a,n.normalize=s,n.join=c,n.isAbsolute=function(e){return"/"===e.charAt(0)||o.test(e)},n.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var o=e.lastIndexOf("/");if(o<0)return t;if((e=e.slice(0,o)).match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)};var l=!("__proto__"in Object.create(null));function u(e){return e}function d(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function p(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}n.toSetString=l?u:function(e){return d(e)?"$"+e:e},n.fromSetString=l?u:function(e){return d(e)?e.slice(1):e},n.compareByOriginalPositions=function(e,t,n){var o=p(e.source,t.source);return 0!==o||0!=(o=e.originalLine-t.originalLine)||0!=(o=e.originalColumn-t.originalColumn)||n||0!=(o=e.generatedColumn-t.generatedColumn)||0!=(o=e.generatedLine-t.generatedLine)?o:p(e.name,t.name)},n.compareByGeneratedPositionsDeflated=function(e,t,n){var o=e.generatedLine-t.generatedLine;return 0!==o||0!=(o=e.generatedColumn-t.generatedColumn)||n||0!==(o=p(e.source,t.source))||0!=(o=e.originalLine-t.originalLine)||0!=(o=e.originalColumn-t.originalColumn)?o:p(e.name,t.name)},n.compareByGeneratedPositionsInflated=function(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n||0!=(n=e.generatedColumn-t.generatedColumn)||0!==(n=p(e.source,t.source))||0!=(n=e.originalLine-t.originalLine)||0!=(n=e.originalColumn-t.originalColumn)?n:p(e.name,t.name)},n.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},n.computeSourceURL=function(e,t,n){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),n){var o=i(n);if(!o)throw new Error("sourceMapURL could not be parsed");if(o.path){var r=o.path.lastIndexOf("/");r>=0&&(o.path=o.path.substring(0,r+1))}t=c(a(o),t)}return s(t)}},{}],78:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":74,"./lib/source-map-generator":75,"./lib/source-node":76}],79:[function(e,t,n){var o=/^\d+$/;n.parse=function(e){return(t=e.split(",").map((function(e){var t={};return e.trim().split(/\s+/).forEach((function(e,n){if(0!==n){var r=e.slice(0,e.length-1),i=e[e.length-1],a=parseInt(r,10),s=parseFloat(r);if("w"===i&&o.test(r))t.width=a;else if("h"===i&&o.test(r))t.height=a;else{if("x"!==i||Number.isNaN(s))throw new Error("Invalid srcset descriptor: ".concat(e));t.density=s}}else t.url=e})),t}))).sort().filter((function(e,n){return JSON.stringify(e)!==JSON.stringify(t[n-1])}));var t},n.stringify=function(e){return s(new Set(e.map((function(e){if(!e.url)throw new Error("URL is required");var t=[e.url];return e.width&&t.push("".concat(e.width,"w")),e.height&&t.push("".concat(e.height,"h")),e.density&&t.push("".concat(e.density,"x")),t.join(" ")})))).join(", ")}},{}],80:[function(e,t,n){var o=e("punycode"),r=e("./util");function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}n.parse=y,n.resolve=function(e,t){return y(e,!1,!0).resolve(t)},n.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},n.format=function(e){return r.isString(e)&&(e=y(e)),e instanceof i?e.format():i.prototype.format.call(e)},n.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),d=["'"].concat(u),p=["%","/","?",";","#"].concat(d),h=["/","?","#"],m=/^[+a-z0-9A-Z_-]{0,63}$/,g=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},v={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},b=e("querystring");function y(e,t,n){if(e&&r.isObject(e)&&e instanceof i)return e;var o=new i;return o.parse(e,t,n),o}i.prototype.parse=function(e,t,n){if(!r.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+c(e));var i=e.indexOf("?"),s=-1!==i&&i127?A+="x":A+=N[M];if(!A.match(m)){var L=I.slice(0,R),U=I.slice(R+1),j=N.match(g);j&&(L.push(j[1]),U.unshift(j[2])),U.length&&(y="/"+U.join(".")+y),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),D||(this.hostname=o.toASCII(this.hostname));var B=this.port?":"+this.port:"",q=this.hostname||"";this.host=q+B,this.href+=this.host,D&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!f[w])for(R=0,F=d.length;R0)&&n.host.split("@"))&&(n.auth=O.shift(),n.host=n.hostname=O.shift())),n.search=e.search,n.query=e.query,r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var x=w.slice(-1)[0],T=(n.host||e.host||w.length>1)&&("."===x||".."===x)||""===x,k=0,R=w.length;R>=0;R--)"."===(x=w[R])?w.splice(R,1):".."===x?(w.splice(R,1),k++):k&&(w.splice(R,1),k--);if(!E&&!S)for(;k--;k)w.unshift("..");!E||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),T&&"/"!==w.join("/").substr(-1)&&w.push("");var O,D=""===w[0]||w[0]&&"/"===w[0].charAt(0);return C&&(n.hostname=n.host=D?"":w.length?w.shift():"",(O=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=O.shift(),n.host=n.hostname=O.shift())),(E=E||n.host&&w.length)&&!D&&w.unshift(""),w.length?n.pathname=w.join("/"):(n.pathname=null,n.path=null),r.isNull(n.pathname)&&r.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":81,punycode:64,querystring:67}],81:[function(e,t,n){t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"===c(e)&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],82:[function(e,t,n){t.exports=function(){for(var e={},t=0;t]+$/;function _(e,t,n){var b="",y="";function E(e,t){var n=this;this.tag=e,this.attribs=t||{},this.tagPosition=b.length,this.text="",this.updateParentNodeText=function(){O.length&&(O[O.length-1].text+=n.text)}}t?(t=r(_.defaults,t)).parser?t.parser=r(v,t.parser):t.parser=v:(t=_.defaults).parser=v;var S,w,C=t.nonTextTags||["script","style","textarea"];t.allowedAttributes&&(S={},w={},h(t.allowedAttributes,(function(e,t){S[t]=[];var n=[];e.forEach((function(e){c(e)&&e.indexOf("*")>=0?n.push(i(e).replace(/\\\*/g,".*")):S[t].push(e)})),w[t]=new RegExp("^("+n.join("|")+")$")})));var x={};h(t.allowedClasses,(function(e,t){S&&(m(S,t)||(S[t]=[]),S[t].push("class")),x[t]=e}));var T,k={};h(t.transformTags,(function(e,t){var n;"function"==typeof e?n=e:"string"==typeof e&&(n=_.simpleTransform(e)),"*"===t?T=n:k[t]=n}));var R=0,O=[],D={},I={},F=!1,N=0,A=new o.Parser({onopentag:function(e,n){if(F)N++;else{var o=new E(e,n);O.push(o);var r,i=!1,c=!!o.text;if(m(k,e)&&(r=k[e](e,n),o.attribs=n=r.attribs,void 0!==r.text&&(o.innerText=r.text),e!==r.tagName&&(o.name=e=r.tagName,I[R]=r.tagName)),T&&(r=T(e,n),o.attribs=n=r.attribs,e!==r.tagName&&(o.name=e=r.tagName,I[R]=r.tagName)),(t.allowedTags&&-1===t.allowedTags.indexOf(e)||"recursiveEscape"===t.disallowedTagsMode&&!function(e){for(var t in e)if(m(e,t))return!1;return!0}(D))&&(i=!0,D[R]=!0,"discard"===t.disallowedTagsMode&&-1!==C.indexOf(e)&&(F=!0,N=1),D[R]=!0),R++,i){if("discard"===t.disallowedTagsMode)return;y=b,b=""}b+="<"+e,(!S||m(S,e)||S["*"])&&h(n,(function(n,r){if(f.test(r)){var i,c=!1;if(!S||m(S,e)&&-1!==S[e].indexOf(r)||S["*"]&&-1!==S["*"].indexOf(r)||m(w,e)&&w[e].test(r)||w["*"]&&w["*"].test(r))c=!0;else if(S&&S[e]){var _=!0,v=!1,y=void 0;try{for(var E,C=S[e][Symbol.iterator]();!(_=(E=C.next()).done);_=!0){var T=E.value;if(l(T)&&T.name&&T.name===r){c=!0;var k="";if(!0===T.multiple){var R=n.split(" "),O=!0,D=!1,I=void 0;try{for(var F,N=R[Symbol.iterator]();!(O=(F=N.next()).done);O=!0){var A=F.value;-1!==T.values.indexOf(A)&&(""===k?k=A:k+=" "+A)}}catch(e){D=!0,I=e}finally{try{O||null==N.return||N.return()}finally{if(D)throw I}}}else T.values.indexOf(n)>=0&&(k=n);n=k}}}catch(e){v=!0,y=e}finally{try{_||null==C.return||C.return()}finally{if(v)throw y}}}if(c){if(-1!==t.allowedSchemesAppliedToAttributes.indexOf(r)&&P(e,n))return void delete o.attribs[r];if("iframe"===e&&"src"===r){var L=!0;try{(i=p.parse(n,!1,!0))&&null===i.host&&null===i.protocol?L=m(t,"allowIframeRelativeUrls")?t.allowIframeRelativeUrls:!t.allowedIframeHostnames:t.allowedIframeHostnames&&(L=t.allowedIframeHostnames.find((function(e){return e===i.hostname})))}catch(e){L=!1}if(!L)return void delete o.attribs[r]}if("srcset"===r)try{if(h(i=u.parse(n),(function(e){P("srcset",e.url)&&(e.evil=!0)})),!(i=g(i,(function(e){return!e.evil}))).length)return void delete o.attribs[r];n=u.stringify(g(i,(function(e){return!e.evil}))),o.attribs[r]=n}catch(e){return void delete o.attribs[r]}if("class"===r&&!(n=function(e,t){return t?(e=e.split(/\s+/)).filter((function(e){return-1!==t.indexOf(e)})).join(" "):e}(n,x[e])).length)return void delete o.attribs[r];if("style"===r)try{if(0===(n=function(e){return e.nodes[0].nodes.reduce((function(e,t){return e.push(t.prop+":"+t.value),e}),[]).join(";")}(function(e,t){if(!t)return e;var n,o=a(e),r=e.nodes[0];return(n=t[r.selector]&&t["*"]?s(a(t[r.selector]),t["*"],(function(e,t){if(Array.isArray(e))return e.concat(t)})):t[r.selector]||t["*"])&&(o.nodes[0].nodes=r.nodes.reduce(function(e){return function(t,n){return e.hasOwnProperty(n.prop)&&e[n.prop].some((function(e){return e.test(n.value)}))&&t.push(n),t}}(n),[])),o}(d.parse(e+" {"+n+"}"),t.allowedStyles))).length)return void delete o.attribs[r]}catch(e){return void delete o.attribs[r]}b+=" "+r,n&&n.length&&(b+='="'+M(n,!0)+'"')}else delete o.attribs[r]}else delete o.attribs[r]})),-1!==t.selfClosing.indexOf(e)?b+=" />":(b+=">",!o.innerText||c||t.textFilter||(b+=o.innerText)),i&&(b=y+M(b),y="")}},ontext:function(e){if(!F){var n,o=O[O.length-1];if(o&&(n=o.tag,e=void 0!==o.innerText?o.innerText:e),"discard"!==t.disallowedTagsMode||"script"!==n&&"style"!==n){var r=M(e,!1);t.textFilter?b+=t.textFilter(r):b+=r}else b+=e;O.length&&(O[O.length-1].text+=e)}},onclosetag:function(e){if(F){if(--N)return;F=!1}var n=O.pop();if(n){F=!1,R--;var o=D[R];if(o){if(delete D[R],"discard"===t.disallowedTagsMode)return void n.updateParentNodeText();y=b,b=""}I[R]&&(e=I[R],delete I[R]),t.exclusiveFilter&&t.exclusiveFilter(n)?b=b.substr(0,n.tagPosition):(n.updateParentNodeText(),-1===t.selfClosing.indexOf(e)&&(b+="",o&&(b=y+M(b),y="")))}}},t.parser);return A.write(e),A.end(),b;function M(e,n){return"string"!=typeof e&&(e+=""),t.parser.decodeEntities&&(e=e.replace(/&/g,"&").replace(//g,">"),n&&(e=e.replace(/\"/g,"""))),e=e.replace(/&(?![a-zA-Z0-9#]{1,20};)/g,"&").replace(//g,">"),n&&(e=e.replace(/\"/g,""")),e}function P(e,n){var o=(n=(n=n.replace(/[\x00-\x20]+/g,"")).replace(/<\!\-\-.*?\-\-\>/g,"")).match(/^([a-zA-Z]+)\:/);if(!o)return!!n.match(/^[\/\\]{2}/)&&!t.allowProtocolRelative;var r=o[1].toLowerCase();return m(t.allowedSchemesByTag,e)?-1===t.allowedSchemesByTag[e].indexOf(r):!t.allowedSchemes||-1===t.allowedSchemes.indexOf(r)}}var v={decodeEntities:!0};_.defaults={allowedTags:["h3","h4","h5","h6","blockquote","p","a","ul","ol","nl","li","b","i","strong","em","strike","code","hr","br","div","table","thead","caption","tbody","tr","th","td","pre","iframe"],disallowedTagsMode:"discard",allowedAttributes:{a:["href","name","target"],img:["src"]},selfClosing:["img","br","hr","area","base","basefont","input","link","meta"],allowedSchemes:["http","https","ftp","mailto"],allowedSchemesByTag:{},allowedSchemesAppliedToAttributes:["href","src","cite"],allowProtocolRelative:!0},_.simpleTransform=function(e,t,n){return n=void 0===n||n,t=t||{},function(o,r){var i;if(n)for(i in t)r[i]=t[i];else r=t;return{tagName:e,attribs:r}}}},{htmlparser2:31,"lodash.clonedeep":33,"lodash.escaperegexp":34,"lodash.isplainobject":35,"lodash.isstring":36,"lodash.mergewith":37,postcss:51,srcset:79,url:80,xtend:82}]},{},[83])(83)},"object"===c(t)&&void 0!==e?e.exports=a():(r=[],void 0===(i="function"==typeof(o=a)?o.apply(t,r):o)||(e.exports=i))}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return l}));n(13);var o=n(6);n(343);var r=n(1),i=n(227),a=n(761),s=n.n(a);const c={CHECKING:"CHECKING",ERROR:"ERROR",NOTAVAILABLE:"NOTAVAILABLE",DOWNLOADING:"DOWNLOADING",READY:"READY"};class l extends class{constructor(){this.notificationCount=0,this.errorDidOccur=!1,o.a.register(this._onAction.bind(this))}_onAction(e){switch(e.action){case"on_client_not_viable":case"on_logged_out":this.setNotificationCount(0)}}getHumanReadableName(){return"Base Platform"}setNotificationCount(e){this.notificationCount=e}setErrorStatus(e){this.errorDidOccur=e}supportsNotifications(){return!1}maySendNotifications(){return!1}requestNotificationPermission(){}displayNotification(e,t,n,o){}loudNotification(e,t){}getAppVersion(){throw new Error("getAppVersion not implemented!")}screenCaptureErrorString(){return"Not implemented"}reload(){throw new Error("reload not implemented!")}supportsAutoLaunch(){return!1}async getAutoLaunchEnabled(){return!1}async setAutoLaunchEnabled(e){throw new Error("Unimplemented")}supportsAutoHideMenuBar(){return!1}async getAutoHideMenuBarEnabled(){return!1}async setAutoHideMenuBarEnabled(e){throw new Error("Unimplemented")}supportsMinimizeToTray(){return!1}async getMinimizeToTrayEnabled(){return!1}async setMinimizeToTrayEnabled(e){throw new Error("Unimplemented")}getEventIndexingManager(){return null}setLanguage(e){}getSSOCallbackUrl(e,t){const n=new URL(window.location.href);return n.hash="",n.searchParams.set("homeserver",e),n.searchParams.set("identityServer",t),n}startSingleSignOn(e,t){const n=this.getSSOCallbackUrl(e.getHomeserverUrl(),e.getIdentityServerUrl());window.location.href=e.getSsoLoginUrl(n.toString(),t)}}{constructor(){super(),this.showUpdateCheck=!1,this.startUpdateCheck=this.startUpdateCheck.bind(this),this.stopUpdateCheck=this.stopUpdateCheck.bind(this)}async getConfig(){return Object(i.a)()}getHumanReadableName(){return"Vector Base Platform"}get favicon(){return this._favicon||(this._favicon=new s.a({animation:"none"})),this._favicon}_updateFavicon(){try{let e="#d00",t=this.notificationCount;this.errorDidOccur&&(t=t||"×",e="#f00");const n=()=>{this.favicon.badge(t,{bgColor:e})};n(),window.chrome&&n()}catch(e){console.warn("Failed to set badge count: ".concat(e.message))}}setNotificationCount(e){this.notificationCount!==e&&(super.setNotificationCount(e),this._updateFavicon())}setErrorStatus(e){this.errorDidOccur!==e&&(super.setErrorStatus(e),this._updateFavicon())}startUpdater(){}async canSelfUpdate(){return!1}startUpdateCheck(){this.showUpdateCheck=!0,o.a.dispatch({action:"check_updates",value:{status:c.CHECKING}})}stopUpdateCheck(){this.showUpdateCheck=!1,o.a.dispatch({action:"check_updates",value:!1})}getUpdateCheckStatusEnum(){return c}installUpdate(){}getDefaultDeviceDisplayName(){return Object(r.a)("Unknown device")}}},function(e,t,n){"use strict";var o="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var o in n)r(n,o)&&(e[o]=n[o])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,n,o,r){if(t.subarray&&e.subarray)e.set(t.subarray(n,n+o),r);else for(var i=0;i=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|e}function m(e,t){if(c.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return q(e).length;default:if(o)return B(e).length;t=(""+t).toLowerCase(),o=!0}}function g(e,t,n){var o=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,n);case"utf8":case"utf-8":return T(this,t,n);case"ascii":return k(this,t,n);case"latin1":case"binary":return R(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return D(this,t,n);default:if(o)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),o=!0}}function f(e,t,n){var o=e[t];e[t]=e[n],e[n]=o}function _(e,t,n,o,r){if(0===e.length)return-1;if("string"==typeof n?(o=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=c.from(t,o)),c.isBuffer(t))return 0===t.length?-1:v(e,t,n,o,r);if("number"==typeof t)return t&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):v(e,[t],n,o,r);throw new TypeError("val must be string, number or Buffer")}function v(e,t,n,o,r){var i,a=1,s=e.length,c=t.length;if(void 0!==o&&("ucs2"===(o=String(o).toLowerCase())||"ucs-2"===o||"utf16le"===o||"utf-16le"===o)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,n/=2}function l(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(r){var u=-1;for(i=n;is&&(n=s-c),i=n;i>=0;i--){for(var d=!0,p=0;pr&&(o=r):o=r;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");o>i/2&&(o=i/2);for(var a=0;a>8,r=n%256,i.push(r),i.push(o);return i}(t,e.length-n),e,n,o)}function x(e,t,n){return 0===t&&n===e.length?o.fromByteArray(e):o.fromByteArray(e.slice(t,n))}function T(e,t,n){n=Math.min(e.length,n);for(var o=[],r=t;r239?4:l>223?3:l>191?2:1;if(r+d<=n)switch(d){case 1:l<128&&(u=l);break;case 2:128==(192&(i=e[r+1]))&&(c=(31&l)<<6|63&i)>127&&(u=c);break;case 3:i=e[r+1],a=e[r+2],128==(192&i)&&128==(192&a)&&(c=(15&l)<<12|(63&i)<<6|63&a)>2047&&(c<55296||c>57343)&&(u=c);break;case 4:i=e[r+1],a=e[r+2],s=e[r+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(c=(15&l)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&c<1114112&&(u=c)}null===u?(u=65533,d=1):u>65535&&(u-=65536,o.push(u>>>10&1023|55296),u=56320|1023&u),o.push(u),r+=d}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var n="",o=0;for(;o0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},c.prototype.compare=function(e,t,n,o,r){if(!c.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===o&&(o=0),void 0===r&&(r=this.length),t<0||n>e.length||o<0||r>this.length)throw new RangeError("out of range index");if(o>=r&&t>=n)return 0;if(o>=r)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(r>>>=0)-(o>>>=0),a=(n>>>=0)-(t>>>=0),s=Math.min(i,a),l=this.slice(o,r),u=e.slice(t,n),d=0;dr)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");o||(o="utf8");for(var i=!1;;)switch(o){case"hex":return b(this,e,t,n);case"utf8":case"utf-8":return y(this,e,t,n);case"ascii":return E(this,e,t,n);case"latin1":case"binary":return S(this,e,t,n);case"base64":return w(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+o);o=(""+o).toLowerCase(),i=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function k(e,t,n){var o="";n=Math.min(e.length,n);for(var r=t;ro)&&(n=o);for(var r="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function F(e,t,n,o,r,i){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function N(e,t,n,o){t<0&&(t=65535+t+1);for(var r=0,i=Math.min(e.length-n,2);r>>8*(o?r:1-r)}function A(e,t,n,o){t<0&&(t=4294967295+t+1);for(var r=0,i=Math.min(e.length-n,4);r>>8*(o?r:3-r)&255}function M(e,t,n,o,r,i){if(n+o>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(e,t,n,o,i){return i||M(e,0,n,4),r.write(e,t,n,o,23,4),n+4}function L(e,t,n,o,i){return i||M(e,0,n,8),r.write(e,t,n,o,52,8),n+8}c.prototype.slice=function(e,t){var n,o=this.length;if((e=~~e)<0?(e+=o)<0&&(e=0):e>o&&(e=o),(t=void 0===t?o:~~t)<0?(t+=o)<0&&(t=0):t>o&&(t=o),t0&&(r*=256);)o+=this[e+--t]*r;return o},c.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},c.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var o=this[e],r=1,i=0;++i=(r*=128)&&(o-=Math.pow(2,8*t)),o},c.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var o=t,r=1,i=this[e+--o];o>0&&(r*=256);)i+=this[e+--o]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*t)),i},c.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),r.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),r.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),r.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),r.read(this,e,!1,52,8)},c.prototype.writeUIntLE=function(e,t,n,o){(e=+e,t|=0,n|=0,o)||F(this,e,t,n,Math.pow(2,8*n)-1,0);var r=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+r]=e/i&255;return t+n},c.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,1,255,0),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):A(this,e,t,!0),t+4},c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):A(this,e,t,!1),t+4},c.prototype.writeIntLE=function(e,t,n,o){if(e=+e,t|=0,!o){var r=Math.pow(2,8*n-1);F(this,e,t,n,r-1,-r)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},c.prototype.writeIntBE=function(e,t,n,o){if(e=+e,t|=0,!o){var r=Math.pow(2,8*n-1);F(this,e,t,n,r-1,-r)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,1,127,-128),c.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):N(this,e,t,!0),t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):N(this,e,t,!1),t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):A(this,e,t,!0),t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||F(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),c.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):A(this,e,t,!1),t+4},c.prototype.writeFloatLE=function(e,t,n){return P(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return P(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return L(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return L(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,o){if(n||(n=0),o||0===o||(o=this.length),t>=e.length&&(t=e.length),t||(t=0),o>0&&o=this.length)throw new RangeError("sourceStart out of bounds");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),e.length-t=0;--r)e[r+t]=this[r+n];else if(i<1e3||!c.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===o){(t-=3)>-1&&i.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&i.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function q(e){return o.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(U,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function G(e,t,n,o){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}}).call(this,n(24))},function(e,t,n){"use strict";e.exports=function(e,t,n,o,r,i,a,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,o,r,i,a,s],u=0;c=new Error("Invariant Violation: "+t.replace(/%s/g,(function(){return l[u++]})))}throw c.framesToPop=1,c}}},function(e,t,n){var o=n(142),r=n(89),i=n(298),a=n(193),s=n(173),c=function(e,t,n){var l,u,d,p=e&c.F,h=e&c.G,m=e&c.S,g=e&c.P,f=e&c.B,_=e&c.W,v=h?r:r[t]||(r[t]={}),b=v.prototype,y=h?o:m?o[t]:(o[t]||{}).prototype;for(l in h&&(n=t),n)(u=!p&&y&&void 0!==y[l])&&s(v,l)||(d=u?y[l]:n[l],v[l]=h&&"function"!=typeof y[l]?n[l]:f&&u?i(d,o):_&&y[l]==d?function(e){var t=function(t,n,o){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,o)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):g&&"function"==typeof d?i(Function.call,d):d,g&&((v.virtual||(v.virtual={}))[l]=d,e&c.R&&b&&!b[l]&&a(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){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){var o=n(194),r=n(644),i=n(299),a=Object.defineProperty;t.f=n(144)?Object.defineProperty:function(e,t,n){if(o(e),t=i(t,!0),o(n),r)try{return a(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,n){e.exports=!n(196)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){e.exports={default:n(913),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(643),i=(o=r)&&o.__esModule?o:{default:o};t.default=function(){function e(e,t){for(var n=0;n{const n=this._getOutgoingRoomKeyRequest(t);return n?(i.a.log("already have key request outstanding for "+"".concat(t.room_id," / ").concat(t.session_id,": ")+"not sending another"),n):(i.a.log("enqueueing key request for ".concat(t.room_id," / ")+t.session_id),this._outgoingRoomKeyRequests.push(e),e)})}getOutgoingRoomKeyRequest(e){return Promise.resolve(this._getOutgoingRoomKeyRequest(e))}_getOutgoingRoomKeyRequest(e){for(const t of this._outgoingRoomKeyRequests)if(a.b(t.requestBody,e))return t;return null}getOutgoingRoomKeyRequestByState(e){for(const t of this._outgoingRoomKeyRequests)for(const n of e)if(t.state===n)return Promise.resolve(t);return Promise.resolve(null)}getOutgoingRoomKeyRequestsByTarget(e,t,n){const o=[];for(const r of this._outgoingRoomKeyRequests)for(const i of n)r.state===i&&r.recipients.includes({userId:e,deviceId:t})&&o.push(r);return Promise.resolve(o)}updateOutgoingRoomKeyRequest(e,t,n){for(const o of this._outgoingRoomKeyRequests)if(o.requestId===e)return o.state!=t?(i.a.warn("Cannot update room key request from ".concat(t," ")+"as it was already updated to ".concat(o.state)),Promise.resolve(null)):(Object.assign(o,n),Promise.resolve(o));return Promise.resolve(null)}deleteOutgoingRoomKeyRequest(e,t){for(let n=0;n{Object.entries(n).forEach(([n,o])=>{t(function(e){for(var t=1;te.time-t.time)}async getEndToEndSessionProblem(e,t){const n=this._sessionProblems[e]||[];if(!n.length)return null;const o=n[n.length-1];for(const e of n)if(e.time>t)return Object.assign({},e,{fixed:o.fixed});return o.fixed?null:o}async filterOutNotifiedErrorDevices(e){const t=this._notifiedErrorDevices,n=[];for(const o of e){const{userId:e,deviceInfo:r}=o;e in t?r.deviceId in t[e]||(n.push(o),t[e][r.deviceId]=!0):(n.push(o),t[e]={[r.deviceId]:!0})}return n}getEndToEndInboundGroupSession(e,t,n,o){const r=e+"/"+t;o(this._inboundGroupSessions[r]||null,this._inboundGroupSessionsWithheld[r]||null)}getAllEndToEndInboundGroupSessions(e,t){for(const e of Object.keys(this._inboundGroupSessions))t({senderKey:e.substr(0,43),sessionId:e.substr(44),sessionData:this._inboundGroupSessions[e]});t(null)}addEndToEndInboundGroupSession(e,t,n,o){const r=e+"/"+t;void 0===this._inboundGroupSessions[r]&&(this._inboundGroupSessions[r]=n)}storeEndToEndInboundGroupSession(e,t,n,o){this._inboundGroupSessions[e+"/"+t]=n}storeEndToEndInboundGroupSessionWithheld(e,t,n,o){const r=e+"/"+t;this._inboundGroupSessionsWithheld[r]=n}getEndToEndDeviceData(e,t){t(this._deviceData)}storeEndToEndDeviceData(e,t){this._deviceData=e}storeEndToEndRoom(e,t,n){this._rooms[e]=t}getEndToEndRooms(e,t){t(this._rooms)}getSessionsNeedingBackup(e){const t=[];for(const n in this._sessionsNeedingBackup)if(this._inboundGroupSessions[n]&&(t.push({senderKey:n.substr(0,43),sessionId:n.substr(44),sessionData:this._inboundGroupSessions[n]}),e&&n.length>=e))break;return Promise.resolve(t)}countSessionsNeedingBackup(){return Promise.resolve(Object.keys(this._sessionsNeedingBackup).length)}unmarkSessionsNeedingBackup(e){for(const t of e){const e=t.senderKey+"/"+t.sessionId;delete this._sessionsNeedingBackup[e]}return Promise.resolve()}markSessionsNeedingBackup(e){for(const t of e){const e=t.senderKey+"/"+t.sessionId;this._sessionsNeedingBackup[e]=!0}return Promise.resolve()}doTxn(e,t,n){return Promise.resolve(n(null))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(10),r=n(28);function i(e){this.userId=e,this.presence="offline",this.presenceStatusMsg=null,this._unstable_statusMessage="",this.displayName=e,this.rawDisplayName=e,this.avatarUrl=null,this.lastActiveAgo=0,this.lastPresenceTs=0,this.currentlyActive=!1,this.events={presence:null,profile:null},this._updateModifiedTime()}o.o(i,r.EventEmitter),i.prototype.setPresenceEvent=function(e){if("m.presence"!==e.getType())return;const t=null===this.events.presence;this.events.presence=e;const n=[];(e.getContent().presence!==this.presence||t)&&n.push("User.presence"),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&n.push("User.avatarUrl"),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&n.push("User.displayName"),void 0!==e.getContent().currently_active&&e.getContent().currently_active!==this.currentlyActive&&n.push("User.currentlyActive"),this.presence=e.getContent().presence,n.push("User.lastPresenceTs"),e.getContent().status_msg&&(this.presenceStatusMsg=e.getContent().status_msg),e.getContent().displayname&&(this.displayName=e.getContent().displayname),e.getContent().avatar_url&&(this.avatarUrl=e.getContent().avatar_url),this.lastActiveAgo=e.getContent().last_active_ago,this.lastPresenceTs=Date.now(),this.currentlyActive=e.getContent().currently_active,this._updateModifiedTime();for(let t=0;t!a.includes(e)),c=a.filter(e=>!o.includes(e));if(s.length||c.length){if(r!==n)return Object(i.a)("%(senderName)s changed the main and alternative addresses for this room.",{senderName:t});if(c.length&&!s.length)return Object(i.a)("%(senderName)s added the alternative addresses %(addresses)s for this room.",{senderName:t,addresses:c.join(", "),count:c.length});if(s.length&&!c.length)return Object(i.a)("%(senderName)s removed the alternative addresses %(addresses)s for this room.",{senderName:t,addresses:s.join(", "),count:s.length});if(s.length&&c.length)return Object(i.a)("%(senderName)s changed the alternative addresses for this room.",{senderName:t})}else{if(r)return Object(i.a)("%(senderName)s set the main address for this room to %(address)s.",{senderName:t,address:e.getContent().alias});if(n)return Object(i.a)("%(senderName)s removed the main address for this room.",{senderName:t})}return Object(i.a)("%(senderName)s changed the addresses for this room.",{senderName:t})},"m.room.name":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender();return e.getContent().name&&0!==e.getContent().name.trim().length?e.getPrevContent().name?Object(i.a)("%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.",{senderDisplayName:t,oldRoomName:e.getPrevContent().name,newRoomName:e.getContent().name}):Object(i.a)("%(senderDisplayName)s changed the room name to %(roomName)s.",{senderDisplayName:t,roomName:e.getContent().name}):Object(i.a)("%(senderDisplayName)s removed the room name.",{senderDisplayName:t})},"m.room.topic":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender();return Object(i.a)('%(senderDisplayName)s changed the topic to "%(topic)s".',{senderDisplayName:t,topic:e.getContent().topic})},"m.room.member":function(e){const t=e.sender?e.sender.name:e.getSender(),n=e.target?e.target.name:e.getStateKey(),o=e.getPrevContent(),a=e.getContent(),s=r.a.getConferenceHandler(),l=a.reason?Object(i.a)("Reason")+": "+a.reason:"";switch(a.membership){case"invite":{const o=a.third_party_invite;return o?o.display_name?Object(i.a)("%(targetName)s accepted the invitation for %(displayName)s.",{targetName:n,displayName:o.display_name}):Object(i.a)("%(targetName)s accepted an invitation.",{targetName:n}):s&&s.isConferenceUser(e.getStateKey())?Object(i.a)("%(senderName)s requested a VoIP conference.",{senderName:t}):Object(i.a)("%(senderName)s invited %(targetName)s.",{senderName:t,targetName:n})}case"ban":return Object(i.a)("%(senderName)s banned %(targetName)s.",{senderName:t,targetName:n})+" "+l;case"join":return o&&"join"===o.membership?o.displayname&&a.displayname&&o.displayname!==a.displayname?Object(i.a)("%(oldDisplayName)s changed their display name to %(displayName)s.",{oldDisplayName:o.displayname,displayName:a.displayname}):!o.displayname&&a.displayname?Object(i.a)("%(senderName)s set their display name to %(displayName)s.",{senderName:e.getSender(),displayName:a.displayname}):o.displayname&&!a.displayname?Object(i.a)("%(senderName)s removed their display name (%(oldDisplayName)s).",{senderName:t,oldDisplayName:o.displayname}):o.avatar_url&&!a.avatar_url?Object(i.a)("%(senderName)s removed their profile picture.",{senderName:t}):o.avatar_url&&a.avatar_url&&o.avatar_url!==a.avatar_url?Object(i.a)("%(senderName)s changed their profile picture.",{senderName:t}):!o.avatar_url&&a.avatar_url?Object(i.a)("%(senderName)s set a profile picture.",{senderName:t}):c.b.getValue("showHiddenEventsInTimeline")?Object(i.a)("%(senderName)s made no change.",{senderName:t}):"":(e.target||console.warn("Join message has no target! -- "+e.getContent().state_key),s&&s.isConferenceUser(e.getStateKey())?Object(i.a)("VoIP conference started."):Object(i.a)("%(targetName)s joined the room.",{targetName:n}));case"leave":return e.getSender()===e.getStateKey()?s&&s.isConferenceUser(e.getStateKey())?Object(i.a)("VoIP conference finished."):"invite"===o.membership?Object(i.a)("%(targetName)s rejected the invitation.",{targetName:n}):Object(i.a)("%(targetName)s left the room.",{targetName:n}):"ban"===o.membership?Object(i.a)("%(senderName)s unbanned %(targetName)s.",{senderName:t,targetName:n}):"invite"===o.membership?Object(i.a)("%(senderName)s withdrew %(targetName)s's invitation.",{senderName:t,targetName:n})+" "+l:Object(i.a)("%(senderName)s kicked %(targetName)s.",{senderName:t,targetName:n})+" "+l}},"m.room.third_party_invite":function(e){const t=e.sender?e.sender.name:e.getSender();if(!Object(s.c)(e)){const n=e.getPrevContent().display_name||Object(i.a)("Someone");return Object(i.a)("%(senderName)s revoked the invitation for %(targetDisplayName)s to join the room.",{senderName:t,targetDisplayName:n})}return Object(i.a)("%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.",{senderName:t,targetDisplayName:e.getContent().display_name})},"m.room.history_visibility":function(e){const t=e.sender?e.sender.name:e.getSender();switch(e.getContent().history_visibility){case"invited":return Object(i.a)("%(senderName)s made future room history visible to all room members, from the point they are invited.",{senderName:t});case"joined":return Object(i.a)("%(senderName)s made future room history visible to all room members, from the point they joined.",{senderName:t});case"shared":return Object(i.a)("%(senderName)s made future room history visible to all room members.",{senderName:t});case"world_readable":return Object(i.a)("%(senderName)s made future room history visible to anyone.",{senderName:t});default:return Object(i.a)("%(senderName)s made future room history visible to unknown (%(visibility)s).",{senderName:t,visibility:e.getContent().history_visibility})}},"m.room.power_levels":function(e){const t=e.sender?e.sender.name:e.getSender();if(!(e.getPrevContent()&&e.getPrevContent().users&&e.getContent()&&e.getContent().users))return"";const n=e.getContent().users_default||0,o=[];Object.keys(e.getContent().users).forEach(e=>{-1===o.indexOf(e)&&o.push(e)}),Object.keys(e.getPrevContent().users).forEach(e=>{-1===o.indexOf(e)&&o.push(e)});const r=[];return o.forEach(t=>{const o=e.getPrevContent().users[t],s=e.getContent().users[t];s!==o&&r.push(Object(i.a)("%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s",{userId:t,fromPowerLevel:a.b(o,n),toPowerLevel:a.b(s,n)}))}),r.length?Object(i.a)("%(senderName)s changed the power level of %(powerLevelDiffText)s.",{senderName:t,powerLevelDiffText:r.join(", ")}):""},"m.room.pinned_events":function(e){const t=e.sender?e.sender.name:e.getSender();return Object(i.a)("%(senderName)s changed the pinned messages for the room.",{senderName:t})},"m.room.server_acl":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=e.getPrevContent(),o=[],r=e.getContent(),i={deny:Array.isArray(n.deny)?n.deny:[],allow:Array.isArray(n.allow)?n.allow:[],allow_ip_literals:!(!1===n.allow_ip_literals)};let a="";if(a=0===i.deny.length&&0===i.allow.length?"".concat(t," set server ACLs for this room: "):"".concat(t," changed the server ACLs for this room: "),Array.isArray(r.allow)||(r.allow=[]),0===r.allow.length)return a+"🎉 All servers are banned from participating! This room can no longer be used.";Array.isArray(r.deny)||(r.deny=[]);const s=r.deny.filter(e=>"string"==typeof e&&!i.deny.includes(e)),c=i.deny.filter(e=>"string"==typeof e&&!r.deny.includes(e)),l=r.allow.filter(e=>"string"==typeof e&&!i.allow.includes(e)),u=i.allow.filter(e=>"string"==typeof e&&!r.allow.includes(e));if(s.length>0&&o.push("Servers matching ".concat(s.join(", ")," are now banned.")),c.length>0&&o.push("Servers matching ".concat(c.join(", ")," were removed from the ban list.")),l.length>0&&o.push("Servers matching ".concat(l.join(", ")," are now allowed.")),u.length>0&&o.push("Servers matching ".concat(u.join(", ")," were removed from the allowed list.")),i.allow_ip_literals!==r.allow_ip_literals){const e=r.allow_ip_literals?"allowed":"banned";o.push("Participating from a server using an IP literal hostname is now ".concat(e,"."))}return a+o.join(" ")},"m.room.tombstone":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender();return Object(i.a)("%(senderDisplayName)s upgraded this room.",{senderDisplayName:t})},"m.room.join_rules":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender();switch(e.getContent().join_rule){case"public":return Object(i.a)("%(senderDisplayName)s made the room public to whoever knows the link.",{senderDisplayName:t});case"invite":return Object(i.a)("%(senderDisplayName)s made the room invite only.",{senderDisplayName:t});default:return Object(i.a)("%(senderDisplayName)s changed the join rule to %(rule)s",{senderDisplayName:t,rule:e.getContent().join_rule})}},"m.room.guest_access":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender();switch(e.getContent().guest_access){case"can_join":return Object(i.a)("%(senderDisplayName)s has allowed guests to join the room.",{senderDisplayName:t});case"forbidden":return Object(i.a)("%(senderDisplayName)s has prevented guests from joining the room.",{senderDisplayName:t});default:return Object(i.a)("%(senderDisplayName)s changed guest access to %(rule)s",{senderDisplayName:t,rule:e.getContent().guest_access})}},"m.room.related_groups":function(e){const t=e.sender&&e.sender.name?e.sender.name:e.getSender(),n=e.getContent().groups||[],o=e.getPrevContent().groups||[],r=n.filter(e=>!o.includes(e)),a=o.filter(e=>!n.includes(e));return r.length&&!a.length?Object(i.a)("%(senderDisplayName)s enabled flair for %(groups)s in this room.",{senderDisplayName:t,groups:r.join(", ")}):!r.length&&a.length?Object(i.a)("%(senderDisplayName)s disabled flair for %(groups)s in this room.",{senderDisplayName:t,groups:a.join(", ")}):r.length&&a.length?Object(i.a)("%(senderDisplayName)s enabled flair for %(newGroups)s and disabled flair for %(oldGroups)s in this room.",{senderDisplayName:t,newGroups:r.join(", "),oldGroups:a.join(", ")}):""},"im.vector.modular.widgets":function(e){const t=e.getSender(),{name:n,type:o,url:r}=e.getPrevContent(),{name:a,type:s,url:c}=e.getContent()||{};let l=a||n||s||o||"";return l&&l.length>0&&(l=l[0].toUpperCase()+l.slice(1)+" "),c?r?Object(i.a)("%(widgetName)s widget modified by %(senderName)s",{widgetName:l,senderName:t}):Object(i.a)("%(widgetName)s widget added by %(senderName)s",{widgetName:l,senderName:t}):Object(i.a)("%(widgetName)s widget removed by %(senderName)s",{widgetName:l,senderName:t})}};for(const e of l.a)p[e]=u;function h(e){const t=(e.isState()?p:d)[e.getType()];return t?t(e):""}},function(e,t,n){"use strict";(function(e){n.d(t,"d",(function(){return i})),n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return c}));class o{constructor(){this.logs=""}monkeyPatch(e){const t={log:"I",info:"I",warn:"W",error:"E"};Object.keys(t).forEach(n=>{const o=t[n],r=e[n].bind(e);e[n]=(...e)=>{this.log(o,...e),r(...e)}})}log(e,...t){const n=(new Date).toISOString();t=t.map(e=>{if(e instanceof Error)return e.message+(e.stack?"\n".concat(e.stack):"");if("object"!=typeof e)return e;try{return JSON.stringify(e)}catch(t){return JSON.stringify(e,(e,t)=>e&&"object"==typeof t?"":t)}});let o="".concat(n," ").concat(e," ").concat(t.join(" "),"\n");o=o.replace(/token=[a-zA-Z0-9-]+/gm,"token=xxxxx"),this.logs+=o}flush(e){if(e)return this.logs;const t=this.logs;return this.logs="",t}}class r{constructor(e,t){this.indexedDB=e,this.logger=t,this.id="instance-"+Math.random()+Date.now(),this.index=0,this.db=null,this.flushPromise=null,this.flushAgainPromise=null}connect(){const e=this.indexedDB.open("logs");return new Promise((t,n)=>{e.onsuccess=e=>{this.db=e.target.result,setInterval(this.flush.bind(this),3e4),t()},e.onerror=e=>{const t="Failed to open log database: "+e.target.error.name;console.error(t),n(new Error(t))},e.onupgradeneeded=e=>{const t=e.target.result,n=t.createObjectStore("logs",{keyPath:["id","index"]});n.createIndex("id","id",{unique:!1}),n.add(this._generateLogEntry(new Date+" ::: Log database was created.")),t.createObjectStore("logslastmod",{keyPath:"id"}).add(this._generateLastModifiedTime())}})}flush(){return this.flushPromise?(this.flushAgainPromise||(this.flushAgainPromise=this.flushPromise.then(()=>this.flush()).then(()=>{this.flushAgainPromise=null})),this.flushAgainPromise):(this.flushPromise=new Promise((e,t)=>{if(!this.db)return void t(new Error("No connected database"));const n=this.logger.flush();if(0===n.length)return void e();const o=this.db.transaction(["logs","logslastmod"],"readwrite"),r=o.objectStore("logs");o.oncomplete=t=>{e()},o.onerror=e=>{console.error("Failed to flush logs : ",e),t(new Error("Failed to write logs: "+e.target.errorCode))},r.add(this._generateLogEntry(n)),o.objectStore("logslastmod").put(this._generateLastModifiedTime())}).then(()=>{this.flushPromise=null}),this.flushPromise)}async consume(){const e=this.db;function t(t,n){const o=e.transaction("logs","readonly").objectStore("logs");return new Promise((e,r)=>{const i=o.index("id").openCursor(IDBKeyRange.only(t),"prev");let a="";i.onerror=e=>{r(new Error("Query failed: "+e.target.errorCode))},i.onsuccess=t=>{const o=t.target.result;o?(a=o.value.lines+a,a.length>=n?e(a):o.continue()):e(a)}})}const n=await function(e,t,n){const o=e.openCursor(t);return new Promise((e,t)=>{const r=[];o.onerror=e=>{t(new Error("Query failed: "+e.target.errorCode))},o.onsuccess=t=>{const o=t.target.result;o?(r.push(n(o)),o.continue()):e(r)}})}(e.transaction("logslastmod","readonly").objectStore("logslastmod"),void 0,e=>({id:e.value.id,ts:e.value.ts})).then(e=>e.sort((e,t)=>t.ts-e.ts).map(e=>e.id));let o=[];const r=[];let i=0;for(let e=0;e=1048576){o=n.slice(e+1);break}}return o.length>0&&(console.log("Removing logs: ",o),Promise.all(o.map(t=>function(t){return new Promise((n,o)=>{const r=e.transaction(["logs","logslastmod"],"readwrite"),i=r.objectStore("logs");i.index("id").openKeyCursor(IDBKeyRange.only(t)).onsuccess=e=>{const t=e.target.result;t&&(i.delete(t.primaryKey),t.continue())},r.oncomplete=()=>{n()},r.onerror=e=>{o(new Error("Failed to delete logs for "+"'".concat(t,"' : ").concat(e.target.errorCode)))},r.objectStore("logslastmod").delete(t)})}(t))).then(()=>{console.log("Removed ".concat(o.length," old logs."))},e=>{console.error(e)})),r}_generateLogEntry(e){return{id:this.id,lines:e,index:this.index++}}_generateLastModifiedTime(){return{id:this.id,ts:Date.now()}}}function i(){if(e.mx_rage_initPromise)return e.mx_rage_initPromise;let t;e.mx_rage_logger=new o,e.mx_rage_logger.monkeyPatch(window.console);try{t=window.indexedDB}catch(e){}return t?(e.mx_rage_store=new r(t,e.mx_rage_logger),e.mx_rage_initPromise=e.mx_rage_store.connect(),e.mx_rage_initPromise):(e.mx_rage_initPromise=Promise.resolve(),e.mx_rage_initPromise)}function a(){e.mx_rage_store&&e.mx_rage_store.flush()}async function s(){e.mx_rage_store&&await e.mx_rage_store.consume()}async function c(){if(!e.mx_rage_logger)throw new Error("No console logger, did you forget to call init()?");return e.mx_rage_store?(await e.mx_rage_store.flush(),await e.mx_rage_store.consume()):[{lines:e.mx_rage_logger.flush(!0),id:"-"}]}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return h})),n.d(t,"b",(function(){return m}));var o=n(5),r=n.n(o),i=n(26),a=n(28),s=n(8),c=n(79),l=n(45),u=n(86),d=n(19);const p=new Error("Verification timed out");class h extends Error{constructor(e){super(),this.startEvent=e}}class m extends a.EventEmitter{constructor(e,t,n,o,r,i){super(),this._channel=e,this._baseApis=t,this.userId=n,this.deviceId=o,this.startEvent=r,this.request=i,this.cancelled=!1,this._done=!1,this._promise=null,this._transactionTimeoutTimer=null}get initiatedByMe(){if(!this.startEvent)return!0;const e=this.startEvent.getSender(),t=this.startEvent.getContent();return e===this._baseApis.getUserId()&&t.from_device===this._baseApis.getDeviceId()}_resetTimer(){s.a.info("Refreshing/starting the verification transaction timeout timer"),null!==this._transactionTimeoutTimer&&clearTimeout(this._transactionTimeoutTimer),this._transactionTimeoutTimer=setTimeout(()=>{this._done||this.cancelled||(s.a.info("Triggering verification timeout"),this.cancel(p))},6e5)}_endTimer(){null!==this._transactionTimeoutTimer&&(clearTimeout(this._transactionTimeoutTimer),this._transactionTimeoutTimer=null)}_send(e,t){return this._channel.send(e,t)}_waitForEvent(e){return this._done?Promise.reject(new Error("Verification is already done")):(this._expectedEvent=e,new Promise((e,t)=>{this._resolveEvent=e,this._rejectEvent=t}))}canSwitchStartEvent(){return!1}switchStartEvent(e){if(this.canSwitchStartEvent(e))if(s.a.log("Verification Base: switching verification start event",{restartingFlow:!!this._rejectEvent}),this._rejectEvent){const t=this._rejectEvent;this._rejectEvent=void 0,t(new h(e))}else this.startEvent=e}handleEvent(e){if(!this._done)if(e.getType()===this._expectedEvent)"m.key.verification.done"!==this._expectedEvent&&(this._expectedEvent=void 0,this._rejectEvent=void 0,this._resetTimer(),this._resolveEvent(e));else if("m.key.verification.cancel"===e.getType()){const t=this._reject;if(this._reject=void 0,t){const n=e.getContent(),{reason:o,code:r}=n;t(new Error("Other side cancelled verification "+"because ".concat(o," (").concat(r,")")))}}else if(this._expectedEvent){const t=new Error("Unexpected message: expecting "+this._expectedEvent+" but got "+e.getType());if(this._expectedEvent=void 0,this._rejectEvent){const e=this._rejectEvent;this._rejectEvent=void 0,e(t)}this.cancel(t)}}done(){if(this._endTimer(),!this._done){if(this.request.onVerifierFinished(),this._resolve(),this._baseApis.getUserId()!==this.userId)return;return console.log("VerificationBase.done: Self-verification done; requesting keys"),new Promise((e,t)=>{const n=this._baseApis,o=n._crypto._crossSigningInfo,r=n._crypto._secretStorage,i=new u.a(o.userId,{getCrossSigningKey:async e=>{console.debug("VerificationBase.done: requesting secret",e,this.deviceId);const{promise:t}=r.request("m.cross_signing.".concat(e),[this.deviceId]),n=await t,o=Object(d.decodeBase64)(n);return Uint8Array.from(o)}},o._cacheCallbacks);i.keys=o.keys;const a=new Promise((e,t)=>{setTimeout(e,m.keyRequestTimeoutMs,new Error("Timeout"))});return Promise.race([Promise.all([i.getCrossSigningKey("self_signing"),i.getCrossSigningKey("user_signing")]),a]).then(e,t)}).catch(e=>{console.warn("VerificationBase: failure while requesting keys:",e)})}}cancel(e){if(this._endTimer(),!this._done){if(this.cancelled=!0,this.userId&&this.deviceId)if(e===p){const e=Object(l.e)();this._send(e.getType(),e.getContent())}else if(e instanceof i.b){if(e.getSender()!==this.userId){const t=e.getContent();"m.key.verification.cancel"===e.getType()?(t.code=t.code||"m.unknown",t.reason=t.reason||t.body||"Unknown reason",this._send("m.key.verification.cancel",t)):this._send("m.key.verification.cancel",{code:"m.unknown",reason:t.body||"Unknown reason"})}}else this._send("m.key.verification.cancel",{code:"m.unknown",reason:e.toString()});null!==this._promise?this._reject&&this._reject(e):this._promise=Promise.reject(e),this.emit("cancel",e)}}verify(){return this._promise||(this._promise=new Promise((e,t)=>{this._resolve=(...t)=>{this._done=!0,this._endTimer(),e(...t)},this._reject=(...e)=>{this._done=!0,this._endTimer(),t(...e)}}),this._doVerification&&!this._started&&(this._started=!0,this._resetTimer(),Promise.resolve(this._doVerification()).then(this.done.bind(this),this.cancel.bind(this)))),this._promise}async _verifyKeys(e,t,n){const o=[];for(const[r,i]of Object.entries(t)){const t=r.split(":",2)[1],a=await this._baseApis.getStoredDevice(e,t);if(a)await n(r,a,i),o.push(t);else{const a=this._baseApis._crypto._deviceList.getStoredCrossSigningForUser(e);a&&a.getId()===t?(await n(r,c.a.fromStorage({keys:{[r]:t}},t),i),o.push(t)):s.a.warn("verification: Could not find device ".concat(t," to verify"))}}if(!o.length)throw new Error("No devices could be verified");s.a.info("Verification completed! Marking devices verified: ",o);for(const t of o)await this._baseApis.setDeviceVerified(e,t)}}r()(m,"keyRequestTimeoutMs",6e4)},function(e,t,n){"use strict";(function(e,o){n.d(t,"b",(function(){return s})),n.d(t,"a",(function(){return c}));var r=n(346),i=n.n(r);const a=[139,1];function s(t){const n=new e(a.length+t.length+1);n.set(a,0),n.set(t,a.length);let o=0;for(let e=0;e{Object.keys(t[n]).map(t=>{e.setDeviceKnown(n,t,!0)})})}async function l(e,t){const n=(await t.getEncryptionTargetMembers()).map(e=>e.userId),o=await e.downloadKeys(n,!1),r={};return Object.keys(o).forEach(e=>{Object.keys(o[e]).map(t=>{const n=o[e][t];n.isUnverified()&&!n.isKnown()&&(void 0===r[e]&&(r[e]={}),r[e][t]=n)})}),r}function u(){i.a.dispatch({action:"focus_composer"})}function d(e,t){l(e,t).then(e=>{const n=r.a("dialogs.UnknownDeviceDialog");a.a.createTrackedDialog("Unknown Device Dialog","",n,{room:t,devices:e,sendAnywayLabel:Object(s.a)("Send anyway"),sendLabel:Object(s.a)("Send"),onSend:()=>{o.a.resendUnsentEvents(t)},onFinished:u},"mx_Dialog_unknownDevice")})}function p(e,t,n,o,i){l(e,t).then(e=>{const s=r.a("dialogs.UnknownDeviceDialog");a.a.createTrackedDialog("Unknown Device Dialog","",s,{room:t,devices:e,sendAnywayLabel:o,sendLabel:i,onSend:n},"mx_Dialog_unknownDevice")})}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var o=n(1);function r(e){return{undefined:Object(o.a)("Default"),0:Object(o.a)("Restricted"),[e]:Object(o.a)("Default"),50:Object(o.a)("Moderator"),100:Object(o.a)("Admin")}}function i(e,t){const n=r(t);return n[e]?n[e]:Object(o.a)("Custom (%(level)s)",{level:e})}},function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"b",(function(){return d})),n.d(t,"d",(function(){return y})),n.d(t,"c",(function(){return E}));var o=n(0),r=n(14),i=n.n(r),a=n(3),s=n(9),c=n(1),l=n(15);let u,d;Object(c.b)("Navigation"),Object(c.b)("Calls"),Object(c.b)("Composer"),Object(c.b)("Room List"),Object(c.b)("Autocomplete"),function(e){e.NAVIGATION="Navigation",e.CALLS="Calls",e.COMPOSER="Composer",e.ROOM_LIST="Room List",e.AUTOCOMPLETE="Autocomplete"}(u||(u={})),Object(c.b)("Alt"),Object(c.b)("Alt Gr"),Object(c.b)("Shift"),Object(c.b)("Super"),Object(c.b)("Ctrl"),function(e){e.ALT="Alt",e.ALT_GR="Alt Gr",e.SHIFT="Shift",e.SUPER="Super",e.COMMAND="Command",e.CONTROL="Ctrl"}(d||(d={}));const p=l.b?d.COMMAND:d.CONTROL,h={[u.COMPOSER]:[{keybinds:[{modifiers:[p],key:l.a.B}],description:Object(c.b)("Toggle Bold")},{keybinds:[{modifiers:[p],key:l.a.I}],description:Object(c.b)("Toggle Italics")},{keybinds:[{modifiers:[p],key:l.a.GREATER_THAN}],description:Object(c.b)("Toggle Quote")},{keybinds:[{modifiers:[d.SHIFT],key:l.a.ENTER}],description:Object(c.b)("New line")},{keybinds:[{key:l.a.ARROW_UP},{key:l.a.ARROW_DOWN}],description:Object(c.b)("Navigate recent messages to edit")},{keybinds:[{modifiers:[p],key:l.a.HOME},{modifiers:[p],key:l.a.END}],description:Object(c.b)("Jump to start/end of the composer")},{keybinds:[{modifiers:[d.CONTROL,d.ALT],key:l.a.ARROW_UP},{modifiers:[d.CONTROL,d.ALT],key:l.a.ARROW_DOWN}],description:Object(c.b)("Navigate composer history")}],[u.CALLS]:[{keybinds:[{modifiers:[p],key:l.a.D}],description:Object(c.b)("Toggle microphone mute")},{keybinds:[{modifiers:[p],key:l.a.E}],description:Object(c.b)("Toggle video on/off")}],[u.ROOM_LIST]:[{keybinds:[{modifiers:[p],key:l.a.K}],description:Object(c.b)("Jump to room search")},{keybinds:[{key:l.a.ARROW_UP},{key:l.a.ARROW_DOWN}],description:Object(c.b)("Navigate up/down in the room list")},{keybinds:[{key:l.a.ENTER}],description:Object(c.b)("Select room from the room list")},{keybinds:[{key:l.a.ARROW_LEFT}],description:Object(c.b)("Collapse room list section")},{keybinds:[{key:l.a.ARROW_RIGHT}],description:Object(c.b)("Expand room list section")},{keybinds:[{key:l.a.ESCAPE}],description:Object(c.b)("Clear room list filter field")}],[u.NAVIGATION]:[{keybinds:[{key:l.a.PAGE_UP},{key:l.a.PAGE_DOWN}],description:Object(c.b)("Scroll up/down in the timeline")},{keybinds:[{modifiers:[d.ALT,d.SHIFT],key:l.a.ARROW_UP},{modifiers:[d.ALT,d.SHIFT],key:l.a.ARROW_DOWN}],description:Object(c.b)("Previous/next unread room or DM")},{keybinds:[{modifiers:[d.ALT],key:l.a.ARROW_UP},{modifiers:[d.ALT],key:l.a.ARROW_DOWN}],description:Object(c.b)("Previous/next room or DM")},{keybinds:[{modifiers:[p],key:l.a.BACKTICK}],description:Object(c.b)("Toggle the top left menu")},{keybinds:[{key:l.a.ESCAPE}],description:Object(c.b)("Close dialog or context menu")},{keybinds:[{key:l.a.ENTER},{key:l.a.SPACE}],description:Object(c.b)("Activate selected button")},{keybinds:[{modifiers:[p],key:l.a.PERIOD}],description:Object(c.b)("Toggle right panel")},{keybinds:[{modifiers:[p],key:l.a.SLASH}],description:Object(c.b)("Toggle this dialog")}],[u.AUTOCOMPLETE]:[{keybinds:[{key:l.a.ARROW_UP},{key:l.a.ARROW_DOWN}],description:Object(c.b)("Move autocomplete selection up/down")},{keybinds:[{key:l.a.ESCAPE}],description:Object(c.b)("Cancel autocomplete")}]},m=[u.COMPOSER,u.CALLS,u.ROOM_LIST,u.AUTOCOMPLETE,u.NAVIGATION],g={[d.COMMAND]:"⌘"};l.b&&(g[d.ALT]="⌥");const f={[l.a.PAGE_UP]:Object(c.b)("Page Up"),[l.a.PAGE_DOWN]:Object(c.b)("Page Down"),[l.a.ESCAPE]:Object(c.b)("Esc"),[l.a.ENTER]:Object(c.b)("Enter"),[l.a.SPACE]:Object(c.b)("Space"),[l.a.HOME]:Object(c.b)("Home"),[l.a.END]:Object(c.b)("End")},_={[l.a.ARROW_UP]:"↑",[l.a.ARROW_DOWN]:"↓",[l.a.ARROW_LEFT]:"←",[l.a.ARROW_RIGHT]:"→"},v=({shortcut:e})=>{const t=i()({mx_KeyboardShortcutsDialog_inline:e.keybinds.every(e=>!e.modifiers||0===e.modifiers.length)});return o.createElement("div",{className:t},o.createElement("h5",null,Object(c.a)(e.description)),e.keybinds.map(e=>{let t=e.key;return f[e.key]?t=Object(c.a)(f[e.key]):_[e.key]&&(t=_[e.key]),o.createElement("div",{key:e.key},e.modifiers&&e.modifiers.map(e=>o.createElement(o.Fragment,{key:e},o.createElement("kbd",null,g[e]||Object(c.a)(e)),"+")),o.createElement("kbd",null,t))}))};let b=null;const y=()=>{if(b)return b.close(),void(b=null);const e=m.map(e=>{const t=h[e];return o.createElement("div",{className:"mx_KeyboardShortcutsDialog_category",key:e},o.createElement("h3",null,Object(c.a)(e)),o.createElement("div",null,t.map(e=>o.createElement(v,{key:e.description,shortcut:e}))))}),t=a.a("dialogs.InfoDialog");b=s.a.createTrackedDialog("Keyboard Shortcuts","",t,{className:"mx_KeyboardShortcutsDialog",title:Object(c.a)("Keyboard Shortcuts"),description:e,hasCloseButton:!0,onKeyDown:e=>{!e.ctrlKey||e.shiftKey||e.altKey||e.metaKey||e.key!==l.a.SLASH||(e.stopPropagation(),b.close())},onFinished:()=>{b=null}})},E=(e,t)=>{h[e].push(t)}},function(e,t,n){"use strict";n.d(t,"b",(function(){return o.a})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return c}));var o=n(205),r=n(209);class i extends r.a{notifyCollapsed(e){const t=this.resizer.config.onCollapsed;t&&t(e,this.id,this.domNode)}}class a extends o.a{static createItem(e,t,n){return new i(e,t,n)}constructor(e,t){super(e),this.toggleSize=t&&t.toggleSize,this.isCollapsed=!1}resize(e){const t=et.getAttribute("data-id")===e);if(t){const{distributor:e}=this._createSizerAndDistributor(t);return e}}isReverseResizeHandle(e){return e&&e.classList.contains(this.classNames.reverse)}isResizeHandle(e){return e&&e.classList.contains(this.classNames.handle)}_onMouseDown(e){const t=e.target&&e.target.closest(".".concat(this.classNames.handle));if(!t||t.parentElement!==this.container)return;e.preventDefault(),this.classNames.resizing&&this.container.classList.add(this.classNames.resizing);const{sizer:n,distributor:o}=this._createSizerAndDistributor(t);o.start();const r=e=>{const t=n.offsetFromEvent(e);o.resizeFromContainerOffset(t)},i=document.body,a=()=>{this.classNames.resizing&&this.container.classList.remove(this.classNames.resizing),o.finish(),i.removeEventListener("mouseup",a,!1),document.removeEventListener("mouseleave",a,!1),i.removeEventListener("mousemove",r,!1)};i.addEventListener("mouseup",a,!1),document.addEventListener("mouseleave",a,!1),i.addEventListener("mousemove",r,!1)}_createSizerAndDistributor(e){const t=e.classList.contains(this.classNames.vertical),n=this.isReverseResizeHandle(e),o=this.distributorCtor,r=o.createSizer(this.container,t,n),i=o.createItem(e,this,r);return{sizer:r,distributor:new o(i,this.config)}}_getResizeHandles(){return Array.from(this.container.children).filter(e=>this.isResizeHandle(e))}}},function(e,t,n){"use strict";function o(e,t){return{msgtype:"m.text",format:"org.matrix.custom.html",body:e,formatted_body:t}}function r(e,t){return{msgtype:"m.notice",format:"org.matrix.custom.html",body:e,formatted_body:t}}function i(e,t){return{msgtype:"m.emote",format:"org.matrix.custom.html",body:e,formatted_body:t}}function a(e){return{msgtype:"m.text",body:e}}function s(e){return{msgtype:"m.notice",body:e}}function c(e){return{msgtype:"m.emote",body:e}}n.r(t),n.d(t,"makeHtmlMessage",(function(){return o})),n.d(t,"makeHtmlNotice",(function(){return r})),n.d(t,"makeHtmlEmote",(function(){return i})),n.d(t,"makeTextMessage",(function(){return a})),n.d(t,"makeNotice",(function(){return s})),n.d(t,"makeEmoteMessage",(function(){return c}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));var o=n(99);const r="https://".concat("matrix.to");class i extends o.b{constructor(){super()}forEvent(e,t,n){return"".concat(r,"/#/").concat(e,"/").concat(t).concat(this.encodeServerCandidates(n))}forRoom(e,t){return"".concat(r,"/#/").concat(e).concat(this.encodeServerCandidates(t))}forUser(e){return"".concat(r,"/#/").concat(e)}forGroup(e){return"".concat(r,"/#/").concat(e)}forEntity(e){return"".concat(r,"/#/").concat(e)}isPermalinkHost(e){return"matrix.to"===e}encodeServerCandidates(e){return e&&0!==e.length?"?via=".concat(e.map(e=>encodeURIComponent(e)).join("&via=")):""}parsePermalink(e){if(!e||!e.startsWith(r))throw new Error("Does not appear to be a permalink");const t=e.substring("".concat(r,"/#/").length).split("/"),n=t[0];if("@"===n[0])return o.a.forUser(n);if("+"===n[0])return o.a.forGroup(n);if("#"===n[0]||"!"===n[0]){if(1===t.length){const[e,t=""]=n.split("?"),r=t.split(/&?via=/g).filter(e=>!!e);return o.a.forRoom(e,r)}const e=t.length>1?t.slice(1).join("/"):"",[r,i=""]=e.split("?"),a=i.split(/&?via=/g).filter(e=>!!e);return o.a.forEvent(n,r,a)}throw new Error("Unknown entity type in permalink")}}},function(e,t,n){"use strict";(function(e){var o=n(6),r=n(42),i=n(50),a=n(28),s=n.n(a),c=n(109),l=n(7);const u=/^(m\.(favourite|lowpriority|server_notice)|im\.vector\.fake\.(invite|recent|direct|archived))$/;function d(e,t){const n=Math.min(e.length,t.length);let o;for(let r=0;r=2?o:""}class p extends s.a{constructor(){super(),this._state={tags:{}},this._getUpdatedTags=Object(c.throttle)(this._getUpdatedTags,500,{leading:!0,trailing:!0}),this._roomListStoreToken=i.b.addListener(()=>{this._setState({tags:this._getUpdatedTags()})}),o.a.register(e=>this._onDispatch(e))}getTags(){return this._state.tags}_setState(e){this._state=Object.assign(this._state,e),this.emit("change")}addListener(e){return this.on("change",e),{remove:()=>{this.removeListener("change",e)}}}getSortedTags(){const e=i.b.getRoomLists(),t=Object.keys(this._state.tags).sort(),n=t.map((e,n)=>{const o=0===n,r=n===t.length-1,i=o?"":d(e,t[n-1]),a=r?"":d(e,t[n+1]);return i.length>a.length?i:a});return t.map((t,o)=>{const i=r.g(e[t]);let a;0!==i.count&&(a=i);const s=t.substr(n[o].length,1);return{name:t,avatarLetter:s,badge:a,selected:this._state.tags[t]}})}_onDispatch(e){switch(e.action){case"select_custom_room_tag":{const t=this._state.tags;if(t.hasOwnProperty(e.tag)){const n={};n[e.tag]=!t[e.tag];const o=Object.assign({},t,n);this._setState({tags:o})}}break;case"on_client_not_viable":case"on_logged_out":this._state={tags:{}},this._roomListStoreToken&&(this._roomListStoreToken.remove(),this._roomListStoreToken=null)}}_getUpdatedTags(){if(!l.b.isFeatureEnabled("feature_custom_tags"))return;const e=Object.keys(i.b.getRoomLists()).filter(e=>!e.match(u)).sort(),t=this._state&&this._state.tags;return e.reduce((e,n)=>(e[n]=t&&t[n]||!1,e),{})}}void 0===e.singletonCustomRoomTagStore&&(e.singletonCustomRoomTagStore=new p),t.a=e.singletonCustomRoomTagStore}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"c",(function(){return s})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return d}));var o=n(8),r=n(10),i=n(19),a=n(79);const s={},c={};class l{constructor(e){this._userId=e.userId,this._deviceId=e.deviceId,this._crypto=e.crypto,this._olmDevice=e.olmDevice,this._baseApis=e.baseApis,this._roomId=e.roomId}prepareToEncrypt(e){}onRoomMembership(e,t,n){}}class u{constructor(e){this._userId=e.userId,this._crypto=e.crypto,this._olmDevice=e.olmDevice,this._baseApis=e.baseApis,this._roomId=e.roomId}onRoomKeyEvent(e){}importRoomKey(e){}hasKeysForKeyRequest(e){return Promise.resolve(!1)}shareKeysWithDevice(e){throw new Error("shareKeysWithDevice not supported for this DecryptionAlgorithm")}async retryDecryptionFromSender(e){}}class d extends Error{constructor(e,t,n){super(t),this.code=e,this.name="DecryptionError",this.detailedString=function(e,t){let n=e.name+"[msg: "+e.message;t&&(n+=", "+Object.keys(t).map(e=>e+": "+t[e]).join(", "));return n+="]",n}(this,n)}}class p extends Error{constructor(e,t){super(e),this.name="UnknownDeviceError",this.devices=t}}function h(e,t,n){s[e]=t,c[e]=n}const m=a.a.DeviceVerification;function g(e){Object(r.v)(this,l,e),this._sessionPrepared=!1,this._prepPromise=null}function f(e){Object(r.v)(this,u,e)}r.o(g,l),g.prototype._ensureSession=function(e){if(this._prepPromise)return this._prepPromise;if(this._sessionPrepared)return Promise.resolve();const t=this;return this._prepPromise=t._crypto.downloadKeys(e).then((function(n){return t._crypto.ensureOlmSessionsForUsers(e)})).then((function(){t._sessionPrepared=!0})).finally((function(){t._prepPromise=null})),this._prepPromise},g.prototype.encryptMessage=async function(e,t,n){const o=await e.getEncryptionTargetMembers(),a=r.u(o,(function(e){return e.userId})),s=this;await this._ensureSession(a);const c={room_id:e.roomId,type:t,content:n},l={algorithm:i.OLM_ALGORITHM,sender_key:s._olmDevice.deviceCurve25519Key,ciphertext:{}},u=[];for(let e=0;el)},r.o(f,u),f.prototype.decryptEvent=async function(e){const t=e.getWireContent(),n=t.sender_key,o=t.ciphertext;if(!o)throw new d("OLM_MISSING_CIPHERTEXT","Missing ciphertext");if(!(this._olmDevice.deviceCurve25519Key in o))throw new d("OLM_NOT_INCLUDED_IN_RECIPIENTS","Not included in recipients");const r=o[this._olmDevice.deviceCurve25519Key];let i;try{i=await this._decryptMessage(n,r)}catch(e){throw new d("OLM_BAD_ENCRYPTED_MESSAGE","Bad Encrypted Message",{sender:n,err:e})}const a=JSON.parse(i);if(a.recipient!=this._userId)throw new d("OLM_BAD_RECIPIENT","Message was intented for "+a.recipient);if(a.recipient_keys.ed25519!=this._olmDevice.deviceEd25519Key)throw new d("OLM_BAD_RECIPIENT_KEY","Message not intended for this device",{intended:a.recipient_keys.ed25519,our_key:this._olmDevice.deviceEd25519Key});if(a.sender!=e.getSender())throw new d("OLM_FORWARDED_MESSAGE","Message forwarded from "+a.sender,{reported_sender:e.getSender()});if(a.room_id!==e.getRoomId())throw new d("OLM_BAD_ROOM","Message intended for room "+a.room_id,{reported_room:e.room_id});return{clearEvent:a,senderCurve25519Key:n,claimedEd25519Key:(a.keys||{}).ed25519||null}},f.prototype._decryptMessage=async function(e,t){const n=await this._olmDevice.getSessionIdsForDevice(e),r={};for(let i=0;i=e||n>=t)&&(o.a.log("Rotating megolm session after "+this.useCount+" messages, "+n+"ms"),!0)},v.prototype.markSharedWithDevice=function(e,t,n){this.sharedWithDevices[e]||(this.sharedWithDevices[e]={}),this.sharedWithDevices[e][t]=n},v.prototype.markNotifiedBlockedDevice=function(e,t){this.blockedDevicesNotified[e]||(this.blockedDevicesNotified[e]={}),this.blockedDevicesNotified[e][t]=!0},v.prototype.sharedWithTooManyDevices=function(e){for(const t in this.sharedWithDevices)if(this.sharedWithDevices.hasOwnProperty(t)){if(!e.hasOwnProperty(t))return o.a.log("Starting new megolm session because we shared with "+t),!0;for(const n in this.sharedWithDevices[t])if(this.sharedWithDevices[t].hasOwnProperty(n)&&!e[t].hasOwnProperty(n))return o.a.log("Starting new megolm session because we shared with "+t+":"+n),!0}},r.o(b,l),b.prototype._ensureOutboundSession=async function(e,t,n){let r;function a(){return r}const s=this._setupPromise.then(async a=>{r=a,r&&r.needsRotation(this._sessionRotationPeriodMsgs,this._sessionRotationPeriodMs)&&(o.a.log("Starting new megolm session because we need to rotate."),r=null),r&&r.sharedWithTooManyDevices(e)&&(r=null),r||(o.a.log("Starting new megolm session for room ".concat(this._roomId)),r=await this._prepareNewSession(),o.a.log("Started new megolm session ".concat(r.sessionId," ")+"for room ".concat(this._roomId)),this._outboundSessions[r.sessionId]=r);const s={};for(const[t,n]of Object.entries(e))for(const[e,o]of Object.entries(n)){o.getIdentityKey()!=this._olmDevice.deviceCurve25519Key&&(r.sharedWithDevices[t]&&void 0!==r.sharedWithDevices[t][e]||(s[t]=s[t]||[],s[t].push(o)))}const c=this._olmDevice.getOutboundGroupSessionKey(r.sessionId),l={type:"m.room_key",content:{algorithm:i.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:r.sessionId,session_key:c.key,chain_index:c.chain_index}},[u,d]=await i.getExistingOlmSessions(this._olmDevice,this._baseApis,s);await Promise.all([(async()=>{await this._shareKeyWithOlmSessions(r,c,l,d)})(),(async()=>{const e=[],t=Date.now(),o=[];await this._shareKeyWithDevices(r,c,l,u,e,n?1e4:2e3,o),!n&&Date.now()-t<1e4?(async()=>{const t={},n=new Set;for(const e of o)n.add(e);const i=[];for(const{userId:o,deviceInfo:r}of e){const e=o.slice(o.indexOf(":")+1);n.has(e)?(t[o]=t[o]||[],t[o].push(r)):i.push({userId:o,deviceInfo:r})}await this._shareKeyWithDevices(r,c,l,t,i),await this._notifyFailedOlmDevices(r,c,i)})():await this._notifyFailedOlmDevices(r,c,e)})(),(async()=>{const e={};for(const[n,o]of Object.entries(t))for(const[t,i]of Object.entries(o))r.blockedDevicesNotified[n]&&void 0!==r.blockedDevicesNotified[n][t]||(e[n]=e[n]||{},e[n][t]={device:i});await this._notifyBlockedDevices(r,e)})()])});return this._setupPromise=s.then(a,a),s.then(a)},b.prototype._prepareNewSession=async function(){const e=this._olmDevice.createOutboundGroupSession(),t=this._olmDevice.getOutboundGroupSessionKey(e);return await this._olmDevice.addInboundGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],e,t.key,{ed25519:this._olmDevice.deviceEd25519Key}),this._crypto.backupInfo&&this._crypto.backupGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],e,t.key).catch(e=>{o.a.log("Failed to back up megolm session",e)}),new v(e)},b.prototype._getDevicesWithoutSessions=function(e,t,n){n=n||[];for(const[o,r]of Object.entries(t)){const t=e[o];for(const e of r){const r=e.deviceId;t[r].sessionId||(n.push({userId:o,deviceInfo:e}),delete t[r])}}return n},b.prototype._splitDevices=function(e){let t=[];const n=[t];for(const[o,r]of Object.entries(e)){for(const e of Object.values(r))t.push({userId:o,deviceInfo:e.device});t.length>20&&(t=[],n.push(t))}return 0===t.length&&n.pop(),n},b.prototype._encryptAndSendKeysToDevices=function(e,t,n,o){const r={},a=[];for(let e=0;ethis._baseApis.sendToDevice("m.room.encrypted",r).then(()=>{for(const n of Object.keys(r))for(const o of Object.keys(r[n]))e.markSharedWithDevice(n,o,t)}))},b.prototype._sendBlockedNotificationsToDevices=async function(e,t,n){const o={};for(const e of t){const t=e.userId,r=e.deviceInfo,i=r.deviceInfo.deviceId,a=Object.assign({},n);a.code=r.code,a.reason=r.reason,"m.no_olm"===a.code&&(delete a.room_id,delete a.session_id),o[t]||(o[t]={}),o[t][i]=a}await this._baseApis.sendToDevice("org.matrix.room_key.withheld",o);for(const t of Object.keys(o))for(const n of Object.keys(o[t]))e.markNotifiedBlockedDevice(t,n)},b.prototype.reshareKeyWithDevice=async function(e,t,n,r){const a=this._outboundSessions[t];if(!a)return void o.a.debug("megolm session ".concat(t," not found: not re-sharing keys"));if(void 0===a.sharedWithDevices[n])return void o.a.debug("megolm session ".concat(t," never shared with user ").concat(n));const s=a.sharedWithDevices[n][r.deviceId];if(void 0===s)return void o.a.debug("megolm session ID "+t+" never shared with device "+n+":"+r.deviceId);const c=await this._olmDevice.getInboundGroupSessionKey(this._roomId,e,t,s);if(!c)return void o.a.warn("No inbound session key found for megolm ".concat(t,": not re-sharing keys"));await i.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,{[n]:[r]});const l={type:"m.forwarded_room_key",content:{algorithm:i.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:t,session_key:c.key,chain_index:c.chain_index,sender_key:e,sender_claimed_ed25519_key:c.sender_claimed_ed25519_key,forwarding_curve25519_key_chain:c.forwarding_curve25519_key_chain}},u={algorithm:i.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}};await i.encryptMessageForDevice(u.ciphertext,this._userId,this._deviceId,this._olmDevice,n,r,l),await this._baseApis.sendToDevice("m.room.encrypted",{[n]:{[r.deviceId]:u}}),o.a.debug("Re-shared key for megolm session ".concat(t," ")+"with ".concat(n,":").concat(r.deviceId))},b.prototype._shareKeyWithDevices=async function(e,t,n,o,r,a,s){const c=await i.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,o,a,s);this._getDevicesWithoutSessions(c,o,r),await this._shareKeyWithOlmSessions(e,t,n,c)},b.prototype._shareKeyWithOlmSessions=async function(e,t,n,r){const i=this._splitDevices(r);for(let r=0;r{const[t,n]=await this._getDevicesInRoom(e);this._crypto.getGlobalErrorOnUnknownDevices()&&this._removeUnknownDevices(t),await this._ensureOutboundSession(t,n,!0),delete this.encryptionPreparation})())},b.prototype.encryptMessage=async function(e,t,n){if(o.a.log("Starting to encrypt event for ".concat(this._roomId)),this.encryptionPreparation)try{await this.encryptionPreparation}catch(e){}const[r,a]=await this._getDevicesInRoom(e);this._crypto.getGlobalErrorOnUnknownDevices()&&this._checkForUnknownDevices(r);const s=await this._ensureOutboundSession(r,a),c={room_id:this._roomId,type:t,content:n},l=this._olmDevice.encryptGroupMessage(s.sessionId,JSON.stringify(c)),u={algorithm:i.MEGOLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:l,session_id:s.sessionId,device_id:this._deviceId};return s.useCount++,u},b.prototype.forceDiscardSession=function(){this._setupPromise=this._setupPromise.then(()=>null)},b.prototype._checkForUnknownDevices=function(e){const t={};if(Object.keys(e).forEach(n=>{Object.keys(e[n]).forEach(o=>{const r=e[n][o];r.isUnverified()&&!r.isKnown()&&(t[n]||(t[n]={}),t[n][o]=r)})}),Object.keys(t).length)throw new p("This room contains unknown devices which have not been verified. We strongly recommend you verify them before continuing.",t)},b.prototype._removeUnknownDevices=function(e){for(const[t,n]of Object.entries(e)){for(const[e,t]of Object.entries(n))t.isUnverified()&&!t.isKnown()&&delete n[e];0===Object.keys(n).length&&delete e[t]}},b.prototype._getDevicesInRoom=async function(e){const t=await e.getEncryptionTargetMembers(),n=r.u(t,(function(e){return e.userId}));let o=this._crypto.getGlobalBlacklistUnverifiedDevices();"boolean"==typeof e.getBlacklistUnverifiedDevices()&&(o=e.getBlacklistUnverifiedDevices());const i=await this._crypto.downloadKeys(n,!1),a={};for(const e in i){if(!i.hasOwnProperty(e))continue;const t=i[e];for(const n in t){if(!t.hasOwnProperty(n))continue;const r=this._crypto.checkDeviceTrust(e,n);if(t[n].isBlocked()||!r.isVerified()&&o){a[e]||(a[e]={});const o=t[n].isBlocked()?{code:"m.blacklisted",reason:_.b["m.blacklisted"]}:{code:"m.unverified",reason:_.b["m.unverified"]};o.deviceInfo=t[n],a[e][n]=o,delete t[n]}}}return[i,a]},r.o(y,u);const E={no_olm:"The sender was unable to establish a secure channel.",unknown:"The secure channel with the sender was corrupted."};y.prototype.decryptEvent=async function(e){const t=e.getWireContent();if(!t.sender_key||!t.session_id||!t.ciphertext)throw new d("MEGOLM_MISSING_FIELDS","Missing fields in input");let n;this._addEventToPendingList(e);try{n=await this._olmDevice.decryptGroupMessage(e.getRoomId(),t.sender_key,t.session_id,t.ciphertext,e.getId(),e.getTs())}catch(n){if("DecryptionError"===n.name)throw n;let o="OLM_DECRYPT_GROUP_MESSAGE_ERROR";throw n&&"OLM.UNKNOWN_MESSAGE_INDEX"===n.message&&(this._requestKeysForEvent(e),o="OLM_UNKNOWN_MESSAGE_INDEX"),new d(o,n?n.toString():"Unknown Error: Error is undefined",{session:t.sender_key+"|"+t.session_id})}if(null===n){this._requestKeysForEvent(e);const n=await this._olmDevice.sessionMayHaveProblems(t.sender_key,e.getTs()-12e4);if(n){let e=E[n.type]||E.unknown;throw n.fixed&&(e+=" Trying to create a new secure channel and re-requesting the keys."),new d("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",e,{session:t.sender_key+"|"+t.session_id})}throw new d("MEGOLM_UNKNOWN_INBOUND_SESSION_ID","The sender's device has not sent us the keys for this message.",{session:t.sender_key+"|"+t.session_id})}this._removeEventFromPendingList(e);const o=JSON.parse(n.result);if(o.room_id!==e.getRoomId())throw new d("MEGOLM_BAD_ROOM","Message intended for room "+o.room_id);return{clearEvent:o,senderCurve25519Key:n.senderKey,claimedEd25519Key:n.keysClaimed.ed25519,forwardingCurve25519KeyChain:n.forwardingCurve25519KeyChain}},y.prototype._requestKeysForEvent=function(e){const t=e.getWireContent(),n=e.getKeyRequestRecipients(this._userId);this._crypto.requestRoomKey({room_id:e.getRoomId(),algorithm:t.algorithm,sender_key:t.sender_key,session_id:t.session_id},n)},y.prototype._addEventToPendingList=function(e){const t=e.getWireContent(),n=t.sender_key,o=t.session_id;this._pendingEvents[n]||(this._pendingEvents[n]=new Map);const r=this._pendingEvents[n];r.has(o)||r.set(o,new Set),r.get(o).add(e)},y.prototype._removeEventFromPendingList=function(e){const t=e.getWireContent(),n=t.sender_key,o=t.session_id,r=this._pendingEvents[n],i=r&&r.get(o);i&&(i.delete(e),0===i.size&&r.delete(n),0===r.size&&delete this._pendingEvents[n])},y.prototype.onRoomKeyEvent=function(e){const t=e.getContent(),n=t.session_id;let i,a=e.getSenderKey(),s=[],c=!1;if(t.room_id&&n&&t.session_key){if(a){if("m.forwarded_room_key"==e.getType()){if(c=!0,s=t.forwarding_curve25519_key_chain,r.p(s)||(s=[]),s=s.slice(),s.push(a),a=t.sender_key,!a)return void o.a.error("forwarded_room_key event is missing sender_key field");const e=t.sender_claimed_ed25519_key;if(!e)return void o.a.error("forwarded_room_key_event is missing sender_claimed_ed25519_key field");i={ed25519:e}}else i=e.getKeysClaimed();return o.a.log("Received and adding key for megolm session ".concat(a,"|").concat(n)),this._olmDevice.addInboundGroupSession(t.room_id,a,s,n,t.session_key,i,c).then(()=>{this._retryDecryption(a,n).then(e=>{e&&this._crypto.cancelRoomKeyRequest({algorithm:t.algorithm,room_id:t.room_id,session_id:t.session_id,sender_key:a})})}).then(()=>{this._crypto.backupInfo&&this._crypto.backupGroupSession(t.room_id,a,s,t.session_id,t.session_key,i,c).catch(e=>{o.a.log("Failed to back up megolm session",e)})}).catch(e=>{o.a.error("Error handling m.room_key_event: ".concat(e))})}o.a.error("key event has no sender key (not encrypted?)")}else o.a.error("key event is missing fields")},y.prototype.onRoomKeyWithheldEvent=async function(e){const t=e.getContent(),n=t.sender_key;if("m.no_olm"===t.code){const r=e.getSender();if(o.a.warn("".concat(r,":").concat(n," was unable to establish an olm session with us")),await this._olmDevice.getSessionIdForDevice(n))return o.a.debug("New session already created. Not creating a new one."),await this._olmDevice.recordSessionProblem(n,"no_olm",!0),void this.retryDecryptionFromSender(n);let a=this._crypto._deviceList.getDeviceByIdentityKey(t.algorithm,n);if(!a&&(await this._crypto.downloadKeys([r],!1),a=this._crypto._deviceList.getDeviceByIdentityKey(t.algorithm,n),!a))return o.a.info("Couldn't find device for identity key "+n+": not establishing session"),await this._olmDevice.recordSessionProblem(n,"no_olm",!1),void this.retryDecryptionFromSender(n);await i.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,{[r]:[a]},!1);const s={algorithm:i.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}};await i.encryptMessageForDevice(s.ciphertext,this._userId,this._deviceId,this._olmDevice,r,a,{type:"m.dummy"}),await this._olmDevice.recordSessionProblem(n,"no_olm",!0),this.retryDecryptionFromSender(n),await this._baseApis.sendToDevice("m.room.encrypted",{[r]:{[a.deviceId]:s}})}else await this._olmDevice.addInboundGroupSessionWithheld(t.room_id,n,t.session_id,t.code,t.reason)},y.prototype.hasKeysForKeyRequest=function(e){const t=e.requestBody;return this._olmDevice.hasInboundSessionKeys(t.room_id,t.sender_key,t.session_id)},y.prototype.shareKeysWithDevice=function(e){const t=e.userId,n=e.deviceId,r=this._crypto.getStoredDevice(t,n),a=e.requestBody;this.olmlib.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,{[t]:[r]}).then(e=>e[t][n].sessionId?(o.a.log("sharing keys for session "+a.sender_key+"|"+a.session_id+" with device "+t+":"+n),this._buildKeyForwardingMessage(a.room_id,a.sender_key,a.session_id)):null).then(e=>{const o={algorithm:i.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}};return this.olmlib.encryptMessageForDevice(o.ciphertext,this._userId,this._deviceId,this._olmDevice,t,r,e).then(()=>{const e={[t]:{[n]:o}};return this._baseApis.sendToDevice("m.room.encrypted",e)})})},y.prototype._buildKeyForwardingMessage=async function(e,t,n){const o=await this._olmDevice.getInboundGroupSessionKey(e,t,n);return{type:"m.forwarded_room_key",content:{algorithm:i.MEGOLM_ALGORITHM,room_id:e,sender_key:t,sender_claimed_ed25519_key:o.sender_claimed_ed25519_key,session_id:n,session_key:o.key,chain_index:o.chain_index,forwarding_curve25519_key_chain:o.forwarding_curve25519_key_chain}}},y.prototype.importRoomKey=function(e){return this._olmDevice.addInboundGroupSession(e.room_id,e.sender_key,e.forwarding_curve25519_key_chain,e.session_id,e.session_key,e.sender_claimed_keys,!0).then(()=>{this._crypto.backupInfo&&this._crypto.backupGroupSession(e.room_id,e.sender_key,e.forwarding_curve25519_key_chain,e.session_id,e.session_key,e.sender_claimed_keys,!0).catch(e=>{o.a.log("Failed to back up megolm session",e)}),this._retryDecryption(e.sender_key,e.session_id)})},y.prototype._retryDecryption=async function(e,t){const n=this._pendingEvents[e];if(!n)return!0;const o=n.get(t);return!o||(o.delete(t),0===o.size&&this._pendingEvents[e],await Promise.all([...o].map(async e=>{try{await e.attemptDecryption(this._crypto)}catch(e){}})),!(this._pendingEvents[e]||{})[t])},y.prototype.retryDecryptionFromSender=async function(e){const t=this._pendingEvents[e];return!t||(delete this._pendingEvents[e],await Promise.all([...t].map(async([e,t])=>{await Promise.all([...t].map(async e=>{try{await e.attemptDecryption(this._crypto)}catch(e){}}))})),!this._pendingEvents[e])},h(i.MEGOLM_ALGORITHM,b,y)},function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return l}));var o=n(8);let r,i=0;const a=[];let s=Date.now;function c(e,t){(t=t||0)<0&&(t=0);const n=Array.prototype.slice.call(arguments,2),o=s()+t,r=i++,c={runAt:o,func:e,params:n,key:r},l=p(a,(function(e){return e.runAt-o}));return a.splice(l,0,c),u(),r}function l(e){if(0===a.length)return;let t;for(t=0;tn)break;t=a.shift(),t.key,r.push(t)}u();for(let n=0;n>1;t(e[r])>0?o=r:n=r+1}return n}}).call(this,n(24))},function(e,t,n){var o=n(812),r=n(817);e.exports=function(e,t){var n=r(e,t);return o(n)?n:void 0}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(955),i=(o=r)&&o.__esModule?o:{default:o};t.default=i.default||function(e){for(var t=1;t40)throw new Error('"version" should be in range from 1 to 40');return 4*e+17},t.getSymbolTotalCodewords=function(e){return o[e]},t.getBCHDigit=function(e){for(var t=0;0!==e;)t++,e>>>=1;return t},t.setToSJISFunction=function(e){if("function"!=typeof e)throw new Error('"toSJISFunc" is not a valid function.');n=e},t.isKanjiModeEnabled=function(){return void 0!==n},t.toSJIS=function(e){return n(e)}},function(e,t,n){var o=n(687),r=n(688);t.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},t.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},t.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},t.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},t.MIXED={bit:-1},t.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!o.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},t.getBestModeForData=function(e){return r.testNumeric(e)?t.NUMERIC:r.testAlphanumeric(e)?t.ALPHANUMERIC:r.testKanji(e)?t.KANJI:t.BYTE},t.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")},t.isValid=function(e){return e&&e.bit&&e.ccBits},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw new Error("Param is not a string");switch(e.toLowerCase()){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw new Error("Unknown mode: "+e)}}(e)}catch(e){return n}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(8),r=n(10);class i{constructor(e){(e=e||{}).maxTimelineEntries=e.maxTimelineEntries||50,this.opts=e,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}accumulate(e){this._accumulateRooms(e),this._accumulateGroups(e),this._accumulateAccountData(e),this.nextBatch=e.next_batch}_accumulateAccountData(e){e.account_data&&e.account_data.events&&e.account_data.events.forEach(e=>{this.accountData[e.type]=e})}_accumulateRooms(e){e.rooms&&(e.rooms.invite&&Object.keys(e.rooms.invite).forEach(t=>{this._accumulateRoom(t,"invite",e.rooms.invite[t])}),e.rooms.join&&Object.keys(e.rooms.join).forEach(t=>{this._accumulateRoom(t,"join",e.rooms.join[t])}),e.rooms.leave&&Object.keys(e.rooms.leave).forEach(t=>{this._accumulateRoom(t,"leave",e.rooms.leave[t])}))}_accumulateRoom(e,t,n){switch(t){case"invite":this._accumulateInviteState(e,n);break;case"join":this.inviteRooms[e]&&delete this.inviteRooms[e],this._accumulateJoinState(e,n);break;case"leave":this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:o.a.error("Unknown cateogory: ",t)}}_accumulateInviteState(e,t){if(!t.invite_state||!t.invite_state.events)return;if(!this.inviteRooms[e])return void(this.inviteRooms[e]={invite_state:t.invite_state});const n=this.inviteRooms[e];t.invite_state.events.forEach(e=>{let t=!1;for(let o=0;o{n._accountData[e.type]=e}),t.unread_notifications&&(n._unreadNotifications=t.unread_notifications),t.summary){const e="m.heroes",o="m.invited_member_count",r="m.joined_member_count",i=n._summary,a=t.summary;i[e]=a[e]||i[e],i[r]=a[r]||i[r],i[o]=a[o]||i[o]}if(t.ephemeral&&t.ephemeral.events&&t.ephemeral.events.forEach(e=>{"m.receipt"===e.type&&e.content&&Object.keys(e.content).forEach(t=>{e.content[t]["m.read"]&&Object.keys(e.content[t]["m.read"]).forEach(o=>{n._readReceipts[o]={data:e.content[t]["m.read"][o],eventId:t}})})}),t.timeline&&t.timeline.limited&&(n._timeline=[]),t.state&&t.state.events&&t.state.events.forEach(e=>{a(n._currentState,e)}),t.timeline&&t.timeline.events&&t.timeline.events.forEach((e,o)=>{a(n._currentState,e),n._timeline.push({event:e,token:0===o?t.timeline.prev_batch:null})}),n._timeline.length>this.opts.maxTimelineEntries){for(let e=n._timeline.length-this.opts.maxTimelineEntries;e{this._accumulateGroup(t,"invite",e.groups.invite[t])}),e.groups.join&&Object.keys(e.groups.join).forEach(t=>{this._accumulateGroup(t,"join",e.groups.join[t])}),e.groups.leave&&Object.keys(e.groups.leave).forEach(t=>{this._accumulateGroup(t,"leave",e.groups.leave[t])}))}_accumulateGroup(e,t,n){for(const t of["invite","join","leave"])delete this.groups[t][e];this.groups[t][e]=n}getJSON(){const e={join:{},invite:{},leave:{}};Object.keys(this.inviteRooms).forEach(t=>{e.invite[t]=this.inviteRooms[t]}),Object.keys(this.joinRooms).forEach(t=>{const n=this.joinRooms[t],o={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:n._unreadNotifications,summary:n._summary};Object.keys(n._accountData).forEach(e=>{o.account_data.events.push(n._accountData[e])});const i={type:"m.receipt",room_id:t,content:{}};Object.keys(n._readReceipts).forEach(e=>{const t=n._readReceipts[e];i.content[t.eventId]||(i.content[t.eventId]={"m.read":{}}),i.content[t.eventId]["m.read"][e]=t.data}),Object.keys(i.content).length>0&&o.ephemeral.events.push(i),n._timeline.forEach(e=>{if(!o.timeline.prev_batch){if(!e.token)return;o.timeline.prev_batch=e.token}o.timeline.events.push(e.event)});const s=Object.create(null);for(let e=o.timeline.events.length-1;e>=0;e--){const t=o.timeline.events[e];if(null===t.state_key||void 0===t.state_key)continue;const n=Object(r.c)(t);n.unsigned&&(n.unsigned.prev_content&&(n.content=n.unsigned.prev_content),n.unsigned.prev_sender&&(n.sender=n.unsigned.prev_sender)),a(s,n)}Object.keys(n._currentState).forEach(e=>{Object.keys(n._currentState[e]).forEach(t=>{let r=n._currentState[e][t];s[e]&&s[e][t]&&(r=s[e][t]),o.state.events.push(r)})}),e.join[t]=o});const t=[];return Object.keys(this.accountData).forEach(e=>{t.push(this.accountData[e])}),{nextBatch:this.nextBatch,roomsData:e,groupsData:this.groups,accountData:t}}getNextBatchToken(){return this.nextBatch}}function a(e,t){null!==t.state_key&&void 0!==t.state_key&&t.type&&(e[t.type]||(e[t.type]=Object.create(null)),e[t.type][t.state_key]=t)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var o=n(28),r=n(55),i=n(10);function a(e,t){this.roomId=e,this.userId=t,this.typing=!1,this.name=t,this.rawDisplayName=t,this.powerLevel=0,this.powerLevelNorm=0,this.user=null,this.membership=null,this.events={member:null},this._isOutOfBand=!1,this._updateModifiedTime()}i.o(a,o.EventEmitter),a.prototype.markOutOfBand=function(){this._isOutOfBand=!0},a.prototype.isOutOfBand=function(){return this._isOutOfBand},a.prototype.setMembershipEvent=function(e,t){if("m.room.member"!==e.getType())return;this._isOutOfBand=!1,this.events.member=e;const n=this.membership;this.membership=e.getDirectionalContent().membership;const o=this.name;this.name=function(e,t,n){if(!t||t===e)return e;if(!i.z(t))return e;if(!n)return t;let o=/@.+:.+/.test(t);o||(o=/[\u200E\u200F\u202A-\u202F]/.test(t));if(!o){const r=n.getUserIdsWithDisplayName(t);o=r.some(t=>t!==e)}if(o)return t+" ("+e+")";return t}(this.userId,e.getDirectionalContent().displayname,t),this.rawDisplayName=e.getDirectionalContent().displayname||this.userId,n!==this.membership&&(this._updateModifiedTime(),this.emit("RoomMember.membership",e,this,n)),o!==this.name&&(this._updateModifiedTime(),this.emit("RoomMember.name",e,this,o))},a.prototype.setPowerLevelEvent=function(e){if("m.room.power_levels"!==e.getType())return;const t=e.getDirectionalContent();let n=t.users_default||0;i.l(i.B(t.users),(function(e){n=Math.max(n,e)}));const o=this.powerLevel,r=this.powerLevelNorm;t.users&&void 0!==t.users[this.userId]?this.powerLevel=t.users[this.userId]:void 0!==t.users_default?this.powerLevel=t.users_default:this.powerLevel=0,this.powerLevelNorm=0,n>0&&(this.powerLevelNorm=100*this.powerLevel/n),o===this.powerLevel&&r===this.powerLevelNorm||(this._updateModifiedTime(),this.emit("RoomMember.powerLevel",e,this))},a.prototype.setTypingEvent=function(e){if("m.typing"!==e.getType())return;const t=this.typing;this.typing=!1;const n=e.getContent().user_ids;i.p(n)&&(-1!==n.indexOf(this.userId)&&(this.typing=!0),t!==this.typing&&(this._updateModifiedTime(),this.emit("RoomMember.typing",e,this)))},a.prototype._updateModifiedTime=function(){this._modified=Date.now()},a.prototype.getLastModifiedTime=function(){return this._modified},a.prototype.isKicked=function(){return"leave"===this.membership&&this.events.member.getSender()!==this.events.member.getStateKey()},a.prototype.getDMInviter=function(){if(this.events.member){const e=this.events.member;let t=e.getContent(),n=e.getSender();if("join"===t.membership&&(t=e.getPrevContent(),n=e.getUnsigned().prev_sender),"invite"===t.membership&&t.is_direct)return n}},a.prototype.getAvatarUrl=function(e,t,n,o,i,a){void 0===i&&(i=!0);const s=this.getMxcAvatarUrl();if(!s&&!i)return null;const c=Object(r.a)(e,s,t,n,o,a);return c||(i?Object(r.b)(e,this.userId,t,n):null)},a.prototype.getMxcAvatarUrl=function(){return this.events.member?this.events.member.getDirectionalContent().avatar_url:this.user?this.user.avatarUrl:null}},function(e,t,n){"use strict";function o(e,t){return new Promise((n,o)=>{let r=!0;const i=e.open(t);i.onupgradeneeded=()=>{r=!1},i.onblocked=()=>o(),i.onsuccess=()=>{i.result.close(),r||e.deleteDatabase(t),n(r)},i.onerror=e=>o(e.target.error)})}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return p}));var o=n(28),r=n(30),i=n(26),a=n(10),s=n(8),c=n(5),l=n.n(c);class u extends o.EventEmitter{constructor(e,t,n){super(),l()(this,"_onEventStatus",(e,t)=>{e.isSending()?t===i.a.CANCELLED&&(e.removeListener("Event.status",this._onEventStatus),this._removeEvent(e)):e.removeListener("Event.status",this._onEventStatus)}),l()(this,"_onBeforeRedaction",e=>{this._relations.has(e)&&(this._relations.delete(e),"m.annotation"===this.relationType?this._removeAnnotationFromAggregation(e):"m.replace"===this.relationType&&this._targetEvent&&this._targetEvent.makeReplaced(this.getLastReplacement()),e.removeListener("Event.beforeRedaction",this._onBeforeRedaction),this.emit("Relations.redaction",e))}),this.relationType=e,this.eventType=t,this._relations=new Set,this._annotationsByKey={},this._annotationsBySender={},this._sortedAnnotationsByKey=[],this._targetEvent=null}addEvent(e){if(this._relations.has(e))return;const t=e.getRelation();if(!t)return void console.error("Event must have relation info");const n=t.rel_type,o=e.getType();this.relationType===n&&this.eventType===o?(e.isSending()&&e.on("Event.status",this._onEventStatus),this._relations.add(e),"m.annotation"===this.relationType?this._addAnnotationToAggregation(e):"m.replace"===this.relationType&&this._targetEvent&&this._targetEvent.makeReplaced(this.getLastReplacement()),e.on("Event.beforeRedaction",this._onBeforeRedaction),this.emit("Relations.add",e)):console.error("Event relation info doesn't match this container")}_removeEvent(e){if(!this._relations.has(e))return;const t=e.getRelation();if(!t)return void console.error("Event must have relation info");const n=t.rel_type,o=e.getType();this.relationType===n&&this.eventType===o?(this._relations.delete(e),"m.annotation"===this.relationType?this._removeAnnotationFromAggregation(e):"m.replace"===this.relationType&&this._targetEvent&&this._targetEvent.makeReplaced(this.getLastReplacement()),this.emit("Relations.remove",e)):console.error("Event relation info doesn't match this container")}getRelations(){return[...this._relations]}_addAnnotationToAggregation(e){const{key:t}=e.getRelation();if(!t)return;let n=this._annotationsByKey[t];n||(n=this._annotationsByKey[t]=new Set,this._sortedAnnotationsByKey.push([t,n])),n.add(e),this._sortedAnnotationsByKey.sort((e,t)=>{const n=e[1];return t[1].size-n.size});const o=e.getSender();let r=this._annotationsBySender[o];r||(r=this._annotationsBySender[o]=new Set),r.add(e)}_removeAnnotationFromAggregation(e){const{key:t}=e.getRelation();if(!t)return;const n=this._annotationsByKey[t];n&&(n.delete(e),this._sortedAnnotationsByKey.sort((e,t)=>{const n=e[1];return t[1].size-n.size}));const o=e.getSender(),r=this._annotationsBySender[o];r&&r.delete(e)}getSortedAnnotationsByKey(){return"m.annotation"!==this.relationType?null:this._sortedAnnotationsByKey}getAnnotationsBySender(){return"m.annotation"!==this.relationType?null:this._annotationsBySender}getLastReplacement(){if("m.replace"!==this.relationType)return null;if(!this._targetEvent)return null;const e=this._targetEvent.getServerAggregatedRelation("m.replace"),t=e&&e.origin_server_ts;return this.getRelations().reduce((e,n)=>n.getSender()!==this._targetEvent.getSender()||t&&t>n.getTs()||e&&e.getTs()>n.getTs()?e:n,null)}setTargetEvent(e){if(!this._targetEvent&&(this._targetEvent=e,"m.replace"===this.relationType)){const e=this.getLastReplacement();e&&this._targetEvent.makeReplaced(e)}}}let d;function p(e,t){this.room=e,this._timelineSupport=Boolean(t.timelineSupport),this._liveTimeline=new r.a(this),this._unstableClientRelationAggregation=!!t.unstableClientRelationAggregation,this._timelines=[this._liveTimeline],this._eventIdToTimeline={},this._filter=t.filter||null,this._unstableClientRelationAggregation&&(this._relations={})}d=s.a.log.bind(s.a),a.o(p,o.EventEmitter),p.prototype.getTimelines=function(){return this._timelines},p.prototype.getFilter=function(){return this._filter},p.prototype.setFilter=function(e){this._filter=e},p.prototype.getPendingEvents=function(){return this.room?this._filter?this._filter.filterRoomTimeline(this.room.getPendingEvents()):this.room.getPendingEvents():[]},p.prototype.getLiveTimeline=function(){return this._liveTimeline},p.prototype.eventIdToTimeline=function(e){return this._eventIdToTimeline[e]},p.prototype.replaceEventId=function(e,t){const n=this._eventIdToTimeline[e];n&&(delete this._eventIdToTimeline[e],this._eventIdToTimeline[t]=n)},p.prototype.resetLiveTimeline=function(e,t){const n=!this._timelineSupport||!t,o=this._liveTimeline,i=n?o.forkLive(r.a.FORWARDS):o.fork(r.a.FORWARDS);n?(this._timelines=[i],this._eventIdToTimeline={}):this._timelines.push(i),t&&o.setPaginationToken(t,r.a.FORWARDS),i.setPaginationToken(e,r.a.BACKWARDS),this._liveTimeline=i,this.emit("Room.timelineReset",this.room,this,n)},p.prototype.getTimelineForEvent=function(e){const t=this._eventIdToTimeline[e];return void 0===t?null:t},p.prototype.findEventById=function(e){const t=this.getTimelineForEvent(e);if(t)return a.k(t.getEvents(),(function(t){return t.getId()==e}))},p.prototype.addTimeline=function(){if(!this._timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");const e=new r.a(this);return this._timelines.push(e),e},p.prototype.addEventsToTimeline=function(e,t,n,o){if(!n)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&n==this._liveTimeline)throw new Error("EventTimelineSet.addEventsToTimeline cannot be used for adding events to the live timeline - use Room.addLiveEvents instead");if(this._filter&&!(e=this._filter.filterRoomTimeline(e)).length)return;const i=t?r.a.BACKWARDS:r.a.FORWARDS,a=t?r.a.FORWARDS:r.a.BACKWARDS;let c=!1,l=!1;for(let o=0;o{this.aggregateRelations(e)});const t=e.getRelation();if(!t)return;const n=t.event_id,o=t.rel_type,r=e.getType();let a=this._relations[n];a||(a=this._relations[n]={});let s=a[o];s||(s=a[o]={});let c,l=s[r],d=!1;l||(l=s[r]=new u(o,r,this.room),d=!0,c=this.findEventById(n),c&&l.setTargetEvent(c)),l.addEvent(e),d&&c&&c.emit("Event.relationsCreated",o,r)}},function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return r})),n.d(t,"c",(function(){return i})),n.d(t,"a",(function(){return a}));var o=n(93);async function r(t,n){if(!e.Olm)throw new Error("Olm is not available");if(!t.private_key_salt||!t.private_key_iterations)throw new Error("Salt and/or iterations not found: this backup cannot be restored with a passphrase");return await a(n,t.private_key_salt,t.private_key_iterations,t.private_key_bits||256)}async function i(t){if(!e.Olm)throw new Error("Olm is not available");const n=Object(o.a)(32);return{key:await a(t,n,5e5,256),salt:n,iterations:5e5}}async function a(t,n,o,r=256){const i=e.crypto.subtle,a=e.TextEncoder;if(!i||!a)throw new Error("Password-based backup is not avaiable on this platform");const s=await i.importKey("raw",(new a).encode(t),{name:"PBKDF2"},!1,["deriveBits"]),c=await i.deriveBits({name:"PBKDF2",salt:(new a).encode(n),iterations:o,hash:"SHA-512"},s,r);return new Uint8Array(c)}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var o=n(0),r=n.n(o),i=n(129),a=n(166);class s extends r.a.Component{constructor(e){super(e),this._setResizeContainerRef=this._setResizeContainerRef.bind(this),this._onResized=this._onResized.bind(this)}_onResized(e){window.localStorage.setItem("mx_rhs_size",e),this.props.resizeNotifier&&this.props.resizeNotifier.notifyRightHandleResized()}_createResizer(){const e=new a.c(this.resizeContainer,a.b,{onResized:this._onResized});e.setClassNames({handle:"mx_ResizeHandle",vertical:"mx_ResizeHandle_vertical",reverse:"mx_ResizeHandle_reverse"});let t=window.localStorage.getItem("mx_rhs_size");t=null!==t?parseInt(t,10):350,e.forHandleAt(0).resize(t),e.attach(),this.resizer=e}_setResizeContainerRef(e){this.resizeContainer=e}componentDidMount(){this.props.panel&&this._createResizer()}componentWillUnmount(){this.resizer&&(this.resizer.detach(),this.resizer=null)}componentDidUpdate(e){const t=this.props.panel&&!e.panel,n=!this.props.panel&&e.panel;this.resizeContainer&&t?this._createResizer():this.resizer&&n&&(this.resizer.detach(),this.resizer=null)}render(){const e=r.a.Children.only(this.props.children),t=this.props.panel,n=!this.props.collapsedRhs&&t;let o;return n&&(o=r.a.createElement(r.a.Fragment,null,r.a.createElement(i.a,{reverse:!0}),t)),r.a.createElement("div",{className:"mx_MainSplit",ref:n?this._setResizeContainerRef:void 0},e,o)}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return y}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(14),u=n.n(l),d=n(3),p=n(6),h=n(75),m=n(130),g=n(22),f=n(7),_=n(20),v=n(77),b=n(21);class y extends a.a.Component{static get propTypes(){return{roomId:c.a.string,groupId:c.a.string,user:c.a.object}}constructor(e){super(e),this.state={phase:this._getPhaseFromProps(),isUserPrivilegedInGroup:null,member:this._getUserForPanel(),verificationRequest:v.a.getSharedInstance().roomPanelPhaseParams.verificationRequest},this.onAction=this.onAction.bind(this),this.onRoomStateMember=this.onRoomStateMember.bind(this),this.onGroupStoreUpdated=this.onGroupStoreUpdated.bind(this),this.onInviteToGroupButtonClick=this.onInviteToGroupButtonClick.bind(this),this.onAddRoomToGroupButtonClick=this.onAddRoomToGroupButtonClick.bind(this),this._delayedUpdate=new h.a(()=>{this.forceUpdate()},500)}_getUserForPanel(){if(this.state&&this.state.member)return this.state.member;const e=v.a.getSharedInstance().roomPanelPhaseParams;return this.props.user||e.member}_getPhaseFromProps(){const e=v.a.getSharedInstance(),t=this._getUserForPanel();return this.props.groupId?_.b.includes(e.groupPanelPhase)?e.groupPanelPhase:(p.a.dispatch({action:"set_right_panel_phase",phase:_.a.GroupMemberList}),_.a.GroupMemberList):t?e.roomPanelPhaseParams.member&&t.userId===e.roomPanelPhaseParams.member.userId&&e.roomPanelPhaseParams.verificationRequest?e.roomPanelPhase:_.a.RoomMemberInfo:_.b.includes(e.roomPanelPhase)?e.roomPanelPhase:(p.a.dispatch({action:"set_right_panel_phase",phase:_.a.RoomMemberList}),_.a.RoomMemberList)}componentWillMount(){this.dispatcherRef=p.a.register(this.onAction),this.context.on("RoomState.members",this.onRoomStateMember),this._initGroupStore(this.props.groupId)}componentWillUnmount(){p.a.unregister(this.dispatcherRef),this.context&&this.context.removeListener("RoomState.members",this.onRoomStateMember),this._unregisterGroupStore(this.props.groupId)}componentWillReceiveProps(e){e.groupId!==this.props.groupId&&(this._unregisterGroupStore(this.props.groupId),this._initGroupStore(e.groupId))}_initGroupStore(e){e&&g.a.registerListener(e,this.onGroupStoreUpdated)}_unregisterGroupStore(){g.a.unregisterListener(this.onGroupStoreUpdated)}onGroupStoreUpdated(){this.setState({isUserPrivilegedInGroup:g.a.isUserPrivileged(this.props.groupId)})}onInviteToGroupButtonClick(){Object(m.b)(this.props.groupId).then(()=>{this.setState({phase:_.a.GroupMemberList})})}onAddRoomToGroupButtonClick(){Object(m.a)(this.props.groupId).then(()=>{this.forceUpdate()})}onRoomStateMember(e,t,n){n.roomId===this.props.roomId&&(this.state.phase===_.a.RoomMemberList&&n.roomId===this.props.roomId||this.state.phase===_.a.RoomMemberInfo&&n.roomId===this.props.roomId&&n.userId===this.state.member.userId)&&this._delayedUpdate()}onAction(e){"after_right_panel_phase_change"===e.action&&this.setState({phase:e.phase,groupRoomId:e.groupRoomId,groupId:e.groupId,member:e.member,event:e.event,verificationRequest:e.verificationRequest,verificationRequestPromise:e.verificationRequestPromise})}render(){const e=d.a("rooms.MemberList"),t=d.a("rooms.MemberInfo"),n=d.a("right_panel.UserInfo"),o=d.a("rooms.ThirdPartyMemberInfo"),r=d.a("structures.NotificationPanel"),i=d.a("structures.FilePanel"),s=d.a("groups.GroupMemberList"),c=d.a("groups.GroupMemberInfo"),l=d.a("groups.GroupRoomList"),h=d.a("groups.GroupRoomInfo");let m=a.a.createElement("div",null);switch(this.state.phase){case _.a.RoomMemberList:this.props.roomId&&(m=a.a.createElement(e,{roomId:this.props.roomId,key:this.props.roomId}));break;case _.a.GroupMemberList:this.props.groupId&&(m=a.a.createElement(s,{groupId:this.props.groupId,key:this.props.groupId}));break;case _.a.GroupRoomList:m=a.a.createElement(l,{groupId:this.props.groupId,key:this.props.groupId});break;case _.a.RoomMemberInfo:case _.a.EncryptionPanel:if(f.b.isFeatureEnabled("feature_cross_signing")){const e=()=>{p.a.dispatch({action:"view_user",member:this.state.phase===_.a.EncryptionPanel?this.state.member:null})};m=a.a.createElement(n,{user:this.state.member,roomId:this.props.roomId,key:this.props.roomId||this.state.member.userId,onClose:e,phase:this.state.phase,verificationRequest:this.state.verificationRequest,verificationRequestPromise:this.state.verificationRequestPromise})}else m=a.a.createElement(t,{member:this.state.member,key:this.props.roomId||this.state.member.userId});break;case _.a.Room3pidMemberInfo:m=a.a.createElement(o,{event:this.state.event,key:this.props.roomId});break;case _.a.GroupMemberInfo:if(f.b.isFeatureEnabled("feature_cross_signing")){const e=()=>{p.a.dispatch({action:"view_user",member:null})};m=a.a.createElement(n,{user:this.state.member,groupId:this.props.groupId,key:this.state.member.userId,onClose:e})}else m=a.a.createElement(c,{groupMember:this.state.member,groupId:this.props.groupId,key:this.state.member.user_id});break;case _.a.GroupRoomInfo:m=a.a.createElement(h,{groupRoomId:this.state.groupRoomId,groupId:this.props.groupId,key:this.state.groupRoomId});break;case _.a.NotificationPanel:m=a.a.createElement(r,null);break;case _.a.FilePanel:m=a.a.createElement(i,{roomId:this.props.roomId,resizeNotifier:this.props.resizeNotifier})}const g=u()("mx_RightPanel","mx_fadable",{collapsed:this.props.collapsed,mx_fadable_faded:this.props.disabled,"dark-panel":!0});return a.a.createElement("aside",{className:g,id:"mx_RightPanel"},m)}}r()(y,"contextType",b.a)},function(e,t,n){"use strict";n.d(t,"d",(function(){return d})),n.d(t,"a",(function(){return p})),n.d(t,"c",(function(){return h})),n.d(t,"b",(function(){return m}));var o=n(13),r=n(267),i=n(35);const a=window.localStorage;let s;try{s=window.indexedDB}catch(e){}function c(e){console.log("StorageManager: ".concat(e))}function l(e){console.error("StorageManager: ".concat(e))}function u(e){i.a.trackEvent("StorageManager",e)}function d(){navigator.storage&&navigator.storage.persist?navigator.storage.persist().then(e=>{console.log("StorageManager: Persistent?",e)}):document.requestStorageAccess?document.requestStorageAccess().then(()=>console.log("StorageManager: Persistent?",!0),()=>console.log("StorageManager: Persistent?",!1)):console.log("StorageManager: Persistence unsupported")}async function p(){c("Checking storage consistency"),c("Local storage supported? ".concat(!!a)),c("IndexedDB supported? ".concat(!!s));let e=!1,t=!1,n=!1,i=!0;if(a?(e=a.length>0,c("Local storage contains data? ".concat(e)),n=a.getItem("mx_crypto_initialised"),c("Crypto initialised? ".concat(n))):(i=!1,l("Local storage cannot be used on this browser"),u("Local storage disabled")),s&&a){(await async function(){let e=!1;try{return e=await o.u.IndexedDBStore.exists(s,"riot-web-sync"),c("Sync store using IndexedDB contains data? ".concat(e)),{exists:e,healthy:!0}}catch(e){l("Sync store using IndexedDB inaccessible"),u("Sync store using IndexedDB inaccessible")}return c("Sync store using memory only"),{exists:e,healthy:!1}}()).healthy||(i=!1)}else i=!1,l("Sync store cannot be used on this browser"),u("Sync store disabled");if(s){const e=await async function(){let e=!1;try{return e=await o.u.IndexedDBCryptoStore.exists(s,"matrix-js-sdk:crypto"),c("Crypto store using IndexedDB contains data? ".concat(e)),{exists:e,healthy:!0}}catch(e){l("Crypto store using IndexedDB inaccessible"),u("Crypto store using IndexedDB inaccessible")}try{return e=await r.a.exists(a),c("Crypto store using local storage contains data? ".concat(e)),{exists:e,healthy:!0}}catch(e){l("Crypto store using local storage inaccessible"),u("Crypto store using local storage inaccessible")}return c("Crypto store using memory only"),{exists:e,healthy:!1}}();t=e.exists,e.healthy||(i=!1)}else i=!1,l("Crypto store cannot be used on this browser"),u("Crypto store disabled");return e&&n&&!t&&(i=!1,l("Data exists in local storage and crypto is marked as initialised but no data found in crypto store. IndexedDB storage has likely been evicted by the browser!"),u("Crypto store evicted")),i?(c("Storage consistency checks passed"),u("Consistency checks passed")):(l("Storage consistency checks failed"),u("Consistency checks failed")),{dataInLocalStorage:e,dataInCryptoStore:t,cryptoInited:n,healthy:i}}function h(e){e.store&&e.store.on&&e.store.on("degraded",()=>{u("Sync store using IndexedDB degraded to memory")})}function m(e){a.setItem("mx_crypto_initialised",e)}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return d}));var o=n(5),r=n.n(o),i=n(4),a=n(7),s=n(3),c=n(1),l=n(52);function u(e){return"unverified_session_"+e}class d{static sharedInstance(){return e.mx_DeviceListener||(e.mx_DeviceListener=new d),e.mx_DeviceListener}constructor(){r()(this,"_onDevicesUpdated",e=>{e.includes(i.a.get().getUserId())&&this._recheck()}),r()(this,"_onDeviceVerificationChanged",e=>{e===i.a.get().getUserId()&&this._recheck()}),r()(this,"_onUserTrustStatusChanged",(e,t)=>{e===i.a.get().getUserId()&&this._recheck()}),r()(this,"_onAccountData",e=>{e.getType().startsWith("m.secret_storage.key.")&&this._recheck()}),this._activeNagToasts=new Set,this._dismissed=new Set,this._dismissedThisDeviceToast=!1,this._keyBackupInfo=null,this._keyBackupFetchedAt=null}start(){i.a.get().on("crypto.devicesUpdated",this._onDevicesUpdated),i.a.get().on("deviceVerificationChanged",this._onDeviceVerificationChanged),i.a.get().on("userTrustStatusChanged",this._onUserTrustStatusChanged),i.a.get().on("accountData",this._onAccountData),this._recheck()}stop(){i.a.get()&&(i.a.get().removeListener("crypto.devicesUpdated",this._onDevicesUpdated),i.a.get().removeListener("deviceVerificationChanged",this._onDeviceVerificationChanged),i.a.get().removeListener("userTrustStatusChanged",this._onUserTrustStatusChanged),i.a.get().removeListener("accountData",this._onAccountData)),this._dismissed.clear()}dismissVerification(e){this._dismissed.add(e),this._recheck()}dismissEncryptionSetup(){this._dismissedThisDeviceToast=!0,this._recheck()}async _getKeyBackupInfo(){const e=(new Date).getTime();return(!this._keyBackupInfo||this._keyBackupFetchedAt49152)throw new Error("Message too long ("+e.length+" bytes). The maximum for an encrypted message is 49152 bytes.")}function s(e){this._cryptoStore=e,this._pickleKey="DEFAULT_KEY",this.deviceCurve25519Key=null,this.deviceEd25519Key=null,this._maxOneTimeKeys=null,this._outboundGroupSessionStore={},this._inboundGroupSessionMessageIndexes={},this._sessionsInProgress={}}s.prototype.init=async function(t={}){let n;const o=new e.Olm.Account,{pickleKey:i,fromExportedDevice:a}=t;try{a?(i&&console.warn("ignoring opts.pickleKey because opts.fromExportedDevice is present."),this._pickleKey=a.pickleKey,await async function(e,t,n,o){await t.doTxn("readwrite",[r.a.STORE_ACCOUNT,r.a.STORE_SESSIONS],n=>{t.storeAccount(n,e.pickledAccount),e.sessions.forEach(e=>{const{deviceKey:o,sessionId:r}=e,i={session:e.session,lastReceivedMessageTs:e.lastReceivedMessageTs};t.storeEndToEndSession(o,r,i,n)})}),o.unpickle(n,e.pickledAccount)}(a,this._cryptoStore,this._pickleKey,o)):(i&&(this._pickleKey=i),await async function(e,t,n){await e.doTxn("readwrite",[r.a.STORE_ACCOUNT],o=>{e.getAccount(o,r=>{null!==r?n.unpickle(t,r):(n.create(),r=n.pickle(t),e.storeAccount(o,r))})})}(this._cryptoStore,this._pickleKey,o)),n=JSON.parse(o.identity_keys()),this._maxOneTimeKeys=o.max_number_of_one_time_keys()}finally{o.free()}this.deviceCurve25519Key=n.curve25519,this.deviceEd25519Key=n.ed25519},s.getOlmVersion=function(){return e.Olm.get_library_version()},s.prototype._getAccount=function(t,n){this._cryptoStore.getAccount(t,t=>{const o=new e.Olm.Account;try{o.unpickle(this._pickleKey,t),n(o)}finally{o.free()}})},s.prototype._storeAccount=function(e,t){this._cryptoStore.storeAccount(e,t.pickle(this._pickleKey))},s.prototype.export=async function(){const e={pickleKey:this._pickleKey};return await this._cryptoStore.doTxn("readonly",[r.a.STORE_ACCOUNT,r.a.STORE_SESSIONS],t=>{this._cryptoStore.getAccount(t,t=>{e.pickledAccount=t}),e.sessions=[],this._cryptoStore.getAllEndToEndSessions(t,t=>{e.sessions.push(t)})}),e},s.prototype._getSession=function(e,t,n,o){this._cryptoStore.getEndToEndSession(e,t,n,e=>{this._unpickleSession(e,o)})},s.prototype._unpickleSession=function(t,n){const o=new e.Olm.Session;try{o.unpickle(this._pickleKey,t.session),n(Object.assign({},t,{session:o}))}finally{o.free()}},s.prototype._saveSession=function(e,t,n){const o=t.session.session_id(),r=Object.assign(t,{session:t.session.pickle(this._pickleKey)});this._cryptoStore.storeEndToEndSession(e,o,r,n)},s.prototype._getUtility=function(t){const n=new e.Olm.Utility;try{return t(n)}finally{n.free()}},s.prototype.sign=async function(e){let t;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_ACCOUNT],n=>{this._getAccount(n,n=>{t=n.sign(e)})}),t},s.prototype.getOneTimeKeys=async function(){let e;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_ACCOUNT],t=>{this._getAccount(t,t=>{e=JSON.parse(t.one_time_keys())})}),e},s.prototype.maxNumberOfOneTimeKeys=function(){return this._maxOneTimeKeys},s.prototype.markKeysAsPublished=async function(){await this._cryptoStore.doTxn("readwrite",[r.a.STORE_ACCOUNT],e=>{this._getAccount(e,t=>{t.mark_keys_as_published(),this._storeAccount(e,t)})})},s.prototype.generateOneTimeKeys=function(e){return this._cryptoStore.doTxn("readwrite",[r.a.STORE_ACCOUNT],t=>{this._getAccount(t,n=>{n.generate_one_time_keys(e),this._storeAccount(t,n)})})},s.prototype.createOutboundSession=async function(t,n){let o;return await this._cryptoStore.doTxn("readwrite",[r.a.STORE_ACCOUNT,r.a.STORE_SESSIONS],r=>{this._getAccount(r,i=>{const a=new e.Olm.Session;try{a.create_outbound(i,t,n),o=a.session_id(),this._storeAccount(r,i);const e={session:a,lastReceivedMessageTs:Date.now()};this._saveSession(t,e,r)}finally{a.free()}})}),o},s.prototype.createInboundSession=async function(t,n,o){if(0!==n)throw new Error("Need messageType == 0 to create inbound session");let i;return await this._cryptoStore.doTxn("readwrite",[r.a.STORE_ACCOUNT,r.a.STORE_SESSIONS],r=>{this._getAccount(r,a=>{const s=new e.Olm.Session;try{s.create_inbound_from(a,t,o),a.remove_one_time_keys(s),this._storeAccount(r,a);const e=s.decrypt(n,o),c={session:s,lastReceivedMessageTs:Date.now()};this._saveSession(t,c,r),i={payload:e,session_id:s.session_id()}}finally{s.free()}})}),i},s.prototype.getSessionIdsForDevice=async function(e){if(this._sessionsInProgress[e]){o.a.log("waiting for olm session to be created");try{await this._sessionsInProgress[e]}catch(e){}}let t;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_SESSIONS],n=>{this._cryptoStore.getEndToEndSessions(e,n,e=>{t=Object.keys(e)})}),t},s.prototype.getSessionIdForDevice=async function(e,t){const n=await this.getSessionInfoForDevice(e,t);if(0===n.length)return null;let o=0;for(let e=1;ea||r===a&&t.sessionId{this._cryptoStore.getEndToEndSessions(e,t,e=>{const t=Object.keys(e).sort();for(const o of t)this._unpickleSession(e[o],e=>{n.push({lastReceivedMessageTs:e.lastReceivedMessageTs,hasReceivedMessage:e.session.has_received_message(),sessionId:o})})})}),n},s.prototype.encryptMessage=async function(e,t,n){let i;return a(n),await this._cryptoStore.doTxn("readwrite",[r.a.STORE_SESSIONS],r=>{this._getSession(e,t,r,a=>{const s=a.session.describe();o.a.log("encryptMessage: Olm Session ID "+t+" to "+e+": "+s),i=a.session.encrypt(n),this._saveSession(e,a,r)})}),i},s.prototype.decryptMessage=async function(e,t,n,i){let a;return await this._cryptoStore.doTxn("readwrite",[r.a.STORE_SESSIONS],r=>{this._getSession(e,t,r,s=>{const c=s.session.describe();o.a.log("decryptMessage: Olm Session ID "+t+" from "+e+": "+c),a=s.session.decrypt(n,i),s.lastReceivedMessageTs=Date.now(),this._saveSession(e,s,r)})}),a},s.prototype.matchesSession=async function(e,t,n,o){if(0!==n)return!1;let i;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_SESSIONS],n=>{this._getSession(e,t,n,e=>{i=e.session.matches_inbound(o)})}),i},s.prototype.recordSessionProblem=async function(e,t,n){await this._cryptoStore.storeEndToEndSessionProblem(e,t,n)},s.prototype.sessionMayHaveProblems=async function(e,t){return await this._cryptoStore.getEndToEndSessionProblem(e,t)},s.prototype.filterOutNotifiedErrorDevices=async function(e){return await this._cryptoStore.filterOutNotifiedErrorDevices(e)},s.prototype._saveOutboundGroupSession=function(e){const t=e.pickle(this._pickleKey);this._outboundGroupSessionStore[e.session_id()]=t},s.prototype._getOutboundGroupSession=function(t,n){const o=this._outboundGroupSessionStore[t];if(void 0===o)throw new Error("Unknown outbound group session "+t);const r=new e.Olm.OutboundGroupSession;try{return r.unpickle(this._pickleKey,o),n(r)}finally{r.free()}},s.prototype.createOutboundGroupSession=function(){const t=new e.Olm.OutboundGroupSession;try{return t.create(),this._saveOutboundGroupSession(t),t.session_id()}finally{t.free()}},s.prototype.encryptGroupMessage=function(e,t){const n=this;return o.a.log("encrypting msg with megolm session ".concat(e)),a(t),this._getOutboundGroupSession(e,(function(e){const o=e.encrypt(t);return n._saveOutboundGroupSession(e),o}))},s.prototype.getOutboundGroupSessionKey=function(e){return this._getOutboundGroupSession(e,(function(e){return{chain_index:e.message_index(),key:e.session_key()}}))},s.prototype._unpickleInboundGroupSession=function(t,n){const o=new e.Olm.InboundGroupSession;try{return o.unpickle(this._pickleKey,t.session),n(o)}finally{o.free()}},s.prototype._getInboundGroupSession=function(e,t,n,o,r){this._cryptoStore.getEndToEndInboundGroupSession(t,n,o,(t,n)=>{if(null!==t){if(null!==e&&e!==t.room_id)throw new Error("Mismatched room_id for inbound group session (expected "+t.room_id+", was "+e+")");this._unpickleInboundGroupSession(t,e=>{r(e,t,n)})}else r(null,null,n)})},s.prototype.addInboundGroupSession=async function(t,n,i,a,s,c,l){await this._cryptoStore.doTxn("readwrite",[r.a.STORE_INBOUND_GROUP_SESSIONS,r.a.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],r=>{this._getInboundGroupSession(t,n,a,r,(u,d)=>{const p=new e.Olm.InboundGroupSession;try{if(l?p.import_session(s):p.create(s),a!=p.session_id())throw new Error("Mismatched group session ID from senderKey: "+n);if(u&&(o.a.log("Update for megolm session "+n+"/"+a),u.first_known_index()<=p.first_known_index()))return void o.a.log("Keeping existing megolm session ".concat(a));const e={room_id:t,session:p.pickle(this._pickleKey),keysClaimed:c,forwardingCurve25519KeyChain:i};this._cryptoStore.storeEndToEndInboundGroupSession(n,a,e,r)}finally{p.free()}})})},s.prototype.addInboundGroupSessionWithheld=async function(e,t,n,o,i){await this._cryptoStore.doTxn("readwrite",[r.a.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],r=>{this._cryptoStore.storeEndToEndInboundGroupSessionWithheld(t,n,{room_id:e,code:o,reason:i},r)})};const c={"m.unverified":"The sender has disabled encrypting to unverified devices.","m.blacklisted":"The sender has blocked you.","m.unauthorised":"You are not authorised to read the message.","m.no_olm":"Unable to establish a secure channel."};function l(e){return e.code&&e.code in c?c[e.code]:e.reason?e.reason:"decryption key withheld"}s.prototype.decryptGroupMessage=async function(e,t,n,o,a,s){let c,u;if(await this._cryptoStore.doTxn("readwrite",[r.a.STORE_INBOUND_GROUP_SESSIONS,r.a.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],r=>{this._getInboundGroupSession(e,t,n,r,(e,d,p)=>{if(null===e)return p&&(u=new i.b("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",l(p),{session:t+"|"+n})),void(c=null);let h;try{h=e.decrypt(o)}catch(e){return void(u=e&&"OLM.UNKNOWN_MESSAGE_INDEX"===e.message&&p?new i.b("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",l(p),{session:t+"|"+n}):e)}let m=h.plaintext;if(void 0===m)m=h;else{const e=t+"|"+n+"|"+h.message_index;if(e in this._inboundGroupSessionMessageIndexes){const t=this._inboundGroupSessionMessageIndexes[e];if(t.id!==a||t.timestamp!==s)return void(u=new Error("Duplicate message index, possible replay attack: "+e))}this._inboundGroupSessionMessageIndexes[e]={id:a,timestamp:s}}d.session=e.pickle(this._pickleKey),this._cryptoStore.storeEndToEndInboundGroupSession(t,n,d,r),c={result:m,keysClaimed:d.keysClaimed||{},senderKey:t,forwardingCurve25519KeyChain:d.forwardingCurve25519KeyChain||[]}})}),u)throw u;return c},s.prototype.hasInboundSessionKeys=async function(e,t,n){let i;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_INBOUND_GROUP_SESSIONS,r.a.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],r=>{this._cryptoStore.getEndToEndInboundGroupSession(t,n,r,r=>{null!==r?e!==r.room_id?(o.a.warn("requested keys for inbound group session ".concat(t,"|")+"".concat(n,", with incorrect room_id ")+"(expected ".concat(r.room_id,", ")+"was ".concat(e,")")),i=!1):i=!0:i=!1})}),i},s.prototype.getInboundGroupSessionKey=async function(e,t,n,o){let i;return await this._cryptoStore.doTxn("readonly",[r.a.STORE_INBOUND_GROUP_SESSIONS,r.a.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],r=>{this._getInboundGroupSession(e,t,n,r,(e,t)=>{if(null===e)return void(i=null);void 0===o&&(o=e.first_known_index());const n=e.export_session(o),r=(t.keysClaimed||{}).ed25519||null;i={chain_index:o,key:n,forwarding_curve25519_key_chain:t.forwardingCurve25519KeyChain||[],sender_claimed_ed25519_key:r}})}),i},s.prototype.exportInboundGroupSession=function(e,t,n){return this._unpickleInboundGroupSession(n,o=>{const r=o.first_known_index();return{sender_key:e,sender_claimed_keys:n.keysClaimed,room_id:n.room_id,session_id:t,session_key:o.export_session(r),forwarding_curve25519_key_chain:o.forwardingCurve25519KeyChain||[],first_known_index:o.first_known_index()}})},s.prototype.verifySignature=function(e,t,n){this._getUtility((function(o){o.ed25519_verify(e,t,n)}))}}).call(this,n(24))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var o=n(6),r=n(73);class i{constructor(e,t){this._window=e,this._document=t,this._attachedActiveNowTimers=[],this._attachedActiveRecentlyTimers=[],this._activeNowTimeout=new r.a(700),this._activeRecentlyTimeout=new r.a(12e4),this._onUserActivity=this._onUserActivity.bind(this),this._onWindowBlurred=this._onWindowBlurred.bind(this),this._onPageVisibilityChanged=this._onPageVisibilityChanged.bind(this),this.lastScreenX=0,this.lastScreenY=0}static sharedInstance(){return void 0===e.mxUserActivity&&(e.mxUserActivity=new i(window,document)),e.mxUserActivity}timeWhileActiveNow(e){this._timeWhile(e,this._attachedActiveNowTimers),this.userActiveNow()&&e.start()}timeWhileActiveRecently(e){this._timeWhile(e,this._attachedActiveRecentlyTimers),this.userActiveRecently()&&e.start()}_timeWhile(e,t){-1===t.indexOf(e)&&(t.push(e),e.finished().finally(()=>{const n=t.indexOf(e);-1!==n&&t.splice(n,1)}).catch(e=>{}))}start(){this._document.addEventListener("mousedown",this._onUserActivity),this._document.addEventListener("mousemove",this._onUserActivity),this._document.addEventListener("keydown",this._onUserActivity),this._document.addEventListener("visibilitychange",this._onPageVisibilityChanged),this._window.addEventListener("blur",this._onWindowBlurred),this._window.addEventListener("focus",this._onUserActivity),this._window.addEventListener("wheel",this._onUserActivity,{passive:!0,capture:!0})}stop(){this._document.removeEventListener("mousedown",this._onUserActivity),this._document.removeEventListener("mousemove",this._onUserActivity),this._document.removeEventListener("keydown",this._onUserActivity),this._window.removeEventListener("wheel",this._onUserActivity,{passive:!0,capture:!0}),this._document.removeEventListener("visibilitychange",this._onPageVisibilityChanged),this._window.removeEventListener("blur",this._onWindowBlurred),this._window.removeEventListener("focus",this._onUserActivity)}userActiveNow(){return this._activeNowTimeout.isRunning()}userActiveRecently(){return this._activeRecentlyTimeout.isRunning()}_onPageVisibilityChanged(e){"hidden"===this._document.visibilityState?(this._activeNowTimeout.abort(),this._activeRecentlyTimeout.abort()):this._onUserActivity(e)}_onWindowBlurred(){this._activeNowTimeout.abort(),this._activeRecentlyTimeout.abort()}_onUserActivity(e){if(this._document.hasFocus()){if(e.screenX&&"mousemove"===e.type){if(e.screenX===this.lastScreenX&&e.screenY===this.lastScreenY)return;this.lastScreenX=e.screenX,this.lastScreenY=e.screenY}o.a.dispatch({action:"user_activity"}),this._activeNowTimeout.isRunning()?this._activeNowTimeout.restart():(this._activeNowTimeout.start(),o.a.dispatch({action:"user_activity_start"}),this._runTimersUntilTimeout(this._attachedActiveNowTimers,this._activeNowTimeout)),this._activeRecentlyTimeout.isRunning()?this._activeRecentlyTimeout.restart():(this._activeRecentlyTimeout.start(),this._runTimersUntilTimeout(this._attachedActiveRecentlyTimers,this._activeRecentlyTimeout))}}async _runTimersUntilTimeout(e,t){e.forEach(e=>e.start());try{await t.finished()}catch(e){}e.forEach(e=>e.abort())}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return u})),n.d(t,"a",(function(){return d}));var o=n(5),r=n.n(o),i=n(736),a=n.n(i);class s{constructor(e){r()(this,"_regex",void 0);const t=a()(e,{extended:!1,globstar:!1}).toString().replace(/\\\?/g,".");this._regex=new RegExp(t.substring(1,t.length-1))}test(e){return this._regex.test(e)}}const c="m.ban",l=[c,"org.matrix.mjolnir.ban"];function u(e,t=!0){return l.includes(e)?t?l[l.length-1]:c:null}class d{constructor(e,t,n,o){r()(this,"_glob",void 0),r()(this,"_entity",void 0),r()(this,"_action",void 0),r()(this,"_reason",void 0),r()(this,"_kind",void 0),this._glob=new s(e),this._entity=e,this._action=u(t,!1),this._reason=n,this._kind=o}get entity(){return this._entity}get reason(){return this._reason}get kind(){return this._kind}get recommendation(){return this._action}isMatch(e){return this._glob.test(e)}}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return l}));var o=n(28),r=n(8),i=n(19),a=n(93),s=n(345);const c="m.secret_storage.v1.aes-hmac-sha2";class l extends o.EventEmitter{constructor(e,t,n){super(),this._baseApis=e,this._cryptoCallbacks=t,this._crossSigningInfo=n,this._requests={},this._incomingRequests={}}async getDefaultKeyId(){const e=await this._baseApis.getAccountDataFromServer("m.secret_storage.default_key");return e?e.key:null}setDefaultKeyId(e){return new Promise(t=>{const n=o=>{"m.secret_storage.default_key"===o.getType()&&o.getContent().key===e&&(this._baseApis.removeListener("accountData",n),t())};this._baseApis.on("accountData",n),this._baseApis.setAccountData("m.secret_storage.default_key",{key:e})})}async addKey(t,n,o){const r={algorithm:t};switch(n||(n={}),n.name&&(r.name=n.name),t){case c:{const t=new e.Olm.PkDecryption;try{n.passphrase&&(r.passphrase=n.passphrase)}finally{t.free()}break}default:throw new Error("Unknown key algorithm ".concat(n.algorithm))}if(!o)do{o=Object(a.a)(32)}while(await this._baseApis.getAccountDataFromServer("m.secret_storage.key.".concat(o)));return await this._crossSigningInfo.signObject(r,"master"),await this._baseApis.setAccountData("m.secret_storage.key.".concat(o),r),o}async signKey(e){if(e||(e=await this.getDefaultKeyId()),!e)throw new Error("signKey requires a key ID");const t=await this._baseApis.getAccountDataFromServer("m.secret_storage.key.".concat(e));if(!t)throw new Error("Key ".concat(e," does not exist in account data"));await this._crossSigningInfo.signObject(t,"master"),await this._baseApis.setAccountData("m.secret_storage.key.".concat(e),t)}async getKey(e){if(e||(e=await this.getDefaultKeyId()),!e)return null;const t=await this._baseApis.getAccountDataFromServer("m.secret_storage.key."+e);return t?[e,t]:null}async hasKey(e){return!!await this.getKey(e)}async keyNeedsUpgrade(e){const t=await this.getKey(e);return!(!t||"m.secret_storage.v1.curve25519-aes-sha2"!==t[1].algorithm)}async store(e,t,n){const o={};if(!n){const e=await this.getDefaultKeyId();if(!e)throw new Error("No keys specified and no default key present");n=[e]}if(0===n.length)throw new Error("Zero keys given to encrypt with!");for(const i of n){const n=await this._baseApis.getAccountDataFromServer("m.secret_storage.key."+i);if(!n)throw new Error("Unknown key: "+i);switch(n.algorithm){case c:{const r={[i]:n},[,a]=await this._getSecretStorageKey(r,e);o[i]=await a.encrypt(t);break}default:r.a.warn("unknown algorithm for secret storage key "+i+": "+n.algorithm)}}await this._baseApis.setAccountData(e,{encrypted:o})}async _fixupStoredSecret(e,t){const n=Object.keys(t);if(1===n.length&&"encrypted"!==n[0]&&t[n[0]].passthrough){if(await this.hasKey(n[0])){return console.log("Fixing up passthrough secret: "+e),await this.storePassthrough(e,n[0]),await this._baseApis.getAccountDataFromServer(e)}}return null}async get(e){let t=await this._baseApis.getAccountDataFromServer(e);if(!t)return;if(!t.encrypted&&(t=await this._fixupStoredSecret(e,t),!t||!t.encrypted))throw new Error("Content is not encrypted!");const n={};for(const e of Object.keys(t.encrypted)){const o=await this._baseApis.getAccountDataFromServer("m.secret_storage.key."+e),r=t.encrypted[e];switch(o.algorithm){case c:r.iv&&r.ciphertext&&r.mac&&(n[e]=o);break;case"m.secret_storage.v1.curve25519-aes-sha2":o.pubkey&&(r.ciphertext&&r.mac&&r.ephemeral||r.passthrough)&&(n[e]=o)}}let o,r;try{[o,r]=await this._getSecretStorageKey(n,e);const i=t.encrypted[o];return i.passthrough?r.get_private_key():await r.decrypt(i)}finally{r&&r.free&&r.free()}}async isStored(e,t){let n=await this._baseApis.getAccountDataFromServer(e);if(!n)return null;if(!n.encrypted&&(n=await this._fixupStoredSecret(e,n),!n||!n.encrypted))return null;void 0===t&&(t=!0);const o={};for(const e of Object.keys(n.encrypted)){const r=await this._baseApis.getAccountDataFromServer("m.secret_storage.key."+e);if(!r)continue;const a=n.encrypted[e];if(a.passthrough){try{Object(i.pkVerify)(r,this._crossSigningInfo.getId("master"),this._crossSigningInfo.userId)}catch(e){continue}o[e]=r}else switch(r.algorithm){case c:a.iv&&a.ciphertext&&a.mac&&(o[e]=r);break;case"m.secret_storage.v1.curve25519-aes-sha2":if(r.pubkey&&a.ciphertext&&a.mac&&a.ephemeral){if(t)try{Object(i.pkVerify)(r,this._crossSigningInfo.getId("master"),this._crossSigningInfo.userId)}catch(e){continue}o[e]=r}}}return Object.keys(o).length?o:null}request(e,t){const n=this._baseApis.makeTxnId(),o=this._requests[n]={devices:t},i=new Promise((e,t)=>{o.resolve=e,o.reject=t}),a={name:e,action:"request",requesting_device_id:this._baseApis.deviceId,request_id:n},s={};for(const e of t)s[e]=a;return r.a.info("Request secret ".concat(e," from ").concat(t,", id ").concat(n)),this._baseApis.sendToDevice("m.secret.request",{[this._baseApis.getUserId()]:s}),{request_id:n,promise:i,cancel:e=>{const r={action:"request_cancellation",requesting_device_id:this._baseApis.deviceId,request_id:n},i={};for(const e of t)i[e]=r;this._baseApis.sendToDevice("m.secret.request",{[this._baseApis.getUserId()]:i}),o.reject(new Error(e||"Cancelled"))}}}async _onRequestReceived(e){const t=e.getSender(),n=e.getContent();if(t!==this._baseApis.getUserId()||!(n.name&&n.action&&n.requesting_device_id&&n.request_id))return;const o=n.requesting_device_id;if("request_cancellation"===n.action)this._incomingRequests[o]&&this._incomingRequests[o][n.request_id]&&(r.a.info("received request cancellation for secret ("+t+", "+o+", "+n.request_id+")"),this.baseApis.emit("crypto.secrets.requestCancelled",{user_id:t,device_id:o,request_id:n.request_id}));else if("request"===n.action){if(o===this._baseApis.deviceId)return;if(r.a.info("received request for secret ("+t+", "+o+", "+n.request_id+")"),!this._cryptoCallbacks.onSecretRequested)return;const e=await this._cryptoCallbacks.onSecretRequested({user_id:t,device_id:o,request_id:n.request_id,name:n.name,device_trust:this._baseApis.checkDeviceTrust(t,o)});if(e){r.a.info("Preparing ".concat(n.name," secret for ").concat(o));const a={type:"m.secret.send",content:{request_id:n.request_id,secret:e}},s={algorithm:i.OLM_ALGORITHM,sender_key:this._baseApis._crypto._olmDevice.deviceCurve25519Key,ciphertext:{}};await i.ensureOlmSessionsForDevices(this._baseApis._crypto._olmDevice,this._baseApis,{[t]:[await this._baseApis.getStoredDevice(t,o)]}),await i.encryptMessageForDevice(s.ciphertext,this._baseApis.getUserId(),this._baseApis.deviceId,this._baseApis._crypto._olmDevice,t,this._baseApis._crypto.getStoredDevice(t,o),a);const c={[t]:{[o]:s}};r.a.info("Sending ".concat(n.name," secret for ").concat(o)),this._baseApis.sendToDevice("m.room.encrypted",c)}else r.a.info("Request denied for ".concat(n.name," secret for ").concat(o))}}_onSecretReceived(e){if(e.getSender()!==this._baseApis.getUserId())return;const t=e.getContent();r.a.log("got secret share for request",t.request_id);const n=this._requests[t.request_id];if(n){const o=this._baseApis._crypto._deviceList.getDeviceByIdentityKey(i.OLM_ALGORITHM,e.getSenderKey());if(!o)return void r.a.log("secret share from unknown device with key",e.getSenderKey());if(!n.devices.includes(o.deviceId))return void r.a.log("unsolicited secret share from device",o.deviceId);n.resolve(t.secret)}}async _getSecretStorageKey(t,n){if(!this._cryptoCallbacks.getSecretStorageKey)throw new Error("No getSecretStorageKey callback supplied");const o=await this._cryptoCallbacks.getSecretStorageKey({keys:t},n);if(!o)throw new Error("getSecretStorageKey callback returned falsey");if(o.length<2)throw new Error("getSecretStorageKey callback returned invalid data");const[r,i]=o;if(!t[r])throw new Error("App returned unknown key from getSecretStorageKey!");switch(t[r].algorithm){case c:return[r,{encrypt:async function(e){return await Object(s.b)(e,i,n)},decrypt:async function(e){return await Object(s.a)(e,i,n)}}];case"m.secret_storage.v1.curve25519-aes-sha2":{const n=new e.Olm.PkDecryption;let o;try{o=n.init_with_private_key(i)}catch(e){throw n.free(),new Error("getSecretStorageKey callback returned invalid key")}if(o!==t[r].pubkey)throw n.free(),new Error("getSecretStorageKey callback returned incorrect key");return[r,{free:n.free.bind(n),decrypt:async function(e){return n.decrypt(e.ephemeral,e.mac,e.ciphertext)},get_private_key:n.get_private_key.bind(n)}]}default:throw new Error("Unknown key type: "+t[r].algorithm)}}}}).call(this,n(24))},function(e,t,n){var o=n(214),r=n(813),i=n(814),a=o?o.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":a&&a in Object(e)?r(e):i(e)}},function(e,t,n){var o=n(143),r=n(216);e.exports=n(144)?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var o=n(195);e.exports=function(e){if(!o(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var o=n(300);e.exports=function(e){return Object(o(e))}},function(e,t,n){var o=n(652),r=n(300);e.exports=function(e){return o(r(e))}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.top,n=e.right,o=e.bottom,r=e.left;return{top:t,right:n,bottom:o,left:r,width:n-r,height:o-t,center:{x:(n+r)/2,y:(o+t)/2}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=i(n(150)),r=i(n(90));function i(e){return e&&e.__esModule?e:{default:e}}t.default=(0,r.default)((function(e,t){return(0,o.default)(t).map((function(e){return t[e]})).filter((function(t){return e.descriptor.id===t.descriptor.droppableId})).sort((function(e,t){return e.descriptor.index-t.descriptor.index}))}))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=i(n(662)),r=i(n(313));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){var t=e.draggable,n=e.destination,i=e.previousImpact,a=e.viewport,s=t.descriptor.id,c=(0,o.default)(i.movement.displaced),l=(0,r.default)({target:t.page.withMargin,destination:n,viewport:a}),u=function(){if(!l)return!1;var e=c[s];return!e||e.shouldAnimate}();return{draggableId:s,isVisible:l,shouldAnimate:u}}},function(e,t,n){"use strict";var o=n(332);i.TYPED_ARRAY_SUPPORT=function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()}catch(e){return!1}}();var r=i.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function i(e,t,n){return i.TYPED_ARRAY_SUPPORT||this instanceof i?"number"==typeof e?c(this,e):function(e,t,n,o){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer)return function(e,t,n,o){if(n<0||t.byteLength=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function s(e,t){var n;return i.TYPED_ARRAY_SUPPORT?(n=new Uint8Array(t)).__proto__=i.prototype:(null===(n=e)&&(n=new i(t)),n.length=t),n}function c(e,t){var n=s(e,t<0?0:0|a(t));if(!i.TYPED_ARRAY_SUPPORT)for(var o=0;o55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===o){(t-=3)>-1&&i.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&i.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function d(e){return i.isBuffer(e)?e.length:"undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer)?e.byteLength:("string"!=typeof e&&(e=""+e),0===e.length?0:u(e).length)}i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1})),i.prototype.write=function(e,t,n){void 0===t||void 0===n&&"string"==typeof t?(n=this.length,t=0):isFinite(t)&&(t|=0,isFinite(n)?n|=0:n=void 0);var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");return function(e,t,n,o){return function(e,t,n,o){for(var r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}(u(t,e.length-n),e,n,o)}(this,e,t,n)},i.prototype.slice=function(e,t){var n,o=this.length;if((e=~~e)<0?(e+=o)<0&&(e=0):e>o&&(e=o),(t=void 0===t?o:~~t)<0?(t+=o)<0&&(t=0):t>o&&(t=o),t=e.length&&(t=e.length),t||(t=0),o>0&&o=this.length)throw new RangeError("sourceStart out of bounds");if(o<0)throw new RangeError("sourceEnd out of bounds");o>this.length&&(o=this.length),e.length-t=0;--r)e[r+t]=this[r+n];else if(a<1e3||!i.TYPED_ARRAY_SUPPORT)for(r=0;r>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=t;r`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>",c="]",l=new RegExp("^(?:<[A-Za-z][A-Za-z0-9-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*/?>|]|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|[<][?].*?[?][>]|]*>|)","i"),u=/[\\&]/,d="[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^_`{|}~-]",p=new RegExp("\\\\"+d+"|"+a,"gi"),h=new RegExp('[&<>"]',"g"),m=new RegExp(a+'|[&<>"]',"gi"),g=function(e){return 92===e.charCodeAt(0)?e.charAt(1):i(e)},f=function(e){switch(e){case"&":return"&";case"<":return"<";case">":return">";case'"':return""";default:return e}};e.exports={unescapeString:function(e){return u.test(e)?e.replace(p,g):e},normalizeURI:function(e){try{return o(r(e))}catch(t){return e}},escapeXml:function(e,t){return h.test(e)?t?e.replace(m,f):e.replace(h,f):e},reHtmlTag:l,OPENTAG:s,CLOSETAG:c,ENTITY:a,ESCAPABLE:d}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(209),r=n(271);class i{static createItem(e,t,n){return new o.a(e,t,n)}static createSizer(e,t,n){return new r.a(e,t,n)}constructor(e){this.item=e,this.beforeOffset=e.offset()}resize(e){this.item.setSize(e)}resizeFromContainerOffset(e){this.resize(e-this.beforeOffset)}start(){}finish(){}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{constructor(e){this.target=e,this.boundHandlers={}}_handleEvent(e,...t){this.target.emit(e,...t)}reEmit(e,t){const n=(t,...n)=>{t(...n,e)};for(const o of t){void 0===this.boundHandlers[o]&&(this.boundHandlers[o]=this._handleEvent.bind(this,o));const t=n.bind(this,this.boundHandlers[o]);e.on(o,t)}}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return d}));var o=n(179),r=n(10),i=n(181),a=n(8);function s(e,t,n){const o=e.openCursor(t);return new Promise((e,t)=>{const r=[];o.onerror=e=>{t(new Error("Query failed: "+e.target.errorCode))},o.onsuccess=t=>{const o=t.target.result;o?(r.push(n(o)),o.continue()):e(r)}})}function c(e){return new Promise((t,n)=>{e.oncomplete=function(e){t(e)},e.onerror=function(e){n(e.target.error)}})}function l(e){return new Promise((t,n)=>{e.onsuccess=function(e){t(e)},e.onerror=function(e){n(e.target.error)}})}function u(e){return l(e).then(e=>e.target.result)}function d(e,t){this.indexedDB=e,this._dbName="matrix-js-sdk:"+(t||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new o.a,this._isNewlyCreated=!1}d.exists=function(e,t){return t="matrix-js-sdk:"+(t||"default"),i.a(e,t)},d.prototype={connect:function(){if(!this._disconnected)return a.a.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),Promise.resolve();this._disconnected=!1,a.a.log("LocalIndexedDBStoreBackend.connect: connecting...");const e=this.indexedDB.open(this._dbName,3);return e.onupgradeneeded=e=>{const t=e.target.result,n=e.oldVersion;a.a.log("LocalIndexedDBStoreBackend.connect: upgrading from ".concat(n)),n<1&&(this._isNewlyCreated=!0,function(e){e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})}(t)),n<2&&function(e){e.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(t),n<3&&function(e){e.createObjectStore("client_options",{keyPath:["clobber"]})}(t)},e.onblocked=()=>{a.a.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},a.a.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),l(e).then(e=>(a.a.log("LocalIndexedDBStoreBackend.connect: connected"),this.db=e.target.result,this.db.onversionchange=()=>{this.db.close()},this._init()))},isNewlyCreated:function(){return Promise.resolve(this._isNewlyCreated)},_init:function(){return Promise.all([this._loadAccountData(),this._loadSyncData()]).then(([e,t])=>{a.a.log("LocalIndexedDBStoreBackend: loaded initial data"),this._syncAccumulator.accumulate({next_batch:t.nextBatch,rooms:t.roomsData,groups:t.groupsData,account_data:{events:e}})})},getOutOfBandMembers:function(e){return new Promise((t,n)=>{const o=this.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),r=IDBKeyRange.only(e),i=o.openCursor(r),a=[];let s=!1;i.onsuccess=e=>{const n=e.target.result;if(!n)return a.length||s?t(a):t(null);const o=n.value;o.oob_written?s=!0:a.push(o),n.continue()},i.onerror=e=>{n(e)}}).then(t=>(a.a.log("LL: got ".concat(t&&t.length)+" membershipEvents from storage for room ".concat(e," ...")),t))},setOutOfBandMembers:async function(e,t){a.a.log("LL: backend about to store ".concat(t.length)+" members for ".concat(e));const n=this.db.transaction(["oob_membership_events"],"readwrite"),o=n.objectStore("oob_membership_events");t.forEach(e=>{o.put(e)});const r={room_id:e,oob_written:!0,state_key:0};o.put(r),await c(n),a.a.log("LL: backend done storing for ".concat(e,"!"))},clearOutOfBandMembers:async function(e){const t=this.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),n=IDBKeyRange.only(e),o=u(t.openKeyCursor(n,"next")).then(e=>e&&e.primaryKey[1]),r=u(t.openKeyCursor(n,"prev")).then(e=>e&&e.primaryKey[1]),[i,s]=await Promise.all([o,r]),c=this.db.transaction(["oob_membership_events"],"readwrite").objectStore("oob_membership_events"),l=IDBKeyRange.bound([e,i],[e,s]);var d;a.a.log("LL: Deleting all users + marker in storage for "+"room ".concat(e,", with key range:"),[e,i],[e,s]),await(d=c.delete(l),new Promise((e,t)=>{d.onsuccess=()=>e(d),d.onerror=e=>t(e)}))},clearDatabase:function(){return new Promise((e,t)=>{a.a.log("Removing indexeddb instance: ".concat(this._dbName));const n=this.indexedDB.deleteDatabase(this._dbName);n.onblocked=()=>{a.a.log("can't yet delete indexeddb ".concat(this._dbName)+" because it is open elsewhere")},n.onerror=t=>{a.a.warn("unable to delete js-sdk store indexeddb: ".concat(t.target.error)),e()},n.onsuccess=()=>{a.a.log("Removed indexeddb instance: ".concat(this._dbName)),e()}})},getSavedSync:function(e){void 0===e&&(e=!0);const t=this._syncAccumulator.getJSON();return t.nextBatch?e?Promise.resolve(r.c(t)):Promise.resolve(t):Promise.resolve(null)},getNextBatchToken:function(){return Promise.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(e){return Promise.resolve().then(()=>{this._syncAccumulator.accumulate(e)})},syncToDatabase:function(e){const t=this._syncAccumulator.getJSON();return Promise.all([this._persistUserPresenceEvents(e),this._persistAccountData(t.accountData),this._persistSyncData(t.nextBatch,t.roomsData,t.groupsData)])},_persistSyncData:function(e,t,n){return a.a.log("Persisting sync data up to ",e),r.x(()=>{const o=this.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t,groupsData:n}),c(o)})},_persistAccountData:function(e){return r.x(()=>{const t=this.db.transaction(["accountData"],"readwrite"),n=t.objectStore("accountData");for(let t=0;t{const t=this.db.transaction(["users"],"readwrite"),n=t.objectStore("users");for(const t of e)n.put({userId:t[0],event:t[1]});return c(t)})},getUserPresenceEvents:function(){return r.x(()=>s(this.db.transaction(["users"],"readonly").objectStore("users"),void 0,e=>[e.value.userId,e.value.event]))},_loadAccountData:function(){return a.a.log("LocalIndexedDBStoreBackend: loading account data..."),r.x(()=>s(this.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,e=>e.value).then(e=>(a.a.log("LocalIndexedDBStoreBackend: loaded account data"),e)))},_loadSyncData:function(){return a.a.log("LocalIndexedDBStoreBackend: loading sync data..."),r.x(()=>s(this.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,e=>e.value).then(e=>(a.a.log("LocalIndexedDBStoreBackend: loaded sync data"),e.length>1&&a.a.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{})))},getClientOptions:function(){return Promise.resolve().then(()=>s(this.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,e=>{if(e.value&&e.value&&e.value.options)return e.value.options}).then(e=>e[0]))},storeClientOptions:async function(e){const t=this.db.transaction(["client_options"],"readwrite");t.objectStore("client_options").put({clobber:"-",options:e}),await c(t)}}},function(e,t,n){var o=n(808);e.exports=function(e){return e&&e.length?o(e):[]}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{constructor(e,t,n){const o=e.getAttribute("data-id"),r=t.isReverseResizeHandle(e),i=r?e.nextElementSibling:e.previousElementSibling;this.domNode=i,this.id=o,this.reverse=r,this.resizer=t,this.sizer=n}_copyWith(e,t,n){return new(0,this.constructor)(e,t,n)}_advance(e){let t=this.reverse?this.domNode.previousElementSibling:this.domNode.nextElementSibling;const n=e!==this.reverse;do{t=n?t.nextElementSibling:t.previousElementSibling}while(t&&!this.resizer.isResizeHandle(t));if(t){const e=this._copyWith(t,this.resizer,this.sizer);return e.reverse=this.reverse,e}}next(){return this._advance(!0)}previous(){return this._advance(!1)}size(){return this.sizer.getItemSize(this.domNode)}offset(){return this.sizer.getItemOffset(this.domNode)}setSize(e){this.sizer.setItemSize(this.domNode,e);const t=this.resizer.config.onResized;t&&t(e,this.id,this.domNode)}clearSize(){this.sizer.clearItemSize(this.domNode);const e=this.resizer.config.onResized;e&&e(null,this.id,this.domNode)}first(){const e=Array.from(this.domNode.parentElement.children).find(e=>this.resizer.isResizeHandle(e));if(e)return this._copyWith(e,this.resizer,this.sizer)}last(){const e=Array.from(this.domNode.parentElement.children).reverse().find(e=>this.resizer.isResizeHandle(e));if(e)return this._copyWith(e,this.resizer,this.sizer)}}},function(e,t,n){"use strict";n.r(t),function(e){n.d(t,"ConferenceCall",(function(){return a})),n.d(t,"isConferenceUser",(function(){return s})),n.d(t,"getConferenceUserIdForRoom",(function(){return c})),n.d(t,"createNewMatrixCall",(function(){return l})),n.d(t,"getConferenceCallForRoom",(function(){return u})),n.d(t,"slot",(function(){return d}));var o=n(13),r=n(58),i=n(4);function a(e,t){this.client=e,this.groupRoomId=t,this.confUserId=c(this.groupRoomId)}function s(t){if(0!==t.indexOf("@fs_"))return!1;const n=t.split(":")[0].substring(1+"fs_".length);if(n){const t=new e(n,"base64").toString();return/^!.+:.+/.test(t)}return!1}function c(t){return"@fs_"+new e(t).toString("base64").replace(/=/g,"")+":matrix.org"}function l(e,t){return new a(e,t).setup()}function u(e){const t=r.a.getAnyActiveCall();if(t&&t.confUserId){if(c(e)===t.confUserId)return t}return null}a.prototype.setup=function(){const e=this;return this._joinConferenceUser().then((function(){return e._getConferenceUserRoom()})).then((function(t){const n=Object(o.t)(e.client,t.roomId);return n.confUserId=e.confUserId,n.groupRoomId=e.groupRoomId,n}))},a.prototype._joinConferenceUser=function(){const e=this.client.getRoom(this.groupRoomId);if(!e)return Promise.reject("Bad group room ID");const t=e.getMember(this.confUserId);return t&&"join"===t.membership?Promise.resolve():this.client.invite(this.groupRoomId,this.confUserId)},a.prototype._getConferenceUserRoom=function(){const e=this.client.getRooms();let t=null;for(let n=0;n-1){let o=i;t>0&&(o=o.splitText(t)),o.textContent.length>e.roomNotifLen()&&(n=o.splitText(e.roomNotifLen())),c.push(o)}i=n}if(c.length>0){const i=new l.a(s.a.get()),u=i.getPushRuleById(".m.rule.roomnotif");if(u&&i.ruleMatchesEvent(u,t)){for(const t of c){p=t.nextSibling;const i=document.createElement("span"),s=r.a.createElement(e,{type:e.TYPE_AT_ROOM_MENTION,inMessage:!0,room:o,shouldShowPillAvatar:!0});a.a.render(s,i),t.parentNode.replaceChild(i,t),n.push(i)}continue}}}p.childNodes&&p.childNodes.length&&!e&&d(p.childNodes,t,n),p=p.nextSibling}}function p(e){for(const t of e)a.a.unmountComponentAtNode(t)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return k})),n.d(t,"b",(function(){return R})),n.d(t,"c",(function(){return A}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(1),u=n(3),d=n(4),p=n(31),h=n(41),m=(n(92),n(16)),g=n(55),f=n(112),_=n(68),v=n(63),b=n(6),y=n(66),E=n(9);var S=n(61),w=n(83),C=n(7),x=n(50),T=n(15);const k="dm",R="invite";class O{get name(){throw new Error("Member class not implemented")}get userId(){throw new Error("Member class not implemented")}getMxcAvatarUrl(){throw new Error("Member class not implemented")}}class D extends O{constructor(e){super(),r()(this,"_userId",void 0),r()(this,"_displayName",void 0),r()(this,"_avatarUrl",void 0),this._userId=e.user_id,this._displayName=e.display_name,this._avatarUrl=e.avatar_url}get name(){return this._displayName||this._userId}get userId(){return this._userId}getMxcAvatarUrl(){return this._avatarUrl}}class I extends O{constructor(e){super(),r()(this,"_id",void 0),this._id=e}get isEmail(){return this._id.includes("@")}get name(){return this._id}get userId(){return this._id}getMxcAvatarUrl(){return null}}class F extends a.a.PureComponent{constructor(...e){super(...e),r()(this,"_onRemove",e=>{e.preventDefault(),e.stopPropagation(),this.props.onRemove(this.props.member)})}render(){const e=u.a("views.avatars.BaseAvatar"),t=u.a("elements.AccessibleButton"),o=this.props.member.isEmail?a.a.createElement("img",{className:"mx_InviteDialog_userTile_avatar mx_InviteDialog_userTile_threepidAvatar",src:n(379),width:20,height:20}):a.a.createElement(e,{className:"mx_InviteDialog_userTile_avatar",url:Object(g.a)(d.a.get().getHomeserverUrl(),this.props.member.getMxcAvatarUrl(),20,20,"crop"),name:this.props.member.name,idName:this.props.member.userId,width:20,height:20});let r;return this.props.onRemove&&(r=a.a.createElement(t,{className:"mx_InviteDialog_userTile_remove",onClick:this._onRemove},a.a.createElement("img",{src:n(853),alt:Object(l.a)("Remove"),width:8,height:8}))),a.a.createElement("span",{className:"mx_InviteDialog_userTile"},a.a.createElement("span",{className:"mx_InviteDialog_userTile_pill"},o,a.a.createElement("span",{className:"mx_InviteDialog_userTile_name"},this.props.member.name)),r)}}r()(F,"propTypes",{member:c.a.object.isRequired,onRemove:c.a.func});class N extends a.a.PureComponent{constructor(...e){super(...e),r()(this,"_onClick",e=>{e.preventDefault(),e.stopPropagation(),this.props.onToggle(this.props.member)})}_highlightName(e){if(!this.props.highlightWord)return e;const t=e.toLowerCase(),n=this.props.highlightWord.toLowerCase(),o=[];let r,i=0;for(;(r=t.indexOf(n,i))>=0;){r>i&&o.push(a.a.createElement("span",{key:i+"begin"},e.substring(i,r))),i=r;const t=e.substring(i,n.length+i);o.push(a.a.createElement("span",{className:"mx_InviteDialog_roomTile_highlight",key:i+"bold"},t)),i+=t.length}return i=0?t<=15e3?Object(l.a)("a few seconds ago"):t<=75e3?Object(l.a)("about a minute ago"):n<=45?Object(l.a)("%(num)s minutes ago",{num:n}):n<=75?Object(l.a)("about an hour ago"):o<=23?Object(l.a)("%(num)s hours ago",{num:o}):o<=26?Object(l.a)("about a day ago"):Object(l.a)("%(num)s days ago",{num:r}):(t=Math.abs(t),t<=15e3?Object(l.a)("a few seconds from now"):t<=75e3?Object(l.a)("about a minute from now"):n<=45?Object(l.a)("%(num)s minutes from now",{num:n}):n<=75?Object(l.a)("about an hour from now"):o<=23?Object(l.a)("%(num)s hours from now",{num:o}):o<=26?Object(l.a)("about a day from now"):Object(l.a)("%(num)s days from now",{num:r}))}(this.props.lastActiveTs);t=a.a.createElement("span",{className:"mx_InviteDialog_roomTile_time"},e)}const o=this.props.member.isEmail?a.a.createElement("img",{src:n(379),width:36,height:36}):a.a.createElement(e,{url:Object(g.a)(d.a.get().getHomeserverUrl(),this.props.member.getMxcAvatarUrl(),36,36,"crop"),name:this.props.member.name,idName:this.props.member.userId,width:36,height:36});let r=null;this.props.isSelected&&(r=a.a.createElement("div",{className:"mx_InviteDialog_roomTile_selected"}));const i=a.a.createElement("span",{className:"mx_InviteDialog_roomTile_avatarStack"},o,r);return a.a.createElement("div",{className:"mx_InviteDialog_roomTile",onClick:this._onClick},i,a.a.createElement("span",{className:"mx_InviteDialog_roomTile_name"},this._highlightName(this.props.member.name)),a.a.createElement("span",{className:"mx_InviteDialog_roomTile_userId"},this._highlightName(this.props.member.userId)),t)}}r()(N,"propTypes",{member:c.a.object.isRequired,lastActiveTs:c.a.number,onToggle:c.a.func.isRequired,highlightWord:c.a.string,isSelected:c.a.bool});class A extends a.a.PureComponent{constructor(e){if(super(e),r()(this,"_debounceTimer",null),r()(this,"_editorRef",null),r()(this,"_startDm",async()=>{this.setState({busy:!0});const e=this._convertFilter().map(e=>e.userId),t=h.a.shared().getDMRoomForIdentifiers(e);if(t)return b.a.dispatch({action:"view_room",room_id:t.roomId,should_peek:!1,joining:!1}),void this.props.onFinished();const n={inlineErrors:!0};if(C.b.isFeatureEnabled("feature_cross_signing")){const t=d.a.get();await Object(S.a)(t,e)&&(n.encryption=!0)}let o=Promise.resolve();const r=1===e.length&&e[0]===d.a.get().getUserId();1!==e.length||r?o=r?Object(S.b)(n):Object(S.b)(n).then(t=>Object(w.a)(t,e)).then(e=>{if(this._shouldAbortAfterInviteError(e))return!0}):(n.dmUserId=e[0],o=Object(S.b)(n)),o.then(e=>{!0!==e&&this.props.onFinished()}).catch(e=>{console.error(e),this.setState({busy:!1,errorText:Object(l.a)("We couldn't create your DM. Please check the users you want to invite and try again.")})})}),r()(this,"_inviteUsers",()=>{this.setState({busy:!0}),this._convertFilter();const e=this._convertFilter().map(e=>e.userId);if(!d.a.get().getRoom(this.props.roomId))return console.error("Failed to find the room to invite users to"),void this.setState({busy:!1,errorText:Object(l.a)("Something went wrong trying to invite the users.")});Object(w.a)(this.props.roomId,e).then(e=>{this._shouldAbortAfterInviteError(e)||this.props.onFinished()}).catch(e=>{console.error(e),this.setState({busy:!1,errorText:Object(l.a)("We couldn't invite those users. Please check the users you want to invite and try again.")})})}),r()(this,"_onKeyDown",e=>{e.target.value||this.state.busy||!(this.state.targets.length>0)||e.key!==T.a.BACKSPACE||e.ctrlKey||e.shiftKey||e.metaKey||(e.preventDefault(),this._removeMember(this.state.targets[this.state.targets.length-1]))}),r()(this,"_updateFilter",e=>{const t=e.target.value;this.setState({filterText:t}),this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(async()=>{if(d.a.get().searchUserDirectory({term:t}).then(async e=>{if(t===this.state.filterText){if(e.results||(e.results=[]),"@"===t[0]&&t.indexOf(":")>1)try{const n=await d.a.get().getProfileInfo(t);n&&e.results.splice(0,0,{user_id:t,display_name:n.displayname,avatar_url:n.avatar_url})}catch(n){console.warn("Non-fatal error trying to make an invite for a user ID"),console.warn(n),e.results.splice(0,0,{user_id:t,display_name:t,avatar_url:null})}this.setState({serverResultsMixin:e.results.map(e=>({userId:e.user_id,user:new D(e)}))})}}).catch(e=>{console.error("Error searching user directory:"),console.error(e),this.setState({serverResultsMixin:[]})}),this.state.canUseIdentityServer){if(t.indexOf("@")>0&&f.a(t)){this.setState({threepidResultsMixin:[{user:new I(t),userId:t}]});try{const e=new y.a,n=await e.getAccessToken();if(t!==this.state.filterText)return;const o=await d.a.get().lookupThreePid("email",t,void 0,n);if(t!==this.state.filterText)return;if(!o||!o.mxid)return;const r=await d.a.get().getProfileInfo(o.mxid);if(t!==this.state.filterText||!r)return;this.setState({threepidResultsMixin:[...this.state.threepidResultsMixin,{user:new D({user_id:o.mxid,display_name:r.displayname,avatar_url:r.avatar_url}),userId:o.mxid}]})}catch(e){console.error("Error searching identity server:"),console.error(e),this.setState({threepidResultsMixin:[]})}}}else this.setState({tryingIdentityServer:!0})},150)}),r()(this,"_showMoreRecents",()=>{this.setState({numRecentsShown:this.state.numRecentsShown+5})}),r()(this,"_showMoreSuggestions",()=>{this.setState({numSuggestionsShown:this.state.numSuggestionsShown+5})}),r()(this,"_toggleMember",e=>{let t=this.state.filterText;const n=this.state.targets.map(e=>e),o=n.indexOf(e);o>=0?n.splice(o,1):(n.push(e),t=""),this.setState({targets:n,filterText:t})}),r()(this,"_removeMember",e=>{const t=this.state.targets.map(e=>e),n=t.indexOf(e);n>=0&&(t.splice(n,1),this.setState({targets:t}))}),r()(this,"_onPaste",async e=>{if(this.state.filterText)return;e.preventDefault();const t=e.clipboardData.getData("text"),n=[...this.state.recents,...this.state.suggestions,...this.state.serverResultsMixin,...this.state.threepidResultsMixin],o=[],r=[],i=t.split(/[\s,]+/).map(e=>e.trim()).filter(e=>!!e);for(const t of i){const i=n.find(e=>e.userId===t);if(i)o.push(i.user);else if(t.indexOf("@")>0&&f.a(t))o.push(new I(t));else if("@"===t[0])try{const e=await d.a.get().getProfileInfo(t),n=e?e.displayname:null,r=e?e.avatar_url:null;o.push(new D({user_id:t,display_name:n,avatar_url:r}))}catch(e){console.error("Error looking up profile for "+t),console.error(e),r.push(t)}else r.push(t)}if(r.length>0){const e=u.a("dialogs.QuestionDialog");E.a.createTrackedDialog("Invite Paste Fail","",e,{title:Object(l.a)("Failed to find the following users"),description:Object(l.a)("The following users might not exist or are invalid, and cannot be invited: %(csvNames)s",{csvNames:r.join(", ")}),button:Object(l.a)("OK")})}this.setState({targets:[...this.state.targets,...o]})}),r()(this,"_onClickInputArea",e=>{e.preventDefault(),e.stopPropagation(),this._editorRef&&this._editorRef.current&&this._editorRef.current.focus()}),r()(this,"_onUseDefaultIdentityServerClick",e=>{e.preventDefault(),Object(_.d)(),this.setState({canUseIdentityServer:!0,tryingIdentityServer:!1})}),r()(this,"_onManageSettingsClick",e=>{e.preventDefault(),b.a.dispatch({action:"view_user_settings"}),this.props.onFinished()}),e.kind===R&&!e.roomId)throw new Error("When using KIND_INVITE a roomId is required for an InviteDialog");const t=new Set([d.a.get().getUserId(),m.a.get().welcomeUserId]);if(e.roomId){const n=d.a.get().getRoom(e.roomId);if(!n)throw new Error("Room ID given to InviteDialog does not look like a room");n.getMembersWithMembership("invite").forEach(e=>t.add(e.userId)),n.getMembersWithMembership("join").forEach(e=>t.add(e.userId)),n.getMembersWithMembership("ban").forEach(e=>t.add(e.userId))}this.state={targets:[],filterText:"",recents:this._buildRecents(t),numRecentsShown:3,suggestions:this._buildSuggestions(t),numSuggestionsShown:3,serverResultsMixin:[],threepidResultsMixin:[],canUseIdentityServer:!!d.a.get().getIdentityServerUrl(),tryingIdentityServer:!1,busy:!1,errorText:null},this._editorRef=Object(i.createRef)()}_buildRecents(e){const t=h.a.shared().getUniqueRoomsWithIndividuals(),n=x.b.getRoomLists()[x.a],o=d.a.get().getUserId();for(const e of n){const n=e.getJoinedMembers().filter(e=>e.userId!==o);for(const o of n)t[o.userId]||(console.warn("Adding DM room for ".concat(o.userId," as ").concat(e.roomId," from tag, not DM map")),t[o.userId]=e)}const r=[];for(const n in t){if(e.has(n)){console.warn("[Invite:Recents] Excluding ".concat(n," from recents"));continue}const o=t[n],i=o.getMember(n);if(!i){console.warn("[Invite:Recents] ".concat(n," is missing a member object in their own DM (").concat(o.roomId,")"));continue}const a=["m.room.message","m.room.encrypted","m.sticker"],s=20;let c=0;if(o.timeline&&o.timeline.length)for(let e=o.timeline.length-1;e>=0;e--){const t=o.timeline[e];if(a.includes(t.getType())){c=t.getTs();break}if(o.timeline.length-e>s)break}c?r.push({userId:n,user:i,lastActive:c}):console.warn("[Invite:Recents] ".concat(n," (").concat(o.roomId,") has a weird last timestamp: ").concat(c))}return r||console.warn("[Invite:Recents] No recents to suggest!"),r.sort((e,t)=>t.lastActive-e.lastActive),r}_buildSuggestions(e){const t=d.a.get().getRooms().filter(e=>"join"===e.getMyMembership()&&e.getJoinedMemberCount()<=200).reduce((t,n)=>{if(h.a.shared().getUserIdForRoomId(n.roomId))return t;const o=n.getJoinedMembers().filter(t=>!e.has(t.userId));for(const r of o)e.has(r.userId)||(t[r.userId]||(t[r.userId]={member:r,pickedMemberRoomSize:n.getJoinedMemberCount(),rooms:[]}),t[r.userId].rooms.push(n),n.getJoinedMemberCount(){const n=t.rooms.reduce((e,t)=>e+t.getJoinedMemberCount(),0),o=200*t.rooms.length;return e[t.member.userId]={member:t.member,numRooms:t.rooms.length,score:Math.max(0,Math.pow(1-n/o,5))},e},{}),o=d.a.get().getRooms().filter(e=>"join"===e.getMyMembership()),r=(new Date).getTime(),i=r-36e5,a={},s={};for(const t of o){const n=h.a.shared().getUserIdForRoomId(t.roomId);if(Object.keys(t.tags).includes("m.lowpriority")||n)continue;const o=t.getLiveTimeline().getEvents();for(let n=o.length-1;n>=Math.max(0,o.length-50);n--){const r=o[n];if(!e.has(r.getSender())){if(r.getTs()<=i)break;(!a[r.getSender()]||a[r.getSender()]e.score===t.score?e.numRooms===t.numRooms?e.member.userId.localeCompare(t.member.userId):t.numRooms-e.numRooms:t.score-e.score),c.map(e=>({userId:e.member.userId,user:e.member}))}_shouldAbortAfterInviteError(e){const t=Object.keys(e.states).filter(t=>"error"===e.states[t]);return t.length>0&&(console.log("Failed to invite users: ",e),this.setState({busy:!1,errorText:Object(l.a)("Failed to invite the following users to chat: %(csvUsers)s",{csvUsers:t.join(", ")})}),!0)}_convertFilter(){if(!this.state.filterText||!this.state.filterText.includes("@"))return this.state.targets||[];let e;e=this.state.filterText.startsWith("@")?new D({user_id:this.state.filterText,display_name:null,avatar_url:null}):new I(this.state.filterText);const t=[...this.state.targets||[],e];return this.setState({targets:t,filterText:""}),t}_renderSection(e){let t="recents"===e?this.state.recents:this.state.suggestions,n="recents"===e?this.state.numRecentsShown:this.state.numSuggestionsShown;const o="recents"===e?this._showMoreRecents.bind(this):this._showMoreSuggestions.bind(this);let r="recents"===e?Object(l.a)("Recent Conversations"):Object(l.a)("Suggestions");this.props.kind===R&&(r="recents"===e?Object(l.a)("Recently Direct Messaged"):Object(l.a)("Suggestions"));let i=[],s=[];const c=this.state.serverResultsMixin||this.state.threepidResultsMixin;if(this.state.filterText&&c&&"suggestions"===e){const e=e=>!t.some(t=>t.userId===e.userId)&&!i.some(t=>t.userId===e.userId)&&!s.some(t=>t.userId===e.userId);s=this.state.serverResultsMixin.filter(e),i=this.state.threepidResultsMixin.filter(e)}const d=i.length>0||s.length>0;if(0===t.length&&!d)return null;if(this.state.filterText){const e=this.state.filterText.toLowerCase();if(t=t.filter(t=>t.user.name.toLowerCase().includes(e)||t.userId.toLowerCase().includes(e)),0===t.length&&!d)return a.a.createElement("div",{className:"mx_InviteDialog_section"},a.a.createElement("h3",null,r),a.a.createElement("p",null,Object(l.a)("No results")))}t=[...i,...t,...s],n===t.length-1&&n++;const p=t.slice(0,n),h=p.length{return a.a.createElement(N,{member:t.user,lastActiveTs:(n=t,"recents"===e?n.lastActive:null),key:t.userId,onToggle:this._toggleMember,highlightWord:this.state.filterText,isSelected:this.state.targets.some(e=>e.userId===t.userId)});var n});return a.a.createElement("div",{className:"mx_InviteDialog_section"},a.a.createElement("h3",null,r),f,g)}_renderEditor(){const e=this.state.targets.map(e=>a.a.createElement(F,{member:e,onRemove:!this.state.busy&&this._removeMember,key:e.userId})),t=a.a.createElement("textarea",{rows:1,onKeyDown:this._onKeyDown,onChange:this._updateFilter,value:this.state.filterText,ref:this._editorRef,onPaste:this._onPaste,autoFocus:!0,disabled:this.state.busy});return a.a.createElement("div",{className:"mx_InviteDialog_editor",onClick:this._onClickInputArea},e,t)}_renderIdentityServerWarning(){if(!this.state.tryingIdentityServer||this.state.canUseIdentityServer)return null;const e=Object(_.c)();return e?a.a.createElement("div",{className:"mx_AddressPickerDialog_identityServer"},Object(l.a)("Use an identity server to invite by email. Use the default (%(defaultIdentityServerName)s) or manage in Settings.",{defaultIdentityServerName:Object(v.a)(e)},{default:e=>a.a.createElement("a",{href:"#",onClick:this._onUseDefaultIdentityServerClick},e),settings:e=>a.a.createElement("a",{href:"#",onClick:this._onManageSettingsClick},e)})):a.a.createElement("div",{className:"mx_AddressPickerDialog_identityServer"},Object(l.a)("Use an identity server to invite by email. Manage in Settings.",{},{settings:e=>a.a.createElement("a",{href:"#",onClick:this._onManageSettingsClick},e)}))}render(){const e=u.a("views.dialogs.BaseDialog"),t=u.a("elements.AccessibleButton"),n=u.a("elements.Spinner");let o,r,i,s,c=null;if(this.state.busy&&(c=a.a.createElement(n,{w:20,h:20})),this.props.kind===k){const e=d.a.get().getUserId();o=Object(l.a)("Direct Messages"),r=Object(l.a)("Start a conversation with someone using their name, username (like ) or email address.",{},{userId:()=>a.a.createElement("a",{href:Object(p.g)(e),rel:"noreferrer noopener",target:"_blank"},e)}),i=Object(l.a)("Go"),s=this._startDm}else o=Object(l.a)("Invite to this room"),r=Object(l.a)("If you can't find someone, ask them for their username (e.g. @user:server.com) or share this room.",{},{a:e=>a.a.createElement("a",{href:Object(p.f)(this.props.roomId),rel:"noreferrer noopener",target:"_blank"},e)}),i=Object(l.a)("Invite"),s=this._inviteUsers;const h=this.state.targets.length>0||this.state.filterText&&this.state.filterText.includes("@");return a.a.createElement(e,{className:"mx_InviteDialog",hasCancel:!0,onFinished:this.props.onFinished,title:o},a.a.createElement("div",{className:"mx_InviteDialog_content"},a.a.createElement("p",{className:"mx_InviteDialog_helpText"},r),a.a.createElement("div",{className:"mx_InviteDialog_addressBar"},this._renderEditor(),a.a.createElement("div",{className:"mx_InviteDialog_buttonAndSpinner"},a.a.createElement(t,{kind:"primary",onClick:s,className:"mx_InviteDialog_goButton",disabled:this.state.busy||!h},i),c)),this._renderIdentityServerWarning(),a.a.createElement("div",{className:"error"},this.state.errorText),a.a.createElement("div",{className:"mx_InviteDialog_userSections"},this._renderSection("recents"),this._renderSection("suggestions"))))}}r()(A,"propTypes",{onFinished:c.a.func.isRequired,kind:c.a.string,roomId:c.a.string}),r()(A,"defaultProps",{kind:k})},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){var o=n(125).Symbol;e.exports=o},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){e.exports={}},function(e,t,n){var o=n(651),r=n(307);e.exports=Object.keys||function(e){return o(e,r)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCorners=t.offset=t.isEqual=t.addPosition=t.add=void 0;var o,r=n(174),i=(o=r)&&o.__esModule?o:{default:o};t.add=function(e,t){return{top:e.top+t.top,left:e.left+t.left,right:e.right+t.right,bottom:e.bottom+t.bottom}},t.addPosition=function(e,t){return(0,i.default)({},e,{right:e.right+t.x,bottom:e.bottom+t.y})},t.isEqual=function(e,t){return e.top===t.top&&e.right===t.right&&e.bottom===t.bottom&&e.left===t.left},t.offset=function(e,t){return{top:e.top+t.y,right:e.right+t.x,bottom:e.bottom+t.y,left:e.left+t.x}},t.getCorners=function(e){return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.left,y:e.bottom},{x:e.right,y:e.bottom}]}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n(82);t.default=function(e){var t=e.source,n=e.sourceEdge,r=e.destination,i=e.destinationEdge,a=e.destinationAxis,s=function(e){return(0,o.patch)(a.line,e[a[i]],e[a.crossAxisStart])},c=s(r),l=(0,o.absolute)((0,o.subtract)(t.center,s(t))),u=(0,o.patch)(a.line,("end"===n?-1:1)*l[a.line],l[a.crossLine]);return(0,o.add)(c,u)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assignRef=function(e,t){return"function"==typeof e?e(t):null!=e&&(e.current=t),e}},function(e,t,n){var o=n(192),r=n(199);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==o(e)}},function(e,t,n){"use strict";var o=n(283);var r=RegExp(Object.keys(o).map((function(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")})).join("|"),"g");function i(e){return o[e]}e.exports=function(e){return e.replace(r,i)}},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));const o=Object.freeze({IS:"SERVICE_TYPE_IS",IM:"SERVICE_TYPE_IM"})},function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var o=n(28),r=n(180),i=n(8),a=n(10);function s(e,t){this.roomId=e,this.members={},this.events={},this.paginationToken=null,this._sentinels={},this._updateModifiedTime(),this._displayNameToUserIds={},this._userIdsToDisplayNames={},this._tokenToInvite={},this._joinedMemberCount=null,this._summaryJoinedMemberCount=null,this._invitedMemberCount=null,this._summaryInvitedMemberCount=null,t||(t={status:1}),this._oobMemberFlags=t}function c(e,t,n){const o=e._userIdsToDisplayNames[t];if(delete e._userIdsToDisplayNames[t],o){const n=a.z(o),r=e._displayNameToUserIds[n];if(r){const o=r.filter(e=>e!==t);e._displayNameToUserIds[n]=o}}e._userIdsToDisplayNames[t]=n;const r=n&&a.z(n);r&&(e._displayNameToUserIds[r]||(e._displayNameToUserIds[r]=[]),e._displayNameToUserIds[r].push(t))}a.o(s,o.EventEmitter),s.prototype.getJoinedMemberCount=function(){return null!==this._summaryJoinedMemberCount?this._summaryJoinedMemberCount:(null===this._joinedMemberCount&&(this._joinedMemberCount=this.getMembers().reduce((e,t)=>"join"===t.membership?e+1:e,0)),this._joinedMemberCount)},s.prototype.setJoinedMemberCount=function(e){this._summaryJoinedMemberCount=e},s.prototype.getInvitedMemberCount=function(){return null!==this._summaryInvitedMemberCount?this._summaryInvitedMemberCount:(null===this._invitedMemberCount&&(this._invitedMemberCount=this.getMembers().reduce((e,t)=>"invite"===t.membership?e+1:e,0)),this._invitedMemberCount)},s.prototype.setInvitedMemberCount=function(e){this._summaryInvitedMemberCount=e},s.prototype.getMembers=function(){return a.B(this.members)},s.prototype.getMembersExcept=function(e){return a.B(this.members).filter(t=>!e.includes(t.userId))},s.prototype.getMember=function(e){return this.members[e]||null},s.prototype.getSentinelMember=function(e){if(!e)return null;let t=this._sentinels[e];if(void 0===t){t=new r.a(this.roomId,e);const n=this.members[e];n&&t.setMembershipEvent(n.events.member,this),this._sentinels[e]=t}return t},s.prototype.getStateEvents=function(e,t){if(!this.events[e])return void 0===t?[]:null;if(void 0===t)return a.B(this.events[e]);const n=this.events[e][t];return n||null},s.prototype.clone=function(){const e=new s(this.roomId,this._oobMemberFlags),t=this._oobMemberFlags.status;return this._oobMemberFlags.status=1,Object.values(this.events).forEach(t=>{const n=Object.values(t);e.setStateEvents(n)}),this._oobMemberFlags.status=t,null!==this._summaryInvitedMemberCount&&e.setInvitedMemberCount(this.getInvitedMemberCount()),null!==this._summaryJoinedMemberCount&&e.setJoinedMemberCount(this.getJoinedMemberCount()),3==this._oobMemberFlags.status&&this.getMembers().forEach(t=>{if(t.isOutOfBand()){e.getMember(t.userId).markOutOfBand()}}),e},s.prototype.setUnknownStateEvents=function(e){const t=e.filter(e=>void 0===this.events[e.getType()]||void 0===this.events[e.getType()][e.getStateKey()]);this.setStateEvents(t)},s.prototype.setStateEvents=function(e){const t=this;this._updateModifiedTime(),a.l(e,(function(e){e.getRoomId()===t.roomId&&e.isState()&&(t._setStateEvent(e),"m.room.member"===e.getType()&&(c(t,e.getStateKey(),e.getContent().displayname),function(e,t){if(!t.getContent().third_party_invite)return;const n=(t.getContent().third_party_invite.signed||{}).token;if(!n)return;if(!e.getStateEvents("m.room.third_party_invite",n))return;e._tokenToInvite[n]=t}(t,e)),t.emit("RoomState.events",e,t))})),a.l(e,(function(e){if(e.getRoomId()===t.roomId&&e.isState())if("m.room.member"===e.getType()){const n=e.getStateKey();"leave"!==e.getContent().membership&&"ban"!==e.getContent().membership||(e.getContent().avatar_url=e.getContent().avatar_url||e.getPrevContent().avatar_url,e.getContent().displayname=e.getContent().displayname||e.getPrevContent().displayname);const o=t._getOrCreateMember(n,e);o.setMembershipEvent(e,t),t._updateMember(o),t.emit("RoomState.members",e,t,o)}else if("m.room.power_levels"===e.getType()){const n=a.B(t.members);a.l(n,(function(n){n.setPowerLevelEvent(e),t.emit("RoomState.members",e,t,n)})),t._sentinels={}}}))},s.prototype._getOrCreateMember=function(e,t){let n=this.members[e];return n||(n=new r.a(this.roomId,e),this.members[e]=n,this.emit("RoomState.newMember",t,this,n)),n},s.prototype._setStateEvent=function(e){void 0===this.events[e.getType()]&&(this.events[e.getType()]={}),this.events[e.getType()][e.getStateKey()]=e},s.prototype._updateMember=function(e){const t=this.getStateEvents("m.room.power_levels","");t&&e.setPowerLevelEvent(t),delete this._sentinels[e.userId],this.members[e.userId]=e,this._joinedMemberCount=null,this._invitedMemberCount=null},s.prototype.needsOutOfBandMembers=function(){return 1===this._oobMemberFlags.status},s.prototype.markOutOfBandMembersStarted=function(){1===this._oobMemberFlags.status&&(this._oobMemberFlags.status=2)},s.prototype.markOutOfBandMembersFailed=function(){2===this._oobMemberFlags.status&&(this._oobMemberFlags.status=1)},s.prototype.clearOutOfBandMembers=function(){let e=0;Object.keys(this.members).forEach(t=>{this.members[t].isOutOfBand()&&(++e,delete this.members[t])}),i.a.log("LL: RoomState removed ".concat(e," members...")),this._oobMemberFlags.status=1},s.prototype.setOutOfBandMembers=function(e){i.a.log("LL: RoomState about to set ".concat(e.length," OOB members ...")),2===this._oobMemberFlags.status&&(i.a.log("LL: RoomState put in OOB_STATUS_FINISHED state ..."),this._oobMemberFlags.status=3,e.forEach(e=>this._setOutOfBandMember(e)))},s.prototype._setOutOfBandMember=function(e){if("m.room.member"!==e.getType())return;const t=e.getStateKey(),n=this.getMember(t);if(n&&!n.isOutOfBand())return;const o=this._getOrCreateMember(t,e);o.setMembershipEvent(e,this),o.markOutOfBand(),c(this,o.userId,o.name),this._setStateEvent(e),this._updateMember(o),this.emit("RoomState.members",e,this,o)},s.prototype.setTypingEvent=function(e){a.l(a.B(this.members),(function(t){t.setTypingEvent(e)}))},s.prototype.getInviteForThreePidToken=function(e){return this._tokenToInvite[e]||null},s.prototype._updateModifiedTime=function(){this._modified=Date.now()},s.prototype.getLastModifiedTime=function(){return this._modified},s.prototype.getUserIdsWithDisplayName=function(e){return this._displayNameToUserIds[a.z(e)]||[]},s.prototype.maySendRedactionForEvent=function(e,t){const n=this.getMember(t);if(!n||"leave"===n.membership)return!1;if(e.status||e.isRedacted())return!1;const o=this.maySendEvent("m.room.redaction",t);return e.getSender()===t?o:this._hasSufficientPowerLevelFor("redact",n.powerLevel)},s.prototype._hasSufficientPowerLevelFor=function(e,t){const n=this.getStateEvents("m.room.power_levels","");let o={};n&&(o=n.getContent());let r=50;return a.s(o[e])&&(r=o[e]),t>=r},s.prototype.maySendMessage=function(e){return this._maySendEventOfType("m.room.message",e,!1)},s.prototype.maySendEvent=function(e,t){return this._maySendEventOfType(e,t,!1)},s.prototype.mayClientSendStateEvent=function(e,t){return!t.isGuest()&&this.maySendStateEvent(e,t.credentials.userId)},s.prototype.maySendStateEvent=function(e,t){return this._maySendEventOfType(e,t,!0)},s.prototype._maySendEventOfType=function(e,t,n){const o=this.getStateEvents("m.room.power_levels","");let r,i={},a=0,s=0,c=0;if(o){r=o.getContent(),i=r.events||{},a=Number.isFinite(r.state_default)?r.state_default:50;const e=r.users&&r.users[t];Number.isFinite(e)?c=e:Number.isFinite(r.users_default)&&(c=r.users_default),Number.isFinite(r.events_default)&&(s=r.events_default)}let l=n?a:s;return Number.isFinite(i[e])&&(l=i[e]),c>=l},s.prototype.mayTriggerNotifOfType=function(e,t){const n=this.getMember(t);if(!n)return!1;const o=this.getStateEvents("m.room.power_levels","");let r=50;return o&&o.getContent()&&o.getContent().notifications&&a.s(o.getContent().notifications[e])&&(r=o.getContent().notifications[e]),n.powerLevel>=r}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(8),r=n(32);class i{static get ERROR_INVALID(){return"Invalid homeserver discovery response"}static get ERROR_GENERIC_FAILURE(){return"Failed to get autodiscovery configuration from server"}static get ERROR_INVALID_HS_BASE_URL(){return"Invalid base_url for m.homeserver"}static get ERROR_INVALID_HOMESERVER(){return"Homeserver URL does not appear to be a valid Matrix homeserver"}static get ERROR_INVALID_IS_BASE_URL(){return"Invalid base_url for m.identity_server"}static get ERROR_INVALID_IDENTITY_SERVER(){return"Identity server URL does not appear to be a valid identity server"}static get ERROR_INVALID_IS(){return"Invalid identity server discovery response"}static get ERROR_MISSING_WELLKNOWN(){return"No .well-known JSON file found"}static get ERROR_INVALID_JSON(){return"Invalid JSON"}static get ALL_ERRORS(){return[i.ERROR_INVALID,i.ERROR_GENERIC_FAILURE,i.ERROR_INVALID_HS_BASE_URL,i.ERROR_INVALID_HOMESERVER,i.ERROR_INVALID_IS_BASE_URL,i.ERROR_INVALID_IDENTITY_SERVER,i.ERROR_INVALID_IS,i.ERROR_MISSING_WELLKNOWN,i.ERROR_INVALID_JSON]}static get FAIL_ERROR(){return"FAIL_ERROR"}static get FAIL_PROMPT(){return"FAIL_PROMPT"}static get PROMPT(){return"PROMPT"}static get SUCCESS(){return"SUCCESS"}static async fromDiscoveryConfig(e){const t={"m.homeserver":{state:i.FAIL_ERROR,error:i.ERROR_INVALID,base_url:null},"m.identity_server":{state:i.PROMPT,error:null,base_url:null}};if(!e||!e["m.homeserver"])return o.a.error("No m.homeserver key in config"),t["m.homeserver"].state=i.FAIL_PROMPT,t["m.homeserver"].error=i.ERROR_INVALID,Promise.resolve(t);if(!e["m.homeserver"].base_url)return o.a.error("No m.homeserver base_url in config"),t["m.homeserver"].state=i.FAIL_PROMPT,t["m.homeserver"].error=i.ERROR_INVALID_HS_BASE_URL,Promise.resolve(t);const n=this._sanitizeWellKnownUrl(e["m.homeserver"].base_url);if(!n)return o.a.error("Invalid base_url for m.homeserver"),t["m.homeserver"].error=i.ERROR_INVALID_HS_BASE_URL,Promise.resolve(t);const r=await this._fetchWellKnownObject("".concat(n,"/_matrix/client/versions"));if(!r||!r.raw.versions)return o.a.error("Invalid /versions response"),t["m.homeserver"].error=i.ERROR_INVALID_HOMESERVER,t["m.homeserver"].base_url=n,Promise.resolve(t);t["m.homeserver"]={state:i.SUCCESS,error:null,base_url:n};let a="";if(e["m.identity_server"]){const n={"m.homeserver":t["m.homeserver"],"m.identity_server":{state:i.FAIL_PROMPT,error:i.ERROR_INVALID_IS,base_url:null}};if(a=this._sanitizeWellKnownUrl(e["m.identity_server"].base_url),!a)return o.a.error("Invalid base_url for m.identity_server"),n["m.identity_server"].error=i.ERROR_INVALID_IS_BASE_URL,Promise.resolve(n);const r=await this._fetchWellKnownObject("".concat(a,"/_matrix/identity/api/v1"));if(!r||!r.raw||"SUCCESS"!==r.action)return o.a.error("Invalid /api/v1 response"),n["m.identity_server"].error=i.ERROR_INVALID_IDENTITY_SERVER,n["m.identity_server"].base_url=a,Promise.resolve(n)}return a&&a.length>0&&(t["m.identity_server"]={state:i.SUCCESS,error:null,base_url:a}),Object.keys(e).map(n=>{if("m.homeserver"===n||"m.identity_server"===n){const o=["error","state","base_url"];for(const r of Object.keys(e[n]))o.includes(r)||(t[n][r]=e[n][r])}else t[n]=e[n]}),Promise.resolve(t)}static async findClientConfig(e){if(!e||"string"!=typeof e||0===e.length)throw new Error("'domain' must be a string of non-zero length");const t={"m.homeserver":{state:i.FAIL_ERROR,error:i.ERROR_INVALID,base_url:null},"m.identity_server":{state:i.PROMPT,error:null,base_url:null}},n=await this._fetchWellKnownObject("https://".concat(e,"/.well-known/matrix/client"));return n&&"SUCCESS"===n.action?i.fromDiscoveryConfig(n.raw):(o.a.error("No response or error when parsing .well-known"),n.reason&&o.a.error(n.reason),"IGNORE"===n.action?t["m.homeserver"]={state:i.PROMPT,error:null,base_url:null}:(t["m.homeserver"].state=i.FAIL_PROMPT,t["m.homeserver"].error=i.ERROR_INVALID),Promise.resolve(t))}static async getRawClientConfig(e){if(!e||"string"!=typeof e||0===e.length)throw new Error("'domain' must be a string of non-zero length");const t=await this._fetchWellKnownObject("https://".concat(e,"/.well-known/matrix/client"));return t&&t.raw||{}}static _sanitizeWellKnownUrl(e){if(!e)return!1;try{let t=null;try{t=r.URL?new r.URL(e):new URL(e)}catch(n){t=new URL(e)}if(!t||!t.hostname)return!1;if("http:"!==t.protocol&&"https:"!==t.protocol)return!1;const n=t.port?":".concat(t.port):"",o=t.pathname?t.pathname:"";let i="".concat(t.protocol,"//").concat(t.hostname).concat(n).concat(o);return i.endsWith("/")&&(i=i.substring(0,i.length-1)),i}catch(e){return o.a.error(e),!1}}static async _fetchWellKnownObject(e){return new Promise((function(t,o){const r=n(92).getRequest();if(!r)throw new Error("No request library available");r({method:"GET",uri:e,timeout:5e3},(e,n,o)=>{if(e||n.statusCode<200||n.statusCode>=300){let o="FAIL_PROMPT",r=(e?e.message:null)||"General failure";return 404===n.statusCode&&(o="IGNORE",r=i.ERROR_MISSING_WELLKNOWN),void t({raw:{},action:o,reason:r,error:e})}try{t({raw:JSON.parse(o),action:"SUCCESS"})}catch(e){let n=i.ERROR_INVALID;"SyntaxError"===e.name&&(n=i.ERROR_INVALID_JSON),t({raw:{},action:"FAIL_PROMPT",reason:n,error:e})}})}))}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(56),r=n.n(o);async function i(e=""){""===e||e.endsWith("/")||(e+="/");const t=a("".concat(e,"config.").concat(document.domain,".json")),n=a(e+"config.json");try{const e=await t;if(0===Object.keys(e).length)throw new Error;return e}catch(e){return await n}}function a(e){return new Promise((function(t,n){r()({method:"GET",url:e,qs:{cachebuster:Date.now()}},(e,o,r)=>{try{if(e||o.status<200||o.status>=300)return o&&(404==o.status||0==o.status&&""==r)&&t({}),void n({err:e,response:o});t(JSON.parse(r))}catch(e){n({err:e})}})}))}},function(e,t,n){"use strict";var o=n(0),r=n.n(o),i=n(29),a=n.n(i),s=n(2),c=n.n(s),l=n(11),u=n.n(l),d=n(6),p=n(14),h=n.n(p);t.a=u()({displayName:"Tooltip",propTypes:{className:c.a.string,tooltipClassName:c.a.string,visible:c.a.bool,label:c.a.node},getDefaultProps:()=>({visible:!0}),componentDidMount:function(){this.tooltipContainer=document.createElement("div"),this.tooltipContainer.className="mx_Tooltip_wrapper",document.body.appendChild(this.tooltipContainer),window.addEventListener("scroll",this._renderTooltip,!0),this.parent=a.a.findDOMNode(this).parentNode,this._renderTooltip()},componentDidUpdate:function(){this._renderTooltip()},componentWillUnmount:function(){d.a.dispatch({action:"view_tooltip",tooltip:null,parent:null}),a.a.unmountComponentAtNode(this.tooltipContainer),document.body.removeChild(this.tooltipContainer),window.removeEventListener("scroll",this._renderTooltip,!0)},_updatePosition(e){const t=this.parent.getBoundingClientRect();let n=0;return n=t.height>25?Math.floor((t.height-25)/2):Math.floor(t.height-25),e.top=t.top-2+window.pageYOffset+n,e.left=6+t.right+window.pageXOffset,e},_renderTooltip:function(){const e=a.a.findDOMNode(this).parentNode;let t={};t=this._updatePosition(t),t.display=this.props.visible?"block":"none";const n=h()("mx_Tooltip",this.props.tooltipClassName,{mx_Tooltip_visible:this.props.visible,mx_Tooltip_invisible:!this.props.visible}),o=r.a.createElement("div",{className:n,style:t},r.a.createElement("div",{className:"mx_Tooltip_chevron"}),this.props.label);this.tooltip=a.a.render(o,this.tooltipContainer),d.a.dispatch({action:"view_tooltip",tooltip:this.tooltip,parent:e})},render:function(){return r.a.createElement("div",{className:this.props.className})}})},function(e,t,n){"use strict";n.d(t,"a",(function(){return y}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(56),u=n.n(l),d=n(1),p=n(136),h=n.n(p),m=n(6),g=n(4),f=n(14),_=n.n(f),v=n(21),b=n(43);class y extends a.a.PureComponent{constructor(e){super(e),r()(this,"onAction",e=>{"client_started"===e.action&&this.forceUpdate()}),this._dispatcherRef=null,this.state={page:""}}translate(e){return h()(Object(d.a)(e))}componentWillMount(){this._unmounted=!1,this.props.url&&(u()({method:"GET",url:this.props.url},(e,t,n)=>{if(!this._unmounted){if(e||t.status<200||t.status>=300)return console.warn("Error loading page: ".concat(e)),void this.setState({page:Object(d.a)("Couldn't load page")});n=n.replace(/_t\(['"]([\s\S]*?)['"]\)/gm,(e,t)=>this.translate(t)),this.setState({page:n})}}),this._dispatcherRef=m.a.register(this.onAction))}componentWillUnmount(){this._unmounted=!0,null!==this._dispatcherRef&&m.a.unregister(this._dispatcherRef)}render(){const e=this.context||g.a.get(),t=!e||e.isGuest(),n=this.props.className,o=_()({[n]:!0,["".concat(n,"_guest")]:t,["".concat(n,"_loggedIn")]:!!e}),r=a.a.createElement("div",{className:"".concat(n,"_body"),dangerouslySetInnerHTML:{__html:this.state.page}});return this.props.scrollbar?a.a.createElement(b.a,{className:o},r):a.a.createElement("div",{className:o},r)}}r()(y,"propTypes",{url:c.a.string,className:c.a.string,scrollbar:c.a.bool}),r()(y,"contextType",v.a)},function(e,t,n){"use strict";var o=n(899),r=n(900),i=n(638);e.exports={formats:i,parse:r,stringify:o}},function(e,t,n){"use strict";n.d(t,"a",(function(){return a}));var o=n(13);const r=window.localStorage;let i;try{i=window.indexedDB}catch(e){}function a(e){const t={useAuthorizationHeader:!0};return i&&r&&(t.store=new o.g({indexedDB:i,dbName:"riot-web-sync",localStorage:r,workerScript:a.indexedDbWorkerScript})),r&&(t.sessionStore=new o.r(r)),i&&(t.cryptoStore=new o.f(i,"matrix-js-sdk:crypto")),e=Object.assign(t,e),o.s(e)}a.indexedDbWorkerScript=null},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var o=n(4),r=n(7),i=n(73);class a{constructor(){this.reset()}static sharedInstance(){return void 0===e.mxTypingStore&&(e.mxTypingStore=new a),e.mxTypingStore}reset(){this._typingStates={}}setSelfTyping(e,t){if(!r.b.getValue("sendTypingNotifications"))return;if(r.b.getValue("lowBandwidth"))return;let n=this._typingStates[e];!t&&!n||n&&n.isTyping===t||(n||(n=this._typingStates[e]={isTyping:t,serverTimer:new i.a(3e4),userTimer:new i.a(1e4)}),n.isTyping=t,t&&(n.serverTimer.isRunning()?n.serverTimer.restart():n.serverTimer.restart().finished().then(()=>{const t=this._typingStates[e];t&&(t.isTyping=!1)}),n.userTimer.isRunning()?n.userTimer.restart():n.userTimer.restart().finished().then(()=>{this.setSelfTyping(e,!1)})),o.a.get().sendTyping(e,t,3e4))}}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));const o=new Map;function r(e,t){o.set(e,t)}function i(e){return o.get(e)}},function(e,t,n){var o=n(1046);o.registerLanguage("1c",n(1047)),o.registerLanguage("abnf",n(1048)),o.registerLanguage("accesslog",n(1049)),o.registerLanguage("actionscript",n(1050)),o.registerLanguage("ada",n(1051)),o.registerLanguage("angelscript",n(1052)),o.registerLanguage("apache",n(1053)),o.registerLanguage("applescript",n(1054)),o.registerLanguage("arcade",n(1055)),o.registerLanguage("cpp",n(1056)),o.registerLanguage("arduino",n(1057)),o.registerLanguage("armasm",n(1058)),o.registerLanguage("xml",n(1059)),o.registerLanguage("asciidoc",n(1060)),o.registerLanguage("aspectj",n(1061)),o.registerLanguage("autohotkey",n(1062)),o.registerLanguage("autoit",n(1063)),o.registerLanguage("avrasm",n(1064)),o.registerLanguage("awk",n(1065)),o.registerLanguage("axapta",n(1066)),o.registerLanguage("bash",n(1067)),o.registerLanguage("basic",n(1068)),o.registerLanguage("bnf",n(1069)),o.registerLanguage("brainfuck",n(1070)),o.registerLanguage("cal",n(1071)),o.registerLanguage("capnproto",n(1072)),o.registerLanguage("ceylon",n(1073)),o.registerLanguage("clean",n(1074)),o.registerLanguage("clojure",n(1075)),o.registerLanguage("clojure-repl",n(1076)),o.registerLanguage("cmake",n(1077)),o.registerLanguage("coffeescript",n(1078)),o.registerLanguage("coq",n(1079)),o.registerLanguage("cos",n(1080)),o.registerLanguage("crmsh",n(1081)),o.registerLanguage("crystal",n(1082)),o.registerLanguage("cs",n(1083)),o.registerLanguage("csp",n(1084)),o.registerLanguage("css",n(1085)),o.registerLanguage("d",n(1086)),o.registerLanguage("markdown",n(1087)),o.registerLanguage("dart",n(1088)),o.registerLanguage("delphi",n(1089)),o.registerLanguage("diff",n(1090)),o.registerLanguage("django",n(1091)),o.registerLanguage("dns",n(1092)),o.registerLanguage("dockerfile",n(1093)),o.registerLanguage("dos",n(1094)),o.registerLanguage("dsconfig",n(1095)),o.registerLanguage("dts",n(1096)),o.registerLanguage("dust",n(1097)),o.registerLanguage("ebnf",n(1098)),o.registerLanguage("elixir",n(1099)),o.registerLanguage("elm",n(1100)),o.registerLanguage("ruby",n(1101)),o.registerLanguage("erb",n(1102)),o.registerLanguage("erlang-repl",n(1103)),o.registerLanguage("erlang",n(1104)),o.registerLanguage("excel",n(1105)),o.registerLanguage("fix",n(1106)),o.registerLanguage("flix",n(1107)),o.registerLanguage("fortran",n(1108)),o.registerLanguage("fsharp",n(1109)),o.registerLanguage("gams",n(1110)),o.registerLanguage("gauss",n(1111)),o.registerLanguage("gcode",n(1112)),o.registerLanguage("gherkin",n(1113)),o.registerLanguage("glsl",n(1114)),o.registerLanguage("gml",n(1115)),o.registerLanguage("go",n(1116)),o.registerLanguage("golo",n(1117)),o.registerLanguage("gradle",n(1118)),o.registerLanguage("groovy",n(1119)),o.registerLanguage("haml",n(1120)),o.registerLanguage("handlebars",n(1121)),o.registerLanguage("haskell",n(1122)),o.registerLanguage("haxe",n(1123)),o.registerLanguage("hsp",n(1124)),o.registerLanguage("htmlbars",n(1125)),o.registerLanguage("http",n(1126)),o.registerLanguage("hy",n(1127)),o.registerLanguage("inform7",n(1128)),o.registerLanguage("ini",n(1129)),o.registerLanguage("irpf90",n(1130)),o.registerLanguage("isbl",n(1131)),o.registerLanguage("java",n(1132)),o.registerLanguage("javascript",n(1133)),o.registerLanguage("jboss-cli",n(1134)),o.registerLanguage("json",n(1135)),o.registerLanguage("julia",n(1136)),o.registerLanguage("julia-repl",n(1137)),o.registerLanguage("kotlin",n(1138)),o.registerLanguage("lasso",n(1139)),o.registerLanguage("ldif",n(1140)),o.registerLanguage("leaf",n(1141)),o.registerLanguage("less",n(1142)),o.registerLanguage("lisp",n(1143)),o.registerLanguage("livecodeserver",n(1144)),o.registerLanguage("livescript",n(1145)),o.registerLanguage("llvm",n(1146)),o.registerLanguage("lsl",n(1147)),o.registerLanguage("lua",n(1148)),o.registerLanguage("makefile",n(1149)),o.registerLanguage("mathematica",n(1150)),o.registerLanguage("matlab",n(1151)),o.registerLanguage("maxima",n(1152)),o.registerLanguage("mel",n(1153)),o.registerLanguage("mercury",n(1154)),o.registerLanguage("mipsasm",n(1155)),o.registerLanguage("mizar",n(1156)),o.registerLanguage("perl",n(1157)),o.registerLanguage("mojolicious",n(1158)),o.registerLanguage("monkey",n(1159)),o.registerLanguage("moonscript",n(1160)),o.registerLanguage("n1ql",n(1161)),o.registerLanguage("nginx",n(1162)),o.registerLanguage("nimrod",n(1163)),o.registerLanguage("nix",n(1164)),o.registerLanguage("nsis",n(1165)),o.registerLanguage("objectivec",n(1166)),o.registerLanguage("ocaml",n(1167)),o.registerLanguage("openscad",n(1168)),o.registerLanguage("oxygene",n(1169)),o.registerLanguage("parser3",n(1170)),o.registerLanguage("pf",n(1171)),o.registerLanguage("pgsql",n(1172)),o.registerLanguage("php",n(1173)),o.registerLanguage("plaintext",n(1174)),o.registerLanguage("pony",n(1175)),o.registerLanguage("powershell",n(1176)),o.registerLanguage("processing",n(1177)),o.registerLanguage("profile",n(1178)),o.registerLanguage("prolog",n(1179)),o.registerLanguage("properties",n(1180)),o.registerLanguage("protobuf",n(1181)),o.registerLanguage("puppet",n(1182)),o.registerLanguage("purebasic",n(1183)),o.registerLanguage("python",n(1184)),o.registerLanguage("q",n(1185)),o.registerLanguage("qml",n(1186)),o.registerLanguage("r",n(1187)),o.registerLanguage("reasonml",n(1188)),o.registerLanguage("rib",n(1189)),o.registerLanguage("roboconf",n(1190)),o.registerLanguage("routeros",n(1191)),o.registerLanguage("rsl",n(1192)),o.registerLanguage("ruleslanguage",n(1193)),o.registerLanguage("rust",n(1194)),o.registerLanguage("sas",n(1195)),o.registerLanguage("scala",n(1196)),o.registerLanguage("scheme",n(1197)),o.registerLanguage("scilab",n(1198)),o.registerLanguage("scss",n(1199)),o.registerLanguage("shell",n(1200)),o.registerLanguage("smali",n(1201)),o.registerLanguage("smalltalk",n(1202)),o.registerLanguage("sml",n(1203)),o.registerLanguage("sqf",n(1204)),o.registerLanguage("sql",n(1205)),o.registerLanguage("stan",n(1206)),o.registerLanguage("stata",n(1207)),o.registerLanguage("step21",n(1208)),o.registerLanguage("stylus",n(1209)),o.registerLanguage("subunit",n(1210)),o.registerLanguage("swift",n(1211)),o.registerLanguage("taggerscript",n(1212)),o.registerLanguage("yaml",n(1213)),o.registerLanguage("tap",n(1214)),o.registerLanguage("tcl",n(1215)),o.registerLanguage("tex",n(1216)),o.registerLanguage("thrift",n(1217)),o.registerLanguage("tp",n(1218)),o.registerLanguage("twig",n(1219)),o.registerLanguage("typescript",n(1220)),o.registerLanguage("vala",n(1221)),o.registerLanguage("vbnet",n(1222)),o.registerLanguage("vbscript",n(1223)),o.registerLanguage("vbscript-html",n(1224)),o.registerLanguage("verilog",n(1225)),o.registerLanguage("vhdl",n(1226)),o.registerLanguage("vim",n(1227)),o.registerLanguage("x86asm",n(1228)),o.registerLanguage("xl",n(1229)),o.registerLanguage("xquery",n(1230)),o.registerLanguage("zephir",n(1231)),e.exports=o},function(e,t,n){"use strict";var o=n(0),r=n.n(o),i=n(11),a=n.n(i),s=n(2),c=n.n(s),l=n(3),u=n(1),d=n(14),p=n.n(d);t.a=a()({displayName:"InfoDialog",propTypes:{className:c.a.string,title:c.a.string,description:c.a.node,button:c.a.string,onFinished:c.a.func,hasCloseButton:c.a.bool,onKeyDown:c.a.func},getDefaultProps:function(){return{title:"",description:"",hasCloseButton:!1}},onFinished:function(){this.props.onFinished()},render:function(){const e=l.a("views.dialogs.BaseDialog"),t=l.a("views.elements.DialogButtons");return r.a.createElement(e,{className:"mx_InfoDialog",onFinished:this.props.onFinished,title:this.props.title,contentId:"mx_Dialog_content",hasCancel:this.props.hasCloseButton,onKeyDown:this.props.onKeyDown},r.a.createElement("div",{className:p()("mx_Dialog_content",this.props.className),id:"mx_Dialog_content"},this.props.description),r.a.createElement(t,{primaryButton:this.props.button||Object(u.a)("OK"),onPrimaryButtonClick:this.onFinished,hasCancel:!1}))}})},function(e,t,n){"use strict";n.d(t,"a",(function(){return m}));var o=n(5),r=n.n(o),i=n(0),a=n.n(i),s=n(2),c=n.n(s),l=n(1),u=n(7),d=n(3),p=n(57),h=n(34);class m extends a.a.Component{constructor(){super(),r()(this,"_onAllow",()=>{this._onPermissionSelection(!0)}),r()(this,"_onDeny",()=>{this._onPermissionSelection(!1)}),r()(this,"_onRememberSelectionChange",e=>{this.setState({rememberSelection:e})}),this.state={rememberSelection:!1}}_onPermissionSelection(e){if(this.state.rememberSelection){console.log("Remembering ".concat(this.props.widgetId," as allowed=").concat(e," for OpenID"));const t=u.b.getValue("widgetOpenIDPermissions");t.allow||(t.allow=[]),t.deny||(t.deny=[]);const n=h.a.getWidgetSecurityKey(this.props.widgetId,this.props.widgetUrl,this.props.isUserWidget);(e?t.allow:t.deny).push(n),u.b.setValue("widgetOpenIDPermissions",null,u.a.DEVICE,t)}this.props.onFinished(e)}render(){const e=d.a("views.dialogs.BaseDialog"),t=d.a("views.elements.DialogButtons");return a.a.createElement(e,{className:"mx_WidgetOpenIDPermissionsDialog",hasCancel:!0,onFinished:this.props.onFinished,title:Object(l.a)("A widget would like to verify your identity")},a.a.createElement("div",{className:"mx_WidgetOpenIDPermissionsDialog_content"},a.a.createElement("p",null,Object(l.a)("A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.",{widgetUrl:this.props.widgetUrl})),a.a.createElement(p.a,{value:this.state.rememberSelection,toggleInFront:!0,onChange:this._onRememberSelectionChange,label:Object(l.a)("Remember my selection for this widget")})),a.a.createElement(t,{primaryButton:Object(l.a)("Allow"),onPrimaryButtonClick:this._onAllow,cancelButton:Object(l.a)("Deny"),onCancel:this._onDeny}))}}r()(m,"propTypes",{onFinished:c.a.func.isRequired,widgetUrl:c.a.string.isRequired,widgetId:c.a.string.isRequired,isUserWidget:c.a.bool.isRequired})},function(e,t,n){var o,r;!function(e){"use strict";if(!e.jQuery){var t=function(e,n){return new t.fn.init(e,n)};t.isWindow=function(e){return e&&e===e.window},t.type=function(e){return e?"object"==typeof e||"function"==typeof e?o[i.call(e)]||"object":typeof e:e+""},t.isArray=Array.isArray||function(e){return"array"===t.type(e)},t.isPlainObject=function(e){var n;if(!e||"object"!==t.type(e)||e.nodeType||t.isWindow(e))return!1;try{if(e.constructor&&!r.call(e,"constructor")&&!r.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}for(n in e);return void 0===n||r.call(e,n)},t.each=function(e,t,n){var o=0,r=e.length,i=c(e);if(n){if(i)for(;o0&&n-1 in e))}}(window),function(i){"use strict";"object"==typeof e.exports?e.exports=i():void 0===(r="function"==typeof(o=i)?o.call(t,n,t,e):o)||(e.exports=r)}((function(){"use strict";return function(e,t,n,o){var r,i=function(){if(n.documentMode)return n.documentMode;for(var e=7;e>4;e--){var t=n.createElement("div");if(t.innerHTML="\x3c!--[if IE "+e+"]>=0?t:Math.max(0,o+t),s=(n<0?o+n:Math.min(n,o))-a;if(s>0)if(i=new Array(s),this.charAt)for(r=0;r=0}:function(e,t){for(var n=0;n1e-4&&Math.abs(s.v)>1e-4;);return i?function(e){return l[e*(l.length-1)|0]}:u}}();m.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},d.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],(function(e,t){m.Easings[t[0]]=C.apply(null,t[1])}));var f=m.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%","em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","Q","in","pc","pt","px","deg","grad","rad","turn","s","ms"],colorNames:{aliceblue:"240,248,255",antiquewhite:"250,235,215",aquamarine:"127,255,212",aqua:"0,255,255",azure:"240,255,255",beige:"245,245,220",bisque:"255,228,196",black:"0,0,0",blanchedalmond:"255,235,205",blueviolet:"138,43,226",blue:"0,0,255",brown:"165,42,42",burlywood:"222,184,135",cadetblue:"95,158,160",chartreuse:"127,255,0",chocolate:"210,105,30",coral:"255,127,80",cornflowerblue:"100,149,237",cornsilk:"255,248,220",crimson:"220,20,60",cyan:"0,255,255",darkblue:"0,0,139",darkcyan:"0,139,139",darkgoldenrod:"184,134,11",darkgray:"169,169,169",darkgrey:"169,169,169",darkgreen:"0,100,0",darkkhaki:"189,183,107",darkmagenta:"139,0,139",darkolivegreen:"85,107,47",darkorange:"255,140,0",darkorchid:"153,50,204",darkred:"139,0,0",darksalmon:"233,150,122",darkseagreen:"143,188,143",darkslateblue:"72,61,139",darkslategray:"47,79,79",darkturquoise:"0,206,209",darkviolet:"148,0,211",deeppink:"255,20,147",deepskyblue:"0,191,255",dimgray:"105,105,105",dimgrey:"105,105,105",dodgerblue:"30,144,255",firebrick:"178,34,34",floralwhite:"255,250,240",forestgreen:"34,139,34",fuchsia:"255,0,255",gainsboro:"220,220,220",ghostwhite:"248,248,255",gold:"255,215,0",goldenrod:"218,165,32",gray:"128,128,128",grey:"128,128,128",greenyellow:"173,255,47",green:"0,128,0",honeydew:"240,255,240",hotpink:"255,105,180",indianred:"205,92,92",indigo:"75,0,130",ivory:"255,255,240",khaki:"240,230,140",lavenderblush:"255,240,245",lavender:"230,230,250",lawngreen:"124,252,0",lemonchiffon:"255,250,205",lightblue:"173,216,230",lightcoral:"240,128,128",lightcyan:"224,255,255",lightgoldenrodyellow:"250,250,210",lightgray:"211,211,211",lightgrey:"211,211,211",lightgreen:"144,238,144",lightpink:"255,182,193",lightsalmon:"255,160,122",lightseagreen:"32,178,170",lightskyblue:"135,206,250",lightslategray:"119,136,153",lightsteelblue:"176,196,222",lightyellow:"255,255,224",limegreen:"50,205,50",lime:"0,255,0",linen:"250,240,230",magenta:"255,0,255",maroon:"128,0,0",mediumaquamarine:"102,205,170",mediumblue:"0,0,205",mediumorchid:"186,85,211",mediumpurple:"147,112,219",mediumseagreen:"60,179,113",mediumslateblue:"123,104,238",mediumspringgreen:"0,250,154",mediumturquoise:"72,209,204",mediumvioletred:"199,21,133",midnightblue:"25,25,112",mintcream:"245,255,250",mistyrose:"255,228,225",moccasin:"255,228,181",navajowhite:"255,222,173",navy:"0,0,128",oldlace:"253,245,230",olivedrab:"107,142,35",olive:"128,128,0",orangered:"255,69,0",orange:"255,165,0",orchid:"218,112,214",palegoldenrod:"238,232,170",palegreen:"152,251,152",paleturquoise:"175,238,238",palevioletred:"219,112,147",papayawhip:"255,239,213",peachpuff:"255,218,185",peru:"205,133,63",pink:"255,192,203",plum:"221,160,221",powderblue:"176,224,230",purple:"128,0,128",red:"255,0,0",rosybrown:"188,143,143",royalblue:"65,105,225",saddlebrown:"139,69,19",salmon:"250,128,114",sandybrown:"244,164,96",seagreen:"46,139,87",seashell:"255,245,238",sienna:"160,82,45",silver:"192,192,192",skyblue:"135,206,235",slateblue:"106,90,205",slategray:"112,128,144",snow:"255,250,250",springgreen:"0,255,127",steelblue:"70,130,180",tan:"210,180,140",teal:"0,128,128",thistle:"216,191,216",tomato:"255,99,71",turquoise:"64,224,208",violet:"238,130,238",wheat:"245,222,179",whitesmoke:"245,245,245",white:"255,255,255",yellowgreen:"154,205,50",yellow:"255,255,0"}},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e=1?"":"alpha(opacity="+parseInt(100*parseFloat(n),10)+")"}else switch(e){case"name":return"opacity";case"extract":case"inject":return n}}},register:function(){i&&!(i>9)||m.State.isGingerbread||(f.Lists.transformsBase=f.Lists.transformsBase.concat(f.Lists.transforms3D));for(var e=0;e8)&&3===r.split(" ").length&&(r+=" 1"),r;case"inject":return/^rgb/.test(o)?o:(i<=8?4===o.split(" ").length&&(o=o.split(/\s+/).slice(0,3).join(" ")):3===o.split(" ").length&&(o+=" 1"),(i<=8?"rgb":"rgba")+"("+o.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")")}}}();function n(e,t,n){if("border-box"===f.getPropertyValue(t,"boxSizing").toString().toLowerCase()===(n||!1)){var o,r,i=0,a="width"===e?["Left","Right"]:["Top","Bottom"],s=["padding"+a[0],"padding"+a[1],"border"+a[0]+"Width","border"+a[1]+"Width"];for(o=0;o=2&&console.log("Get "+n+": "+s),s},setPropertyValue:function(e,n,o,r,a){var s=n;if("scroll"===n)a.container?a.container["scroll"+a.direction]=o:"Left"===a.direction?t.scrollTo(o,a.alternateValue):t.scrollTo(a.alternateValue,o);else if(f.Normalizations.registered[n]&&"transform"===f.Normalizations.registered[n]("name",e))f.Normalizations.registered[n]("inject",e,o),s="transform",o=y(e).transformCache[n];else{if(f.Hooks.registered[n]){var c=n,l=f.Hooks.getRoot(n);r=r||f.getPropertyValue(e,l),o=f.Hooks.injectValue(c,o,r),n=l}if(f.Normalizations.registered[n]&&(o=f.Normalizations.registered[n]("inject",e,o),n=f.Normalizations.registered[n]("name",e)),s=f.Names.prefixCheck(n)[0],i<=8)try{e.style[s]=o}catch(e){m.debug&&console.log("Browser does not support ["+o+"] for ["+s+"]")}else{var u=y(e);u&&u.isSVG&&f.Names.SVGAttribute(n)?e.setAttribute(n,o):e.style[s]=o}m.debug>=2&&console.log("Set "+n+" ("+s+"): "+o)}return[s,o]},flushTransformCache:function(e){var t="",n=y(e);if((i||m.State.isAndroid&&!m.State.isChrome)&&n&&n.isSVG){var o=function(t){return parseFloat(f.getPropertyValue(e,t))},r={translate:[o("translateX"),o("translateY")],skewX:[o("skewX")],skewY:[o("skewY")],scale:1!==o("scale")?[o("scale"),o("scale")]:[o("scaleX"),o("scaleY")],rotate:[o("rotateZ"),0,0]};d.each(y(e).transformCache,(function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),r[e]&&(t+=e+"("+r[e].join(" ")+") ",delete r[e])}))}else{var a,s;d.each(y(e).transformCache,(function(n){if(a=y(e).transformCache[n],"transformPerspective"===n)return s=a,!0;9===i&&"rotateZ"===n&&(n="rotate"),t+=n+a+" "})),s&&(t="perspective"+s+" "+t)}f.setPropertyValue(e,"transform",t)}};f.Hooks.register(),f.Normalizations.register(),m.hook=function(e,t,n){var o;return e=u(e),d.each(e,(function(e,r){if(void 0===y(r)&&m.init(r),void 0===n)void 0===o&&(o=f.getPropertyValue(r,t));else{var i=f.setPropertyValue(r,t,n);"transform"===i[0]&&m.CSS.flushTransformCache(r),o=i}})),o};var _=function(){var e;function o(){return r?v.promise||null:i}var r,i,a,s,c,h,g=arguments[0]&&(arguments[0].p||d.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||p.isString(arguments[0].properties));p.isWrapped(this)?(r=!1,a=0,s=this,i=this):(r=!0,a=1,s=g?arguments[0].elements||arguments[0].e:arguments[0]);var v={promise:null,resolver:null,rejecter:null};if(r&&m.Promise&&(v.promise=new m.Promise((function(e,t){v.resolver=e,v.rejecter=t}))),g?(c=arguments[0].properties||arguments[0].p,h=arguments[0].options||arguments[0].o):(c=arguments[a],h=arguments[a+1]),s=u(s)){var b,w=s.length,C=0;if(!/^(stop|finish|finishAll|pause|resume)$/i.test(c)&&!d.isPlainObject(h)){var R=a+1;h={};for(var O=R;O=4&&"("===F?O++:(O&&O<5||O>=4&&")"===F&&--O<5)&&(O=0),0===D&&"r"===F||1===D&&"g"===F||2===D&&"b"===F||3===D&&"a"===F||D>=3&&"("===F?(3===D&&"a"===F&&(I=1),D++):I&&","===F?++I>3&&(D=I=0):(I&&D<(I?5:4)||D>=(I?4:3)&&")"===F&&--D<(I?5:4))&&(D=I=0)}}x===b.length&&T===h.length||(m.debug&&console.error('Trying to pattern match mis-matched strings ["'+h+'", "'+b+'"]'),s=void 0),s&&(k.length?(m.debug&&console.log('Pattern found "'+s+'" -> ',k,R,"["+b+","+h+"]"),b=k,h=R,E=S=""):s=void 0)}s||(b=(y=C(o,b))[0],S=y[1],h=(y=C(o,h))[0].replace(/^([+-\/*])=/,(function(e,t){return w=t,""})),E=y[1],b=parseFloat(b)||0,h=parseFloat(h)||0,"%"===E&&(/^(fontSize|lineHeight)$/.test(o)?(h/=100,E="em"):/^scale/.test(o)?(h/=100,E=""):/(Red|Green|Blue)$/i.test(o)&&(h=h/100*255,E="")));if(/[\/*]/.test(w))E=S;else if(S!==E&&0!==b)if(0===h)E=S;else{r=r||function(){var o={myParent:e.parentNode||n.body,position:f.getPropertyValue(e,"position"),fontSize:f.getPropertyValue(e,"fontSize")},r=o.position===M.lastPosition&&o.myParent===M.lastParent,i=o.fontSize===M.lastFontSize;M.lastParent=o.myParent,M.lastPosition=o.position,M.lastFontSize=o.fontSize;var a={};if(i&&r)a.emToPx=M.lastEmToPx,a.percentToPxWidth=M.lastPercentToPxWidth,a.percentToPxHeight=M.lastPercentToPxHeight;else{var s=g&&g.isSVG?n.createElementNS("http://www.w3.org/2000/svg","rect"):n.createElement("div");m.init(s),o.myParent.appendChild(s),d.each(["overflow","overflowX","overflowY"],(function(e,t){m.CSS.setPropertyValue(s,t,"hidden")})),m.CSS.setPropertyValue(s,"position",o.position),m.CSS.setPropertyValue(s,"fontSize",o.fontSize),m.CSS.setPropertyValue(s,"boxSizing","content-box"),d.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],(function(e,t){m.CSS.setPropertyValue(s,t,"100%")})),m.CSS.setPropertyValue(s,"paddingLeft","100em"),a.percentToPxWidth=M.lastPercentToPxWidth=(parseFloat(f.getPropertyValue(s,"width",null,!0))||1)/100,a.percentToPxHeight=M.lastPercentToPxHeight=(parseFloat(f.getPropertyValue(s,"height",null,!0))||1)/100,a.emToPx=M.lastEmToPx=(parseFloat(f.getPropertyValue(s,"paddingLeft"))||1)/100,o.myParent.removeChild(s)}return null===M.remToPx&&(M.remToPx=parseFloat(f.getPropertyValue(n.body,"fontSize"))||16),null===M.vwToPx&&(M.vwToPx=parseFloat(t.innerWidth)/100,M.vhToPx=parseFloat(t.innerHeight)/100),a.remToPx=M.remToPx,a.vwToPx=M.vwToPx,a.vhToPx=M.vhToPx,m.debug>=1&&console.log("Unit ratios: "+JSON.stringify(a),e),a}();var V=/margin|padding|left|right|width|text|word|letter/i.test(o)||/X$/.test(o)||"x"===o?"x":"y";switch(S){case"%":b*="x"===V?r.percentToPxWidth:r.percentToPxHeight;break;case"px":break;default:b*=r[S+"ToPx"]}switch(E){case"%":b*=1/("x"===V?r.percentToPxWidth:r.percentToPxHeight);break;case"px":break;default:b*=1/r[E+"ToPx"]}}switch(w){case"+":h=b+h;break;case"-":h=b-h;break;case"*":h*=b;break;case"/":h=b/h}u[o]={rootPropertyValue:l,startValue:b,currentValue:b,endValue:h,unitType:E,easing:v},s&&(u[o].pattern=s),m.debug&&console.log("tweensContainer ("+o+"): "+JSON.stringify(u[o]),e)}else m.debug&&console.log("Skipping ["+c+"] due to a lack of browser support.")};for(var A in c)if(c.hasOwnProperty(A)){var L=f.Names.camelCase(A),U=F(c[A]);if(l(f.Lists.colors)){var j=U[0],B=U[1],q=U[2];if(f.RegEx.isHex.test(j)){for(var G=["Red","Green","Blue"],V=f.Values.hexToRgb(j),H=q?f.Values.hexToRgb(q):void 0,z=0;z0?r=a:n=a}while(Math.abs(i)>s&&++l=a?b(t,s):0===c?s:E(t,n,n+u)}var w=!1;function C(){w=!0,e===n&&o===r||y()}var x=function(t){return w||C(),e===n&&o===r?t:0===t?0:1===t?1:_(S(t),n,r)};x.getControlPoints=function(){return[{x:e,y:n},{x:o,y:r}]};var T="generateBezier("+[e,n,o,r]+")";return x.toString=function(){return T},x}function x(e,t){var n=e;return p.isString(e)?m.Easings[e]||(n=!1):n=p.isArray(e)&&1===e.length?w.apply(null,e):p.isArray(e)&&2===e.length?g.apply(null,e.concat([t])):!(!p.isArray(e)||4!==e.length)&&C.apply(null,e),!1===n&&(n=m.Easings[m.defaults.easing]?m.defaults.easing:"swing"),n}function T(e){if(e){var t=m.timestamp&&!0!==e?e:s.now(),n=m.State.calls.length;n>1e4&&(m.State.calls=function(e){for(var t=-1,n=e?e.length:0,o=[];++t{if(h("Checking lazy load status..."),this.opts.lazyLoadMembers&&t.isGuest()&&(this.opts.lazyLoadMembers=!1),this.opts.lazyLoadMembers){if(h("Checking server lazy load support..."),await t.doesServerSupportLazyLoading())try{h("Creating and storing lazy load sync filter..."),this.opts.filter=await t.createFilter(s.a.LAZY_LOADING_SYNC_FILTER),h("Created and stored lazy load sync filter")}catch(e){throw u.a.error("Creating and storing lazy load sync filter failed",e),e}else h("LL: lazy loading requested but not supported by server, so disabling"),this.opts.lazyLoadMembers=!1}if(h("Checking whether lazy loading has changed in store..."),await this._wasLazyLoadingToggled(this.opts.lazyLoadMembers)){this._storeIsInvalid=!0;const e=d.b.TOGGLED_LAZY_LOADING,t=new d.b(e,!!this.opts.lazyLoadMembers);return this._updateSyncState("ERROR",{error:t}),void u.a.warn("InvalidStoreError: store is not usable: stopping sync.")}this.opts.lazyLoadMembers&&this.opts.crypto&&this.opts.crypto.enableLazyLoading();try{h("Storing client options..."),await this.client._storeClientOptions(),h("Stored client options")}catch(e){throw u.a.error("Storing client options failed",e),e}!async function e(){let i,a;h("Getting filter..."),n.opts.filter?i=n.opts.filter:(i=new s.a(t.credentials.userId),i.setTimelineLimit(n.opts.initialSyncLimit));try{a=await t.getOrCreateFilter(p(t.credentials.userId),i)}catch(t){if(u.a.error("Getting filter failed",t),n._shouldAbortSync(t))return;return h("Waiting for saved sync before retrying filter..."),await n.recoverFromSyncStartupError(o,t),void e()}t.resetNotifTimelineSet(),null===n._currentSyncRequest&&(h("Sending first sync request..."),n._currentSyncRequest=n._doSyncRequest({filterId:a},r));h("Waiting for saved sync before starting sync processing..."),await o,n._sync({filterId:a})}()};t.isGuest()?n._sync({}):(h("Getting saved sync token..."),o=t.store.getSavedSyncToken().then(e=>(h("Got saved sync token"),r=e,h("Getting saved sync..."),t.store.getSavedSync())).then(e=>{if(h("Got reply from saved sync, exists? ".concat(!!e)),e)return n._syncFromCache(e)}).catch(e=>{u.a.error("Getting saved sync failed",e)}),async function e(){try{h("Getting push rules...");const e=await t.getPushRules();h("Got push rules"),t.pushRules=e}catch(t){if(u.a.error("Getting push rules failed",t),n._shouldAbortSync(t))return;return h("Waiting for saved sync before retrying push rules..."),await n.recoverFromSyncStartupError(o,t),void e()}i()}())},m.prototype.stop=function(){h("SyncApi.stop"),e.document&&(e.document.removeEventListener("online",this._onOnlineBound,!1),this._onOnlineBound=void 0),this._running=!1,this._currentSyncRequest&&this._currentSyncRequest.abort(),this._keepAliveTimer&&(clearTimeout(this._keepAliveTimer),this._keepAliveTimer=null)},m.prototype.retryImmediately=function(){return!!this._connectionReturnedDefer&&(this._startKeepAlives(0),!0)},m.prototype._syncFromCache=async function(e){h("sync(): not doing HTTP hit, instead returning stored /sync data");const t=e.nextBatch;this.client.store.setSyncToken(t);const n={oldSyncToken:null,nextSyncToken:t,catchingUp:!1,fromCache:!0},o={next_batch:t,rooms:e.roomsData,groups:e.groupsData,account_data:{events:e.accountData}};try{await this._processSyncResponse(n,o)}catch(e){u.a.error("Error processing cached sync",e.stack||e)}this._storeIsInvalid||this._updateSyncState("PREPARED",n)},m.prototype._sync=async function(e){const t=this.client;if(!this._running)return h("Sync no longer running: exiting."),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");const n=t.store.getSyncToken();let o;try{null===this._currentSyncRequest&&(this._currentSyncRequest=this._doSyncRequest(e,n)),o=await this._currentSyncRequest}catch(t){return void this._onSyncError(t,e)}finally{this._currentSyncRequest=null}t.store.setSyncToken(o.next_batch),this._failedSyncCount=0,await t.store.setSyncData(o);const r={oldSyncToken:n,nextSyncToken:o.next_batch,catchingUp:this._catchingUp};this.opts.crypto&&await this.opts.crypto.onSyncWillProcess(r);try{await this._processSyncResponse(r,o)}catch(e){u.a.error("Caught /sync error",e.stack||e),this.client.emit("sync.unexpectedError",e)}r.catchingUp=this._catchingUp,e.hasSyncedBefore||(this._updateSyncState("PREPARED",r),e.hasSyncedBefore=!0),this.opts.crypto&&await this.opts.crypto.onSyncCompleted(r),this._updateSyncState("SYNCING",r),t.store.wantsSave()&&(this.opts.crypto&&await this.opts.crypto.saveDeviceList(0),t.store.save()),this._sync(e)},m.prototype._doSyncRequest=function(e,t){const n=this._getSyncParams(e,t);return this.client._http.authedRequest(void 0,"GET","/sync",n,void 0,n.timeout+8e4)},m.prototype._getSyncParams=function(e,t){let n=this.opts.pollTimeout;("SYNCING"!==this.getSyncState()||this._catchingUp)&&(this._catchingUp=!0,n=0);let o=e.filterId;this.client.isGuest()&&!o&&(o=this._getGuestFilter());const r={filter:o,timeout:n};return this.opts.disablePresence&&(r.set_presence="offline"),t?r.since=t:r._cacheBuster=Date.now(),"ERROR"!=this.getSyncState()&&"RECONNECTING"!=this.getSyncState()||(r.timeout=0),r},m.prototype._onSyncError=function(e,t){if(!this._running)return h("Sync no longer running: exiting"),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");u.a.error("/sync error %s",e),u.a.error(e),this._shouldAbortSync(e)||(this._failedSyncCount++,u.a.log("Number of consecutive failed sync requests:",this._failedSyncCount),h("Starting keep-alive"),this._startKeepAlives().then(e=>{e&&"ERROR"===this.getSyncState()&&this._updateSyncState("CATCHUP",{oldSyncToken:null,nextSyncToken:null,catchingUp:!0}),this._sync(t)}),this._currentSyncRequest=null,this._updateSyncState(this._failedSyncCount>=3?"ERROR":"RECONNECTING",{error:e}))},m.prototype._processSyncResponse=async function(e,t){const n=this.client,o=this;if(t.presence&&a.p(t.presence.events)&&t.presence.events.map(n.getEventMapper()).forEach((function(e){let t=n.store.getUser(e.getSender());t?t.setPresenceEvent(e):(t=g(n,e.getSender()),t.setPresenceEvent(e),n.store.storeUser(t)),n.emit("event",e)})),t.account_data&&a.p(t.account_data.events)){const e=t.account_data.events.map(n.getEventMapper());n.store.storeAccountDataEvents(e),e.forEach((function(e){if("m.push_rules"===e.getType()){const t=e.getContent();n.pushRules=l.a.rewriteDefaultRules(t)}return n.emit("accountData",e),e}))}if(t.to_device&&a.p(t.to_device.events)&&t.to_device.events.length>0){const e=[];t.to_device.events.map(n.getEventMapper()).map(t=>{if("m.key.verification.cancel"===t.getType()){const n=t.getContent().transaction_id;n&&e.push(n)}return t}).forEach((function(t){const o=t.getContent();if("m.room.message"!=t.getType()||"m.bad.encrypted"!=o.msgtype){if("m.key.verification.start"===t.getType()||"m.key.verification.request"===t.getType()){const n=o.transaction_id;e.includes(n)&&t.flagCancelled()}n.emit("toDeviceEvent",t)}else u.a.log("Ignoring undecryptable to-device event from "+t.getSender())}))}else this._catchingUp=!1;t.groups&&(t.groups.invite&&this._processGroupSyncEntry(t.groups.invite,"invite"),t.groups.join&&this._processGroupSyncEntry(t.groups.join,"join"),t.groups.leave&&this._processGroupSyncEntry(t.groups.leave,"leave"));let r=[],i=[],s=[];if(t.rooms&&(t.rooms.invite&&(r=this._mapSyncResponseToRoomArray(t.rooms.invite)),t.rooms.join&&(i=this._mapSyncResponseToRoomArray(t.rooms.join)),t.rooms.leave&&(s=this._mapSyncResponseToRoomArray(t.rooms.leave))),this._notifEvents=[],r.forEach((function(e){const t=e.room,r=o._mapSyncEventsFormat(e.invite_state,t);o._processRoomEvents(t,r),e.isBrandNewRoom&&(t.recalculate(),n.store.storeRoom(t),n.emit("Room",t)),r.forEach((function(e){n.emit("event",e)})),t.updateMyMembership("invite")})),await a.w(i,(async function(t){const r=t.room,i=o._mapSyncEventsFormat(t.state,r),s=o._mapSyncEventsFormat(t.timeline,r),l=o._mapSyncEventsFormat(t.ephemeral),u=o._mapSyncEventsFormat(t.account_data);if(t.unread_notifications){r.setUnreadNotificationCount("total",t.unread_notifications.notification_count);const e=n.isRoomEncrypted(r.roomId);(!e||e&&r.getUnreadNotificationCount("highlight")<=0)&&r.setUnreadNotificationCount("highlight",t.unread_notifications.highlight_count)}if(t.timeline=t.timeline||{},t.isBrandNewRoom)r.getLiveTimeline().setPaginationToken(t.timeline.prev_batch,c.a.BACKWARDS);else if(t.timeline.limited){let i=!0;for(let e=s.length-1;e>=0;e--){const t=s[e].getId();if(r.getTimelineForEvent(t)){h("Already have event "+t+" in limited sync - not resetting"),i=!1,s.splice(0,e);break}}i&&(o._deregisterStateListeners(r),r.resetLiveTimeline(t.timeline.prev_batch,o.opts.canResetEntireTimeline(r.roomId)?null:e.oldSyncToken),n.resetNotifTimelineSet(),o._registerStateListeners(r))}async function d(e){if(n.emit("event",e),e.isState()&&"m.room.encryption"==e.getType()&&o.opts.crypto&&await o.opts.crypto.onCryptoEvent(e),e.isState()&&"im.vector.user_status"===e.getType()){let t=n.store.getUser(e.getStateKey());t?t._unstable_updateStatusMessage(e):(t=g(n,e.getStateKey()),t._unstable_updateStatusMessage(e),n.store.storeUser(t))}}o._processRoomEvents(r,i,s,e.fromCache),t.summary&&r.setSummary(t.summary),r.addEphemeralEvents(l),r.addAccountData(u),r.recalculate(),t.isBrandNewRoom&&(n.store.storeRoom(r),n.emit("Room",r)),o._processEventsForNotifs(r,s),await a.w(i,d),await a.w(s,d),l.forEach((function(e){n.emit("event",e)})),u.forEach((function(e){n.emit("event",e)})),r.updateMyMembership("join")})),s.forEach((function(e){const t=e.room,r=o._mapSyncEventsFormat(e.state,t),i=o._mapSyncEventsFormat(e.timeline,t),a=o._mapSyncEventsFormat(e.account_data);o._processRoomEvents(t,r,i),t.addAccountData(a),t.recalculate(),e.isBrandNewRoom&&(n.store.storeRoom(t),n.emit("Room",t)),o._processEventsForNotifs(t,i),r.forEach((function(e){n.emit("event",e)})),i.forEach((function(e){n.emit("event",e)})),a.forEach((function(e){n.emit("event",e)})),t.updateMyMembership("leave")})),e.oldSyncToken&&this._notifEvents.length&&(this._notifEvents.sort((function(e,t){return e.getTs()-t.getTs()})),this._notifEvents.forEach((function(e){n.getNotifTimelineSet().addLiveEvent(e)}))),t.device_lists&&this.opts.crypto&&await this.opts.crypto.handleDeviceListChanges(e,t.device_lists),this.opts.crypto&&t.device_one_time_keys_count){const e=t.device_one_time_keys_count.signed_curve25519||0;this.opts.crypto.updateOneTimeKeyCount(e)}},m.prototype._startKeepAlives=function(e){void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this._keepAliveTimer&&clearTimeout(this._keepAliveTimer);const t=this;return e>0?t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t),e):t._pokeKeepAlive(),this._connectionReturnedDefer||(this._connectionReturnedDefer=a.d()),this._connectionReturnedDefer.promise},m.prototype._pokeKeepAlive=function(e){void 0===e&&(e=!1);const t=this;function n(){clearTimeout(t._keepAliveTimer),t._connectionReturnedDefer&&(t._connectionReturnedDefer.resolve(e),t._connectionReturnedDefer=null)}this.client._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:"",localTimeoutMs:15e3}).then((function(){n()}),(function(o){400==o.httpStatus||404==o.httpStatus?t._keepAliveTimer=setTimeout(n,2e3):(e=!0,t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t,e),5e3+Math.floor(5e3*Math.random())),t._updateSyncState("ERROR",{error:o}))}))},m.prototype._processGroupSyncEntry=function(e,t){for(const n of Object.keys(e)){const o=e[n];let r=this.client.store.getGroup(n);const i=null===r;null===r&&(r=this.createGroup(n)),o.profile&&r.setProfile(o.profile.name,o.profile.avatar_url),o.inviter&&r.setInviter({userId:o.inviter}),r.setMyMembership(t),i&&this.client.emit("Group",r)}},m.prototype._mapSyncResponseToRoomArray=function(e){const t=this.client,n=this;return a.t(e).map((function(o){const r=e[o];let i=t.store.getRoom(o),a=!1;return i||(i=n.createRoom(o),a=!0),r.room=i,r.isBrandNewRoom=a,r}))},m.prototype._mapSyncEventsFormat=function(e,t){if(!e||!a.p(e.events))return[];const n=this.client.getEventMapper();return e.events.map((function(e){return t&&(e.room_id=t.roomId),n(e)}))},m.prototype._resolveInvites=function(e){if(!e||!this.opts.resolveInvitesToProfiles)return;const t=this.client;e.getMembersWithMembership("invite").forEach((function(n){if(n._requestedProfileInfo)return;n._requestedProfileInfo=!0;const o=t.getUser(n.userId);let r;r=o?Promise.resolve({avatar_url:o.avatarUrl,displayname:o.displayName}):t.getProfileInfo(n.userId),r.then((function(t){const o=n.events.member;"invite"===o.getContent().membership&&(o.getContent().avatar_url=t.avatar_url,o.getContent().displayname=t.displayname,n.setMembershipEvent(o,e.currentState))}),(function(e){}))}))},m.prototype._processRoomEvents=function(e,t,n,o){const r=e.getLiveTimeline(),i=0==r.getEvents().length;if(i){for(const e of t)this.client.getPushActionsForEvent(e);r.initialiseState(t)}this._resolveInvites(e),e.recalculate(),i||(e.oldState.setStateEvents(t||[]),e.currentState.setStateEvents(t||[])),e.addLiveEvents(n||[],null,o)},m.prototype._processEventsForNotifs=function(e,t){if(this.client.getNotifTimelineSet())for(let e=0;eo}).then(()=>{console.log("Using WebAssembly Olm")}).catch(e=>(console.log("Failed to load Olm: trying legacy version",e),new Promise((e,t)=>{const n=document.createElement("script");n.src="olm_legacy.js",n.onload=e,n.onerror=t,document.body.appendChild(n)}).then(()=>window.Olm.init()).then(()=>{console.log("Using legacy Olm")}).catch(e=>{console.log("Both WebAssembly and asm.js Olm failed!",e)})))}async function g(){const e=s.b.getValue("language",null,!0);let t=[];e?t=[e]:a.f().forEach(e=>{t.push(...a.g(e))});try{await a.k(t),document.documentElement.setAttribute("lang",a.d())}catch(e){console.error("Unable to set language",e)}}},function(e,t){var n,o,r=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{o="function"==typeof clearTimeout?clearTimeout:a}catch(e){o=a}}();var c,l=[],u=!1,d=-1;function p(){u&&c&&(u=!1,c.length?l=c.concat(l):d=-1,l.length&&h())}function h(){if(!u){var e=s(p);u=!0;for(var t=l.length;t;){for(c=l,l=[];++d1)for(var n=1;n=0||(r[n]=e[n]);return r}},function(e,t,n){"use strict";t.__esModule=!0,t.inherits=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=Object.create(e.prototype);for(var r in n)o[r]=n[r];return o.constructor=t,t.prototype=o,t}},function(e,t){e.exports=!0},function(e,t){var n=0,o=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+o).toString(36))}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";t.__esModule=!0;var o,r=n(959),i=(o=r)&&o.__esModule?o:{default:o};t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0;s--)(r=e[s])&&(a=(i<3?r(a):i>3?r(t,n,a):r(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},c=function(e,t){return function(n,o){t(n,o,e)}},l=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},u=function(e,t,n,o){return new(n||(n=Promise))((function(r,i){function a(e){try{c(o.next(e))}catch(e){i(e)}}function s(e){try{c(o.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}c((o=o.apply(e,t||[])).next())}))},d=function(e,t){var n,o,r,i,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(r=(r=a.trys).length>0&&r[r.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},m=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a},g=function(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(n=r[e](t)).value instanceof _?Promise.resolve(n.value.v).then(c,l):u(i[0][2],n)}catch(e){u(i[0][3],e)}var n}function c(e){s("next",e)}function l(e){s("throw",e)}function u(e,t){e(t),i.shift(),i.length&&s(i[0][0],i[0][1])}},b=function(e){var t,n;return t={},o("next"),o("throw",(function(e){throw e})),o("return"),t[Symbol.iterator]=function(){return this},t;function o(o,r){t[o]=e[o]?function(t){return(n=!n)?{value:_(e[o](t)),done:"return"===o}:r?r(t):t}:r}},y=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},o("next"),o("throw"),o("return"),t[Symbol.asyncIterator]=function(){return this},t);function o(n){t[n]=e[n]&&function(t){return new Promise((function(o,r){!function(e,t,n,o){Promise.resolve(o).then((function(t){e({value:t,done:n})}),t)}(o,r,(t=e[n](t)).done,t.value)}))}}},E=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},S=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},w=function(e){return e&&e.__esModule?e:{default:e}},C=function(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)},x=function(e,t,n){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,n),n},t("__extends",r),t("__assign",i),t("__rest",a),t("__decorate",s),t("__param",c),t("__metadata",l),t("__awaiter",u),t("__generator",d),t("__exportStar",p),t("__values",h),t("__read",m),t("__spread",g),t("__spreadArrays",f),t("__await",_),t("__asyncGenerator",v),t("__asyncDelegator",b),t("__asyncValues",y),t("__makeTemplateObject",E),t("__importStar",S),t("__importDefault",w),t("__classPrivateFieldGet",C),t("__classPrivateFieldSet",x)}.apply(t,[t]))||(e.exports=o)}()}).call(this,n(24))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.deferAction=function(e){var t=window.setImmediate;void 0!==t?t(e):setTimeout(e,1)},t.inlineProp=void 0;t.inlineProp=function(e,t){var n={};return n[e]=t,n}},function(e,t){e.exports="img/e2e/warning.2d79aff.svg"},function(e,t,n){var o=n(370),r=n(341);e.exports=function(e){return null!=e&&r(e.length)&&!o(e)}},function(e,t,n){var o=n(222);e.exports=function(e){if("string"==typeof e||o(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t){e.exports=function(e){return e}},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var o=n(10);n(8);function r(e,t){this.retryAlgorithm=e||r.RETRY_BACKOFF_RATELIMIT,this.queueAlgorithm=t||r.QUEUE_MESSAGES,this._queues={},this._activeQueues=[],this._procFn=null}function i(e){e._procFn&&o.l(o.j(o.t(e._queues),(function(t){return-1===e._activeQueues.indexOf(t)&&e._queues[t].length>0})),(function(t){e._activeQueues.push(t),s("Spinning up queue: '%s'",t),function e(t,n){const r=function(e,t){const n=e._queues[t];if(!o.p(n))return null;return n[0]}(t,n);if(!r){const e=t._activeQueues.indexOf(n);return e>=0&&t._activeQueues.splice(e,1),void s("Stopping queue '%s' as it is now empty",n)}s("Queue '%s' has %s pending events",n,t._queues[n].length),Promise.resolve().then(()=>t._procFn(r.event)).then((function(o){a(t,n),s("Queue '%s' sent event %s",n,r.event.getId()),r.defer.resolve(o),e(t,n)}),(function(o){r.attempts+=1;const i=t.retryAlgorithm(r.event,r.attempts,o);s("retry(%s) err=%s event_id=%s waitTime=%s",r.attempts,o,r.event.getId(),i),-1===i?(s("Queue '%s' giving up on event %s",n,r.event.getId()),a(t,n),r.defer.reject(o),e(t,n)):setTimeout((function(){e(t,n)}),i)}))}(e,t)}))}function a(e,t){const n=e._queues[t];return o.p(n)?n.shift():null}function s(){0}r.prototype.getQueueForEvent=function(e){const t=this.queueAlgorithm(e);return t&&this._queues[t]?o.u(this._queues[t],(function(e){return e.event})):null},r.prototype.removeEventFromQueue=function(e){const t=this.queueAlgorithm(e);if(!t||!this._queues[t])return!1;let n=!1;return o.y(this._queues[t],(function(t){if(t.event.getId()===e.getId())return n=!0,!0})),n},r.prototype.setProcessFunction=function(e){this._procFn=e,i(this)},r.prototype.queueEvent=function(e){const t=this.queueAlgorithm(e);if(!t)return null;this._queues[t]||(this._queues[t]=[]);const n=o.d();return this._queues[t].push({event:e,defer:n,attempts:0}),s("Queue algorithm dumped event %s into queue '%s'",e.getId(),t),i(this),n.promise},r.RETRY_BACKOFF_RATELIMIT=function(e,t,n){if(400===n.httpStatus||403===n.httpStatus||401===n.httpStatus)return-1;if("rejected"===n.cors)return-1;if("M_TOO_LARGE"===n.name)return-1;if("M_LIMIT_EXCEEDED"===n.name){const e=n.data.retry_after_ms;if(e)return e}return t>4?-1:1e3*Math.pow(2,t)},r.QUEUE_MESSAGES=function(e){return"m.room.message"===e.getType()||e.hasAssocation()?"message":null}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return k})),n.d(t,"b",(function(){return D}));var o=n(32),r=n.n(o),i=n(28),a=n(344),s=n(114),c=n(238),l=n(26),u=n(30),d=n(765),p=n(718),h=n(127),m=n(10),g=n(38),f=n(55),_=n(167),v=n(19),b=n(206),y=n(719),E=n(8),S=n(62),w=n(162),C=n(183),x=n(93),T=n(94);const k=Object(S.b)();function R(e,t,n){const o=[];for(const[r,i]of Object.entries(e))try{const e=O(i,t);e.session_id=r,e.room_id=n,o.push(e)}catch(e){E.a.log("Failed to decrypt megolm session from backup",e)}return o}function O(e,t){return JSON.parse(t.decrypt(e.session_data.ephemeral,e.session_data.mac,e.session_data.ciphertext))}function D(e){e.baseUrl=m.g(e.baseUrl),e.idBaseUrl=m.g(e.idBaseUrl),a.a.call(this,e),this.olmVersion=null,this.reEmitter=new b.a(this),this.store=e.store||new p.a,this.deviceId=e.deviceId||null;const t=e.userId||null;if(this.credentials={userId:t},e.deviceToImport&&(this.deviceId?E.a.warn("not importing device because device ID is provided to constructor independently of exported data"):this.credentials.userId?E.a.warn("not importing device because user ID is provided to constructor independently of exported data"):e.deviceToImport.deviceId?(this.deviceId=e.deviceToImport.deviceId,this.credentials.userId=e.deviceToImport.userId,this._exportedOlmDeviceToImport=e.deviceToImport.olmDevice):E.a.warn("not importing device because no device ID in exported data")),this.scheduler=e.scheduler,this.scheduler){const e=this;this.scheduler.setProcessFunction((async function(t){const n=e.getRoom(t.getRoomId());t.status!==l.a.SENDING&&A(n,t,l.a.SENDING);const o=await M(e,t);return n&&n.updatePendingEvent(t,l.a.SENT,o.event_id),o}))}this.clientRunning=!1,this.callList={};const n=Object(h.a)(this);this._supportsVoip=!1,n&&(!function(e){const t={};let n=[];function o(){if("SYNCING"===e.getSyncState()){if(n.some(e=>e.isBeingDecrypted()))return;const e={};for(let t=n.length-1;t>=0;t--){const o=n[t];"m.call.answer"!==o.getType()&&"m.call.hangup"!==o.getType()||(e[o.getContent().call_id]="yep")}n.forEach((function(t){"m.call.invite"===t.getType()&&e[t.getContent().call_id]||r(t)})),n=[]}}function r(n){const o=n.getContent();let r,i=o.call_id?e.callList[o.call_id]:void 0;if("m.call.invite"===n.getType()){if(n.getSender()===e.credentials.userId)return;if(n.getAge()>o.lifetime)return;if(i&&"ended"===i.state)return;if(i&&E.a.log("WARN: Already have a MatrixCall with id %s but got an invite. Clobbering.",o.call_id),i=Object(h.a)(e,n.getRoomId(),{forceTURN:e._forceTURN}),!i)return void E.a.log("Incoming call ID "+o.call_id+" but this client doesn't support WebRTC");if(i.callId=o.call_id,i._initWithInvite(n),e.callList[i.callId]=i,t[i.callId])for(r=0;ri.callId?(E.a.log("Glare detected: answering incoming call "+i.callId+" and canceling outgoing call "+a.callId),a._replacedBy(i),i.answer()):(E.a.log("Glare detected: rejecting incoming call "+i.callId+" and keeping outgoing call "+a.callId),i.hangup()):e.emit("Call.incoming",i)}else if("m.call.answer"===n.getType()){if(!i)return;n.getSender()===e.credentials.userId?"ringing"===i.state&&i._onAnsweredElsewhere(o):i._receivedAnswer(o)}else if("m.call.candidates"===n.getType()){if(n.getSender()===e.credentials.userId)return;if(i)for(r=0;r{-1!==e.getType().indexOf("m.call.")&&(n.includes(e)?o():r(e))})}))}(this),this._supportsVoip=!0),this._syncingRetry=null,this._syncApi=null,this._peekSync=null,this._isGuest=!1,this._ongoingScrollbacks={},this.timelineSupport=Boolean(e.timelineSupport),this.urlPreviewCache={},this._notifTimelineSet=null,this.unstableClientRelationAggregation=!!e.unstableClientRelationAggregation,this._crypto=null,this._cryptoStore=e.cryptoStore,this._sessionStore=e.sessionStore,this._verificationMethods=e.verificationMethods,this._cryptoCallbacks=e.cryptoCallbacks||{},this._forceTURN=e.forceTURN||!1,this._fallbackICEServerAllowed=e.fallbackICEServerAllowed||!1,this._roomList=new y.a(this._cryptoStore),this._pushProcessor=new T.a(this),this._serverVersionsCache=null,this._cachedCapabilities=null,this.on("Event.decrypted",e=>{const t=e.getPushActions(),n=this._pushProcessor.actionsForEvent(e);e.setPushActions(n);const o=this.getRoom(e.getRoomId());if(!o)return;const r=o.getUnreadNotificationCount("highlight"),i=!(!t||!t.tweaks)&&!!t.tweaks.highlight,a=!(!n||!n.tweaks)&&!!n.tweaks.highlight;if((i!==a||r>0)&&!o.hasUserReadEvent(this.getUserId(),e.getId())){let e=r;a&&!i&&e++,!a&&i&&e--,o.setUnreadNotificationCount("highlight",e),o.getUnreadNotificationCount("total"){if(t&&this.isRoomEncrypted(t.roomId)){const n=e.getContent();if(!(Object.keys(n).filter(e=>Object.keys(n[e]["m.read"]).includes(this.getUserId())).length>0))return;const o=20,r=t.getLiveTimeline().getEvents();let i=0;for(let e=r.length-1;e>=0;e--){if(e===r.length-o)return;const n=r[e];if(t.hasUserReadEvent(this.getUserId(),n.getId()))break;const a=this.getPushActionsForEvent(n);i+=a.tweaks&&a.tweaks.highlight?1:0}t.setUnreadNotificationCount("highlight",i)}})}async function I(e,t,n,o,r,i){if(!e._crypto)throw new Error("End-to-End encryption disabled");await e._crypto.setDeviceVerification(t,n,o,r,i)}function F(e,t){for(const n of t)e.prototype[n]=function(...e){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto[n](...e)}}function N(e,t,n,o){return Promise.resolve().then((function(){const o=function(e,t,n){if(t.isEncrypted())return null;if(!e.isRoomEncrypted(t.getRoomId()))return null;if("m.reaction"===t.getType())return null;if(!e._crypto)throw new Error("This room is configured to use encryption, but your client does not support encryption.");return e._crypto.encryptEvent(t,n)}(e,n,t);return o?(A(t,n,l.a.ENCRYPTING),o.then(()=>{A(t,n,l.a.SENDING)})):null})).then((function(){let o;return e.scheduler&&(o=e.scheduler.queueEvent(n),o&&e.scheduler.getQueueForEvent(n).length>1&&A(t,n,l.a.QUEUED)),o||(o=M(e,n),t&&(o=o.then(e=>(t.updatePendingEvent(n,l.a.SENT,e.event_id),e)))),o})).then((function(e){return o&&o(null,e),e}),(function(e){E.a.error("Error sending event",e.stack||e);try{n.error=e,A(t,n,l.a.NOT_SENT),e.event=n,o&&o(e)}catch(t){E.a.error("Exception in error handler!",t.stack||e)}throw e}))}function A(e,t,n){e?e.updatePendingEvent(t,n):t.setStatus(n)}function M(e,t){const n=t._txnId?t._txnId:e.makeTxnId(),o={$roomId:t.getRoomId(),$eventType:t.getWireType(),$stateKey:t.getStateKey(),$txnId:n};let r;if(t.isState()){let e="/rooms/$roomId/state/$eventType";t.getStateKey()&&t.getStateKey().length>0&&(e="/rooms/$roomId/state/$eventType/$stateKey"),r=m.f(e,o)}else if(t.isRedaction()){const e="/rooms/$roomId/redact/$redactsEventId/$txnId";r=m.f(e,Object.assign({$redactsEventId:t.event.redacts},o))}else r=m.f("/rooms/$roomId/send/$eventType/$txnId",o);return e._http.authedRequest(void 0,"PUT",r,void 0,t.getWireContent()).then(e=>(E.a.log("Event sent to ".concat(t.getRoomId()," with event id ").concat(e.event_id)),e))}function P(e,t,n,o,r,i){m.q(r)&&(i=r,r=void 0);const a=m.f("/rooms/$room_id/$membership",{$room_id:t,$membership:o});return e._http.authedRequest(i,"POST",a,void 0,{user_id:n,reason:r})}function L(e,t,n,o){const r=m.f("/presence/list/$userId",{$userId:t.credentials.userId});return t._http.authedRequest(e,o,r,void 0,n)}function U(e,t,n){e&&e(n),t(n)}function j(e,t,n){e&&e(null,n),t(n)}function B(e){return function(t){const n=new l.b(t);n.isEncrypted()&&(e.reEmitter.reEmit(n,["Event.decrypted"]),n.attemptDecryption(e._crypto));const o=e.getRoom(n.getRoomId());return o&&o.reEmitter.reEmit(n,["Event.replaced"]),n}}m.o(D,i.EventEmitter),m.i(D.prototype,a.a.prototype),D.prototype.exportDevice=async function(){if(this._crypto)return{userId:this.credentials.userId,deviceId:this.deviceId,olmDevice:await this._crypto._olmDevice.export()};E.a.warn("not exporting device if crypto is not enabled")},D.prototype.clearStores=function(){if(this._clientRunning)throw new Error("Cannot clear stores while client is running");const e=[];return e.push(this.store.deleteAllData()),this._cryptoStore&&e.push(this._cryptoStore.deleteAllData()),Promise.all(e)},D.prototype.getUserId=function(){return this.credentials&&this.credentials.userId?this.credentials.userId:null},D.prototype.getDomain=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.replace(/^.*?:/,""):null},D.prototype.getUserIdLocalpart=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.split(":")[0].substring(1):null},D.prototype.getDeviceId=function(){return this.deviceId},D.prototype.supportsVoip=function(){return this._supportsVoip},D.prototype.setForceTURN=function(e){this._forceTURN=e},D.prototype.getSyncState=function(){return this._syncApi?this._syncApi.getSyncState():null},D.prototype.getSyncStateData=function(){return this._syncApi?this._syncApi.getSyncStateData():null},D.prototype.isInitialSyncComplete=function(){const e=this.getSyncState();return!!e&&("PREPARED"===e||"SYNCING"===e)},D.prototype.isGuest=function(){return this._isGuest},D.prototype.getScheduler=function(){return this.scheduler},D.prototype.setGuest=function(e){this._isGuest=e},D.prototype.retryImmediately=function(){return this._syncApi.retryImmediately()},D.prototype.getNotifTimelineSet=function(){return this._notifTimelineSet},D.prototype.setNotifTimelineSet=function(e){this._notifTimelineSet=e},D.prototype.getCapabilities=function(e=!1){const t=(new Date).getTime();return this._cachedCapabilities&&!e&&t(E.a.error(e),null)).then(e=>{e||(e={});const n=e.capabilities||{},o=Object.keys(n).length?216e5:6e4+5e3*Math.random();return this._cachedCapabilities={capabilities:n,expiration:t+o},E.a.log("Caching capabilities: ",n),n})},D.prototype.initCrypto=async function(){if(!Object(S.b)())throw new Error("End-to-end encryption not supported in this js-sdk build: did you remember to load the olm library?");if(this._crypto)return void E.a.warn("Attempt to re-initialise e2e encryption on MatrixClient");if(!this._sessionStore)throw new Error("Cannot enable encryption: no sessionStore provided");if(!this._cryptoStore)throw new Error("Cannot enable encryption: no cryptoStore provided");E.a.log("Crypto: Starting up crypto store..."),await this._cryptoStore.startup(),E.a.log("Crypto: initialising roomlist..."),await this._roomList.init();const e=this.getUserId();if(null===e)throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");if(null===this.deviceId)throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");const t=new S.a(this,this._sessionStore,e,this.deviceId,this.store,this._cryptoStore,this._roomList,this._verificationMethods);this.reEmitter.reEmit(t,["crypto.keyBackupFailed","crypto.keyBackupSessionsRemaining","crypto.roomKeyRequest","crypto.roomKeyRequestCancellation","crypto.warning","crypto.devicesUpdated","deviceVerificationChanged","userTrustStatusChanged","crossSigning.keysChanged"]),E.a.log("Crypto: initialising crypto object..."),await t.init({exportedOlmDevice:this._exportedOlmDeviceToImport}),delete this._exportedOlmDeviceToImport,this.olmVersion=S.a.getOlmVersion(),t.registerEventHandlers(this),this._crypto=t},D.prototype.isCryptoEnabled=function(){return null!==this._crypto},D.prototype.getDeviceEd25519Key=function(){return this._crypto?this._crypto.getDeviceEd25519Key():null},D.prototype.getDeviceCurve25519Key=function(){return this._crypto?this._crypto.getDeviceCurve25519Key():null},D.prototype.uploadKeys=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.uploadDeviceKeys()},D.prototype.downloadKeys=function(e,t){return null===this._crypto?Promise.reject(new Error("End-to-end encryption disabled")):this._crypto.downloadKeys(e,t)},D.prototype.getStoredDevicesForUser=async function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevicesForUser(e)||[]},D.prototype.getStoredDevice=async function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevice(e,t)||null},D.prototype.setDeviceVerified=function(e,t,n){void 0===n&&(n=!0);const o=I(this,e,t,n,null);return e==this.credentials.userId&&this._crypto.checkKeyBackup(),o},D.prototype.setDeviceBlocked=function(e,t,n){return void 0===n&&(n=!0),I(this,e,t,null,n)},D.prototype.setDeviceKnown=function(e,t,n){return void 0===n&&(n=!0),I(this,e,t,null,null,n)},D.prototype.requestVerificationDM=function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.requestVerificationDM(e,t)},D.prototype.findVerificationRequestDMInProgress=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.findVerificationRequestDMInProgress(e)},D.prototype.requestVerification=function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.requestVerification(e,t)},D.prototype.beginKeyVerification=function(e,t,n){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.beginKeyVerification(e,t,n)},D.prototype.setGlobalBlacklistUnverifiedDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalBlacklistUnverifiedDevices(e)},D.prototype.getGlobalBlacklistUnverifiedDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalBlacklistUnverifiedDevices()},D.prototype.setGlobalErrorOnUnknownDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalErrorOnUnknownDevices(e)},D.prototype.getGlobalErrorOnUnknownDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalErrorOnUnknownDevices()},F(D,["resetCrossSigningKeys","getCrossSigningId","getStoredCrossSigningForUser","checkUserTrust","checkDeviceTrust","checkOwnCrossSigningTrust","checkCrossSigningPrivateKey","legacyDeviceVerification","prepareToEncrypt","isCrossSigningReady","getCryptoTrustCrossSignedDevices","setCryptoTrustCrossSignedDevices"]),D.prototype.checkEventSenderTrust=async function(e){const t=await this.getEventSenderDeviceInfo(e);return t?await this._crypto.checkDeviceTrust(e.getSender(),t.deviceId):0},F(D,["createRecoveryKeyFromPassphrase","bootstrapSecretStorage","addSecretStorageKey","hasSecretStorageKey","secretStorageKeyNeedsUpgrade","storeSecret","getSecret","isSecretStored","requestSecret","getDefaultSecretStorageKeyId","setDefaultSecretStorageKeyId","checkSecretStoragePrivateKey"]),D.prototype.getEventSenderDeviceInfo=async function(e){return this._crypto?this._crypto.getEventSenderDeviceInfo(e):null},D.prototype.isEventSenderVerified=async function(e){const t=await this.getEventSenderDeviceInfo(e);return!!t&&t.isVerified()},D.prototype.cancelAndResendEventRoomKeyRequest=function(e){return e.cancelAndResendKeyRequest(this._crypto,this.getUserId())},D.prototype.setRoomEncryption=function(e,t){if(!this._crypto)throw new Error("End-to-End encryption disabled");return this._crypto.setRoomEncryption(e,t)},D.prototype.isRoomEncrypted=function(e){const t=this.getRoom(e);return!!t&&(!!t.currentState.getStateEvents("m.room.encryption","")||this._roomList.isRoomEncrypted(e))},D.prototype.forceDiscardSession=function(e){if(!this._crypto)throw new Error("End-to-End encryption disabled");this._crypto.forceDiscardSession(e)},D.prototype.exportRoomKeys=function(){return this._crypto?this._crypto.exportRoomKeys():Promise.reject(new Error("End-to-end encryption disabled"))},D.prototype.importRoomKeys=function(e){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.importRoomKeys(e)},D.prototype.checkKeyBackup=function(){return this._crypto.checkKeyBackup()},D.prototype.getKeyBackupVersion=function(){return this._http.authedRequest(void 0,"GET","/room_keys/version",void 0,void 0,{prefix:g.g}).then(e=>{if(e.algorithm!==v.MEGOLM_BACKUP_ALGORITHM){const t="Unknown backup algorithm: "+e.algorithm;return Promise.reject(t)}if("object"==typeof e.auth_data&&e.auth_data.public_key)return e;{const e="Invalid backup data returned";return Promise.reject(e)}}).catch(e=>{if("M_NOT_FOUND"===e.errcode)return null;throw e})},D.prototype.isKeyBackupTrusted=function(e){return this._crypto.isKeyBackupTrusted(e)},D.prototype.getKeyBackupEnabled=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return Boolean(this._crypto.backupKey)},D.prototype.enableKeyBackup=function(t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo=t,this._crypto.backupKey&&this._crypto.backupKey.free(),this._crypto.backupKey=new e.Olm.PkEncryption,this._crypto.backupKey.set_recipient_key(t.auth_data.public_key),this.emit("crypto.keyBackupStatus",!0),this._crypto.scheduleKeyBackupSend()},D.prototype.disableKeyBackup=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo=null,this._crypto.backupKey&&this._crypto.backupKey.free(),this._crypto.backupKey=null,this.emit("crypto.keyBackupStatus",!1)},D.prototype.prepareKeyBackupVersion=async function(e,{secureSecretStorage:t=!1}={}){if(null===this._crypto)throw new Error("End-to-end encryption disabled");const[n,o,r]=await this.createRecoveryKeyFromPassphrase(e);t&&(await this.storeSecret("m.megolm_backup.v1",Object(v.encodeBase64)(r)),E.a.info("Key backup private key stored in secret storage"));const i={public_key:n.pubkey};return n.passphrase&&(i.private_key_salt=n.passphrase.salt,i.private_key_iterations=n.passphrase.iterations),{algorithm:v.MEGOLM_BACKUP_ALGORITHM,auth_data:i,recovery_key:o}},D.prototype.isKeyBackupKeyStored=async function(){return this.isSecretStored("m.megolm_backup.v1",!1)},D.prototype.createKeyBackupVersion=async function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");const t={algorithm:e.algorithm,auth_data:e.auth_data};await this._crypto._signObject(t.auth_data),this._cryptoCallbacks.getCrossSigningKey&&this._crypto._crossSigningInfo.getId()&&await this._crypto._crossSigningInfo.signObject(t.auth_data,"master");const n=await this._http.authedRequest(void 0,"POST","/room_keys/version",void 0,t,{prefix:g.g});return await this.checkKeyBackup(),this.getKeyBackupEnabled()||E.a.error("Key backup not usable even though we just created it"),n},D.prototype.deleteKeyBackupVersion=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo&&this._crypto.backupInfo.version===e&&this.disableKeyBackup();const t=m.f("/room_keys/version/$version",{$version:e});return this._http.authedRequest(void 0,"DELETE",t,void 0,void 0,{prefix:g.g})},D.prototype._makeKeyBackupPath=function(e,t,n){let o;return o=void 0!==t?m.f("/room_keys/keys/$roomId/$sessionId",{$roomId:e,$sessionId:t}):void 0!==e?m.f("/room_keys/keys/$roomId",{$roomId:e}):"/room_keys/keys",{path:o,queryData:void 0===n?void 0:{version:n}}},D.prototype.sendKeyBackup=function(e,t,n,o){if(null===this._crypto)throw new Error("End-to-end encryption disabled");const r=this._makeKeyBackupPath(e,t,n);return this._http.authedRequest(void 0,"PUT",r.path,r.queryData,o,{prefix:g.g})},D.prototype.scheduleAllGroupSessionsForBackup=async function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");await this._crypto.scheduleAllGroupSessionsForBackup()},D.prototype.flagAllGroupSessionsForBackup=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.flagAllGroupSessionsForBackup()},D.prototype.isValidRecoveryKey=function(e){try{return Object(w.a)(e),!0}catch(e){return!1}},D.prototype.keyBackupKeyFromPassword=function(e,t){return Object(C.b)(t.auth_data,e)},D.prototype.keyBackupKeyFromRecoveryKey=function(e){return Object(w.a)(e)},D.RESTORE_BACKUP_ERROR_BAD_KEY="RESTORE_BACKUP_ERROR_BAD_KEY",D.prototype.restoreKeyBackupWithPassword=async function(e,t,n,o,r){const i=await Object(C.b)(o.auth_data,e);return this._restoreKeyBackup(i,t,n,o,r)},D.prototype.restoreKeyBackupWithSecretStorage=async function(e,t,n,o){const r=Object(v.decodeBase64)(await this.getSecret("m.megolm_backup.v1"));return this._restoreKeyBackup(r,t,n,e,o)},D.prototype.restoreKeyBackupWithRecoveryKey=function(e,t,n,o,r){const i=Object(w.a)(e);return this._restoreKeyBackup(i,t,n,o,r)},D.prototype.restoreKeyBackupWithCache=async function(e,t,n,o){const r=await this._crypto.getSessionBackupPrivateKey();if(!r)throw new Error("Couldn't get key");return this._restoreKeyBackup(r,e,t,n,o)},D.prototype._restoreKeyBackup=function(t,n,o,r,{cacheCompleteCallback:i}={}){if(null===this._crypto)throw new Error("End-to-end encryption disabled");let a=0,s=[];const c=this._makeKeyBackupPath(n,o,r.version),l=new e.Olm.PkDecryption;let u;try{u=l.init_with_private_key(t)}catch(e){throw l.free(),e}return u!==r.auth_data.public_key?Promise.reject({errcode:D.RESTORE_BACKUP_ERROR_BAD_KEY}):(this._crypto.storeSessionBackupPrivateKey(t).catch(e=>{console.warn("Error caching session backup key:",e)}).then(i),this._http.authedRequest(void 0,"GET",c.path,c.queryData,void 0,{prefix:g.g}).then(e=>{if(e.rooms)for(const[t,n]of Object.entries(e.rooms)){if(!n.sessions)continue;a+=Object.keys(n.sessions).length;const e=R(n.sessions,l,t);for(const n of e)n.room_id=t,s.push(n)}else if(e.sessions)a=Object.keys(e.sessions).length,s=R(e.sessions,l,n);else{a=1;try{const t=O(e,l);t.room_id=n,t.session_id=o,s.push(t)}catch(e){E.a.log("Failed to decrypt megolm session from backup",e)}}return this.importRoomKeys(s)}).then(()=>this._crypto.setTrustedBackupPubKey(u)).then(()=>({total:a,imported:s.length})).finally(()=>{l.free()}))},D.prototype.deleteKeysFromBackup=function(e,t,n){if(null===this._crypto)throw new Error("End-to-end encryption disabled");const o=this._makeKeyBackupPath(e,t,n);return this._http.authedRequest(void 0,"DELETE",o.path,o.queryData,void 0,{prefix:g.g})},D.prototype.getGroup=function(e){return this.store.getGroup(e)},D.prototype.getGroups=function(){return this.store.getGroups()},D.prototype.getMediaConfig=function(e){return this._http.authedRequest(e,"GET","/config",void 0,void 0,{prefix:g.e})},D.prototype.getRoom=function(e){return this.store.getRoom(e)},D.prototype.getRooms=function(){return this.store.getRooms()},D.prototype.getVisibleRooms=function(){const e=this.store.getRooms(),t=new Set;for(const n of e){const e=n.currentState.getStateEvents("m.room.create","");if(e){const n=e.getContent().predecessor;n&&n.room_id&&t.add(n.room_id)}}return e.filter(e=>!e.currentState.getStateEvents("m.room.tombstone","")||!t.has(e.roomId))},D.prototype.getUser=function(e){return this.store.getUser(e)},D.prototype.getUsers=function(){return this.store.getUsers()},D.prototype.setAccountData=function(e,t,n){const o=m.f("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this._http.authedRequest(n,"PUT",o,void 0,t)},D.prototype.getAccountData=function(e){return this.store.getAccountData(e)},D.prototype.getAccountDataFromServer=async function(e){if(this.isInitialSyncComplete()){const t=this.store.getAccountData(e);return t?t.getContent():null}const t=m.f("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e});return this._http.authedRequest(void 0,"GET",t,void 0)},D.prototype.getIgnoredUsers=function(){const e=this.getAccountData("m.ignored_user_list");return e&&e.getContent()&&e.getContent().ignored_users?Object.keys(e.getContent().ignored_users):[]},D.prototype.setIgnoredUsers=function(e,t){const n={ignored_users:{}};return e.map(e=>n.ignored_users[e]={}),this.setAccountData("m.ignored_user_list",n,t)},D.prototype.isUserIgnored=function(e){return-1!==this.getIgnoredUsers().indexOf(e)},D.prototype.joinRoom=function(e,t,n){if(m.q(t))throw new Error("Expected 'opts' object, got function.");void 0===(t=t||{}).syncRoom&&(t.syncRoom=!0);const o=this.getRoom(e);if(o&&o.hasMembershipState(this.credentials.userId,"join"))return Promise.resolve(o);let r=Promise.resolve();t.inviteSignUrl&&(r=this._http.requestOtherUrl(void 0,"POST",t.inviteSignUrl,{mxid:this.credentials.userId}));const i={};t.viaServers&&(i.server_name=t.viaServers);const a={qsStringifyOptions:{arrayFormat:"repeat"}},s=this;return new Promise((o,l)=>{r.then((function(t){const n={};t&&(n.third_party_signed=t);const o=m.f("/join/$roomid",{$roomid:e});return s._http.authedRequest(void 0,"POST",o,i,n,a)})).then((function(e){const n=e.room_id,o=new c.a(s,s._clientOpts).createRoom(n);return t.syncRoom,Promise.resolve(o)})).then((function(e){j(n,o,e)}),(function(e){U(n,l,e)}))})},D.prototype.resendEvent=function(e,t){return A(t,e,l.a.SENDING),N(this,t,e)},D.prototype.cancelPendingEvent=function(e){if([l.a.QUEUED,l.a.NOT_SENT].indexOf(e.status)<0)throw new Error("cannot cancel an event with status "+e.status);this.scheduler&&this.scheduler.removeEventFromQueue(e),A(this.getRoom(e.getRoomId()),e,l.a.CANCELLED)},D.prototype.setRoomName=function(e,t,n){return this.sendStateEvent(e,"m.room.name",{name:t},void 0,n)},D.prototype.setRoomTopic=function(e,t,n){return this.sendStateEvent(e,"m.room.topic",{topic:t},void 0,n)},D.prototype.getRoomTags=function(e,t){const n=m.f("/user/$userId/rooms/$roomId/tags/",{$userId:this.credentials.userId,$roomId:e});return this._http.authedRequest(t,"GET",n,void 0)},D.prototype.setRoomTag=function(e,t,n,o){const r=m.f("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(o,"PUT",r,void 0,n)},D.prototype.deleteRoomTag=function(e,t,n){const o=m.f("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(n,"DELETE",o,void 0,void 0)},D.prototype.setRoomAccountData=function(e,t,n,o){const r=m.f("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this._http.authedRequest(o,"PUT",r,void 0,n)},D.prototype.setPowerLevel=function(e,t,n,o,r){let i={users:{}};o&&"m.room.power_levels"===o.getType()&&(i=m.c(o.getContent())),i.users[t]=n;const a=m.f("/rooms/$roomId/state/m.room.power_levels",{$roomId:e});return this._http.authedRequest(r,"PUT",a,void 0,i)},D.prototype.sendEvent=function(e,t,n,o,r){return this._sendCompleteEvent(e,{type:t,content:n},o,r)},D.prototype._sendCompleteEvent=function(e,t,n,o){m.q(n)&&(o=n,n=void 0),n||(n=this.makeTxnId());const r=new l.b(Object.assign(t,{event_id:"~"+e+":"+n,user_id:this.credentials.userId,room_id:e,origin_server_ts:(new Date).getTime()})),i=this.getRoom(e),a=r.getAssociatedId();if(a&&a.startsWith("~")){const e=i.getPendingEvents().find(e=>e.getId()===a);e.once("Event.localEventIdReplaced",()=>{r.updateAssociatedId(e.getId())})}const s=r.getType();return E.a.log("sendEvent of type ".concat(s," in ").concat(e," with txnId ").concat(n)),r._txnId=n,r.setStatus(l.a.SENDING),i&&i.addPendingEvent(r,n),r.status===l.a.NOT_SENT?Promise.reject(new Error("Event blocked by other events not yet sent")):N(this,i,r,o)},D.prototype.redactEvent=function(e,t,n,o){return this._sendCompleteEvent(e,{type:"m.room.redaction",content:{},redacts:t},n,o)},D.prototype.sendMessage=function(e,t,n,o){return m.q(n)&&(o=n,n=void 0),this.sendEvent(e,"m.room.message",t,n,o)},D.prototype.sendTextMessage=function(e,t,n,o){const r=_.makeTextMessage(t);return this.sendMessage(e,r,n,o)},D.prototype.sendNotice=function(e,t,n,o){const r=_.makeNotice(t);return this.sendMessage(e,r,n,o)},D.prototype.sendEmoteMessage=function(e,t,n,o){const r=_.makeEmoteMessage(t);return this.sendMessage(e,r,n,o)},D.prototype.sendImageMessage=function(e,t,n,o,r){m.q(o)&&(r=o,o=void 0),o||(o="Image");const i={msgtype:"m.image",url:t,info:n,body:o};return this.sendMessage(e,i,r)},D.prototype.sendStickerMessage=function(e,t,n,o,r){m.q(o)&&(r=o,o=void 0),o||(o="Sticker");const i={url:t,info:n,body:o};return this.sendEvent(e,"m.sticker",i,r,void 0)},D.prototype.sendHtmlMessage=function(e,t,n,o){const r=_.makeHtmlMessage(t,n);return this.sendMessage(e,r,o)},D.prototype.sendHtmlNotice=function(e,t,n,o){const r=_.makeHtmlNotice(t,n);return this.sendMessage(e,r,o)},D.prototype.sendHtmlEmote=function(e,t,n,o){const r=_.makeHtmlEmote(t,n);return this.sendMessage(e,r,o)},D.prototype.sendReceipt=function(e,t,n,o){if("function"==typeof n&&(o=n,n={}),this.isGuest())return Promise.resolve({});const r=m.f("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),i=this._http.authedRequest(o,"POST",r,void 0,n||{}),a=this.getRoom(e.getRoomId());return a&&a._addLocalEchoReceipt(this.credentials.userId,e,t),i},D.prototype.sendReadReceipt=async function(e,t,n){"function"==typeof t&&(n=t,t={}),t||(t={});const o=e.getId(),r=this.getRoom(e.getRoomId());if(r&&r.hasPendingEvent(o))throw new Error("Cannot set read receipt to a pending event (".concat(o,")"));const i={"m.hidden":Boolean(t.hidden)};return this.sendReceipt(e,"m.read",i,n)},D.prototype.setRoomReadMarkers=async function(e,t,n,o){const r=this.getRoom(e);if(r&&r.hasPendingEvent(t))throw new Error("Cannot set read marker to a pending event (".concat(t,")"));let i;if(n){if(i=n.getId(),r&&r.hasPendingEvent(i))throw new Error("Cannot set read receipt to a pending event (".concat(i,")"));r&&r._addLocalEchoReceipt(this.credentials.userId,n,"m.read")}return this.setRoomReadMarkersHttpRequest(e,t,i,o)},D.prototype.getUrlPreview=function(e,t,n){const o=t+"_"+e,r=this.urlPreviewCache[o];if(r)return Promise.resolve(r);const i=this;return this._http.authedRequest(n,"GET","/preview_url",{url:e,ts:t},void 0,{prefix:g.e}).then((function(e){return i.urlPreviewCache[o]=e,e}))},D.prototype.sendTyping=function(e,t,n,o){if(this.isGuest())return Promise.resolve({});const r=m.f("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.credentials.userId}),i={typing:t};return t&&(i.timeout=n||2e4),this._http.authedRequest(o,"PUT",r,void 0,i)},D.prototype.getRoomUpgradeHistory=function(e,t=!1){let n=this.getRoom(e);if(!n)return[];const o=[n];let r=n.currentState.getStateEvents("m.room.create","");for(;r;){E.a.log("Looking at ".concat(r.getId()));const e=r.getContent().predecessor;if(!e||!e.room_id)break;{E.a.log("Looking at predecessor ".concat(e.room_id));const n=this.getRoom(e.room_id);if(!n)break;if(t){const e=n.currentState.getStateEvents("m.room.tombstone","");if(!e||e.getContent().replacement_room!==n.roomId)break}o.splice(0,0,n),r=n.currentState.getStateEvents("m.room.create","")}}let i=n.currentState.getStateEvents("m.room.tombstone","");for(;i;){const e=this.getRoom(i.getContent().replacement_room);if(!e)break;if(e.roomId===n.roomId)break;if(t){if(r=e.currentState.getStateEvents("m.room.create",""),!r||!r.getContent().predecessor)break;if(r.getContent().predecessor.room_id!==n.roomId)break}if(o.push(e),new Set(o.map(e=>e.roomId)).sizethis.leave(e).then(()=>{r[e]=null}).catch(t=>(r[e]=t,null));for(const e of o)i.push(a(e.roomId));return Promise.all(i).then(()=>r)},D.prototype.ban=function(e,t,n,o){return P(this,e,t,"ban",n,o)},D.prototype.forget=function(e,t,n){void 0===t&&(t=!0);const o=P(this,e,void 0,"forget",void 0,n);if(!t)return o;const r=this;return o.then((function(t){return r.store.removeRoom(e),r.emit("deleteRoom",e),t}))},D.prototype.unban=function(e,t,n){const o=m.f("/rooms/$roomId/unban",{$roomId:e}),r={user_id:t};return this._http.authedRequest(n,"POST",o,void 0,r)},D.prototype.kick=function(e,t,n,o){return function(e,t,n,o,r,i){m.q(r)&&(i=r,r=void 0);const a=m.f("/rooms/$roomId/state/m.room.member/$userId",{$roomId:t,$userId:n});return e._http.authedRequest(i,"PUT",a,void 0,{membership:o,reason:r})}(this,e,t,"leave",n,o)},D.prototype.getPushActionsForEvent=function(e){return e.getPushActions()||e.setPushActions(this._pushProcessor.actionsForEvent(e)),e.getPushActions()},D.prototype.setProfileInfo=function(e,t,n){const o=m.f("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this._http.authedRequest(n,"PUT",o,void 0,t)},D.prototype.setDisplayName=function(e,t){return this.setProfileInfo("displayname",{displayname:e},t)},D.prototype.setAvatarUrl=function(e,t){return this.setProfileInfo("avatar_url",{avatar_url:e},t)},D.prototype.mxcUrlToHttp=function(e,t,n,o,r){return Object(f.a)(this.baseUrl,e,t,n,o,r)},D.prototype._unstable_setStatusMessage=function(e){const t="im.vector.user_status";return Promise.all(this.getRooms().map(n=>{const o="join"===n.getMyMembership(),r=2===n.getInvitedAndJoinedMemberCount();return o&&r&&n.currentState.mayClientSendStateEvent(t,this)?this.sendStateEvent(n.roomId,t,{status:e},this.getUserId()):Promise.resolve()}))},D.prototype.setPresence=function(e,t){const n=m.f("/presence/$userId/status",{$userId:this.credentials.userId});"string"==typeof e&&(e={presence:e});if(-1==["offline","online","unavailable"].indexOf(e.presence))throw new Error("Bad presence value: "+e.presence);return this._http.authedRequest(t,"PUT",n,void 0,e)},D.prototype.getPresenceList=function(e){return L(e,this,void 0,"GET")},D.prototype.inviteToPresenceList=function(e,t){return L(e,this,{invite:t},"POST")},D.prototype.dropFromPresenceList=function(e,t){return L(e,this,{drop:t},"POST")},D.prototype.scrollback=function(e,t,n){m.q(t)&&(n=t,t=void 0),t=t||30;let o=0,r=this._ongoingScrollbacks[e.roomId]||{};if(r.promise)return r.promise;if(r.errorTs){const e=Date.now()-r.errorTs;o=Math.max(3e3-e,0)}if(null===e.oldState.paginationToken)return Promise.resolve(e);const i=this.store.scrollback(e,t).length;if(i===t)return Promise.resolve(e);t-=i;const a=this,s=new Promise((r,i)=>{Object(m.A)(o).then((function(){return a._createMessagesRequest(e.roomId,e.oldState.paginationToken,t,"b")})).then((function(t){const o=m.u(t.chunk,B(a));if(t.state){const n=m.u(t.state,B(a));e.currentState.setUnknownStateEvents(n)}e.addEventsToTimeline(o,!0,e.getLiveTimeline()),e.oldState.paginationToken=t.end,0===t.chunk.length&&(e.oldState.paginationToken=null),a.store.storeEvents(e,o,t.end,!0),a._ongoingScrollbacks[e.roomId]=null,j(n,r,e)}),(function(t){a._ongoingScrollbacks[e.roomId]={errorTs:Date.now()},U(n,i,t)}))});return r={promise:s,errorTs:null},this._ongoingScrollbacks[e.roomId]=r,s},D.prototype.getEventTimeline=function(e,t){if(!this.timelineSupport)throw new Error("timeline support is disabled. Set the 'timelineSupport' parameter to true when creating MatrixClient to enable it.");if(e.getTimelineForEvent(t))return Promise.resolve(e.getTimelineForEvent(t));const n=m.f("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t});let o=void 0;this._clientOpts.lazyLoadMembers&&(o={filter:JSON.stringify(s.a.LAZY_LOADING_MESSAGES_FILTER)});const r=this;return r._http.authedRequest(void 0,"GET",n,o).then((function(n){if(!n.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);n.events_after.reverse();const o=n.events_after.concat([n.event]).concat(n.events_before),i=m.u(o,r.getEventMapper());let a=e.getTimelineForEvent(i[0].getId());if(a){const e=m.u(n.state,r.getEventMapper());a.getState(u.a.BACKWARDS).setUnknownStateEvents(e)}else a=e.addTimeline(),a.initialiseState(m.u(n.state,r.getEventMapper())),a.getState(u.a.FORWARDS).paginationToken=n.end;return e.addEventsToTimeline(i,!0,a,n.start),e.getTimelineForEvent(t)||a}))},D.prototype._createMessagesRequest=function(e,t,n,o,r){const i=m.f("/rooms/$roomId/messages",{$roomId:e});void 0===n&&(n=30);const a={from:t,limit:n,dir:o};let c=null;return this._clientOpts.lazyLoadMembers&&(c=Object.assign({},s.a.LAZY_LOADING_MESSAGES_FILTER)),r&&(c=c||{},Object.assign(c,r.getRoomTimelineFilterComponent())),c&&(a.filter=JSON.stringify(c)),this._http.authedRequest(void 0,"GET",i,a)},D.prototype.paginateEventTimeline=function(e,t){const n=e.getTimelineSet()===this._notifTimelineSet,o=(t=t||{}).backwards||!1;if(n&&!o)throw new Error("paginateNotifTimeline can only paginate backwards");const r=o?u.a.BACKWARDS:u.a.FORWARDS,i=e.getPaginationToken(r);if(!i)return Promise.resolve(!1);const a=e._paginationRequests[r];if(a)return a;let s,c,l;const d=this;if(n)s="/notifications",c={limit:"limit"in t?t.limit:30,only:"highlight"},i&&"end"!==i&&(c.from=i),l=this._http.authedRequest(void 0,"GET","/notifications",c,void 0).then((function(t){const n=t.next_token,i=[];for(let e=0;e{r.then((function(){o.getPushRules().then((function(t){o.pushRules=t,e()}),(function(e){t(e)}))}),(function(e){o.getPushRules().then((function(n){o.pushRules=n,t(e)}),(function(n){t(e)}))}))})},D.prototype.searchMessageText=function(e,t){const n={search_term:e.query};return"keys"in e&&(n.keys=e.keys),this.search({body:{search_categories:{room_events:n}}},t)},D.prototype.searchRoomEvents=function(e){const t={search_categories:{room_events:{search_term:e.term,filter:e.filter,order_by:"recent",event_context:{before_limit:1,after_limit:1,include_profile:!0}}}},n={_query:t,results:[],highlights:[]};return this.search({body:t}).then(this._processRoomEventsSearch.bind(this,n))},D.prototype.backPaginateRoomEventsSearch=function(e){if(!e.next_batch)return Promise.reject(new Error("Cannot backpaginate event search any further"));if(e.pendingRequest)return e.pendingRequest;const t={body:e._query,next_batch:e.next_batch},n=this.search(t).then(this._processRoomEventsSearch.bind(this,e)).finally((function(){e.pendingRequest=null}));return e.pendingRequest=n,n},D.prototype._processRoomEventsSearch=function(e,t){const n=t.search_categories.room_events;e.count=n.count,e.next_batch=n.next_batch;const o={};n.highlights.forEach((function(e){o[e]=1})),e.highlights.forEach((function(e){o[e]=1})),e.highlights=Object.keys(o);for(let t=0;te.admin)},D.prototype.whoisSynapseUser=function(e){const t=m.f("/_synapse/admin/v1/whois/$userId",{$userId:e});return this._http.authedRequest(void 0,"GET",t,void 0,void 0,{prefix:""})},D.prototype.deactivateSynapseUser=function(e){const t=m.f("/_synapse/admin/v1/deactivate/$userId",{$userId:e});return this._http.authedRequest(void 0,"POST",t,void 0,void 0,{prefix:""})},D.prototype.startClient=async function(e){this.clientRunning||(this.clientRunning=!0,"number"==typeof e&&(e={initialSyncLimit:e}),this._crypto&&(this._crypto.uploadDeviceKeys(),this._crypto.start()),function e(t){if(!t._supportsVoip)return;if(t.isGuest())return;t.turnServer().then((function(n){if(n.uris){E.a.log("Got TURN URIs: "+n.uris+" refresh in "+n.ttl+" secs");const o={urls:n.uris,username:n.username,credential:n.password};t._turnServers=[o],t._checkTurnServersTimeoutID=setTimeout(()=>{e(t)},1e3*(n.ttl||3600)*.9)}}),(function(n){E.a.error("Failed to get TURN URIs"),t._checkTurnServersTimeoutID=setTimeout((function(){e(t)}),6e4)}))}(this),this._syncApi&&(E.a.error("Still have sync object whilst not running: stopping old one"),this._syncApi.stop()),(e=Object.assign({},e)).crypto=this._crypto,e.canResetEntireTimeline=e=>!!this._canResetTimelineCallback&&this._canResetTimelineCallback(e),this._clientOpts=e,this._syncApi=new c.a(this,e),this._syncApi.sync())},D.prototype._storeClientOptions=function(){const e=["boolean","string","number"],t=Object.entries(this._clientOpts).filter(([t,n])=>e.includes(typeof n)).reduce((e,[t,n])=>(e[t]=n,e),{});return this.store.storeClientOptions(t)},D.prototype.stopClient=function(){E.a.log("stopping MatrixClient"),this.clientRunning=!1,this._syncApi&&(this._syncApi.stop(),this._syncApi=null),this._crypto&&this._crypto.stop(),this._peekSync&&this._peekSync.stopPeeking(),e.clearTimeout(this._checkTurnServersTimeoutID)},D.prototype.getVersions=async function(){return null===this._serverVersionsCache&&(this._serverVersionsCache=await this._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:""})),this._serverVersionsCache},D.prototype.isVersionSupported=async function(e){const{versions:t}=await this.getVersions();return t&&t.includes(e)},D.prototype.doesServerSupportLazyLoading=async function(){const e=await this.getVersions();if(!e)return!1;const t=e.versions,n=e.unstable_features;return t&&t.includes("r0.5.0")||n&&n["m.lazy_load_members"]},D.prototype.doesServerRequireIdServerParam=async function(){const e=await this.getVersions();if(!e)return!0;const t=e.versions;if(t&&t.includes("r0.6.0"))return!1;const n=e.unstable_features;return!n||(void 0===n["m.require_identity_server"]||n["m.require_identity_server"])},D.prototype.doesServerAcceptIdentityAccessToken=async function(){const e=await this.getVersions();if(!e)return!1;const t=e.versions,n=e.unstable_features;return t&&t.includes("r0.6.0")||n&&n["m.id_access_token"]},D.prototype.doesServerSupportSeparateAddAndBind=async function(){const e=await this.getVersions();if(!e)return!1;const t=e.versions,n=e.unstable_features;return t&&t.includes("r0.6.0")||n&&n["m.separate_add_and_bind"]},D.prototype.doesServerSupportUnstableFeature=async function(e){const t=await this.getVersions();if(!t)return!1;const n=t.unstable_features;return n&&!!n[e]},D.prototype.hasLazyLoadMembersEnabled=function(){return!!this._clientOpts.lazyLoadMembers},D.prototype.setCanResetTimelineCallback=function(e){this._canResetTimelineCallback=e},D.prototype.getCanResetTimelineCallback=function(){return this._canResetTimelineCallback},D.prototype.relations=async function(e,t,n,o,r={}){const i=function(e,t,n){return"m.reaction"===n?n:e.isRoomEncrypted(t)?"m.room.encrypted":n}(this,e,o),a=await this.fetchRelations(e,t,n,i,r),s=this.getEventMapper();let c;a.original_event&&(c=s(a.original_event));let l=a.chunk.map(s);if("m.room.encrypted"===i){const e=c?l.concat(c):l;await Promise.all(e.map(e=>new Promise(t=>e.once("Event.decrypted",t)))),l=l.filter(e=>e.getType()===o)}return{originalEvent:c,events:l,nextBatch:a.next_batch}},D.prototype.getEventMapper=function(){return B(this)},D.prototype.getCrossSigningCacheCallbacks=function(){return this._crypto&&this._crypto._crossSigningInfo.getCacheCallbacks()},D.prototype.generateClientSecret=function(){return Object(x.a)(32)}}).call(this,n(24))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var o=n(10),r=n(28);function i(e){this.groupId=e,this.name=null,this.avatarUrl=null,this.myMembership=null,this.inviter=null}o.o(i,r.EventEmitter),i.prototype.setProfile=function(e,t){this.name===e&&this.avatarUrl===t||(this.name=e||this.groupId,this.avatarUrl=t,this.emit("Group.profile",this))},i.prototype.setMyMembership=function(e){this.myMembership!==e&&(this.myMembership=e,this.emit("Group.myMembership",this))},i.prototype.setInviter=function(e){this.inviter=e}},function(e,t,n){"use strict";n.d(t,"a",(function(){return g}));var o=n(28),r=n(182),i=n(30),a=n(55),s=n(10),c=n(26),l=n(180);function u(e,t){this.roomId=e,this.info=t}var d=n(8),p=n(206);const h=["1","2","3","4","5"];function m(e,t,n){const o={content:{},type:"m.receipt",room_id:t.getRoomId()};return o.content[t.getId()]={},o.content[t.getId()][n]={},o.content[t.getId()][n][e]={ts:t.getTs()},new c.b(o)}function g(e,t,n,o){if((o=o||{}).pendingEventOrdering=o.pendingEventOrdering||"chronological",this.reEmitter=new p.a(this),-1===["chronological","detached"].indexOf(o.pendingEventOrdering))throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or 'detached'. Got: '"+o.pendingEventOrdering+"'");this.myUserId=n,this.roomId=e,this.name=e,this.tags={},this.accountData={},this.summary=null,this.storageToken=o.storageToken,this._opts=o,this._txnToEvent={},this._receipts={},this._receiptCacheByEventId={},this._realReceipts={},this._notificationCounts={},this._timelineSets=[new r.a(this,o)],this.reEmitter.reEmit(this.getUnfilteredTimelineSet(),["Room.timeline","Room.timelineReset"]),this._fixUpLegacyTimelineFields(),this._filteredTimelineSets={},"detached"==this._opts.pendingEventOrdering&&(this._pendingEventList=[]),this._blacklistUnverifiedDevices=null,this._selfMembership=null,this._summaryHeroes=null,this._client=t,this._opts.lazyLoadMembers?this._membersPromise=null:this._membersPromise=Promise.resolve()}s.o(g,o.EventEmitter),g.prototype.getVersion=function(){const e=this.currentState.getStateEvents("m.room.create","");if(!e)return d.a.warn("Room "+this.room_id+" does not have an m.room.create event"),"1";const t=e.getContent().room_version;return void 0===t?"1":t},g.prototype.shouldUpgradeToVersion=function(){return h.includes(this.getVersion())?null:"5"},g.prototype.getRecommendedVersion=async function(){let e=(await this._client.getCapabilities())["m.room_versions"];if(!e){e={default:"5",available:{}};for(const t of h)e.available[t]="stable"}let t=this._checkVersionAgainstCapability(e);if(t.urgent&&t.needsUpgrade){if(d.a.warn("Refreshing room version capability because the server looks to be supporting a newer room version we don't know about."),e=(await this._client.getCapabilities(!0))["m.room_versions"],!e)return d.a.warn("No room version capability - assuming upgrade required."),t;t=this._checkVersionAgainstCapability(e)}return t},g.prototype._checkVersionAgainstCapability=function(e){const t=this.getVersion();d.a.log("[".concat(this.roomId,"] Current version: ").concat(t)),d.a.log("[".concat(this.roomId,"] Version capability: "),e);const n={version:t,needsUpgrade:!1,urgent:!1};return t===e.default||Object.keys(e.available).filter(t=>"stable"===e.available[t]).includes(t)||(n.version=e.default,n.needsUpgrade=!0,n.urgent=!!this.getVersion().match(/^[0-9]+[0-9.]*$/g),n.urgent?d.a.warn("URGENT upgrade required on ".concat(this.roomId)):d.a.warn("Non-urgent upgrade required on ".concat(this.roomId))),n},g.prototype.userMayUpgradeRoom=function(e){return this.currentState.maySendStateEvent("m.room.tombstone",e)},g.prototype.getPendingEvents=function(){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call getPendingEvents with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList},g.prototype.hasPendingEvent=function(e){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call hasPendingEvent with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList.some(t=>t.getId()===e)},g.prototype.getLiveTimeline=function(){return this.getUnfilteredTimelineSet().getLiveTimeline()},g.prototype.getLastActiveTimestamp=function(){const e=this.getLiveTimeline().getEvents();if(e.length){return e[e.length-1].getTs()}return Number.MIN_SAFE_INTEGER},g.prototype.getMyMembership=function(){return this._selfMembership},g.prototype.getDMInviter=function(){if(this.myUserId){const e=this.getMember(this.myUserId);if(e)return e.getDMInviter()}if("invite"===this._selfMembership){if(2==this.getInvitedAndJoinedMemberCount()&&this._summaryHeroes.length)return this._summaryHeroes[0]}},g.prototype.guessDMUserId=function(){const e=this.getMember(this.myUserId);if(e){const t=e.getDMInviter();if(t)return t}if(Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length)return this._summaryHeroes[0];const t=this.currentState.getMembers().find(e=>e.userId!==this.myUserId);return t?t.userId:this.myUserId},g.prototype.getAvatarFallbackMember=function(){if(this.getInvitedAndJoinedMemberCount()>2)return;const e=Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length;if(e){const e=this._summaryHeroes.map(e=>this.getMember(e)).find(e=>!!e);if(e)return e}const t=this.currentState.getMembers();if(t.length<=2){const e=t.find(e=>e.userId!==this.myUserId);if(e)return e}if(e){const e=this._summaryHeroes.map(e=>this._client.getUser(e)).find(e=>!!e);if(e){const t=new l.a(this.roomId,e.userId);return t.user=e,t}}},g.prototype.updateMyMembership=function(e){const t=this._selfMembership;this._selfMembership=e,t!==e&&("leave"===e&&this._cleanupAfterLeaving(),this.emit("Room.myMembership",this,e,t))},g.prototype._loadMembersFromServer=async function(){const e=this._client.store.getSyncToken(),t=s.e({not_membership:"leave",at:e}),n=s.f("/rooms/$roomId/members?"+t,{$roomId:this.roomId}),o=this._client._http;return(await o.authedRequest(void 0,"GET",n)).chunk},g.prototype._loadMembers=async function(){let e=!1,t=await this._client.store.getOutOfBandMembers(this.roomId);return null===t&&(e=!0,t=await this._loadMembersFromServer(),d.a.log("LL: got ".concat(t.length," ")+"members from server for room ".concat(this.roomId))),{memberEvents:t.map(this._client.getEventMapper()),fromServer:e}},g.prototype.loadMembersIfNeeded=function(){if(this._membersPromise)return this._membersPromise;this.currentState.markOutOfBandMembersStarted();const e=this._loadMembers().then(e=>(this.currentState.setOutOfBandMembers(e.memberEvents),this._client.isCryptoEnabled()&&this._client.isRoomEncrypted(this.roomId)&&this._client._crypto.trackRoomDevices(this.roomId),e.fromServer)).catch(e=>{throw this._membersPromise=null,this.currentState.markOutOfBandMembersFailed(),e});return e.then(e=>{if(e){const e=this.currentState.getMembers().filter(e=>e.isOutOfBand()).map(e=>e.events.member.event);return d.a.log("LL: telling store to write ".concat(e.length)+" members for room ".concat(this.roomId)),this._client.store.setOutOfBandMembers(this.roomId,e).catch(e=>{d.a.log("LL: storing OOB room members failed, oh well",e)})}}).catch(e=>{d.a.error(e)}),this._membersPromise=e,this._membersPromise},g.prototype.clearLoadedMembersIfNeeded=async function(){this._opts.lazyLoadMembers&&this._membersPromise&&(await this.loadMembersIfNeeded(),await this._client.store.clearOutOfBandMembers(this.roomId),this.currentState.clearOutOfBandMembers(),this._membersPromise=null)},g.prototype._cleanupAfterLeaving=function(){this.clearLoadedMembersIfNeeded().catch(e=>{d.a.error("error after clearing loaded members from "+"room ".concat(this.roomId," after leaving")),d.a.log(e)})},g.prototype.resetLiveTimeline=function(e,t){for(let n=0;ne.isUnverified()))return!0}return!1},g.prototype.getTimelineSets=function(){return this._timelineSets},g.prototype.getUnfilteredTimelineSet=function(){return this._timelineSets[0]},g.prototype.getTimelineForEvent=function(e){return this.getUnfilteredTimelineSet().getTimelineForEvent(e)},g.prototype.addTimeline=function(){return this.getUnfilteredTimelineSet().addTimeline()},g.prototype.findEventById=function(e){return this.getUnfilteredTimelineSet().findEventById(e)},g.prototype.getUnreadNotificationCount=function(e){return e=e||"total",this._notificationCounts[e]},g.prototype.setUnreadNotificationCount=function(e,t){this._notificationCounts[e]=t},g.prototype.setSummary=function(e){const t=e["m.heroes"],n=e["m.joined_member_count"],o=e["m.invited_member_count"];Number.isInteger(n)&&this.currentState.setJoinedMemberCount(n),Number.isInteger(o)&&this.currentState.setInvitedMemberCount(o),Array.isArray(t)&&(this._summaryHeroes=t.filter(e=>e!==this.myUserId))},g.prototype.setBlacklistUnverifiedDevices=function(e){this._blacklistUnverifiedDevices=e},g.prototype.getBlacklistUnverifiedDevices=function(){return this._blacklistUnverifiedDevices},g.prototype.getAvatarUrl=function(e,t,n,o,r){const i=this.currentState.getStateEvents("m.room.avatar","");if(void 0===r&&(r=!0),!i&&!r)return null;const s=i?i.getContent().url:null;return s?Object(a.a)(e,s,t,n,o):r?Object(a.b)(e,this.roomId,t,n):null},g.prototype.getAliases=function(){const e=[],t=this.currentState.getStateEvents("m.room.aliases");if(t)for(let n=0;n"string"==typeof e&&("#"===e[0]&&!!e.endsWith(":".concat(o.getStateKey()))));Array.prototype.push.apply(e,t)}}return e},g.prototype.getCanonicalAlias=function(){const e=this.currentState.getStateEvents("m.room.canonical_alias","");return e&&e.getContent().alias||null},g.prototype.getAltAliases=function(){const e=this.currentState.getStateEvents("m.room.canonical_alias","");return e&&e.getContent().alt_aliases||[]},g.prototype.addEventsToTimeline=function(e,t,n,o){n.getTimelineSet().addEventsToTimeline(e,t,n,o)},g.prototype.getMember=function(e){return this.currentState.getMember(e)},g.prototype.getJoinedMembers=function(){return this.getMembersWithMembership("join")},g.prototype.getJoinedMemberCount=function(){return this.currentState.getJoinedMemberCount()},g.prototype.getInvitedMemberCount=function(){return this.currentState.getInvitedMemberCount()},g.prototype.getInvitedAndJoinedMemberCount=function(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()},g.prototype.getMembersWithMembership=function(e){return s.j(this.currentState.getMembers(),(function(t){return t.membership===e}))},g.prototype.getEncryptionTargetMembers=async function(){await this.loadMembersIfNeeded();let e=this.getMembersWithMembership("join");return this.shouldEncryptForInvitedMembers()&&(e=e.concat(this.getMembersWithMembership("invite"))),e},g.prototype.shouldEncryptForInvitedMembers=function(){const e=this.currentState.getStateEvents("m.room.history_visibility","");return e&&e.getContent()&&"joined"!==e.getContent().history_visibility},g.prototype.getDefaultRoomName=function(e){return _(this,e,!0)},g.prototype.hasMembershipState=function(e,t){const n=this.getMember(e);return!!n&&n.membership===t},g.prototype.getOrCreateFilteredTimelineSet=function(e){if(this._filteredTimelineSets[e.filterId])return this._filteredTimelineSets[e.filterId];const t=Object.assign({filter:e},this._opts),n=new r.a(this,t);this.reEmitter.reEmit(n,["Room.timeline","Room.timelineReset"]),this._filteredTimelineSets[e.filterId]=n,this._timelineSets.push(n);const o=this.getLiveTimeline();o.getEvents().forEach((function(e){n.addLiveEvent(e)}));let a=o;for(;a.getNeighbouringTimeline(i.a.BACKWARDS);)a=a.getNeighbouringTimeline(i.a.BACKWARDS);return n.getLiveTimeline().setPaginationToken(a.getPaginationToken(i.a.BACKWARDS),i.a.BACKWARDS),n},g.prototype.removeFilteredTimelineSet=function(e){const t=this._filteredTimelineSets[e.filterId];delete this._filteredTimelineSets[e.filterId];const n=this._timelineSets.indexOf(t);n>-1&&this._timelineSets.splice(n,1)},g.prototype._addLiveEvent=function(e,t,n){if(e.isRedaction()){const t=e.event.redacts,n=this.getUnfilteredTimelineSet().findEventById(t);if(n){if(n.makeRedacted(e),n.getStateKey()){this.currentState.getStateEvents(n.getType(),n.getStateKey()).getId()===n.getId()&&this.currentState.setStateEvents([n])}this.emit("Room.redaction",e,this)}}if(e.getUnsigned().transaction_id){const t=this._txnToEvent[e.getUnsigned().transaction_id];if(t)return void this._handleRemoteEcho(e,t)}for(let o=0;oe.status===c.a.NOT_SENT)&&(d.a.warn("Setting event as NOT_SENT due to messages in the same state"),e.setStatus(c.a.NOT_SENT)),this._pendingEventList.push(e),e.isRelation()&&this._aggregateNonLiveRelation(e),e.isRedaction()){const t=e.event.redacts;let n=this._pendingEventList&&this._pendingEventList.find(e=>e.getId()===t);n||(n=this.getUnfilteredTimelineSet().findEventById(t)),n&&(n.markLocallyRedacted(e),this.emit("Room.redaction",e,this))}}else for(let t=0;t{const n=e.getMember(t);return n?n.name:t});else{let n=e.currentState.getMembers().filter(e=>e.userId!==t&&("invite"===e.membership||"join"===e.membership));n.sort((e,t)=>e.userId.localeCompare(t.userId)),n=n.slice(0,5),i=n.map(e=>e.name)}if(r)return v(i,r);if("join"==e.getMyMembership()){const t=e.currentState.getStateEvents("m.room.third_party_invite");if(t&&t.length){const e=t.map(e=>e.getContent().display_name);return"Inviting ".concat(v(e))}}let a=i;return a.length||(a=e.currentState.getMembers().filter(e=>e.userId!==t&&"invite"!==e.membership&&"join"!==e.membership).map(e=>e.name)),a.length?"Empty room (was ".concat(v(a),")"):"Empty room"}function v(e,t=e.length+1){const n=t-1;if(e.length){if(1===e.length&&n<=1)return e[0];if(2===e.length&&n<=2)return"".concat(e[0]," and ").concat(e[1]);return n>1?"".concat(e[0]," and ").concat(n," others"):"".concat(e[0]," and 1 other")}return"Empty room"}f[c.a.ENCRYPTING]=[c.a.SENDING,c.a.NOT_SENT],f[c.a.SENDING]=[c.a.ENCRYPTING,c.a.QUEUED,c.a.NOT_SENT,c.a.SENT],f[c.a.QUEUED]=[c.a.SENDING,c.a.CANCELLED],f[c.a.SENT]=[],f[c.a.NOT_SENT]=[c.a.SENDING,c.a.QUEUED,c.a.CANCELLED],f[c.a.CANCELLED]=[],g.prototype.updatePendingEvent=function(e,t,n){if(d.a.log("setting pendingEvent status to ".concat(t," in ").concat(e.getRoomId())),t==c.a.SENT&&!n)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==c.a.SENT){if(this.getUnfilteredTimelineSet().eventIdToTimeline(n))return}const o=e.status,r=e.getId();if(!o)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");const i=f[o];if(!i||i.indexOf(t)<0)throw new Error("Invalid EventStatus transition "+o+"->"+t);if(e.setStatus(t),t==c.a.SENT){e.replaceLocalEventId(n);for(let e=0;ee.getId()===r);if(-1!==e){const[t]=this._pendingEventList.splice(e,1);t.isRedaction()&&this._revertRedactionLocalEcho(t)}}this.removeEvent(r)}this.emit("Room.localEchoUpdated",e,this,r,o)},g.prototype._revertRedactionLocalEcho=function(e){const t=e.event.redacts;if(!t)return;const n=this.getUnfilteredTimelineSet().findEventById(t);n&&(n.unmarkLocallyRedacted(),this.emit("Room.redactionCancelled",e,this),n.isRelation()&&this._aggregateNonLiveRelation(n))},g.prototype.addLiveEvents=function(e,t,n){let o;if(t&&-1===["replace","ignore"].indexOf(t))throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");for(o=0;o=0;--e){const o=this.timeline[e];if(o.getId()===t)return!1;if(o.getId()===n)return!0}return!1},g.prototype.getReceiptsForEvent=function(e){return this._receiptCacheByEventId[e.getId()]||[]},g.prototype.addReceipt=function(e,t){void 0===t&&(t=!1),t||this._addReceiptsToStructure(e,this._realReceipts),this._addReceiptsToStructure(e,this._receipts),this._receiptCacheByEventId=this._buildReceiptCache(this._receipts),this.emit("Room.receipt",e,this)},g.prototype._addReceiptsToStructure=function(e,t){const n=this;s.t(e.getContent()).forEach((function(o){s.t(e.getContent()[o]).forEach((function(r){s.t(e.getContent()[o][r]).forEach((function(i){const a=e.getContent()[o][r][i];t[r]||(t[r]={});const s=t[r][i];if(s){const e=n.getUnfilteredTimelineSet().compareEventOrdering(s.eventId,o);if(null!==e&&e>=0)return}else t[r][i]={};t[r][i]={eventId:o,data:a}}))}))}))},g.prototype._buildReceiptCache=function(e){const t={};return s.t(e).forEach((function(n){s.t(e[n]).forEach((function(o){const r=e[n][o];t[r.eventId]||(t[r.eventId]=[]),t[r.eventId].push({userId:o,type:n,data:r.data})}))})),t},g.prototype._addLocalEchoReceipt=function(e,t,n){this.addReceipt(m(e,t,n),!0)},g.prototype.addTags=function(e){this.tags=e.getContent().tags||{},this.emit("Room.tags",e,this)},g.prototype.addAccountData=function(e){for(let t=0;t{});n(Object(s.a)("Collecting app version information"));let o="UNKNOWN";try{o=await a.a.get().getAppVersion()}catch(e){}let l="UNKNOWN";window.navigator&&window.navigator.userAgent&&(l=window.navigator.userAgent);let p="UNKNOWN";try{p=window.matchMedia("(display-mode: standalone)").matches}catch(e){}let h="UNKNOWN";try{h=window.matchMedia("(pointer: coarse)").matches}catch(e){}const m=i.a.get();console.log("Sending bug report.");const g=new FormData;g.append("text",t.userText||"User did not supply any additional text."),g.append("app","riot-web"),g.append("version",o),g.append("user_agent",l),g.append("installed_pwa",p),g.append("touch_input",h),m&&(g.append("user_id",m.credentials.userId),g.append("device_id",m.deviceId));const f=["ed25519:".concat(m.getDeviceEd25519Key())];m.getDeviceCurve25519Key&&f.push("curve25519:".concat(m.getDeviceCurve25519Key())),g.append("device_keys",f.join(", ")),g.append("cross_signing_key",m.getCrossSigningId()),t.label&&g.append("label",t.label);const _=u.b.getLabsFeatures().filter(u.b.isFeatureEnabled);if(_.length&&g.append("enabled_labs",_.join(", ")),navigator.storage&&navigator.storage.persisted)try{g.append("storageManager_persisted",await navigator.storage.persisted())}catch(e){}else if(document.hasStorageAccess)try{g.append("storageManager_persisted",await document.hasStorageAccess())}catch(e){}if(navigator.storage&&navigator.storage.estimate)try{const e=await navigator.storage.estimate();g.append("storageManager_quota",e.quota),g.append("storageManager_usage",e.usage),e.usageDetails&&Object.keys(e.usageDetails).forEach(t=>{g.append("storageManager_usage_".concat(t),e.usageDetails[t])})}catch(e){}if(t.sendLogs){n(Object(s.a)("Collecting logs"));const e=await c.c();for(const t of e){const e=(new d).encode(t.lines),n=r.a.gzip(e);g.append("compressed-log",new Blob([n]),t.id)}}n(Object(s.a)("Uploading report")),await function(e,t,n){return new Promise((o,r)=>{const i=new XMLHttpRequest;i.open("POST",e),i.timeout=3e5,i.onreadystatechange=function(){if(i.readyState===XMLHttpRequest.LOADING)n(Object(s.a)("Waiting for response from server"));else if(i.readyState===XMLHttpRequest.DONE){if(i.status<200||i.status>=400)return void r(new Error("HTTP ".concat(i.status)));o()}},i.send(t)})}(e,g,n)}d||(d=l.TextEncoder)},function(e,t,n){"use strict";n.d(t,"a",(function(){return u}));var o=n(8),r=n(155);function i(e){return"crypto.sessions/"+e}function a(e){return"crypto.session.problems/"+e}function s(e,t){return"crypto.inboundgroupsessions/"+e+"/"+t}function c(e,t){return"crypto.inboundgroupsessions.withheld/"+e+"/"+t}function l(e){return"crypto.rooms/"+e}class u extends r.a{constructor(e){super(),this.store=e}static exists(e){const t=e.length;for(let n=0;ne.time-t.time),p(this.store,o,r)}async getEndToEndSessionProblem(e,t){const n=a(e),o=d(this.store,n)||[];if(!o.length)return null;const r=o[o.length-1];for(const e of o)if(e.time>t)return Object.assign({},e,{fixed:r.fixed});return r.fixed?null:r}async filterOutNotifiedErrorDevices(e){const t=d(this.store,"crypto.notified_error_devices")||{},n=[];for(const o of e){const{userId:e,deviceInfo:r}=o;e in t?r.deviceId in t[e]||(n.push(o),t[e][r.deviceId]=!0):(n.push(o),t[e]={[r.deviceId]:!0})}return p(this.store,"crypto.notified_error_devices",t),n}getEndToEndInboundGroupSession(e,t,n,o){o(d(this.store,s(e,t)),d(this.store,c(e,t)))}getAllEndToEndInboundGroupSessions(e,t){for(let e=0;e{n.push({senderKey:t,sessionId:r,sessionData:e})}),e&&o.length>=e)break}return Promise.resolve(n)}countSessionsNeedingBackup(){const e=d(this.store,"crypto.sessionsneedingbackup")||{};return Promise.resolve(Object.keys(e).length)}unmarkSessionsNeedingBackup(e){const t=d(this.store,"crypto.sessionsneedingbackup")||{};for(const n of e)delete t[n.senderKey+"/"+n.sessionId];return p(this.store,"crypto.sessionsneedingbackup",t),Promise.resolve()}markSessionsNeedingBackup(e){const t=d(this.store,"crypto.sessionsneedingbackup")||{};for(const n of e)t[n.senderKey+"/"+n.sessionId]=!0;return p(this.store,"crypto.sessionsneedingbackup",t),Promise.resolve()}deleteAllData(){return this.store.removeItem("crypto.account"),Promise.resolve()}getAccount(e,t){t(d(this.store,"crypto.account"))}storeAccount(e,t){p(this.store,"crypto.account",t)}getCrossSigningKeys(e,t){t(d(this.store,"crypto.cross_signing_keys"))}getSecretStorePrivateKey(e,t,n){const o=d(this.store,"crypto."+"ssss_cache.".concat(n));t(o?Uint8Array.from(o):o)}storeCrossSigningKeys(e,t){p(this.store,"crypto.cross_signing_keys",t)}storeSecretStorePrivateKey(e,t,n){p(this.store,"crypto."+"ssss_cache.".concat(t),Array.from(n))}doTxn(e,t,n){return Promise.resolve(n(null))}}function d(e,t){try{return JSON.parse(e.getItem(t))}catch(e){o.a.log("Error: Failed to get key %s: %s",t,e.stack||e),o.a.log(e.stack)}return null}function p(e,t,n){e.setItem(t,JSON.stringify(n))}},function(e,t,n){"use strict";var o=n(11),r=n.n(o),i=n(3),a=n(2),s=n.n(a),c=n(1);t.a=r()({displayName:"AsyncWrapper",propTypes:{prom:s.a.object.isRequired},getInitialState:function(){return{component:null,error:null}},componentWillMount:function(){this._unmounted=!1,console.log("Starting load of AsyncWrapper for modal"),this.props.prom.then(e=>{if(this._unmounted)return;const t=e.default?e.default:e;this.setState({component:t})}).catch(e=>{console.warn("AsyncWrapper promise failed",e),this.setState({error:e})})},componentWillUnmount:function(){this._unmounted=!0},_onWrapperCancelClick:function(){this.props.onFinished(!1)},render:function(){if(this.state.component){const e=this.state.component;return React.createElement(e,this.props)}if(this.state.error){const e=i.a("views.dialogs.BaseDialog"),t=i.a("views.elements.DialogButtons");return React.createElement(e,{onFinished:this.props.onFinished,title:Object(c.a)("Error")},Object(c.a)("Unable to load! Check your network connectivity and try again."),React.createElement(t,{primaryButton:Object(c.a)("Dismiss"),onPrimaryButtonClick:this._onWrapperCancelClick,hasCancel:!1}))}{const e=i.a("elements.Spinner");return React.createElement(e,null)}}})},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a}));var o=n(0),r=n(7);const i=(e,t=null,n=!1)=>{const[i,a]=Object(o.useState)(r.b.getValue(e,t,n));return Object(o.useEffect)(()=>{const o=r.b.watchSetting(e,t,()=>{a(r.b.getValue(e,t,n))});return()=>{r.b.unwatchSetting(o)}},[e,t,n]),i},a=(e,t=null)=>{const[n,i]=Object(o.useState)(r.b.isFeatureEnabled(e,t));return Object(o.useEffect)(()=>{const n=r.b.watchSetting(e,t,()=>{i(r.b.isFeatureEnabled(e,t))});return()=>{r.b.unwatchSetting(n)}},[e,t]),n}},function(e){e.exports=JSON.parse('[{"annotation":"grinning face","group":0,"hexcode":"1F600","order":1,"shortcodes":["gleeful"],"tags":["face","grin"],"unicode":"😀"},{"annotation":"grinning face with big eyes","group":0,"hexcode":"1F603","order":2,"shortcodes":["glad","smile"],"tags":["face","mouth","open","smile"],"unicode":"😃"},{"annotation":"grinning face with smiling eyes","group":0,"hexcode":"1F604","order":3,"shortcodes":["happy"],"tags":["eye","face","mouth","open","smile"],"unicode":"😄"},{"annotation":"beaming face with smiling eyes","group":0,"hexcode":"1F601","order":4,"shortcodes":["blissful","grin"],"tags":["eye","face","grin","smile"],"unicode":"😁","emoticon":":D"},{"annotation":"grinning squinting face","group":0,"hexcode":"1F606","order":5,"shortcodes":["amused","laugh","lol"],"tags":["face","laugh","mouth","satisfied","smile"],"unicode":"😆","emoticon":"xD"},{"annotation":"grinning face with sweat","group":0,"hexcode":"1F605","order":6,"shortcodes":["embarassed","sweat_smile"],"tags":["cold","face","open","smile","sweat"],"unicode":"😅"},{"annotation":"rolling on the floor laughing","group":0,"hexcode":"1F923","order":7,"shortcodes":["entertained","rofl"],"tags":["face","floor","laugh","rolling"],"unicode":"🤣","emoticon":":\'D"},{"annotation":"face with tears of joy","group":0,"hexcode":"1F602","order":8,"shortcodes":["joyful","haha"],"tags":["face","joy","laugh","tear"],"unicode":"😂","emoticon":":\')"},{"annotation":"slightly smiling face","group":0,"hexcode":"1F642","order":9,"shortcodes":["pleased","slight_smile"],"tags":["face","smile"],"unicode":"🙂","emoticon":":)"},{"annotation":"upside-down face","group":0,"hexcode":"1F643","order":10,"shortcodes":["ecstatic","upside_down"],"tags":["face","upside-down"],"unicode":"🙃"},{"annotation":"winking face","group":0,"hexcode":"1F609","order":11,"shortcodes":["coy","wink"],"tags":["face","wink"],"unicode":"😉","emoticon":";)"},{"annotation":"smiling face with smiling eyes","group":0,"hexcode":"1F60A","order":12,"shortcodes":["blush"],"tags":["blush","eye","face","smile"],"unicode":"😊","emoticon":":>"},{"annotation":"smiling face with halo","group":0,"hexcode":"1F607","order":13,"shortcodes":["innocent","halo"],"tags":["angel","face","fantasy","halo","innocent"],"unicode":"😇","emoticon":"o:)"},{"annotation":"smiling face with hearts","group":0,"hexcode":"1F970","order":14,"shortcodes":["love"],"tags":["adore","crush","hearts","in love"],"unicode":"🥰"},{"annotation":"smiling face with heart-eyes","group":0,"hexcode":"1F60D","order":15,"shortcodes":["lovestruck"],"tags":["eye","face","love","smile"],"unicode":"😍"},{"annotation":"star-struck","group":0,"hexcode":"1F929","order":16,"shortcodes":["starstruck"],"tags":["eyes","face","grinning","star"],"unicode":"🤩"},{"annotation":"face blowing a kiss","group":0,"hexcode":"1F618","order":17,"shortcodes":["flirty"],"tags":["face","kiss"],"unicode":"😘","emoticon":":x"},{"annotation":"kissing face","group":0,"hexcode":"1F617","order":18,"shortcodes":["kiss"],"tags":["face","kiss"],"unicode":"😗"},{"annotation":"smiling face","group":0,"hexcode":"263A","order":20,"shortcodes":["relaxed"],"tags":["face","outlined","relaxed","smile"],"unicode":"☺︎"},{"annotation":"kissing face with closed eyes","group":0,"hexcode":"1F61A","order":21,"shortcodes":["loving_kiss"],"tags":["closed","eye","face","kiss"],"unicode":"😚","emoticon":":*"},{"annotation":"kissing face with smiling eyes","group":0,"hexcode":"1F619","order":22,"shortcodes":["happy_kiss"],"tags":["eye","face","kiss","smile"],"unicode":"😙"},{"annotation":"face savoring food","group":0,"hexcode":"1F60B","order":23,"shortcodes":["yum","savour"],"tags":["delicious","face","savouring","smile","yum"],"unicode":"😋"},{"annotation":"face with tongue","group":0,"hexcode":"1F61B","order":24,"shortcodes":["playful","tongue_out"],"tags":["face","tongue"],"unicode":"😛","emoticon":":p"},{"annotation":"winking face with tongue","group":0,"hexcode":"1F61C","order":25,"shortcodes":["mischievous"],"tags":["eye","face","joke","tongue","wink"],"unicode":"😜","emoticon":";p"},{"annotation":"zany face","group":0,"hexcode":"1F92A","order":26,"shortcodes":["crazy"],"tags":["eye","goofy","large","small"],"unicode":"🤪"},{"annotation":"squinting face with tongue","group":0,"hexcode":"1F61D","order":27,"shortcodes":["facetious","lmao"],"tags":["eye","face","horrible","taste","tongue"],"unicode":"😝","emoticon":"xp"},{"annotation":"money-mouth face","group":0,"hexcode":"1F911","order":28,"shortcodes":["pretentious","money_mouth"],"tags":["face","money","mouth"],"unicode":"🤑"},{"annotation":"hugging face","group":0,"hexcode":"1F917","order":29,"shortcodes":["hugging"],"tags":["face","hug","hugging"],"unicode":"🤗"},{"annotation":"face with hand over mouth","group":0,"hexcode":"1F92D","order":30,"shortcodes":["gasp"],"tags":["whoops"],"unicode":"🤭"},{"annotation":"shushing face","group":0,"hexcode":"1F92B","order":31,"shortcodes":["shushing"],"tags":["quiet","shush"],"unicode":"🤫"},{"annotation":"thinking face","group":0,"hexcode":"1F914","order":32,"shortcodes":["curious","thinking"],"tags":["face","thinking"],"unicode":"🤔","emoticon":":l"},{"annotation":"zipper-mouth face","group":0,"hexcode":"1F910","order":33,"shortcodes":["silenced","zipper_mouth"],"tags":["face","mouth","zipper"],"unicode":"🤐","emoticon":":z"},{"annotation":"face with raised eyebrow","group":0,"hexcode":"1F928","order":34,"shortcodes":["contempt"],"tags":["distrust","skeptic"],"unicode":"🤨"},{"annotation":"neutral face","group":0,"hexcode":"1F610","order":35,"shortcodes":["indifferent","neutral"],"tags":["deadpan","face","meh","neutral"],"unicode":"😐️","emoticon":":|"},{"annotation":"expressionless face","group":0,"hexcode":"1F611","order":36,"shortcodes":["apathetic","expressionless"],"tags":["expressionless","face","inexpressive","meh","unexpressive"],"unicode":"😑"},{"annotation":"face without mouth","group":0,"hexcode":"1F636","order":37,"shortcodes":["vacant","no_mouth"],"tags":["face","mouth","quiet","silent"],"unicode":"😶","emoticon":":#"},{"annotation":"smirking face","group":0,"hexcode":"1F60F","order":38,"shortcodes":["cocky","smirk"],"tags":["face","smirk"],"unicode":"😏","emoticon":":j"},{"annotation":"unamused face","group":0,"hexcode":"1F612","order":39,"shortcodes":["unamused"],"tags":["face","unamused","unhappy"],"unicode":"😒","emoticon":":?"},{"annotation":"face with rolling eyes","group":0,"hexcode":"1F644","order":40,"shortcodes":["disbelief"],"tags":["eyeroll","eyes","face","rolling"],"unicode":"🙄"},{"annotation":"grimacing face","group":0,"hexcode":"1F62C","order":41,"shortcodes":["grimaced"],"tags":["face","grimace"],"unicode":"😬","emoticon":"8D"},{"annotation":"lying face","group":0,"hexcode":"1F925","order":42,"shortcodes":["lying"],"tags":["face","lie","pinocchio"],"unicode":"🤥"},{"annotation":"relieved face","group":0,"hexcode":"1F60C","order":43,"shortcodes":["relieved"],"tags":["face","relieved"],"unicode":"😌"},{"annotation":"pensive face","group":0,"hexcode":"1F614","order":44,"shortcodes":["pensive"],"tags":["dejected","face","pensive"],"unicode":"😔"},{"annotation":"sleepy face","group":0,"hexcode":"1F62A","order":45,"shortcodes":["sleepy"],"tags":["face","sleep"],"unicode":"😪"},{"annotation":"drooling face","group":0,"hexcode":"1F924","order":46,"shortcodes":["drooling"],"tags":["drooling","face"],"unicode":"🤤"},{"annotation":"sleeping face","group":0,"hexcode":"1F634","order":47,"shortcodes":["exhausted","sleeping"],"tags":["face","sleep","zzz"],"unicode":"😴"},{"annotation":"face with medical mask","group":0,"hexcode":"1F637","order":48,"shortcodes":["ill","mask"],"tags":["cold","doctor","face","mask","sick"],"unicode":"😷"},{"annotation":"face with thermometer","group":0,"hexcode":"1F912","order":49,"shortcodes":["sick"],"tags":["face","ill","sick","thermometer"],"unicode":"🤒"},{"annotation":"face with head-bandage","group":0,"hexcode":"1F915","order":50,"shortcodes":["injured"],"tags":["bandage","face","hurt","injury"],"unicode":"🤕"},{"annotation":"nauseated face","group":0,"hexcode":"1F922","order":51,"shortcodes":["nauseated"],"tags":["face","nauseated","vomit"],"unicode":"🤢","emoticon":"%("},{"annotation":"face vomiting","group":0,"hexcode":"1F92E","order":52,"shortcodes":["vomiting"],"tags":["sick","vomit"],"unicode":"🤮"},{"annotation":"sneezing face","group":0,"hexcode":"1F927","order":53,"shortcodes":["sneezing"],"tags":["face","gesundheit","sneeze"],"unicode":"🤧"},{"annotation":"hot face","group":0,"hexcode":"1F975","order":54,"shortcodes":["overheating"],"tags":["feverish","heat stroke","hot","red-faced","sweating"],"unicode":"🥵"},{"annotation":"cold face","group":0,"hexcode":"1F976","order":55,"shortcodes":["freezing"],"tags":["blue-faced","cold","freezing","frostbite","icicles"],"unicode":"🥶"},{"annotation":"woozy face","group":0,"hexcode":"1F974","order":56,"shortcodes":["woozy"],"tags":["dizzy","intoxicated","tipsy","uneven eyes","wavy mouth"],"unicode":"🥴","emoticon":":&"},{"annotation":"dizzy face","group":0,"hexcode":"1F635","order":57,"shortcodes":["dizzy"],"tags":["dizzy","face"],"unicode":"😵","emoticon":"xo"},{"annotation":"exploding head","group":0,"hexcode":"1F92F","order":58,"shortcodes":["shocked","exploding_head"],"tags":["mind blown","shocked"],"unicode":"🤯"},{"annotation":"cowboy hat face","group":0,"hexcode":"1F920","order":59,"shortcodes":["cowboy"],"tags":["cowboy","cowgirl","face","hat"],"unicode":"🤠"},{"annotation":"partying face","group":0,"hexcode":"1F973","order":60,"shortcodes":["partying","celebrating"],"tags":["celebration","hat","horn","party"],"unicode":"🥳"},{"annotation":"smiling face with sunglasses","group":0,"hexcode":"1F60E","order":61,"shortcodes":["confident"],"tags":["bright","cool","face","sun","sunglasses"],"unicode":"😎","emoticon":"8)"},{"annotation":"nerd face","group":0,"hexcode":"1F913","order":62,"shortcodes":["nerd"],"tags":["face","geek","nerd"],"unicode":"🤓","emoticon":":B"},{"annotation":"face with monocle","group":0,"hexcode":"1F9D0","order":63,"shortcodes":["monocle"],"tags":["stuffy"],"unicode":"🧐"},{"annotation":"confused face","group":0,"hexcode":"1F615","order":64,"shortcodes":["confused"],"tags":["confused","face","meh"],"unicode":"😕","emoticon":":/"},{"annotation":"worried face","group":0,"hexcode":"1F61F","order":65,"shortcodes":["worried"],"tags":["face","worried"],"unicode":"😟"},{"annotation":"slightly frowning face","group":0,"hexcode":"1F641","order":66,"shortcodes":["cheerless","slight_frown"],"tags":["face","frown"],"unicode":"🙁"},{"annotation":"frowning face","group":0,"hexcode":"2639","order":68,"shortcodes":["sad","frowning"],"tags":["face","frown"],"unicode":"☹︎","emoticon":":("},{"annotation":"face with open mouth","group":0,"hexcode":"1F62E","order":69,"shortcodes":["surprised"],"tags":["face","mouth","open","sympathy"],"unicode":"😮"},{"annotation":"hushed face","group":0,"hexcode":"1F62F","order":70,"shortcodes":["hushed"],"tags":["face","hushed","stunned","surprised"],"unicode":"😯"},{"annotation":"astonished face","group":0,"hexcode":"1F632","order":71,"shortcodes":["astonished"],"tags":["astonished","face","shocked","totally"],"unicode":"😲","emoticon":":o"},{"annotation":"flushed face","group":0,"hexcode":"1F633","order":72,"shortcodes":["flushed"],"tags":["dazed","face","flushed"],"unicode":"😳","emoticon":":$"},{"annotation":"pleading face","group":0,"hexcode":"1F97A","order":73,"shortcodes":["pleading"],"tags":["begging","mercy","puppy eyes"],"unicode":"🥺"},{"annotation":"frowning face with open mouth","group":0,"hexcode":"1F626","order":74,"shortcodes":["bored"],"tags":["face","frown","mouth","open"],"unicode":"😦"},{"annotation":"anguished face","group":0,"hexcode":"1F627","order":75,"shortcodes":["anguished","wtf"],"tags":["anguished","face"],"unicode":"😧","emoticon":":s"},{"annotation":"fearful face","group":0,"hexcode":"1F628","order":76,"shortcodes":["fearful"],"tags":["face","fear","fearful","scared"],"unicode":"😨"},{"annotation":"anxious face with sweat","group":0,"hexcode":"1F630","order":77,"shortcodes":["cold_sweat","anxious","frustrated"],"tags":["blue","cold","face","rushed","sweat"],"unicode":"😰"},{"annotation":"sad but relieved face","group":0,"hexcode":"1F625","order":78,"shortcodes":["hopeful"],"tags":["disappointed","face","relieved","whew"],"unicode":"😥"},{"annotation":"crying face","group":0,"hexcode":"1F622","order":79,"shortcodes":["upset","cry"],"tags":["cry","face","sad","tear"],"unicode":"😢","emoticon":":\'("},{"annotation":"loudly crying face","group":0,"hexcode":"1F62D","order":80,"shortcodes":["distressed","sob"],"tags":["cry","face","sad","sob","tear"],"unicode":"😭","emoticon":":\'o"},{"annotation":"face screaming in fear","group":0,"hexcode":"1F631","order":81,"shortcodes":["frightened","scream"],"tags":["face","fear","munch","scared","scream"],"unicode":"😱","emoticon":"Dx"},{"annotation":"confounded face","group":0,"hexcode":"1F616","order":82,"shortcodes":["confounded"],"tags":["confounded","face"],"unicode":"😖","emoticon":"x("},{"annotation":"persevering face","group":0,"hexcode":"1F623","order":83,"shortcodes":["persevered"],"tags":["face","persevere"],"unicode":"😣"},{"annotation":"disappointed face","group":0,"hexcode":"1F61E","order":84,"shortcodes":["disappointed"],"tags":["disappointed","face"],"unicode":"😞"},{"annotation":"downcast face with sweat","group":0,"hexcode":"1F613","order":85,"shortcodes":["shamed"],"tags":["cold","face","sweat"],"unicode":"😓","emoticon":":<"},{"annotation":"weary face","group":0,"hexcode":"1F629","order":86,"shortcodes":["weary"],"tags":["face","tired","weary"],"unicode":"😩","emoticon":"D:"},{"annotation":"tired face","group":0,"hexcode":"1F62B","order":87,"shortcodes":["tired"],"tags":["face","tired"],"unicode":"😫","emoticon":":c"},{"annotation":"yawning face","group":0,"hexcode":"1F971","order":88,"shortcodes":["yawn"],"tags":["bored","tired","yawn"],"unicode":"🥱"},{"annotation":"face with steam from nose","group":0,"hexcode":"1F624","order":89,"shortcodes":["annoyed","hrmph"],"tags":["face","triumph","won"],"unicode":"😤"},{"annotation":"pouting face","group":0,"hexcode":"1F621","order":90,"shortcodes":["enraged","pout"],"tags":["angry","face","mad","pouting","rage","red"],"unicode":"😡","emoticon":">:/"},{"annotation":"angry face","group":0,"hexcode":"1F620","order":91,"shortcodes":["angry"],"tags":["angry","face","mad"],"unicode":"😠"},{"annotation":"face with symbols on mouth","group":0,"hexcode":"1F92C","order":92,"shortcodes":["censored"],"tags":["swearing"],"unicode":"🤬","emoticon":":@"},{"annotation":"smiling face with horns","group":0,"hexcode":"1F608","order":93,"shortcodes":["imp"],"tags":["face","fairy tale","fantasy","horns","smile"],"unicode":"😈","emoticon":">:)"},{"annotation":"angry face with horns","group":0,"hexcode":"1F47F","order":94,"shortcodes":["angry_imp"],"tags":["demon","devil","face","fantasy","imp"],"unicode":"👿","emoticon":">:("},{"annotation":"skull","group":0,"hexcode":"1F480","order":95,"shortcodes":["skull"],"tags":["death","face","fairy tale","monster"],"unicode":"💀"},{"annotation":"skull and crossbones","group":0,"hexcode":"2620","order":97,"shortcodes":["crossbones"],"tags":["crossbones","death","face","monster","skull"],"unicode":"☠︎"},{"annotation":"pile of poo","group":0,"hexcode":"1F4A9","order":98,"shortcodes":["poop"],"tags":["dung","face","monster","poo","poop"],"unicode":"💩"},{"annotation":"clown face","group":0,"hexcode":"1F921","order":99,"shortcodes":["clown"],"tags":["clown","face"],"unicode":"🤡"},{"annotation":"ogre","group":0,"hexcode":"1F479","order":100,"shortcodes":["ogre"],"tags":["creature","face","fairy tale","fantasy","monster"],"unicode":"👹","emoticon":">0)"},{"annotation":"goblin","group":0,"hexcode":"1F47A","order":101,"shortcodes":["goblin"],"tags":["creature","face","fairy tale","fantasy","monster"],"unicode":"👺"},{"annotation":"ghost","group":0,"hexcode":"1F47B","order":102,"shortcodes":["ghost"],"tags":["creature","face","fairy tale","fantasy","monster"],"unicode":"👻"},{"annotation":"alien","group":0,"hexcode":"1F47D","order":103,"shortcodes":["alien"],"tags":["creature","extraterrestrial","face","fantasy","ufo"],"unicode":"👽️"},{"annotation":"alien monster","group":0,"hexcode":"1F47E","order":104,"shortcodes":["alien_monster","space_invader"],"tags":["alien","creature","extraterrestrial","face","monster","ufo"],"unicode":"👾"},{"annotation":"robot","group":0,"hexcode":"1F916","order":105,"shortcodes":["robot"],"tags":["face","monster"],"unicode":"🤖"},{"annotation":"grinning cat","group":0,"hexcode":"1F63A","order":106,"shortcodes":["smiling_cat"],"tags":["cat","face","grinning","mouth","open","smile"],"unicode":"😺"},{"annotation":"grinning cat with smiling eyes","group":0,"hexcode":"1F638","order":107,"shortcodes":["grinning_cat"],"tags":["cat","eye","face","grin","smile"],"unicode":"😸"},{"annotation":"cat with tears of joy","group":0,"hexcode":"1F639","order":108,"shortcodes":["joyful_cat"],"tags":["cat","face","joy","tear"],"unicode":"😹"},{"annotation":"smiling cat with heart-eyes","group":0,"hexcode":"1F63B","order":109,"shortcodes":["lovestruck_cat"],"tags":["cat","eye","face","heart","love","smile"],"unicode":"😻"},{"annotation":"cat with wry smile","group":0,"hexcode":"1F63C","order":110,"shortcodes":["smirking_cat"],"tags":["cat","face","ironic","smile","wry"],"unicode":"😼"},{"annotation":"kissing cat","group":0,"hexcode":"1F63D","order":111,"shortcodes":["kissing_cat"],"tags":["cat","eye","face","kiss"],"unicode":"😽","emoticon":":3"},{"annotation":"weary cat","group":0,"hexcode":"1F640","order":112,"shortcodes":["weary_cat"],"tags":["cat","face","oh","surprised","weary"],"unicode":"🙀"},{"annotation":"crying cat","group":0,"hexcode":"1F63F","order":113,"shortcodes":["crying_cat"],"tags":["cat","cry","face","sad","tear"],"unicode":"😿"},{"annotation":"pouting cat","group":0,"hexcode":"1F63E","order":114,"shortcodes":["pouting_cat"],"tags":["cat","face","pouting"],"unicode":"😾"},{"annotation":"see-no-evil monkey","group":0,"hexcode":"1F648","order":115,"shortcodes":["see_no_evil"],"tags":["evil","face","forbidden","monkey","see"],"unicode":"🙈"},{"annotation":"hear-no-evil monkey","group":0,"hexcode":"1F649","order":116,"shortcodes":["hear_no_evil"],"tags":["evil","face","forbidden","hear","monkey"],"unicode":"🙉"},{"annotation":"speak-no-evil monkey","group":0,"hexcode":"1F64A","order":117,"shortcodes":["speak_no_evil"],"tags":["evil","face","forbidden","monkey","speak"],"unicode":"🙊"},{"annotation":"kiss mark","group":0,"hexcode":"1F48B","order":118,"shortcodes":["kiss_lips"],"tags":["kiss","lips"],"unicode":"💋"},{"annotation":"love letter","group":0,"hexcode":"1F48C","order":119,"shortcodes":["love_letter"],"tags":["heart","letter","love","mail"],"unicode":"💌"},{"annotation":"heart with arrow","group":0,"hexcode":"1F498","order":120,"shortcodes":["cupid"],"tags":["arrow","cupid"],"unicode":"💘"},{"annotation":"heart with ribbon","group":0,"hexcode":"1F49D","order":121,"shortcodes":["heart_ribbon"],"tags":["ribbon","valentine"],"unicode":"💝"},{"annotation":"sparkling heart","group":0,"hexcode":"1F496","order":122,"shortcodes":["sparkling_heart"],"tags":["excited","sparkle"],"unicode":"💖"},{"annotation":"growing heart","group":0,"hexcode":"1F497","order":123,"shortcodes":["heartpulse"],"tags":["excited","growing","nervous","pulse"],"unicode":"💗"},{"annotation":"beating heart","group":0,"hexcode":"1F493","order":124,"shortcodes":["heartbeat"],"tags":["beating","heartbeat","pulsating"],"unicode":"💓"},{"annotation":"revolving hearts","group":0,"hexcode":"1F49E","order":125,"shortcodes":["revolving_hearts"],"tags":["revolving"],"unicode":"💞"},{"annotation":"two hearts","group":0,"hexcode":"1F495","order":126,"shortcodes":["two_hearts"],"tags":["love"],"unicode":"💕"},{"annotation":"heart decoration","group":0,"hexcode":"1F49F","order":127,"shortcodes":["heart_decoration"],"tags":["heart"],"unicode":"💟"},{"annotation":"heart exclamation","group":0,"hexcode":"2763","order":129,"shortcodes":["heart_exclamation"],"tags":["exclamation","mark","punctuation"],"unicode":"❣︎"},{"annotation":"broken heart","group":0,"hexcode":"1F494","order":130,"shortcodes":["broken_heart"],"tags":["break","broken"],"unicode":"💔","emoticon":"","skins":[{"annotation":"man mage: light skin tone","group":1,"hexcode":"1F9D9-1F3FB-200D-2642-FE0F","order":1503,"shortcodes":["man_mage_tone1"],"unicode":"🧙🏻‍♂️"},{"annotation":"man mage: medium-light skin tone","group":1,"hexcode":"1F9D9-1F3FC-200D-2642-FE0F","order":1505,"shortcodes":["man_mage_tone2"],"unicode":"🧙🏼‍♂️"},{"annotation":"man mage: medium skin tone","group":1,"hexcode":"1F9D9-1F3FD-200D-2642-FE0F","order":1507,"shortcodes":["man_mage_tone3"],"unicode":"🧙🏽‍♂️"},{"annotation":"man mage: medium-dark skin tone","group":1,"hexcode":"1F9D9-1F3FE-200D-2642-FE0F","order":1509,"shortcodes":["man_mage_tone4"],"unicode":"🧙🏾‍♂️"},{"annotation":"man mage: dark skin tone","group":1,"hexcode":"1F9D9-1F3FF-200D-2642-FE0F","order":1511,"shortcodes":["man_mage_tone5"],"unicode":"🧙🏿‍♂️"}]},{"annotation":"woman mage","group":1,"hexcode":"1F9D9-200D-2640-FE0F","order":1513,"shortcodes":["woman_mage"],"tags":["sorceress","witch"],"unicode":"🧙‍♀️","skins":[{"annotation":"woman mage: light skin tone","group":1,"hexcode":"1F9D9-1F3FB-200D-2640-FE0F","order":1515,"shortcodes":["woman_mage_tone1"],"unicode":"🧙🏻‍♀️"},{"annotation":"woman mage: medium-light skin tone","group":1,"hexcode":"1F9D9-1F3FC-200D-2640-FE0F","order":1517,"shortcodes":["woman_mage_tone2"],"unicode":"🧙🏼‍♀️"},{"annotation":"woman mage: medium skin tone","group":1,"hexcode":"1F9D9-1F3FD-200D-2640-FE0F","order":1519,"shortcodes":["woman_mage_tone3"],"unicode":"🧙🏽‍♀️"},{"annotation":"woman mage: medium-dark skin tone","group":1,"hexcode":"1F9D9-1F3FE-200D-2640-FE0F","order":1521,"shortcodes":["woman_mage_tone4"],"unicode":"🧙🏾‍♀️"},{"annotation":"woman mage: dark skin tone","group":1,"hexcode":"1F9D9-1F3FF-200D-2640-FE0F","order":1523,"shortcodes":["woman_mage_tone5"],"unicode":"🧙🏿‍♀️"}]},{"annotation":"fairy","group":1,"hexcode":"1F9DA","order":1525,"shortcodes":["fairy"],"tags":["oberon","puck","titania"],"unicode":"🧚","skins":[{"annotation":"fairy: light skin tone","group":1,"hexcode":"1F9DA-1F3FB","order":1526,"shortcodes":["fairy_tone1"],"unicode":"🧚🏻"},{"annotation":"fairy: medium-light skin tone","group":1,"hexcode":"1F9DA-1F3FC","order":1527,"shortcodes":["fairy_tone2"],"unicode":"🧚🏼"},{"annotation":"fairy: medium skin tone","group":1,"hexcode":"1F9DA-1F3FD","order":1528,"shortcodes":["fairy_tone3"],"unicode":"🧚🏽"},{"annotation":"fairy: medium-dark skin tone","group":1,"hexcode":"1F9DA-1F3FE","order":1529,"shortcodes":["fairy_tone4"],"unicode":"🧚🏾"},{"annotation":"fairy: dark skin tone","group":1,"hexcode":"1F9DA-1F3FF","order":1530,"shortcodes":["fairy_tone5"],"unicode":"🧚🏿"}]},{"annotation":"man fairy","group":1,"hexcode":"1F9DA-200D-2642-FE0F","order":1531,"shortcodes":["man_fairy"],"tags":["oberon","puck"],"unicode":"🧚‍♂️","skins":[{"annotation":"man fairy: light skin tone","group":1,"hexcode":"1F9DA-1F3FB-200D-2642-FE0F","order":1533,"shortcodes":["man_fairy_tone1"],"unicode":"🧚🏻‍♂️"},{"annotation":"man fairy: medium-light skin tone","group":1,"hexcode":"1F9DA-1F3FC-200D-2642-FE0F","order":1535,"shortcodes":["man_fairy_tone2"],"unicode":"🧚🏼‍♂️"},{"annotation":"man fairy: medium skin tone","group":1,"hexcode":"1F9DA-1F3FD-200D-2642-FE0F","order":1537,"shortcodes":["man_fairy_tone3"],"unicode":"🧚🏽‍♂️"},{"annotation":"man fairy: medium-dark skin tone","group":1,"hexcode":"1F9DA-1F3FE-200D-2642-FE0F","order":1539,"shortcodes":["man_fairy_tone4"],"unicode":"🧚🏾‍♂️"},{"annotation":"man fairy: dark skin tone","group":1,"hexcode":"1F9DA-1F3FF-200D-2642-FE0F","order":1541,"shortcodes":["man_fairy_tone5"],"unicode":"🧚🏿‍♂️"}]},{"annotation":"woman fairy","group":1,"hexcode":"1F9DA-200D-2640-FE0F","order":1543,"shortcodes":["woman_fairy"],"tags":["titania"],"unicode":"🧚‍♀️","skins":[{"annotation":"woman fairy: light skin tone","group":1,"hexcode":"1F9DA-1F3FB-200D-2640-FE0F","order":1545,"shortcodes":["woman_fairy_tone1"],"unicode":"🧚🏻‍♀️"},{"annotation":"woman fairy: medium-light skin tone","group":1,"hexcode":"1F9DA-1F3FC-200D-2640-FE0F","order":1547,"shortcodes":["woman_fairy_tone2"],"unicode":"🧚🏼‍♀️"},{"annotation":"woman fairy: medium skin tone","group":1,"hexcode":"1F9DA-1F3FD-200D-2640-FE0F","order":1549,"shortcodes":["woman_fairy_tone3"],"unicode":"🧚🏽‍♀️"},{"annotation":"woman fairy: medium-dark skin tone","group":1,"hexcode":"1F9DA-1F3FE-200D-2640-FE0F","order":1551,"shortcodes":["woman_fairy_tone4"],"unicode":"🧚🏾‍♀️"},{"annotation":"woman fairy: dark skin tone","group":1,"hexcode":"1F9DA-1F3FF-200D-2640-FE0F","order":1553,"shortcodes":["woman_fairy_tone5"],"unicode":"🧚🏿‍♀️"}]},{"annotation":"vampire","group":1,"hexcode":"1F9DB","order":1555,"shortcodes":["vampire"],"tags":["dracula","undead"],"unicode":"🧛","emoticon":":E","skins":[{"annotation":"vampire: light skin tone","group":1,"hexcode":"1F9DB-1F3FB","order":1556,"shortcodes":["vampire_tone1"],"unicode":"🧛🏻"},{"annotation":"vampire: medium-light skin tone","group":1,"hexcode":"1F9DB-1F3FC","order":1557,"shortcodes":["vampire_tone2"],"unicode":"🧛🏼"},{"annotation":"vampire: medium skin tone","group":1,"hexcode":"1F9DB-1F3FD","order":1558,"shortcodes":["vampire_tone3"],"unicode":"🧛🏽"},{"annotation":"vampire: medium-dark skin tone","group":1,"hexcode":"1F9DB-1F3FE","order":1559,"shortcodes":["vampire_tone4"],"unicode":"🧛🏾"},{"annotation":"vampire: dark skin tone","group":1,"hexcode":"1F9DB-1F3FF","order":1560,"shortcodes":["vampire_tone5"],"unicode":"🧛🏿"}]},{"annotation":"man vampire","group":1,"hexcode":"1F9DB-200D-2642-FE0F","order":1561,"shortcodes":["man_vampire"],"tags":["dracula","undead"],"unicode":"🧛‍♂️","skins":[{"annotation":"man vampire: light skin tone","group":1,"hexcode":"1F9DB-1F3FB-200D-2642-FE0F","order":1563,"shortcodes":["man_vampire_tone1"],"unicode":"🧛🏻‍♂️"},{"annotation":"man vampire: medium-light skin tone","group":1,"hexcode":"1F9DB-1F3FC-200D-2642-FE0F","order":1565,"shortcodes":["man_vampire_tone2"],"unicode":"🧛🏼‍♂️"},{"annotation":"man vampire: medium skin tone","group":1,"hexcode":"1F9DB-1F3FD-200D-2642-FE0F","order":1567,"shortcodes":["man_vampire_tone3"],"unicode":"🧛🏽‍♂️"},{"annotation":"man vampire: medium-dark skin tone","group":1,"hexcode":"1F9DB-1F3FE-200D-2642-FE0F","order":1569,"shortcodes":["man_vampire_tone4"],"unicode":"🧛🏾‍♂️"},{"annotation":"man vampire: dark skin tone","group":1,"hexcode":"1F9DB-1F3FF-200D-2642-FE0F","order":1571,"shortcodes":["man_vampire_tone5"],"unicode":"🧛🏿‍♂️"}]},{"annotation":"woman vampire","group":1,"hexcode":"1F9DB-200D-2640-FE0F","order":1573,"shortcodes":["woman_vampire"],"tags":["undead"],"unicode":"🧛‍♀️","skins":[{"annotation":"woman vampire: light skin tone","group":1,"hexcode":"1F9DB-1F3FB-200D-2640-FE0F","order":1575,"shortcodes":["woman_vampire_tone1"],"unicode":"🧛🏻‍♀️"},{"annotation":"woman vampire: medium-light skin tone","group":1,"hexcode":"1F9DB-1F3FC-200D-2640-FE0F","order":1577,"shortcodes":["woman_vampire_tone2"],"unicode":"🧛🏼‍♀️"},{"annotation":"woman vampire: medium skin tone","group":1,"hexcode":"1F9DB-1F3FD-200D-2640-FE0F","order":1579,"shortcodes":["woman_vampire_tone3"],"unicode":"🧛🏽‍♀️"},{"annotation":"woman vampire: medium-dark skin tone","group":1,"hexcode":"1F9DB-1F3FE-200D-2640-FE0F","order":1581,"shortcodes":["woman_vampire_tone4"],"unicode":"🧛🏾‍♀️"},{"annotation":"woman vampire: dark skin tone","group":1,"hexcode":"1F9DB-1F3FF-200D-2640-FE0F","order":1583,"shortcodes":["woman_vampire_tone5"],"unicode":"🧛🏿‍♀️"}]},{"annotation":"merperson","group":1,"hexcode":"1F9DC","order":1585,"shortcodes":["merperson"],"tags":["mermaid","merman","merwoman"],"unicode":"🧜","skins":[{"annotation":"merperson: light skin tone","group":1,"hexcode":"1F9DC-1F3FB","order":1586,"shortcodes":["merperson_tone1"],"unicode":"🧜🏻"},{"annotation":"merperson: medium-light skin tone","group":1,"hexcode":"1F9DC-1F3FC","order":1587,"shortcodes":["merperson_tone2"],"unicode":"🧜🏼"},{"annotation":"merperson: medium skin tone","group":1,"hexcode":"1F9DC-1F3FD","order":1588,"shortcodes":["merperson_tone3"],"unicode":"🧜🏽"},{"annotation":"merperson: medium-dark skin tone","group":1,"hexcode":"1F9DC-1F3FE","order":1589,"shortcodes":["merperson_tone4"],"unicode":"🧜🏾"},{"annotation":"merperson: dark skin tone","group":1,"hexcode":"1F9DC-1F3FF","order":1590,"shortcodes":["merperson_tone5"],"unicode":"🧜🏿"}]},{"annotation":"merman","group":1,"hexcode":"1F9DC-200D-2642-FE0F","order":1591,"shortcodes":["merman"],"tags":["triton"],"unicode":"🧜‍♂️","skins":[{"annotation":"merman: light skin tone","group":1,"hexcode":"1F9DC-1F3FB-200D-2642-FE0F","order":1593,"shortcodes":["merman_tone1"],"unicode":"🧜🏻‍♂️"},{"annotation":"merman: medium-light skin tone","group":1,"hexcode":"1F9DC-1F3FC-200D-2642-FE0F","order":1595,"shortcodes":["merman_tone2"],"unicode":"🧜🏼‍♂️"},{"annotation":"merman: medium skin tone","group":1,"hexcode":"1F9DC-1F3FD-200D-2642-FE0F","order":1597,"shortcodes":["merman_tone3"],"unicode":"🧜🏽‍♂️"},{"annotation":"merman: medium-dark skin tone","group":1,"hexcode":"1F9DC-1F3FE-200D-2642-FE0F","order":1599,"shortcodes":["merman_tone4"],"unicode":"🧜🏾‍♂️"},{"annotation":"merman: dark skin tone","group":1,"hexcode":"1F9DC-1F3FF-200D-2642-FE0F","order":1601,"shortcodes":["merman_tone5"],"unicode":"🧜🏿‍♂️"}]},{"annotation":"mermaid","group":1,"hexcode":"1F9DC-200D-2640-FE0F","order":1603,"shortcodes":["mermaid"],"tags":["merwoman"],"unicode":"🧜‍♀️","skins":[{"annotation":"mermaid: light skin tone","group":1,"hexcode":"1F9DC-1F3FB-200D-2640-FE0F","order":1605,"shortcodes":["mermaid_tone1"],"unicode":"🧜🏻‍♀️"},{"annotation":"mermaid: medium-light skin tone","group":1,"hexcode":"1F9DC-1F3FC-200D-2640-FE0F","order":1607,"shortcodes":["mermaid_tone2"],"unicode":"🧜🏼‍♀️"},{"annotation":"mermaid: medium skin tone","group":1,"hexcode":"1F9DC-1F3FD-200D-2640-FE0F","order":1609,"shortcodes":["mermaid_tone3"],"unicode":"🧜🏽‍♀️"},{"annotation":"mermaid: medium-dark skin tone","group":1,"hexcode":"1F9DC-1F3FE-200D-2640-FE0F","order":1611,"shortcodes":["mermaid_tone4"],"unicode":"🧜🏾‍♀️"},{"annotation":"mermaid: dark skin tone","group":1,"hexcode":"1F9DC-1F3FF-200D-2640-FE0F","order":1613,"shortcodes":["mermaid_tone5"],"unicode":"🧜🏿‍♀️"}]},{"annotation":"elf","group":1,"hexcode":"1F9DD","order":1615,"shortcodes":["elf"],"tags":["magical"],"unicode":"🧝","skins":[{"annotation":"elf: light skin tone","group":1,"hexcode":"1F9DD-1F3FB","order":1616,"shortcodes":["elf_tone1"],"unicode":"🧝🏻"},{"annotation":"elf: medium-light skin tone","group":1,"hexcode":"1F9DD-1F3FC","order":1617,"shortcodes":["elf_tone2"],"unicode":"🧝🏼"},{"annotation":"elf: medium skin tone","group":1,"hexcode":"1F9DD-1F3FD","order":1618,"shortcodes":["elf_tone3"],"unicode":"🧝🏽"},{"annotation":"elf: medium-dark skin tone","group":1,"hexcode":"1F9DD-1F3FE","order":1619,"shortcodes":["elf_tone4"],"unicode":"🧝🏾"},{"annotation":"elf: dark skin tone","group":1,"hexcode":"1F9DD-1F3FF","order":1620,"shortcodes":["elf_tone5"],"unicode":"🧝🏿"}]},{"annotation":"man elf","group":1,"hexcode":"1F9DD-200D-2642-FE0F","order":1621,"shortcodes":["man_elf"],"tags":["magical"],"unicode":"🧝‍♂️","skins":[{"annotation":"man elf: light skin tone","group":1,"hexcode":"1F9DD-1F3FB-200D-2642-FE0F","order":1623,"shortcodes":["man_elf_tone1"],"unicode":"🧝🏻‍♂️"},{"annotation":"man elf: medium-light skin tone","group":1,"hexcode":"1F9DD-1F3FC-200D-2642-FE0F","order":1625,"shortcodes":["man_elf_tone2"],"unicode":"🧝🏼‍♂️"},{"annotation":"man elf: medium skin tone","group":1,"hexcode":"1F9DD-1F3FD-200D-2642-FE0F","order":1627,"shortcodes":["man_elf_tone3"],"unicode":"🧝🏽‍♂️"},{"annotation":"man elf: medium-dark skin tone","group":1,"hexcode":"1F9DD-1F3FE-200D-2642-FE0F","order":1629,"shortcodes":["man_elf_tone4"],"unicode":"🧝🏾‍♂️"},{"annotation":"man elf: dark skin tone","group":1,"hexcode":"1F9DD-1F3FF-200D-2642-FE0F","order":1631,"shortcodes":["man_elf_tone5"],"unicode":"🧝🏿‍♂️"}]},{"annotation":"woman elf","group":1,"hexcode":"1F9DD-200D-2640-FE0F","order":1633,"shortcodes":["woman_elf"],"tags":["magical"],"unicode":"🧝‍♀️","skins":[{"annotation":"woman elf: light skin tone","group":1,"hexcode":"1F9DD-1F3FB-200D-2640-FE0F","order":1635,"shortcodes":["woman_elf_tone1"],"unicode":"🧝🏻‍♀️"},{"annotation":"woman elf: medium-light skin tone","group":1,"hexcode":"1F9DD-1F3FC-200D-2640-FE0F","order":1637,"shortcodes":["woman_elf_tone2"],"unicode":"🧝🏼‍♀️"},{"annotation":"woman elf: medium skin tone","group":1,"hexcode":"1F9DD-1F3FD-200D-2640-FE0F","order":1639,"shortcodes":["woman_elf_tone3"],"unicode":"🧝🏽‍♀️"},{"annotation":"woman elf: medium-dark skin tone","group":1,"hexcode":"1F9DD-1F3FE-200D-2640-FE0F","order":1641,"shortcodes":["woman_elf_tone4"],"unicode":"🧝🏾‍♀️"},{"annotation":"woman elf: dark skin tone","group":1,"hexcode":"1F9DD-1F3FF-200D-2640-FE0F","order":1643,"shortcodes":["woman_elf_tone5"],"unicode":"🧝🏿‍♀️"}]},{"annotation":"genie","group":1,"hexcode":"1F9DE","order":1645,"shortcodes":["genie"],"tags":["djinn"],"unicode":"🧞"},{"annotation":"man genie","group":1,"hexcode":"1F9DE-200D-2642-FE0F","order":1646,"shortcodes":["man_genie"],"tags":["djinn"],"unicode":"🧞‍♂️"},{"annotation":"woman genie","group":1,"hexcode":"1F9DE-200D-2640-FE0F","order":1648,"shortcodes":["woman_genie"],"tags":["djinn"],"unicode":"🧞‍♀️"},{"annotation":"zombie","group":1,"hexcode":"1F9DF","order":1650,"shortcodes":["zombie"],"tags":["undead","walking dead"],"unicode":"🧟","emoticon":"8#"},{"annotation":"man zombie","group":1,"hexcode":"1F9DF-200D-2642-FE0F","order":1651,"shortcodes":["man_zombie"],"tags":["undead","walking dead"],"unicode":"🧟‍♂️"},{"annotation":"woman zombie","group":1,"hexcode":"1F9DF-200D-2640-FE0F","order":1653,"shortcodes":["woman_zombie"],"tags":["undead","walking dead"],"unicode":"🧟‍♀️"},{"annotation":"person getting massage","group":1,"hexcode":"1F486","order":1655,"shortcodes":["person_getting_massage"],"tags":["face","massage","salon"],"unicode":"💆","skins":[{"annotation":"person getting massage: light skin tone","group":1,"hexcode":"1F486-1F3FB","order":1656,"shortcodes":["person_getting_massage_tone1"],"unicode":"💆🏻"},{"annotation":"person getting massage: medium-light skin tone","group":1,"hexcode":"1F486-1F3FC","order":1657,"shortcodes":["person_getting_massage_tone2"],"unicode":"💆🏼"},{"annotation":"person getting massage: medium skin tone","group":1,"hexcode":"1F486-1F3FD","order":1658,"shortcodes":["person_getting_massage_tone3"],"unicode":"💆🏽"},{"annotation":"person getting massage: medium-dark skin tone","group":1,"hexcode":"1F486-1F3FE","order":1659,"shortcodes":["person_getting_massage_tone4"],"unicode":"💆🏾"},{"annotation":"person getting massage: dark skin tone","group":1,"hexcode":"1F486-1F3FF","order":1660,"shortcodes":["person_getting_massage_tone5"],"unicode":"💆🏿"}]},{"annotation":"man getting massage","group":1,"hexcode":"1F486-200D-2642-FE0F","order":1661,"shortcodes":["man_getting_face_massage"],"tags":["face","man","massage"],"unicode":"💆‍♂️","skins":[{"annotation":"man getting massage: light skin tone","group":1,"hexcode":"1F486-1F3FB-200D-2642-FE0F","order":1663,"shortcodes":["man_getting_face_massage_tone1"],"unicode":"💆🏻‍♂️"},{"annotation":"man getting massage: medium-light skin tone","group":1,"hexcode":"1F486-1F3FC-200D-2642-FE0F","order":1665,"shortcodes":["man_getting_face_massage_tone2"],"unicode":"💆🏼‍♂️"},{"annotation":"man getting massage: medium skin tone","group":1,"hexcode":"1F486-1F3FD-200D-2642-FE0F","order":1667,"shortcodes":["man_getting_face_massage_tone3"],"unicode":"💆🏽‍♂️"},{"annotation":"man getting massage: medium-dark skin tone","group":1,"hexcode":"1F486-1F3FE-200D-2642-FE0F","order":1669,"shortcodes":["man_getting_face_massage_tone4"],"unicode":"💆🏾‍♂️"},{"annotation":"man getting massage: dark skin tone","group":1,"hexcode":"1F486-1F3FF-200D-2642-FE0F","order":1671,"shortcodes":["man_getting_face_massage_tone5"],"unicode":"💆🏿‍♂️"}]},{"annotation":"woman getting massage","group":1,"hexcode":"1F486-200D-2640-FE0F","order":1673,"shortcodes":["woman_getting_face_massage"],"tags":["face","massage","woman"],"unicode":"💆‍♀️","skins":[{"annotation":"woman getting massage: light skin tone","group":1,"hexcode":"1F486-1F3FB-200D-2640-FE0F","order":1675,"shortcodes":["woman_getting_face_massage_tone1"],"unicode":"💆🏻‍♀️"},{"annotation":"woman getting massage: medium-light skin tone","group":1,"hexcode":"1F486-1F3FC-200D-2640-FE0F","order":1677,"shortcodes":["woman_getting_face_massage_tone2"],"unicode":"💆🏼‍♀️"},{"annotation":"woman getting massage: medium skin tone","group":1,"hexcode":"1F486-1F3FD-200D-2640-FE0F","order":1679,"shortcodes":["woman_getting_face_massage_tone3"],"unicode":"💆🏽‍♀️"},{"annotation":"woman getting massage: medium-dark skin tone","group":1,"hexcode":"1F486-1F3FE-200D-2640-FE0F","order":1681,"shortcodes":["woman_getting_face_massage_tone4"],"unicode":"💆🏾‍♀️"},{"annotation":"woman getting massage: dark skin tone","group":1,"hexcode":"1F486-1F3FF-200D-2640-FE0F","order":1683,"shortcodes":["woman_getting_face_massage_tone5"],"unicode":"💆🏿‍♀️"}]},{"annotation":"person getting haircut","group":1,"hexcode":"1F487","order":1685,"shortcodes":["person_getting_haircut"],"tags":["barber","beauty","haircut","parlor"],"unicode":"💇","skins":[{"annotation":"person getting haircut: light skin tone","group":1,"hexcode":"1F487-1F3FB","order":1686,"shortcodes":["person_getting_haircut_tone1"],"unicode":"💇🏻"},{"annotation":"person getting haircut: medium-light skin tone","group":1,"hexcode":"1F487-1F3FC","order":1687,"shortcodes":["person_getting_haircut_tone2"],"unicode":"💇🏼"},{"annotation":"person getting haircut: medium skin tone","group":1,"hexcode":"1F487-1F3FD","order":1688,"shortcodes":["person_getting_haircut_tone3"],"unicode":"💇🏽"},{"annotation":"person getting haircut: medium-dark skin tone","group":1,"hexcode":"1F487-1F3FE","order":1689,"shortcodes":["person_getting_haircut_tone4"],"unicode":"💇🏾"},{"annotation":"person getting haircut: dark skin tone","group":1,"hexcode":"1F487-1F3FF","order":1690,"shortcodes":["person_getting_haircut_tone5"],"unicode":"💇🏿"}]},{"annotation":"man getting haircut","group":1,"hexcode":"1F487-200D-2642-FE0F","order":1691,"shortcodes":["man_getting_haircut"],"tags":["haircut","man"],"unicode":"💇‍♂️","skins":[{"annotation":"man getting haircut: light skin tone","group":1,"hexcode":"1F487-1F3FB-200D-2642-FE0F","order":1693,"shortcodes":["man_getting_haircut_tone1"],"unicode":"💇🏻‍♂️"},{"annotation":"man getting haircut: medium-light skin tone","group":1,"hexcode":"1F487-1F3FC-200D-2642-FE0F","order":1695,"shortcodes":["man_getting_haircut_tone2"],"unicode":"💇🏼‍♂️"},{"annotation":"man getting haircut: medium skin tone","group":1,"hexcode":"1F487-1F3FD-200D-2642-FE0F","order":1697,"shortcodes":["man_getting_haircut_tone3"],"unicode":"💇🏽‍♂️"},{"annotation":"man getting haircut: medium-dark skin tone","group":1,"hexcode":"1F487-1F3FE-200D-2642-FE0F","order":1699,"shortcodes":["man_getting_haircut_tone4"],"unicode":"💇🏾‍♂️"},{"annotation":"man getting haircut: dark skin tone","group":1,"hexcode":"1F487-1F3FF-200D-2642-FE0F","order":1701,"shortcodes":["man_getting_haircut_tone5"],"unicode":"💇🏿‍♂️"}]},{"annotation":"woman getting haircut","group":1,"hexcode":"1F487-200D-2640-FE0F","order":1703,"shortcodes":["woman_getting_haircut"],"tags":["haircut","woman"],"unicode":"💇‍♀️","skins":[{"annotation":"woman getting haircut: light skin tone","group":1,"hexcode":"1F487-1F3FB-200D-2640-FE0F","order":1705,"shortcodes":["woman_getting_haircut_tone1"],"unicode":"💇🏻‍♀️"},{"annotation":"woman getting haircut: medium-light skin tone","group":1,"hexcode":"1F487-1F3FC-200D-2640-FE0F","order":1707,"shortcodes":["woman_getting_haircut_tone2"],"unicode":"💇🏼‍♀️"},{"annotation":"woman getting haircut: medium skin tone","group":1,"hexcode":"1F487-1F3FD-200D-2640-FE0F","order":1709,"shortcodes":["woman_getting_haircut_tone3"],"unicode":"💇🏽‍♀️"},{"annotation":"woman getting haircut: medium-dark skin tone","group":1,"hexcode":"1F487-1F3FE-200D-2640-FE0F","order":1711,"shortcodes":["woman_getting_haircut_tone4"],"unicode":"💇🏾‍♀️"},{"annotation":"woman getting haircut: dark skin tone","group":1,"hexcode":"1F487-1F3FF-200D-2640-FE0F","order":1713,"shortcodes":["woman_getting_haircut_tone5"],"unicode":"💇🏿‍♀️"}]},{"annotation":"person walking","group":1,"hexcode":"1F6B6","order":1715,"shortcodes":["person_walking"],"tags":["hike","walk","walking"],"unicode":"🚶","skins":[{"annotation":"person walking: light skin tone","group":1,"hexcode":"1F6B6-1F3FB","order":1716,"shortcodes":["person_walking_tone1"],"unicode":"🚶🏻"},{"annotation":"person walking: medium-light skin tone","group":1,"hexcode":"1F6B6-1F3FC","order":1717,"shortcodes":["person_walking_tone2"],"unicode":"🚶🏼"},{"annotation":"person walking: medium skin tone","group":1,"hexcode":"1F6B6-1F3FD","order":1718,"shortcodes":["person_walking_tone3"],"unicode":"🚶🏽"},{"annotation":"person walking: medium-dark skin tone","group":1,"hexcode":"1F6B6-1F3FE","order":1719,"shortcodes":["person_walking_tone4"],"unicode":"🚶🏾"},{"annotation":"person walking: dark skin tone","group":1,"hexcode":"1F6B6-1F3FF","order":1720,"shortcodes":["person_walking_tone5"],"unicode":"🚶🏿"}]},{"annotation":"man walking","group":1,"hexcode":"1F6B6-200D-2642-FE0F","order":1721,"shortcodes":["man_walking"],"tags":["hike","man","walk"],"unicode":"🚶‍♂️","skins":[{"annotation":"man walking: light skin tone","group":1,"hexcode":"1F6B6-1F3FB-200D-2642-FE0F","order":1723,"shortcodes":["man_walking_tone1"],"unicode":"🚶🏻‍♂️"},{"annotation":"man walking: medium-light skin tone","group":1,"hexcode":"1F6B6-1F3FC-200D-2642-FE0F","order":1725,"shortcodes":["man_walking_tone2"],"unicode":"🚶🏼‍♂️"},{"annotation":"man walking: medium skin tone","group":1,"hexcode":"1F6B6-1F3FD-200D-2642-FE0F","order":1727,"shortcodes":["man_walking_tone3"],"unicode":"🚶🏽‍♂️"},{"annotation":"man walking: medium-dark skin tone","group":1,"hexcode":"1F6B6-1F3FE-200D-2642-FE0F","order":1729,"shortcodes":["man_walking_tone4"],"unicode":"🚶🏾‍♂️"},{"annotation":"man walking: dark skin tone","group":1,"hexcode":"1F6B6-1F3FF-200D-2642-FE0F","order":1731,"shortcodes":["man_walking_tone5"],"unicode":"🚶🏿‍♂️"}]},{"annotation":"woman walking","group":1,"hexcode":"1F6B6-200D-2640-FE0F","order":1733,"shortcodes":["woman_walking"],"tags":["hike","walk","woman"],"unicode":"🚶‍♀️","skins":[{"annotation":"woman walking: light skin tone","group":1,"hexcode":"1F6B6-1F3FB-200D-2640-FE0F","order":1735,"shortcodes":["woman_walking_tone1"],"unicode":"🚶🏻‍♀️"},{"annotation":"woman walking: medium-light skin tone","group":1,"hexcode":"1F6B6-1F3FC-200D-2640-FE0F","order":1737,"shortcodes":["woman_walking_tone2"],"unicode":"🚶🏼‍♀️"},{"annotation":"woman walking: medium skin tone","group":1,"hexcode":"1F6B6-1F3FD-200D-2640-FE0F","order":1739,"shortcodes":["woman_walking_tone3"],"unicode":"🚶🏽‍♀️"},{"annotation":"woman walking: medium-dark skin tone","group":1,"hexcode":"1F6B6-1F3FE-200D-2640-FE0F","order":1741,"shortcodes":["woman_walking_tone4"],"unicode":"🚶🏾‍♀️"},{"annotation":"woman walking: dark skin tone","group":1,"hexcode":"1F6B6-1F3FF-200D-2640-FE0F","order":1743,"shortcodes":["woman_walking_tone5"],"unicode":"🚶🏿‍♀️"}]},{"annotation":"person standing","group":1,"hexcode":"1F9CD","order":1745,"shortcodes":["person_standing"],"tags":["stand","standing"],"unicode":"🧍","skins":[{"annotation":"person standing: light skin tone","group":1,"hexcode":"1F9CD-1F3FB","order":1746,"shortcodes":["person_standing_tone1"],"unicode":"🧍🏻"},{"annotation":"person standing: medium-light skin tone","group":1,"hexcode":"1F9CD-1F3FC","order":1747,"shortcodes":["person_standing_tone2"],"unicode":"🧍🏼"},{"annotation":"person standing: medium skin tone","group":1,"hexcode":"1F9CD-1F3FD","order":1748,"shortcodes":["person_standing_tone3"],"unicode":"🧍🏽"},{"annotation":"person standing: medium-dark skin tone","group":1,"hexcode":"1F9CD-1F3FE","order":1749,"shortcodes":["person_standing_tone4"],"unicode":"🧍🏾"},{"annotation":"person standing: dark skin tone","group":1,"hexcode":"1F9CD-1F3FF","order":1750,"shortcodes":["person_standing_tone5"],"unicode":"🧍🏿"}]},{"annotation":"man standing","group":1,"hexcode":"1F9CD-200D-2642-FE0F","order":1751,"shortcodes":["man_standing"],"tags":["man","standing"],"unicode":"🧍‍♂️","skins":[{"annotation":"man standing: light skin tone","group":1,"hexcode":"1F9CD-1F3FB-200D-2642-FE0F","order":1753,"shortcodes":["man_standing_tone1"],"unicode":"🧍🏻‍♂️"},{"annotation":"man standing: medium-light skin tone","group":1,"hexcode":"1F9CD-1F3FC-200D-2642-FE0F","order":1755,"shortcodes":["man_standing_tone2"],"unicode":"🧍🏼‍♂️"},{"annotation":"man standing: medium skin tone","group":1,"hexcode":"1F9CD-1F3FD-200D-2642-FE0F","order":1757,"shortcodes":["man_standing_tone3"],"unicode":"🧍🏽‍♂️"},{"annotation":"man standing: medium-dark skin tone","group":1,"hexcode":"1F9CD-1F3FE-200D-2642-FE0F","order":1759,"shortcodes":["man_standing_tone4"],"unicode":"🧍🏾‍♂️"},{"annotation":"man standing: dark skin tone","group":1,"hexcode":"1F9CD-1F3FF-200D-2642-FE0F","order":1761,"shortcodes":["man_standing_tone5"],"unicode":"🧍🏿‍♂️"}]},{"annotation":"woman standing","group":1,"hexcode":"1F9CD-200D-2640-FE0F","order":1763,"shortcodes":["woman_standing"],"tags":["standing","woman"],"unicode":"🧍‍♀️","skins":[{"annotation":"woman standing: light skin tone","group":1,"hexcode":"1F9CD-1F3FB-200D-2640-FE0F","order":1765,"shortcodes":["woman_standing_tone1"],"unicode":"🧍🏻‍♀️"},{"annotation":"woman standing: medium-light skin tone","group":1,"hexcode":"1F9CD-1F3FC-200D-2640-FE0F","order":1767,"shortcodes":["woman_standing_tone2"],"unicode":"🧍🏼‍♀️"},{"annotation":"woman standing: medium skin tone","group":1,"hexcode":"1F9CD-1F3FD-200D-2640-FE0F","order":1769,"shortcodes":["woman_standing_tone3"],"unicode":"🧍🏽‍♀️"},{"annotation":"woman standing: medium-dark skin tone","group":1,"hexcode":"1F9CD-1F3FE-200D-2640-FE0F","order":1771,"shortcodes":["woman_standing_tone4"],"unicode":"🧍🏾‍♀️"},{"annotation":"woman standing: dark skin tone","group":1,"hexcode":"1F9CD-1F3FF-200D-2640-FE0F","order":1773,"shortcodes":["woman_standing_tone5"],"unicode":"🧍🏿‍♀️"}]},{"annotation":"person kneeling","group":1,"hexcode":"1F9CE","order":1775,"shortcodes":["person_kneeling"],"tags":["kneel","kneeling"],"unicode":"🧎","skins":[{"annotation":"person kneeling: light skin tone","group":1,"hexcode":"1F9CE-1F3FB","order":1776,"shortcodes":["person_kneeling_tone1"],"unicode":"🧎🏻"},{"annotation":"person kneeling: medium-light skin tone","group":1,"hexcode":"1F9CE-1F3FC","order":1777,"shortcodes":["person_kneeling_tone2"],"unicode":"🧎🏼"},{"annotation":"person kneeling: medium skin tone","group":1,"hexcode":"1F9CE-1F3FD","order":1778,"shortcodes":["person_kneeling_tone3"],"unicode":"🧎🏽"},{"annotation":"person kneeling: medium-dark skin tone","group":1,"hexcode":"1F9CE-1F3FE","order":1779,"shortcodes":["person_kneeling_tone4"],"unicode":"🧎🏾"},{"annotation":"person kneeling: dark skin tone","group":1,"hexcode":"1F9CE-1F3FF","order":1780,"shortcodes":["person_kneeling_tone5"],"unicode":"🧎🏿"}]},{"annotation":"man kneeling","group":1,"hexcode":"1F9CE-200D-2642-FE0F","order":1781,"shortcodes":["man_kneeling"],"tags":["kneeling","man"],"unicode":"🧎‍♂️","skins":[{"annotation":"man kneeling: light skin tone","group":1,"hexcode":"1F9CE-1F3FB-200D-2642-FE0F","order":1783,"shortcodes":["man_kneeling_tone1"],"unicode":"🧎🏻‍♂️"},{"annotation":"man kneeling: medium-light skin tone","group":1,"hexcode":"1F9CE-1F3FC-200D-2642-FE0F","order":1785,"shortcodes":["man_kneeling_tone2"],"unicode":"🧎🏼‍♂️"},{"annotation":"man kneeling: medium skin tone","group":1,"hexcode":"1F9CE-1F3FD-200D-2642-FE0F","order":1787,"shortcodes":["man_kneeling_tone3"],"unicode":"🧎🏽‍♂️"},{"annotation":"man kneeling: medium-dark skin tone","group":1,"hexcode":"1F9CE-1F3FE-200D-2642-FE0F","order":1789,"shortcodes":["man_kneeling_tone4"],"unicode":"🧎🏾‍♂️"},{"annotation":"man kneeling: dark skin tone","group":1,"hexcode":"1F9CE-1F3FF-200D-2642-FE0F","order":1791,"shortcodes":["man_kneeling_tone5"],"unicode":"🧎🏿‍♂️"}]},{"annotation":"woman kneeling","group":1,"hexcode":"1F9CE-200D-2640-FE0F","order":1793,"shortcodes":["woman_kneeling"],"tags":["kneeling","woman"],"unicode":"🧎‍♀️","skins":[{"annotation":"woman kneeling: light skin tone","group":1,"hexcode":"1F9CE-1F3FB-200D-2640-FE0F","order":1795,"shortcodes":["woman_kneeling_tone1"],"unicode":"🧎🏻‍♀️"},{"annotation":"woman kneeling: medium-light skin tone","group":1,"hexcode":"1F9CE-1F3FC-200D-2640-FE0F","order":1797,"shortcodes":["woman_kneeling_tone2"],"unicode":"🧎🏼‍♀️"},{"annotation":"woman kneeling: medium skin tone","group":1,"hexcode":"1F9CE-1F3FD-200D-2640-FE0F","order":1799,"shortcodes":["woman_kneeling_tone3"],"unicode":"🧎🏽‍♀️"},{"annotation":"woman kneeling: medium-dark skin tone","group":1,"hexcode":"1F9CE-1F3FE-200D-2640-FE0F","order":1801,"shortcodes":["woman_kneeling_tone4"],"unicode":"🧎🏾‍♀️"},{"annotation":"woman kneeling: dark skin tone","group":1,"hexcode":"1F9CE-1F3FF-200D-2640-FE0F","order":1803,"shortcodes":["woman_kneeling_tone5"],"unicode":"🧎🏿‍♀️"}]},{"annotation":"person with probing cane","group":1,"hexcode":"1F9D1-200D-1F9AF","order":1805,"shortcodes":["person_probing_cane"],"tags":["accessibility","blind"],"unicode":"🧑‍🦯","skins":[{"annotation":"person with probing cane: light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F9AF","order":1806,"shortcodes":["person_probing_cane_tone1"],"unicode":"🧑🏻‍🦯"},{"annotation":"person with probing cane: medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F9AF","order":1807,"shortcodes":["person_probing_cane_tone2"],"unicode":"🧑🏼‍🦯"},{"annotation":"person with probing cane: medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F9AF","order":1808,"shortcodes":["person_probing_cane_tone3"],"unicode":"🧑🏽‍🦯"},{"annotation":"person with probing cane: medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F9AF","order":1809,"shortcodes":["person_probing_cane_tone4"],"unicode":"🧑🏾‍🦯"},{"annotation":"person with probing cane: dark skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F9AF","order":1810,"shortcodes":["person_probing_cane_tone5"],"unicode":"🧑🏿‍🦯"}]},{"annotation":"man with probing cane","group":1,"hexcode":"1F468-200D-1F9AF","order":1811,"shortcodes":["man_probing_cane"],"tags":["accessibility","blind","man"],"unicode":"👨‍🦯","skins":[{"annotation":"man with probing cane: light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F9AF","order":1812,"shortcodes":["man_probing_cane_tone1"],"unicode":"👨🏻‍🦯"},{"annotation":"man with probing cane: medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F9AF","order":1813,"shortcodes":["man_probing_cane_tone2"],"unicode":"👨🏼‍🦯"},{"annotation":"man with probing cane: medium skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F9AF","order":1814,"shortcodes":["man_probing_cane_tone3"],"unicode":"👨🏽‍🦯"},{"annotation":"man with probing cane: medium-dark skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F9AF","order":1815,"shortcodes":["man_probing_cane_tone4"],"unicode":"👨🏾‍🦯"},{"annotation":"man with probing cane: dark skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F9AF","order":1816,"shortcodes":["man_probing_cane_tone5"],"unicode":"👨🏿‍🦯"}]},{"annotation":"woman with probing cane","group":1,"hexcode":"1F469-200D-1F9AF","order":1817,"shortcodes":["woman_probing_cane"],"tags":["accessibility","blind","woman"],"unicode":"👩‍🦯","skins":[{"annotation":"woman with probing cane: light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F9AF","order":1818,"shortcodes":["woman_probing_cane_tone1"],"unicode":"👩🏻‍🦯"},{"annotation":"woman with probing cane: medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F9AF","order":1819,"shortcodes":["woman_probing_cane_tone2"],"unicode":"👩🏼‍🦯"},{"annotation":"woman with probing cane: medium skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F9AF","order":1820,"shortcodes":["woman_probing_cane_tone3"],"unicode":"👩🏽‍🦯"},{"annotation":"woman with probing cane: medium-dark skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F9AF","order":1821,"shortcodes":["woman_probing_cane_tone4"],"unicode":"👩🏾‍🦯"},{"annotation":"woman with probing cane: dark skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F9AF","order":1822,"shortcodes":["woman_probing_cane_tone5"],"unicode":"👩🏿‍🦯"}]},{"annotation":"person in motorized wheelchair","group":1,"hexcode":"1F9D1-200D-1F9BC","order":1823,"shortcodes":["person_motor_wheelchair"],"tags":["accessibility","wheelchair"],"unicode":"🧑‍🦼","skins":[{"annotation":"person in motorized wheelchair: light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F9BC","order":1824,"shortcodes":["person_motor_wheelchair_tone1"],"unicode":"🧑🏻‍🦼"},{"annotation":"person in motorized wheelchair: medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F9BC","order":1825,"shortcodes":["person_motor_wheelchair_tone2"],"unicode":"🧑🏼‍🦼"},{"annotation":"person in motorized wheelchair: medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F9BC","order":1826,"shortcodes":["person_motor_wheelchair_tone3"],"unicode":"🧑🏽‍🦼"},{"annotation":"person in motorized wheelchair: medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F9BC","order":1827,"shortcodes":["person_motor_wheelchair_tone4"],"unicode":"🧑🏾‍🦼"},{"annotation":"person in motorized wheelchair: dark skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F9BC","order":1828,"shortcodes":["person_motor_wheelchair_tone5"],"unicode":"🧑🏿‍🦼"}]},{"annotation":"man in motorized wheelchair","group":1,"hexcode":"1F468-200D-1F9BC","order":1829,"shortcodes":["man_motor_wheelchair"],"tags":["accessibility","man","wheelchair"],"unicode":"👨‍🦼","skins":[{"annotation":"man in motorized wheelchair: light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F9BC","order":1830,"shortcodes":["man_motor_wheelchair_tone1"],"unicode":"👨🏻‍🦼"},{"annotation":"man in motorized wheelchair: medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F9BC","order":1831,"shortcodes":["man_motor_wheelchair_tone2"],"unicode":"👨🏼‍🦼"},{"annotation":"man in motorized wheelchair: medium skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F9BC","order":1832,"shortcodes":["man_motor_wheelchair_tone3"],"unicode":"👨🏽‍🦼"},{"annotation":"man in motorized wheelchair: medium-dark skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F9BC","order":1833,"shortcodes":["man_motor_wheelchair_tone4"],"unicode":"👨🏾‍🦼"},{"annotation":"man in motorized wheelchair: dark skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F9BC","order":1834,"shortcodes":["man_motor_wheelchair_tone5"],"unicode":"👨🏿‍🦼"}]},{"annotation":"woman in motorized wheelchair","group":1,"hexcode":"1F469-200D-1F9BC","order":1835,"shortcodes":["woman_motor_wheelchair"],"tags":["accessibility","wheelchair","woman"],"unicode":"👩‍🦼","skins":[{"annotation":"woman in motorized wheelchair: light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F9BC","order":1836,"shortcodes":["woman_motor_wheelchair_tone1"],"unicode":"👩🏻‍🦼"},{"annotation":"woman in motorized wheelchair: medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F9BC","order":1837,"shortcodes":["woman_motor_wheelchair_tone2"],"unicode":"👩🏼‍🦼"},{"annotation":"woman in motorized wheelchair: medium skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F9BC","order":1838,"shortcodes":["woman_motor_wheelchair_tone3"],"unicode":"👩🏽‍🦼"},{"annotation":"woman in motorized wheelchair: medium-dark skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F9BC","order":1839,"shortcodes":["woman_motor_wheelchair_tone4"],"unicode":"👩🏾‍🦼"},{"annotation":"woman in motorized wheelchair: dark skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F9BC","order":1840,"shortcodes":["woman_motor_wheelchair_tone5"],"unicode":"👩🏿‍🦼"}]},{"annotation":"person in manual wheelchair","group":1,"hexcode":"1F9D1-200D-1F9BD","order":1841,"shortcodes":["person_wheelchair"],"tags":["accessibility","wheelchair"],"unicode":"🧑‍🦽","skins":[{"annotation":"person in manual wheelchair: light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F9BD","order":1842,"shortcodes":["person_wheelchair_tone1"],"unicode":"🧑🏻‍🦽"},{"annotation":"person in manual wheelchair: medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F9BD","order":1843,"shortcodes":["person_wheelchair_tone2"],"unicode":"🧑🏼‍🦽"},{"annotation":"person in manual wheelchair: medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F9BD","order":1844,"shortcodes":["person_wheelchair_tone3"],"unicode":"🧑🏽‍🦽"},{"annotation":"person in manual wheelchair: medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F9BD","order":1845,"shortcodes":["person_wheelchair_tone4"],"unicode":"🧑🏾‍🦽"},{"annotation":"person in manual wheelchair: dark skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F9BD","order":1846,"shortcodes":["person_wheelchair_tone5"],"unicode":"🧑🏿‍🦽"}]},{"annotation":"man in manual wheelchair","group":1,"hexcode":"1F468-200D-1F9BD","order":1847,"shortcodes":["man_wheelchair"],"tags":["accessibility","man","wheelchair"],"unicode":"👨‍🦽","skins":[{"annotation":"man in manual wheelchair: light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F9BD","order":1848,"shortcodes":["man_wheelchair_tone1"],"unicode":"👨🏻‍🦽"},{"annotation":"man in manual wheelchair: medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F9BD","order":1849,"shortcodes":["man_wheelchair_tone2"],"unicode":"👨🏼‍🦽"},{"annotation":"man in manual wheelchair: medium skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F9BD","order":1850,"shortcodes":["man_wheelchair_tone3"],"unicode":"👨🏽‍🦽"},{"annotation":"man in manual wheelchair: medium-dark skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F9BD","order":1851,"shortcodes":["man_wheelchair_tone4"],"unicode":"👨🏾‍🦽"},{"annotation":"man in manual wheelchair: dark skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F9BD","order":1852,"shortcodes":["man_wheelchair_tone5"],"unicode":"👨🏿‍🦽"}]},{"annotation":"woman in manual wheelchair","group":1,"hexcode":"1F469-200D-1F9BD","order":1853,"shortcodes":["woman_wheelchair"],"tags":["accessibility","wheelchair","woman"],"unicode":"👩‍🦽","skins":[{"annotation":"woman in manual wheelchair: light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F9BD","order":1854,"shortcodes":["woman_wheelchair_tone1"],"unicode":"👩🏻‍🦽"},{"annotation":"woman in manual wheelchair: medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F9BD","order":1855,"shortcodes":["woman_wheelchair_tone2"],"unicode":"👩🏼‍🦽"},{"annotation":"woman in manual wheelchair: medium skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F9BD","order":1856,"shortcodes":["woman_wheelchair_tone3"],"unicode":"👩🏽‍🦽"},{"annotation":"woman in manual wheelchair: medium-dark skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F9BD","order":1857,"shortcodes":["woman_wheelchair_tone4"],"unicode":"👩🏾‍🦽"},{"annotation":"woman in manual wheelchair: dark skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F9BD","order":1858,"shortcodes":["woman_wheelchair_tone5"],"unicode":"👩🏿‍🦽"}]},{"annotation":"person running","group":1,"hexcode":"1F3C3","order":1859,"shortcodes":["person_running"],"tags":["marathon","running"],"unicode":"🏃","skins":[{"annotation":"person running: light skin tone","group":1,"hexcode":"1F3C3-1F3FB","order":1860,"shortcodes":["person_running_tone1"],"unicode":"🏃🏻"},{"annotation":"person running: medium-light skin tone","group":1,"hexcode":"1F3C3-1F3FC","order":1861,"shortcodes":["person_running_tone2"],"unicode":"🏃🏼"},{"annotation":"person running: medium skin tone","group":1,"hexcode":"1F3C3-1F3FD","order":1862,"shortcodes":["person_running_tone3"],"unicode":"🏃🏽"},{"annotation":"person running: medium-dark skin tone","group":1,"hexcode":"1F3C3-1F3FE","order":1863,"shortcodes":["person_running_tone4"],"unicode":"🏃🏾"},{"annotation":"person running: dark skin tone","group":1,"hexcode":"1F3C3-1F3FF","order":1864,"shortcodes":["person_running_tone5"],"unicode":"🏃🏿"}]},{"annotation":"man running","group":1,"hexcode":"1F3C3-200D-2642-FE0F","order":1865,"shortcodes":["man_running"],"tags":["man","marathon","racing","running"],"unicode":"🏃‍♂️","skins":[{"annotation":"man running: light skin tone","group":1,"hexcode":"1F3C3-1F3FB-200D-2642-FE0F","order":1867,"shortcodes":["man_running_tone1"],"unicode":"🏃🏻‍♂️"},{"annotation":"man running: medium-light skin tone","group":1,"hexcode":"1F3C3-1F3FC-200D-2642-FE0F","order":1869,"shortcodes":["man_running_tone2"],"unicode":"🏃🏼‍♂️"},{"annotation":"man running: medium skin tone","group":1,"hexcode":"1F3C3-1F3FD-200D-2642-FE0F","order":1871,"shortcodes":["man_running_tone3"],"unicode":"🏃🏽‍♂️"},{"annotation":"man running: medium-dark skin tone","group":1,"hexcode":"1F3C3-1F3FE-200D-2642-FE0F","order":1873,"shortcodes":["man_running_tone4"],"unicode":"🏃🏾‍♂️"},{"annotation":"man running: dark skin tone","group":1,"hexcode":"1F3C3-1F3FF-200D-2642-FE0F","order":1875,"shortcodes":["man_running_tone5"],"unicode":"🏃🏿‍♂️"}]},{"annotation":"woman running","group":1,"hexcode":"1F3C3-200D-2640-FE0F","order":1877,"shortcodes":["woman_running"],"tags":["marathon","racing","running","woman"],"unicode":"🏃‍♀️","skins":[{"annotation":"woman running: light skin tone","group":1,"hexcode":"1F3C3-1F3FB-200D-2640-FE0F","order":1879,"shortcodes":["woman_running_tone1"],"unicode":"🏃🏻‍♀️"},{"annotation":"woman running: medium-light skin tone","group":1,"hexcode":"1F3C3-1F3FC-200D-2640-FE0F","order":1881,"shortcodes":["woman_running_tone2"],"unicode":"🏃🏼‍♀️"},{"annotation":"woman running: medium skin tone","group":1,"hexcode":"1F3C3-1F3FD-200D-2640-FE0F","order":1883,"shortcodes":["woman_running_tone3"],"unicode":"🏃🏽‍♀️"},{"annotation":"woman running: medium-dark skin tone","group":1,"hexcode":"1F3C3-1F3FE-200D-2640-FE0F","order":1885,"shortcodes":["woman_running_tone4"],"unicode":"🏃🏾‍♀️"},{"annotation":"woman running: dark skin tone","group":1,"hexcode":"1F3C3-1F3FF-200D-2640-FE0F","order":1887,"shortcodes":["woman_running_tone5"],"unicode":"🏃🏿‍♀️"}]},{"annotation":"woman dancing","group":1,"hexcode":"1F483","order":1889,"shortcodes":["dancer","woman_dancing"],"tags":["dancing","woman"],"unicode":"💃","skins":[{"annotation":"woman dancing: light skin tone","group":1,"hexcode":"1F483-1F3FB","order":1890,"shortcodes":["dancer_tone1","woman_dancing_tone1"],"unicode":"💃🏻"},{"annotation":"woman dancing: medium-light skin tone","group":1,"hexcode":"1F483-1F3FC","order":1891,"shortcodes":["dancer_tone2","woman_dancing_tone2"],"unicode":"💃🏼"},{"annotation":"woman dancing: medium skin tone","group":1,"hexcode":"1F483-1F3FD","order":1892,"shortcodes":["dancer_tone3","woman_dancing_tone3"],"unicode":"💃🏽"},{"annotation":"woman dancing: medium-dark skin tone","group":1,"hexcode":"1F483-1F3FE","order":1893,"shortcodes":["dancer_tone4","woman_dancing_tone4"],"unicode":"💃🏾"},{"annotation":"woman dancing: dark skin tone","group":1,"hexcode":"1F483-1F3FF","order":1894,"shortcodes":["dancer_tone5","woman_dancing_tone5"],"unicode":"💃🏿"}]},{"annotation":"man dancing","group":1,"hexcode":"1F57A","order":1895,"shortcodes":["man_dancing"],"tags":["dance","man"],"unicode":"🕺","skins":[{"annotation":"man dancing: light skin tone","group":1,"hexcode":"1F57A-1F3FB","order":1896,"shortcodes":["man_dancing_tone1"],"unicode":"🕺🏻"},{"annotation":"man dancing: medium-light skin tone","group":1,"hexcode":"1F57A-1F3FC","order":1897,"shortcodes":["man_dancing_tone2"],"unicode":"🕺🏼"},{"annotation":"man dancing: medium skin tone","group":1,"hexcode":"1F57A-1F3FD","order":1898,"shortcodes":["man_dancing_tone3"],"unicode":"🕺🏽"},{"annotation":"man dancing: medium-dark skin tone","group":1,"hexcode":"1F57A-1F3FE","order":1899,"shortcodes":["man_dancing_tone4"],"unicode":"🕺🏾"},{"annotation":"man dancing: dark skin tone","group":1,"hexcode":"1F57A-1F3FF","order":1900,"shortcodes":["man_dancing_tone5"],"unicode":"🕺🏿"}]},{"annotation":"man in suit levitating","group":1,"hexcode":"1F574","order":1902,"shortcodes":["levitate"],"tags":["business","man","suit"],"unicode":"🕴︎","skins":[{"annotation":"man in suit levitating: light skin tone","group":1,"hexcode":"1F574-1F3FB","order":1903,"shortcodes":["levitate_tone1"],"unicode":"🕴🏻"},{"annotation":"man in suit levitating: medium-light skin tone","group":1,"hexcode":"1F574-1F3FC","order":1904,"shortcodes":["levitate_tone2"],"unicode":"🕴🏼"},{"annotation":"man in suit levitating: medium skin tone","group":1,"hexcode":"1F574-1F3FD","order":1905,"shortcodes":["levitate_tone3"],"unicode":"🕴🏽"},{"annotation":"man in suit levitating: medium-dark skin tone","group":1,"hexcode":"1F574-1F3FE","order":1906,"shortcodes":["levitate_tone4"],"unicode":"🕴🏾"},{"annotation":"man in suit levitating: dark skin tone","group":1,"hexcode":"1F574-1F3FF","order":1907,"shortcodes":["levitate_tone5"],"unicode":"🕴🏿"}]},{"annotation":"people with bunny ears","group":1,"hexcode":"1F46F","order":1908,"shortcodes":["people_bunny_ears_partying"],"tags":["bunny ear","dancer","partying"],"unicode":"👯"},{"annotation":"men with bunny ears","group":1,"hexcode":"1F46F-200D-2642-FE0F","order":1909,"shortcodes":["men_bunny_ears_partying"],"tags":["bunny ear","dancer","men","partying"],"unicode":"👯‍♂️"},{"annotation":"women with bunny ears","group":1,"hexcode":"1F46F-200D-2640-FE0F","order":1911,"shortcodes":["women_bunny_ears_partying"],"tags":["bunny ear","dancer","partying","women"],"unicode":"👯‍♀️"},{"annotation":"person in steamy room","group":1,"hexcode":"1F9D6","order":1913,"shortcodes":["person_steamy_room"],"tags":["sauna","steam room"],"unicode":"🧖","skins":[{"annotation":"person in steamy room: light skin tone","group":1,"hexcode":"1F9D6-1F3FB","order":1914,"shortcodes":["person_steamy_room_tone1"],"unicode":"🧖🏻"},{"annotation":"person in steamy room: medium-light skin tone","group":1,"hexcode":"1F9D6-1F3FC","order":1915,"shortcodes":["person_steamy_room_tone2"],"unicode":"🧖🏼"},{"annotation":"person in steamy room: medium skin tone","group":1,"hexcode":"1F9D6-1F3FD","order":1916,"shortcodes":["person_steamy_room_tone3"],"unicode":"🧖🏽"},{"annotation":"person in steamy room: medium-dark skin tone","group":1,"hexcode":"1F9D6-1F3FE","order":1917,"shortcodes":["person_steamy_room_tone4"],"unicode":"🧖🏾"},{"annotation":"person in steamy room: dark skin tone","group":1,"hexcode":"1F9D6-1F3FF","order":1918,"shortcodes":["person_steamy_room_tone5"],"unicode":"🧖🏿"}]},{"annotation":"man in steamy room","group":1,"hexcode":"1F9D6-200D-2642-FE0F","order":1919,"shortcodes":["man_steamy_room"],"tags":["sauna","steam room"],"unicode":"🧖‍♂️","skins":[{"annotation":"man in steamy room: light skin tone","group":1,"hexcode":"1F9D6-1F3FB-200D-2642-FE0F","order":1921,"shortcodes":["man_steamy_room_tone1"],"unicode":"🧖🏻‍♂️"},{"annotation":"man in steamy room: medium-light skin tone","group":1,"hexcode":"1F9D6-1F3FC-200D-2642-FE0F","order":1923,"shortcodes":["man_steamy_room_tone2"],"unicode":"🧖🏼‍♂️"},{"annotation":"man in steamy room: medium skin tone","group":1,"hexcode":"1F9D6-1F3FD-200D-2642-FE0F","order":1925,"shortcodes":["man_steamy_room_tone3"],"unicode":"🧖🏽‍♂️"},{"annotation":"man in steamy room: medium-dark skin tone","group":1,"hexcode":"1F9D6-1F3FE-200D-2642-FE0F","order":1927,"shortcodes":["man_steamy_room_tone4"],"unicode":"🧖🏾‍♂️"},{"annotation":"man in steamy room: dark skin tone","group":1,"hexcode":"1F9D6-1F3FF-200D-2642-FE0F","order":1929,"shortcodes":["man_steamy_room_tone5"],"unicode":"🧖🏿‍♂️"}]},{"annotation":"woman in steamy room","group":1,"hexcode":"1F9D6-200D-2640-FE0F","order":1931,"shortcodes":["woman_steamy_room"],"tags":["sauna","steam room"],"unicode":"🧖‍♀️","skins":[{"annotation":"woman in steamy room: light skin tone","group":1,"hexcode":"1F9D6-1F3FB-200D-2640-FE0F","order":1933,"shortcodes":["woman_steamy_room_tone1"],"unicode":"🧖🏻‍♀️"},{"annotation":"woman in steamy room: medium-light skin tone","group":1,"hexcode":"1F9D6-1F3FC-200D-2640-FE0F","order":1935,"shortcodes":["woman_steamy_room_tone2"],"unicode":"🧖🏼‍♀️"},{"annotation":"woman in steamy room: medium skin tone","group":1,"hexcode":"1F9D6-1F3FD-200D-2640-FE0F","order":1937,"shortcodes":["woman_steamy_room_tone3"],"unicode":"🧖🏽‍♀️"},{"annotation":"woman in steamy room: medium-dark skin tone","group":1,"hexcode":"1F9D6-1F3FE-200D-2640-FE0F","order":1939,"shortcodes":["woman_steamy_room_tone4"],"unicode":"🧖🏾‍♀️"},{"annotation":"woman in steamy room: dark skin tone","group":1,"hexcode":"1F9D6-1F3FF-200D-2640-FE0F","order":1941,"shortcodes":["woman_steamy_room_tone5"],"unicode":"🧖🏿‍♀️"}]},{"annotation":"person climbing","group":1,"hexcode":"1F9D7","order":1943,"shortcodes":["person_climbing"],"tags":["climber"],"unicode":"🧗","skins":[{"annotation":"person climbing: light skin tone","group":1,"hexcode":"1F9D7-1F3FB","order":1944,"shortcodes":["person_climbing_tone1"],"unicode":"🧗🏻"},{"annotation":"person climbing: medium-light skin tone","group":1,"hexcode":"1F9D7-1F3FC","order":1945,"shortcodes":["person_climbing_tone2"],"unicode":"🧗🏼"},{"annotation":"person climbing: medium skin tone","group":1,"hexcode":"1F9D7-1F3FD","order":1946,"shortcodes":["person_climbing_tone3"],"unicode":"🧗🏽"},{"annotation":"person climbing: medium-dark skin tone","group":1,"hexcode":"1F9D7-1F3FE","order":1947,"shortcodes":["person_climbing_tone4"],"unicode":"🧗🏾"},{"annotation":"person climbing: dark skin tone","group":1,"hexcode":"1F9D7-1F3FF","order":1948,"shortcodes":["person_climbing_tone5"],"unicode":"🧗🏿"}]},{"annotation":"man climbing","group":1,"hexcode":"1F9D7-200D-2642-FE0F","order":1949,"shortcodes":["man_climbing"],"tags":["climber"],"unicode":"🧗‍♂️","skins":[{"annotation":"man climbing: light skin tone","group":1,"hexcode":"1F9D7-1F3FB-200D-2642-FE0F","order":1951,"shortcodes":["man_climbing_tone1"],"unicode":"🧗🏻‍♂️"},{"annotation":"man climbing: medium-light skin tone","group":1,"hexcode":"1F9D7-1F3FC-200D-2642-FE0F","order":1953,"shortcodes":["man_climbing_tone2"],"unicode":"🧗🏼‍♂️"},{"annotation":"man climbing: medium skin tone","group":1,"hexcode":"1F9D7-1F3FD-200D-2642-FE0F","order":1955,"shortcodes":["man_climbing_tone3"],"unicode":"🧗🏽‍♂️"},{"annotation":"man climbing: medium-dark skin tone","group":1,"hexcode":"1F9D7-1F3FE-200D-2642-FE0F","order":1957,"shortcodes":["man_climbing_tone4"],"unicode":"🧗🏾‍♂️"},{"annotation":"man climbing: dark skin tone","group":1,"hexcode":"1F9D7-1F3FF-200D-2642-FE0F","order":1959,"shortcodes":["man_climbing_tone5"],"unicode":"🧗🏿‍♂️"}]},{"annotation":"woman climbing","group":1,"hexcode":"1F9D7-200D-2640-FE0F","order":1961,"shortcodes":["woman_climbing"],"tags":["climber"],"unicode":"🧗‍♀️","skins":[{"annotation":"woman climbing: light skin tone","group":1,"hexcode":"1F9D7-1F3FB-200D-2640-FE0F","order":1963,"shortcodes":["woman_climbing_tone1"],"unicode":"🧗🏻‍♀️"},{"annotation":"woman climbing: medium-light skin tone","group":1,"hexcode":"1F9D7-1F3FC-200D-2640-FE0F","order":1965,"shortcodes":["woman_climbing_tone2"],"unicode":"🧗🏼‍♀️"},{"annotation":"woman climbing: medium skin tone","group":1,"hexcode":"1F9D7-1F3FD-200D-2640-FE0F","order":1967,"shortcodes":["woman_climbing_tone3"],"unicode":"🧗🏽‍♀️"},{"annotation":"woman climbing: medium-dark skin tone","group":1,"hexcode":"1F9D7-1F3FE-200D-2640-FE0F","order":1969,"shortcodes":["woman_climbing_tone4"],"unicode":"🧗🏾‍♀️"},{"annotation":"woman climbing: dark skin tone","group":1,"hexcode":"1F9D7-1F3FF-200D-2640-FE0F","order":1971,"shortcodes":["woman_climbing_tone5"],"unicode":"🧗🏿‍♀️"}]},{"annotation":"person fencing","group":1,"hexcode":"1F93A","order":1973,"shortcodes":["person_fencing"],"tags":["fencer","fencing","sword"],"unicode":"🤺"},{"annotation":"horse racing","group":1,"hexcode":"1F3C7","order":1974,"shortcodes":["horse_racing"],"tags":["horse","jockey","racehorse","racing"],"unicode":"🏇","skins":[{"annotation":"horse racing: light skin tone","group":1,"hexcode":"1F3C7-1F3FB","order":1975,"shortcodes":["horse_racing_tone1"],"unicode":"🏇🏻"},{"annotation":"horse racing: medium-light skin tone","group":1,"hexcode":"1F3C7-1F3FC","order":1976,"shortcodes":["horse_racing_tone2"],"unicode":"🏇🏼"},{"annotation":"horse racing: medium skin tone","group":1,"hexcode":"1F3C7-1F3FD","order":1977,"shortcodes":["horse_racing_tone3"],"unicode":"🏇🏽"},{"annotation":"horse racing: medium-dark skin tone","group":1,"hexcode":"1F3C7-1F3FE","order":1978,"shortcodes":["horse_racing_tone4"],"unicode":"🏇🏾"},{"annotation":"horse racing: dark skin tone","group":1,"hexcode":"1F3C7-1F3FF","order":1979,"shortcodes":["horse_racing_tone5"],"unicode":"🏇🏿"}]},{"annotation":"skier","group":1,"hexcode":"26F7","order":1981,"shortcodes":["skier"],"tags":["ski","snow"],"unicode":"⛷︎"},{"annotation":"snowboarder","group":1,"hexcode":"1F3C2","order":1982,"shortcodes":["snowboarder"],"tags":["ski","snow","snowboard"],"unicode":"🏂️","skins":[{"annotation":"snowboarder: light skin tone","group":1,"hexcode":"1F3C2-1F3FB","order":1983,"shortcodes":["snowboarder_tone1"],"unicode":"🏂🏻"},{"annotation":"snowboarder: medium-light skin tone","group":1,"hexcode":"1F3C2-1F3FC","order":1984,"shortcodes":["snowboarder_tone2"],"unicode":"🏂🏼"},{"annotation":"snowboarder: medium skin tone","group":1,"hexcode":"1F3C2-1F3FD","order":1985,"shortcodes":["snowboarder_tone3"],"unicode":"🏂🏽"},{"annotation":"snowboarder: medium-dark skin tone","group":1,"hexcode":"1F3C2-1F3FE","order":1986,"shortcodes":["snowboarder_tone4"],"unicode":"🏂🏾"},{"annotation":"snowboarder: dark skin tone","group":1,"hexcode":"1F3C2-1F3FF","order":1987,"shortcodes":["snowboarder_tone5"],"unicode":"🏂🏿"}]},{"annotation":"person golfing","group":1,"hexcode":"1F3CC","order":1989,"shortcodes":["person_golfing"],"tags":["ball","golf"],"unicode":"🏌︎","skins":[{"annotation":"person golfing: light skin tone","group":1,"hexcode":"1F3CC-1F3FB","order":1990,"shortcodes":["person_golfing_tone1"],"unicode":"🏌🏻"},{"annotation":"person golfing: medium-light skin tone","group":1,"hexcode":"1F3CC-1F3FC","order":1991,"shortcodes":["person_golfing_tone2"],"unicode":"🏌🏼"},{"annotation":"person golfing: medium skin tone","group":1,"hexcode":"1F3CC-1F3FD","order":1992,"shortcodes":["person_golfing_tone3"],"unicode":"🏌🏽"},{"annotation":"person golfing: medium-dark skin tone","group":1,"hexcode":"1F3CC-1F3FE","order":1993,"shortcodes":["person_golfing_tone4"],"unicode":"🏌🏾"},{"annotation":"person golfing: dark skin tone","group":1,"hexcode":"1F3CC-1F3FF","order":1994,"shortcodes":["person_golfing_tone5"],"unicode":"🏌🏿"}]},{"annotation":"man golfing","group":1,"hexcode":"1F3CC-FE0F-200D-2642-FE0F","order":1995,"shortcodes":["man_golfing"],"tags":["golf","man"],"unicode":"🏌️‍♂️","skins":[{"annotation":"man golfing: light skin tone","group":1,"hexcode":"1F3CC-1F3FB-200D-2642-FE0F","order":1999,"shortcodes":["man_golfing_tone1"],"unicode":"🏌🏻‍♂️"},{"annotation":"man golfing: medium-light skin tone","group":1,"hexcode":"1F3CC-1F3FC-200D-2642-FE0F","order":2001,"shortcodes":["man_golfing_tone2"],"unicode":"🏌🏼‍♂️"},{"annotation":"man golfing: medium skin tone","group":1,"hexcode":"1F3CC-1F3FD-200D-2642-FE0F","order":2003,"shortcodes":["man_golfing_tone3"],"unicode":"🏌🏽‍♂️"},{"annotation":"man golfing: medium-dark skin tone","group":1,"hexcode":"1F3CC-1F3FE-200D-2642-FE0F","order":2005,"shortcodes":["man_golfing_tone4"],"unicode":"🏌🏾‍♂️"},{"annotation":"man golfing: dark skin tone","group":1,"hexcode":"1F3CC-1F3FF-200D-2642-FE0F","order":2007,"shortcodes":["man_golfing_tone5"],"unicode":"🏌🏿‍♂️"}]},{"annotation":"woman golfing","group":1,"hexcode":"1F3CC-FE0F-200D-2640-FE0F","order":2009,"shortcodes":["woman_golfing"],"tags":["golf","woman"],"unicode":"🏌️‍♀️","skins":[{"annotation":"woman golfing: light skin tone","group":1,"hexcode":"1F3CC-1F3FB-200D-2640-FE0F","order":2013,"shortcodes":["woman_golfing_tone1"],"unicode":"🏌🏻‍♀️"},{"annotation":"woman golfing: medium-light skin tone","group":1,"hexcode":"1F3CC-1F3FC-200D-2640-FE0F","order":2015,"shortcodes":["woman_golfing_tone2"],"unicode":"🏌🏼‍♀️"},{"annotation":"woman golfing: medium skin tone","group":1,"hexcode":"1F3CC-1F3FD-200D-2640-FE0F","order":2017,"shortcodes":["woman_golfing_tone3"],"unicode":"🏌🏽‍♀️"},{"annotation":"woman golfing: medium-dark skin tone","group":1,"hexcode":"1F3CC-1F3FE-200D-2640-FE0F","order":2019,"shortcodes":["woman_golfing_tone4"],"unicode":"🏌🏾‍♀️"},{"annotation":"woman golfing: dark skin tone","group":1,"hexcode":"1F3CC-1F3FF-200D-2640-FE0F","order":2021,"shortcodes":["woman_golfing_tone5"],"unicode":"🏌🏿‍♀️"}]},{"annotation":"person surfing","group":1,"hexcode":"1F3C4","order":2023,"shortcodes":["person_surfing"],"tags":["surfing"],"unicode":"🏄️","skins":[{"annotation":"person surfing: light skin tone","group":1,"hexcode":"1F3C4-1F3FB","order":2024,"shortcodes":["person_surfing_tone1"],"unicode":"🏄🏻"},{"annotation":"person surfing: medium-light skin tone","group":1,"hexcode":"1F3C4-1F3FC","order":2025,"shortcodes":["person_surfing_tone2"],"unicode":"🏄🏼"},{"annotation":"person surfing: medium skin tone","group":1,"hexcode":"1F3C4-1F3FD","order":2026,"shortcodes":["person_surfing_tone3"],"unicode":"🏄🏽"},{"annotation":"person surfing: medium-dark skin tone","group":1,"hexcode":"1F3C4-1F3FE","order":2027,"shortcodes":["person_surfing_tone4"],"unicode":"🏄🏾"},{"annotation":"person surfing: dark skin tone","group":1,"hexcode":"1F3C4-1F3FF","order":2028,"shortcodes":["person_surfing_tone5"],"unicode":"🏄🏿"}]},{"annotation":"man surfing","group":1,"hexcode":"1F3C4-200D-2642-FE0F","order":2029,"shortcodes":["man_surfing"],"tags":["man","surfing"],"unicode":"🏄‍♂️","skins":[{"annotation":"man surfing: light skin tone","group":1,"hexcode":"1F3C4-1F3FB-200D-2642-FE0F","order":2031,"shortcodes":["man_surfing_tone1"],"unicode":"🏄🏻‍♂️"},{"annotation":"man surfing: medium-light skin tone","group":1,"hexcode":"1F3C4-1F3FC-200D-2642-FE0F","order":2033,"shortcodes":["man_surfing_tone2"],"unicode":"🏄🏼‍♂️"},{"annotation":"man surfing: medium skin tone","group":1,"hexcode":"1F3C4-1F3FD-200D-2642-FE0F","order":2035,"shortcodes":["man_surfing_tone3"],"unicode":"🏄🏽‍♂️"},{"annotation":"man surfing: medium-dark skin tone","group":1,"hexcode":"1F3C4-1F3FE-200D-2642-FE0F","order":2037,"shortcodes":["man_surfing_tone4"],"unicode":"🏄🏾‍♂️"},{"annotation":"man surfing: dark skin tone","group":1,"hexcode":"1F3C4-1F3FF-200D-2642-FE0F","order":2039,"shortcodes":["man_surfing_tone5"],"unicode":"🏄🏿‍♂️"}]},{"annotation":"woman surfing","group":1,"hexcode":"1F3C4-200D-2640-FE0F","order":2041,"shortcodes":["woman_surfing"],"tags":["surfing","woman"],"unicode":"🏄‍♀️","skins":[{"annotation":"woman surfing: light skin tone","group":1,"hexcode":"1F3C4-1F3FB-200D-2640-FE0F","order":2043,"shortcodes":["woman_surfing_tone1"],"unicode":"🏄🏻‍♀️"},{"annotation":"woman surfing: medium-light skin tone","group":1,"hexcode":"1F3C4-1F3FC-200D-2640-FE0F","order":2045,"shortcodes":["woman_surfing_tone2"],"unicode":"🏄🏼‍♀️"},{"annotation":"woman surfing: medium skin tone","group":1,"hexcode":"1F3C4-1F3FD-200D-2640-FE0F","order":2047,"shortcodes":["woman_surfing_tone3"],"unicode":"🏄🏽‍♀️"},{"annotation":"woman surfing: medium-dark skin tone","group":1,"hexcode":"1F3C4-1F3FE-200D-2640-FE0F","order":2049,"shortcodes":["woman_surfing_tone4"],"unicode":"🏄🏾‍♀️"},{"annotation":"woman surfing: dark skin tone","group":1,"hexcode":"1F3C4-1F3FF-200D-2640-FE0F","order":2051,"shortcodes":["woman_surfing_tone5"],"unicode":"🏄🏿‍♀️"}]},{"annotation":"person rowing boat","group":1,"hexcode":"1F6A3","order":2053,"shortcodes":["person_rowing_boat"],"tags":["boat","rowboat"],"unicode":"🚣","skins":[{"annotation":"person rowing boat: light skin tone","group":1,"hexcode":"1F6A3-1F3FB","order":2054,"shortcodes":["person_rowing_boat_tone1"],"unicode":"🚣🏻"},{"annotation":"person rowing boat: medium-light skin tone","group":1,"hexcode":"1F6A3-1F3FC","order":2055,"shortcodes":["person_rowing_boat_tone2"],"unicode":"🚣🏼"},{"annotation":"person rowing boat: medium skin tone","group":1,"hexcode":"1F6A3-1F3FD","order":2056,"shortcodes":["person_rowing_boat_tone3"],"unicode":"🚣🏽"},{"annotation":"person rowing boat: medium-dark skin tone","group":1,"hexcode":"1F6A3-1F3FE","order":2057,"shortcodes":["person_rowing_boat_tone4"],"unicode":"🚣🏾"},{"annotation":"person rowing boat: dark skin tone","group":1,"hexcode":"1F6A3-1F3FF","order":2058,"shortcodes":["person_rowing_boat_tone5"],"unicode":"🚣🏿"}]},{"annotation":"man rowing boat","group":1,"hexcode":"1F6A3-200D-2642-FE0F","order":2059,"shortcodes":["man_rowing_boat"],"tags":["boat","man","rowboat"],"unicode":"🚣‍♂️","skins":[{"annotation":"man rowing boat: light skin tone","group":1,"hexcode":"1F6A3-1F3FB-200D-2642-FE0F","order":2061,"shortcodes":["man_rowing_boat_tone1"],"unicode":"🚣🏻‍♂️"},{"annotation":"man rowing boat: medium-light skin tone","group":1,"hexcode":"1F6A3-1F3FC-200D-2642-FE0F","order":2063,"shortcodes":["man_rowing_boat_tone2"],"unicode":"🚣🏼‍♂️"},{"annotation":"man rowing boat: medium skin tone","group":1,"hexcode":"1F6A3-1F3FD-200D-2642-FE0F","order":2065,"shortcodes":["man_rowing_boat_tone3"],"unicode":"🚣🏽‍♂️"},{"annotation":"man rowing boat: medium-dark skin tone","group":1,"hexcode":"1F6A3-1F3FE-200D-2642-FE0F","order":2067,"shortcodes":["man_rowing_boat_tone4"],"unicode":"🚣🏾‍♂️"},{"annotation":"man rowing boat: dark skin tone","group":1,"hexcode":"1F6A3-1F3FF-200D-2642-FE0F","order":2069,"shortcodes":["man_rowing_boat_tone5"],"unicode":"🚣🏿‍♂️"}]},{"annotation":"woman rowing boat","group":1,"hexcode":"1F6A3-200D-2640-FE0F","order":2071,"shortcodes":["woman_rowing_boat"],"tags":["boat","rowboat","woman"],"unicode":"🚣‍♀️","skins":[{"annotation":"woman rowing boat: light skin tone","group":1,"hexcode":"1F6A3-1F3FB-200D-2640-FE0F","order":2073,"shortcodes":["woman_rowing_boat_tone1"],"unicode":"🚣🏻‍♀️"},{"annotation":"woman rowing boat: medium-light skin tone","group":1,"hexcode":"1F6A3-1F3FC-200D-2640-FE0F","order":2075,"shortcodes":["woman_rowing_boat_tone2"],"unicode":"🚣🏼‍♀️"},{"annotation":"woman rowing boat: medium skin tone","group":1,"hexcode":"1F6A3-1F3FD-200D-2640-FE0F","order":2077,"shortcodes":["woman_rowing_boat_tone3"],"unicode":"🚣🏽‍♀️"},{"annotation":"woman rowing boat: medium-dark skin tone","group":1,"hexcode":"1F6A3-1F3FE-200D-2640-FE0F","order":2079,"shortcodes":["woman_rowing_boat_tone4"],"unicode":"🚣🏾‍♀️"},{"annotation":"woman rowing boat: dark skin tone","group":1,"hexcode":"1F6A3-1F3FF-200D-2640-FE0F","order":2081,"shortcodes":["woman_rowing_boat_tone5"],"unicode":"🚣🏿‍♀️"}]},{"annotation":"person swimming","group":1,"hexcode":"1F3CA","order":2083,"shortcodes":["person_swimming"],"tags":["swim"],"unicode":"🏊️","skins":[{"annotation":"person swimming: light skin tone","group":1,"hexcode":"1F3CA-1F3FB","order":2084,"shortcodes":["person_swimming_tone1"],"unicode":"🏊🏻"},{"annotation":"person swimming: medium-light skin tone","group":1,"hexcode":"1F3CA-1F3FC","order":2085,"shortcodes":["person_swimming_tone2"],"unicode":"🏊🏼"},{"annotation":"person swimming: medium skin tone","group":1,"hexcode":"1F3CA-1F3FD","order":2086,"shortcodes":["person_swimming_tone3"],"unicode":"🏊🏽"},{"annotation":"person swimming: medium-dark skin tone","group":1,"hexcode":"1F3CA-1F3FE","order":2087,"shortcodes":["person_swimming_tone4"],"unicode":"🏊🏾"},{"annotation":"person swimming: dark skin tone","group":1,"hexcode":"1F3CA-1F3FF","order":2088,"shortcodes":["person_swimming_tone5"],"unicode":"🏊🏿"}]},{"annotation":"man swimming","group":1,"hexcode":"1F3CA-200D-2642-FE0F","order":2089,"shortcodes":["man_swimming"],"tags":["man","swim"],"unicode":"🏊‍♂️","skins":[{"annotation":"man swimming: light skin tone","group":1,"hexcode":"1F3CA-1F3FB-200D-2642-FE0F","order":2091,"shortcodes":["man_swimming_tone1"],"unicode":"🏊🏻‍♂️"},{"annotation":"man swimming: medium-light skin tone","group":1,"hexcode":"1F3CA-1F3FC-200D-2642-FE0F","order":2093,"shortcodes":["man_swimming_tone2"],"unicode":"🏊🏼‍♂️"},{"annotation":"man swimming: medium skin tone","group":1,"hexcode":"1F3CA-1F3FD-200D-2642-FE0F","order":2095,"shortcodes":["man_swimming_tone3"],"unicode":"🏊🏽‍♂️"},{"annotation":"man swimming: medium-dark skin tone","group":1,"hexcode":"1F3CA-1F3FE-200D-2642-FE0F","order":2097,"shortcodes":["man_swimming_tone4"],"unicode":"🏊🏾‍♂️"},{"annotation":"man swimming: dark skin tone","group":1,"hexcode":"1F3CA-1F3FF-200D-2642-FE0F","order":2099,"shortcodes":["man_swimming_tone5"],"unicode":"🏊🏿‍♂️"}]},{"annotation":"woman swimming","group":1,"hexcode":"1F3CA-200D-2640-FE0F","order":2101,"shortcodes":["woman_swimming"],"tags":["swim","woman"],"unicode":"🏊‍♀️","skins":[{"annotation":"woman swimming: light skin tone","group":1,"hexcode":"1F3CA-1F3FB-200D-2640-FE0F","order":2103,"shortcodes":["woman_swimming_tone1"],"unicode":"🏊🏻‍♀️"},{"annotation":"woman swimming: medium-light skin tone","group":1,"hexcode":"1F3CA-1F3FC-200D-2640-FE0F","order":2105,"shortcodes":["woman_swimming_tone2"],"unicode":"🏊🏼‍♀️"},{"annotation":"woman swimming: medium skin tone","group":1,"hexcode":"1F3CA-1F3FD-200D-2640-FE0F","order":2107,"shortcodes":["woman_swimming_tone3"],"unicode":"🏊🏽‍♀️"},{"annotation":"woman swimming: medium-dark skin tone","group":1,"hexcode":"1F3CA-1F3FE-200D-2640-FE0F","order":2109,"shortcodes":["woman_swimming_tone4"],"unicode":"🏊🏾‍♀️"},{"annotation":"woman swimming: dark skin tone","group":1,"hexcode":"1F3CA-1F3FF-200D-2640-FE0F","order":2111,"shortcodes":["woman_swimming_tone5"],"unicode":"🏊🏿‍♀️"}]},{"annotation":"person bouncing ball","group":1,"hexcode":"26F9","order":2114,"shortcodes":["person_bouncing_ball"],"tags":["ball"],"unicode":"⛹︎","skins":[{"annotation":"person bouncing ball: light skin tone","group":1,"hexcode":"26F9-1F3FB","order":2115,"shortcodes":["person_bouncing_ball_tone1"],"unicode":"⛹🏻"},{"annotation":"person bouncing ball: medium-light skin tone","group":1,"hexcode":"26F9-1F3FC","order":2116,"shortcodes":["person_bouncing_ball_tone2"],"unicode":"⛹🏼"},{"annotation":"person bouncing ball: medium skin tone","group":1,"hexcode":"26F9-1F3FD","order":2117,"shortcodes":["person_bouncing_ball_tone3"],"unicode":"⛹🏽"},{"annotation":"person bouncing ball: medium-dark skin tone","group":1,"hexcode":"26F9-1F3FE","order":2118,"shortcodes":["person_bouncing_ball_tone4"],"unicode":"⛹🏾"},{"annotation":"person bouncing ball: dark skin tone","group":1,"hexcode":"26F9-1F3FF","order":2119,"shortcodes":["person_bouncing_ball_tone5"],"unicode":"⛹🏿"}]},{"annotation":"man bouncing ball","group":1,"hexcode":"26F9-FE0F-200D-2642-FE0F","order":2120,"shortcodes":["man_bouncing_ball"],"tags":["ball","man"],"unicode":"⛹️‍♂️","skins":[{"annotation":"man bouncing ball: light skin tone","group":1,"hexcode":"26F9-1F3FB-200D-2642-FE0F","order":2124,"shortcodes":["man_bouncing_ball_tone1"],"unicode":"⛹🏻‍♂️"},{"annotation":"man bouncing ball: medium-light skin tone","group":1,"hexcode":"26F9-1F3FC-200D-2642-FE0F","order":2126,"shortcodes":["man_bouncing_ball_tone2"],"unicode":"⛹🏼‍♂️"},{"annotation":"man bouncing ball: medium skin tone","group":1,"hexcode":"26F9-1F3FD-200D-2642-FE0F","order":2128,"shortcodes":["man_bouncing_ball_tone3"],"unicode":"⛹🏽‍♂️"},{"annotation":"man bouncing ball: medium-dark skin tone","group":1,"hexcode":"26F9-1F3FE-200D-2642-FE0F","order":2130,"shortcodes":["man_bouncing_ball_tone4"],"unicode":"⛹🏾‍♂️"},{"annotation":"man bouncing ball: dark skin tone","group":1,"hexcode":"26F9-1F3FF-200D-2642-FE0F","order":2132,"shortcodes":["man_bouncing_ball_tone5"],"unicode":"⛹🏿‍♂️"}]},{"annotation":"woman bouncing ball","group":1,"hexcode":"26F9-FE0F-200D-2640-FE0F","order":2134,"shortcodes":["woman_bouncing_ball"],"tags":["ball","woman"],"unicode":"⛹️‍♀️","skins":[{"annotation":"woman bouncing ball: light skin tone","group":1,"hexcode":"26F9-1F3FB-200D-2640-FE0F","order":2138,"shortcodes":["woman_bouncing_ball_tone1"],"unicode":"⛹🏻‍♀️"},{"annotation":"woman bouncing ball: medium-light skin tone","group":1,"hexcode":"26F9-1F3FC-200D-2640-FE0F","order":2140,"shortcodes":["woman_bouncing_ball_tone2"],"unicode":"⛹🏼‍♀️"},{"annotation":"woman bouncing ball: medium skin tone","group":1,"hexcode":"26F9-1F3FD-200D-2640-FE0F","order":2142,"shortcodes":["woman_bouncing_ball_tone3"],"unicode":"⛹🏽‍♀️"},{"annotation":"woman bouncing ball: medium-dark skin tone","group":1,"hexcode":"26F9-1F3FE-200D-2640-FE0F","order":2144,"shortcodes":["woman_bouncing_ball_tone4"],"unicode":"⛹🏾‍♀️"},{"annotation":"woman bouncing ball: dark skin tone","group":1,"hexcode":"26F9-1F3FF-200D-2640-FE0F","order":2146,"shortcodes":["woman_bouncing_ball_tone5"],"unicode":"⛹🏿‍♀️"}]},{"annotation":"person lifting weights","group":1,"hexcode":"1F3CB","order":2149,"shortcodes":["person_lifting_weights"],"tags":["lifter","weight"],"unicode":"🏋︎","skins":[{"annotation":"person lifting weights: light skin tone","group":1,"hexcode":"1F3CB-1F3FB","order":2150,"shortcodes":["person_lifting_weights_tone1"],"unicode":"🏋🏻"},{"annotation":"person lifting weights: medium-light skin tone","group":1,"hexcode":"1F3CB-1F3FC","order":2151,"shortcodes":["person_lifting_weights_tone2"],"unicode":"🏋🏼"},{"annotation":"person lifting weights: medium skin tone","group":1,"hexcode":"1F3CB-1F3FD","order":2152,"shortcodes":["person_lifting_weights_tone3"],"unicode":"🏋🏽"},{"annotation":"person lifting weights: medium-dark skin tone","group":1,"hexcode":"1F3CB-1F3FE","order":2153,"shortcodes":["person_lifting_weights_tone4"],"unicode":"🏋🏾"},{"annotation":"person lifting weights: dark skin tone","group":1,"hexcode":"1F3CB-1F3FF","order":2154,"shortcodes":["person_lifting_weights_tone5"],"unicode":"🏋🏿"}]},{"annotation":"man lifting weights","group":1,"hexcode":"1F3CB-FE0F-200D-2642-FE0F","order":2155,"shortcodes":["man_lifting_weights"],"tags":["man","weight lifter"],"unicode":"🏋️‍♂️","skins":[{"annotation":"man lifting weights: light skin tone","group":1,"hexcode":"1F3CB-1F3FB-200D-2642-FE0F","order":2159,"shortcodes":["man_lifting_weights_tone1"],"unicode":"🏋🏻‍♂️"},{"annotation":"man lifting weights: medium-light skin tone","group":1,"hexcode":"1F3CB-1F3FC-200D-2642-FE0F","order":2161,"shortcodes":["man_lifting_weights_tone2"],"unicode":"🏋🏼‍♂️"},{"annotation":"man lifting weights: medium skin tone","group":1,"hexcode":"1F3CB-1F3FD-200D-2642-FE0F","order":2163,"shortcodes":["man_lifting_weights_tone3"],"unicode":"🏋🏽‍♂️"},{"annotation":"man lifting weights: medium-dark skin tone","group":1,"hexcode":"1F3CB-1F3FE-200D-2642-FE0F","order":2165,"shortcodes":["man_lifting_weights_tone4"],"unicode":"🏋🏾‍♂️"},{"annotation":"man lifting weights: dark skin tone","group":1,"hexcode":"1F3CB-1F3FF-200D-2642-FE0F","order":2167,"shortcodes":["man_lifting_weights_tone5"],"unicode":"🏋🏿‍♂️"}]},{"annotation":"woman lifting weights","group":1,"hexcode":"1F3CB-FE0F-200D-2640-FE0F","order":2169,"shortcodes":["woman_lifting_weights"],"tags":["weight lifter","woman"],"unicode":"🏋️‍♀️","skins":[{"annotation":"woman lifting weights: light skin tone","group":1,"hexcode":"1F3CB-1F3FB-200D-2640-FE0F","order":2173,"shortcodes":["woman_lifting_weights_tone1"],"unicode":"🏋🏻‍♀️"},{"annotation":"woman lifting weights: medium-light skin tone","group":1,"hexcode":"1F3CB-1F3FC-200D-2640-FE0F","order":2175,"shortcodes":["woman_lifting_weights_tone2"],"unicode":"🏋🏼‍♀️"},{"annotation":"woman lifting weights: medium skin tone","group":1,"hexcode":"1F3CB-1F3FD-200D-2640-FE0F","order":2177,"shortcodes":["woman_lifting_weights_tone3"],"unicode":"🏋🏽‍♀️"},{"annotation":"woman lifting weights: medium-dark skin tone","group":1,"hexcode":"1F3CB-1F3FE-200D-2640-FE0F","order":2179,"shortcodes":["woman_lifting_weights_tone4"],"unicode":"🏋🏾‍♀️"},{"annotation":"woman lifting weights: dark skin tone","group":1,"hexcode":"1F3CB-1F3FF-200D-2640-FE0F","order":2181,"shortcodes":["woman_lifting_weights_tone5"],"unicode":"🏋🏿‍♀️"}]},{"annotation":"person biking","group":1,"hexcode":"1F6B4","order":2183,"shortcodes":["person_biking"],"tags":["bicycle","biking","cyclist"],"unicode":"🚴","skins":[{"annotation":"person biking: light skin tone","group":1,"hexcode":"1F6B4-1F3FB","order":2184,"shortcodes":["person_biking_tone1"],"unicode":"🚴🏻"},{"annotation":"person biking: medium-light skin tone","group":1,"hexcode":"1F6B4-1F3FC","order":2185,"shortcodes":["person_biking_tone2"],"unicode":"🚴🏼"},{"annotation":"person biking: medium skin tone","group":1,"hexcode":"1F6B4-1F3FD","order":2186,"shortcodes":["person_biking_tone3"],"unicode":"🚴🏽"},{"annotation":"person biking: medium-dark skin tone","group":1,"hexcode":"1F6B4-1F3FE","order":2187,"shortcodes":["person_biking_tone4"],"unicode":"🚴🏾"},{"annotation":"person biking: dark skin tone","group":1,"hexcode":"1F6B4-1F3FF","order":2188,"shortcodes":["person_biking_tone5"],"unicode":"🚴🏿"}]},{"annotation":"man biking","group":1,"hexcode":"1F6B4-200D-2642-FE0F","order":2189,"shortcodes":["man_biking"],"tags":["bicycle","biking","cyclist","man"],"unicode":"🚴‍♂️","skins":[{"annotation":"man biking: light skin tone","group":1,"hexcode":"1F6B4-1F3FB-200D-2642-FE0F","order":2191,"shortcodes":["man_biking_tone1"],"unicode":"🚴🏻‍♂️"},{"annotation":"man biking: medium-light skin tone","group":1,"hexcode":"1F6B4-1F3FC-200D-2642-FE0F","order":2193,"shortcodes":["man_biking_tone2"],"unicode":"🚴🏼‍♂️"},{"annotation":"man biking: medium skin tone","group":1,"hexcode":"1F6B4-1F3FD-200D-2642-FE0F","order":2195,"shortcodes":["man_biking_tone3"],"unicode":"🚴🏽‍♂️"},{"annotation":"man biking: medium-dark skin tone","group":1,"hexcode":"1F6B4-1F3FE-200D-2642-FE0F","order":2197,"shortcodes":["man_biking_tone4"],"unicode":"🚴🏾‍♂️"},{"annotation":"man biking: dark skin tone","group":1,"hexcode":"1F6B4-1F3FF-200D-2642-FE0F","order":2199,"shortcodes":["man_biking_tone5"],"unicode":"🚴🏿‍♂️"}]},{"annotation":"woman biking","group":1,"hexcode":"1F6B4-200D-2640-FE0F","order":2201,"shortcodes":["woman_biking"],"tags":["bicycle","biking","cyclist","woman"],"unicode":"🚴‍♀️","skins":[{"annotation":"woman biking: light skin tone","group":1,"hexcode":"1F6B4-1F3FB-200D-2640-FE0F","order":2203,"shortcodes":["woman_biking_tone1"],"unicode":"🚴🏻‍♀️"},{"annotation":"woman biking: medium-light skin tone","group":1,"hexcode":"1F6B4-1F3FC-200D-2640-FE0F","order":2205,"shortcodes":["woman_biking_tone2"],"unicode":"🚴🏼‍♀️"},{"annotation":"woman biking: medium skin tone","group":1,"hexcode":"1F6B4-1F3FD-200D-2640-FE0F","order":2207,"shortcodes":["woman_biking_tone3"],"unicode":"🚴🏽‍♀️"},{"annotation":"woman biking: medium-dark skin tone","group":1,"hexcode":"1F6B4-1F3FE-200D-2640-FE0F","order":2209,"shortcodes":["woman_biking_tone4"],"unicode":"🚴🏾‍♀️"},{"annotation":"woman biking: dark skin tone","group":1,"hexcode":"1F6B4-1F3FF-200D-2640-FE0F","order":2211,"shortcodes":["woman_biking_tone5"],"unicode":"🚴🏿‍♀️"}]},{"annotation":"person mountain biking","group":1,"hexcode":"1F6B5","order":2213,"shortcodes":["person_mountain_biking"],"tags":["bicycle","bicyclist","bike","cyclist","mountain"],"unicode":"🚵","skins":[{"annotation":"person mountain biking: light skin tone","group":1,"hexcode":"1F6B5-1F3FB","order":2214,"shortcodes":["person_mountain_biking_tone1"],"unicode":"🚵🏻"},{"annotation":"person mountain biking: medium-light skin tone","group":1,"hexcode":"1F6B5-1F3FC","order":2215,"shortcodes":["person_mountain_biking_tone2"],"unicode":"🚵🏼"},{"annotation":"person mountain biking: medium skin tone","group":1,"hexcode":"1F6B5-1F3FD","order":2216,"shortcodes":["person_mountain_biking_tone3"],"unicode":"🚵🏽"},{"annotation":"person mountain biking: medium-dark skin tone","group":1,"hexcode":"1F6B5-1F3FE","order":2217,"shortcodes":["person_mountain_biking_tone4"],"unicode":"🚵🏾"},{"annotation":"person mountain biking: dark skin tone","group":1,"hexcode":"1F6B5-1F3FF","order":2218,"shortcodes":["person_mountain_biking_tone5"],"unicode":"🚵🏿"}]},{"annotation":"man mountain biking","group":1,"hexcode":"1F6B5-200D-2642-FE0F","order":2219,"shortcodes":["man_mountain_biking"],"tags":["bicycle","bike","cyclist","man","mountain"],"unicode":"🚵‍♂️","skins":[{"annotation":"man mountain biking: light skin tone","group":1,"hexcode":"1F6B5-1F3FB-200D-2642-FE0F","order":2221,"shortcodes":["man_mountain_biking_tone1"],"unicode":"🚵🏻‍♂️"},{"annotation":"man mountain biking: medium-light skin tone","group":1,"hexcode":"1F6B5-1F3FC-200D-2642-FE0F","order":2223,"shortcodes":["man_mountain_biking_tone2"],"unicode":"🚵🏼‍♂️"},{"annotation":"man mountain biking: medium skin tone","group":1,"hexcode":"1F6B5-1F3FD-200D-2642-FE0F","order":2225,"shortcodes":["man_mountain_biking_tone3"],"unicode":"🚵🏽‍♂️"},{"annotation":"man mountain biking: medium-dark skin tone","group":1,"hexcode":"1F6B5-1F3FE-200D-2642-FE0F","order":2227,"shortcodes":["man_mountain_biking_tone4"],"unicode":"🚵🏾‍♂️"},{"annotation":"man mountain biking: dark skin tone","group":1,"hexcode":"1F6B5-1F3FF-200D-2642-FE0F","order":2229,"shortcodes":["man_mountain_biking_tone5"],"unicode":"🚵🏿‍♂️"}]},{"annotation":"woman mountain biking","group":1,"hexcode":"1F6B5-200D-2640-FE0F","order":2231,"shortcodes":["woman_mountain_biking"],"tags":["bicycle","bike","biking","cyclist","mountain","woman"],"unicode":"🚵‍♀️","skins":[{"annotation":"woman mountain biking: light skin tone","group":1,"hexcode":"1F6B5-1F3FB-200D-2640-FE0F","order":2233,"shortcodes":["woman_mountain_biking_tone1"],"unicode":"🚵🏻‍♀️"},{"annotation":"woman mountain biking: medium-light skin tone","group":1,"hexcode":"1F6B5-1F3FC-200D-2640-FE0F","order":2235,"shortcodes":["woman_mountain_biking_tone2"],"unicode":"🚵🏼‍♀️"},{"annotation":"woman mountain biking: medium skin tone","group":1,"hexcode":"1F6B5-1F3FD-200D-2640-FE0F","order":2237,"shortcodes":["woman_mountain_biking_tone3"],"unicode":"🚵🏽‍♀️"},{"annotation":"woman mountain biking: medium-dark skin tone","group":1,"hexcode":"1F6B5-1F3FE-200D-2640-FE0F","order":2239,"shortcodes":["woman_mountain_biking_tone4"],"unicode":"🚵🏾‍♀️"},{"annotation":"woman mountain biking: dark skin tone","group":1,"hexcode":"1F6B5-1F3FF-200D-2640-FE0F","order":2241,"shortcodes":["woman_mountain_biking_tone5"],"unicode":"🚵🏿‍♀️"}]},{"annotation":"person cartwheeling","group":1,"hexcode":"1F938","order":2243,"shortcodes":["person_cartwheel"],"tags":["cartwheel","gymnastics"],"unicode":"🤸","skins":[{"annotation":"person cartwheeling: light skin tone","group":1,"hexcode":"1F938-1F3FB","order":2244,"shortcodes":["person_cartwheel_tone1"],"unicode":"🤸🏻"},{"annotation":"person cartwheeling: medium-light skin tone","group":1,"hexcode":"1F938-1F3FC","order":2245,"shortcodes":["person_cartwheel_tone2"],"unicode":"🤸🏼"},{"annotation":"person cartwheeling: medium skin tone","group":1,"hexcode":"1F938-1F3FD","order":2246,"shortcodes":["person_cartwheel_tone3"],"unicode":"🤸🏽"},{"annotation":"person cartwheeling: medium-dark skin tone","group":1,"hexcode":"1F938-1F3FE","order":2247,"shortcodes":["person_cartwheel_tone4"],"unicode":"🤸🏾"},{"annotation":"person cartwheeling: dark skin tone","group":1,"hexcode":"1F938-1F3FF","order":2248,"shortcodes":["person_cartwheel_tone5"],"unicode":"🤸🏿"}]},{"annotation":"man cartwheeling","group":1,"hexcode":"1F938-200D-2642-FE0F","order":2249,"shortcodes":["man_cartwheeling"],"tags":["cartwheel","gymnastics","man"],"unicode":"🤸‍♂️","skins":[{"annotation":"man cartwheeling: light skin tone","group":1,"hexcode":"1F938-1F3FB-200D-2642-FE0F","order":2251,"shortcodes":["man_cartwheeling_tone1"],"unicode":"🤸🏻‍♂️"},{"annotation":"man cartwheeling: medium-light skin tone","group":1,"hexcode":"1F938-1F3FC-200D-2642-FE0F","order":2253,"shortcodes":["man_cartwheeling_tone2"],"unicode":"🤸🏼‍♂️"},{"annotation":"man cartwheeling: medium skin tone","group":1,"hexcode":"1F938-1F3FD-200D-2642-FE0F","order":2255,"shortcodes":["man_cartwheeling_tone3"],"unicode":"🤸🏽‍♂️"},{"annotation":"man cartwheeling: medium-dark skin tone","group":1,"hexcode":"1F938-1F3FE-200D-2642-FE0F","order":2257,"shortcodes":["man_cartwheeling_tone4"],"unicode":"🤸🏾‍♂️"},{"annotation":"man cartwheeling: dark skin tone","group":1,"hexcode":"1F938-1F3FF-200D-2642-FE0F","order":2259,"shortcodes":["man_cartwheeling_tone5"],"unicode":"🤸🏿‍♂️"}]},{"annotation":"woman cartwheeling","group":1,"hexcode":"1F938-200D-2640-FE0F","order":2261,"shortcodes":["woman_cartwheeling"],"tags":["cartwheel","gymnastics","woman"],"unicode":"🤸‍♀️","skins":[{"annotation":"woman cartwheeling: light skin tone","group":1,"hexcode":"1F938-1F3FB-200D-2640-FE0F","order":2263,"shortcodes":["woman_cartwheeling_tone1"],"unicode":"🤸🏻‍♀️"},{"annotation":"woman cartwheeling: medium-light skin tone","group":1,"hexcode":"1F938-1F3FC-200D-2640-FE0F","order":2265,"shortcodes":["woman_cartwheeling_tone2"],"unicode":"🤸🏼‍♀️"},{"annotation":"woman cartwheeling: medium skin tone","group":1,"hexcode":"1F938-1F3FD-200D-2640-FE0F","order":2267,"shortcodes":["woman_cartwheeling_tone3"],"unicode":"🤸🏽‍♀️"},{"annotation":"woman cartwheeling: medium-dark skin tone","group":1,"hexcode":"1F938-1F3FE-200D-2640-FE0F","order":2269,"shortcodes":["woman_cartwheeling_tone4"],"unicode":"🤸🏾‍♀️"},{"annotation":"woman cartwheeling: dark skin tone","group":1,"hexcode":"1F938-1F3FF-200D-2640-FE0F","order":2271,"shortcodes":["woman_cartwheeling_tone5"],"unicode":"🤸🏿‍♀️"}]},{"annotation":"people wrestling","group":1,"hexcode":"1F93C","order":2273,"shortcodes":["people_wrestling"],"tags":["wrestle","wrestler"],"unicode":"🤼"},{"annotation":"men wrestling","group":1,"hexcode":"1F93C-200D-2642-FE0F","order":2274,"shortcodes":["men_wrestling"],"tags":["men","wrestle"],"unicode":"🤼‍♂️"},{"annotation":"women wrestling","group":1,"hexcode":"1F93C-200D-2640-FE0F","order":2276,"shortcodes":["women_wrestling"],"tags":["women","wrestle"],"unicode":"🤼‍♀️"},{"annotation":"person playing water polo","group":1,"hexcode":"1F93D","order":2278,"shortcodes":["person_water_polo"],"tags":["polo","water"],"unicode":"🤽","skins":[{"annotation":"person playing water polo: light skin tone","group":1,"hexcode":"1F93D-1F3FB","order":2279,"shortcodes":["person_water_polo_tone1"],"unicode":"🤽🏻"},{"annotation":"person playing water polo: medium-light skin tone","group":1,"hexcode":"1F93D-1F3FC","order":2280,"shortcodes":["person_water_polo_tone2"],"unicode":"🤽🏼"},{"annotation":"person playing water polo: medium skin tone","group":1,"hexcode":"1F93D-1F3FD","order":2281,"shortcodes":["person_water_polo_tone3"],"unicode":"🤽🏽"},{"annotation":"person playing water polo: medium-dark skin tone","group":1,"hexcode":"1F93D-1F3FE","order":2282,"shortcodes":["person_water_polo_tone4"],"unicode":"🤽🏾"},{"annotation":"person playing water polo: dark skin tone","group":1,"hexcode":"1F93D-1F3FF","order":2283,"shortcodes":["person_water_polo_tone5"],"unicode":"🤽🏿"}]},{"annotation":"man playing water polo","group":1,"hexcode":"1F93D-200D-2642-FE0F","order":2284,"shortcodes":["man_water_polo"],"tags":["man","water polo"],"unicode":"🤽‍♂️","skins":[{"annotation":"man playing water polo: light skin tone","group":1,"hexcode":"1F93D-1F3FB-200D-2642-FE0F","order":2286,"shortcodes":["man_water_polo_tone1"],"unicode":"🤽🏻‍♂️"},{"annotation":"man playing water polo: medium-light skin tone","group":1,"hexcode":"1F93D-1F3FC-200D-2642-FE0F","order":2288,"shortcodes":["man_water_polo_tone2"],"unicode":"🤽🏼‍♂️"},{"annotation":"man playing water polo: medium skin tone","group":1,"hexcode":"1F93D-1F3FD-200D-2642-FE0F","order":2290,"shortcodes":["man_water_polo_tone3"],"unicode":"🤽🏽‍♂️"},{"annotation":"man playing water polo: medium-dark skin tone","group":1,"hexcode":"1F93D-1F3FE-200D-2642-FE0F","order":2292,"shortcodes":["man_water_polo_tone4"],"unicode":"🤽🏾‍♂️"},{"annotation":"man playing water polo: dark skin tone","group":1,"hexcode":"1F93D-1F3FF-200D-2642-FE0F","order":2294,"shortcodes":["man_water_polo_tone5"],"unicode":"🤽🏿‍♂️"}]},{"annotation":"woman playing water polo","group":1,"hexcode":"1F93D-200D-2640-FE0F","order":2296,"shortcodes":["woman_water_polo"],"tags":["water polo","woman"],"unicode":"🤽‍♀️","skins":[{"annotation":"woman playing water polo: light skin tone","group":1,"hexcode":"1F93D-1F3FB-200D-2640-FE0F","order":2298,"shortcodes":["woman_water_polo_tone1"],"unicode":"🤽🏻‍♀️"},{"annotation":"woman playing water polo: medium-light skin tone","group":1,"hexcode":"1F93D-1F3FC-200D-2640-FE0F","order":2300,"shortcodes":["woman_water_polo_tone2"],"unicode":"🤽🏼‍♀️"},{"annotation":"woman playing water polo: medium skin tone","group":1,"hexcode":"1F93D-1F3FD-200D-2640-FE0F","order":2302,"shortcodes":["woman_water_polo_tone3"],"unicode":"🤽🏽‍♀️"},{"annotation":"woman playing water polo: medium-dark skin tone","group":1,"hexcode":"1F93D-1F3FE-200D-2640-FE0F","order":2304,"shortcodes":["woman_water_polo_tone4"],"unicode":"🤽🏾‍♀️"},{"annotation":"woman playing water polo: dark skin tone","group":1,"hexcode":"1F93D-1F3FF-200D-2640-FE0F","order":2306,"shortcodes":["woman_water_polo_tone5"],"unicode":"🤽🏿‍♀️"}]},{"annotation":"person playing handball","group":1,"hexcode":"1F93E","order":2308,"shortcodes":["person_handball"],"tags":["ball","handball"],"unicode":"🤾","skins":[{"annotation":"person playing handball: light skin tone","group":1,"hexcode":"1F93E-1F3FB","order":2309,"shortcodes":["person_handball_tone1"],"unicode":"🤾🏻"},{"annotation":"person playing handball: medium-light skin tone","group":1,"hexcode":"1F93E-1F3FC","order":2310,"shortcodes":["person_handball_tone2"],"unicode":"🤾🏼"},{"annotation":"person playing handball: medium skin tone","group":1,"hexcode":"1F93E-1F3FD","order":2311,"shortcodes":["person_handball_tone3"],"unicode":"🤾🏽"},{"annotation":"person playing handball: medium-dark skin tone","group":1,"hexcode":"1F93E-1F3FE","order":2312,"shortcodes":["person_handball_tone4"],"unicode":"🤾🏾"},{"annotation":"person playing handball: dark skin tone","group":1,"hexcode":"1F93E-1F3FF","order":2313,"shortcodes":["person_handball_tone5"],"unicode":"🤾🏿"}]},{"annotation":"man playing handball","group":1,"hexcode":"1F93E-200D-2642-FE0F","order":2314,"shortcodes":["man_handball"],"tags":["handball","man"],"unicode":"🤾‍♂️","skins":[{"annotation":"man playing handball: light skin tone","group":1,"hexcode":"1F93E-1F3FB-200D-2642-FE0F","order":2316,"shortcodes":["man_handball_tone1"],"unicode":"🤾🏻‍♂️"},{"annotation":"man playing handball: medium-light skin tone","group":1,"hexcode":"1F93E-1F3FC-200D-2642-FE0F","order":2318,"shortcodes":["man_handball_tone2"],"unicode":"🤾🏼‍♂️"},{"annotation":"man playing handball: medium skin tone","group":1,"hexcode":"1F93E-1F3FD-200D-2642-FE0F","order":2320,"shortcodes":["man_handball_tone3"],"unicode":"🤾🏽‍♂️"},{"annotation":"man playing handball: medium-dark skin tone","group":1,"hexcode":"1F93E-1F3FE-200D-2642-FE0F","order":2322,"shortcodes":["man_handball_tone4"],"unicode":"🤾🏾‍♂️"},{"annotation":"man playing handball: dark skin tone","group":1,"hexcode":"1F93E-1F3FF-200D-2642-FE0F","order":2324,"shortcodes":["man_handball_tone5"],"unicode":"🤾🏿‍♂️"}]},{"annotation":"woman playing handball","group":1,"hexcode":"1F93E-200D-2640-FE0F","order":2326,"shortcodes":["woman_handball"],"tags":["handball","woman"],"unicode":"🤾‍♀️","skins":[{"annotation":"woman playing handball: light skin tone","group":1,"hexcode":"1F93E-1F3FB-200D-2640-FE0F","order":2328,"shortcodes":["woman_handball_tone1"],"unicode":"🤾🏻‍♀️"},{"annotation":"woman playing handball: medium-light skin tone","group":1,"hexcode":"1F93E-1F3FC-200D-2640-FE0F","order":2330,"shortcodes":["woman_handball_tone2"],"unicode":"🤾🏼‍♀️"},{"annotation":"woman playing handball: medium skin tone","group":1,"hexcode":"1F93E-1F3FD-200D-2640-FE0F","order":2332,"shortcodes":["woman_handball_tone3"],"unicode":"🤾🏽‍♀️"},{"annotation":"woman playing handball: medium-dark skin tone","group":1,"hexcode":"1F93E-1F3FE-200D-2640-FE0F","order":2334,"shortcodes":["woman_handball_tone4"],"unicode":"🤾🏾‍♀️"},{"annotation":"woman playing handball: dark skin tone","group":1,"hexcode":"1F93E-1F3FF-200D-2640-FE0F","order":2336,"shortcodes":["woman_handball_tone5"],"unicode":"🤾🏿‍♀️"}]},{"annotation":"person juggling","group":1,"hexcode":"1F939","order":2338,"shortcodes":["person_juggling"],"tags":["balance","juggle","multitask","skill"],"unicode":"🤹","skins":[{"annotation":"person juggling: light skin tone","group":1,"hexcode":"1F939-1F3FB","order":2339,"shortcodes":["person_juggling_tone1"],"unicode":"🤹🏻"},{"annotation":"person juggling: medium-light skin tone","group":1,"hexcode":"1F939-1F3FC","order":2340,"shortcodes":["person_juggling_tone2"],"unicode":"🤹🏼"},{"annotation":"person juggling: medium skin tone","group":1,"hexcode":"1F939-1F3FD","order":2341,"shortcodes":["person_juggling_tone3"],"unicode":"🤹🏽"},{"annotation":"person juggling: medium-dark skin tone","group":1,"hexcode":"1F939-1F3FE","order":2342,"shortcodes":["person_juggling_tone4"],"unicode":"🤹🏾"},{"annotation":"person juggling: dark skin tone","group":1,"hexcode":"1F939-1F3FF","order":2343,"shortcodes":["person_juggling_tone5"],"unicode":"🤹🏿"}]},{"annotation":"man juggling","group":1,"hexcode":"1F939-200D-2642-FE0F","order":2344,"shortcodes":["man_juggling"],"tags":["juggling","man","multitask"],"unicode":"🤹‍♂️","skins":[{"annotation":"man juggling: light skin tone","group":1,"hexcode":"1F939-1F3FB-200D-2642-FE0F","order":2346,"shortcodes":["man_juggling_tone1"],"unicode":"🤹🏻‍♂️"},{"annotation":"man juggling: medium-light skin tone","group":1,"hexcode":"1F939-1F3FC-200D-2642-FE0F","order":2348,"shortcodes":["man_juggling_tone2"],"unicode":"🤹🏼‍♂️"},{"annotation":"man juggling: medium skin tone","group":1,"hexcode":"1F939-1F3FD-200D-2642-FE0F","order":2350,"shortcodes":["man_juggling_tone3"],"unicode":"🤹🏽‍♂️"},{"annotation":"man juggling: medium-dark skin tone","group":1,"hexcode":"1F939-1F3FE-200D-2642-FE0F","order":2352,"shortcodes":["man_juggling_tone4"],"unicode":"🤹🏾‍♂️"},{"annotation":"man juggling: dark skin tone","group":1,"hexcode":"1F939-1F3FF-200D-2642-FE0F","order":2354,"shortcodes":["man_juggling_tone5"],"unicode":"🤹🏿‍♂️"}]},{"annotation":"woman juggling","group":1,"hexcode":"1F939-200D-2640-FE0F","order":2356,"shortcodes":["woman_juggling"],"tags":["juggling","multitask","woman"],"unicode":"🤹‍♀️","skins":[{"annotation":"woman juggling: light skin tone","group":1,"hexcode":"1F939-1F3FB-200D-2640-FE0F","order":2358,"shortcodes":["woman_juggling_tone1"],"unicode":"🤹🏻‍♀️"},{"annotation":"woman juggling: medium-light skin tone","group":1,"hexcode":"1F939-1F3FC-200D-2640-FE0F","order":2360,"shortcodes":["woman_juggling_tone2"],"unicode":"🤹🏼‍♀️"},{"annotation":"woman juggling: medium skin tone","group":1,"hexcode":"1F939-1F3FD-200D-2640-FE0F","order":2362,"shortcodes":["woman_juggling_tone3"],"unicode":"🤹🏽‍♀️"},{"annotation":"woman juggling: medium-dark skin tone","group":1,"hexcode":"1F939-1F3FE-200D-2640-FE0F","order":2364,"shortcodes":["woman_juggling_tone4"],"unicode":"🤹🏾‍♀️"},{"annotation":"woman juggling: dark skin tone","group":1,"hexcode":"1F939-1F3FF-200D-2640-FE0F","order":2366,"shortcodes":["woman_juggling_tone5"],"unicode":"🤹🏿‍♀️"}]},{"annotation":"person in lotus position","group":1,"hexcode":"1F9D8","order":2368,"shortcodes":["person_lotus_position"],"tags":["meditation","yoga"],"unicode":"🧘","skins":[{"annotation":"person in lotus position: light skin tone","group":1,"hexcode":"1F9D8-1F3FB","order":2369,"shortcodes":["person_lotus_position_tone1"],"unicode":"🧘🏻"},{"annotation":"person in lotus position: medium-light skin tone","group":1,"hexcode":"1F9D8-1F3FC","order":2370,"shortcodes":["person_lotus_position_tone2"],"unicode":"🧘🏼"},{"annotation":"person in lotus position: medium skin tone","group":1,"hexcode":"1F9D8-1F3FD","order":2371,"shortcodes":["person_lotus_position_tone3"],"unicode":"🧘🏽"},{"annotation":"person in lotus position: medium-dark skin tone","group":1,"hexcode":"1F9D8-1F3FE","order":2372,"shortcodes":["person_lotus_position_tone4"],"unicode":"🧘🏾"},{"annotation":"person in lotus position: dark skin tone","group":1,"hexcode":"1F9D8-1F3FF","order":2373,"shortcodes":["person_lotus_position_tone5"],"unicode":"🧘🏿"}]},{"annotation":"man in lotus position","group":1,"hexcode":"1F9D8-200D-2642-FE0F","order":2374,"shortcodes":["man_lotus_position"],"tags":["meditation","yoga"],"unicode":"🧘‍♂️","skins":[{"annotation":"man in lotus position: light skin tone","group":1,"hexcode":"1F9D8-1F3FB-200D-2642-FE0F","order":2376,"shortcodes":["man_lotus_position_tone1"],"unicode":"🧘🏻‍♂️"},{"annotation":"man in lotus position: medium-light skin tone","group":1,"hexcode":"1F9D8-1F3FC-200D-2642-FE0F","order":2378,"shortcodes":["man_lotus_position_tone2"],"unicode":"🧘🏼‍♂️"},{"annotation":"man in lotus position: medium skin tone","group":1,"hexcode":"1F9D8-1F3FD-200D-2642-FE0F","order":2380,"shortcodes":["man_lotus_position_tone3"],"unicode":"🧘🏽‍♂️"},{"annotation":"man in lotus position: medium-dark skin tone","group":1,"hexcode":"1F9D8-1F3FE-200D-2642-FE0F","order":2382,"shortcodes":["man_lotus_position_tone4"],"unicode":"🧘🏾‍♂️"},{"annotation":"man in lotus position: dark skin tone","group":1,"hexcode":"1F9D8-1F3FF-200D-2642-FE0F","order":2384,"shortcodes":["man_lotus_position_tone5"],"unicode":"🧘🏿‍♂️"}]},{"annotation":"woman in lotus position","group":1,"hexcode":"1F9D8-200D-2640-FE0F","order":2386,"shortcodes":["woman_lotus_position"],"tags":["meditation","yoga"],"unicode":"🧘‍♀️","skins":[{"annotation":"woman in lotus position: light skin tone","group":1,"hexcode":"1F9D8-1F3FB-200D-2640-FE0F","order":2388,"shortcodes":["woman_lotus_position_tone1"],"unicode":"🧘🏻‍♀️"},{"annotation":"woman in lotus position: medium-light skin tone","group":1,"hexcode":"1F9D8-1F3FC-200D-2640-FE0F","order":2390,"shortcodes":["woman_lotus_position_tone2"],"unicode":"🧘🏼‍♀️"},{"annotation":"woman in lotus position: medium skin tone","group":1,"hexcode":"1F9D8-1F3FD-200D-2640-FE0F","order":2392,"shortcodes":["woman_lotus_position_tone3"],"unicode":"🧘🏽‍♀️"},{"annotation":"woman in lotus position: medium-dark skin tone","group":1,"hexcode":"1F9D8-1F3FE-200D-2640-FE0F","order":2394,"shortcodes":["woman_lotus_position_tone4"],"unicode":"🧘🏾‍♀️"},{"annotation":"woman in lotus position: dark skin tone","group":1,"hexcode":"1F9D8-1F3FF-200D-2640-FE0F","order":2396,"shortcodes":["woman_lotus_position_tone5"],"unicode":"🧘🏿‍♀️"}]},{"annotation":"person taking bath","group":1,"hexcode":"1F6C0","order":2398,"shortcodes":["bath"],"tags":["bath","bathtub"],"unicode":"🛀","skins":[{"annotation":"person taking bath: light skin tone","group":1,"hexcode":"1F6C0-1F3FB","order":2399,"shortcodes":["bath_tone1"],"unicode":"🛀🏻"},{"annotation":"person taking bath: medium-light skin tone","group":1,"hexcode":"1F6C0-1F3FC","order":2400,"shortcodes":["bath_tone2"],"unicode":"🛀🏼"},{"annotation":"person taking bath: medium skin tone","group":1,"hexcode":"1F6C0-1F3FD","order":2401,"shortcodes":["bath_tone3"],"unicode":"🛀🏽"},{"annotation":"person taking bath: medium-dark skin tone","group":1,"hexcode":"1F6C0-1F3FE","order":2402,"shortcodes":["bath_tone4"],"unicode":"🛀🏾"},{"annotation":"person taking bath: dark skin tone","group":1,"hexcode":"1F6C0-1F3FF","order":2403,"shortcodes":["bath_tone5"],"unicode":"🛀🏿"}]},{"annotation":"person in bed","group":1,"hexcode":"1F6CC","order":2404,"shortcodes":["in_bed"],"tags":["hotel","sleep"],"unicode":"🛌","skins":[{"annotation":"person in bed: light skin tone","group":1,"hexcode":"1F6CC-1F3FB","order":2405,"shortcodes":["in_bed_tone1"],"unicode":"🛌🏻"},{"annotation":"person in bed: medium-light skin tone","group":1,"hexcode":"1F6CC-1F3FC","order":2406,"shortcodes":["in_bed_tone2"],"unicode":"🛌🏼"},{"annotation":"person in bed: medium skin tone","group":1,"hexcode":"1F6CC-1F3FD","order":2407,"shortcodes":["in_bed_tone3"],"unicode":"🛌🏽"},{"annotation":"person in bed: medium-dark skin tone","group":1,"hexcode":"1F6CC-1F3FE","order":2408,"shortcodes":["in_bed_tone4"],"unicode":"🛌🏾"},{"annotation":"person in bed: dark skin tone","group":1,"hexcode":"1F6CC-1F3FF","order":2409,"shortcodes":["in_bed_tone5"],"unicode":"🛌🏿"}]},{"annotation":"people holding hands","group":1,"hexcode":"1F9D1-200D-1F91D-200D-1F9D1","order":2410,"shortcodes":["holding_hands_people"],"tags":["couple","hand","hold","holding hands","person"],"unicode":"🧑‍🤝‍🧑","skins":[{"annotation":"people holding hands: light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FB","order":2411,"shortcodes":["holding_hands_people_tone1"],"unicode":"🧑🏻‍🤝‍🧑🏻"},{"annotation":"people holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FC","order":2412,"shortcodes":["holding_hands_people_tone1-2"],"unicode":"🧑🏻‍🤝‍🧑🏼"},{"annotation":"people holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FD","order":2413,"shortcodes":["holding_hands_people_tone1-3"],"unicode":"🧑🏻‍🤝‍🧑🏽"},{"annotation":"people holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FE","order":2414,"shortcodes":["holding_hands_people_tone1-4"],"unicode":"🧑🏻‍🤝‍🧑🏾"},{"annotation":"people holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FB-200D-1F91D-200D-1F9D1-1F3FF","order":2415,"shortcodes":["holding_hands_people_tone1-5"],"unicode":"🧑🏻‍🤝‍🧑🏿"},{"annotation":"people holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FB","order":2416,"shortcodes":["holding_hands_people_tone2-1"],"unicode":"🧑🏼‍🤝‍🧑🏻"},{"annotation":"people holding hands: medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FC","order":2417,"shortcodes":["holding_hands_people_tone2"],"unicode":"🧑🏼‍🤝‍🧑🏼"},{"annotation":"people holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FD","order":2418,"shortcodes":["holding_hands_people_tone2-3"],"unicode":"🧑🏼‍🤝‍🧑🏽"},{"annotation":"people holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FE","order":2419,"shortcodes":["holding_hands_people_tone2-4"],"unicode":"🧑🏼‍🤝‍🧑🏾"},{"annotation":"people holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FC-200D-1F91D-200D-1F9D1-1F3FF","order":2420,"shortcodes":["holding_hands_people_tone2-5"],"unicode":"🧑🏼‍🤝‍🧑🏿"},{"annotation":"people holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FB","order":2421,"shortcodes":["holding_hands_people_tone3-1"],"unicode":"🧑🏽‍🤝‍🧑🏻"},{"annotation":"people holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FC","order":2422,"shortcodes":["holding_hands_people_tone3-2"],"unicode":"🧑🏽‍🤝‍🧑🏼"},{"annotation":"people holding hands: medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FD","order":2423,"shortcodes":["holding_hands_people_tone3"],"unicode":"🧑🏽‍🤝‍🧑🏽"},{"annotation":"people holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FE","order":2424,"shortcodes":["holding_hands_people_tone3-4"],"unicode":"🧑🏽‍🤝‍🧑🏾"},{"annotation":"people holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F9D1-1F3FD-200D-1F91D-200D-1F9D1-1F3FF","order":2425,"shortcodes":["holding_hands_people_tone3-5"],"unicode":"🧑🏽‍🤝‍🧑🏿"},{"annotation":"people holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FB","order":2426,"shortcodes":["holding_hands_people_tone4-1"],"unicode":"🧑🏾‍🤝‍🧑🏻"},{"annotation":"people holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FC","order":2427,"shortcodes":["holding_hands_people_tone4-2"],"unicode":"🧑🏾‍🤝‍🧑🏼"},{"annotation":"people holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FD","order":2428,"shortcodes":["holding_hands_people_tone4-3"],"unicode":"🧑🏾‍🤝‍🧑🏽"},{"annotation":"people holding hands: medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FE","order":2429,"shortcodes":["holding_hands_people_tone4"],"unicode":"🧑🏾‍🤝‍🧑🏾"},{"annotation":"people holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FE-200D-1F91D-200D-1F9D1-1F3FF","order":2430,"shortcodes":["holding_hands_people_tone4-5"],"unicode":"🧑🏾‍🤝‍🧑🏿"},{"annotation":"people holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FB","order":2431,"shortcodes":["holding_hands_people_tone5-1"],"unicode":"🧑🏿‍🤝‍🧑🏻"},{"annotation":"people holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FC","order":2432,"shortcodes":["holding_hands_people_tone5-2"],"unicode":"🧑🏿‍🤝‍🧑🏼"},{"annotation":"people holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FD","order":2433,"shortcodes":["holding_hands_people_tone5-3"],"unicode":"🧑🏿‍🤝‍🧑🏽"},{"annotation":"people holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FE","order":2434,"shortcodes":["holding_hands_people_tone5-4"],"unicode":"🧑🏿‍🤝‍🧑🏾"},{"annotation":"people holding hands: dark skin tone","group":1,"hexcode":"1F9D1-1F3FF-200D-1F91D-200D-1F9D1-1F3FF","order":2435,"shortcodes":["holding_hands_people_tone5"],"unicode":"🧑🏿‍🤝‍🧑🏿"}]},{"annotation":"women holding hands","group":1,"hexcode":"1F46D","order":2436,"shortcodes":["holding_hands_ww"],"tags":["couple","hand","holding hands","women"],"unicode":"👭","skins":[{"annotation":"women holding hands: light skin tone","group":1,"hexcode":"1F46D-1F3FB","order":2437,"shortcodes":["holding_hands_ww_tone1"],"unicode":"👭🏻"},{"annotation":"women holding hands: medium-light skin tone","group":1,"hexcode":"1F46D-1F3FC","order":2443,"shortcodes":["holding_hands_ww_tone2"],"unicode":"👭🏼"},{"annotation":"women holding hands: medium skin tone","group":1,"hexcode":"1F46D-1F3FD","order":2449,"shortcodes":["holding_hands_ww_tone3"],"unicode":"👭🏽"},{"annotation":"women holding hands: medium-dark skin tone","group":1,"hexcode":"1F46D-1F3FE","order":2455,"shortcodes":["holding_hands_ww_tone4"],"unicode":"👭🏾"},{"annotation":"women holding hands: dark skin tone","group":1,"hexcode":"1F46D-1F3FF","order":2461,"shortcodes":["holding_hands_ww_tone5"],"unicode":"👭🏿"},{"annotation":"women holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FC","order":2438,"shortcodes":["holding_hands_ww_tone1-2"],"unicode":"👩🏻‍🤝‍👩🏼"},{"annotation":"women holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FD","order":2439,"shortcodes":["holding_hands_ww_tone1-3"],"unicode":"👩🏻‍🤝‍👩🏽"},{"annotation":"women holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FE","order":2440,"shortcodes":["holding_hands_ww_tone1-4"],"unicode":"👩🏻‍🤝‍👩🏾"},{"annotation":"women holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F469-1F3FF","order":2441,"shortcodes":["holding_hands_ww_tone1-5"],"unicode":"👩🏻‍🤝‍👩🏿"},{"annotation":"women holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FB","order":2442,"shortcodes":["holding_hands_ww_tone2-1"],"unicode":"👩🏼‍🤝‍👩🏻"},{"annotation":"women holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FD","order":2444,"shortcodes":["holding_hands_ww_tone2-3"],"unicode":"👩🏼‍🤝‍👩🏽"},{"annotation":"women holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FE","order":2445,"shortcodes":["holding_hands_ww_tone2-4"],"unicode":"👩🏼‍🤝‍👩🏾"},{"annotation":"women holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F469-1F3FF","order":2446,"shortcodes":["holding_hands_ww_tone2-5"],"unicode":"👩🏼‍🤝‍👩🏿"},{"annotation":"women holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FB","order":2447,"shortcodes":["holding_hands_ww_tone3-1"],"unicode":"👩🏽‍🤝‍👩🏻"},{"annotation":"women holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FC","order":2448,"shortcodes":["holding_hands_ww_tone3-2"],"unicode":"👩🏽‍🤝‍👩🏼"},{"annotation":"women holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FE","order":2450,"shortcodes":["holding_hands_ww_tone3-4"],"unicode":"👩🏽‍🤝‍👩🏾"},{"annotation":"women holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F469-1F3FF","order":2451,"shortcodes":["holding_hands_ww_tone3-5"],"unicode":"👩🏽‍🤝‍👩🏿"},{"annotation":"women holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FB","order":2452,"shortcodes":["holding_hands_ww_tone4-1"],"unicode":"👩🏾‍🤝‍👩🏻"},{"annotation":"women holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FC","order":2453,"shortcodes":["holding_hands_ww_tone4-2"],"unicode":"👩🏾‍🤝‍👩🏼"},{"annotation":"women holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FD","order":2454,"shortcodes":["holding_hands_ww_tone4-3"],"unicode":"👩🏾‍🤝‍👩🏽"},{"annotation":"women holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F469-1F3FF","order":2456,"shortcodes":["holding_hands_ww_tone4-5"],"unicode":"👩🏾‍🤝‍👩🏿"},{"annotation":"women holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FB","order":2457,"shortcodes":["holding_hands_ww_tone5-1"],"unicode":"👩🏿‍🤝‍👩🏻"},{"annotation":"women holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FC","order":2458,"shortcodes":["holding_hands_ww_tone5-2"],"unicode":"👩🏿‍🤝‍👩🏼"},{"annotation":"women holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FD","order":2459,"shortcodes":["holding_hands_ww_tone5-3"],"unicode":"👩🏿‍🤝‍👩🏽"},{"annotation":"women holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F469-1F3FE","order":2460,"shortcodes":["holding_hands_ww_tone5-4"],"unicode":"👩🏿‍🤝‍👩🏾"}]},{"annotation":"woman and man holding hands","group":1,"hexcode":"1F46B","order":2462,"shortcodes":["holding_hands_mw","holding_hands_wm"],"tags":["couple","hand","hold","holding hands","man","woman"],"unicode":"👫","skins":[{"annotation":"woman and man holding hands: light skin tone","group":1,"hexcode":"1F46B-1F3FB","order":2463,"shortcodes":["holding_hands_mw_tone1","holding_hands_wm_tone1"],"unicode":"👫🏻"},{"annotation":"woman and man holding hands: medium-light skin tone","group":1,"hexcode":"1F46B-1F3FC","order":2469,"shortcodes":["holding_hands_mw_tone2","holding_hands_wm_tone2"],"unicode":"👫🏼"},{"annotation":"woman and man holding hands: medium skin tone","group":1,"hexcode":"1F46B-1F3FD","order":2475,"shortcodes":["holding_hands_mw_tone3","holding_hands_wm_tone3"],"unicode":"👫🏽"},{"annotation":"woman and man holding hands: medium-dark skin tone","group":1,"hexcode":"1F46B-1F3FE","order":2481,"shortcodes":["holding_hands_mw_tone4","holding_hands_wm_tone4"],"unicode":"👫🏾"},{"annotation":"woman and man holding hands: dark skin tone","group":1,"hexcode":"1F46B-1F3FF","order":2487,"shortcodes":["holding_hands_mw_tone5","holding_hands_wm_tone5"],"unicode":"👫🏿"},{"annotation":"woman and man holding hands: light skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FC","order":2464,"shortcodes":["holding_hands_mw_tone1-2","holding_hands_wm_tone1-2"],"unicode":"👩🏻‍🤝‍👨🏼"},{"annotation":"woman and man holding hands: light skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FD","order":2465,"shortcodes":["holding_hands_mw_tone1-3","holding_hands_wm_tone1-3"],"unicode":"👩🏻‍🤝‍👨🏽"},{"annotation":"woman and man holding hands: light skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FE","order":2466,"shortcodes":["holding_hands_mw_tone1-4","holding_hands_wm_tone1-4"],"unicode":"👩🏻‍🤝‍👨🏾"},{"annotation":"woman and man holding hands: light skin tone, dark skin tone","group":1,"hexcode":"1F469-1F3FB-200D-1F91D-200D-1F468-1F3FF","order":2467,"shortcodes":["holding_hands_mw_tone1-5","holding_hands_wm_tone1-5"],"unicode":"👩🏻‍🤝‍👨🏿"},{"annotation":"woman and man holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FB","order":2468,"shortcodes":["holding_hands_mw_tone2-1","holding_hands_wm_tone2-1"],"unicode":"👩🏼‍🤝‍👨🏻"},{"annotation":"woman and man holding hands: medium-light skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FD","order":2470,"shortcodes":["holding_hands_mw_tone2-3","holding_hands_wm_tone2-3"],"unicode":"👩🏼‍🤝‍👨🏽"},{"annotation":"woman and man holding hands: medium-light skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FE","order":2471,"shortcodes":["holding_hands_mw_tone2-4","holding_hands_wm_tone2-4"],"unicode":"👩🏼‍🤝‍👨🏾"},{"annotation":"woman and man holding hands: medium-light skin tone, dark skin tone","group":1,"hexcode":"1F469-1F3FC-200D-1F91D-200D-1F468-1F3FF","order":2472,"shortcodes":["holding_hands_mw_tone2-5","holding_hands_wm_tone2-5"],"unicode":"👩🏼‍🤝‍👨🏿"},{"annotation":"woman and man holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FB","order":2473,"shortcodes":["holding_hands_mw_tone3-1","holding_hands_wm_tone3-1"],"unicode":"👩🏽‍🤝‍👨🏻"},{"annotation":"woman and man holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FC","order":2474,"shortcodes":["holding_hands_mw_tone3-2","holding_hands_wm_tone3-2"],"unicode":"👩🏽‍🤝‍👨🏼"},{"annotation":"woman and man holding hands: medium skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FE","order":2476,"shortcodes":["holding_hands_mw_tone3-4","holding_hands_wm_tone3-4"],"unicode":"👩🏽‍🤝‍👨🏾"},{"annotation":"woman and man holding hands: medium skin tone, dark skin tone","group":1,"hexcode":"1F469-1F3FD-200D-1F91D-200D-1F468-1F3FF","order":2477,"shortcodes":["holding_hands_mw_tone3-5","holding_hands_wm_tone3-5"],"unicode":"👩🏽‍🤝‍👨🏿"},{"annotation":"woman and man holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FB","order":2478,"shortcodes":["holding_hands_mw_tone4-1","holding_hands_wm_tone4-1"],"unicode":"👩🏾‍🤝‍👨🏻"},{"annotation":"woman and man holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FC","order":2479,"shortcodes":["holding_hands_mw_tone4-2","holding_hands_wm_tone4-2"],"unicode":"👩🏾‍🤝‍👨🏼"},{"annotation":"woman and man holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FD","order":2480,"shortcodes":["holding_hands_mw_tone4-3","holding_hands_wm_tone4-3"],"unicode":"👩🏾‍🤝‍👨🏽"},{"annotation":"woman and man holding hands: medium-dark skin tone, dark skin tone","group":1,"hexcode":"1F469-1F3FE-200D-1F91D-200D-1F468-1F3FF","order":2482,"shortcodes":["holding_hands_mw_tone4-5","holding_hands_wm_tone4-5"],"unicode":"👩🏾‍🤝‍👨🏿"},{"annotation":"woman and man holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FB","order":2483,"shortcodes":["holding_hands_mw_tone5-1","holding_hands_wm_tone5-1"],"unicode":"👩🏿‍🤝‍👨🏻"},{"annotation":"woman and man holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FC","order":2484,"shortcodes":["holding_hands_mw_tone5-2","holding_hands_wm_tone5-2"],"unicode":"👩🏿‍🤝‍👨🏼"},{"annotation":"woman and man holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FD","order":2485,"shortcodes":["holding_hands_mw_tone5-3","holding_hands_wm_tone5-3"],"unicode":"👩🏿‍🤝‍👨🏽"},{"annotation":"woman and man holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F469-1F3FF-200D-1F91D-200D-1F468-1F3FE","order":2486,"shortcodes":["holding_hands_mw_tone5-4","holding_hands_wm_tone5-4"],"unicode":"👩🏿‍🤝‍👨🏾"}]},{"annotation":"men holding hands","group":1,"hexcode":"1F46C","order":2488,"shortcodes":["holding_hands_mm"],"tags":["couple","gemini","holding hands","man","men","twins","zodiac"],"unicode":"👬","skins":[{"annotation":"men holding hands: light skin tone","group":1,"hexcode":"1F46C-1F3FB","order":2489,"shortcodes":["holding_hands_mm_tone1"],"unicode":"👬🏻"},{"annotation":"men holding hands: medium-light skin tone","group":1,"hexcode":"1F46C-1F3FC","order":2495,"shortcodes":["holding_hands_mm_tone2"],"unicode":"👬🏼"},{"annotation":"men holding hands: medium skin tone","group":1,"hexcode":"1F46C-1F3FD","order":2501,"shortcodes":["holding_hands_mm_tone3"],"unicode":"👬🏽"},{"annotation":"men holding hands: medium-dark skin tone","group":1,"hexcode":"1F46C-1F3FE","order":2507,"shortcodes":["holding_hands_mm_tone4"],"unicode":"👬🏾"},{"annotation":"men holding hands: dark skin tone","group":1,"hexcode":"1F46C-1F3FF","order":2513,"shortcodes":["holding_hands_mm_tone5"],"unicode":"👬🏿"},{"annotation":"men holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FC","order":2490,"shortcodes":["holding_hands_mm_tone1-2"],"unicode":"👨🏻‍🤝‍👨🏼"},{"annotation":"men holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FD","order":2491,"shortcodes":["holding_hands_mm_tone1-3"],"unicode":"👨🏻‍🤝‍👨🏽"},{"annotation":"men holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FE","order":2492,"shortcodes":["holding_hands_mm_tone1-4"],"unicode":"👨🏻‍🤝‍👨🏾"},{"annotation":"men holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FB-200D-1F91D-200D-1F468-1F3FF","order":2493,"shortcodes":["holding_hands_mm_tone1-5"],"unicode":"👨🏻‍🤝‍👨🏿"},{"annotation":"men holding hands: medium-light skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FB","order":2494,"shortcodes":["holding_hands_mm_tone2-1"],"unicode":"👨🏼‍🤝‍👨🏻"},{"annotation":"men holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FD","order":2496,"shortcodes":["holding_hands_mm_tone2-3"],"unicode":"👨🏼‍🤝‍👨🏽"},{"annotation":"men holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FE","order":2497,"shortcodes":["holding_hands_mm_tone2-4"],"unicode":"👨🏼‍🤝‍👨🏾"},{"annotation":"men holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FC-200D-1F91D-200D-1F468-1F3FF","order":2498,"shortcodes":["holding_hands_mm_tone2-5"],"unicode":"👨🏼‍🤝‍👨🏿"},{"annotation":"men holding hands: medium skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FB","order":2499,"shortcodes":["holding_hands_mm_tone3-1"],"unicode":"👨🏽‍🤝‍👨🏻"},{"annotation":"men holding hands: medium skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FC","order":2500,"shortcodes":["holding_hands_mm_tone3-2"],"unicode":"👨🏽‍🤝‍👨🏼"},{"annotation":"men holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FE","order":2502,"shortcodes":["holding_hands_mm_tone3-4"],"unicode":"👨🏽‍🤝‍👨🏾"},{"annotation":"men holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F468-1F3FD-200D-1F91D-200D-1F468-1F3FF","order":2503,"shortcodes":["holding_hands_mm_tone3-5"],"unicode":"👨🏽‍🤝‍👨🏿"},{"annotation":"men holding hands: medium-dark skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FB","order":2504,"shortcodes":["holding_hands_mm_tone4-1"],"unicode":"👨🏾‍🤝‍👨🏻"},{"annotation":"men holding hands: medium-dark skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FC","order":2505,"shortcodes":["holding_hands_mm_tone4-2"],"unicode":"👨🏾‍🤝‍👨🏼"},{"annotation":"men holding hands: medium-dark skin tone, medium skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FD","order":2506,"shortcodes":["holding_hands_mm_tone4-3"],"unicode":"👨🏾‍🤝‍👨🏽"},{"annotation":"men holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F468-1F3FE-200D-1F91D-200D-1F468-1F3FF","order":2508,"shortcodes":["holding_hands_mm_tone4-5"],"unicode":"👨🏾‍🤝‍👨🏿"},{"annotation":"men holding hands: dark skin tone, light skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FB","order":2509,"shortcodes":["holding_hands_mm_tone5-1"],"unicode":"👨🏿‍🤝‍👨🏻"},{"annotation":"men holding hands: dark skin tone, medium-light skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FC","order":2510,"shortcodes":["holding_hands_mm_tone5-2"],"unicode":"👨🏿‍🤝‍👨🏼"},{"annotation":"men holding hands: dark skin tone, medium skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FD","order":2511,"shortcodes":["holding_hands_mm_tone5-3"],"unicode":"👨🏿‍🤝‍👨🏽"},{"annotation":"men holding hands: dark skin tone, medium-dark skin tone","group":1,"hexcode":"1F468-1F3FF-200D-1F91D-200D-1F468-1F3FE","order":2512,"shortcodes":["holding_hands_mm_tone5-4"],"unicode":"👨🏿‍🤝‍👨🏾"}]},{"annotation":"kiss","group":1,"hexcode":"1F48F","order":2514,"shortcodes":["couple"],"tags":["couple"],"unicode":"💏"},{"annotation":"kiss: woman, man","group":1,"hexcode":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","order":2515,"shortcodes":["kiss_mw","kiss_wm"],"tags":["couple","kiss","man","woman"],"unicode":"👩‍❤️‍💋‍👨"},{"annotation":"kiss: man, man","group":1,"hexcode":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","order":2517,"shortcodes":["kiss_mm"],"tags":["couple","kiss","man"],"unicode":"👨‍❤️‍💋‍👨"},{"annotation":"kiss: woman, woman","group":1,"hexcode":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","order":2519,"shortcodes":["kiss_ww"],"tags":["couple","kiss","woman"],"unicode":"👩‍❤️‍💋‍👩"},{"annotation":"couple with heart","group":1,"hexcode":"1F491","order":2521,"shortcodes":["couple_heart"],"tags":["couple","love"],"unicode":"💑"},{"annotation":"couple with heart: woman, man","group":1,"hexcode":"1F469-200D-2764-FE0F-200D-1F468","order":2522,"shortcodes":["couple_mw","couple_wm"],"tags":["couple","couple with heart","love","man","woman"],"unicode":"👩‍❤️‍👨"},{"annotation":"couple with heart: man, man","group":1,"hexcode":"1F468-200D-2764-FE0F-200D-1F468","order":2524,"shortcodes":["couple_mm"],"tags":["couple","couple with heart","love","man"],"unicode":"👨‍❤️‍👨"},{"annotation":"couple with heart: woman, woman","group":1,"hexcode":"1F469-200D-2764-FE0F-200D-1F469","order":2526,"shortcodes":["couple_ww"],"tags":["couple","couple with heart","love","woman"],"unicode":"👩‍❤️‍👩"},{"annotation":"family","group":1,"hexcode":"1F46A","order":2528,"shortcodes":["family"],"tags":["family"],"unicode":"👪️"},{"annotation":"family: man, woman, boy","group":1,"hexcode":"1F468-200D-1F469-200D-1F466","order":2529,"shortcodes":["family_mwb"],"tags":["boy","family","man","woman"],"unicode":"👨‍👩‍👦"},{"annotation":"family: man, woman, girl","group":1,"hexcode":"1F468-200D-1F469-200D-1F467","order":2530,"shortcodes":["family_mwg"],"tags":["family","girl","man","woman"],"unicode":"👨‍👩‍👧"},{"annotation":"family: man, woman, girl, boy","group":1,"hexcode":"1F468-200D-1F469-200D-1F467-200D-1F466","order":2531,"shortcodes":["family_mwgb"],"tags":["boy","family","girl","man","woman"],"unicode":"👨‍👩‍👧‍👦"},{"annotation":"family: man, woman, boy, boy","group":1,"hexcode":"1F468-200D-1F469-200D-1F466-200D-1F466","order":2532,"shortcodes":["family_mwbb"],"tags":["boy","family","man","woman"],"unicode":"👨‍👩‍👦‍👦"},{"annotation":"family: man, woman, girl, girl","group":1,"hexcode":"1F468-200D-1F469-200D-1F467-200D-1F467","order":2533,"shortcodes":["family_mwgg"],"tags":["family","girl","man","woman"],"unicode":"👨‍👩‍👧‍👧"},{"annotation":"family: man, man, boy","group":1,"hexcode":"1F468-200D-1F468-200D-1F466","order":2534,"shortcodes":["family_mmb"],"tags":["boy","family","man"],"unicode":"👨‍👨‍👦"},{"annotation":"family: man, man, girl","group":1,"hexcode":"1F468-200D-1F468-200D-1F467","order":2535,"shortcodes":["family_mmg"],"tags":["family","girl","man"],"unicode":"👨‍👨‍👧"},{"annotation":"family: man, man, girl, boy","group":1,"hexcode":"1F468-200D-1F468-200D-1F467-200D-1F466","order":2536,"shortcodes":["family_mmgb"],"tags":["boy","family","girl","man"],"unicode":"👨‍👨‍👧‍👦"},{"annotation":"family: man, man, boy, boy","group":1,"hexcode":"1F468-200D-1F468-200D-1F466-200D-1F466","order":2537,"shortcodes":["family_mmbb"],"tags":["boy","family","man"],"unicode":"👨‍👨‍👦‍👦"},{"annotation":"family: man, man, girl, girl","group":1,"hexcode":"1F468-200D-1F468-200D-1F467-200D-1F467","order":2538,"shortcodes":["family_mmgg"],"tags":["family","girl","man"],"unicode":"👨‍👨‍👧‍👧"},{"annotation":"family: woman, woman, boy","group":1,"hexcode":"1F469-200D-1F469-200D-1F466","order":2539,"shortcodes":["family_wwb"],"tags":["boy","family","woman"],"unicode":"👩‍👩‍👦"},{"annotation":"family: woman, woman, girl","group":1,"hexcode":"1F469-200D-1F469-200D-1F467","order":2540,"shortcodes":["family_wwg"],"tags":["family","girl","woman"],"unicode":"👩‍👩‍👧"},{"annotation":"family: woman, woman, girl, boy","group":1,"hexcode":"1F469-200D-1F469-200D-1F467-200D-1F466","order":2541,"shortcodes":["family_wwgb"],"tags":["boy","family","girl","woman"],"unicode":"👩‍👩‍👧‍👦"},{"annotation":"family: woman, woman, boy, boy","group":1,"hexcode":"1F469-200D-1F469-200D-1F466-200D-1F466","order":2542,"shortcodes":["family_wwbb"],"tags":["boy","family","woman"],"unicode":"👩‍👩‍👦‍👦"},{"annotation":"family: woman, woman, girl, girl","group":1,"hexcode":"1F469-200D-1F469-200D-1F467-200D-1F467","order":2543,"shortcodes":["family_wwgg"],"tags":["family","girl","woman"],"unicode":"👩‍👩‍👧‍👧"},{"annotation":"family: man, boy","group":1,"hexcode":"1F468-200D-1F466","order":2544,"shortcodes":["family_mb"],"tags":["boy","family","man"],"unicode":"👨‍👦"},{"annotation":"family: man, boy, boy","group":1,"hexcode":"1F468-200D-1F466-200D-1F466","order":2545,"shortcodes":["family_mbb"],"tags":["boy","family","man"],"unicode":"👨‍👦‍👦"},{"annotation":"family: man, girl","group":1,"hexcode":"1F468-200D-1F467","order":2546,"shortcodes":["family_mg"],"tags":["family","girl","man"],"unicode":"👨‍👧"},{"annotation":"family: man, girl, boy","group":1,"hexcode":"1F468-200D-1F467-200D-1F466","order":2547,"shortcodes":["family_mgb"],"tags":["boy","family","girl","man"],"unicode":"👨‍👧‍👦"},{"annotation":"family: man, girl, girl","group":1,"hexcode":"1F468-200D-1F467-200D-1F467","order":2548,"shortcodes":["family_mgg"],"tags":["family","girl","man"],"unicode":"👨‍👧‍👧"},{"annotation":"family: woman, boy","group":1,"hexcode":"1F469-200D-1F466","order":2549,"shortcodes":["family_wb"],"tags":["boy","family","woman"],"unicode":"👩‍👦"},{"annotation":"family: woman, boy, boy","group":1,"hexcode":"1F469-200D-1F466-200D-1F466","order":2550,"shortcodes":["family_wbb"],"tags":["boy","family","woman"],"unicode":"👩‍👦‍👦"},{"annotation":"family: woman, girl","group":1,"hexcode":"1F469-200D-1F467","order":2551,"shortcodes":["family_wg"],"tags":["family","girl","woman"],"unicode":"👩‍👧"},{"annotation":"family: woman, girl, boy","group":1,"hexcode":"1F469-200D-1F467-200D-1F466","order":2552,"shortcodes":["family_wgb"],"tags":["boy","family","girl","woman"],"unicode":"👩‍👧‍👦"},{"annotation":"family: woman, girl, girl","group":1,"hexcode":"1F469-200D-1F467-200D-1F467","order":2553,"shortcodes":["family_wgg"],"tags":["family","girl","woman"],"unicode":"👩‍👧‍👧"},{"annotation":"speaking head","group":1,"hexcode":"1F5E3","order":2555,"shortcodes":["speaking_head"],"tags":["face","head","silhouette","speak","speaking"],"unicode":"🗣︎"},{"annotation":"bust in silhouette","group":1,"hexcode":"1F464","order":2556,"shortcodes":["bust_silhouette"],"tags":["bust","silhouette"],"unicode":"👤"},{"annotation":"busts in silhouette","group":1,"hexcode":"1F465","order":2557,"shortcodes":["busts_silhouette"],"tags":["bust","silhouette"],"unicode":"👥"},{"annotation":"footprints","group":1,"hexcode":"1F463","order":2558,"shortcodes":["footprints"],"tags":["clothing","footprint","print"],"unicode":"👣"},{"annotation":"light skin tone","group":2,"hexcode":"1F3FB","order":2559,"shortcodes":["tone_light","tone1"],"tags":["skin tone","type 1–2"],"unicode":"🏻"},{"annotation":"medium-light skin tone","group":2,"hexcode":"1F3FC","order":2560,"shortcodes":["tone_medium_light","tone2"],"tags":["skin tone","type 3"],"unicode":"🏼"},{"annotation":"medium skin tone","group":2,"hexcode":"1F3FD","order":2561,"shortcodes":["tone_medium","tone3"],"tags":["skin tone","type 4"],"unicode":"🏽"},{"annotation":"medium-dark skin tone","group":2,"hexcode":"1F3FE","order":2562,"shortcodes":["tone_medium_dark","tone4"],"tags":["skin tone","type 5"],"unicode":"🏾"},{"annotation":"dark skin tone","group":2,"hexcode":"1F3FF","order":2563,"shortcodes":["tone_dark","tone5"],"tags":["skin tone","type 6"],"unicode":"🏿"},{"annotation":"red hair","group":2,"hexcode":"1F9B0","order":2564,"shortcodes":["red_hair"],"tags":["ginger","redhead"],"unicode":"🦰"},{"annotation":"curly hair","group":2,"hexcode":"1F9B1","order":2565,"shortcodes":["curly_hair"],"tags":["afro","curly","ringlets"],"unicode":"🦱"},{"annotation":"white hair","group":2,"hexcode":"1F9B3","order":2566,"shortcodes":["white_hair"],"tags":["gray","hair","old","white"],"unicode":"🦳"},{"annotation":"bald","group":2,"hexcode":"1F9B2","order":2567,"shortcodes":["bald"],"tags":["chemotherapy","hairless","no hair","shaven"],"unicode":"🦲"},{"annotation":"monkey face","group":3,"hexcode":"1F435","order":2568,"shortcodes":["monkey_face"],"tags":["face","monkey"],"unicode":"🐵"},{"annotation":"monkey","group":3,"hexcode":"1F412","order":2569,"shortcodes":["monkey"],"tags":["monkey"],"unicode":"🐒"},{"annotation":"gorilla","group":3,"hexcode":"1F98D","order":2570,"shortcodes":["gorilla"],"tags":["gorilla"],"unicode":"🦍"},{"annotation":"orangutan","group":3,"hexcode":"1F9A7","order":2571,"shortcodes":["orangutan"],"tags":["ape"],"unicode":"🦧"},{"annotation":"dog face","group":3,"hexcode":"1F436","order":2572,"shortcodes":["dog_face"],"tags":["dog","face","pet"],"unicode":"🐶"},{"annotation":"dog","group":3,"hexcode":"1F415","order":2573,"shortcodes":["dog"],"tags":["pet"],"unicode":"🐕️"},{"annotation":"guide dog","group":3,"hexcode":"1F9AE","order":2574,"shortcodes":["guide_dog"],"tags":["accessibility","blind","guide"],"unicode":"🦮"},{"annotation":"service dog","group":3,"hexcode":"1F415-200D-1F9BA","order":2575,"shortcodes":["service_dog"],"tags":["accessibility","assistance","dog","service"],"unicode":"🐕‍🦺"},{"annotation":"poodle","group":3,"hexcode":"1F429","order":2576,"shortcodes":["poodle"],"tags":["dog"],"unicode":"🐩"},{"annotation":"wolf","group":3,"hexcode":"1F43A","order":2577,"shortcodes":["wolf_face"],"tags":["face"],"unicode":"🐺"},{"annotation":"fox","group":3,"hexcode":"1F98A","order":2578,"shortcodes":["fox_face"],"tags":["face"],"unicode":"🦊"},{"annotation":"raccoon","group":3,"hexcode":"1F99D","order":2579,"shortcodes":["raccoon"],"tags":["curious","sly"],"unicode":"🦝"},{"annotation":"cat face","group":3,"hexcode":"1F431","order":2580,"shortcodes":["cat_face"],"tags":["cat","face","pet"],"unicode":"🐱"},{"annotation":"cat","group":3,"hexcode":"1F408","order":2581,"shortcodes":["cat"],"tags":["pet"],"unicode":"🐈️"},{"annotation":"lion","group":3,"hexcode":"1F981","order":2582,"shortcodes":["lion_face"],"tags":["face","leo","zodiac"],"unicode":"🦁"},{"annotation":"tiger face","group":3,"hexcode":"1F42F","order":2583,"shortcodes":["tiger_face"],"tags":["face","tiger"],"unicode":"🐯"},{"annotation":"tiger","group":3,"hexcode":"1F405","order":2584,"shortcodes":["tiger"],"tags":["tiger"],"unicode":"🐅"},{"annotation":"leopard","group":3,"hexcode":"1F406","order":2585,"shortcodes":["leopard"],"tags":["leopard"],"unicode":"🐆"},{"annotation":"horse face","group":3,"hexcode":"1F434","order":2586,"shortcodes":["horse_face"],"tags":["face","horse"],"unicode":"🐴"},{"annotation":"horse","group":3,"hexcode":"1F40E","order":2587,"shortcodes":["horse"],"tags":["equestrian","racehorse","racing"],"unicode":"🐎"},{"annotation":"unicorn","group":3,"hexcode":"1F984","order":2588,"shortcodes":["unicorn_face"],"tags":["face"],"unicode":"🦄"},{"annotation":"zebra","group":3,"hexcode":"1F993","order":2589,"shortcodes":["zebra"],"tags":["stripe"],"unicode":"🦓"},{"annotation":"deer","group":3,"hexcode":"1F98C","order":2590,"shortcodes":["deer"],"tags":["deer"],"unicode":"🦌"},{"annotation":"cow face","group":3,"hexcode":"1F42E","order":2591,"shortcodes":["cow_face"],"tags":["cow","face"],"unicode":"🐮"},{"annotation":"ox","group":3,"hexcode":"1F402","order":2592,"shortcodes":["ox"],"tags":["bull","taurus","zodiac"],"unicode":"🐂"},{"annotation":"water buffalo","group":3,"hexcode":"1F403","order":2593,"shortcodes":["water_buffalo"],"tags":["buffalo","water"],"unicode":"🐃"},{"annotation":"cow","group":3,"hexcode":"1F404","order":2594,"shortcodes":["cow"],"tags":["cow"],"unicode":"🐄"},{"annotation":"pig face","group":3,"hexcode":"1F437","order":2595,"shortcodes":["pig_face"],"tags":["face","pig"],"unicode":"🐷"},{"annotation":"pig","group":3,"hexcode":"1F416","order":2596,"shortcodes":["pig"],"tags":["sow"],"unicode":"🐖"},{"annotation":"boar","group":3,"hexcode":"1F417","order":2597,"shortcodes":["boar"],"tags":["pig"],"unicode":"🐗"},{"annotation":"pig nose","group":3,"hexcode":"1F43D","order":2598,"shortcodes":["pig_nose"],"tags":["face","nose","pig"],"unicode":"🐽"},{"annotation":"ram","group":3,"hexcode":"1F40F","order":2599,"shortcodes":["ram"],"tags":["aries","male","sheep","zodiac"],"unicode":"🐏"},{"annotation":"ewe","group":3,"hexcode":"1F411","order":2600,"shortcodes":["sheep"],"tags":["female","sheep"],"unicode":"🐑"},{"annotation":"goat","group":3,"hexcode":"1F410","order":2601,"shortcodes":["goat"],"tags":["capricorn","zodiac"],"unicode":"🐐"},{"annotation":"camel","group":3,"hexcode":"1F42A","order":2602,"shortcodes":["camel"],"tags":["dromedary","hump"],"unicode":"🐪"},{"annotation":"two-hump camel","group":3,"hexcode":"1F42B","order":2603,"shortcodes":["two_hump_camel"],"tags":["bactrian","camel","hump"],"unicode":"🐫"},{"annotation":"llama","group":3,"hexcode":"1F999","order":2604,"shortcodes":["llama"],"tags":["alpaca","guanaco","vicuña","wool"],"unicode":"🦙"},{"annotation":"giraffe","group":3,"hexcode":"1F992","order":2605,"shortcodes":["giraffe"],"tags":["spots"],"unicode":"🦒"},{"annotation":"elephant","group":3,"hexcode":"1F418","order":2606,"shortcodes":["elephant"],"tags":["elephant"],"unicode":"🐘"},{"annotation":"rhinoceros","group":3,"hexcode":"1F98F","order":2607,"shortcodes":["rhino"],"tags":["rhinoceros"],"unicode":"🦏"},{"annotation":"hippopotamus","group":3,"hexcode":"1F99B","order":2608,"shortcodes":["hippo"],"tags":["hippo"],"unicode":"🦛"},{"annotation":"mouse face","group":3,"hexcode":"1F42D","order":2609,"shortcodes":["mouse_face"],"tags":["face","mouse"],"unicode":"🐭"},{"annotation":"mouse","group":3,"hexcode":"1F401","order":2610,"shortcodes":["mouse"],"tags":["mouse"],"unicode":"🐁"},{"annotation":"rat","group":3,"hexcode":"1F400","order":2611,"shortcodes":["rat"],"tags":["rat"],"unicode":"🐀"},{"annotation":"hamster","group":3,"hexcode":"1F439","order":2612,"shortcodes":["hamster_face"],"tags":["face","pet"],"unicode":"🐹"},{"annotation":"rabbit face","group":3,"hexcode":"1F430","order":2613,"shortcodes":["rabbit_face"],"tags":["bunny","face","pet","rabbit"],"unicode":"🐰"},{"annotation":"rabbit","group":3,"hexcode":"1F407","order":2614,"shortcodes":["rabbit"],"tags":["bunny","pet"],"unicode":"🐇"},{"annotation":"chipmunk","group":3,"hexcode":"1F43F","order":2616,"shortcodes":["chipmunk"],"tags":["squirrel"],"unicode":"🐿︎"},{"annotation":"hedgehog","group":3,"hexcode":"1F994","order":2617,"shortcodes":["hedgehog"],"tags":["spiny"],"unicode":"🦔"},{"annotation":"bat","group":3,"hexcode":"1F987","order":2618,"shortcodes":["bat"],"tags":["vampire"],"unicode":"🦇"},{"annotation":"bear","group":3,"hexcode":"1F43B","order":2619,"shortcodes":["bear_face"],"tags":["face"],"unicode":"🐻"},{"annotation":"koala","group":3,"hexcode":"1F428","order":2620,"shortcodes":["koala_face"],"tags":["bear"],"unicode":"🐨"},{"annotation":"panda","group":3,"hexcode":"1F43C","order":2621,"shortcodes":["panda_face"],"tags":["face"],"unicode":"🐼"},{"annotation":"sloth","group":3,"hexcode":"1F9A5","order":2622,"shortcodes":["sloth"],"tags":["lazy","slow"],"unicode":"🦥"},{"annotation":"otter","group":3,"hexcode":"1F9A6","order":2623,"shortcodes":["otter"],"tags":["fishing","playful"],"unicode":"🦦"},{"annotation":"skunk","group":3,"hexcode":"1F9A8","order":2624,"shortcodes":["skunk"],"tags":["stink"],"unicode":"🦨"},{"annotation":"kangaroo","group":3,"hexcode":"1F998","order":2625,"shortcodes":["kangaroo"],"tags":["australia","joey","jump","marsupial"],"unicode":"🦘"},{"annotation":"badger","group":3,"hexcode":"1F9A1","order":2626,"shortcodes":["badger"],"tags":["honey badger","pester"],"unicode":"🦡"},{"annotation":"paw prints","group":3,"hexcode":"1F43E","order":2627,"shortcodes":["feet"],"tags":["feet","paw","print"],"unicode":"🐾"},{"annotation":"turkey","group":3,"hexcode":"1F983","order":2628,"shortcodes":["turkey"],"tags":["bird"],"unicode":"🦃"},{"annotation":"chicken","group":3,"hexcode":"1F414","order":2629,"shortcodes":["chicken"],"tags":["bird"],"unicode":"🐔"},{"annotation":"rooster","group":3,"hexcode":"1F413","order":2630,"shortcodes":["rooster"],"tags":["bird"],"unicode":"🐓"},{"annotation":"hatching chick","group":3,"hexcode":"1F423","order":2631,"shortcodes":["hatching_chick"],"tags":["baby","bird","chick","hatching"],"unicode":"🐣"},{"annotation":"baby chick","group":3,"hexcode":"1F424","order":2632,"shortcodes":["baby_chick"],"tags":["baby","bird","chick"],"unicode":"🐤"},{"annotation":"front-facing baby chick","group":3,"hexcode":"1F425","order":2633,"shortcodes":["hatched_chick"],"tags":["baby","bird","chick"],"unicode":"🐥"},{"annotation":"bird","group":3,"hexcode":"1F426","order":2634,"shortcodes":["bird"],"tags":["bird"],"unicode":"🐦️"},{"annotation":"penguin","group":3,"hexcode":"1F427","order":2635,"shortcodes":["penguin"],"tags":["bird"],"unicode":"🐧"},{"annotation":"dove","group":3,"hexcode":"1F54A","order":2637,"shortcodes":["dove"],"tags":["bird","fly","peace"],"unicode":"🕊︎"},{"annotation":"eagle","group":3,"hexcode":"1F985","order":2638,"shortcodes":["eagle"],"tags":["bird"],"unicode":"🦅"},{"annotation":"duck","group":3,"hexcode":"1F986","order":2639,"shortcodes":["duck"],"tags":["bird"],"unicode":"🦆"},{"annotation":"swan","group":3,"hexcode":"1F9A2","order":2640,"shortcodes":["swan"],"tags":["bird","cygnet","ugly duckling"],"unicode":"🦢"},{"annotation":"owl","group":3,"hexcode":"1F989","order":2641,"shortcodes":["owl"],"tags":["bird","wise"],"unicode":"🦉"},{"annotation":"flamingo","group":3,"hexcode":"1F9A9","order":2642,"shortcodes":["flamingo"],"tags":["flamboyant","tropical"],"unicode":"🦩"},{"annotation":"peacock","group":3,"hexcode":"1F99A","order":2643,"shortcodes":["peacock"],"tags":["bird","ostentatious","peahen","proud"],"unicode":"🦚"},{"annotation":"parrot","group":3,"hexcode":"1F99C","order":2644,"shortcodes":["parrot"],"tags":["bird","pirate","talk"],"unicode":"🦜"},{"annotation":"frog","group":3,"hexcode":"1F438","order":2645,"shortcodes":["frog_face"],"tags":["face"],"unicode":"🐸"},{"annotation":"crocodile","group":3,"hexcode":"1F40A","order":2646,"shortcodes":["crocodile"],"tags":["crocodile"],"unicode":"🐊"},{"annotation":"turtle","group":3,"hexcode":"1F422","order":2647,"shortcodes":["turtle"],"tags":["terrapin","tortoise"],"unicode":"🐢"},{"annotation":"lizard","group":3,"hexcode":"1F98E","order":2648,"shortcodes":["lizard"],"tags":["reptile"],"unicode":"🦎"},{"annotation":"snake","group":3,"hexcode":"1F40D","order":2649,"shortcodes":["snake"],"tags":["bearer","ophiuchus","serpent","zodiac"],"unicode":"🐍"},{"annotation":"dragon face","group":3,"hexcode":"1F432","order":2650,"shortcodes":["dragon_face"],"tags":["dragon","face","fairy tale"],"unicode":"🐲"},{"annotation":"dragon","group":3,"hexcode":"1F409","order":2651,"shortcodes":["dragon"],"tags":["fairy tale"],"unicode":"🐉"},{"annotation":"sauropod","group":3,"hexcode":"1F995","order":2652,"shortcodes":["sauropod"],"tags":["brachiosaurus","brontosaurus","diplodocus"],"unicode":"🦕"},{"annotation":"T-Rex","group":3,"hexcode":"1F996","order":2653,"shortcodes":["trex"],"tags":["t-rex","tyrannosaurus rex"],"unicode":"🦖"},{"annotation":"spouting whale","group":3,"hexcode":"1F433","order":2654,"shortcodes":["spouting_whale"],"tags":["face","spouting","whale"],"unicode":"🐳"},{"annotation":"whale","group":3,"hexcode":"1F40B","order":2655,"shortcodes":["whale"],"tags":["whale"],"unicode":"🐋"},{"annotation":"dolphin","group":3,"hexcode":"1F42C","order":2656,"shortcodes":["dolphin"],"tags":["flipper"],"unicode":"🐬"},{"annotation":"fish","group":3,"hexcode":"1F41F","order":2657,"shortcodes":["fish"],"tags":["pisces","zodiac"],"unicode":"🐟️"},{"annotation":"tropical fish","group":3,"hexcode":"1F420","order":2658,"shortcodes":["tropical_fish"],"tags":["fish","tropical"],"unicode":"🐠"},{"annotation":"blowfish","group":3,"hexcode":"1F421","order":2659,"shortcodes":["blowfish"],"tags":["fish"],"unicode":"🐡"},{"annotation":"shark","group":3,"hexcode":"1F988","order":2660,"shortcodes":["shark"],"tags":["fish"],"unicode":"🦈"},{"annotation":"octopus","group":3,"hexcode":"1F419","order":2661,"shortcodes":["octopus"],"tags":["octopus"],"unicode":"🐙"},{"annotation":"spiral shell","group":3,"hexcode":"1F41A","order":2662,"shortcodes":["shell"],"tags":["shell","spiral"],"unicode":"🐚"},{"annotation":"snail","group":3,"hexcode":"1F40C","order":2663,"shortcodes":["snail"],"tags":["snail"],"unicode":"🐌"},{"annotation":"butterfly","group":3,"hexcode":"1F98B","order":2664,"shortcodes":["butterfly"],"tags":["insect","pretty"],"unicode":"🦋"},{"annotation":"bug","group":3,"hexcode":"1F41B","order":2665,"shortcodes":["bug"],"tags":["insect"],"unicode":"🐛"},{"annotation":"ant","group":3,"hexcode":"1F41C","order":2666,"shortcodes":["ant"],"tags":["insect"],"unicode":"🐜"},{"annotation":"honeybee","group":3,"hexcode":"1F41D","order":2667,"shortcodes":["bee"],"tags":["bee","insect"],"unicode":"🐝"},{"annotation":"lady beetle","group":3,"hexcode":"1F41E","order":2668,"shortcodes":["beetle"],"tags":["beetle","insect","ladybird","ladybug"],"unicode":"🐞"},{"annotation":"cricket","group":3,"hexcode":"1F997","order":2669,"shortcodes":["cricket"],"tags":["grasshopper"],"unicode":"🦗"},{"annotation":"spider","group":3,"hexcode":"1F577","order":2671,"shortcodes":["spider"],"tags":["insect"],"unicode":"🕷︎"},{"annotation":"spider web","group":3,"hexcode":"1F578","order":2673,"shortcodes":["spider_web"],"tags":["spider","web"],"unicode":"🕸︎"},{"annotation":"scorpion","group":3,"hexcode":"1F982","order":2674,"shortcodes":["scorpion"],"tags":["scorpio","zodiac"],"unicode":"🦂"},{"annotation":"mosquito","group":3,"hexcode":"1F99F","order":2675,"shortcodes":["mosquito"],"tags":["disease","fever","malaria","pest","virus"],"unicode":"🦟"},{"annotation":"microbe","group":3,"hexcode":"1F9A0","order":2676,"shortcodes":["microbe","germ"],"tags":["amoeba","bacteria","virus"],"unicode":"🦠"},{"annotation":"bouquet","group":3,"hexcode":"1F490","order":2677,"shortcodes":["bouquet"],"tags":["flower"],"unicode":"💐"},{"annotation":"cherry blossom","group":3,"hexcode":"1F338","order":2678,"shortcodes":["cherry_blossom"],"tags":["blossom","cherry","flower"],"unicode":"🌸"},{"annotation":"white flower","group":3,"hexcode":"1F4AE","order":2679,"shortcodes":["white_flower"],"tags":["flower"],"unicode":"💮"},{"annotation":"rosette","group":3,"hexcode":"1F3F5","order":2681,"shortcodes":["rosette"],"tags":["plant"],"unicode":"🏵︎"},{"annotation":"rose","group":3,"hexcode":"1F339","order":2682,"shortcodes":["rose"],"tags":["flower"],"unicode":"🌹"},{"annotation":"wilted flower","group":3,"hexcode":"1F940","order":2683,"shortcodes":["wilted_rose"],"tags":["flower","wilted"],"unicode":"🥀"},{"annotation":"hibiscus","group":3,"hexcode":"1F33A","order":2684,"shortcodes":["hibiscus"],"tags":["flower"],"unicode":"🌺"},{"annotation":"sunflower","group":3,"hexcode":"1F33B","order":2685,"shortcodes":["sunflower"],"tags":["flower","sun"],"unicode":"🌻"},{"annotation":"blossom","group":3,"hexcode":"1F33C","order":2686,"shortcodes":["blossom"],"tags":["flower"],"unicode":"🌼"},{"annotation":"tulip","group":3,"hexcode":"1F337","order":2687,"shortcodes":["tulip"],"tags":["flower"],"unicode":"🌷"},{"annotation":"seedling","group":3,"hexcode":"1F331","order":2688,"shortcodes":["seedling"],"tags":["young"],"unicode":"🌱"},{"annotation":"evergreen tree","group":3,"hexcode":"1F332","order":2689,"shortcodes":["evergreen_tree"],"tags":["tree"],"unicode":"🌲"},{"annotation":"deciduous tree","group":3,"hexcode":"1F333","order":2690,"shortcodes":["deciduous_tree"],"tags":["deciduous","shedding","tree"],"unicode":"🌳"},{"annotation":"palm tree","group":3,"hexcode":"1F334","order":2691,"shortcodes":["palm_tree"],"tags":["palm","tree"],"unicode":"🌴"},{"annotation":"cactus","group":3,"hexcode":"1F335","order":2692,"shortcodes":["cactus"],"tags":["plant"],"unicode":"🌵"},{"annotation":"sheaf of rice","group":3,"hexcode":"1F33E","order":2693,"shortcodes":["ear_of_rice"],"tags":["ear","grain","rice"],"unicode":"🌾"},{"annotation":"herb","group":3,"hexcode":"1F33F","order":2694,"shortcodes":["herb"],"tags":["leaf"],"unicode":"🌿"},{"annotation":"shamrock","group":3,"hexcode":"2618","order":2696,"shortcodes":["shamrock"],"tags":["plant"],"unicode":"☘︎"},{"annotation":"four leaf clover","group":3,"hexcode":"1F340","order":2697,"shortcodes":["four_leaf_clover"],"tags":["4","clover","four","four-leaf clover","leaf"],"unicode":"🍀"},{"annotation":"maple leaf","group":3,"hexcode":"1F341","order":2698,"shortcodes":["maple_leaf"],"tags":["falling","leaf","maple"],"unicode":"🍁"},{"annotation":"fallen leaf","group":3,"hexcode":"1F342","order":2699,"shortcodes":["fallen_leaf"],"tags":["falling","leaf"],"unicode":"🍂"},{"annotation":"leaf fluttering in wind","group":3,"hexcode":"1F343","order":2700,"shortcodes":["leaves"],"tags":["blow","flutter","leaf","wind"],"unicode":"🍃"},{"annotation":"grapes","group":4,"hexcode":"1F347","order":2701,"shortcodes":["grapes"],"tags":["fruit","grape"],"unicode":"🍇"},{"annotation":"melon","group":4,"hexcode":"1F348","order":2702,"shortcodes":["melon"],"tags":["fruit"],"unicode":"🍈"},{"annotation":"watermelon","group":4,"hexcode":"1F349","order":2703,"shortcodes":["watermelon"],"tags":["fruit"],"unicode":"🍉"},{"annotation":"tangerine","group":4,"hexcode":"1F34A","order":2704,"shortcodes":["tangerine"],"tags":["fruit","orange"],"unicode":"🍊"},{"annotation":"lemon","group":4,"hexcode":"1F34B","order":2705,"shortcodes":["lemon"],"tags":["citrus","fruit"],"unicode":"🍋"},{"annotation":"banana","group":4,"hexcode":"1F34C","order":2706,"shortcodes":["banana"],"tags":["fruit"],"unicode":"🍌"},{"annotation":"pineapple","group":4,"hexcode":"1F34D","order":2707,"shortcodes":["pineapple"],"tags":["fruit"],"unicode":"🍍"},{"annotation":"mango","group":4,"hexcode":"1F96D","order":2708,"shortcodes":["mango"],"tags":["fruit","tropical"],"unicode":"🥭"},{"annotation":"red apple","group":4,"hexcode":"1F34E","order":2709,"shortcodes":["apple"],"tags":["apple","fruit","red"],"unicode":"🍎"},{"annotation":"green apple","group":4,"hexcode":"1F34F","order":2710,"shortcodes":["green_apple"],"tags":["apple","fruit","green"],"unicode":"🍏"},{"annotation":"pear","group":4,"hexcode":"1F350","order":2711,"shortcodes":["pear"],"tags":["fruit"],"unicode":"🍐"},{"annotation":"peach","group":4,"hexcode":"1F351","order":2712,"shortcodes":["peach"],"tags":["fruit"],"unicode":"🍑"},{"annotation":"cherries","group":4,"hexcode":"1F352","order":2713,"shortcodes":["cherries"],"tags":["berries","cherry","fruit","red"],"unicode":"🍒"},{"annotation":"strawberry","group":4,"hexcode":"1F353","order":2714,"shortcodes":["strawberry"],"tags":["berry","fruit"],"unicode":"🍓"},{"annotation":"kiwi fruit","group":4,"hexcode":"1F95D","order":2715,"shortcodes":["kiwi"],"tags":["food","fruit","kiwi"],"unicode":"🥝"},{"annotation":"tomato","group":4,"hexcode":"1F345","order":2716,"shortcodes":["tomato"],"tags":["fruit","vegetable"],"unicode":"🍅"},{"annotation":"coconut","group":4,"hexcode":"1F965","order":2717,"shortcodes":["coconut"],"tags":["palm","piña colada"],"unicode":"🥥"},{"annotation":"avocado","group":4,"hexcode":"1F951","order":2718,"shortcodes":["avocado"],"tags":["food","fruit"],"unicode":"🥑"},{"annotation":"eggplant","group":4,"hexcode":"1F346","order":2719,"shortcodes":["eggplant"],"tags":["aubergine","vegetable"],"unicode":"🍆"},{"annotation":"potato","group":4,"hexcode":"1F954","order":2720,"shortcodes":["potato"],"tags":["food","vegetable"],"unicode":"🥔"},{"annotation":"carrot","group":4,"hexcode":"1F955","order":2721,"shortcodes":["carrot"],"tags":["food","vegetable"],"unicode":"🥕"},{"annotation":"ear of corn","group":4,"hexcode":"1F33D","order":2722,"shortcodes":["corn"],"tags":["corn","ear","maize","maze"],"unicode":"🌽"},{"annotation":"hot pepper","group":4,"hexcode":"1F336","order":2724,"shortcodes":["hot_pepper"],"tags":["hot","pepper"],"unicode":"🌶︎"},{"annotation":"cucumber","group":4,"hexcode":"1F952","order":2725,"shortcodes":["cucumber"],"tags":["food","pickle","vegetable"],"unicode":"🥒"},{"annotation":"leafy green","group":4,"hexcode":"1F96C","order":2726,"shortcodes":["leafy_green"],"tags":["bok choy","cabbage","kale","lettuce"],"unicode":"🥬"},{"annotation":"broccoli","group":4,"hexcode":"1F966","order":2727,"shortcodes":["broccoli"],"tags":["wild cabbage"],"unicode":"🥦"},{"annotation":"garlic","group":4,"hexcode":"1F9C4","order":2728,"shortcodes":["garlic"],"tags":["flavoring"],"unicode":"🧄"},{"annotation":"onion","group":4,"hexcode":"1F9C5","order":2729,"shortcodes":["onion"],"tags":["flavoring"],"unicode":"🧅"},{"annotation":"mushroom","group":4,"hexcode":"1F344","order":2730,"shortcodes":["mushroom"],"tags":["toadstool"],"unicode":"🍄"},{"annotation":"peanuts","group":4,"hexcode":"1F95C","order":2731,"shortcodes":["peanuts"],"tags":["food","nut","peanut","vegetable"],"unicode":"🥜"},{"annotation":"chestnut","group":4,"hexcode":"1F330","order":2732,"shortcodes":["chestnut"],"tags":["plant"],"unicode":"🌰"},{"annotation":"bread","group":4,"hexcode":"1F35E","order":2733,"shortcodes":["bread"],"tags":["loaf"],"unicode":"🍞"},{"annotation":"croissant","group":4,"hexcode":"1F950","order":2734,"shortcodes":["croissant"],"tags":["bread","breakfast","food","french","roll"],"unicode":"🥐"},{"annotation":"baguette bread","group":4,"hexcode":"1F956","order":2735,"shortcodes":["french_bread"],"tags":["baguette","bread","food","french"],"unicode":"🥖"},{"annotation":"pretzel","group":4,"hexcode":"1F968","order":2736,"shortcodes":["pretzel"],"tags":["twisted"],"unicode":"🥨"},{"annotation":"bagel","group":4,"hexcode":"1F96F","order":2737,"shortcodes":["bagel"],"tags":["bakery","breakfast","schmear"],"unicode":"🥯"},{"annotation":"pancakes","group":4,"hexcode":"1F95E","order":2738,"shortcodes":["pancakes"],"tags":["breakfast","crêpe","food","hotcake","pancake"],"unicode":"🥞"},{"annotation":"waffle","group":4,"hexcode":"1F9C7","order":2739,"shortcodes":["waffle"],"tags":["breakfast","indecisive","iron"],"unicode":"🧇"},{"annotation":"cheese wedge","group":4,"hexcode":"1F9C0","order":2740,"shortcodes":["cheese"],"tags":["cheese"],"unicode":"🧀"},{"annotation":"meat on bone","group":4,"hexcode":"1F356","order":2741,"shortcodes":["meat_on_bone"],"tags":["bone","meat"],"unicode":"🍖"},{"annotation":"poultry leg","group":4,"hexcode":"1F357","order":2742,"shortcodes":["poultry_leg"],"tags":["bone","chicken","drumstick","leg","poultry"],"unicode":"🍗"},{"annotation":"cut of meat","group":4,"hexcode":"1F969","order":2743,"shortcodes":["cut_of_meat"],"tags":["chop","lambchop","porkchop","steak"],"unicode":"🥩"},{"annotation":"bacon","group":4,"hexcode":"1F953","order":2744,"shortcodes":["bacon"],"tags":["breakfast","food","meat"],"unicode":"🥓"},{"annotation":"hamburger","group":4,"hexcode":"1F354","order":2745,"shortcodes":["hamburger"],"tags":["burger"],"unicode":"🍔"},{"annotation":"french fries","group":4,"hexcode":"1F35F","order":2746,"shortcodes":["fries"],"tags":["french","fries"],"unicode":"🍟"},{"annotation":"pizza","group":4,"hexcode":"1F355","order":2747,"shortcodes":["pizza"],"tags":["cheese","slice"],"unicode":"🍕"},{"annotation":"hot dog","group":4,"hexcode":"1F32D","order":2748,"shortcodes":["hotdog"],"tags":["frankfurter","hotdog","sausage"],"unicode":"🌭"},{"annotation":"sandwich","group":4,"hexcode":"1F96A","order":2749,"shortcodes":["sandwich"],"tags":["bread"],"unicode":"🥪"},{"annotation":"taco","group":4,"hexcode":"1F32E","order":2750,"shortcodes":["taco"],"tags":["mexican"],"unicode":"🌮"},{"annotation":"burrito","group":4,"hexcode":"1F32F","order":2751,"shortcodes":["burrito"],"tags":["mexican","wrap"],"unicode":"🌯"},{"annotation":"stuffed flatbread","group":4,"hexcode":"1F959","order":2752,"shortcodes":["stuffed_flatbread"],"tags":["falafel","flatbread","food","gyro","kebab","stuffed"],"unicode":"🥙"},{"annotation":"falafel","group":4,"hexcode":"1F9C6","order":2753,"shortcodes":["falafel"],"tags":["chickpea","meatball"],"unicode":"🧆"},{"annotation":"egg","group":4,"hexcode":"1F95A","order":2754,"shortcodes":["egg"],"tags":["breakfast","food"],"unicode":"🥚"},{"annotation":"cooking","group":4,"hexcode":"1F373","order":2755,"shortcodes":["cooking"],"tags":["breakfast","egg","frying","pan"],"unicode":"🍳"},{"annotation":"shallow pan of food","group":4,"hexcode":"1F958","order":2756,"shortcodes":["shallow_pan_of_food"],"tags":["casserole","food","paella","pan","shallow"],"unicode":"🥘"},{"annotation":"pot of food","group":4,"hexcode":"1F372","order":2757,"shortcodes":["stew"],"tags":["pot","stew"],"unicode":"🍲"},{"annotation":"bowl with spoon","group":4,"hexcode":"1F963","order":2758,"shortcodes":["bowl_spoon"],"tags":["breakfast","cereal","congee"],"unicode":"🥣"},{"annotation":"green salad","group":4,"hexcode":"1F957","order":2759,"shortcodes":["salad"],"tags":["food","green","salad"],"unicode":"🥗"},{"annotation":"popcorn","group":4,"hexcode":"1F37F","order":2760,"shortcodes":["popcorn"],"tags":["popcorn"],"unicode":"🍿"},{"annotation":"butter","group":4,"hexcode":"1F9C8","order":2761,"shortcodes":["butter"],"tags":["dairy"],"unicode":"🧈"},{"annotation":"salt","group":4,"hexcode":"1F9C2","order":2762,"shortcodes":["salt"],"tags":["condiment","shaker"],"unicode":"🧂"},{"annotation":"canned food","group":4,"hexcode":"1F96B","order":2763,"shortcodes":["canned_food"],"tags":["can"],"unicode":"🥫"},{"annotation":"bento box","group":4,"hexcode":"1F371","order":2764,"shortcodes":["bento"],"tags":["bento","box"],"unicode":"🍱"},{"annotation":"rice cracker","group":4,"hexcode":"1F358","order":2765,"shortcodes":["rice_cracker"],"tags":["cracker","rice"],"unicode":"🍘"},{"annotation":"rice ball","group":4,"hexcode":"1F359","order":2766,"shortcodes":["rice_ball"],"tags":["ball","japanese","rice"],"unicode":"🍙"},{"annotation":"cooked rice","group":4,"hexcode":"1F35A","order":2767,"shortcodes":["rice"],"tags":["cooked","rice"],"unicode":"🍚"},{"annotation":"curry rice","group":4,"hexcode":"1F35B","order":2768,"shortcodes":["curry"],"tags":["curry","rice"],"unicode":"🍛"},{"annotation":"steaming bowl","group":4,"hexcode":"1F35C","order":2769,"shortcodes":["ramen"],"tags":["bowl","noodle","ramen","steaming"],"unicode":"🍜"},{"annotation":"spaghetti","group":4,"hexcode":"1F35D","order":2770,"shortcodes":["spaghetti"],"tags":["pasta"],"unicode":"🍝"},{"annotation":"roasted sweet potato","group":4,"hexcode":"1F360","order":2771,"shortcodes":["sweet_potato"],"tags":["potato","roasted","sweet"],"unicode":"🍠"},{"annotation":"oden","group":4,"hexcode":"1F362","order":2772,"shortcodes":["oden"],"tags":["kebab","seafood","skewer","stick"],"unicode":"🍢"},{"annotation":"sushi","group":4,"hexcode":"1F363","order":2773,"shortcodes":["sushi"],"tags":["sushi"],"unicode":"🍣"},{"annotation":"fried shrimp","group":4,"hexcode":"1F364","order":2774,"shortcodes":["fried_shrimp"],"tags":["fried","prawn","shrimp","tempura"],"unicode":"🍤"},{"annotation":"fish cake with swirl","group":4,"hexcode":"1F365","order":2775,"shortcodes":["fish_cake"],"tags":["cake","fish","pastry","swirl"],"unicode":"🍥"},{"annotation":"moon cake","group":4,"hexcode":"1F96E","order":2776,"shortcodes":["moon_cake"],"tags":["autumn","festival","yuèbǐng"],"unicode":"🥮"},{"annotation":"dango","group":4,"hexcode":"1F361","order":2777,"shortcodes":["dango"],"tags":["dessert","japanese","skewer","stick","sweet"],"unicode":"🍡"},{"annotation":"dumpling","group":4,"hexcode":"1F95F","order":2778,"shortcodes":["dumpling"],"tags":["empanada","gyōza","jiaozi","pierogi","potsticker"],"unicode":"🥟"},{"annotation":"fortune cookie","group":4,"hexcode":"1F960","order":2779,"shortcodes":["fortune_cookie"],"tags":["prophecy"],"unicode":"🥠"},{"annotation":"takeout box","group":4,"hexcode":"1F961","order":2780,"shortcodes":["takeout_box"],"tags":["oyster pail"],"unicode":"🥡"},{"annotation":"crab","group":4,"hexcode":"1F980","order":2781,"shortcodes":["crab"],"tags":["cancer","zodiac"],"unicode":"🦀"},{"annotation":"lobster","group":4,"hexcode":"1F99E","order":2782,"shortcodes":["lobster"],"tags":["bisque","claws","seafood"],"unicode":"🦞"},{"annotation":"shrimp","group":4,"hexcode":"1F990","order":2783,"shortcodes":["shrimp"],"tags":["food","shellfish","small"],"unicode":"🦐"},{"annotation":"squid","group":4,"hexcode":"1F991","order":2784,"shortcodes":["squid"],"tags":["food","molusc"],"unicode":"🦑"},{"annotation":"oyster","group":4,"hexcode":"1F9AA","order":2785,"shortcodes":["oyster"],"tags":["diving","pearl"],"unicode":"🦪"},{"annotation":"soft ice cream","group":4,"hexcode":"1F366","order":2786,"shortcodes":["icecream"],"tags":["cream","dessert","ice","icecream","soft","sweet"],"unicode":"🍦"},{"annotation":"shaved ice","group":4,"hexcode":"1F367","order":2787,"shortcodes":["shaved_ice"],"tags":["dessert","ice","shaved","sweet"],"unicode":"🍧"},{"annotation":"ice cream","group":4,"hexcode":"1F368","order":2788,"shortcodes":["ice_cream"],"tags":["cream","dessert","ice","sweet"],"unicode":"🍨"},{"annotation":"doughnut","group":4,"hexcode":"1F369","order":2789,"shortcodes":["doughnut"],"tags":["breakfast","dessert","donut","sweet"],"unicode":"🍩"},{"annotation":"cookie","group":4,"hexcode":"1F36A","order":2790,"shortcodes":["cookie"],"tags":["dessert","sweet"],"unicode":"🍪"},{"annotation":"birthday cake","group":4,"hexcode":"1F382","order":2791,"shortcodes":["birthday"],"tags":["birthday","cake","celebration","dessert","pastry","sweet"],"unicode":"🎂"},{"annotation":"shortcake","group":4,"hexcode":"1F370","order":2792,"shortcodes":["cake"],"tags":["cake","dessert","pastry","slice","sweet"],"unicode":"🍰"},{"annotation":"cupcake","group":4,"hexcode":"1F9C1","order":2793,"shortcodes":["cupcake"],"tags":["bakery","sweet"],"unicode":"🧁"},{"annotation":"pie","group":4,"hexcode":"1F967","order":2794,"shortcodes":["pie"],"tags":["filling","pastry"],"unicode":"🥧"},{"annotation":"chocolate bar","group":4,"hexcode":"1F36B","order":2795,"shortcodes":["chocolate_bar"],"tags":["bar","chocolate","dessert","sweet"],"unicode":"🍫"},{"annotation":"candy","group":4,"hexcode":"1F36C","order":2796,"shortcodes":["candy"],"tags":["dessert","sweet"],"unicode":"🍬"},{"annotation":"lollipop","group":4,"hexcode":"1F36D","order":2797,"shortcodes":["lollipop"],"tags":["candy","dessert","sweet"],"unicode":"🍭"},{"annotation":"custard","group":4,"hexcode":"1F36E","order":2798,"shortcodes":["custard"],"tags":["dessert","pudding","sweet"],"unicode":"🍮"},{"annotation":"honey pot","group":4,"hexcode":"1F36F","order":2799,"shortcodes":["honey_pot"],"tags":["honey","honeypot","pot","sweet"],"unicode":"🍯"},{"annotation":"baby bottle","group":4,"hexcode":"1F37C","order":2800,"shortcodes":["baby_bottle"],"tags":["baby","bottle","drink","milk"],"unicode":"🍼"},{"annotation":"glass of milk","group":4,"hexcode":"1F95B","order":2801,"shortcodes":["milk"],"tags":["drink","glass","milk"],"unicode":"🥛"},{"annotation":"hot beverage","group":4,"hexcode":"2615","order":2802,"shortcodes":["coffee"],"tags":["beverage","coffee","drink","hot","steaming","tea"],"unicode":"☕️"},{"annotation":"teacup without handle","group":4,"hexcode":"1F375","order":2803,"shortcodes":["tea"],"tags":["beverage","cup","drink","tea","teacup"],"unicode":"🍵"},{"annotation":"sake","group":4,"hexcode":"1F376","order":2804,"shortcodes":["sake"],"tags":["bar","beverage","bottle","cup","drink"],"unicode":"🍶"},{"annotation":"bottle with popping cork","group":4,"hexcode":"1F37E","order":2805,"shortcodes":["champagne"],"tags":["bar","bottle","cork","drink","popping"],"unicode":"🍾"},{"annotation":"wine glass","group":4,"hexcode":"1F377","order":2806,"shortcodes":["wine_glass"],"tags":["bar","beverage","drink","glass","wine"],"unicode":"🍷"},{"annotation":"cocktail glass","group":4,"hexcode":"1F378","order":2807,"shortcodes":["cocktail"],"tags":["bar","cocktail","drink","glass"],"unicode":"🍸️"},{"annotation":"tropical drink","group":4,"hexcode":"1F379","order":2808,"shortcodes":["tropical_drink"],"tags":["bar","drink","tropical"],"unicode":"🍹"},{"annotation":"beer mug","group":4,"hexcode":"1F37A","order":2809,"shortcodes":["beer"],"tags":["bar","beer","drink","mug"],"unicode":"🍺"},{"annotation":"clinking beer mugs","group":4,"hexcode":"1F37B","order":2810,"shortcodes":["beers"],"tags":["bar","beer","clink","drink","mug"],"unicode":"🍻"},{"annotation":"clinking glasses","group":4,"hexcode":"1F942","order":2811,"shortcodes":["champagne_glass"],"tags":["celebrate","clink","drink","glass"],"unicode":"🥂"},{"annotation":"tumbler glass","group":4,"hexcode":"1F943","order":2812,"shortcodes":["tumbler_glass"],"tags":["glass","liquor","shot","tumbler","whisky"],"unicode":"🥃"},{"annotation":"cup with straw","group":4,"hexcode":"1F964","order":2813,"shortcodes":["cup_straw"],"tags":["juice","soda"],"unicode":"🥤"},{"annotation":"beverage box","group":4,"hexcode":"1F9C3","order":2814,"shortcodes":["beverage_box","juice_box"],"tags":["beverage","box","juice","straw","sweet"],"unicode":"🧃"},{"annotation":"mate","group":4,"hexcode":"1F9C9","order":2815,"shortcodes":["mate","yerba_mate"],"tags":["drink"],"unicode":"🧉"},{"annotation":"ice","group":4,"hexcode":"1F9CA","order":2816,"shortcodes":["ice"],"tags":["cold","ice cube","iceberg"],"unicode":"🧊"},{"annotation":"chopsticks","group":4,"hexcode":"1F962","order":2817,"shortcodes":["chopsticks"],"tags":["hashi"],"unicode":"🥢"},{"annotation":"fork and knife with plate","group":4,"hexcode":"1F37D","order":2819,"shortcodes":["fork_knife_plate"],"tags":["cooking","fork","knife","plate"],"unicode":"🍽︎"},{"annotation":"fork and knife","group":4,"hexcode":"1F374","order":2820,"shortcodes":["utensils"],"tags":["cooking","cutlery","fork","knife"],"unicode":"🍴"},{"annotation":"spoon","group":4,"hexcode":"1F944","order":2821,"shortcodes":["spoon"],"tags":["tableware"],"unicode":"🥄"},{"annotation":"kitchen knife","group":4,"hexcode":"1F52A","order":2822,"shortcodes":["knife"],"tags":["cooking","hocho","knife","tool","weapon"],"unicode":"🔪"},{"annotation":"amphora","group":4,"hexcode":"1F3FA","order":2823,"shortcodes":["amphora"],"tags":["aquarius","cooking","drink","jug","zodiac"],"unicode":"🏺"},{"annotation":"globe showing Europe-Africa","group":5,"hexcode":"1F30D","order":2824,"shortcodes":["earth_africa"],"tags":["africa","earth","europe","globe","globe showing europe-africa","world"],"unicode":"🌍️"},{"annotation":"globe showing Americas","group":5,"hexcode":"1F30E","order":2825,"shortcodes":["earth_americas"],"tags":["americas","earth","globe","globe showing americas","world"],"unicode":"🌎️"},{"annotation":"globe showing Asia-Australia","group":5,"hexcode":"1F30F","order":2826,"shortcodes":["earth_asia"],"tags":["asia","australia","earth","globe","globe showing asia-australia","world"],"unicode":"🌏️"},{"annotation":"globe with meridians","group":5,"hexcode":"1F310","order":2827,"shortcodes":["globe"],"tags":["earth","globe","meridians","world"],"unicode":"🌐"},{"annotation":"world map","group":5,"hexcode":"1F5FA","order":2829,"shortcodes":["map"],"tags":["map","world"],"unicode":"🗺︎"},{"annotation":"map of Japan","group":5,"hexcode":"1F5FE","order":2830,"shortcodes":["japan"],"tags":["japan","map","map of japan"],"unicode":"🗾"},{"annotation":"compass","group":5,"hexcode":"1F9ED","order":2831,"shortcodes":["compass"],"tags":["magnetic","navigation","orienteering"],"unicode":"🧭"},{"annotation":"snow-capped mountain","group":5,"hexcode":"1F3D4","order":2833,"shortcodes":["snowy_mountain"],"tags":["cold","mountain","snow"],"unicode":"🏔︎"},{"annotation":"mountain","group":5,"hexcode":"26F0","order":2835,"shortcodes":["mountain"],"tags":["mountain"],"unicode":"⛰︎"},{"annotation":"volcano","group":5,"hexcode":"1F30B","order":2836,"shortcodes":["volcano"],"tags":["eruption","mountain"],"unicode":"🌋"},{"annotation":"mount fuji","group":5,"hexcode":"1F5FB","order":2837,"shortcodes":["mount_fuji"],"tags":["fuji","mountain"],"unicode":"🗻"},{"annotation":"camping","group":5,"hexcode":"1F3D5","order":2839,"shortcodes":["camping"],"tags":["camping"],"unicode":"🏕︎"},{"annotation":"beach with umbrella","group":5,"hexcode":"1F3D6","order":2841,"shortcodes":["beach"],"tags":["beach","umbrella"],"unicode":"🏖︎"},{"annotation":"desert","group":5,"hexcode":"1F3DC","order":2843,"shortcodes":["desert"],"tags":["desert"],"unicode":"🏜︎"},{"annotation":"desert island","group":5,"hexcode":"1F3DD","order":2845,"shortcodes":["island"],"tags":["desert","island"],"unicode":"🏝︎"},{"annotation":"national park","group":5,"hexcode":"1F3DE","order":2847,"shortcodes":["park"],"tags":["park"],"unicode":"🏞︎"},{"annotation":"stadium","group":5,"hexcode":"1F3DF","order":2849,"shortcodes":["stadium"],"tags":["stadium"],"unicode":"🏟︎"},{"annotation":"classical building","group":5,"hexcode":"1F3DB","order":2851,"shortcodes":["classical_building"],"tags":["classical"],"unicode":"🏛︎"},{"annotation":"building construction","group":5,"hexcode":"1F3D7","order":2853,"shortcodes":["construction_site"],"tags":["construction"],"unicode":"🏗︎"},{"annotation":"brick","group":5,"hexcode":"1F9F1","order":2854,"shortcodes":["brick"],"tags":["bricks","clay","mortar","wall"],"unicode":"🧱"},{"annotation":"houses","group":5,"hexcode":"1F3D8","order":2856,"shortcodes":["homes"],"tags":["houses"],"unicode":"🏘︎"},{"annotation":"derelict house","group":5,"hexcode":"1F3DA","order":2858,"shortcodes":["house_abandoned"],"tags":["derelict","house"],"unicode":"🏚︎"},{"annotation":"house","group":5,"hexcode":"1F3E0","order":2859,"shortcodes":["house"],"tags":["home"],"unicode":"🏠️"},{"annotation":"house with garden","group":5,"hexcode":"1F3E1","order":2860,"shortcodes":["house_garden"],"tags":["garden","home","house"],"unicode":"🏡"},{"annotation":"office building","group":5,"hexcode":"1F3E2","order":2861,"shortcodes":["office"],"tags":["building"],"unicode":"🏢"},{"annotation":"Japanese post office","group":5,"hexcode":"1F3E3","order":2862,"shortcodes":["ja_post_office"],"tags":["japanese","japanese post office","post"],"unicode":"🏣"},{"annotation":"post office","group":5,"hexcode":"1F3E4","order":2863,"shortcodes":["post_office"],"tags":["european","post"],"unicode":"🏤"},{"annotation":"hospital","group":5,"hexcode":"1F3E5","order":2864,"shortcodes":["hospital"],"tags":["doctor","medicine"],"unicode":"🏥"},{"annotation":"bank","group":5,"hexcode":"1F3E6","order":2865,"shortcodes":["bank"],"tags":["building"],"unicode":"🏦"},{"annotation":"hotel","group":5,"hexcode":"1F3E8","order":2866,"shortcodes":["hotel"],"tags":["building"],"unicode":"🏨"},{"annotation":"love hotel","group":5,"hexcode":"1F3E9","order":2867,"shortcodes":["love_hotel"],"tags":["hotel","love"],"unicode":"🏩"},{"annotation":"convenience store","group":5,"hexcode":"1F3EA","order":2868,"shortcodes":["convenience_store"],"tags":["convenience","store"],"unicode":"🏪"},{"annotation":"school","group":5,"hexcode":"1F3EB","order":2869,"shortcodes":["school"],"tags":["building"],"unicode":"🏫"},{"annotation":"department store","group":5,"hexcode":"1F3EC","order":2870,"shortcodes":["department_store"],"tags":["department","store"],"unicode":"🏬"},{"annotation":"factory","group":5,"hexcode":"1F3ED","order":2871,"shortcodes":["factory"],"tags":["building"],"unicode":"🏭️"},{"annotation":"Japanese castle","group":5,"hexcode":"1F3EF","order":2872,"shortcodes":["japanese_castle"],"tags":["castle","japanese"],"unicode":"🏯"},{"annotation":"castle","group":5,"hexcode":"1F3F0","order":2873,"shortcodes":["castle","european_castle"],"tags":["european"],"unicode":"🏰"},{"annotation":"wedding","group":5,"hexcode":"1F492","order":2874,"shortcodes":["wedding"],"tags":["chapel","romance"],"unicode":"💒"},{"annotation":"Tokyo tower","group":5,"hexcode":"1F5FC","order":2875,"shortcodes":["tokyo_tower"],"tags":["tokyo","tower"],"unicode":"🗼"},{"annotation":"Statue of Liberty","group":5,"hexcode":"1F5FD","order":2876,"shortcodes":["statue_of_liberty"],"tags":["liberty","statue","statue of liberty"],"unicode":"🗽"},{"annotation":"church","group":5,"hexcode":"26EA","order":2877,"shortcodes":["church"],"tags":["christian","cross","religion"],"unicode":"⛪️"},{"annotation":"mosque","group":5,"hexcode":"1F54C","order":2878,"shortcodes":["mosque"],"tags":["islam","muslim","religion"],"unicode":"🕌"},{"annotation":"hindu temple","group":5,"hexcode":"1F6D5","order":2879,"shortcodes":["hindu_temple"],"tags":["hindu","temple"],"unicode":"🛕"},{"annotation":"synagogue","group":5,"hexcode":"1F54D","order":2880,"shortcodes":["synagogue"],"tags":["jew","jewish","religion","temple"],"unicode":"🕍"},{"annotation":"shinto shrine","group":5,"hexcode":"26E9","order":2882,"shortcodes":["shinto_shrine"],"tags":["religion","shinto","shrine"],"unicode":"⛩︎"},{"annotation":"kaaba","group":5,"hexcode":"1F54B","order":2883,"shortcodes":["kaaba"],"tags":["islam","muslim","religion"],"unicode":"🕋"},{"annotation":"fountain","group":5,"hexcode":"26F2","order":2884,"shortcodes":["fountain"],"tags":["fountain"],"unicode":"⛲️"},{"annotation":"tent","group":5,"hexcode":"26FA","order":2885,"shortcodes":["tent"],"tags":["camping"],"unicode":"⛺️"},{"annotation":"foggy","group":5,"hexcode":"1F301","order":2886,"shortcodes":["foggy"],"tags":["fog"],"unicode":"🌁"},{"annotation":"night with stars","group":5,"hexcode":"1F303","order":2887,"shortcodes":["night_stars"],"tags":["night","star"],"unicode":"🌃"},{"annotation":"cityscape","group":5,"hexcode":"1F3D9","order":2889,"shortcodes":["cityscape"],"tags":["city"],"unicode":"🏙︎"},{"annotation":"sunrise over mountains","group":5,"hexcode":"1F304","order":2890,"shortcodes":["sunrise_over_mountains"],"tags":["morning","mountain","sun","sunrise"],"unicode":"🌄"},{"annotation":"sunrise","group":5,"hexcode":"1F305","order":2891,"shortcodes":["sunrise"],"tags":["morning","sun"],"unicode":"🌅"},{"annotation":"cityscape at dusk","group":5,"hexcode":"1F306","order":2892,"shortcodes":["dusk"],"tags":["city","dusk","evening","landscape","sunset"],"unicode":"🌆"},{"annotation":"sunset","group":5,"hexcode":"1F307","order":2893,"shortcodes":["sunset"],"tags":["dusk","sun"],"unicode":"🌇"},{"annotation":"bridge at night","group":5,"hexcode":"1F309","order":2894,"shortcodes":["bridge_at_night"],"tags":["bridge","night"],"unicode":"🌉"},{"annotation":"hot springs","group":5,"hexcode":"2668","order":2896,"shortcodes":["hotsprings"],"tags":["hot","hotsprings","springs","steaming"],"unicode":"♨︎"},{"annotation":"carousel horse","group":5,"hexcode":"1F3A0","order":2897,"shortcodes":["carousel_horse"],"tags":["carousel","horse"],"unicode":"🎠"},{"annotation":"ferris wheel","group":5,"hexcode":"1F3A1","order":2898,"shortcodes":["ferris_wheel"],"tags":["amusement park","ferris","wheel"],"unicode":"🎡"},{"annotation":"roller coaster","group":5,"hexcode":"1F3A2","order":2899,"shortcodes":["roller_coaster"],"tags":["amusement park","coaster","roller"],"unicode":"🎢"},{"annotation":"barber pole","group":5,"hexcode":"1F488","order":2900,"shortcodes":["barber"],"tags":["barber","haircut","pole"],"unicode":"💈"},{"annotation":"circus tent","group":5,"hexcode":"1F3AA","order":2901,"shortcodes":["circus_tent"],"tags":["circus","tent"],"unicode":"🎪"},{"annotation":"locomotive","group":5,"hexcode":"1F682","order":2902,"shortcodes":["steam_locomotive"],"tags":["engine","railway","steam","train"],"unicode":"🚂"},{"annotation":"railway car","group":5,"hexcode":"1F683","order":2903,"shortcodes":["railway_car"],"tags":["car","electric","railway","train","tram","trolleybus"],"unicode":"🚃"},{"annotation":"high-speed train","group":5,"hexcode":"1F684","order":2904,"shortcodes":["bullettrain_side"],"tags":["railway","shinkansen","speed","train"],"unicode":"🚄"},{"annotation":"bullet train","group":5,"hexcode":"1F685","order":2905,"shortcodes":["bullettrain"],"tags":["bullet","railway","shinkansen","speed","train"],"unicode":"🚅"},{"annotation":"train","group":5,"hexcode":"1F686","order":2906,"shortcodes":["train"],"tags":["railway"],"unicode":"🚆"},{"annotation":"metro","group":5,"hexcode":"1F687","order":2907,"shortcodes":["metro"],"tags":["subway"],"unicode":"🚇️"},{"annotation":"light rail","group":5,"hexcode":"1F688","order":2908,"shortcodes":["light_rail"],"tags":["railway"],"unicode":"🚈"},{"annotation":"station","group":5,"hexcode":"1F689","order":2909,"shortcodes":["station"],"tags":["railway","train"],"unicode":"🚉"},{"annotation":"tram","group":5,"hexcode":"1F68A","order":2910,"shortcodes":["tram"],"tags":["trolleybus"],"unicode":"🚊"},{"annotation":"monorail","group":5,"hexcode":"1F69D","order":2911,"shortcodes":["monorail"],"tags":["vehicle"],"unicode":"🚝"},{"annotation":"mountain railway","group":5,"hexcode":"1F69E","order":2912,"shortcodes":["mountain_railway"],"tags":["car","mountain","railway"],"unicode":"🚞"},{"annotation":"tram car","group":5,"hexcode":"1F68B","order":2913,"shortcodes":["tram_car"],"tags":["car","tram","trolleybus"],"unicode":"🚋"},{"annotation":"bus","group":5,"hexcode":"1F68C","order":2914,"shortcodes":["bus"],"tags":["vehicle"],"unicode":"🚌"},{"annotation":"oncoming bus","group":5,"hexcode":"1F68D","order":2915,"shortcodes":["oncoming_bus"],"tags":["bus","oncoming"],"unicode":"🚍️"},{"annotation":"trolleybus","group":5,"hexcode":"1F68E","order":2916,"shortcodes":["trolleybus"],"tags":["bus","tram","trolley"],"unicode":"🚎"},{"annotation":"minibus","group":5,"hexcode":"1F690","order":2917,"shortcodes":["minibus"],"tags":["bus"],"unicode":"🚐"},{"annotation":"ambulance","group":5,"hexcode":"1F691","order":2918,"shortcodes":["ambulance"],"tags":["vehicle"],"unicode":"🚑️"},{"annotation":"fire engine","group":5,"hexcode":"1F692","order":2919,"shortcodes":["fire_engine"],"tags":["engine","fire","truck"],"unicode":"🚒"},{"annotation":"police car","group":5,"hexcode":"1F693","order":2920,"shortcodes":["police_car"],"tags":["car","patrol","police"],"unicode":"🚓"},{"annotation":"oncoming police car","group":5,"hexcode":"1F694","order":2921,"shortcodes":["oncoming_police_car"],"tags":["car","oncoming","police"],"unicode":"🚔️"},{"annotation":"taxi","group":5,"hexcode":"1F695","order":2922,"shortcodes":["taxi"],"tags":["vehicle"],"unicode":"🚕"},{"annotation":"oncoming taxi","group":5,"hexcode":"1F696","order":2923,"shortcodes":["oncoming_taxi"],"tags":["oncoming","taxi"],"unicode":"🚖"},{"annotation":"automobile","group":5,"hexcode":"1F697","order":2924,"shortcodes":["red_car"],"tags":["car"],"unicode":"🚗"},{"annotation":"oncoming automobile","group":5,"hexcode":"1F698","order":2925,"shortcodes":["oncoming_automobile"],"tags":["automobile","car","oncoming"],"unicode":"🚘️"},{"annotation":"sport utility vehicle","group":5,"hexcode":"1F699","order":2926,"shortcodes":["blue_car"],"tags":["recreational","sport utility"],"unicode":"🚙"},{"annotation":"delivery truck","group":5,"hexcode":"1F69A","order":2927,"shortcodes":["truck"],"tags":["delivery","truck"],"unicode":"🚚"},{"annotation":"articulated lorry","group":5,"hexcode":"1F69B","order":2928,"shortcodes":["lorry"],"tags":["lorry","semi","truck"],"unicode":"🚛"},{"annotation":"tractor","group":5,"hexcode":"1F69C","order":2929,"shortcodes":["tractor"],"tags":["vehicle"],"unicode":"🚜"},{"annotation":"racing car","group":5,"hexcode":"1F3CE","order":2931,"shortcodes":["race_car"],"tags":["car","racing"],"unicode":"🏎︎"},{"annotation":"motorcycle","group":5,"hexcode":"1F3CD","order":2933,"shortcodes":["motorcycle"],"tags":["racing"],"unicode":"🏍︎"},{"annotation":"motor scooter","group":5,"hexcode":"1F6F5","order":2934,"shortcodes":["motor_scooter"],"tags":["motor","scooter"],"unicode":"🛵"},{"annotation":"manual wheelchair","group":5,"hexcode":"1F9BD","order":2935,"shortcodes":["wheelchair"],"tags":["accessibility"],"unicode":"🦽"},{"annotation":"motorized wheelchair","group":5,"hexcode":"1F9BC","order":2936,"shortcodes":["motor_wheelchair"],"tags":["accessibility"],"unicode":"🦼"},{"annotation":"auto rickshaw","group":5,"hexcode":"1F6FA","order":2937,"shortcodes":["auto_rickshaw"],"tags":["tuk tuk"],"unicode":"🛺"},{"annotation":"bicycle","group":5,"hexcode":"1F6B2","order":2938,"shortcodes":["bike"],"tags":["bike"],"unicode":"🚲️"},{"annotation":"kick scooter","group":5,"hexcode":"1F6F4","order":2939,"shortcodes":["scooter"],"tags":["kick","scooter"],"unicode":"🛴"},{"annotation":"skateboard","group":5,"hexcode":"1F6F9","order":2940,"shortcodes":["skateboard"],"tags":["board"],"unicode":"🛹"},{"annotation":"bus stop","group":5,"hexcode":"1F68F","order":2941,"shortcodes":["bus_stop"],"tags":["bus","busstop","stop"],"unicode":"🚏"},{"annotation":"motorway","group":5,"hexcode":"1F6E3","order":2943,"shortcodes":["motorway"],"tags":["highway","road"],"unicode":"🛣︎"},{"annotation":"railway track","group":5,"hexcode":"1F6E4","order":2945,"shortcodes":["railway_track"],"tags":["railway","train"],"unicode":"🛤︎"},{"annotation":"oil drum","group":5,"hexcode":"1F6E2","order":2947,"shortcodes":["oil_drum"],"tags":["drum","oil"],"unicode":"🛢︎"},{"annotation":"fuel pump","group":5,"hexcode":"26FD","order":2948,"shortcodes":["fuel_pump"],"tags":["diesel","fuel","fuelpump","gas","pump","station"],"unicode":"⛽️"},{"annotation":"police car light","group":5,"hexcode":"1F6A8","order":2949,"shortcodes":["rotating_light","police_light"],"tags":["beacon","car","light","police","revolving"],"unicode":"🚨"},{"annotation":"horizontal traffic light","group":5,"hexcode":"1F6A5","order":2950,"shortcodes":["traffic_light"],"tags":["light","signal","traffic"],"unicode":"🚥"},{"annotation":"vertical traffic light","group":5,"hexcode":"1F6A6","order":2951,"shortcodes":["vertical_traffic_light"],"tags":["light","signal","traffic"],"unicode":"🚦"},{"annotation":"stop sign","group":5,"hexcode":"1F6D1","order":2952,"shortcodes":["stop_sign","octagonal_sign"],"tags":["octagonal","sign","stop"],"unicode":"🛑"},{"annotation":"construction","group":5,"hexcode":"1F6A7","order":2953,"shortcodes":["construction"],"tags":["barrier"],"unicode":"🚧"},{"annotation":"anchor","group":5,"hexcode":"2693","order":2954,"shortcodes":["anchor"],"tags":["ship","tool"],"unicode":"⚓️"},{"annotation":"sailboat","group":5,"hexcode":"26F5","order":2955,"shortcodes":["sailboat"],"tags":["boat","resort","sea","yacht"],"unicode":"⛵️"},{"annotation":"canoe","group":5,"hexcode":"1F6F6","order":2956,"shortcodes":["canoe"],"tags":["boat"],"unicode":"🛶"},{"annotation":"speedboat","group":5,"hexcode":"1F6A4","order":2957,"shortcodes":["speedboat"],"tags":["boat"],"unicode":"🚤"},{"annotation":"passenger ship","group":5,"hexcode":"1F6F3","order":2959,"shortcodes":["cruise_ship"],"tags":["passenger","ship"],"unicode":"🛳︎"},{"annotation":"ferry","group":5,"hexcode":"26F4","order":2961,"shortcodes":["ferry"],"tags":["boat","passenger"],"unicode":"⛴︎"},{"annotation":"motor boat","group":5,"hexcode":"1F6E5","order":2963,"shortcodes":["motorboat"],"tags":["boat","motorboat"],"unicode":"🛥︎"},{"annotation":"ship","group":5,"hexcode":"1F6A2","order":2964,"shortcodes":["ship"],"tags":["boat","passenger"],"unicode":"🚢"},{"annotation":"airplane","group":5,"hexcode":"2708","order":2966,"shortcodes":["airplane"],"tags":["aeroplane"],"unicode":"✈︎"},{"annotation":"small airplane","group":5,"hexcode":"1F6E9","order":2968,"shortcodes":["small_airplane"],"tags":["aeroplane","airplane"],"unicode":"🛩︎"},{"annotation":"airplane departure","group":5,"hexcode":"1F6EB","order":2969,"shortcodes":["airplane_departure"],"tags":["aeroplane","airplane","check-in","departure","departures"],"unicode":"🛫"},{"annotation":"airplane arrival","group":5,"hexcode":"1F6EC","order":2970,"shortcodes":["airplane_arriving"],"tags":["aeroplane","airplane","arrivals","arriving","landing"],"unicode":"🛬"},{"annotation":"parachute","group":5,"hexcode":"1FA82","order":2971,"shortcodes":["parachute"],"tags":["hang-glide","parasail","skydive"],"unicode":"🪂"},{"annotation":"seat","group":5,"hexcode":"1F4BA","order":2972,"shortcodes":["seat"],"tags":["chair"],"unicode":"💺"},{"annotation":"helicopter","group":5,"hexcode":"1F681","order":2973,"shortcodes":["helicopter"],"tags":["vehicle"],"unicode":"🚁"},{"annotation":"suspension railway","group":5,"hexcode":"1F69F","order":2974,"shortcodes":["suspension_railway"],"tags":["railway","suspension"],"unicode":"🚟"},{"annotation":"mountain cableway","group":5,"hexcode":"1F6A0","order":2975,"shortcodes":["mountain_cableway"],"tags":["cable","gondola","mountain"],"unicode":"🚠"},{"annotation":"aerial tramway","group":5,"hexcode":"1F6A1","order":2976,"shortcodes":["aerial_tramway"],"tags":["aerial","cable","car","gondola","tramway"],"unicode":"🚡"},{"annotation":"satellite","group":5,"hexcode":"1F6F0","order":2978,"shortcodes":["satellite"],"tags":["space"],"unicode":"🛰︎"},{"annotation":"rocket","group":5,"hexcode":"1F680","order":2979,"shortcodes":["rocket"],"tags":["space"],"unicode":"🚀"},{"annotation":"flying saucer","group":5,"hexcode":"1F6F8","order":2980,"shortcodes":["flying_saucer"],"tags":["ufo"],"unicode":"🛸"},{"annotation":"bellhop bell","group":5,"hexcode":"1F6CE","order":2982,"shortcodes":["bellhop"],"tags":["bell","bellhop","hotel"],"unicode":"🛎︎"},{"annotation":"luggage","group":5,"hexcode":"1F9F3","order":2983,"shortcodes":["luggage"],"tags":["packing","travel"],"unicode":"🧳"},{"annotation":"hourglass done","group":5,"hexcode":"231B","order":2984,"shortcodes":["hourglass"],"tags":["sand","timer"],"unicode":"⌛️"},{"annotation":"hourglass not done","group":5,"hexcode":"23F3","order":2985,"shortcodes":["hourglass_flowing"],"tags":["hourglass","sand","timer"],"unicode":"⏳️"},{"annotation":"watch","group":5,"hexcode":"231A","order":2986,"shortcodes":["watch"],"tags":["clock"],"unicode":"⌚️"},{"annotation":"alarm clock","group":5,"hexcode":"23F0","order":2987,"shortcodes":["alarm_clock"],"tags":["alarm","clock"],"unicode":"⏰"},{"annotation":"stopwatch","group":5,"hexcode":"23F1","order":2989,"shortcodes":["stopwatch"],"tags":["clock"],"unicode":"⏱︎"},{"annotation":"timer clock","group":5,"hexcode":"23F2","order":2991,"shortcodes":["timer"],"tags":["clock","timer"],"unicode":"⏲︎"},{"annotation":"mantelpiece clock","group":5,"hexcode":"1F570","order":2993,"shortcodes":["clock"],"tags":["clock"],"unicode":"🕰︎"},{"annotation":"twelve o’clock","group":5,"hexcode":"1F55B","order":2994,"shortcodes":["clock12"],"tags":["00","12","12:00","clock","o’clock","twelve"],"unicode":"🕛️"},{"annotation":"twelve-thirty","group":5,"hexcode":"1F567","order":2995,"shortcodes":["clock1230"],"tags":["12","12:30","clock","thirty","twelve"],"unicode":"🕧️"},{"annotation":"one o’clock","group":5,"hexcode":"1F550","order":2996,"shortcodes":["clock1"],"tags":["00","1","1:00","clock","one","o’clock"],"unicode":"🕐️"},{"annotation":"one-thirty","group":5,"hexcode":"1F55C","order":2997,"shortcodes":["clock130"],"tags":["1","1:30","clock","one","thirty"],"unicode":"🕜️"},{"annotation":"two o’clock","group":5,"hexcode":"1F551","order":2998,"shortcodes":["clock2"],"tags":["00","2","2:00","clock","o’clock","two"],"unicode":"🕑️"},{"annotation":"two-thirty","group":5,"hexcode":"1F55D","order":2999,"shortcodes":["clock230"],"tags":["2","2:30","clock","thirty","two"],"unicode":"🕝️"},{"annotation":"three o’clock","group":5,"hexcode":"1F552","order":3000,"shortcodes":["clock3"],"tags":["00","3","3:00","clock","o’clock","three"],"unicode":"🕒️"},{"annotation":"three-thirty","group":5,"hexcode":"1F55E","order":3001,"shortcodes":["clock330"],"tags":["3","3:30","clock","thirty","three"],"unicode":"🕞️"},{"annotation":"four o’clock","group":5,"hexcode":"1F553","order":3002,"shortcodes":["clock4"],"tags":["00","4","4:00","clock","four","o’clock"],"unicode":"🕓️"},{"annotation":"four-thirty","group":5,"hexcode":"1F55F","order":3003,"shortcodes":["clock430"],"tags":["4","4:30","clock","four","thirty"],"unicode":"🕟️"},{"annotation":"five o’clock","group":5,"hexcode":"1F554","order":3004,"shortcodes":["clock5"],"tags":["00","5","5:00","clock","five","o’clock"],"unicode":"🕔️"},{"annotation":"five-thirty","group":5,"hexcode":"1F560","order":3005,"shortcodes":["clock530"],"tags":["5","5:30","clock","five","thirty"],"unicode":"🕠️"},{"annotation":"six o’clock","group":5,"hexcode":"1F555","order":3006,"shortcodes":["clock6"],"tags":["00","6","6:00","clock","o’clock","six"],"unicode":"🕕️"},{"annotation":"six-thirty","group":5,"hexcode":"1F561","order":3007,"shortcodes":["clock630"],"tags":["6","6:30","clock","six","thirty"],"unicode":"🕡️"},{"annotation":"seven o’clock","group":5,"hexcode":"1F556","order":3008,"shortcodes":["clock7"],"tags":["00","7","7:00","clock","o’clock","seven"],"unicode":"🕖️"},{"annotation":"seven-thirty","group":5,"hexcode":"1F562","order":3009,"shortcodes":["clock730"],"tags":["7","7:30","clock","seven","thirty"],"unicode":"🕢️"},{"annotation":"eight o’clock","group":5,"hexcode":"1F557","order":3010,"shortcodes":["clock8"],"tags":["00","8","8:00","clock","eight","o’clock"],"unicode":"🕗️"},{"annotation":"eight-thirty","group":5,"hexcode":"1F563","order":3011,"shortcodes":["clock830"],"tags":["8","8:30","clock","eight","thirty"],"unicode":"🕣️"},{"annotation":"nine o’clock","group":5,"hexcode":"1F558","order":3012,"shortcodes":["clock9"],"tags":["00","9","9:00","clock","nine","o’clock"],"unicode":"🕘️"},{"annotation":"nine-thirty","group":5,"hexcode":"1F564","order":3013,"shortcodes":["clock930"],"tags":["9","9:30","clock","nine","thirty"],"unicode":"🕤️"},{"annotation":"ten o’clock","group":5,"hexcode":"1F559","order":3014,"shortcodes":["clock10"],"tags":["00","10","10:00","clock","o’clock","ten"],"unicode":"🕙️"},{"annotation":"ten-thirty","group":5,"hexcode":"1F565","order":3015,"shortcodes":["clock1030"],"tags":["10","10:30","clock","ten","thirty"],"unicode":"🕥️"},{"annotation":"eleven o’clock","group":5,"hexcode":"1F55A","order":3016,"shortcodes":["clock11"],"tags":["00","11","11:00","clock","eleven","o’clock"],"unicode":"🕚️"},{"annotation":"eleven-thirty","group":5,"hexcode":"1F566","order":3017,"shortcodes":["clock1130"],"tags":["11","11:30","clock","eleven","thirty"],"unicode":"🕦️"},{"annotation":"new moon","group":5,"hexcode":"1F311","order":3018,"shortcodes":["new_moon"],"tags":["dark","moon"],"unicode":"🌑"},{"annotation":"waxing crescent moon","group":5,"hexcode":"1F312","order":3019,"shortcodes":["waxing_crescent_moon"],"tags":["crescent","moon","waxing"],"unicode":"🌒"},{"annotation":"first quarter moon","group":5,"hexcode":"1F313","order":3020,"shortcodes":["first_quarter_moon"],"tags":["moon","quarter"],"unicode":"🌓"},{"annotation":"waxing gibbous moon","group":5,"hexcode":"1F314","order":3021,"shortcodes":["waxing_gibbous_moon"],"tags":["gibbous","moon","waxing"],"unicode":"🌔"},{"annotation":"full moon","group":5,"hexcode":"1F315","order":3022,"shortcodes":["full_moon"],"tags":["full","moon"],"unicode":"🌕️"},{"annotation":"waning gibbous moon","group":5,"hexcode":"1F316","order":3023,"shortcodes":["waning_gibbous_moon"],"tags":["gibbous","moon","waning"],"unicode":"🌖"},{"annotation":"last quarter moon","group":5,"hexcode":"1F317","order":3024,"shortcodes":["last_quarter_moon"],"tags":["moon","quarter"],"unicode":"🌗"},{"annotation":"waning crescent moon","group":5,"hexcode":"1F318","order":3025,"shortcodes":["waning_crescent_moon"],"tags":["crescent","moon","waning"],"unicode":"🌘"},{"annotation":"crescent moon","group":5,"hexcode":"1F319","order":3026,"shortcodes":["crescent_moon"],"tags":["crescent","moon"],"unicode":"🌙"},{"annotation":"new moon face","group":5,"hexcode":"1F31A","order":3027,"shortcodes":["new_moon_face"],"tags":["face","moon"],"unicode":"🌚"},{"annotation":"first quarter moon face","group":5,"hexcode":"1F31B","order":3028,"shortcodes":["first_quarter_moon_face"],"tags":["face","moon","quarter"],"unicode":"🌛"},{"annotation":"last quarter moon face","group":5,"hexcode":"1F31C","order":3029,"shortcodes":["last_quarter_moon_face"],"tags":["face","moon","quarter"],"unicode":"🌜️"},{"annotation":"thermometer","group":5,"hexcode":"1F321","order":3031,"shortcodes":["thermometer"],"tags":["weather"],"unicode":"🌡︎"},{"annotation":"sun","group":5,"hexcode":"2600","order":3033,"shortcodes":["sun"],"tags":["bright","rays","sunny"],"unicode":"☀︎"},{"annotation":"full moon face","group":5,"hexcode":"1F31D","order":3034,"shortcodes":["full_moon_face"],"tags":["bright","face","full","moon"],"unicode":"🌝"},{"annotation":"sun with face","group":5,"hexcode":"1F31E","order":3035,"shortcodes":["sun_face"],"tags":["bright","face","sun"],"unicode":"🌞"},{"annotation":"ringed planet","group":5,"hexcode":"1FA90","order":3036,"shortcodes":["ringed_planet","saturn"],"tags":["saturn","saturnine"],"unicode":"🪐"},{"annotation":"star","group":5,"hexcode":"2B50","order":3037,"shortcodes":["star"],"tags":["star"],"unicode":"⭐️"},{"annotation":"glowing star","group":5,"hexcode":"1F31F","order":3038,"shortcodes":["star2","glowing_star"],"tags":["glittery","glow","shining","sparkle","star"],"unicode":"🌟"},{"annotation":"shooting star","group":5,"hexcode":"1F320","order":3039,"shortcodes":["star3","shooting_star"],"tags":["falling","shooting","star"],"unicode":"🌠"},{"annotation":"milky way","group":5,"hexcode":"1F30C","order":3040,"shortcodes":["milky_way"],"tags":["space"],"unicode":"🌌"},{"annotation":"cloud","group":5,"hexcode":"2601","order":3042,"shortcodes":["cloud"],"tags":["weather"],"unicode":"☁︎"},{"annotation":"sun behind cloud","group":5,"hexcode":"26C5","order":3043,"shortcodes":["partly_sunny"],"tags":["cloud","sun"],"unicode":"⛅️"},{"annotation":"cloud with lightning and rain","group":5,"hexcode":"26C8","order":3045,"shortcodes":["storm"],"tags":["cloud","rain","thunder"],"unicode":"⛈︎"},{"annotation":"sun behind small cloud","group":5,"hexcode":"1F324","order":3047,"shortcodes":["overcast"],"tags":["cloud","sun"],"unicode":"🌤︎"},{"annotation":"sun behind large cloud","group":5,"hexcode":"1F325","order":3049,"shortcodes":["cloudy"],"tags":["cloud","sun"],"unicode":"🌥︎"},{"annotation":"sun behind rain cloud","group":5,"hexcode":"1F326","order":3051,"shortcodes":["sunshower"],"tags":["cloud","rain","sun"],"unicode":"🌦︎"},{"annotation":"cloud with rain","group":5,"hexcode":"1F327","order":3053,"shortcodes":["rain"],"tags":["cloud","rain"],"unicode":"🌧︎"},{"annotation":"cloud with snow","group":5,"hexcode":"1F328","order":3055,"shortcodes":["snow"],"tags":["cloud","cold","snow"],"unicode":"🌨︎"},{"annotation":"cloud with lightning","group":5,"hexcode":"1F329","order":3057,"shortcodes":["lightning"],"tags":["cloud","lightning"],"unicode":"🌩︎"},{"annotation":"tornado","group":5,"hexcode":"1F32A","order":3059,"shortcodes":["tornado"],"tags":["cloud","whirlwind"],"unicode":"🌪︎"},{"annotation":"fog","group":5,"hexcode":"1F32B","order":3061,"shortcodes":["fog"],"tags":["cloud"],"unicode":"🌫︎"},{"annotation":"wind face","group":5,"hexcode":"1F32C","order":3063,"shortcodes":["wind_face"],"tags":["blow","cloud","face","wind"],"unicode":"🌬︎"},{"annotation":"cyclone","group":5,"hexcode":"1F300","order":3064,"shortcodes":["cyclone"],"tags":["dizzy","hurricane","twister","typhoon"],"unicode":"🌀"},{"annotation":"rainbow","group":5,"hexcode":"1F308","order":3065,"shortcodes":["rainbow"],"tags":["rain"],"unicode":"🌈"},{"annotation":"closed umbrella","group":5,"hexcode":"1F302","order":3066,"shortcodes":["closed_umbrella"],"tags":["clothing","rain","umbrella"],"unicode":"🌂"},{"annotation":"umbrella","group":5,"hexcode":"2602","order":3068,"shortcodes":["umbrella"],"tags":["clothing","rain"],"unicode":"☂︎"},{"annotation":"umbrella with rain drops","group":5,"hexcode":"2614","order":3069,"shortcodes":["umbrella_rain"],"tags":["clothing","drop","rain","umbrella"],"unicode":"☔️"},{"annotation":"umbrella on ground","group":5,"hexcode":"26F1","order":3071,"shortcodes":["beach_umbrella"],"tags":["rain","sun","umbrella"],"unicode":"⛱︎"},{"annotation":"high voltage","group":5,"hexcode":"26A1","order":3072,"shortcodes":["zap","high_voltage"],"tags":["danger","electric","lightning","voltage","zap"],"unicode":"⚡️"},{"annotation":"snowflake","group":5,"hexcode":"2744","order":3074,"shortcodes":["snowflake"],"tags":["cold","snow"],"unicode":"❄︎"},{"annotation":"snowman","group":5,"hexcode":"2603","order":3076,"shortcodes":["snowy_snowman"],"tags":["cold","snow"],"unicode":"☃︎"},{"annotation":"snowman without snow","group":5,"hexcode":"26C4","order":3077,"shortcodes":["snowman"],"tags":["cold","snow","snowman"],"unicode":"⛄️"},{"annotation":"comet","group":5,"hexcode":"2604","order":3079,"shortcodes":["comet"],"tags":["space"],"unicode":"☄︎"},{"annotation":"fire","group":5,"hexcode":"1F525","order":3080,"shortcodes":["fire"],"tags":["flame","tool"],"unicode":"🔥"},{"annotation":"droplet","group":5,"hexcode":"1F4A7","order":3081,"shortcodes":["droplet"],"tags":["cold","comic","drop","sweat"],"unicode":"💧"},{"annotation":"water wave","group":5,"hexcode":"1F30A","order":3082,"shortcodes":["ocean"],"tags":["ocean","water","wave"],"unicode":"🌊"},{"annotation":"jack-o-lantern","group":6,"hexcode":"1F383","order":3083,"shortcodes":["jack_o_lantern"],"tags":["celebration","halloween","jack","lantern"],"unicode":"🎃"},{"annotation":"Christmas tree","group":6,"hexcode":"1F384","order":3084,"shortcodes":["christmas_tree","xmas_tree"],"tags":["celebration","christmas","tree"],"unicode":"🎄"},{"annotation":"fireworks","group":6,"hexcode":"1F386","order":3085,"shortcodes":["fireworks"],"tags":["celebration"],"unicode":"🎆"},{"annotation":"sparkler","group":6,"hexcode":"1F387","order":3086,"shortcodes":["sparkler"],"tags":["celebration","fireworks","sparkle"],"unicode":"🎇"},{"annotation":"firecracker","group":6,"hexcode":"1F9E8","order":3087,"shortcodes":["firecracker"],"tags":["dynamite","explosive","fireworks"],"unicode":"🧨"},{"annotation":"sparkles","group":6,"hexcode":"2728","order":3088,"shortcodes":["sparkles"],"tags":["*","sparkle","star"],"unicode":"✨"},{"annotation":"balloon","group":6,"hexcode":"1F388","order":3089,"shortcodes":["balloon"],"tags":["celebration"],"unicode":"🎈"},{"annotation":"party popper","group":6,"hexcode":"1F389","order":3090,"shortcodes":["tada","party"],"tags":["celebration","party","popper","tada"],"unicode":"🎉"},{"annotation":"confetti ball","group":6,"hexcode":"1F38A","order":3091,"shortcodes":["confetti_ball"],"tags":["ball","celebration","confetti"],"unicode":"🎊"},{"annotation":"tanabata tree","group":6,"hexcode":"1F38B","order":3092,"shortcodes":["tanabata_tree"],"tags":["banner","celebration","japanese","tree"],"unicode":"🎋"},{"annotation":"pine decoration","group":6,"hexcode":"1F38D","order":3093,"shortcodes":["bamboo","pine_decor"],"tags":["bamboo","celebration","japanese","pine"],"unicode":"🎍"},{"annotation":"Japanese dolls","group":6,"hexcode":"1F38E","order":3094,"shortcodes":["dolls"],"tags":["celebration","doll","festival","japanese","japanese dolls"],"unicode":"🎎"},{"annotation":"carp streamer","group":6,"hexcode":"1F38F","order":3095,"shortcodes":["carp_streamer"],"tags":["carp","celebration","streamer"],"unicode":"🎏"},{"annotation":"wind chime","group":6,"hexcode":"1F390","order":3096,"shortcodes":["wind_chime"],"tags":["bell","celebration","chime","wind"],"unicode":"🎐"},{"annotation":"moon viewing ceremony","group":6,"hexcode":"1F391","order":3097,"shortcodes":["moon_ceremony","rice_scene"],"tags":["celebration","ceremony","moon"],"unicode":"🎑"},{"annotation":"red envelope","group":6,"hexcode":"1F9E7","order":3098,"shortcodes":["red_envelope"],"tags":["gift","good luck","hóngbāo","lai see","money"],"unicode":"🧧"},{"annotation":"ribbon","group":6,"hexcode":"1F380","order":3099,"shortcodes":["ribbon"],"tags":["celebration"],"unicode":"🎀"},{"annotation":"wrapped gift","group":6,"hexcode":"1F381","order":3100,"shortcodes":["gift"],"tags":["box","celebration","gift","present","wrapped"],"unicode":"🎁"},{"annotation":"reminder ribbon","group":6,"hexcode":"1F397","order":3102,"shortcodes":["reminder_ribbon"],"tags":["celebration","reminder","ribbon"],"unicode":"🎗︎"},{"annotation":"admission tickets","group":6,"hexcode":"1F39F","order":3104,"shortcodes":["tickets","admission"],"tags":["admission","ticket"],"unicode":"🎟︎"},{"annotation":"ticket","group":6,"hexcode":"1F3AB","order":3105,"shortcodes":["ticket"],"tags":["admission"],"unicode":"🎫"},{"annotation":"military medal","group":6,"hexcode":"1F396","order":3107,"shortcodes":["military_medal"],"tags":["celebration","medal","military"],"unicode":"🎖︎"},{"annotation":"trophy","group":6,"hexcode":"1F3C6","order":3108,"shortcodes":["trophy"],"tags":["prize"],"unicode":"🏆️"},{"annotation":"sports medal","group":6,"hexcode":"1F3C5","order":3109,"shortcodes":["medal"],"tags":["medal"],"unicode":"🏅"},{"annotation":"1st place medal","group":6,"hexcode":"1F947","order":3110,"shortcodes":["first_place"],"tags":["first","gold","medal"],"unicode":"🥇"},{"annotation":"2nd place medal","group":6,"hexcode":"1F948","order":3111,"shortcodes":["second_place"],"tags":["medal","second","silver"],"unicode":"🥈"},{"annotation":"3rd place medal","group":6,"hexcode":"1F949","order":3112,"shortcodes":["third_place"],"tags":["bronze","medal","third"],"unicode":"🥉"},{"annotation":"soccer ball","group":6,"hexcode":"26BD","order":3113,"shortcodes":["soccer"],"tags":["ball","football","soccer"],"unicode":"⚽️"},{"annotation":"baseball","group":6,"hexcode":"26BE","order":3114,"shortcodes":["baseball"],"tags":["ball"],"unicode":"⚾️"},{"annotation":"softball","group":6,"hexcode":"1F94E","order":3115,"shortcodes":["softball"],"tags":["ball","glove","underarm"],"unicode":"🥎"},{"annotation":"basketball","group":6,"hexcode":"1F3C0","order":3116,"shortcodes":["basketball"],"tags":["ball","hoop"],"unicode":"🏀"},{"annotation":"volleyball","group":6,"hexcode":"1F3D0","order":3117,"shortcodes":["volleyball"],"tags":["ball","game"],"unicode":"🏐"},{"annotation":"american football","group":6,"hexcode":"1F3C8","order":3118,"shortcodes":["football"],"tags":["american","ball","football"],"unicode":"🏈"},{"annotation":"rugby football","group":6,"hexcode":"1F3C9","order":3119,"shortcodes":["rugby"],"tags":["ball","football","rugby"],"unicode":"🏉"},{"annotation":"tennis","group":6,"hexcode":"1F3BE","order":3120,"shortcodes":["tennis"],"tags":["ball","racquet"],"unicode":"🎾"},{"annotation":"flying disc","group":6,"hexcode":"1F94F","order":3121,"shortcodes":["flying_disc"],"tags":["ultimate"],"unicode":"🥏"},{"annotation":"bowling","group":6,"hexcode":"1F3B3","order":3122,"shortcodes":["bowling"],"tags":["ball","game"],"unicode":"🎳"},{"annotation":"cricket game","group":6,"hexcode":"1F3CF","order":3123,"shortcodes":["cricket_game"],"tags":["ball","bat","game"],"unicode":"🏏"},{"annotation":"field hockey","group":6,"hexcode":"1F3D1","order":3124,"shortcodes":["field_hockey"],"tags":["ball","field","game","hockey","stick"],"unicode":"🏑"},{"annotation":"ice hockey","group":6,"hexcode":"1F3D2","order":3125,"shortcodes":["hockey"],"tags":["game","hockey","ice","puck","stick"],"unicode":"🏒"},{"annotation":"lacrosse","group":6,"hexcode":"1F94D","order":3126,"shortcodes":["lacrosse"],"tags":["ball","goal","stick"],"unicode":"🥍"},{"annotation":"ping pong","group":6,"hexcode":"1F3D3","order":3127,"shortcodes":["ping_pong"],"tags":["ball","bat","game","paddle","table tennis"],"unicode":"🏓"},{"annotation":"badminton","group":6,"hexcode":"1F3F8","order":3128,"shortcodes":["badminton"],"tags":["birdie","game","racquet","shuttlecock"],"unicode":"🏸"},{"annotation":"boxing glove","group":6,"hexcode":"1F94A","order":3129,"shortcodes":["boxing_glove"],"tags":["boxing","glove"],"unicode":"🥊"},{"annotation":"martial arts uniform","group":6,"hexcode":"1F94B","order":3130,"shortcodes":["gi","martial_arts_uniform"],"tags":["judo","karate","martial arts","taekwondo","uniform"],"unicode":"🥋"},{"annotation":"goal net","group":6,"hexcode":"1F945","order":3131,"shortcodes":["goal"],"tags":["goal","net"],"unicode":"🥅"},{"annotation":"flag in hole","group":6,"hexcode":"26F3","order":3132,"shortcodes":["golf"],"tags":["golf","hole"],"unicode":"⛳️"},{"annotation":"ice skate","group":6,"hexcode":"26F8","order":3134,"shortcodes":["ice_skate"],"tags":["ice","skate"],"unicode":"⛸︎"},{"annotation":"fishing pole","group":6,"hexcode":"1F3A3","order":3135,"shortcodes":["fishing_pole"],"tags":["fish","pole"],"unicode":"🎣"},{"annotation":"diving mask","group":6,"hexcode":"1F93F","order":3136,"shortcodes":["diving_mask","scuba_mask"],"tags":["diving","scuba","snorkeling"],"unicode":"🤿"},{"annotation":"running shirt","group":6,"hexcode":"1F3BD","order":3137,"shortcodes":["running_shirt"],"tags":["athletics","running","sash","shirt"],"unicode":"🎽"},{"annotation":"skis","group":6,"hexcode":"1F3BF","order":3138,"shortcodes":["ski"],"tags":["ski","snow"],"unicode":"🎿"},{"annotation":"sled","group":6,"hexcode":"1F6F7","order":3139,"shortcodes":["sled"],"tags":["sledge","sleigh"],"unicode":"🛷"},{"annotation":"curling stone","group":6,"hexcode":"1F94C","order":3140,"shortcodes":["curling_stone"],"tags":["game","rock"],"unicode":"🥌"},{"annotation":"direct hit","group":6,"hexcode":"1F3AF","order":3141,"shortcodes":["dart"],"tags":["bullseye","dart","game","hit","target"],"unicode":"🎯"},{"annotation":"yo-yo","group":6,"hexcode":"1FA80","order":3142,"shortcodes":["yoyo"],"tags":["fluctuate","toy"],"unicode":"🪀"},{"annotation":"kite","group":6,"hexcode":"1FA81","order":3143,"shortcodes":["kite"],"tags":["fly","soar"],"unicode":"🪁"},{"annotation":"pool 8 ball","group":6,"hexcode":"1F3B1","order":3144,"shortcodes":["8ball"],"tags":["8","ball","billiard","eight","game"],"unicode":"🎱"},{"annotation":"crystal ball","group":6,"hexcode":"1F52E","order":3145,"shortcodes":["crystal_ball"],"tags":["ball","crystal","fairy tale","fantasy","fortune","tool"],"unicode":"🔮"},{"annotation":"nazar amulet","group":6,"hexcode":"1F9FF","order":3146,"shortcodes":["nazar_amulet"],"tags":["bead","charm","evil-eye","nazar","talisman"],"unicode":"🧿"},{"annotation":"video game","group":6,"hexcode":"1F3AE","order":3147,"shortcodes":["video_game"],"tags":["controller","game"],"unicode":"🎮️"},{"annotation":"joystick","group":6,"hexcode":"1F579","order":3149,"shortcodes":["joystick"],"tags":["game","video game"],"unicode":"🕹︎"},{"annotation":"slot machine","group":6,"hexcode":"1F3B0","order":3150,"shortcodes":["slot_machine"],"tags":["game","slot"],"unicode":"🎰"},{"annotation":"game die","group":6,"hexcode":"1F3B2","order":3151,"shortcodes":["game_die"],"tags":["dice","die","game"],"unicode":"🎲"},{"annotation":"puzzle piece","group":6,"hexcode":"1F9E9","order":3152,"shortcodes":["jigsaw","puzzle_piece"],"tags":["clue","interlocking","jigsaw","piece","puzzle"],"unicode":"🧩"},{"annotation":"teddy bear","group":6,"hexcode":"1F9F8","order":3153,"shortcodes":["teddy_bear"],"tags":["plaything","plush","stuffed","toy"],"unicode":"🧸"},{"annotation":"spade suit","group":6,"hexcode":"2660","order":3155,"shortcodes":["spades"],"tags":["card","game"],"unicode":"♠︎"},{"annotation":"heart suit","group":6,"hexcode":"2665","order":3157,"shortcodes":["hearts"],"tags":["card","game"],"unicode":"♥︎"},{"annotation":"diamond suit","group":6,"hexcode":"2666","order":3159,"shortcodes":["diamonds"],"tags":["card","game"],"unicode":"♦︎"},{"annotation":"club suit","group":6,"hexcode":"2663","order":3161,"shortcodes":["clubs"],"tags":["card","game"],"unicode":"♣︎"},{"annotation":"chess pawn","group":6,"hexcode":"265F","order":3163,"shortcodes":["chess_pawn"],"tags":["chess","dupe","expendable"],"unicode":"♟︎"},{"annotation":"joker","group":6,"hexcode":"1F0CF","order":3164,"shortcodes":["black_joker"],"tags":["card","game","wildcard"],"unicode":"🃏"},{"annotation":"mahjong red dragon","group":6,"hexcode":"1F004","order":3165,"shortcodes":["mahjong"],"tags":["game","mahjong","red"],"unicode":"🀄️"},{"annotation":"flower playing cards","group":6,"hexcode":"1F3B4","order":3166,"shortcodes":["flower_cards"],"tags":["card","flower","game","japanese","playing"],"unicode":"🎴"},{"annotation":"performing arts","group":6,"hexcode":"1F3AD","order":3167,"shortcodes":["performing_arts"],"tags":["art","mask","performing","theater","theatre"],"unicode":"🎭️"},{"annotation":"framed picture","group":6,"hexcode":"1F5BC","order":3169,"shortcodes":["frame_photo"],"tags":["art","frame","museum","painting","picture"],"unicode":"🖼︎"},{"annotation":"artist palette","group":6,"hexcode":"1F3A8","order":3170,"shortcodes":["art","palette"],"tags":["art","museum","painting","palette"],"unicode":"🎨"},{"annotation":"thread","group":6,"hexcode":"1F9F5","order":3171,"shortcodes":["spool"],"tags":["needle","sewing","spool","string"],"unicode":"🧵"},{"annotation":"yarn","group":6,"hexcode":"1F9F6","order":3172,"shortcodes":["yarn"],"tags":["ball","crochet","knit"],"unicode":"🧶"},{"annotation":"glasses","group":7,"hexcode":"1F453","order":3173,"shortcodes":["glasses"],"tags":["clothing","eye","eyeglasses","eyewear"],"unicode":"👓️"},{"annotation":"sunglasses","group":7,"hexcode":"1F576","order":3175,"shortcodes":["sunglasses"],"tags":["dark","eye","eyewear","glasses"],"unicode":"🕶︎"},{"annotation":"goggles","group":7,"hexcode":"1F97D","order":3176,"shortcodes":["goggles"],"tags":["eye protection","swimming","welding"],"unicode":"🥽"},{"annotation":"lab coat","group":7,"hexcode":"1F97C","order":3177,"shortcodes":["lab_coat"],"tags":["doctor","experiment","scientist"],"unicode":"🥼"},{"annotation":"safety vest","group":7,"hexcode":"1F9BA","order":3178,"shortcodes":["safety_vest"],"tags":["emergency","safety","vest"],"unicode":"🦺"},{"annotation":"necktie","group":7,"hexcode":"1F454","order":3179,"shortcodes":["necktie","tie"],"tags":["clothing","tie"],"unicode":"👔"},{"annotation":"t-shirt","group":7,"hexcode":"1F455","order":3180,"shortcodes":["shirt"],"tags":["clothing","shirt","tshirt"],"unicode":"👕"},{"annotation":"jeans","group":7,"hexcode":"1F456","order":3181,"shortcodes":["jeans"],"tags":["clothing","pants","trousers"],"unicode":"👖"},{"annotation":"scarf","group":7,"hexcode":"1F9E3","order":3182,"shortcodes":["scarf"],"tags":["neck"],"unicode":"🧣"},{"annotation":"gloves","group":7,"hexcode":"1F9E4","order":3183,"shortcodes":["gloves"],"tags":["hand"],"unicode":"🧤"},{"annotation":"coat","group":7,"hexcode":"1F9E5","order":3184,"shortcodes":["coat"],"tags":["jacket"],"unicode":"🧥"},{"annotation":"socks","group":7,"hexcode":"1F9E6","order":3185,"shortcodes":["socks"],"tags":["stocking"],"unicode":"🧦"},{"annotation":"dress","group":7,"hexcode":"1F457","order":3186,"shortcodes":["dress"],"tags":["clothing"],"unicode":"👗"},{"annotation":"kimono","group":7,"hexcode":"1F458","order":3187,"shortcodes":["kimono"],"tags":["clothing"],"unicode":"👘"},{"annotation":"sari","group":7,"hexcode":"1F97B","order":3188,"shortcodes":["sari"],"tags":["clothing","dress"],"unicode":"🥻"},{"annotation":"one-piece swimsuit","group":7,"hexcode":"1FA71","order":3189,"shortcodes":["one_piece_swimsuit"],"tags":["bathing suit"],"unicode":"🩱"},{"annotation":"briefs","group":7,"hexcode":"1FA72","order":3190,"shortcodes":["briefs"],"tags":["bathing suit","one-piece","swimsuit","underwear"],"unicode":"🩲"},{"annotation":"shorts","group":7,"hexcode":"1FA73","order":3191,"shortcodes":["shorts"],"tags":["bathing suit","pants","underwear"],"unicode":"🩳"},{"annotation":"bikini","group":7,"hexcode":"1F459","order":3192,"shortcodes":["bikini"],"tags":["clothing","swim"],"unicode":"👙"},{"annotation":"woman’s clothes","group":7,"hexcode":"1F45A","order":3193,"shortcodes":["blouse","womans_clothes"],"tags":["clothing","woman"],"unicode":"👚"},{"annotation":"purse","group":7,"hexcode":"1F45B","order":3194,"shortcodes":["purse"],"tags":["clothing","coin"],"unicode":"👛"},{"annotation":"handbag","group":7,"hexcode":"1F45C","order":3195,"shortcodes":["handbag"],"tags":["bag","clothing","purse"],"unicode":"👜"},{"annotation":"clutch bag","group":7,"hexcode":"1F45D","order":3196,"shortcodes":["pouch","clutch_bag"],"tags":["bag","clothing","pouch"],"unicode":"👝"},{"annotation":"shopping bags","group":7,"hexcode":"1F6CD","order":3198,"shortcodes":["shopping_bags"],"tags":["bag","hotel","shopping"],"unicode":"🛍︎"},{"annotation":"backpack","group":7,"hexcode":"1F392","order":3199,"shortcodes":["backpack"],"tags":["bag","rucksack","satchel","school"],"unicode":"🎒"},{"annotation":"man’s shoe","group":7,"hexcode":"1F45E","order":3200,"shortcodes":["dress_shoe","mans_shoe"],"tags":["clothing","man","shoe"],"unicode":"👞"},{"annotation":"running shoe","group":7,"hexcode":"1F45F","order":3201,"shortcodes":["sneaker","athletic_shoe"],"tags":["athletic","clothing","shoe","sneaker"],"unicode":"👟"},{"annotation":"hiking boot","group":7,"hexcode":"1F97E","order":3202,"shortcodes":["hiking_boot"],"tags":["backpacking","boot","camping","hiking"],"unicode":"🥾"},{"annotation":"flat shoe","group":7,"hexcode":"1F97F","order":3203,"shortcodes":["flat_shoe"],"tags":["ballet flat","slip-on","slipper"],"unicode":"🥿"},{"annotation":"high-heeled shoe","group":7,"hexcode":"1F460","order":3204,"shortcodes":["high_heel"],"tags":["clothing","heel","shoe","woman"],"unicode":"👠"},{"annotation":"woman’s sandal","group":7,"hexcode":"1F461","order":3205,"shortcodes":["womans_sandal"],"tags":["clothing","sandal","shoe","woman"],"unicode":"👡"},{"annotation":"ballet shoes","group":7,"hexcode":"1FA70","order":3206,"shortcodes":["ballet_shoes"],"tags":["ballet","dance"],"unicode":"🩰"},{"annotation":"woman’s boot","group":7,"hexcode":"1F462","order":3207,"shortcodes":["womans_boot"],"tags":["boot","clothing","shoe","woman"],"unicode":"👢"},{"annotation":"crown","group":7,"hexcode":"1F451","order":3208,"shortcodes":["crown"],"tags":["clothing","king","queen"],"unicode":"👑"},{"annotation":"woman’s hat","group":7,"hexcode":"1F452","order":3209,"shortcodes":["womans_hat"],"tags":["clothing","hat","woman"],"unicode":"👒"},{"annotation":"top hat","group":7,"hexcode":"1F3A9","order":3210,"shortcodes":["top_hat"],"tags":["clothing","hat","top","tophat"],"unicode":"🎩"},{"annotation":"graduation cap","group":7,"hexcode":"1F393","order":3211,"shortcodes":["graduation_cap"],"tags":["cap","celebration","clothing","graduation","hat"],"unicode":"🎓️"},{"annotation":"billed cap","group":7,"hexcode":"1F9E2","order":3212,"shortcodes":["billed_cap"],"tags":["baseball cap"],"unicode":"🧢"},{"annotation":"rescue worker’s helmet","group":7,"hexcode":"26D1","order":3214,"shortcodes":["helmet_cross"],"tags":["aid","cross","face","hat","helmet"],"unicode":"⛑︎"},{"annotation":"prayer beads","group":7,"hexcode":"1F4FF","order":3215,"shortcodes":["prayer_beads"],"tags":["beads","clothing","necklace","prayer","religion"],"unicode":"📿"},{"annotation":"lipstick","group":7,"hexcode":"1F484","order":3216,"shortcodes":["lipstick"],"tags":["cosmetics","makeup"],"unicode":"💄"},{"annotation":"ring","group":7,"hexcode":"1F48D","order":3217,"shortcodes":["ring"],"tags":["diamond"],"unicode":"💍"},{"annotation":"gem stone","group":7,"hexcode":"1F48E","order":3218,"shortcodes":["gem"],"tags":["diamond","gem","jewel"],"unicode":"💎"},{"annotation":"muted speaker","group":7,"hexcode":"1F507","order":3219,"shortcodes":["mute","no_sound"],"tags":["mute","quiet","silent","speaker"],"unicode":"🔇"},{"annotation":"speaker low volume","group":7,"hexcode":"1F508","order":3220,"shortcodes":["speaker","low_sound"],"tags":["soft"],"unicode":"🔈️"},{"annotation":"speaker medium volume","group":7,"hexcode":"1F509","order":3221,"shortcodes":["sound"],"tags":["medium"],"unicode":"🔉"},{"annotation":"speaker high volume","group":7,"hexcode":"1F50A","order":3222,"shortcodes":["loud_sound"],"tags":["loud"],"unicode":"🔊"},{"annotation":"loudspeaker","group":7,"hexcode":"1F4E2","order":3223,"shortcodes":["loudspeaker"],"tags":["loud","public address"],"unicode":"📢"},{"annotation":"megaphone","group":7,"hexcode":"1F4E3","order":3224,"shortcodes":["megaphone"],"tags":["cheering"],"unicode":"📣"},{"annotation":"postal horn","group":7,"hexcode":"1F4EF","order":3225,"shortcodes":["postal_horn"],"tags":["horn","post","postal"],"unicode":"📯"},{"annotation":"bell","group":7,"hexcode":"1F514","order":3226,"shortcodes":["bell"],"tags":["bell"],"unicode":"🔔"},{"annotation":"bell with slash","group":7,"hexcode":"1F515","order":3227,"shortcodes":["no_bell"],"tags":["bell","forbidden","mute","quiet","silent"],"unicode":"🔕"},{"annotation":"musical score","group":7,"hexcode":"1F3BC","order":3228,"shortcodes":["musical_score"],"tags":["music","score"],"unicode":"🎼"},{"annotation":"musical note","group":7,"hexcode":"1F3B5","order":3229,"shortcodes":["musical_note"],"tags":["music","note"],"unicode":"🎵"},{"annotation":"musical notes","group":7,"hexcode":"1F3B6","order":3230,"shortcodes":["musical_notes"],"tags":["music","note","notes"],"unicode":"🎶"},{"annotation":"studio microphone","group":7,"hexcode":"1F399","order":3232,"shortcodes":["studio_microphone"],"tags":["mic","microphone","music","studio"],"unicode":"🎙︎"},{"annotation":"level slider","group":7,"hexcode":"1F39A","order":3234,"shortcodes":["level_slider"],"tags":["level","music","slider"],"unicode":"🎚︎"},{"annotation":"control knobs","group":7,"hexcode":"1F39B","order":3236,"shortcodes":["control_knobs"],"tags":["control","knobs","music"],"unicode":"🎛︎"},{"annotation":"microphone","group":7,"hexcode":"1F3A4","order":3237,"shortcodes":["microphone"],"tags":["karaoke","mic"],"unicode":"🎤"},{"annotation":"headphone","group":7,"hexcode":"1F3A7","order":3238,"shortcodes":["headphones"],"tags":["earbud"],"unicode":"🎧️"},{"annotation":"radio","group":7,"hexcode":"1F4FB","order":3239,"shortcodes":["radio"],"tags":["video"],"unicode":"📻️"},{"annotation":"saxophone","group":7,"hexcode":"1F3B7","order":3240,"shortcodes":["saxophone"],"tags":["instrument","music","sax"],"unicode":"🎷"},{"annotation":"guitar","group":7,"hexcode":"1F3B8","order":3241,"shortcodes":["guitar"],"tags":["instrument","music"],"unicode":"🎸"},{"annotation":"musical keyboard","group":7,"hexcode":"1F3B9","order":3242,"shortcodes":["musical_keyboard"],"tags":["instrument","keyboard","music","piano"],"unicode":"🎹"},{"annotation":"trumpet","group":7,"hexcode":"1F3BA","order":3243,"shortcodes":["trumpet"],"tags":["instrument","music"],"unicode":"🎺"},{"annotation":"violin","group":7,"hexcode":"1F3BB","order":3244,"shortcodes":["violin"],"tags":["instrument","music"],"unicode":"🎻"},{"annotation":"banjo","group":7,"hexcode":"1FA95","order":3245,"shortcodes":["banjo"],"tags":["music","stringed"],"unicode":"🪕"},{"annotation":"drum","group":7,"hexcode":"1F941","order":3246,"shortcodes":["drum"],"tags":["drumsticks","music"],"unicode":"🥁"},{"annotation":"mobile phone","group":7,"hexcode":"1F4F1","order":3247,"shortcodes":["mobile","iphone","android"],"tags":["cell","mobile","phone","telephone"],"unicode":"📱"},{"annotation":"mobile phone with arrow","group":7,"hexcode":"1F4F2","order":3248,"shortcodes":["mobile_calling"],"tags":["arrow","cell","mobile","phone","receive"],"unicode":"📲"},{"annotation":"telephone","group":7,"hexcode":"260E","order":3250,"shortcodes":["telephone"],"tags":["phone"],"unicode":"☎︎"},{"annotation":"telephone receiver","group":7,"hexcode":"1F4DE","order":3251,"shortcodes":["telephone_receiver"],"tags":["phone","receiver","telephone"],"unicode":"📞"},{"annotation":"pager","group":7,"hexcode":"1F4DF","order":3252,"shortcodes":["pager"],"tags":["pager"],"unicode":"📟️"},{"annotation":"fax machine","group":7,"hexcode":"1F4E0","order":3253,"shortcodes":["fax"],"tags":["fax"],"unicode":"📠"},{"annotation":"battery","group":7,"hexcode":"1F50B","order":3254,"shortcodes":["battery"],"tags":["battery"],"unicode":"🔋"},{"annotation":"electric plug","group":7,"hexcode":"1F50C","order":3255,"shortcodes":["electric_plug"],"tags":["electric","electricity","plug"],"unicode":"🔌"},{"annotation":"laptop","group":7,"hexcode":"1F4BB","order":3256,"shortcodes":["laptop"],"tags":["computer","pc","personal"],"unicode":"💻️"},{"annotation":"desktop computer","group":7,"hexcode":"1F5A5","order":3258,"shortcodes":["desktop","computer"],"tags":["computer","desktop"],"unicode":"🖥︎"},{"annotation":"printer","group":7,"hexcode":"1F5A8","order":3260,"shortcodes":["printer"],"tags":["computer"],"unicode":"🖨︎"},{"annotation":"keyboard","group":7,"hexcode":"2328","order":3262,"shortcodes":["keyboard"],"tags":["computer"],"unicode":"⌨︎"},{"annotation":"computer mouse","group":7,"hexcode":"1F5B1","order":3264,"shortcodes":["computer_mouse"],"tags":["computer"],"unicode":"🖱︎"},{"annotation":"trackball","group":7,"hexcode":"1F5B2","order":3266,"shortcodes":["trackball"],"tags":["computer"],"unicode":"🖲︎"},{"annotation":"computer disk","group":7,"hexcode":"1F4BD","order":3267,"shortcodes":["minidisc"],"tags":["computer","disk","minidisk","optical"],"unicode":"💽"},{"annotation":"floppy disk","group":7,"hexcode":"1F4BE","order":3268,"shortcodes":["floppy_disk"],"tags":["computer","disk","floppy"],"unicode":"💾"},{"annotation":"optical disk","group":7,"hexcode":"1F4BF","order":3269,"shortcodes":["cd","disk"],"tags":["cd","computer","disk","optical"],"unicode":"💿️"},{"annotation":"dvd","group":7,"hexcode":"1F4C0","order":3270,"shortcodes":["dvd"],"tags":["blu-ray","computer","disk","optical"],"unicode":"📀"},{"annotation":"abacus","group":7,"hexcode":"1F9EE","order":3271,"shortcodes":["abacus"],"tags":["calculation"],"unicode":"🧮"},{"annotation":"movie camera","group":7,"hexcode":"1F3A5","order":3272,"shortcodes":["movie_camera"],"tags":["camera","cinema","movie"],"unicode":"🎥"},{"annotation":"film frames","group":7,"hexcode":"1F39E","order":3274,"shortcodes":["film_frames"],"tags":["cinema","film","frames","movie"],"unicode":"🎞︎"},{"annotation":"film projector","group":7,"hexcode":"1F4FD","order":3276,"shortcodes":["projector"],"tags":["cinema","film","movie","projector","video"],"unicode":"📽︎"},{"annotation":"clapper board","group":7,"hexcode":"1F3AC","order":3277,"shortcodes":["clapper"],"tags":["clapper","movie"],"unicode":"🎬️"},{"annotation":"television","group":7,"hexcode":"1F4FA","order":3278,"shortcodes":["tv"],"tags":["tv","video"],"unicode":"📺️"},{"annotation":"camera","group":7,"hexcode":"1F4F7","order":3279,"shortcodes":["camera"],"tags":["video"],"unicode":"📷️"},{"annotation":"camera with flash","group":7,"hexcode":"1F4F8","order":3280,"shortcodes":["camera_flash"],"tags":["camera","flash","video"],"unicode":"📸"},{"annotation":"video camera","group":7,"hexcode":"1F4F9","order":3281,"shortcodes":["video_camera"],"tags":["camera","video"],"unicode":"📹️"},{"annotation":"videocassette","group":7,"hexcode":"1F4FC","order":3282,"shortcodes":["vhs"],"tags":["tape","vhs","video"],"unicode":"📼"},{"annotation":"magnifying glass tilted left","group":7,"hexcode":"1F50D","order":3283,"shortcodes":["mag"],"tags":["glass","magnifying","search","tool"],"unicode":"🔍️"},{"annotation":"magnifying glass tilted right","group":7,"hexcode":"1F50E","order":3284,"shortcodes":["mag_right"],"tags":["glass","magnifying","search","tool"],"unicode":"🔎"},{"annotation":"candle","group":7,"hexcode":"1F56F","order":3286,"shortcodes":["candle"],"tags":["light"],"unicode":"🕯︎"},{"annotation":"light bulb","group":7,"hexcode":"1F4A1","order":3287,"shortcodes":["bulb","light_bulb"],"tags":["bulb","comic","electric","idea","light"],"unicode":"💡"},{"annotation":"flashlight","group":7,"hexcode":"1F526","order":3288,"shortcodes":["flashlight"],"tags":["electric","light","tool","torch"],"unicode":"🔦"},{"annotation":"red paper lantern","group":7,"hexcode":"1F3EE","order":3289,"shortcodes":["red_lantern"],"tags":["bar","lantern","light","red"],"unicode":"🏮"},{"annotation":"diya lamp","group":7,"hexcode":"1FA94","order":3290,"shortcodes":["diya_lamp"],"tags":["diya","lamp","oil"],"unicode":"🪔"},{"annotation":"notebook with decorative cover","group":7,"hexcode":"1F4D4","order":3291,"shortcodes":["decorative_notebook"],"tags":["book","cover","decorated","notebook"],"unicode":"📔"},{"annotation":"closed book","group":7,"hexcode":"1F4D5","order":3292,"shortcodes":["closed_book"],"tags":["book","closed"],"unicode":"📕"},{"annotation":"open book","group":7,"hexcode":"1F4D6","order":3293,"shortcodes":["book"],"tags":["book","open"],"unicode":"📖"},{"annotation":"green book","group":7,"hexcode":"1F4D7","order":3294,"shortcodes":["green_book"],"tags":["book","green"],"unicode":"📗"},{"annotation":"blue book","group":7,"hexcode":"1F4D8","order":3295,"shortcodes":["blue_book"],"tags":["blue","book"],"unicode":"📘"},{"annotation":"orange book","group":7,"hexcode":"1F4D9","order":3296,"shortcodes":["orange_book"],"tags":["book","orange"],"unicode":"📙"},{"annotation":"books","group":7,"hexcode":"1F4DA","order":3297,"shortcodes":["books"],"tags":["book"],"unicode":"📚️"},{"annotation":"notebook","group":7,"hexcode":"1F4D3","order":3298,"shortcodes":["notebook"],"tags":["notebook"],"unicode":"📓"},{"annotation":"ledger","group":7,"hexcode":"1F4D2","order":3299,"shortcodes":["ledger"],"tags":["notebook"],"unicode":"📒"},{"annotation":"page with curl","group":7,"hexcode":"1F4C3","order":3300,"shortcodes":["page_curl"],"tags":["curl","document","page"],"unicode":"📃"},{"annotation":"scroll","group":7,"hexcode":"1F4DC","order":3301,"shortcodes":["scroll"],"tags":["paper"],"unicode":"📜"},{"annotation":"page facing up","group":7,"hexcode":"1F4C4","order":3302,"shortcodes":["page_facing_up"],"tags":["document","page"],"unicode":"📄"},{"annotation":"newspaper","group":7,"hexcode":"1F4F0","order":3303,"shortcodes":["newspaper"],"tags":["news","paper"],"unicode":"📰"},{"annotation":"rolled-up newspaper","group":7,"hexcode":"1F5DE","order":3305,"shortcodes":["rolled_newspaper"],"tags":["news","newspaper","paper","rolled"],"unicode":"🗞︎"},{"annotation":"bookmark tabs","group":7,"hexcode":"1F4D1","order":3306,"shortcodes":["bookmark_tabs"],"tags":["bookmark","mark","marker","tabs"],"unicode":"📑"},{"annotation":"bookmark","group":7,"hexcode":"1F516","order":3307,"shortcodes":["bookmark"],"tags":["mark"],"unicode":"🔖"},{"annotation":"label","group":7,"hexcode":"1F3F7","order":3309,"shortcodes":["label"],"tags":["label"],"unicode":"🏷︎"},{"annotation":"money bag","group":7,"hexcode":"1F4B0","order":3310,"shortcodes":["moneybag"],"tags":["bag","dollar","money","moneybag"],"unicode":"💰️"},{"annotation":"yen banknote","group":7,"hexcode":"1F4B4","order":3311,"shortcodes":["yen"],"tags":["banknote","bill","currency","money","note","yen"],"unicode":"💴"},{"annotation":"dollar banknote","group":7,"hexcode":"1F4B5","order":3312,"shortcodes":["dollar"],"tags":["banknote","bill","currency","dollar","money","note"],"unicode":"💵"},{"annotation":"euro banknote","group":7,"hexcode":"1F4B6","order":3313,"shortcodes":["euro"],"tags":["banknote","bill","currency","euro","money","note"],"unicode":"💶"},{"annotation":"pound banknote","group":7,"hexcode":"1F4B7","order":3314,"shortcodes":["pound"],"tags":["banknote","bill","currency","money","note","pound"],"unicode":"💷"},{"annotation":"money with wings","group":7,"hexcode":"1F4B8","order":3315,"shortcodes":["money_wings"],"tags":["banknote","bill","fly","money","wings"],"unicode":"💸"},{"annotation":"credit card","group":7,"hexcode":"1F4B3","order":3316,"shortcodes":["credit_card"],"tags":["card","credit","money"],"unicode":"💳️"},{"annotation":"receipt","group":7,"hexcode":"1F9FE","order":3317,"shortcodes":["receipt"],"tags":["accounting","bookkeeping","evidence","proof"],"unicode":"🧾"},{"annotation":"chart increasing with yen","group":7,"hexcode":"1F4B9","order":3318,"shortcodes":["ja_chart"],"tags":["chart","graph","growth","money","yen"],"unicode":"💹"},{"annotation":"currency exchange","group":7,"hexcode":"1F4B1","order":3319,"shortcodes":["currency_exchange"],"tags":["bank","currency","exchange","money"],"unicode":"💱"},{"annotation":"heavy dollar sign","group":7,"hexcode":"1F4B2","order":3320,"shortcodes":["dollar_sign"],"tags":["currency","dollar","money"],"unicode":"💲"},{"annotation":"envelope","group":7,"hexcode":"2709","order":3322,"shortcodes":["envelope"],"tags":["email","letter"],"unicode":"✉︎"},{"annotation":"e-mail","group":7,"hexcode":"1F4E7","order":3323,"shortcodes":["email"],"tags":["email","letter","mail"],"unicode":"📧"},{"annotation":"incoming envelope","group":7,"hexcode":"1F4E8","order":3324,"shortcodes":["incoming_envelope"],"tags":["e-mail","email","envelope","incoming","letter","receive"],"unicode":"📨"},{"annotation":"envelope with arrow","group":7,"hexcode":"1F4E9","order":3325,"shortcodes":["envelope_arrow"],"tags":["arrow","e-mail","email","envelope","outgoing"],"unicode":"📩"},{"annotation":"outbox tray","group":7,"hexcode":"1F4E4","order":3326,"shortcodes":["outbox_tray"],"tags":["box","letter","mail","outbox","sent","tray"],"unicode":"📤️"},{"annotation":"inbox tray","group":7,"hexcode":"1F4E5","order":3327,"shortcodes":["inbox_tray"],"tags":["box","inbox","letter","mail","receive","tray"],"unicode":"📥️"},{"annotation":"package","group":7,"hexcode":"1F4E6","order":3328,"shortcodes":["package"],"tags":["box","parcel"],"unicode":"📦️"},{"annotation":"closed mailbox with raised flag","group":7,"hexcode":"1F4EB","order":3329,"shortcodes":["mailbox"],"tags":["closed","mail","mailbox","postbox"],"unicode":"📫️"},{"annotation":"closed mailbox with lowered flag","group":7,"hexcode":"1F4EA","order":3330,"shortcodes":["mailbox_closed"],"tags":["closed","lowered","mail","mailbox","postbox"],"unicode":"📪️"},{"annotation":"open mailbox with raised flag","group":7,"hexcode":"1F4EC","order":3331,"shortcodes":["mailbox_mail"],"tags":["mail","mailbox","open","postbox"],"unicode":"📬️"},{"annotation":"open mailbox with lowered flag","group":7,"hexcode":"1F4ED","order":3332,"shortcodes":["mailbox_no_mail"],"tags":["lowered","mail","mailbox","open","postbox"],"unicode":"📭️"},{"annotation":"postbox","group":7,"hexcode":"1F4EE","order":3333,"shortcodes":["postbox"],"tags":["mail","mailbox"],"unicode":"📮"},{"annotation":"ballot box with ballot","group":7,"hexcode":"1F5F3","order":3335,"shortcodes":["ballot_box"],"tags":["ballot","box"],"unicode":"🗳︎"},{"annotation":"pencil","group":7,"hexcode":"270F","order":3337,"shortcodes":["pencil"],"tags":["pencil"],"unicode":"✏︎"},{"annotation":"black nib","group":7,"hexcode":"2712","order":3339,"shortcodes":["black_nib"],"tags":["nib","pen"],"unicode":"✒︎"},{"annotation":"fountain pen","group":7,"hexcode":"1F58B","order":3341,"shortcodes":["fountain_pen"],"tags":["fountain","pen"],"unicode":"🖋︎"},{"annotation":"pen","group":7,"hexcode":"1F58A","order":3343,"shortcodes":["pen"],"tags":["ballpoint"],"unicode":"🖊︎"},{"annotation":"paintbrush","group":7,"hexcode":"1F58C","order":3345,"shortcodes":["paintbrush"],"tags":["painting"],"unicode":"🖌︎"},{"annotation":"crayon","group":7,"hexcode":"1F58D","order":3347,"shortcodes":["crayon"],"tags":["crayon"],"unicode":"🖍︎"},{"annotation":"memo","group":7,"hexcode":"1F4DD","order":3348,"shortcodes":["memo"],"tags":["pencil"],"unicode":"📝"},{"annotation":"briefcase","group":7,"hexcode":"1F4BC","order":3349,"shortcodes":["briefcase"],"tags":["briefcase"],"unicode":"💼"},{"annotation":"file folder","group":7,"hexcode":"1F4C1","order":3350,"shortcodes":["file_folder"],"tags":["file","folder"],"unicode":"📁"},{"annotation":"open file folder","group":7,"hexcode":"1F4C2","order":3351,"shortcodes":["open_file_folder"],"tags":["file","folder","open"],"unicode":"📂"},{"annotation":"card index dividers","group":7,"hexcode":"1F5C2","order":3353,"shortcodes":["dividers"],"tags":["card","dividers","index"],"unicode":"🗂︎"},{"annotation":"calendar","group":7,"hexcode":"1F4C5","order":3354,"shortcodes":["date","calendar"],"tags":["date"],"unicode":"📅"},{"annotation":"tear-off calendar","group":7,"hexcode":"1F4C6","order":3355,"shortcodes":["torn_calendar"],"tags":["calendar"],"unicode":"📆"},{"annotation":"spiral notepad","group":7,"hexcode":"1F5D2","order":3357,"shortcodes":["notepad_spiral"],"tags":["note","pad","spiral"],"unicode":"🗒︎"},{"annotation":"spiral calendar","group":7,"hexcode":"1F5D3","order":3359,"shortcodes":["calendar_spiral"],"tags":["calendar","pad","spiral"],"unicode":"🗓︎"},{"annotation":"card index","group":7,"hexcode":"1F4C7","order":3360,"shortcodes":["card_index"],"tags":["card","index","rolodex"],"unicode":"📇"},{"annotation":"chart increasing","group":7,"hexcode":"1F4C8","order":3361,"shortcodes":["chart_up"],"tags":["chart","graph","growth","trend","upward"],"unicode":"📈"},{"annotation":"chart decreasing","group":7,"hexcode":"1F4C9","order":3362,"shortcodes":["chart_down"],"tags":["chart","down","graph","trend"],"unicode":"📉"},{"annotation":"bar chart","group":7,"hexcode":"1F4CA","order":3363,"shortcodes":["bar_chart"],"tags":["bar","chart","graph"],"unicode":"📊"},{"annotation":"clipboard","group":7,"hexcode":"1F4CB","order":3364,"shortcodes":["clipboard"],"tags":["clipboard"],"unicode":"📋️"},{"annotation":"pushpin","group":7,"hexcode":"1F4CC","order":3365,"shortcodes":["pushpin"],"tags":["pin"],"unicode":"📌"},{"annotation":"round pushpin","group":7,"hexcode":"1F4CD","order":3366,"shortcodes":["round_pushpin"],"tags":["pin","pushpin"],"unicode":"📍"},{"annotation":"paperclip","group":7,"hexcode":"1F4CE","order":3367,"shortcodes":["paperclip"],"tags":["paperclip"],"unicode":"📎"},{"annotation":"linked paperclips","group":7,"hexcode":"1F587","order":3369,"shortcodes":["paperclips"],"tags":["link","paperclip"],"unicode":"🖇︎"},{"annotation":"straight ruler","group":7,"hexcode":"1F4CF","order":3370,"shortcodes":["straight_ruler"],"tags":["ruler","straight edge"],"unicode":"📏"},{"annotation":"triangular ruler","group":7,"hexcode":"1F4D0","order":3371,"shortcodes":["triangular_ruler"],"tags":["ruler","set","triangle"],"unicode":"📐"},{"annotation":"scissors","group":7,"hexcode":"2702","order":3373,"shortcodes":["scissors"],"tags":["cutting","tool"],"unicode":"✂︎"},{"annotation":"card file box","group":7,"hexcode":"1F5C3","order":3375,"shortcodes":["card_box"],"tags":["box","card","file"],"unicode":"🗃︎"},{"annotation":"file cabinet","group":7,"hexcode":"1F5C4","order":3377,"shortcodes":["file_cabinet"],"tags":["cabinet","file","filing"],"unicode":"🗄︎"},{"annotation":"wastebasket","group":7,"hexcode":"1F5D1","order":3379,"shortcodes":["trashcan","wastebasket"],"tags":["wastebasket"],"unicode":"🗑︎"},{"annotation":"locked","group":7,"hexcode":"1F512","order":3380,"shortcodes":["lock"],"tags":["closed"],"unicode":"🔒️"},{"annotation":"unlocked","group":7,"hexcode":"1F513","order":3381,"shortcodes":["unlock"],"tags":["lock","open","unlock"],"unicode":"🔓️"},{"annotation":"locked with pen","group":7,"hexcode":"1F50F","order":3382,"shortcodes":["locked_pen"],"tags":["ink","lock","nib","pen","privacy"],"unicode":"🔏"},{"annotation":"locked with key","group":7,"hexcode":"1F510","order":3383,"shortcodes":["locked_key"],"tags":["closed","key","lock","secure"],"unicode":"🔐"},{"annotation":"key","group":7,"hexcode":"1F511","order":3384,"shortcodes":["key"],"tags":["lock","password"],"unicode":"🔑"},{"annotation":"old key","group":7,"hexcode":"1F5DD","order":3386,"shortcodes":["old_key"],"tags":["clue","key","lock","old"],"unicode":"🗝︎"},{"annotation":"hammer","group":7,"hexcode":"1F528","order":3387,"shortcodes":["hammer"],"tags":["tool"],"unicode":"🔨"},{"annotation":"axe","group":7,"hexcode":"1FA93","order":3388,"shortcodes":["axe"],"tags":["chop","hatchet","split","wood"],"unicode":"🪓"},{"annotation":"pick","group":7,"hexcode":"26CF","order":3390,"shortcodes":["pick"],"tags":["mining","tool"],"unicode":"⛏︎"},{"annotation":"hammer and pick","group":7,"hexcode":"2692","order":3392,"shortcodes":["hammer_pick"],"tags":["hammer","pick","tool"],"unicode":"⚒︎"},{"annotation":"hammer and wrench","group":7,"hexcode":"1F6E0","order":3394,"shortcodes":["tools","hammer_wrench"],"tags":["hammer","spanner","tool","wrench"],"unicode":"🛠︎"},{"annotation":"dagger","group":7,"hexcode":"1F5E1","order":3396,"shortcodes":["dagger"],"tags":["knife","weapon"],"unicode":"🗡︎"},{"annotation":"crossed swords","group":7,"hexcode":"2694","order":3398,"shortcodes":["crossed_swords"],"tags":["crossed","swords","weapon"],"unicode":"⚔︎"},{"annotation":"pistol","group":7,"hexcode":"1F52B","order":3399,"shortcodes":["gun","pistol"],"tags":["gun","handgun","revolver","tool","weapon"],"unicode":"🔫"},{"annotation":"bow and arrow","group":7,"hexcode":"1F3F9","order":3400,"shortcodes":["bow"],"tags":["archer","arrow","bow","sagittarius","zodiac"],"unicode":"🏹"},{"annotation":"shield","group":7,"hexcode":"1F6E1","order":3402,"shortcodes":["shield"],"tags":["weapon"],"unicode":"🛡︎"},{"annotation":"wrench","group":7,"hexcode":"1F527","order":3403,"shortcodes":["wrench"],"tags":["spanner","tool"],"unicode":"🔧"},{"annotation":"nut and bolt","group":7,"hexcode":"1F529","order":3404,"shortcodes":["nut_and_bolt"],"tags":["bolt","nut","tool"],"unicode":"🔩"},{"annotation":"gear","group":7,"hexcode":"2699","order":3406,"shortcodes":["gear"],"tags":["cog","cogwheel","tool"],"unicode":"⚙︎"},{"annotation":"clamp","group":7,"hexcode":"1F5DC","order":3408,"shortcodes":["clamp","compression"],"tags":["compress","tool","vice"],"unicode":"🗜︎"},{"annotation":"balance scale","group":7,"hexcode":"2696","order":3410,"shortcodes":["scales"],"tags":["balance","justice","libra","scale","zodiac"],"unicode":"⚖︎"},{"annotation":"probing cane","group":7,"hexcode":"1F9AF","order":3411,"shortcodes":["probing_cane"],"tags":["accessibility","blind"],"unicode":"🦯"},{"annotation":"link","group":7,"hexcode":"1F517","order":3412,"shortcodes":["link"],"tags":["link"],"unicode":"🔗"},{"annotation":"chains","group":7,"hexcode":"26D3","order":3414,"shortcodes":["chains"],"tags":["chain"],"unicode":"⛓︎"},{"annotation":"toolbox","group":7,"hexcode":"1F9F0","order":3415,"shortcodes":["toolbox"],"tags":["chest","mechanic","tool"],"unicode":"🧰"},{"annotation":"magnet","group":7,"hexcode":"1F9F2","order":3416,"shortcodes":["magnet"],"tags":["attraction","horseshoe","magnetic"],"unicode":"🧲"},{"annotation":"alembic","group":7,"hexcode":"2697","order":3418,"shortcodes":["alembic"],"tags":["chemistry","tool"],"unicode":"⚗︎"},{"annotation":"test tube","group":7,"hexcode":"1F9EA","order":3419,"shortcodes":["test_tube"],"tags":["chemist","chemistry","experiment","lab","science"],"unicode":"🧪"},{"annotation":"petri dish","group":7,"hexcode":"1F9EB","order":3420,"shortcodes":["petri_dish"],"tags":["bacteria","biologist","biology","culture","lab"],"unicode":"🧫"},{"annotation":"dna","group":7,"hexcode":"1F9EC","order":3421,"shortcodes":["dna","double_helix"],"tags":["biologist","evolution","gene","genetics","life"],"unicode":"🧬"},{"annotation":"microscope","group":7,"hexcode":"1F52C","order":3422,"shortcodes":["microscope"],"tags":["science","tool"],"unicode":"🔬"},{"annotation":"telescope","group":7,"hexcode":"1F52D","order":3423,"shortcodes":["telescope"],"tags":["science","tool"],"unicode":"🔭"},{"annotation":"satellite antenna","group":7,"hexcode":"1F4E1","order":3424,"shortcodes":["satellite_antenna"],"tags":["antenna","dish","satellite"],"unicode":"📡"},{"annotation":"syringe","group":7,"hexcode":"1F489","order":3425,"shortcodes":["syringe"],"tags":["medicine","needle","shot","sick"],"unicode":"💉"},{"annotation":"drop of blood","group":7,"hexcode":"1FA78","order":3426,"shortcodes":["blood_drop"],"tags":["bleed","blood donation","injury","medicine","menstruation"],"unicode":"🩸"},{"annotation":"pill","group":7,"hexcode":"1F48A","order":3427,"shortcodes":["pill"],"tags":["doctor","medicine","sick"],"unicode":"💊"},{"annotation":"adhesive bandage","group":7,"hexcode":"1FA79","order":3428,"shortcodes":["bandaid","adhesive_bandage"],"tags":["bandage"],"unicode":"🩹"},{"annotation":"stethoscope","group":7,"hexcode":"1FA7A","order":3429,"shortcodes":["stethoscope"],"tags":["doctor","heart","medicine"],"unicode":"🩺"},{"annotation":"door","group":7,"hexcode":"1F6AA","order":3430,"shortcodes":["door"],"tags":["door"],"unicode":"🚪"},{"annotation":"bed","group":7,"hexcode":"1F6CF","order":3432,"shortcodes":["bed"],"tags":["hotel","sleep"],"unicode":"🛏︎"},{"annotation":"couch and lamp","group":7,"hexcode":"1F6CB","order":3434,"shortcodes":["couch"],"tags":["couch","hotel","lamp"],"unicode":"🛋︎"},{"annotation":"chair","group":7,"hexcode":"1FA91","order":3435,"shortcodes":["chair"],"tags":["seat","sit"],"unicode":"🪑"},{"annotation":"toilet","group":7,"hexcode":"1F6BD","order":3436,"shortcodes":["toilet"],"tags":["toilet"],"unicode":"🚽"},{"annotation":"shower","group":7,"hexcode":"1F6BF","order":3437,"shortcodes":["shower"],"tags":["water"],"unicode":"🚿"},{"annotation":"bathtub","group":7,"hexcode":"1F6C1","order":3438,"shortcodes":["bathtub"],"tags":["bath"],"unicode":"🛁"},{"annotation":"razor","group":7,"hexcode":"1FA92","order":3439,"shortcodes":["razor"],"tags":["sharp","shave"],"unicode":"🪒"},{"annotation":"lotion bottle","group":7,"hexcode":"1F9F4","order":3440,"shortcodes":["lotion"],"tags":["lotion","moisturizer","shampoo","sunscreen"],"unicode":"🧴"},{"annotation":"safety pin","group":7,"hexcode":"1F9F7","order":3441,"shortcodes":["safety_pin"],"tags":["diaper","punk rock"],"unicode":"🧷"},{"annotation":"broom","group":7,"hexcode":"1F9F9","order":3442,"shortcodes":["broom"],"tags":["cleaning","sweeping","witch"],"unicode":"🧹"},{"annotation":"basket","group":7,"hexcode":"1F9FA","order":3443,"shortcodes":["basket"],"tags":["farming","laundry","picnic"],"unicode":"🧺"},{"annotation":"roll of paper","group":7,"hexcode":"1F9FB","order":3444,"shortcodes":["toilet_paper"],"tags":["paper towels","toilet paper"],"unicode":"🧻"},{"annotation":"soap","group":7,"hexcode":"1F9FC","order":3445,"shortcodes":["soap"],"tags":["bar","bathing","cleaning","lather","soapdish"],"unicode":"🧼"},{"annotation":"sponge","group":7,"hexcode":"1F9FD","order":3446,"shortcodes":["sponge"],"tags":["absorbing","cleaning","porous"],"unicode":"🧽"},{"annotation":"fire extinguisher","group":7,"hexcode":"1F9EF","order":3447,"shortcodes":["fire_extinguisher"],"tags":["extinguish","fire","quench"],"unicode":"🧯"},{"annotation":"shopping cart","group":7,"hexcode":"1F6D2","order":3448,"shortcodes":["shopping_cart"],"tags":["cart","shopping","trolley"],"unicode":"🛒"},{"annotation":"cigarette","group":7,"hexcode":"1F6AC","order":3449,"shortcodes":["cigarette","smoking"],"tags":["smoking"],"unicode":"🚬"},{"annotation":"coffin","group":7,"hexcode":"26B0","order":3451,"shortcodes":["coffin"],"tags":["death"],"unicode":"⚰︎"},{"annotation":"funeral urn","group":7,"hexcode":"26B1","order":3453,"shortcodes":["urn"],"tags":["ashes","death","funeral","urn"],"unicode":"⚱︎"},{"annotation":"moai","group":7,"hexcode":"1F5FF","order":3454,"shortcodes":["moai"],"tags":["face","moyai","statue"],"unicode":"🗿"},{"annotation":"ATM sign","group":8,"hexcode":"1F3E7","order":3455,"shortcodes":["atm"],"tags":["atm","atm sign","automated","bank","teller"],"unicode":"🏧"},{"annotation":"litter in bin sign","group":8,"hexcode":"1F6AE","order":3456,"shortcodes":["litter_bin"],"tags":["litter","litter bin"],"unicode":"🚮"},{"annotation":"potable water","group":8,"hexcode":"1F6B0","order":3457,"shortcodes":["potable_water"],"tags":["drinking","potable","water"],"unicode":"🚰"},{"annotation":"wheelchair symbol","group":8,"hexcode":"267F","order":3458,"shortcodes":["handicapped"],"tags":["access"],"unicode":"♿️"},{"annotation":"men’s room","group":8,"hexcode":"1F6B9","order":3459,"shortcodes":["mens"],"tags":["lavatory","man","restroom","wc"],"unicode":"🚹️"},{"annotation":"women’s room","group":8,"hexcode":"1F6BA","order":3460,"shortcodes":["womens"],"tags":["lavatory","restroom","wc","woman"],"unicode":"🚺️"},{"annotation":"restroom","group":8,"hexcode":"1F6BB","order":3461,"shortcodes":["restroom","bathroom"],"tags":["lavatory","wc"],"unicode":"🚻"},{"annotation":"baby symbol","group":8,"hexcode":"1F6BC","order":3462,"shortcodes":["baby_symbol"],"tags":["baby","changing"],"unicode":"🚼️"},{"annotation":"water closet","group":8,"hexcode":"1F6BE","order":3463,"shortcodes":["wc"],"tags":["closet","lavatory","restroom","water","wc"],"unicode":"🚾"},{"annotation":"passport control","group":8,"hexcode":"1F6C2","order":3464,"shortcodes":["passport_control"],"tags":["control","passport"],"unicode":"🛂"},{"annotation":"customs","group":8,"hexcode":"1F6C3","order":3465,"shortcodes":["customs"],"tags":["customs"],"unicode":"🛃"},{"annotation":"baggage claim","group":8,"hexcode":"1F6C4","order":3466,"shortcodes":["baggage_claim"],"tags":["baggage","claim"],"unicode":"🛄"},{"annotation":"left luggage","group":8,"hexcode":"1F6C5","order":3467,"shortcodes":["left_luggage"],"tags":["baggage","locker","luggage"],"unicode":"🛅"},{"annotation":"warning","group":8,"hexcode":"26A0","order":3469,"shortcodes":["warning"],"tags":["warning"],"unicode":"⚠︎"},{"annotation":"children crossing","group":8,"hexcode":"1F6B8","order":3470,"shortcodes":["children_crossing"],"tags":["child","crossing","pedestrian","traffic"],"unicode":"🚸"},{"annotation":"no entry","group":8,"hexcode":"26D4","order":3471,"shortcodes":["no_entry"],"tags":["entry","forbidden","no","not","prohibited","traffic"],"unicode":"⛔️"},{"annotation":"prohibited","group":8,"hexcode":"1F6AB","order":3472,"shortcodes":["no_entry_sign"],"tags":["entry","forbidden","no","not"],"unicode":"🚫"},{"annotation":"no bicycles","group":8,"hexcode":"1F6B3","order":3473,"shortcodes":["no_bicycles"],"tags":["bicycle","bike","forbidden","no","prohibited"],"unicode":"🚳"},{"annotation":"no smoking","group":8,"hexcode":"1F6AD","order":3474,"shortcodes":["no_smoking"],"tags":["forbidden","no","not","prohibited","smoking"],"unicode":"🚭️"},{"annotation":"no littering","group":8,"hexcode":"1F6AF","order":3475,"shortcodes":["do_not_litter"],"tags":["forbidden","litter","no","not","prohibited"],"unicode":"🚯"},{"annotation":"non-potable water","group":8,"hexcode":"1F6B1","order":3476,"shortcodes":["non_potable_water"],"tags":["non-drinking","non-potable","water"],"unicode":"🚱"},{"annotation":"no pedestrians","group":8,"hexcode":"1F6B7","order":3477,"shortcodes":["no_pedestrians"],"tags":["forbidden","no","not","pedestrian","prohibited"],"unicode":"🚷"},{"annotation":"no mobile phones","group":8,"hexcode":"1F4F5","order":3478,"shortcodes":["no_mobile_phones"],"tags":["cell","forbidden","mobile","no","phone"],"unicode":"📵"},{"annotation":"no one under eighteen","group":8,"hexcode":"1F51E","order":3479,"shortcodes":["underage"],"tags":["18","age restriction","eighteen","prohibited","underage"],"unicode":"🔞"},{"annotation":"radioactive","group":8,"hexcode":"2622","order":3481,"shortcodes":["radioactive"],"tags":["sign"],"unicode":"☢︎"},{"annotation":"biohazard","group":8,"hexcode":"2623","order":3483,"shortcodes":["biohazard"],"tags":["sign"],"unicode":"☣︎"},{"annotation":"up arrow","group":8,"hexcode":"2B06","order":3485,"shortcodes":["arrow_up"],"tags":["arrow","cardinal","direction","north"],"unicode":"⬆︎"},{"annotation":"up-right arrow","group":8,"hexcode":"2197","order":3487,"shortcodes":["arrow_upper_right"],"tags":["arrow","direction","intercardinal","northeast"],"unicode":"↗︎"},{"annotation":"right arrow","group":8,"hexcode":"27A1","order":3489,"shortcodes":["arrow_right"],"tags":["arrow","cardinal","direction","east"],"unicode":"➡︎"},{"annotation":"down-right arrow","group":8,"hexcode":"2198","order":3491,"shortcodes":["arrow_lower_right"],"tags":["arrow","direction","intercardinal","southeast"],"unicode":"↘︎"},{"annotation":"down arrow","group":8,"hexcode":"2B07","order":3493,"shortcodes":["arrow_down"],"tags":["arrow","cardinal","direction","down","south"],"unicode":"⬇︎"},{"annotation":"down-left arrow","group":8,"hexcode":"2199","order":3495,"shortcodes":["arrow_lower_left"],"tags":["arrow","direction","intercardinal","southwest"],"unicode":"↙︎"},{"annotation":"left arrow","group":8,"hexcode":"2B05","order":3497,"shortcodes":["arrow_left"],"tags":["arrow","cardinal","direction","west"],"unicode":"⬅︎"},{"annotation":"up-left arrow","group":8,"hexcode":"2196","order":3499,"shortcodes":["arrow_upper_left"],"tags":["arrow","direction","intercardinal","northwest"],"unicode":"↖︎"},{"annotation":"up-down arrow","group":8,"hexcode":"2195","order":3501,"shortcodes":["arrow_up_down"],"tags":["arrow"],"unicode":"↕︎"},{"annotation":"left-right arrow","group":8,"hexcode":"2194","order":3503,"shortcodes":["arrow_left_right"],"tags":["arrow"],"unicode":"↔︎"},{"annotation":"right arrow curving left","group":8,"hexcode":"21A9","order":3505,"shortcodes":["arrow_left_hook"],"tags":["arrow"],"unicode":"↩︎"},{"annotation":"left arrow curving right","group":8,"hexcode":"21AA","order":3507,"shortcodes":["arrow_right_hook"],"tags":["arrow"],"unicode":"↪︎"},{"annotation":"right arrow curving up","group":8,"hexcode":"2934","order":3509,"shortcodes":["arrow_heading_up"],"tags":["arrow"],"unicode":"⤴︎"},{"annotation":"right arrow curving down","group":8,"hexcode":"2935","order":3511,"shortcodes":["arrow_heading_down"],"tags":["arrow","down"],"unicode":"⤵︎"},{"annotation":"clockwise vertical arrows","group":8,"hexcode":"1F503","order":3512,"shortcodes":["clockwise"],"tags":["arrow","clockwise","reload"],"unicode":"🔃"},{"annotation":"counterclockwise arrows button","group":8,"hexcode":"1F504","order":3513,"shortcodes":["counter_clockwise"],"tags":["anticlockwise","arrow","counterclockwise","withershins"],"unicode":"🔄"},{"annotation":"BACK arrow","group":8,"hexcode":"1F519","order":3514,"shortcodes":["back"],"tags":["arrow","back","back arrow"],"unicode":"🔙"},{"annotation":"END arrow","group":8,"hexcode":"1F51A","order":3515,"shortcodes":["end"],"tags":["arrow","end","end arrow"],"unicode":"🔚"},{"annotation":"ON! arrow","group":8,"hexcode":"1F51B","order":3516,"shortcodes":["on"],"tags":["arrow","mark","on","on! arrow"],"unicode":"🔛"},{"annotation":"SOON arrow","group":8,"hexcode":"1F51C","order":3517,"shortcodes":["soon"],"tags":["arrow","soon","soon arrow"],"unicode":"🔜"},{"annotation":"TOP arrow","group":8,"hexcode":"1F51D","order":3518,"shortcodes":["top"],"tags":["arrow","top","top arrow","up"],"unicode":"🔝"},{"annotation":"place of worship","group":8,"hexcode":"1F6D0","order":3519,"shortcodes":["place_of_worship"],"tags":["religion","worship"],"unicode":"🛐"},{"annotation":"atom symbol","group":8,"hexcode":"269B","order":3521,"shortcodes":["atom"],"tags":["atheist","atom"],"unicode":"⚛︎"},{"annotation":"om","group":8,"hexcode":"1F549","order":3523,"shortcodes":["om_symbol"],"tags":["hindu","religion"],"unicode":"🕉︎"},{"annotation":"star of David","group":8,"hexcode":"2721","order":3525,"shortcodes":["star_of_david"],"tags":["david","jew","jewish","religion","star","star of david"],"unicode":"✡︎"},{"annotation":"wheel of dharma","group":8,"hexcode":"2638","order":3527,"shortcodes":["wheel_of_dharma"],"tags":["buddhist","dharma","religion","wheel"],"unicode":"☸︎"},{"annotation":"yin yang","group":8,"hexcode":"262F","order":3529,"shortcodes":["yin_yang"],"tags":["religion","tao","taoist","yang","yin"],"unicode":"☯︎"},{"annotation":"latin cross","group":8,"hexcode":"271D","order":3531,"shortcodes":["cross"],"tags":["christian","cross","religion"],"unicode":"✝︎"},{"annotation":"orthodox cross","group":8,"hexcode":"2626","order":3533,"shortcodes":["orthodox_cross"],"tags":["christian","cross","religion"],"unicode":"☦︎"},{"annotation":"star and crescent","group":8,"hexcode":"262A","order":3535,"shortcodes":["star_and_crescent"],"tags":["islam","muslim","religion"],"unicode":"☪︎"},{"annotation":"peace symbol","group":8,"hexcode":"262E","order":3537,"shortcodes":["peace"],"tags":["peace"],"unicode":"☮︎"},{"annotation":"menorah","group":8,"hexcode":"1F54E","order":3538,"shortcodes":["menorah"],"tags":["candelabrum","candlestick","religion"],"unicode":"🕎"},{"annotation":"dotted six-pointed star","group":8,"hexcode":"1F52F","order":3539,"shortcodes":["six_pointed_star"],"tags":["fortune","star"],"unicode":"🔯"},{"annotation":"Aries","group":8,"hexcode":"2648","order":3540,"shortcodes":["aries"],"tags":["aries","ram","zodiac"],"unicode":"♈️"},{"annotation":"Taurus","group":8,"hexcode":"2649","order":3541,"shortcodes":["taurus"],"tags":["bull","ox","taurus","zodiac"],"unicode":"♉️"},{"annotation":"Gemini","group":8,"hexcode":"264A","order":3542,"shortcodes":["gemini"],"tags":["gemini","twins","zodiac"],"unicode":"♊️"},{"annotation":"Cancer","group":8,"hexcode":"264B","order":3543,"shortcodes":["cancer"],"tags":["cancer","crab","zodiac"],"unicode":"♋️"},{"annotation":"Leo","group":8,"hexcode":"264C","order":3544,"shortcodes":["leo"],"tags":["leo","lion","zodiac"],"unicode":"♌️"},{"annotation":"Virgo","group":8,"hexcode":"264D","order":3545,"shortcodes":["virgo"],"tags":["virgo","zodiac"],"unicode":"♍️"},{"annotation":"Libra","group":8,"hexcode":"264E","order":3546,"shortcodes":["libra"],"tags":["balance","justice","libra","scales","zodiac"],"unicode":"♎️"},{"annotation":"Scorpio","group":8,"hexcode":"264F","order":3547,"shortcodes":["scorpius"],"tags":["scorpio","scorpion","scorpius","zodiac"],"unicode":"♏️"},{"annotation":"Sagittarius","group":8,"hexcode":"2650","order":3548,"shortcodes":["sagittarius"],"tags":["archer","sagittarius","zodiac"],"unicode":"♐️"},{"annotation":"Capricorn","group":8,"hexcode":"2651","order":3549,"shortcodes":["capricorn"],"tags":["capricorn","goat","zodiac"],"unicode":"♑️"},{"annotation":"Aquarius","group":8,"hexcode":"2652","order":3550,"shortcodes":["aquarius"],"tags":["aquarius","bearer","water","zodiac"],"unicode":"♒️"},{"annotation":"Pisces","group":8,"hexcode":"2653","order":3551,"shortcodes":["pisces"],"tags":["fish","pisces","zodiac"],"unicode":"♓️"},{"annotation":"Ophiuchus","group":8,"hexcode":"26CE","order":3552,"shortcodes":["ophiuchus"],"tags":["bearer","ophiuchus","serpent","snake","zodiac"],"unicode":"⛎"},{"annotation":"shuffle tracks button","group":8,"hexcode":"1F500","order":3553,"shortcodes":["shuffle"],"tags":["arrow","crossed"],"unicode":"🔀"},{"annotation":"repeat button","group":8,"hexcode":"1F501","order":3554,"shortcodes":["repeat"],"tags":["arrow","clockwise","repeat"],"unicode":"🔁"},{"annotation":"repeat single button","group":8,"hexcode":"1F502","order":3555,"shortcodes":["repeat_single"],"tags":["arrow","clockwise","once"],"unicode":"🔂"},{"annotation":"play button","group":8,"hexcode":"25B6","order":3557,"shortcodes":["play"],"tags":["arrow","play","right","triangle"],"unicode":"▶︎"},{"annotation":"fast-forward button","group":8,"hexcode":"23E9","order":3558,"shortcodes":["fast_forward"],"tags":["arrow","double","fast","forward"],"unicode":"⏩️"},{"annotation":"next track button","group":8,"hexcode":"23ED","order":3560,"shortcodes":["next_track"],"tags":["arrow","next scene","next track","triangle"],"unicode":"⏭︎"},{"annotation":"play or pause button","group":8,"hexcode":"23EF","order":3562,"shortcodes":["play_pause"],"tags":["arrow","pause","play","right","triangle"],"unicode":"⏯︎"},{"annotation":"reverse button","group":8,"hexcode":"25C0","order":3564,"shortcodes":["reverse"],"tags":["arrow","left","reverse","triangle"],"unicode":"◀︎"},{"annotation":"fast reverse button","group":8,"hexcode":"23EA","order":3565,"shortcodes":["rewind"],"tags":["arrow","double","rewind"],"unicode":"⏪️"},{"annotation":"last track button","group":8,"hexcode":"23EE","order":3567,"shortcodes":["previous_track"],"tags":["arrow","previous scene","previous track","triangle"],"unicode":"⏮︎"},{"annotation":"upwards button","group":8,"hexcode":"1F53C","order":3568,"shortcodes":["up_button"],"tags":["arrow","button","red"],"unicode":"🔼"},{"annotation":"fast up button","group":8,"hexcode":"23EB","order":3569,"shortcodes":["fast_up_button"],"tags":["arrow","double"],"unicode":"⏫"},{"annotation":"downwards button","group":8,"hexcode":"1F53D","order":3570,"shortcodes":["down_button"],"tags":["arrow","button","down","red"],"unicode":"🔽"},{"annotation":"fast down button","group":8,"hexcode":"23EC","order":3571,"shortcodes":["fast_down_button"],"tags":["arrow","double","down"],"unicode":"⏬"},{"annotation":"pause button","group":8,"hexcode":"23F8","order":3573,"shortcodes":["pause"],"tags":["bar","double","pause","vertical"],"unicode":"⏸︎"},{"annotation":"stop button","group":8,"hexcode":"23F9","order":3575,"shortcodes":["stop"],"tags":["square","stop"],"unicode":"⏹︎"},{"annotation":"record button","group":8,"hexcode":"23FA","order":3577,"shortcodes":["record"],"tags":["circle","record"],"unicode":"⏺︎"},{"annotation":"eject button","group":8,"hexcode":"23CF","order":3579,"shortcodes":["eject"],"tags":["eject"],"unicode":"⏏︎"},{"annotation":"cinema","group":8,"hexcode":"1F3A6","order":3580,"shortcodes":["cinema"],"tags":["camera","film","movie"],"unicode":"🎦"},{"annotation":"dim button","group":8,"hexcode":"1F505","order":3581,"shortcodes":["dim","low_brightness"],"tags":["brightness","dim","low"],"unicode":"🔅"},{"annotation":"bright button","group":8,"hexcode":"1F506","order":3582,"shortcodes":["bright","high_brightness"],"tags":["bright","brightness"],"unicode":"🔆"},{"annotation":"antenna bars","group":8,"hexcode":"1F4F6","order":3583,"shortcodes":["signal_strength","antenna_bars"],"tags":["antenna","bar","cell","mobile","phone"],"unicode":"📶"},{"annotation":"vibration mode","group":8,"hexcode":"1F4F3","order":3584,"shortcodes":["vibration_mode"],"tags":["cell","mobile","mode","phone","telephone","vibration"],"unicode":"📳"},{"annotation":"mobile phone off","group":8,"hexcode":"1F4F4","order":3585,"shortcodes":["mobile_phone_off"],"tags":["cell","mobile","off","phone","telephone"],"unicode":"📴"},{"annotation":"female sign","group":8,"hexcode":"2640","order":3587,"shortcodes":["female","female_sign"],"tags":["woman"],"unicode":"♀︎"},{"annotation":"male sign","group":8,"hexcode":"2642","order":3589,"shortcodes":["male","male_sign"],"tags":["man"],"unicode":"♂︎"},{"annotation":"medical symbol","group":8,"hexcode":"2695","order":3591,"shortcodes":["medical"],"tags":["aesculapius","medicine","staff"],"unicode":"⚕︎"},{"annotation":"infinity","group":8,"hexcode":"267E","order":3593,"shortcodes":["infinity"],"tags":["forever","unbounded","universal"],"unicode":"♾︎"},{"annotation":"recycling symbol","group":8,"hexcode":"267B","order":3595,"shortcodes":["recycle"],"tags":["recycle"],"unicode":"♻︎"},{"annotation":"fleur-de-lis","group":8,"hexcode":"269C","order":3597,"shortcodes":["fleur-de-lis"],"tags":["fleur-de-lis"],"unicode":"⚜︎"},{"annotation":"trident emblem","group":8,"hexcode":"1F531","order":3598,"shortcodes":["trident"],"tags":["anchor","emblem","ship","tool","trident"],"unicode":"🔱"},{"annotation":"name badge","group":8,"hexcode":"1F4DB","order":3599,"shortcodes":["name_badge"],"tags":["badge","name"],"unicode":"📛"},{"annotation":"Japanese symbol for beginner","group":8,"hexcode":"1F530","order":3600,"shortcodes":["ja_beginner"],"tags":["beginner","chevron","japanese","japanese symbol for beginner","leaf"],"unicode":"🔰"},{"annotation":"hollow red circle","group":8,"hexcode":"2B55","order":3601,"shortcodes":["o"],"tags":["circle","large","o","red"],"unicode":"⭕️"},{"annotation":"check mark button","group":8,"hexcode":"2705","order":3602,"shortcodes":["white_check_mark"],"tags":["button","check","mark","✓"],"unicode":"✅"},{"annotation":"check box with check","group":8,"hexcode":"2611","order":3604,"shortcodes":["checked_ballot"],"tags":["box","check","✓"],"unicode":"☑︎"},{"annotation":"check mark","group":8,"hexcode":"2714","order":3606,"shortcodes":["check_mark"],"tags":["check","mark","✓"],"unicode":"✔︎"},{"annotation":"multiplication sign","group":8,"hexcode":"2716","order":3608,"shortcodes":["multiplication"],"tags":["cancel","multiplication","multiply","sign","x","×"],"unicode":"✖︎"},{"annotation":"cross mark","group":8,"hexcode":"274C","order":3609,"shortcodes":["x","cross_mark"],"tags":["cancel","cross","mark","multiplication","multiply","x","×"],"unicode":"❌"},{"annotation":"cross mark button","group":8,"hexcode":"274E","order":3610,"shortcodes":["cross_mark_button"],"tags":["mark","square","x","×"],"unicode":"❎"},{"annotation":"plus sign","group":8,"hexcode":"2795","order":3611,"shortcodes":["plus"],"tags":["+","math","plus","sign"],"unicode":"➕"},{"annotation":"minus sign","group":8,"hexcode":"2796","order":3612,"shortcodes":["minus"],"tags":["-","math","minus","sign","−"],"unicode":"➖"},{"annotation":"division sign","group":8,"hexcode":"2797","order":3613,"shortcodes":["division"],"tags":["division","math","sign","÷"],"unicode":"➗"},{"annotation":"curly loop","group":8,"hexcode":"27B0","order":3614,"shortcodes":["curly_loop"],"tags":["curl","loop"],"unicode":"➰"},{"annotation":"double curly loop","group":8,"hexcode":"27BF","order":3615,"shortcodes":["double_curly_loop"],"tags":["curl","double","loop"],"unicode":"➿"},{"annotation":"part alternation mark","group":8,"hexcode":"303D","order":3617,"shortcodes":["part_alternation_mark"],"tags":["mark","part"],"unicode":"〽︎"},{"annotation":"eight-spoked asterisk","group":8,"hexcode":"2733","order":3619,"shortcodes":["eight_spoked_asterisk"],"tags":["*","asterisk"],"unicode":"✳︎"},{"annotation":"eight-pointed star","group":8,"hexcode":"2734","order":3621,"shortcodes":["eight_pointed_star"],"tags":["*","star"],"unicode":"✴︎"},{"annotation":"sparkle","group":8,"hexcode":"2747","order":3623,"shortcodes":["sparkle"],"tags":["*"],"unicode":"❇︎"},{"annotation":"double exclamation mark","group":8,"hexcode":"203C","order":3625,"shortcodes":["bangbang","double_exclamation"],"tags":["!","!!","bangbang","exclamation","mark"],"unicode":"‼︎"},{"annotation":"exclamation question mark","group":8,"hexcode":"2049","order":3627,"shortcodes":["interrobang","exclamation_question"],"tags":["!","!?","?","exclamation","interrobang","mark","punctuation","question"],"unicode":"⁉︎"},{"annotation":"question mark","group":8,"hexcode":"2753","order":3628,"shortcodes":["question"],"tags":["?","mark","punctuation","question"],"unicode":"❓️"},{"annotation":"white question mark","group":8,"hexcode":"2754","order":3629,"shortcodes":["white_question"],"tags":["?","mark","outlined","punctuation","question"],"unicode":"❔"},{"annotation":"white exclamation mark","group":8,"hexcode":"2755","order":3630,"shortcodes":["white_exclamation"],"tags":["!","exclamation","mark","outlined","punctuation"],"unicode":"❕"},{"annotation":"exclamation mark","group":8,"hexcode":"2757","order":3631,"shortcodes":["exclamation"],"tags":["!","exclamation","mark","punctuation"],"unicode":"❗️"},{"annotation":"wavy dash","group":8,"hexcode":"3030","order":3633,"shortcodes":["wavy_dash"],"tags":["dash","punctuation","wavy"],"unicode":"〰︎"},{"annotation":"copyright","group":8,"hexcode":"00A9","order":3635,"shortcodes":["copyright"],"tags":["c"],"unicode":"©︎"},{"annotation":"registered","group":8,"hexcode":"00AE","order":3637,"shortcodes":["registered"],"tags":["r"],"unicode":"®︎"},{"annotation":"trade mark","group":8,"hexcode":"2122","order":3639,"shortcodes":["tm"],"tags":["mark","tm","trademark"],"unicode":"™︎"},{"annotation":"keycap: #","group":8,"hexcode":"0023-FE0F-20E3","order":3640,"shortcodes":["hash"],"tags":["keycap"],"unicode":"#️⃣"},{"annotation":"keycap: *","group":8,"hexcode":"002A-FE0F-20E3","order":3642,"shortcodes":["asterisk"],"tags":["keycap"],"unicode":"*️⃣"},{"annotation":"keycap: 0","group":8,"hexcode":"0030-FE0F-20E3","order":3644,"shortcodes":["zero"],"tags":["keycap"],"unicode":"0️⃣"},{"annotation":"keycap: 1","group":8,"hexcode":"0031-FE0F-20E3","order":3646,"shortcodes":["one"],"tags":["keycap"],"unicode":"1️⃣"},{"annotation":"keycap: 2","group":8,"hexcode":"0032-FE0F-20E3","order":3648,"shortcodes":["two"],"tags":["keycap"],"unicode":"2️⃣"},{"annotation":"keycap: 3","group":8,"hexcode":"0033-FE0F-20E3","order":3650,"shortcodes":["three"],"tags":["keycap"],"unicode":"3️⃣"},{"annotation":"keycap: 4","group":8,"hexcode":"0034-FE0F-20E3","order":3652,"shortcodes":["four"],"tags":["keycap"],"unicode":"4️⃣"},{"annotation":"keycap: 5","group":8,"hexcode":"0035-FE0F-20E3","order":3654,"shortcodes":["five"],"tags":["keycap"],"unicode":"5️⃣"},{"annotation":"keycap: 6","group":8,"hexcode":"0036-FE0F-20E3","order":3656,"shortcodes":["six"],"tags":["keycap"],"unicode":"6️⃣"},{"annotation":"keycap: 7","group":8,"hexcode":"0037-FE0F-20E3","order":3658,"shortcodes":["seven"],"tags":["keycap"],"unicode":"7️⃣"},{"annotation":"keycap: 8","group":8,"hexcode":"0038-FE0F-20E3","order":3660,"shortcodes":["eight"],"tags":["keycap"],"unicode":"8️⃣"},{"annotation":"keycap: 9","group":8,"hexcode":"0039-FE0F-20E3","order":3662,"shortcodes":["nine"],"tags":["keycap"],"unicode":"9️⃣"},{"annotation":"keycap: 10","group":8,"hexcode":"1F51F","order":3664,"shortcodes":["ten"],"tags":["keycap"],"unicode":"🔟"},{"annotation":"input latin uppercase","group":8,"hexcode":"1F520","order":3665,"shortcodes":["upper_abcd"],"tags":["abcd","input","latin","letters","uppercase"],"unicode":"🔠"},{"annotation":"input latin lowercase","group":8,"hexcode":"1F521","order":3666,"shortcodes":["abcd"],"tags":["abcd","input","latin","letters","lowercase"],"unicode":"🔡"},{"annotation":"input numbers","group":8,"hexcode":"1F522","order":3667,"shortcodes":["1234"],"tags":["1234","input","numbers"],"unicode":"🔢"},{"annotation":"input symbols","group":8,"hexcode":"1F523","order":3668,"shortcodes":["symbols"],"tags":["input","〒♪&%"],"unicode":"🔣"},{"annotation":"input latin letters","group":8,"hexcode":"1F524","order":3669,"shortcodes":["abc"],"tags":["abc","alphabet","input","latin","letters"],"unicode":"🔤"},{"annotation":"A button (blood type)","group":8,"hexcode":"1F170","order":3671,"shortcodes":["a_blood"],"tags":["a","a button (blood type)","blood type"],"unicode":"🅰︎"},{"annotation":"AB button (blood type)","group":8,"hexcode":"1F18E","order":3672,"shortcodes":["ab_blood"],"tags":["ab","ab button (blood type)","blood type"],"unicode":"🆎"},{"annotation":"B button (blood type)","group":8,"hexcode":"1F171","order":3674,"shortcodes":["b_blood"],"tags":["b","b button (blood type)","blood type"],"unicode":"🅱︎"},{"annotation":"CL button","group":8,"hexcode":"1F191","order":3675,"shortcodes":["cl"],"tags":["cl","cl button"],"unicode":"🆑"},{"annotation":"COOL button","group":8,"hexcode":"1F192","order":3676,"shortcodes":["cool"],"tags":["cool","cool button"],"unicode":"🆒"},{"annotation":"FREE button","group":8,"hexcode":"1F193","order":3677,"shortcodes":["free"],"tags":["free","free button"],"unicode":"🆓"},{"annotation":"information","group":8,"hexcode":"2139","order":3679,"shortcodes":["info"],"tags":["i"],"unicode":"ℹ︎"},{"annotation":"ID button","group":8,"hexcode":"1F194","order":3680,"shortcodes":["id"],"tags":["id","id button","identity"],"unicode":"🆔"},{"annotation":"circled M","group":8,"hexcode":"24C2","order":3682,"shortcodes":["m"],"tags":["circle","circled m","m"],"unicode":"Ⓜ︎"},{"annotation":"NEW button","group":8,"hexcode":"1F195","order":3683,"shortcodes":["new"],"tags":["new","new button"],"unicode":"🆕"},{"annotation":"NG button","group":8,"hexcode":"1F196","order":3684,"shortcodes":["ng"],"tags":["ng","ng button"],"unicode":"🆖"},{"annotation":"O button (blood type)","group":8,"hexcode":"1F17E","order":3686,"shortcodes":["o_blood"],"tags":["blood type","o","o button (blood type)"],"unicode":"🅾︎"},{"annotation":"OK button","group":8,"hexcode":"1F197","order":3687,"shortcodes":["ok"],"tags":["ok","ok button"],"unicode":"🆗"},{"annotation":"P button","group":8,"hexcode":"1F17F","order":3689,"shortcodes":["p"],"tags":["p button","parking"],"unicode":"🅿︎"},{"annotation":"SOS button","group":8,"hexcode":"1F198","order":3690,"shortcodes":["sos"],"tags":["help","sos","sos button"],"unicode":"🆘"},{"annotation":"UP! button","group":8,"hexcode":"1F199","order":3691,"shortcodes":["up"],"tags":["mark","up","up! button"],"unicode":"🆙"},{"annotation":"VS button","group":8,"hexcode":"1F19A","order":3692,"shortcodes":["vs"],"tags":["versus","vs","vs button"],"unicode":"🆚"},{"annotation":"Japanese “here” button","group":8,"hexcode":"1F201","order":3693,"shortcodes":["ja_here","koko"],"tags":["japanese","japanese “here” button","katakana","“here”","ココ"],"unicode":"🈁"},{"annotation":"Japanese “service charge” button","group":8,"hexcode":"1F202","order":3695,"shortcodes":["ja_service_charge"],"tags":["japanese","japanese “service charge” button","katakana","“service charge”","サ"],"unicode":"🈂︎"},{"annotation":"Japanese “monthly amount” button","group":8,"hexcode":"1F237","order":3697,"shortcodes":["ja_monthly_amount"],"tags":["ideograph","japanese","japanese “monthly amount” button","“monthly amount”","月"],"unicode":"🈷︎"},{"annotation":"Japanese “not free of charge” button","group":8,"hexcode":"1F236","order":3698,"shortcodes":["ja_not_free_of_carge"],"tags":["ideograph","japanese","japanese “not free of charge” button","“not free of charge”","有"],"unicode":"🈶"},{"annotation":"Japanese “reserved” button","group":8,"hexcode":"1F22F","order":3699,"shortcodes":["ja_reserved"],"tags":["ideograph","japanese","japanese “reserved” button","“reserved”","指"],"unicode":"🈯️"},{"annotation":"Japanese “bargain” button","group":8,"hexcode":"1F250","order":3700,"shortcodes":["ja_bargain"],"tags":["ideograph","japanese","japanese “bargain” button","“bargain”","得"],"unicode":"🉐"},{"annotation":"Japanese “discount” button","group":8,"hexcode":"1F239","order":3701,"shortcodes":["ja_discount"],"tags":["ideograph","japanese","japanese “discount” button","“discount”","割"],"unicode":"🈹"},{"annotation":"Japanese “free of charge” button","group":8,"hexcode":"1F21A","order":3702,"shortcodes":["ja_free_of_charge"],"tags":["ideograph","japanese","japanese “free of charge” button","“free of charge”","無"],"unicode":"🈚️"},{"annotation":"Japanese “prohibited” button","group":8,"hexcode":"1F232","order":3703,"shortcodes":["ja_prohibited"],"tags":["ideograph","japanese","japanese “prohibited” button","“prohibited”","禁"],"unicode":"🈲"},{"annotation":"Japanese “acceptable” button","group":8,"hexcode":"1F251","order":3704,"shortcodes":["ja_acceptable"],"tags":["ideograph","japanese","japanese “acceptable” button","“acceptable”","可"],"unicode":"🉑"},{"annotation":"Japanese “application” button","group":8,"hexcode":"1F238","order":3705,"shortcodes":["ja_application"],"tags":["ideograph","japanese","japanese “application” button","“application”","申"],"unicode":"🈸"},{"annotation":"Japanese “passing grade” button","group":8,"hexcode":"1F234","order":3706,"shortcodes":["ja_passing_grade"],"tags":["ideograph","japanese","japanese “passing grade” button","“passing grade”","合"],"unicode":"🈴"},{"annotation":"Japanese “vacancy” button","group":8,"hexcode":"1F233","order":3707,"shortcodes":["ja_vacancy"],"tags":["ideograph","japanese","japanese “vacancy” button","“vacancy”","空"],"unicode":"🈳"},{"annotation":"Japanese “congratulations” button","group":8,"hexcode":"3297","order":3709,"shortcodes":["ja_congratulations"],"tags":["ideograph","japanese","japanese “congratulations” button","“congratulations”","祝"],"unicode":"㊗︎"},{"annotation":"Japanese “secret” button","group":8,"hexcode":"3299","order":3711,"shortcodes":["ja_secret"],"tags":["ideograph","japanese","japanese “secret” button","“secret”","秘"],"unicode":"㊙︎"},{"annotation":"Japanese “open for business” button","group":8,"hexcode":"1F23A","order":3712,"shortcodes":["ja_open_for_business"],"tags":["ideograph","japanese","japanese “open for business” button","“open for business”","営"],"unicode":"🈺"},{"annotation":"Japanese “no vacancy” button","group":8,"hexcode":"1F235","order":3713,"shortcodes":["ja_no_vacancy"],"tags":["ideograph","japanese","japanese “no vacancy” button","“no vacancy”","満"],"unicode":"🈵"},{"annotation":"red circle","group":8,"hexcode":"1F534","order":3714,"shortcodes":["red_circle"],"tags":["circle","geometric","red"],"unicode":"🔴"},{"annotation":"orange circle","group":8,"hexcode":"1F7E0","order":3715,"shortcodes":["orange_circle"],"tags":["circle","orange"],"unicode":"🟠"},{"annotation":"yellow circle","group":8,"hexcode":"1F7E1","order":3716,"shortcodes":["yellow_circle"],"tags":["circle","yellow"],"unicode":"🟡"},{"annotation":"green circle","group":8,"hexcode":"1F7E2","order":3717,"shortcodes":["green_circle"],"tags":["circle","green"],"unicode":"🟢"},{"annotation":"blue circle","group":8,"hexcode":"1F535","order":3718,"shortcodes":["blue_circle"],"tags":["blue","circle","geometric"],"unicode":"🔵"},{"annotation":"purple circle","group":8,"hexcode":"1F7E3","order":3719,"shortcodes":["purple_circle"],"tags":["circle","purple"],"unicode":"🟣"},{"annotation":"brown circle","group":8,"hexcode":"1F7E4","order":3720,"shortcodes":["brown_circle"],"tags":["brown","circle"],"unicode":"🟤"},{"annotation":"black circle","group":8,"hexcode":"26AB","order":3721,"shortcodes":["black_circle"],"tags":["circle","geometric"],"unicode":"⚫️"},{"annotation":"white circle","group":8,"hexcode":"26AA","order":3722,"shortcodes":["white_circle"],"tags":["circle","geometric"],"unicode":"⚪️"},{"annotation":"red square","group":8,"hexcode":"1F7E5","order":3723,"shortcodes":["red_square"],"tags":["red","square"],"unicode":"🟥"},{"annotation":"orange square","group":8,"hexcode":"1F7E7","order":3724,"shortcodes":["orange_square"],"tags":["orange","square"],"unicode":"🟧"},{"annotation":"yellow square","group":8,"hexcode":"1F7E8","order":3725,"shortcodes":["yellow_square"],"tags":["square","yellow"],"unicode":"🟨"},{"annotation":"green square","group":8,"hexcode":"1F7E9","order":3726,"shortcodes":["green_square"],"tags":["green","square"],"unicode":"🟩"},{"annotation":"blue square","group":8,"hexcode":"1F7E6","order":3727,"shortcodes":["blue_square"],"tags":["blue","square"],"unicode":"🟦"},{"annotation":"purple square","group":8,"hexcode":"1F7EA","order":3728,"shortcodes":["purple_square"],"tags":["purple","square"],"unicode":"🟪"},{"annotation":"brown square","group":8,"hexcode":"1F7EB","order":3729,"shortcodes":["brown_square"],"tags":["brown","square"],"unicode":"🟫"},{"annotation":"black large square","group":8,"hexcode":"2B1B","order":3730,"shortcodes":["large_black_square"],"tags":["geometric","square"],"unicode":"⬛️"},{"annotation":"white large square","group":8,"hexcode":"2B1C","order":3731,"shortcodes":["large_white_square"],"tags":["geometric","square"],"unicode":"⬜️"},{"annotation":"black medium square","group":8,"hexcode":"25FC","order":3733,"shortcodes":["medium_black_square"],"tags":["geometric","square"],"unicode":"◼︎"},{"annotation":"white medium square","group":8,"hexcode":"25FB","order":3735,"shortcodes":["medium_white_square"],"tags":["geometric","square"],"unicode":"◻︎"},{"annotation":"black medium-small square","group":8,"hexcode":"25FE","order":3736,"shortcodes":["medium_small_black_square"],"tags":["geometric","square"],"unicode":"◾️"},{"annotation":"white medium-small square","group":8,"hexcode":"25FD","order":3737,"shortcodes":["medium_small_white_square"],"tags":["geometric","square"],"unicode":"◽️"},{"annotation":"black small square","group":8,"hexcode":"25AA","order":3739,"shortcodes":["small_black_square"],"tags":["geometric","square"],"unicode":"▪︎"},{"annotation":"white small square","group":8,"hexcode":"25AB","order":3741,"shortcodes":["small_white_square"],"tags":["geometric","square"],"unicode":"▫︎"},{"annotation":"large orange diamond","group":8,"hexcode":"1F536","order":3742,"shortcodes":["large_orange_diamond"],"tags":["diamond","geometric","orange"],"unicode":"🔶"},{"annotation":"large blue diamond","group":8,"hexcode":"1F537","order":3743,"shortcodes":["large_blue_diamond"],"tags":["blue","diamond","geometric"],"unicode":"🔷"},{"annotation":"small orange diamond","group":8,"hexcode":"1F538","order":3744,"shortcodes":["small_orange_diamond"],"tags":["diamond","geometric","orange"],"unicode":"🔸"},{"annotation":"small blue diamond","group":8,"hexcode":"1F539","order":3745,"shortcodes":["small_blue_diamond"],"tags":["blue","diamond","geometric"],"unicode":"🔹"},{"annotation":"red triangle pointed up","group":8,"hexcode":"1F53A","order":3746,"shortcodes":["up_red_triangle"],"tags":["geometric","red"],"unicode":"🔺"},{"annotation":"red triangle pointed down","group":8,"hexcode":"1F53B","order":3747,"shortcodes":["down_red_triangle"],"tags":["down","geometric","red"],"unicode":"🔻"},{"annotation":"diamond with a dot","group":8,"hexcode":"1F4A0","order":3748,"shortcodes":["diamond_dot"],"tags":["comic","diamond","geometric","inside"],"unicode":"💠"},{"annotation":"radio button","group":8,"hexcode":"1F518","order":3749,"shortcodes":["radio_button"],"tags":["button","geometric","radio"],"unicode":"🔘"},{"annotation":"white square button","group":8,"hexcode":"1F533","order":3750,"shortcodes":["white_square_button"],"tags":["button","geometric","outlined","square"],"unicode":"🔳"},{"annotation":"black square button","group":8,"hexcode":"1F532","order":3751,"shortcodes":["black_square_button"],"tags":["button","geometric","square"],"unicode":"🔲"},{"annotation":"chequered flag","group":9,"hexcode":"1F3C1","order":3752,"shortcodes":["checkered_flag"],"tags":["checkered","chequered","racing"],"unicode":"🏁"},{"annotation":"triangular flag","group":9,"hexcode":"1F6A9","order":3753,"shortcodes":["triangle_flag"],"tags":["post"],"unicode":"🚩"},{"annotation":"crossed flags","group":9,"hexcode":"1F38C","order":3754,"shortcodes":["crossed_flags"],"tags":["celebration","cross","crossed","japanese"],"unicode":"🎌"},{"annotation":"black flag","group":9,"hexcode":"1F3F4","order":3755,"shortcodes":["black_flag"],"tags":["waving"],"unicode":"🏴"},{"annotation":"white flag","group":9,"hexcode":"1F3F3","order":3757,"shortcodes":["white_flag"],"tags":["waving"],"unicode":"🏳︎"},{"annotation":"rainbow flag","group":9,"hexcode":"1F3F3-FE0F-200D-1F308","order":3758,"shortcodes":["rainbow_flag"],"tags":["pride","rainbow"],"unicode":"🏳️‍🌈"},{"annotation":"pirate flag","group":9,"hexcode":"1F3F4-200D-2620-FE0F","order":3760,"shortcodes":["pirate_flag","jolly_roger"],"tags":["jolly roger","pirate","plunder","treasure"],"unicode":"🏴‍☠️"},{"annotation":"flag: Ascension Island","group":9,"hexcode":"1F1E6-1F1E8","order":3762,"shortcodes":["flag_ac"],"tags":["AC","flag"],"unicode":"🇦🇨"},{"annotation":"flag: Andorra","group":9,"hexcode":"1F1E6-1F1E9","order":3763,"shortcodes":["flag_ad"],"tags":["AD","flag"],"unicode":"🇦🇩"},{"annotation":"flag: United Arab Emirates","group":9,"hexcode":"1F1E6-1F1EA","order":3764,"shortcodes":["flag_ae"],"tags":["AE","flag"],"unicode":"🇦🇪"},{"annotation":"flag: Afghanistan","group":9,"hexcode":"1F1E6-1F1EB","order":3765,"shortcodes":["flag_af"],"tags":["AF","flag"],"unicode":"🇦🇫"},{"annotation":"flag: Antigua & Barbuda","group":9,"hexcode":"1F1E6-1F1EC","order":3766,"shortcodes":["flag_ag"],"tags":["AG","flag"],"unicode":"🇦🇬"},{"annotation":"flag: Anguilla","group":9,"hexcode":"1F1E6-1F1EE","order":3767,"shortcodes":["flag_ai"],"tags":["AI","flag"],"unicode":"🇦🇮"},{"annotation":"flag: Albania","group":9,"hexcode":"1F1E6-1F1F1","order":3768,"shortcodes":["flag_al"],"tags":["AL","flag"],"unicode":"🇦🇱"},{"annotation":"flag: Armenia","group":9,"hexcode":"1F1E6-1F1F2","order":3769,"shortcodes":["flag_am"],"tags":["AM","flag"],"unicode":"🇦🇲"},{"annotation":"flag: Angola","group":9,"hexcode":"1F1E6-1F1F4","order":3770,"shortcodes":["flag_ao"],"tags":["AO","flag"],"unicode":"🇦🇴"},{"annotation":"flag: Antarctica","group":9,"hexcode":"1F1E6-1F1F6","order":3771,"shortcodes":["flag_aq"],"tags":["AQ","flag"],"unicode":"🇦🇶"},{"annotation":"flag: Argentina","group":9,"hexcode":"1F1E6-1F1F7","order":3772,"shortcodes":["flag_ar"],"tags":["AR","flag"],"unicode":"🇦🇷"},{"annotation":"flag: American Samoa","group":9,"hexcode":"1F1E6-1F1F8","order":3773,"shortcodes":["flag_as"],"tags":["AS","flag"],"unicode":"🇦🇸"},{"annotation":"flag: Austria","group":9,"hexcode":"1F1E6-1F1F9","order":3774,"shortcodes":["flag_at"],"tags":["AT","flag"],"unicode":"🇦🇹"},{"annotation":"flag: Australia","group":9,"hexcode":"1F1E6-1F1FA","order":3775,"shortcodes":["flag_au"],"tags":["AU","flag"],"unicode":"🇦🇺"},{"annotation":"flag: Aruba","group":9,"hexcode":"1F1E6-1F1FC","order":3776,"shortcodes":["flag_aw"],"tags":["AW","flag"],"unicode":"🇦🇼"},{"annotation":"flag: Åland Islands","group":9,"hexcode":"1F1E6-1F1FD","order":3777,"shortcodes":["flag_ax"],"tags":["AX","flag"],"unicode":"🇦🇽"},{"annotation":"flag: Azerbaijan","group":9,"hexcode":"1F1E6-1F1FF","order":3778,"shortcodes":["flag_az"],"tags":["AZ","flag"],"unicode":"🇦🇿"},{"annotation":"flag: Bosnia & Herzegovina","group":9,"hexcode":"1F1E7-1F1E6","order":3779,"shortcodes":["flag_ba"],"tags":["BA","flag"],"unicode":"🇧🇦"},{"annotation":"flag: Barbados","group":9,"hexcode":"1F1E7-1F1E7","order":3780,"shortcodes":["flag_bb"],"tags":["BB","flag"],"unicode":"🇧🇧"},{"annotation":"flag: Bangladesh","group":9,"hexcode":"1F1E7-1F1E9","order":3781,"shortcodes":["flag_bd"],"tags":["BD","flag"],"unicode":"🇧🇩"},{"annotation":"flag: Belgium","group":9,"hexcode":"1F1E7-1F1EA","order":3782,"shortcodes":["flag_be"],"tags":["BE","flag"],"unicode":"🇧🇪"},{"annotation":"flag: Burkina Faso","group":9,"hexcode":"1F1E7-1F1EB","order":3783,"shortcodes":["flag_bf"],"tags":["BF","flag"],"unicode":"🇧🇫"},{"annotation":"flag: Bulgaria","group":9,"hexcode":"1F1E7-1F1EC","order":3784,"shortcodes":["flag_bg"],"tags":["BG","flag"],"unicode":"🇧🇬"},{"annotation":"flag: Bahrain","group":9,"hexcode":"1F1E7-1F1ED","order":3785,"shortcodes":["flag_bh"],"tags":["BH","flag"],"unicode":"🇧🇭"},{"annotation":"flag: Burundi","group":9,"hexcode":"1F1E7-1F1EE","order":3786,"shortcodes":["flag_bi"],"tags":["BI","flag"],"unicode":"🇧🇮"},{"annotation":"flag: Benin","group":9,"hexcode":"1F1E7-1F1EF","order":3787,"shortcodes":["flag_bj"],"tags":["BJ","flag"],"unicode":"🇧🇯"},{"annotation":"flag: St. Barthélemy","group":9,"hexcode":"1F1E7-1F1F1","order":3788,"shortcodes":["flag_bl"],"tags":["BL","flag"],"unicode":"🇧🇱"},{"annotation":"flag: Bermuda","group":9,"hexcode":"1F1E7-1F1F2","order":3789,"shortcodes":["flag_bm"],"tags":["BM","flag"],"unicode":"🇧🇲"},{"annotation":"flag: Brunei","group":9,"hexcode":"1F1E7-1F1F3","order":3790,"shortcodes":["flag_bn"],"tags":["BN","flag"],"unicode":"🇧🇳"},{"annotation":"flag: Bolivia","group":9,"hexcode":"1F1E7-1F1F4","order":3791,"shortcodes":["flag_bo"],"tags":["BO","flag"],"unicode":"🇧🇴"},{"annotation":"flag: Caribbean Netherlands","group":9,"hexcode":"1F1E7-1F1F6","order":3792,"shortcodes":["flag_bq"],"tags":["BQ","flag"],"unicode":"🇧🇶"},{"annotation":"flag: Brazil","group":9,"hexcode":"1F1E7-1F1F7","order":3793,"shortcodes":["flag_br"],"tags":["BR","flag"],"unicode":"🇧🇷"},{"annotation":"flag: Bahamas","group":9,"hexcode":"1F1E7-1F1F8","order":3794,"shortcodes":["flag_bs"],"tags":["BS","flag"],"unicode":"🇧🇸"},{"annotation":"flag: Bhutan","group":9,"hexcode":"1F1E7-1F1F9","order":3795,"shortcodes":["flag_bt"],"tags":["BT","flag"],"unicode":"🇧🇹"},{"annotation":"flag: Bouvet Island","group":9,"hexcode":"1F1E7-1F1FB","order":3796,"shortcodes":["flag_bv"],"tags":["BV","flag"],"unicode":"🇧🇻"},{"annotation":"flag: Botswana","group":9,"hexcode":"1F1E7-1F1FC","order":3797,"shortcodes":["flag_bw"],"tags":["BW","flag"],"unicode":"🇧🇼"},{"annotation":"flag: Belarus","group":9,"hexcode":"1F1E7-1F1FE","order":3798,"shortcodes":["flag_by"],"tags":["BY","flag"],"unicode":"🇧🇾"},{"annotation":"flag: Belize","group":9,"hexcode":"1F1E7-1F1FF","order":3799,"shortcodes":["flag_bz"],"tags":["BZ","flag"],"unicode":"🇧🇿"},{"annotation":"flag: Canada","group":9,"hexcode":"1F1E8-1F1E6","order":3800,"shortcodes":["flag_ca"],"tags":["CA","flag"],"unicode":"🇨🇦"},{"annotation":"flag: Cocos (Keeling) Islands","group":9,"hexcode":"1F1E8-1F1E8","order":3801,"shortcodes":["flag_cc"],"tags":["CC","flag"],"unicode":"🇨🇨"},{"annotation":"flag: Congo - Kinshasa","group":9,"hexcode":"1F1E8-1F1E9","order":3802,"shortcodes":["flag_cd"],"tags":["CD","flag"],"unicode":"🇨🇩"},{"annotation":"flag: Central African Republic","group":9,"hexcode":"1F1E8-1F1EB","order":3803,"shortcodes":["flag_cf"],"tags":["CF","flag"],"unicode":"🇨🇫"},{"annotation":"flag: Congo - Brazzaville","group":9,"hexcode":"1F1E8-1F1EC","order":3804,"shortcodes":["flag_cg"],"tags":["CG","flag"],"unicode":"🇨🇬"},{"annotation":"flag: Switzerland","group":9,"hexcode":"1F1E8-1F1ED","order":3805,"shortcodes":["flag_ch"],"tags":["CH","flag"],"unicode":"🇨🇭"},{"annotation":"flag: Côte d’Ivoire","group":9,"hexcode":"1F1E8-1F1EE","order":3806,"shortcodes":["flag_ci"],"tags":["CI","flag"],"unicode":"🇨🇮"},{"annotation":"flag: Cook Islands","group":9,"hexcode":"1F1E8-1F1F0","order":3807,"shortcodes":["flag_ck"],"tags":["CK","flag"],"unicode":"🇨🇰"},{"annotation":"flag: Chile","group":9,"hexcode":"1F1E8-1F1F1","order":3808,"shortcodes":["flag_cl"],"tags":["CL","flag"],"unicode":"🇨🇱"},{"annotation":"flag: Cameroon","group":9,"hexcode":"1F1E8-1F1F2","order":3809,"shortcodes":["flag_cm"],"tags":["CM","flag"],"unicode":"🇨🇲"},{"annotation":"flag: China","group":9,"hexcode":"1F1E8-1F1F3","order":3810,"shortcodes":["flag_cn"],"tags":["CN","flag"],"unicode":"🇨🇳"},{"annotation":"flag: Colombia","group":9,"hexcode":"1F1E8-1F1F4","order":3811,"shortcodes":["flag_co"],"tags":["CO","flag"],"unicode":"🇨🇴"},{"annotation":"flag: Clipperton Island","group":9,"hexcode":"1F1E8-1F1F5","order":3812,"shortcodes":["flag_cp"],"tags":["CP","flag"],"unicode":"🇨🇵"},{"annotation":"flag: Costa Rica","group":9,"hexcode":"1F1E8-1F1F7","order":3813,"shortcodes":["flag_cr"],"tags":["CR","flag"],"unicode":"🇨🇷"},{"annotation":"flag: Cuba","group":9,"hexcode":"1F1E8-1F1FA","order":3814,"shortcodes":["flag_cu"],"tags":["CU","flag"],"unicode":"🇨🇺"},{"annotation":"flag: Cape Verde","group":9,"hexcode":"1F1E8-1F1FB","order":3815,"shortcodes":["flag_cv"],"tags":["CV","flag"],"unicode":"🇨🇻"},{"annotation":"flag: Curaçao","group":9,"hexcode":"1F1E8-1F1FC","order":3816,"shortcodes":["flag_cw"],"tags":["CW","flag"],"unicode":"🇨🇼"},{"annotation":"flag: Christmas Island","group":9,"hexcode":"1F1E8-1F1FD","order":3817,"shortcodes":["flag_cx"],"tags":["CX","flag"],"unicode":"🇨🇽"},{"annotation":"flag: Cyprus","group":9,"hexcode":"1F1E8-1F1FE","order":3818,"shortcodes":["flag_cy"],"tags":["CY","flag"],"unicode":"🇨🇾"},{"annotation":"flag: Czechia","group":9,"hexcode":"1F1E8-1F1FF","order":3819,"shortcodes":["flag_cz"],"tags":["CZ","flag"],"unicode":"🇨🇿"},{"annotation":"flag: Germany","group":9,"hexcode":"1F1E9-1F1EA","order":3820,"shortcodes":["flag_de"],"tags":["DE","flag"],"unicode":"🇩🇪"},{"annotation":"flag: Diego Garcia","group":9,"hexcode":"1F1E9-1F1EC","order":3821,"shortcodes":["flag_dg"],"tags":["DG","flag"],"unicode":"🇩🇬"},{"annotation":"flag: Djibouti","group":9,"hexcode":"1F1E9-1F1EF","order":3822,"shortcodes":["flag_dj"],"tags":["DJ","flag"],"unicode":"🇩🇯"},{"annotation":"flag: Denmark","group":9,"hexcode":"1F1E9-1F1F0","order":3823,"shortcodes":["flag_dk"],"tags":["DK","flag"],"unicode":"🇩🇰"},{"annotation":"flag: Dominica","group":9,"hexcode":"1F1E9-1F1F2","order":3824,"shortcodes":["flag_dm"],"tags":["DM","flag"],"unicode":"🇩🇲"},{"annotation":"flag: Dominican Republic","group":9,"hexcode":"1F1E9-1F1F4","order":3825,"shortcodes":["flag_do"],"tags":["DO","flag"],"unicode":"🇩🇴"},{"annotation":"flag: Algeria","group":9,"hexcode":"1F1E9-1F1FF","order":3826,"shortcodes":["flag_dz"],"tags":["DZ","flag"],"unicode":"🇩🇿"},{"annotation":"flag: Ceuta & Melilla","group":9,"hexcode":"1F1EA-1F1E6","order":3827,"shortcodes":["flag_ea"],"tags":["EA","flag"],"unicode":"🇪🇦"},{"annotation":"flag: Ecuador","group":9,"hexcode":"1F1EA-1F1E8","order":3828,"shortcodes":["flag_ec"],"tags":["EC","flag"],"unicode":"🇪🇨"},{"annotation":"flag: Estonia","group":9,"hexcode":"1F1EA-1F1EA","order":3829,"shortcodes":["flag_ee"],"tags":["EE","flag"],"unicode":"🇪🇪"},{"annotation":"flag: Egypt","group":9,"hexcode":"1F1EA-1F1EC","order":3830,"shortcodes":["flag_eg"],"tags":["EG","flag"],"unicode":"🇪🇬"},{"annotation":"flag: Western Sahara","group":9,"hexcode":"1F1EA-1F1ED","order":3831,"shortcodes":["flag_eh"],"tags":["EH","flag"],"unicode":"🇪🇭"},{"annotation":"flag: Eritrea","group":9,"hexcode":"1F1EA-1F1F7","order":3832,"shortcodes":["flag_er"],"tags":["ER","flag"],"unicode":"🇪🇷"},{"annotation":"flag: Spain","group":9,"hexcode":"1F1EA-1F1F8","order":3833,"shortcodes":["flag_es"],"tags":["ES","flag"],"unicode":"🇪🇸"},{"annotation":"flag: Ethiopia","group":9,"hexcode":"1F1EA-1F1F9","order":3834,"shortcodes":["flag_et"],"tags":["ET","flag"],"unicode":"🇪🇹"},{"annotation":"flag: European Union","group":9,"hexcode":"1F1EA-1F1FA","order":3835,"shortcodes":["flag_eu"],"tags":["EU","flag"],"unicode":"🇪🇺"},{"annotation":"flag: Finland","group":9,"hexcode":"1F1EB-1F1EE","order":3836,"shortcodes":["flag_fi"],"tags":["FI","flag"],"unicode":"🇫🇮"},{"annotation":"flag: Fiji","group":9,"hexcode":"1F1EB-1F1EF","order":3837,"shortcodes":["flag_fj"],"tags":["FJ","flag"],"unicode":"🇫🇯"},{"annotation":"flag: Falkland Islands","group":9,"hexcode":"1F1EB-1F1F0","order":3838,"shortcodes":["flag_fk"],"tags":["FK","flag"],"unicode":"🇫🇰"},{"annotation":"flag: Micronesia","group":9,"hexcode":"1F1EB-1F1F2","order":3839,"shortcodes":["flag_fm"],"tags":["FM","flag"],"unicode":"🇫🇲"},{"annotation":"flag: Faroe Islands","group":9,"hexcode":"1F1EB-1F1F4","order":3840,"shortcodes":["flag_fo"],"tags":["FO","flag"],"unicode":"🇫🇴"},{"annotation":"flag: France","group":9,"hexcode":"1F1EB-1F1F7","order":3841,"shortcodes":["flag_fr"],"tags":["FR","flag"],"unicode":"🇫🇷"},{"annotation":"flag: Gabon","group":9,"hexcode":"1F1EC-1F1E6","order":3842,"shortcodes":["flag_ga"],"tags":["GA","flag"],"unicode":"🇬🇦"},{"annotation":"flag: United Kingdom","group":9,"hexcode":"1F1EC-1F1E7","order":3843,"shortcodes":["flag_gb"],"tags":["GB","flag"],"unicode":"🇬🇧"},{"annotation":"flag: Grenada","group":9,"hexcode":"1F1EC-1F1E9","order":3844,"shortcodes":["flag_gd"],"tags":["GD","flag"],"unicode":"🇬🇩"},{"annotation":"flag: Georgia","group":9,"hexcode":"1F1EC-1F1EA","order":3845,"shortcodes":["flag_ge"],"tags":["GE","flag"],"unicode":"🇬🇪"},{"annotation":"flag: French Guiana","group":9,"hexcode":"1F1EC-1F1EB","order":3846,"shortcodes":["flag_gf"],"tags":["GF","flag"],"unicode":"🇬🇫"},{"annotation":"flag: Guernsey","group":9,"hexcode":"1F1EC-1F1EC","order":3847,"shortcodes":["flag_gg"],"tags":["GG","flag"],"unicode":"🇬🇬"},{"annotation":"flag: Ghana","group":9,"hexcode":"1F1EC-1F1ED","order":3848,"shortcodes":["flag_gh"],"tags":["GH","flag"],"unicode":"🇬🇭"},{"annotation":"flag: Gibraltar","group":9,"hexcode":"1F1EC-1F1EE","order":3849,"shortcodes":["flag_gi"],"tags":["GI","flag"],"unicode":"🇬🇮"},{"annotation":"flag: Greenland","group":9,"hexcode":"1F1EC-1F1F1","order":3850,"shortcodes":["flag_gl"],"tags":["GL","flag"],"unicode":"🇬🇱"},{"annotation":"flag: Gambia","group":9,"hexcode":"1F1EC-1F1F2","order":3851,"shortcodes":["flag_gm"],"tags":["GM","flag"],"unicode":"🇬🇲"},{"annotation":"flag: Guinea","group":9,"hexcode":"1F1EC-1F1F3","order":3852,"shortcodes":["flag_gn"],"tags":["GN","flag"],"unicode":"🇬🇳"},{"annotation":"flag: Guadeloupe","group":9,"hexcode":"1F1EC-1F1F5","order":3853,"shortcodes":["flag_gp"],"tags":["GP","flag"],"unicode":"🇬🇵"},{"annotation":"flag: Equatorial Guinea","group":9,"hexcode":"1F1EC-1F1F6","order":3854,"shortcodes":["flag_gq"],"tags":["GQ","flag"],"unicode":"🇬🇶"},{"annotation":"flag: Greece","group":9,"hexcode":"1F1EC-1F1F7","order":3855,"shortcodes":["flag_gr"],"tags":["GR","flag"],"unicode":"🇬🇷"},{"annotation":"flag: South Georgia & South Sandwich Islands","group":9,"hexcode":"1F1EC-1F1F8","order":3856,"shortcodes":["flag_gs"],"tags":["GS","flag"],"unicode":"🇬🇸"},{"annotation":"flag: Guatemala","group":9,"hexcode":"1F1EC-1F1F9","order":3857,"shortcodes":["flag_gt"],"tags":["GT","flag"],"unicode":"🇬🇹"},{"annotation":"flag: Guam","group":9,"hexcode":"1F1EC-1F1FA","order":3858,"shortcodes":["flag_gu"],"tags":["GU","flag"],"unicode":"🇬🇺"},{"annotation":"flag: Guinea-Bissau","group":9,"hexcode":"1F1EC-1F1FC","order":3859,"shortcodes":["flag_gw"],"tags":["GW","flag"],"unicode":"🇬🇼"},{"annotation":"flag: Guyana","group":9,"hexcode":"1F1EC-1F1FE","order":3860,"shortcodes":["flag_gy"],"tags":["GY","flag"],"unicode":"🇬🇾"},{"annotation":"flag: Hong Kong SAR China","group":9,"hexcode":"1F1ED-1F1F0","order":3861,"shortcodes":["flag_hk"],"tags":["HK","flag"],"unicode":"🇭🇰"},{"annotation":"flag: Heard & McDonald Islands","group":9,"hexcode":"1F1ED-1F1F2","order":3862,"shortcodes":["flag_hm"],"tags":["HM","flag"],"unicode":"🇭🇲"},{"annotation":"flag: Honduras","group":9,"hexcode":"1F1ED-1F1F3","order":3863,"shortcodes":["flag_hn"],"tags":["HN","flag"],"unicode":"🇭🇳"},{"annotation":"flag: Croatia","group":9,"hexcode":"1F1ED-1F1F7","order":3864,"shortcodes":["flag_hr"],"tags":["HR","flag"],"unicode":"🇭🇷"},{"annotation":"flag: Haiti","group":9,"hexcode":"1F1ED-1F1F9","order":3865,"shortcodes":["flag_ht"],"tags":["HT","flag"],"unicode":"🇭🇹"},{"annotation":"flag: Hungary","group":9,"hexcode":"1F1ED-1F1FA","order":3866,"shortcodes":["flag_hu"],"tags":["HU","flag"],"unicode":"🇭🇺"},{"annotation":"flag: Canary Islands","group":9,"hexcode":"1F1EE-1F1E8","order":3867,"shortcodes":["flag_ic"],"tags":["IC","flag"],"unicode":"🇮🇨"},{"annotation":"flag: Indonesia","group":9,"hexcode":"1F1EE-1F1E9","order":3868,"shortcodes":["flag_id"],"tags":["ID","flag"],"unicode":"🇮🇩"},{"annotation":"flag: Ireland","group":9,"hexcode":"1F1EE-1F1EA","order":3869,"shortcodes":["flag_ie"],"tags":["IE","flag"],"unicode":"🇮🇪"},{"annotation":"flag: Israel","group":9,"hexcode":"1F1EE-1F1F1","order":3870,"shortcodes":["flag_il"],"tags":["IL","flag"],"unicode":"🇮🇱"},{"annotation":"flag: Isle of Man","group":9,"hexcode":"1F1EE-1F1F2","order":3871,"shortcodes":["flag_im"],"tags":["IM","flag"],"unicode":"🇮🇲"},{"annotation":"flag: India","group":9,"hexcode":"1F1EE-1F1F3","order":3872,"shortcodes":["flag_in"],"tags":["IN","flag"],"unicode":"🇮🇳"},{"annotation":"flag: British Indian Ocean Territory","group":9,"hexcode":"1F1EE-1F1F4","order":3873,"shortcodes":["flag_io"],"tags":["IO","flag"],"unicode":"🇮🇴"},{"annotation":"flag: Iraq","group":9,"hexcode":"1F1EE-1F1F6","order":3874,"shortcodes":["flag_iq"],"tags":["IQ","flag"],"unicode":"🇮🇶"},{"annotation":"flag: Iran","group":9,"hexcode":"1F1EE-1F1F7","order":3875,"shortcodes":["flag_ir"],"tags":["IR","flag"],"unicode":"🇮🇷"},{"annotation":"flag: Iceland","group":9,"hexcode":"1F1EE-1F1F8","order":3876,"shortcodes":["flag_is"],"tags":["IS","flag"],"unicode":"🇮🇸"},{"annotation":"flag: Italy","group":9,"hexcode":"1F1EE-1F1F9","order":3877,"shortcodes":["flag_it"],"tags":["IT","flag"],"unicode":"🇮🇹"},{"annotation":"flag: Jersey","group":9,"hexcode":"1F1EF-1F1EA","order":3878,"shortcodes":["flag_je"],"tags":["JE","flag"],"unicode":"🇯🇪"},{"annotation":"flag: Jamaica","group":9,"hexcode":"1F1EF-1F1F2","order":3879,"shortcodes":["flag_jm"],"tags":["JM","flag"],"unicode":"🇯🇲"},{"annotation":"flag: Jordan","group":9,"hexcode":"1F1EF-1F1F4","order":3880,"shortcodes":["flag_jo"],"tags":["JO","flag"],"unicode":"🇯🇴"},{"annotation":"flag: Japan","group":9,"hexcode":"1F1EF-1F1F5","order":3881,"shortcodes":["flag_jp"],"tags":["JP","flag"],"unicode":"🇯🇵"},{"annotation":"flag: Kenya","group":9,"hexcode":"1F1F0-1F1EA","order":3882,"shortcodes":["flag_ke"],"tags":["KE","flag"],"unicode":"🇰🇪"},{"annotation":"flag: Kyrgyzstan","group":9,"hexcode":"1F1F0-1F1EC","order":3883,"shortcodes":["flag_kg"],"tags":["KG","flag"],"unicode":"🇰🇬"},{"annotation":"flag: Cambodia","group":9,"hexcode":"1F1F0-1F1ED","order":3884,"shortcodes":["flag_kh"],"tags":["KH","flag"],"unicode":"🇰🇭"},{"annotation":"flag: Kiribati","group":9,"hexcode":"1F1F0-1F1EE","order":3885,"shortcodes":["flag_ki"],"tags":["KI","flag"],"unicode":"🇰🇮"},{"annotation":"flag: Comoros","group":9,"hexcode":"1F1F0-1F1F2","order":3886,"shortcodes":["flag_km"],"tags":["KM","flag"],"unicode":"🇰🇲"},{"annotation":"flag: St. Kitts & Nevis","group":9,"hexcode":"1F1F0-1F1F3","order":3887,"shortcodes":["flag_kn"],"tags":["KN","flag"],"unicode":"🇰🇳"},{"annotation":"flag: North Korea","group":9,"hexcode":"1F1F0-1F1F5","order":3888,"shortcodes":["flag_kp"],"tags":["KP","flag"],"unicode":"🇰🇵"},{"annotation":"flag: South Korea","group":9,"hexcode":"1F1F0-1F1F7","order":3889,"shortcodes":["flag_kr"],"tags":["KR","flag"],"unicode":"🇰🇷"},{"annotation":"flag: Kuwait","group":9,"hexcode":"1F1F0-1F1FC","order":3890,"shortcodes":["flag_kw"],"tags":["KW","flag"],"unicode":"🇰🇼"},{"annotation":"flag: Cayman Islands","group":9,"hexcode":"1F1F0-1F1FE","order":3891,"shortcodes":["flag_ky"],"tags":["KY","flag"],"unicode":"🇰🇾"},{"annotation":"flag: Kazakhstan","group":9,"hexcode":"1F1F0-1F1FF","order":3892,"shortcodes":["flag_kz"],"tags":["KZ","flag"],"unicode":"🇰🇿"},{"annotation":"flag: Laos","group":9,"hexcode":"1F1F1-1F1E6","order":3893,"shortcodes":["flag_la"],"tags":["LA","flag"],"unicode":"🇱🇦"},{"annotation":"flag: Lebanon","group":9,"hexcode":"1F1F1-1F1E7","order":3894,"shortcodes":["flag_lb"],"tags":["LB","flag"],"unicode":"🇱🇧"},{"annotation":"flag: St. Lucia","group":9,"hexcode":"1F1F1-1F1E8","order":3895,"shortcodes":["flag_lc"],"tags":["LC","flag"],"unicode":"🇱🇨"},{"annotation":"flag: Liechtenstein","group":9,"hexcode":"1F1F1-1F1EE","order":3896,"shortcodes":["flag_li"],"tags":["LI","flag"],"unicode":"🇱🇮"},{"annotation":"flag: Sri Lanka","group":9,"hexcode":"1F1F1-1F1F0","order":3897,"shortcodes":["flag_lk"],"tags":["LK","flag"],"unicode":"🇱🇰"},{"annotation":"flag: Liberia","group":9,"hexcode":"1F1F1-1F1F7","order":3898,"shortcodes":["flag_lr"],"tags":["LR","flag"],"unicode":"🇱🇷"},{"annotation":"flag: Lesotho","group":9,"hexcode":"1F1F1-1F1F8","order":3899,"shortcodes":["flag_ls"],"tags":["LS","flag"],"unicode":"🇱🇸"},{"annotation":"flag: Lithuania","group":9,"hexcode":"1F1F1-1F1F9","order":3900,"shortcodes":["flag_lt"],"tags":["LT","flag"],"unicode":"🇱🇹"},{"annotation":"flag: Luxembourg","group":9,"hexcode":"1F1F1-1F1FA","order":3901,"shortcodes":["flag_lu"],"tags":["LU","flag"],"unicode":"🇱🇺"},{"annotation":"flag: Latvia","group":9,"hexcode":"1F1F1-1F1FB","order":3902,"shortcodes":["flag_lv"],"tags":["LV","flag"],"unicode":"🇱🇻"},{"annotation":"flag: Libya","group":9,"hexcode":"1F1F1-1F1FE","order":3903,"shortcodes":["flag_ly"],"tags":["LY","flag"],"unicode":"🇱🇾"},{"annotation":"flag: Morocco","group":9,"hexcode":"1F1F2-1F1E6","order":3904,"shortcodes":["flag_ma"],"tags":["MA","flag"],"unicode":"🇲🇦"},{"annotation":"flag: Monaco","group":9,"hexcode":"1F1F2-1F1E8","order":3905,"shortcodes":["flag_mc"],"tags":["MC","flag"],"unicode":"🇲🇨"},{"annotation":"flag: Moldova","group":9,"hexcode":"1F1F2-1F1E9","order":3906,"shortcodes":["flag_md"],"tags":["MD","flag"],"unicode":"🇲🇩"},{"annotation":"flag: Montenegro","group":9,"hexcode":"1F1F2-1F1EA","order":3907,"shortcodes":["flag_me"],"tags":["ME","flag"],"unicode":"🇲🇪"},{"annotation":"flag: St. Martin","group":9,"hexcode":"1F1F2-1F1EB","order":3908,"shortcodes":["flag_mf"],"tags":["MF","flag"],"unicode":"🇲🇫"},{"annotation":"flag: Madagascar","group":9,"hexcode":"1F1F2-1F1EC","order":3909,"shortcodes":["flag_mg"],"tags":["MG","flag"],"unicode":"🇲🇬"},{"annotation":"flag: Marshall Islands","group":9,"hexcode":"1F1F2-1F1ED","order":3910,"shortcodes":["flag_mh"],"tags":["MH","flag"],"unicode":"🇲🇭"},{"annotation":"flag: North Macedonia","group":9,"hexcode":"1F1F2-1F1F0","order":3911,"shortcodes":["flag_mk"],"tags":["MK","flag"],"unicode":"🇲🇰"},{"annotation":"flag: Mali","group":9,"hexcode":"1F1F2-1F1F1","order":3912,"shortcodes":["flag_ml"],"tags":["ML","flag"],"unicode":"🇲🇱"},{"annotation":"flag: Myanmar (Burma)","group":9,"hexcode":"1F1F2-1F1F2","order":3913,"shortcodes":["flag_mm"],"tags":["MM","flag"],"unicode":"🇲🇲"},{"annotation":"flag: Mongolia","group":9,"hexcode":"1F1F2-1F1F3","order":3914,"shortcodes":["flag_mn"],"tags":["MN","flag"],"unicode":"🇲🇳"},{"annotation":"flag: Macao SAR China","group":9,"hexcode":"1F1F2-1F1F4","order":3915,"shortcodes":["flag_mo"],"tags":["MO","flag"],"unicode":"🇲🇴"},{"annotation":"flag: Northern Mariana Islands","group":9,"hexcode":"1F1F2-1F1F5","order":3916,"shortcodes":["flag_mp"],"tags":["MP","flag"],"unicode":"🇲🇵"},{"annotation":"flag: Martinique","group":9,"hexcode":"1F1F2-1F1F6","order":3917,"shortcodes":["flag_mq"],"tags":["MQ","flag"],"unicode":"🇲🇶"},{"annotation":"flag: Mauritania","group":9,"hexcode":"1F1F2-1F1F7","order":3918,"shortcodes":["flag_mr"],"tags":["MR","flag"],"unicode":"🇲🇷"},{"annotation":"flag: Montserrat","group":9,"hexcode":"1F1F2-1F1F8","order":3919,"shortcodes":["flag_ms"],"tags":["MS","flag"],"unicode":"🇲🇸"},{"annotation":"flag: Malta","group":9,"hexcode":"1F1F2-1F1F9","order":3920,"shortcodes":["flag_mt"],"tags":["MT","flag"],"unicode":"🇲🇹"},{"annotation":"flag: Mauritius","group":9,"hexcode":"1F1F2-1F1FA","order":3921,"shortcodes":["flag_mu"],"tags":["MU","flag"],"unicode":"🇲🇺"},{"annotation":"flag: Maldives","group":9,"hexcode":"1F1F2-1F1FB","order":3922,"shortcodes":["flag_mv"],"tags":["MV","flag"],"unicode":"🇲🇻"},{"annotation":"flag: Malawi","group":9,"hexcode":"1F1F2-1F1FC","order":3923,"shortcodes":["flag_mw"],"tags":["MW","flag"],"unicode":"🇲🇼"},{"annotation":"flag: Mexico","group":9,"hexcode":"1F1F2-1F1FD","order":3924,"shortcodes":["flag_mx"],"tags":["MX","flag"],"unicode":"🇲🇽"},{"annotation":"flag: Malaysia","group":9,"hexcode":"1F1F2-1F1FE","order":3925,"shortcodes":["flag_my"],"tags":["MY","flag"],"unicode":"🇲🇾"},{"annotation":"flag: Mozambique","group":9,"hexcode":"1F1F2-1F1FF","order":3926,"shortcodes":["flag_mz"],"tags":["MZ","flag"],"unicode":"🇲🇿"},{"annotation":"flag: Namibia","group":9,"hexcode":"1F1F3-1F1E6","order":3927,"shortcodes":["flag_na"],"tags":["NA","flag"],"unicode":"🇳🇦"},{"annotation":"flag: New Caledonia","group":9,"hexcode":"1F1F3-1F1E8","order":3928,"shortcodes":["flag_nc"],"tags":["NC","flag"],"unicode":"🇳🇨"},{"annotation":"flag: Niger","group":9,"hexcode":"1F1F3-1F1EA","order":3929,"shortcodes":["flag_ne"],"tags":["NE","flag"],"unicode":"🇳🇪"},{"annotation":"flag: Norfolk Island","group":9,"hexcode":"1F1F3-1F1EB","order":3930,"shortcodes":["flag_nf"],"tags":["NF","flag"],"unicode":"🇳🇫"},{"annotation":"flag: Nigeria","group":9,"hexcode":"1F1F3-1F1EC","order":3931,"shortcodes":["flag_ng"],"tags":["NG","flag"],"unicode":"🇳🇬"},{"annotation":"flag: Nicaragua","group":9,"hexcode":"1F1F3-1F1EE","order":3932,"shortcodes":["flag_ni"],"tags":["NI","flag"],"unicode":"🇳🇮"},{"annotation":"flag: Netherlands","group":9,"hexcode":"1F1F3-1F1F1","order":3933,"shortcodes":["flag_nl"],"tags":["NL","flag"],"unicode":"🇳🇱"},{"annotation":"flag: Norway","group":9,"hexcode":"1F1F3-1F1F4","order":3934,"shortcodes":["flag_no"],"tags":["NO","flag"],"unicode":"🇳🇴"},{"annotation":"flag: Nepal","group":9,"hexcode":"1F1F3-1F1F5","order":3935,"shortcodes":["flag_np"],"tags":["NP","flag"],"unicode":"🇳🇵"},{"annotation":"flag: Nauru","group":9,"hexcode":"1F1F3-1F1F7","order":3936,"shortcodes":["flag_nr"],"tags":["NR","flag"],"unicode":"🇳🇷"},{"annotation":"flag: Niue","group":9,"hexcode":"1F1F3-1F1FA","order":3937,"shortcodes":["flag_nu"],"tags":["NU","flag"],"unicode":"🇳🇺"},{"annotation":"flag: New Zealand","group":9,"hexcode":"1F1F3-1F1FF","order":3938,"shortcodes":["flag_nz"],"tags":["NZ","flag"],"unicode":"🇳🇿"},{"annotation":"flag: Oman","group":9,"hexcode":"1F1F4-1F1F2","order":3939,"shortcodes":["flag_om"],"tags":["OM","flag"],"unicode":"🇴🇲"},{"annotation":"flag: Panama","group":9,"hexcode":"1F1F5-1F1E6","order":3940,"shortcodes":["flag_pa"],"tags":["PA","flag"],"unicode":"🇵🇦"},{"annotation":"flag: Peru","group":9,"hexcode":"1F1F5-1F1EA","order":3941,"shortcodes":["flag_pe"],"tags":["PE","flag"],"unicode":"🇵🇪"},{"annotation":"flag: French Polynesia","group":9,"hexcode":"1F1F5-1F1EB","order":3942,"shortcodes":["flag_pf"],"tags":["PF","flag"],"unicode":"🇵🇫"},{"annotation":"flag: Papua New Guinea","group":9,"hexcode":"1F1F5-1F1EC","order":3943,"shortcodes":["flag_pg"],"tags":["PG","flag"],"unicode":"🇵🇬"},{"annotation":"flag: Philippines","group":9,"hexcode":"1F1F5-1F1ED","order":3944,"shortcodes":["flag_ph"],"tags":["PH","flag"],"unicode":"🇵🇭"},{"annotation":"flag: Pakistan","group":9,"hexcode":"1F1F5-1F1F0","order":3945,"shortcodes":["flag_pk"],"tags":["PK","flag"],"unicode":"🇵🇰"},{"annotation":"flag: Poland","group":9,"hexcode":"1F1F5-1F1F1","order":3946,"shortcodes":["flag_pl"],"tags":["PL","flag"],"unicode":"🇵🇱"},{"annotation":"flag: St. Pierre & Miquelon","group":9,"hexcode":"1F1F5-1F1F2","order":3947,"shortcodes":["flag_pm"],"tags":["PM","flag"],"unicode":"🇵🇲"},{"annotation":"flag: Pitcairn Islands","group":9,"hexcode":"1F1F5-1F1F3","order":3948,"shortcodes":["flag_pn"],"tags":["PN","flag"],"unicode":"🇵🇳"},{"annotation":"flag: Puerto Rico","group":9,"hexcode":"1F1F5-1F1F7","order":3949,"shortcodes":["flag_pr"],"tags":["PR","flag"],"unicode":"🇵🇷"},{"annotation":"flag: Palestinian Territories","group":9,"hexcode":"1F1F5-1F1F8","order":3950,"shortcodes":["flag_ps"],"tags":["PS","flag"],"unicode":"🇵🇸"},{"annotation":"flag: Portugal","group":9,"hexcode":"1F1F5-1F1F9","order":3951,"shortcodes":["flag_pt"],"tags":["PT","flag"],"unicode":"🇵🇹"},{"annotation":"flag: Palau","group":9,"hexcode":"1F1F5-1F1FC","order":3952,"shortcodes":["flag_pw"],"tags":["PW","flag"],"unicode":"🇵🇼"},{"annotation":"flag: Paraguay","group":9,"hexcode":"1F1F5-1F1FE","order":3953,"shortcodes":["flag_py"],"tags":["PY","flag"],"unicode":"🇵🇾"},{"annotation":"flag: Qatar","group":9,"hexcode":"1F1F6-1F1E6","order":3954,"shortcodes":["flag_qa"],"tags":["QA","flag"],"unicode":"🇶🇦"},{"annotation":"flag: Réunion","group":9,"hexcode":"1F1F7-1F1EA","order":3955,"shortcodes":["flag_re"],"tags":["RE","flag"],"unicode":"🇷🇪"},{"annotation":"flag: Romania","group":9,"hexcode":"1F1F7-1F1F4","order":3956,"shortcodes":["flag_ro"],"tags":["RO","flag"],"unicode":"🇷🇴"},{"annotation":"flag: Serbia","group":9,"hexcode":"1F1F7-1F1F8","order":3957,"shortcodes":["flag_rs"],"tags":["RS","flag"],"unicode":"🇷🇸"},{"annotation":"flag: Russia","group":9,"hexcode":"1F1F7-1F1FA","order":3958,"shortcodes":["flag_ru"],"tags":["RU","flag"],"unicode":"🇷🇺"},{"annotation":"flag: Rwanda","group":9,"hexcode":"1F1F7-1F1FC","order":3959,"shortcodes":["flag_rw"],"tags":["RW","flag"],"unicode":"🇷🇼"},{"annotation":"flag: Saudi Arabia","group":9,"hexcode":"1F1F8-1F1E6","order":3960,"shortcodes":["flag_sa"],"tags":["SA","flag"],"unicode":"🇸🇦"},{"annotation":"flag: Solomon Islands","group":9,"hexcode":"1F1F8-1F1E7","order":3961,"shortcodes":["flag_sb"],"tags":["SB","flag"],"unicode":"🇸🇧"},{"annotation":"flag: Seychelles","group":9,"hexcode":"1F1F8-1F1E8","order":3962,"shortcodes":["flag_sc"],"tags":["SC","flag"],"unicode":"🇸🇨"},{"annotation":"flag: Sudan","group":9,"hexcode":"1F1F8-1F1E9","order":3963,"shortcodes":["flag_sd"],"tags":["SD","flag"],"unicode":"🇸🇩"},{"annotation":"flag: Sweden","group":9,"hexcode":"1F1F8-1F1EA","order":3964,"shortcodes":["flag_se"],"tags":["SE","flag"],"unicode":"🇸🇪"},{"annotation":"flag: Singapore","group":9,"hexcode":"1F1F8-1F1EC","order":3965,"shortcodes":["flag_sg"],"tags":["SG","flag"],"unicode":"🇸🇬"},{"annotation":"flag: St. Helena","group":9,"hexcode":"1F1F8-1F1ED","order":3966,"shortcodes":["flag_sh"],"tags":["SH","flag"],"unicode":"🇸🇭"},{"annotation":"flag: Slovenia","group":9,"hexcode":"1F1F8-1F1EE","order":3967,"shortcodes":["flag_si"],"tags":["SI","flag"],"unicode":"🇸🇮"},{"annotation":"flag: Svalbard & Jan Mayen","group":9,"hexcode":"1F1F8-1F1EF","order":3968,"shortcodes":["flag_sj"],"tags":["SJ","flag"],"unicode":"🇸🇯"},{"annotation":"flag: Slovakia","group":9,"hexcode":"1F1F8-1F1F0","order":3969,"shortcodes":["flag_sk"],"tags":["SK","flag"],"unicode":"🇸🇰"},{"annotation":"flag: Sierra Leone","group":9,"hexcode":"1F1F8-1F1F1","order":3970,"shortcodes":["flag_sl"],"tags":["SL","flag"],"unicode":"🇸🇱"},{"annotation":"flag: San Marino","group":9,"hexcode":"1F1F8-1F1F2","order":3971,"shortcodes":["flag_sm"],"tags":["SM","flag"],"unicode":"🇸🇲"},{"annotation":"flag: Senegal","group":9,"hexcode":"1F1F8-1F1F3","order":3972,"shortcodes":["flag_sn"],"tags":["SN","flag"],"unicode":"🇸🇳"},{"annotation":"flag: Somalia","group":9,"hexcode":"1F1F8-1F1F4","order":3973,"shortcodes":["flag_so"],"tags":["SO","flag"],"unicode":"🇸🇴"},{"annotation":"flag: Suriname","group":9,"hexcode":"1F1F8-1F1F7","order":3974,"shortcodes":["flag_sr"],"tags":["SR","flag"],"unicode":"🇸🇷"},{"annotation":"flag: South Sudan","group":9,"hexcode":"1F1F8-1F1F8","order":3975,"shortcodes":["flag_ss"],"tags":["SS","flag"],"unicode":"🇸🇸"},{"annotation":"flag: São Tomé & Príncipe","group":9,"hexcode":"1F1F8-1F1F9","order":3976,"shortcodes":["flag_st"],"tags":["ST","flag"],"unicode":"🇸🇹"},{"annotation":"flag: El Salvador","group":9,"hexcode":"1F1F8-1F1FB","order":3977,"shortcodes":["flag_sv"],"tags":["SV","flag"],"unicode":"🇸🇻"},{"annotation":"flag: Sint Maarten","group":9,"hexcode":"1F1F8-1F1FD","order":3978,"shortcodes":["flag_sx"],"tags":["SX","flag"],"unicode":"🇸🇽"},{"annotation":"flag: Syria","group":9,"hexcode":"1F1F8-1F1FE","order":3979,"shortcodes":["flag_sy"],"tags":["SY","flag"],"unicode":"🇸🇾"},{"annotation":"flag: Eswatini","group":9,"hexcode":"1F1F8-1F1FF","order":3980,"shortcodes":["flag_sz"],"tags":["SZ","flag"],"unicode":"🇸🇿"},{"annotation":"flag: Tristan da Cunha","group":9,"hexcode":"1F1F9-1F1E6","order":3981,"shortcodes":["flag_ta"],"tags":["TA","flag"],"unicode":"🇹🇦"},{"annotation":"flag: Turks & Caicos Islands","group":9,"hexcode":"1F1F9-1F1E8","order":3982,"shortcodes":["flag_tc"],"tags":["TC","flag"],"unicode":"🇹🇨"},{"annotation":"flag: Chad","group":9,"hexcode":"1F1F9-1F1E9","order":3983,"shortcodes":["flag_td"],"tags":["TD","flag"],"unicode":"🇹🇩"},{"annotation":"flag: French Southern Territories","group":9,"hexcode":"1F1F9-1F1EB","order":3984,"shortcodes":["flag_tf"],"tags":["TF","flag"],"unicode":"🇹🇫"},{"annotation":"flag: Togo","group":9,"hexcode":"1F1F9-1F1EC","order":3985,"shortcodes":["flag_tg"],"tags":["TG","flag"],"unicode":"🇹🇬"},{"annotation":"flag: Thailand","group":9,"hexcode":"1F1F9-1F1ED","order":3986,"shortcodes":["flag_th"],"tags":["TH","flag"],"unicode":"🇹🇭"},{"annotation":"flag: Tajikistan","group":9,"hexcode":"1F1F9-1F1EF","order":3987,"shortcodes":["flag_tj"],"tags":["TJ","flag"],"unicode":"🇹🇯"},{"annotation":"flag: Tokelau","group":9,"hexcode":"1F1F9-1F1F0","order":3988,"shortcodes":["flag_tk"],"tags":["TK","flag"],"unicode":"🇹🇰"},{"annotation":"flag: Timor-Leste","group":9,"hexcode":"1F1F9-1F1F1","order":3989,"shortcodes":["flag_tl"],"tags":["TL","flag"],"unicode":"🇹🇱"},{"annotation":"flag: Turkmenistan","group":9,"hexcode":"1F1F9-1F1F2","order":3990,"shortcodes":["flag_tm"],"tags":["TM","flag"],"unicode":"🇹🇲"},{"annotation":"flag: Tunisia","group":9,"hexcode":"1F1F9-1F1F3","order":3991,"shortcodes":["flag_tn"],"tags":["TN","flag"],"unicode":"🇹🇳"},{"annotation":"flag: Tonga","group":9,"hexcode":"1F1F9-1F1F4","order":3992,"shortcodes":["flag_to"],"tags":["TO","flag"],"unicode":"🇹🇴"},{"annotation":"flag: Turkey","group":9,"hexcode":"1F1F9-1F1F7","order":3993,"shortcodes":["flag_tr"],"tags":["TR","flag"],"unicode":"🇹🇷"},{"annotation":"flag: Trinidad & Tobago","group":9,"hexcode":"1F1F9-1F1F9","order":3994,"shortcodes":["flag_tt"],"tags":["TT","flag"],"unicode":"🇹🇹"},{"annotation":"flag: Tuvalu","group":9,"hexcode":"1F1F9-1F1FB","order":3995,"shortcodes":["flag_tv"],"tags":["TV","flag"],"unicode":"🇹🇻"},{"annotation":"flag: Taiwan","group":9,"hexcode":"1F1F9-1F1FC","order":3996,"shortcodes":["flag_tw"],"tags":["TW","flag"],"unicode":"🇹🇼"},{"annotation":"flag: Tanzania","group":9,"hexcode":"1F1F9-1F1FF","order":3997,"shortcodes":["flag_tz"],"tags":["TZ","flag"],"unicode":"🇹🇿"},{"annotation":"flag: Ukraine","group":9,"hexcode":"1F1FA-1F1E6","order":3998,"shortcodes":["flag_ua"],"tags":["UA","flag"],"unicode":"🇺🇦"},{"annotation":"flag: Uganda","group":9,"hexcode":"1F1FA-1F1EC","order":3999,"shortcodes":["flag_ug"],"tags":["UG","flag"],"unicode":"🇺🇬"},{"annotation":"flag: U.S. Outlying Islands","group":9,"hexcode":"1F1FA-1F1F2","order":4000,"shortcodes":["flag_um"],"tags":["UM","flag"],"unicode":"🇺🇲"},{"annotation":"flag: United Nations","group":9,"hexcode":"1F1FA-1F1F3","order":4001,"shortcodes":["flag_un"],"tags":["UN","flag"],"unicode":"🇺🇳"},{"annotation":"flag: United States","group":9,"hexcode":"1F1FA-1F1F8","order":4002,"shortcodes":["flag_us","usa"],"tags":["US","flag"],"unicode":"🇺🇸"},{"annotation":"flag: Uruguay","group":9,"hexcode":"1F1FA-1F1FE","order":4003,"shortcodes":["flag_uy"],"tags":["UY","flag"],"unicode":"🇺🇾"},{"annotation":"flag: Uzbekistan","group":9,"hexcode":"1F1FA-1F1FF","order":4004,"shortcodes":["flag_uz"],"tags":["UZ","flag"],"unicode":"🇺🇿"},{"annotation":"flag: Vatican City","group":9,"hexcode":"1F1FB-1F1E6","order":4005,"shortcodes":["flag_va"],"tags":["VA","flag"],"unicode":"🇻🇦"},{"annotation":"flag: St. Vincent & Grenadines","group":9,"hexcode":"1F1FB-1F1E8","order":4006,"shortcodes":["flag_vc"],"tags":["VC","flag"],"unicode":"🇻🇨"},{"annotation":"flag: Venezuela","group":9,"hexcode":"1F1FB-1F1EA","order":4007,"shortcodes":["flag_ve"],"tags":["VE","flag"],"unicode":"🇻🇪"},{"annotation":"flag: British Virgin Islands","group":9,"hexcode":"1F1FB-1F1EC","order":4008,"shortcodes":["flag_vg"],"tags":["VG","flag"],"unicode":"🇻🇬"},{"annotation":"flag: U.S. Virgin Islands","group":9,"hexcode":"1F1FB-1F1EE","order":4009,"shortcodes":["flag_vi"],"tags":["VI","flag"],"unicode":"🇻🇮"},{"annotation":"flag: Vietnam","group":9,"hexcode":"1F1FB-1F1F3","order":4010,"shortcodes":["flag_vn"],"tags":["VN","flag"],"unicode":"🇻🇳"},{"annotation":"flag: Vanuatu","group":9,"hexcode":"1F1FB-1F1FA","order":4011,"shortcodes":["flag_vu"],"tags":["VU","flag"],"unicode":"🇻🇺"},{"annotation":"flag: Wallis & Futuna","group":9,"hexcode":"1F1FC-1F1EB","order":4012,"shortcodes":["flag_wf"],"tags":["WF","flag"],"unicode":"🇼🇫"},{"annotation":"flag: Samoa","group":9,"hexcode":"1F1FC-1F1F8","order":4013,"shortcodes":["flag_ws"],"tags":["WS","flag"],"unicode":"🇼🇸"},{"annotation":"flag: Kosovo","group":9,"hexcode":"1F1FD-1F1F0","order":4014,"shortcodes":["flag_xk"],"tags":["XK","flag"],"unicode":"🇽🇰"},{"annotation":"flag: Yemen","group":9,"hexcode":"1F1FE-1F1EA","order":4015,"shortcodes":["flag_ye"],"tags":["YE","flag"],"unicode":"🇾🇪"},{"annotation":"flag: Mayotte","group":9,"hexcode":"1F1FE-1F1F9","order":4016,"shortcodes":["flag_yt"],"tags":["YT","flag"],"unicode":"🇾🇹"},{"annotation":"flag: South Africa","group":9,"hexcode":"1F1FF-1F1E6","order":4017,"shortcodes":["flag_za"],"tags":["ZA","flag"],"unicode":"🇿🇦"},{"annotation":"flag: Zambia","group":9,"hexcode":"1F1FF-1F1F2","order":4018,"shortcodes":["flag_zm"],"tags":["ZM","flag"],"unicode":"🇿🇲"},{"annotation":"flag: Zimbabwe","group":9,"hexcode":"1F1FF-1F1FC","order":4019,"shortcodes":["flag_zw"],"tags":["ZW","flag"],"unicode":"🇿🇼"},{"annotation":"flag: England","group":9,"hexcode":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","order":4020,"shortcodes":["flag_gbeng","england"],"tags":["flag","gbeng"],"unicode":"🏴󠁧󠁢󠁥󠁮󠁧󠁿"},{"annotation":"flag: Scotland","group":9,"hexcode":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","order":4021,"shortcodes":["flag_gbsct","scotland"],"tags":["flag","gbsct"],"unicode":"🏴󠁧󠁢󠁳󠁣󠁴󠁿"},{"annotation":"flag: Wales","group":9,"hexcode":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","order":4022,"shortcodes":["flag_gbwls","wales"],"tags":["flag","gbwls"],"unicode":"🏴󠁧󠁢󠁷󠁬󠁳󠁿"}]')},function(e,t,n){"use strict";n.d(t,"a",(function(){return o}));class o{constructor(e,t,n){this.container=e,this.reverse=n,this.vertical=t}getItemOffset(e){const t=(this.vertical?e.offsetTop:e.offsetLeft)-this._getOffset();return this.reverse?this.getTotalSize()-(t+this.getItemSize(e)):t}getItemSize(e){return this.vertical?e.offsetHeight:e.offsetWidth}getTotalSize(){return this.vertical?this.container.offsetHeight:this.container.offsetWidth}_getOffset(){return this.vertical?this.container.offsetTop:this.container.offsetLeft}setItemSize(e,t){this.vertical?e.style.height="".concat(Math.round(t),"px"):e.style.width="".concat(Math.round(t),"px")}clearItemSize(e){this.vertical?e.style.height=null:e.style.width=null}offsetFromEvent(e){const t=this.vertical?e.pageY:e.pageX;return this.reverse?this._getOffset()+this.getTotalSize()-t:t-this._getOffset()}}},function(e,t,n){"use strict";function o(e,t){const n=new e;return Object.assign(n,t),n}n.d(t,"a",(function(){return o}))},function(e,t){function n(e){var t=String.fromCharCode.apply(null,e),n=window.btoa(t),o=e.length,r=4*Math.floor((o+2)/3)+(o+2)%3-2;return n.slice(0,r)}try{t.encryptAttachment=function(e){var t,o,r,i,a;return a=new Uint8Array(16),window.crypto.getRandomValues(a.subarray(0,8)),window.crypto.subtle.generateKey({name:"AES-CTR",length:256},!0,["encrypt","decrypt"]).then((function(e){return t=e,window.crypto.subtle.exportKey("jwk",t)})).then((function(n){return o=n,window.crypto.subtle.encrypt({name:"AES-CTR",counter:a,length:64},t,e)})).then((function(e){return r=e,window.crypto.subtle.digest("SHA-256",r)})).then((function(e){return i=e,{data:r,info:{v:"v2",key:o,iv:n(a),hashes:{sha256:n(new Uint8Array(i))}}}}))},t.decryptAttachment=function(e,t){if(void 0===t||void 0===t.key||void 0===t.iv||void 0===t.hashes||void 0===t.hashes.sha256)throw new Error("Invalid info. Missing info.key, info.iv or info.hashes.sha256 key");var o,r=function(e){for(var t=e+"===".slice(0,(4-e.length%4)%4),n=window.atob(t),o=new Uint8Array(n.length),r=0;r|\-[#\$&\(-\*\/3<>-@B-EJLOPSXZ-\]cjlopsxz-\}]|[#\$&\(-\*\/3<>-@B-EJLOPSXZ-\]cjlopsxz\|\}])|[Oo][:=](?:\-[\)\]\}]|[\)\]\}])|>[:=](?:\-[\(\)\/\[-\]\{\}]|[\(\)\/\[-\]\{\}])|>0(?:\-[\)\]\}]|[\)\]\}])|x(?:\-[\(D\[op\{]|[\(D\[op\{])|8(?:\-[#\)D\]\}]|[#\)D\]\}])|D(?:\-[:=Xx]|[:=Xx])|%(?:\-[\(\[\{]|[\(\[\{])|;(?:\-[\)P\]p\}]|[\)P\]p\}])|<\/?3|\\[Mm]\/|X(?:\-[\(DOP\[\{]|[\(DOP\[\{])|[:=]\{/},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return s}));var o=n(8),r=n(10);const i=9;class a{constructor(e){this._db=e,e.onversionchange=t=>{o.a.log("versionchange for indexeddb ".concat(this._dbName,": closing")),e.close()}}getOrAddOutgoingRoomKeyRequest(e){const t=e.requestBody;return new Promise((n,r)=>{const i=this._db.transaction("outgoingRoomKeyRequests","readwrite");i.onerror=r,this._getOutgoingRoomKeyRequest(i,t,r=>{if(r)return o.a.log("already have key request outstanding for "+"".concat(t.room_id," / ").concat(t.session_id,": ")+"not sending another"),void n(r);o.a.log("enqueueing key request for ".concat(t.room_id," / ")+t.session_id),i.oncomplete=()=>{n(e)},i.objectStore("outgoingRoomKeyRequests").add(e)})})}getOutgoingRoomKeyRequest(e){return new Promise((t,n)=>{const o=this._db.transaction("outgoingRoomKeyRequests","readonly");o.onerror=n,this._getOutgoingRoomKeyRequest(o,e,e=>{t(e)})})}_getOutgoingRoomKeyRequest(e,t,n){e.objectStore("outgoingRoomKeyRequests").index("session").openCursor([t.room_id,t.session_id]).onsuccess=e=>{const o=e.target.result;if(!o)return void n(null);const i=o.value;r.b(i.requestBody,t)?n(i):o.continue()}}getOutgoingRoomKeyRequestByState(e){if(0===e.length)return Promise.resolve(null);let t,n=0;const o=this._db.transaction("outgoingRoomKeyRequests","readonly"),r=o.objectStore("outgoingRoomKeyRequests"),i=e[n];return r.index("state").openCursor(i).onsuccess=function o(r){const i=r.target.result;if(i)return void(t=i.value);if(n++,n>=e.length)return;const a=e[n];r.target.source.openCursor(a).onsuccess=o},l(o).then(()=>t)}getOutgoingRoomKeyRequestsByTarget(e,t,n){let o=0;const r=[];const i=this._db.transaction("outgoingRoomKeyRequests","readonly"),a=i.objectStore("outgoingRoomKeyRequests"),s=n[o];return a.index("state").openCursor(s).onsuccess=function i(a){const s=a.target.result;if(s){const n=s.value;n.recipients.includes({userId:e,deviceId:t})&&r.push(n),s.continue()}else{if(o++,o>=n.length)return;const e=n[o];a.target.source.openCursor(e).onsuccess=i}},l(i).then(()=>r)}updateOutgoingRoomKeyRequest(e,t,n){let r=null;const i=this._db.transaction("outgoingRoomKeyRequests","readwrite");return i.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){const i=e.target.result;if(!i)return;const a=i.value;a.state==t?(Object.assign(a,n),i.update(a),r=a):o.a.warn("Cannot update room key request from ".concat(t," ")+"as it was already updated to ".concat(a.state))},l(i).then(()=>r)}deleteOutgoingRoomKeyRequest(e,t){const n=this._db.transaction("outgoingRoomKeyRequests","readwrite");return n.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=e=>{const n=e.target.result;if(!n)return;const r=n.value;r.state==t?n.delete():o.a.warn("Cannot delete room key request in state ".concat(r.state," ")+"(expected ".concat(t,")"))},l(n)}getAccount(e,t){const n=e.objectStore("account").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){c(e,t)}}}storeAccount(e,t){e.objectStore("account").put(t,"-")}getCrossSigningKeys(e,t){const n=e.objectStore("account").get("crossSigningKeys");n.onsuccess=function(){try{t(n.result||null)}catch(t){c(e,t)}}}getSecretStorePrivateKey(e,t,n){const o=e.objectStore("account").get("ssss_cache:".concat(n));o.onsuccess=function(){try{t(o.result||null)}catch(t){c(e,t)}}}storeCrossSigningKeys(e,t){e.objectStore("account").put(t,"crossSigningKeys")}storeSecretStorePrivateKey(e,t,n){e.objectStore("account").put(n,"ssss_cache:".concat(t))}countEndToEndSessions(e,t){const n=e.objectStore("sessions").count();n.onsuccess=function(){try{t(n.result)}catch(t){c(e,t)}}}getEndToEndSessions(e,t,n){const o=t.objectStore("sessions").index("deviceKey").openCursor(e),r={};o.onsuccess=function(){const e=o.result;if(e)r[e.value.sessionId]={session:e.value.session,lastReceivedMessageTs:e.value.lastReceivedMessageTs},e.continue();else try{n(r)}catch(e){c(t,e)}}}getEndToEndSession(e,t,n,o){const r=n.objectStore("sessions").get([e,t]);r.onsuccess=function(){try{r.result?o({session:r.result.session,lastReceivedMessageTs:r.result.lastReceivedMessageTs}):o(null)}catch(e){c(n,e)}}}getAllEndToEndSessions(e,t){const n=e.objectStore("sessions").openCursor();n.onsuccess=function(){try{const e=n.result;e?(t(e.value),e.continue()):t(null)}catch(t){c(e,t)}}}storeEndToEndSession(e,t,n,o){o.objectStore("sessions").put({deviceKey:e,sessionId:t,session:n.session,lastReceivedMessageTs:n.lastReceivedMessageTs})}async storeEndToEndSessionProblem(e,t,n){const o=this._db.transaction("session_problems","readwrite");return o.objectStore("session_problems").put({deviceKey:e,type:t,fixed:n,time:Date.now()}),l(o)}async getEndToEndSessionProblem(e,t){let n;const o=this._db.transaction("session_problems","readwrite"),r=o.objectStore("session_problems").index("deviceKey").getAll(e);return r.onsuccess=e=>{const o=r.result;if(!o.length)return void(n=null);o.sort((e,t)=>e.time-t.time);const i=o[o.length-1];for(const e of o)if(e.time>t)return void(n=Object.assign({},e,{fixed:i.fixed}));n=i.fixed?null:i},await l(o),n}async filterOutNotifiedErrorDevices(e){const t=this._db.transaction("notified_error_devices","readwrite").objectStore("notified_error_devices"),n=[];return await Promise.all(e.map(e=>new Promise(o=>{const{userId:r,deviceInfo:i}=e,a=t.get([r,i.deviceId]);a.onsuccess=function(){a.result||(t.put({userId:r,deviceId:i.deviceId}),n.push(e)),o()}}))),n}getEndToEndInboundGroupSession(e,t,n,o){let r=!1,i=!1;const a=n.objectStore("inbound_group_sessions").get([e,t]);a.onsuccess=function(){try{r=a.result?a.result.session:null,!1!==i&&o(r,i)}catch(e){c(n,e)}};const s=n.objectStore("inbound_group_sessions_withheld").get([e,t]);s.onsuccess=function(){try{i=s.result?s.result.session:null,!1!==r&&o(r,i)}catch(e){c(n,e)}}}getAllEndToEndInboundGroupSessions(e,t){const n=e.objectStore("inbound_group_sessions").openCursor();n.onsuccess=function(){const o=n.result;if(o){try{t({senderKey:o.value.senderCurve25519Key,sessionId:o.value.sessionId,sessionData:o.value.session})}catch(t){c(e,t)}o.continue()}else try{t(null)}catch(t){c(e,t)}}}addEndToEndInboundGroupSession(e,t,n,r){const i=r.objectStore("inbound_group_sessions").add({senderCurve25519Key:e,sessionId:t,session:n});i.onerror=n=>{"ConstraintError"===i.error.name?(n.stopPropagation(),n.preventDefault(),o.a.log("Ignoring duplicate inbound group session: "+e+" / "+t)):c(r,new Error("Failed to add inbound group session: "+i.error))}}storeEndToEndInboundGroupSession(e,t,n,o){o.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:t,session:n})}storeEndToEndInboundGroupSessionWithheld(e,t,n,o){o.objectStore("inbound_group_sessions_withheld").put({senderCurve25519Key:e,sessionId:t,session:n})}getEndToEndDeviceData(e,t){const n=e.objectStore("device_data").get("-");n.onsuccess=function(){try{t(n.result||null)}catch(t){c(e,t)}}}storeEndToEndDeviceData(e,t){t.objectStore("device_data").put(e,"-")}storeEndToEndRoom(e,t,n){n.objectStore("rooms").put(t,e)}getEndToEndRooms(e,t){const n={},o=e.objectStore("rooms").openCursor();o.onsuccess=function(){const r=o.result;if(r)n[r.key]=r.value,r.continue();else try{t(n)}catch(t){c(e,t)}}}getSessionsNeedingBackup(e){return new Promise((t,n)=>{const o=[],r=this._db.transaction(["sessions_needing_backup","inbound_group_sessions"],"readonly");r.onerror=n,r.oncomplete=function(){t(o)};const i=r.objectStore("sessions_needing_backup"),a=r.objectStore("inbound_group_sessions"),s=i.openCursor();s.onsuccess=function(){const t=s.result;if(t){const n=a.get(t.key);n.onsuccess=function(){o.push({senderKey:n.result.senderCurve25519Key,sessionId:n.result.sessionId,sessionData:n.result.session})},(!e||o.length{const o=t.count();o.onerror=n,o.onsuccess=()=>e(o.result)})}unmarkSessionsNeedingBackup(e,t){t||(t=this._db.transaction("sessions_needing_backup","readwrite"));const n=t.objectStore("sessions_needing_backup");return Promise.all(e.map(e=>new Promise((t,o)=>{const r=n.delete([e.senderKey,e.sessionId]);r.onsuccess=t,r.onerror=o})))}markSessionsNeedingBackup(e,t){t||(t=this._db.transaction("sessions_needing_backup","readwrite"));const n=t.objectStore("sessions_needing_backup");return Promise.all(e.map(e=>new Promise((t,o)=>{const r=n.put({senderCurve25519Key:e.senderKey,sessionId:e.sessionId});r.onsuccess=t,r.onerror=o})))}doTxn(e,t,n){const o=this._db.transaction(t,e),r=l(o),i=n(o);return r.then(()=>i)}}function s(e,t){if(o.a.log("Upgrading IndexedDBCryptoStore from version ".concat(t)+" to ".concat(i)),t<1&&function(e){const t=e.createObjectStore("outgoingRoomKeyRequests",{keyPath:"requestId"});t.createIndex("session",["requestBody.room_id","requestBody.session_id"]),t.createIndex("state","state")}(e),t<2&&e.createObjectStore("account"),t<3){e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]}).createIndex("deviceKey","deviceKey")}if(t<4&&e.createObjectStore("inbound_group_sessions",{keyPath:["senderCurve25519Key","sessionId"]}),t<5&&e.createObjectStore("device_data"),t<6&&e.createObjectStore("rooms"),t<7&&e.createObjectStore("sessions_needing_backup",{keyPath:["senderCurve25519Key","sessionId"]}),t<8&&e.createObjectStore("inbound_group_sessions_withheld",{keyPath:["senderCurve25519Key","sessionId"]}),t<9){e.createObjectStore("session_problems",{keyPath:["deviceKey","time"]}).createIndex("deviceKey","deviceKey"),e.createObjectStore("notified_error_devices",{keyPath:["userId","deviceId"]})}}function c(e,t){e._mx_abortexception=t;try{e.abort()}catch(t){}}function l(e){return new Promise((t,n)=>{e.oncomplete=()=>{void 0!==e._mx_abortexception&&n(e._mx_abortexception),t()},e.onerror=t=>{void 0!==e._mx_abortexception?n(e._mx_abortexception):(o.a.log("Error performing indexeddb txn",t),n(t.target.error))},e.onabort=t=>{void 0!==e._mx_abortexception?n(e._mx_abortexception):(o.a.log("Error performing indexeddb txn",t),n(t.target.error))}})}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return k}));var o=n(161),r=n(135),i=n.n(r),a=n(45),s=n(8);const c="m.key.verification.start",l=["m.key.verification.accept","m.key.verification.key","m.key.verification.mac"];let u;const d=Object(a.a)("m.mismatched_sas","Mismatched short authentication string"),p=Object(a.a)("m.mismatched_commitment","Mismatched commitment");const h=[["🐶","dog"],["🐱","cat"],["🦁","lion"],["🐎","horse"],["🦄","unicorn"],["🐷","pig"],["🐘","elephant"],["🐰","rabbit"],["🐼","panda"],["🐓","rooster"],["🐧","penguin"],["🐢","turtle"],["🐟","fish"],["🐙","octopus"],["🦋","butterfly"],["🌷","flower"],["🌳","tree"],["🌵","cactus"],["🍄","mushroom"],["🌏","globe"],["🌙","moon"],["☁️","cloud"],["🔥","fire"],["🍌","banana"],["🍎","apple"],["🍓","strawberry"],["🌽","corn"],["🍕","pizza"],["🎂","cake"],["❤️","heart"],["🙂","smiley"],["🤖","robot"],["🎩","hat"],["👓","glasses"],["🔧","spanner"],["🎅","santa"],["👍","thumbs up"],["☂️","umbrella"],["⌛","hourglass"],["⏰","clock"],["🎁","gift"],["💡","light bulb"],["📕","book"],["✏️","pencil"],["📎","paperclip"],["✂️","scissors"],["🔒","lock"],["🔑","key"],["🔨","hammer"],["☎️","telephone"],["🏁","flag"],["🚂","train"],["🚲","bicycle"],["✈️","aeroplane"],["🚀","rocket"],["🏆","trophy"],["⚽","ball"],["🎸","guitar"],["🎺","trumpet"],["🔔","bell"],["⚓️","anchor"],["🎧","headphones"],["📁","folder"],["📌","pin"]];const m={decimal:function(e){return[1e3+(e[0]<<5|e[1]>>3),1e3+((7&e[1])<<10|e[2]<<2|e[3]>>6),1e3+((63&e[3])<<7|e[4]>>1)]},emoji:function(e){return[e[0]>>2,(3&e[0])<<4|e[1]>>4,(15&e[1])<<2|e[2]>>6,63&e[2],e[3]>>2,(3&e[3])<<4|e[4]>>4,(15&e[4])<<2|e[5]>>6].map(e=>h[e])}};function g(e,t){const n={};for(const o of t)o in m&&(n[o]=m[o](e));return n}const f={"hkdf-hmac-sha256":"calculate_mac","hmac-sha256":"calculate_mac_long_kdf"};function _(e,t){return function(...n){const o=e[f[t]].apply(e,n);return s.a.log("SAS calculateMAC:",t,n,o),o}}const v=["curve25519"],b=["sha256"],y=["hkdf-hmac-sha256","hmac-sha256"],E=Object.keys(m),S=new Set(v),w=new Set(b),C=new Set(y),x=new Set(E);function T(e,t){return e instanceof Array?e.filter(e=>t.has(e)):[]}class k extends o.b{static get NAME(){return"m.sas.v1"}get events(){return l}async _doVerification(){await e.Olm.init(),u=u||new e.Olm.Utility,await this._baseApis.downloadKeys([this.userId]);let t=!1;do{try{return this.initiatedByMe?await this._doSendVerification():await this._doRespondVerification()}catch(e){if(!(e instanceof o.a))throw e;this.startEvent=e.startEvent,t=!0}}while(t)}canSwitchStartEvent(e){if(e.getType()!==c)return!1;const t=e.getContent();return t&&t.method===k.NAME&&this._waitingForAccept}async _sendStart(){const e=this._channel.completeContent(c,{method:k.NAME,from_device:this._baseApis.deviceId,key_agreement_protocols:v,hashes:b,message_authentication_codes:y,short_authentication_string:E});return await this._channel.sendCompleted(c,e),e}async _doSendVerification(){let t,n;if(this._waitingForAccept=!0,t=this.startEvent?this._channel.completedContentFromEvent(this.startEvent):await this._sendStart(),!this.initiatedByMe)throw new o.a(this.startEvent);try{n=await this._waitForEvent("m.key.verification.accept")}finally{this._waitingForAccept=!1}let r=n.getContent();const s=T(r.short_authentication_string,x);if(!(S.has(r.key_agreement_protocol)&&w.has(r.hash)&&C.has(r.message_authentication_code)&&s.length))throw Object(a.g)();if("string"!=typeof r.commitment)throw Object(a.c)();const c=r.message_authentication_code,l=r.commitment,h=new e.Olm.SAS;try{this._send("m.key.verification.key",{key:h.get_pubkey()}),n=await this._waitForEvent("m.key.verification.key"),r=n.getContent();const e=r.key+i.a.stringify(t);if(u.sha256(e)!==l)throw p();h.set_their_key(r.key);const o="MATRIX_KEY_VERIFICATION_SAS"+this._baseApis.getUserId()+this._baseApis.deviceId+this.userId+this.deviceId+this._channel.transactionId,m=h.generate_bytes(o,6),f=new Promise((e,t)=>{this.sasEvent={sas:g(m,s),confirm:()=>{this._sendMAC(h,c),e()},cancel:()=>t(Object(a.h)()),mismatch:()=>t(d())},this.emit("show_sas",this.sasEvent)});[n]=await Promise.all([this._waitForEvent("m.key.verification.mac").then(e=>(this._expectedEvent="m.key.verification.done",e)),f]),r=n.getContent(),await this._checkMAC(h,r,c)}finally{h.free()}}async _doRespondVerification(){let t=this._channel.completedContentFromEvent(this.startEvent);const n=T(v,new Set(t.key_agreement_protocols))[0],o=T(b,new Set(t.hashes))[0],r=T(y,new Set(t.message_authentication_codes))[0],s=T(t.short_authentication_string,x);if(void 0===n||void 0===o||void 0===r||!s.length)throw Object(a.g)();const c=new e.Olm.SAS;try{const e=c.get_pubkey()+i.a.stringify(t);this._send("m.key.verification.accept",{key_agreement_protocol:n,hash:o,message_authentication_code:r,short_authentication_string:s,commitment:u.sha256(e)});let l=await this._waitForEvent("m.key.verification.key");t=l.getContent(),c.set_their_key(t.key),this._send("m.key.verification.key",{key:c.get_pubkey()});const p="MATRIX_KEY_VERIFICATION_SAS"+this.userId+this.deviceId+this._baseApis.getUserId()+this._baseApis.deviceId+this._channel.transactionId,h=c.generate_bytes(p,6),m=new Promise((e,t)=>{this.sasEvent={sas:g(h,s),confirm:()=>{this._sendMAC(c,r),e()},cancel:()=>t(Object(a.h)()),mismatch:()=>t(d())},this.emit("show_sas",this.sasEvent)});[l]=await Promise.all([this._waitForEvent("m.key.verification.mac").then(e=>(this._expectedEvent="m.key.verification.done",e)),m]),t=l.getContent(),await this._checkMAC(c,t,r)}finally{c.free()}}_sendMAC(e,t){const n={},o=[],r="MATRIX_KEY_VERIFICATION_MAC"+this._baseApis.getUserId()+this._baseApis.deviceId+this.userId+this.deviceId+this._channel.transactionId,i="ed25519:".concat(this._baseApis.deviceId);n[i]=_(e,t)(this._baseApis.getDeviceEd25519Key(),r+i),o.push(i);const a=this._baseApis.getCrossSigningId();if(a){const i="ed25519:".concat(a);n[i]=_(e,t)(a,r+i),o.push(i)}const s=_(e,t)(o.sort().join(","),r+"KEY_IDS");this._send("m.key.verification.mac",{mac:n,keys:s})}async _checkMAC(e,t,n){const o="MATRIX_KEY_VERIFICATION_MAC"+this.userId+this.deviceId+this._baseApis.getUserId()+this._baseApis.deviceId+this._channel.transactionId;if(t.keys!==_(e,n)(Object.keys(t.mac).sort().join(","),o+"KEY_IDS"))throw Object(a.d)();await this._verifyKeys(this.userId,t.mac,(t,r,i)=>{if(i!==_(e,n)(r.keys[t],o+t))throw Object(a.d)()})}}}).call(this,n(24))},function(e,t,n){"use strict";(function(e){class o{constructor(){this.components=null}getComponent(e){if(!e)throw new Error("Invalid component name: ".concat(e));if(null===this.components)throw new Error("Attempted to get a component before a skin has been loaded. This is probably because either: a) Your app has not called sdk.loadSkin(), or b) A component has called getComponent at the root level");const t=(t=>{if(!t)return null;let n=t[e];return n||(n=t["views."+e]),n})(this.components);if(!t)return null;if(!("function"==typeof t))throw new Error("Not a valid component: ".concat(e," (type = ").concat(typeof t,")."));return t}load(e){if(null!==this.components)throw new Error("Attempted to load a skin while a skin is already loadedIf you want to change the active skin, call resetSkin first");this.components={};const t=Object.keys(e.components);for(let n=0;n-1?t.replaces:e.substr(0,e.lastIndexOf(".")+1)+t.replaces.split(".").pop()),this.components[n]=t}reset(){this.components=null}}void 0===e.mxSkinner&&(e.mxSkinner=new o),t.a=e.mxSkinner}).call(this,n(24))},function(e,t,n){"use strict";e.exports.Node=n(334),e.exports.Parser=n(1309),e.exports.HtmlRenderer=n(1321),e.exports.XmlRenderer=n(1322)},function(e,t,n){"use strict";n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i}));var o=n(157);function r(e){const t=e.hash.substring(1).split("?"),n={location:decodeURIComponent(t[0]),params:{}};return t.length>1&&(n.params=o.parse(t[1])),n}function i(e){return o.parse(e.search.substring(1))}},function(e,t,n){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(e){e.exports=JSON.parse('{"0":"O","1":"l","֭":"֖","֮":"֘","֨":"֙","֤":"֚","᪴":"ۛ","⃛":"ۛ","ؙ":"̓","ࣳ":"̓","̓":"̓","̕":"̓","ُ":"̓","ٝ":"̔","֜":"́","֝":"́","ؘ":"́","݇":"́","́":"́","॔":"́","َ":"́","̀":"̀","॓":"̀","̌":"̆","꙼":"̆","٘":"̆","ٚ":"̆","ͮ":"̆","ۨ":"̆̇","̐":"̆̇","ँ":"̆̇","ঁ":"̆̇","ઁ":"̆̇","ଁ":"̆̇","ఀ":"̆̇","ಁ":"̆̇","ഁ":"̆̇","𑒿":"̆̇","᳐":"̂","̑":"̂","ٛ":"̂","߮":"̂","꛰":"̂","֯":"̊","۟":"̊","៓":"̊","゚":"̊","ْ":"̊","ஂ":"̊","ံ":"̊","ំ":"̊","𑌀":"̊","ํ":"̊","ໍ":"̊","ͦ":"̊","ⷪ":"̊","࣫":"̈","߳":"̈","ً":"̋","ࣰ":"̋","͂":"̃","ٓ":"̃","ׄ":"̇","۬":"̇","݀":"̇","࣪":"̇","݁":"̇","͘":"̇","ֹ":"̇","ֺ":"̇","ׂ":"̇","ׁ":"̇","߭":"̇","ं":"̇","ਂ":"̇","ં":"̇","்":"̇","̷":"̸","᪷":"̨","̢":"̨","ͅ":"̨","᳒":"̄","̅":"̄","ٙ":"̄","߫":"̄","꛱":"̄","᳚":"̎","ٗ":"̒","͗":"͐","ࣿ":"͐","ࣸ":"͐","ऀ":"͒","᳭":"̖","᳜":"̩","ٖ":"̩","᳕":"̫","͇":"̳","ࣹ":"͔","ࣺ":"͕","゛":"゙","゜":"゚","̶":"̵","〬":"̉","ׅ":"̣","࣭":"̣","᳝":"̣","ִ":"̣","ٜ":"̣","़":"̣","়":"̣","਼":"̣","઼":"̣","଼":"̣","𑇊":"̣","𑓃":"̣","𐨺":"̣","࣮":"̤","᳞":"̤","༷":"̥","〭":"̥","̧":"̦","̡":"̦","̹":"̦","᳙":"̭","᳘":"̮","॒":"̱","̠":"̱","ࣱ":"ٌ","ࣨ":"ٌ","ࣥ":"ٌ","ﱞ":"ﹲّ","ࣲ":"ٍ","ﱟ":"ﹴّ","ﳲ":"ﹷّ","ﱠ":"ﹶّ","ﳳ":"ﹹّ","ﱡ":"ﹸّ","ؚ":"ِ","̗":"ِ","ﳴ":"ﹻّ","ﱢ":"ﹺّ","ﱣ":"ﹼٰ","ٟ":"ٕ","̍":"ٰ","݂":"ܼ","ਃ":"ঃ","ః":"ঃ","ಃ":"ঃ","ഃ":"ঃ","ඃ":"ঃ","း":"ঃ","𑓁":"ঃ","់":"่","່":"่","້":"้","໊":"๊","໋":"๋","꙯":"⃩","\\u2028":" ","\\u2029":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" "," ":" ","ߺ":"_","﹍":"_","﹎":"_","﹏":"_","‐":"-","‑":"-","‒":"-","–":"-","﹘":"-","۔":"-","⁃":"-","˗":"-","−":"-","➖":"-","Ⲻ":"-","⨩":"-̓","⸚":"-̈","﬩":"-̇","∸":"-̇","⨪":"-̣","꓾":"-.","~":"〜","؍":",","٫":",","‚":",","¸":",","ꓹ":",","⸲":"،","٬":"،",";":";","⸵":"؛","ः":":","ઃ":":",":":":","։":":","܃":":","܄":":","᛬":":","︰":":","᠃":":","᠉":":","⁚":":","׃":":","˸":":","꞉":":","∶":":","ː":":","ꓽ":":","⩴":"::=","⧴":":→","!":"!","ǃ":"!","ⵑ":"!","‼":"!!","⁉":"!?","ʔ":"?","Ɂ":"?","ॽ":"?","Ꭾ":"?","ꛫ":"?","⁈":"?!","⁇":"??","⸮":"؟","𝅭":".","․":".","܁":".","܂":".","꘎":".","𐩐":".","٠":".","۰":".","ꓸ":".","ꓻ":".,","‥":"..","ꓺ":"..","…":"...","꛴":"꛳꛳","・":"·","・":"·","᛫":"·","·":"·","⸱":"·","𐄁":"·","•":"·","‧":"·","∙":"·","⋅":"·","ꞏ":"·","ᐧ":"·","⋯":"···","ⵈ":"···","ᑄ":"·<","⋗":"·>","ᐷ":"·>","ᑀ":"·>","ᔯ":"·4","ᑾ":"·b","ᒀ":"·ḃ","ᑺ":"·d","ᒘ":"·J","ᒶ":"·L","ᑶ":"·P","ᑗ":"·U","ᐺ":"·V","ᐼ":"·Ʌ","ᒮ":"·Γ","ᐎ":"·Δ","ᑙ":"·Ո","ᐌ":"·ᐁ","ᐐ":"·ᐄ","ᐒ":"·ᐅ","ᐔ":"·ᐆ","ᐗ":"·ᐊ","ᐙ":"·ᐋ","ᐾ":"·ᐲ","ᑂ":"·ᐴ","ᑆ":"·ᐹ","ᑛ":"·ᑏ","ᑔ":"·ᑐ","ᑝ":"·ᑐ","ᑟ":"·ᑑ","ᑡ":"·ᑕ","ᑣ":"·ᑖ","ᑴ":"·ᑫ","ᑸ":"·ᑮ","ᑼ":"·ᑰ","ᒒ":"·ᒉ","ᒔ":"·ᒋ","ᒖ":"·ᒌ","ᒚ":"·ᒎ","ᒜ":"·ᒐ","ᒞ":"·ᒑ","ᒬ":"·ᒣ","ᒰ":"·ᒦ","ᒲ":"·ᒧ","ᒴ":"·ᒨ","ᒸ":"·ᒫ","ᓉ":"·ᓀ","ᣆ":"·ᓂ","ᣈ":"·ᓃ","ᣊ":"·ᓄ","ᣌ":"·ᓅ","ᓋ":"·ᓇ","ᓍ":"·ᓈ","ᓜ":"·ᓓ","ᓞ":"·ᓕ","ᓠ":"·ᓖ","ᓢ":"·ᓗ","ᓤ":"·ᓘ","ᓦ":"·ᓚ","ᓨ":"·ᓛ","ᓶ":"·ᓭ","ᓸ":"·ᓯ","ᓺ":"·ᓰ","ᓼ":"·ᓱ","ᓾ":"·ᓲ","ᔀ":"·ᓴ","ᔂ":"·ᓵ","ᔗ":"·ᔐ","ᔙ":"·ᔑ","ᔛ":"·ᔒ","ᔝ":"·ᔓ","ᔟ":"·ᔔ","ᔡ":"·ᔕ","ᔣ":"·ᔖ","ᔱ":"·ᔨ","ᔳ":"·ᔩ","ᔵ":"·ᔪ","ᔷ":"·ᔫ","ᔹ":"·ᔭ","ᔻ":"·ᔮ","ᣎ":"·ᕃ","ᣏ":"·ᕆ","ᣐ":"·ᕇ","ᣑ":"·ᕈ","ᣒ":"·ᕉ","ᣓ":"·ᕋ","ᕎ":"·ᕌ","ᕛ":"·ᕚ","ᕨ":"·ᕧ","ᢳ":"·ᢱ","ᢶ":"·ᢴ","ᢹ":"·ᢸ","ᣂ":"·ᣀ","꠰":"।","॥":"।।","᰼":"᰻᰻","။":"၊၊","᪩":"᪨᪨","᪫":"᪪᪨","᭟":"᭞᭞","𐩗":"𐩖𐩖","𑑌":"𑑋𑑋","𑙂":"𑙁𑙁","𑱂":"𑱁𑱁","᱿":"᱾᱾","՝":"\'","'":"\'","‘":"\'","’":"\'","‛":"\'","′":"\'","‵":"\'","՚":"\'","׳":"\'","`":"\'","`":"\'","`":"\'","´":"\'","΄":"\'","´":"\'","᾽":"\'","᾿":"\'","῾":"\'","ʹ":"\'","ʹ":"\'","ˈ":"\'","ˊ":"\'","ˋ":"\'","˴":"\'","ʻ":"\'","ʽ":"\'","ʼ":"\'","ʾ":"\'","ꞌ":"\'","י":"\'","ߴ":"\'","ߵ":"\'","ᑊ":"\'","ᛌ":"\'","𖽑":"\'","𖽒":"\'","᳓":"\'\'","\\"":"\'\'",""":"\'\'","“":"\'\'","”":"\'\'","‟":"\'\'","″":"\'\'","‶":"\'\'","〃":"\'\'","״":"\'\'","˝":"\'\'","ʺ":"\'\'","˶":"\'\'","ˮ":"\'\'","ײ":"\'\'","‴":"\'\'\'","‷":"\'\'\'","⁗":"\'\'\'\'","Ɓ":"\'B","Ɗ":"\'D","ʼn":"\'n","Ƥ":"\'P","Ƭ":"\'T","Ƴ":"\'Y","[":"(","❨":"(","❲":"(","〔":"(","﴾":"(","⸨":"((","㈠":"(ー)","⑵":"(2)","⒇":"(2O)","⑶":"(3)","⑷":"(4)","⑸":"(5)","⑹":"(6)","⑺":"(7)","⑻":"(8)","⑼":"(9)","⒜":"(a)","🄐":"(A)","⒝":"(b)","🄑":"(B)","⒞":"(c)","🄒":"(C)","⒟":"(d)","🄓":"(D)","⒠":"(e)","🄔":"(E)","⒡":"(f)","🄕":"(F)","⒢":"(g)","🄖":"(G)","⒣":"(h)","🄗":"(H)","⒤":"(i)","⒥":"(j)","🄙":"(J)","⒦":"(k)","🄚":"(K)","⑴":"(l)","🄘":"(l)","⒧":"(l)","🄛":"(L)","⑿":"(l2)","⒀":"(l3)","⒁":"(l4)","⒂":"(l5)","⒃":"(l6)","⒄":"(l7)","⒅":"(l8)","⒆":"(l9)","⑾":"(ll)","⑽":"(lO)","🄜":"(M)","⒩":"(n)","🄝":"(N)","⒪":"(o)","🄞":"(O)","⒫":"(p)","🄟":"(P)","⒬":"(q)","🄠":"(Q)","⒭":"(r)","🄡":"(R)","⒨":"(rn)","⒮":"(s)","🄢":"(S)","🄪":"(S)","⒯":"(t)","🄣":"(T)","⒰":"(u)","🄤":"(U)","⒱":"(v)","🄥":"(V)","⒲":"(w)","🄦":"(W)","⒳":"(x)","🄧":"(X)","⒴":"(y)","🄨":"(Y)","⒵":"(z)","🄩":"(Z)","㈀":"(ᄀ)","㈎":"(가)","㈁":"(ᄂ)","㈏":"(나)","㈂":"(ᄃ)","㈐":"(다)","㈃":"(ᄅ)","㈑":"(라)","㈄":"(ᄆ)","㈒":"(마)","㈅":"(ᄇ)","㈓":"(바)","㈆":"(ᄉ)","㈔":"(사)","㈇":"(ᄋ)","㈕":"(아)","㈝":"(오전)","㈞":"(오후)","㈈":"(ᄌ)","㈖":"(자)","㈜":"(주)","㈉":"(ᄎ)","㈗":"(차)","㈊":"(ᄏ)","㈘":"(카)","㈋":"(ᄐ)","㈙":"(타)","㈌":"(ᄑ)","㈚":"(파)","㈍":"(ᄒ)","㈛":"(하)","㈦":"(七)","㈢":"(三)","🉁":"(三)","㈨":"(九)","㈡":"(二)","🉂":"(二)","㈤":"(五)","㈹":"(代)","㈽":"(企)","㉁":"(休)","㈧":"(八)","㈥":"(六)","㈸":"(労)","🉇":"(勝)","㈩":"(十)","㈿":"(協)","㈴":"(名)","㈺":"(呼)","㈣":"(四)","㈯":"(土)","㈻":"(学)","🉃":"(安)","🉅":"(打)","🉈":"(敗)","㈰":"(日)","㈪":"(月)","㈲":"(有)","㈭":"(木)","🉀":"(本)","㈱":"(株)","㈬":"(水)","㈫":"(火)","🉄":"(点)","㈵":"(特)","🉆":"(盗)","㈼":"(監)","㈳":"(社)","㈷":"(祝)","㉀":"(祭)","㉂":"(自)","㉃":"(至)","㈶":"(財)","㈾":"(資)","㈮":"(金)","]":")","❩":")","❳":")","〕":")","﴿":")","⸩":"))","❴":"{","𝄔":"{","❵":"}","〚":"⟦","〛":"⟧","⟨":"❬","〈":"❬","〈":"❬","㇛":"❬","く":"❬","𡿨":"❬","⟩":"❭","〉":"❭","〉":"❭","^":"︿","⸿":"¶","⁎":"*","٭":"*","∗":"*","𐌟":"*","᜵":"/","⁁":"/","∕":"/","⁄":"/","╱":"/","⟋":"/","⧸":"/","𝈺":"/","㇓":"/","〳":"/","Ⳇ":"/","ノ":"/","丿":"/","⼃":"/","⧶":"/̄","⫽":"//","⫻":"///","\":"\\\\","﹨":"\\\\","∖":"\\\\","⟍":"\\\\","⧵":"\\\\","⧹":"\\\\","𝈏":"\\\\","𝈻":"\\\\","㇔":"\\\\","丶":"\\\\","⼂":"\\\\","⳹":"\\\\\\\\","⑊":"\\\\\\\\","⟈":"\\\\ᑕ","ꝸ":"&","૰":"॰","𑂻":"॰","𑇇":"॰","⚬":"॰","𑇛":"꣼","៙":"๏","៕":"๚","៚":"๛","༌":"་","༎":"།།","˄":"^","ˆ":"^","꙾":"ˇ","˘":"ˇ","‾":"ˉ","﹉":"ˉ","﹊":"ˉ","﹋":"ˉ","﹌":"ˉ","¯":"ˉ"," ̄":"ˉ","▔":"ˉ","ъ":"ˉb","ꙑ":"ˉbi","͵":"ˏ","˻":"˪","꜖":"˪","꜔":"˫","。":"˳","⸰":"°","˚":"°","∘":"°","○":"°","◦":"°","⍜":"°̲","⍤":"°̈","℃":"°C","℉":"°F","௵":"௳","༛":"༚༚","༟":"༚༝","࿎":"༝༚","༞":"༝༝","Ⓒ":"©","Ⓡ":"®","Ⓟ":"℗","𝈛":"⅄","⯬":"↞","⯭":"↟","⯮":"↠","⯯":"↡","↵":"↲","⥥":"⇃⇂","⥯":"⇃ᛚ","𝛛":"∂","𝜕":"∂","𝝏":"∂","𝞉":"∂","𝟃":"∂","𞣌":"∂","𞣍":"∂̵","ð":"∂̵","⌀":"∅","𝛁":"∇","𝛻":"∇","𝜵":"∇","𝝯":"∇","𝞩":"∇","𑢨":"∇","⍢":"∇̈","⍫":"∇̴","█":"∎","■":"∎","⨿":"∐","᛭":"+","➕":"+","𐊛":"+","⨣":"+̂","⨢":"+̊","⨤":"+̃","∔":"+̇","⨥":"+̣","⨦":"+̰","⨧":"+₂","➗":"÷","‹":"<","❮":"<","˂":"<","𝈶":"<","ᐸ":"<","ᚲ":"<","⋖":"<·","Ⲵ":"<·","ᑅ":"<·","≪":"<<","⋘":"<<<","᐀":"=","⹀":"=","゠":"=","꓿":"=","≚":"=̆","≙":"=̂","≗":"=̊","≐":"=̇","≑":"=̣̇","⩮":"=⃰","⩵":"==","⩶":"===","≞":"=ͫ","›":">","❯":">","˃":">","𝈷":">","ᐳ":">","𖼿":">","ᑁ":">·","⪥":"><","≫":">>","⨠":">>","⋙":">>>","⁓":"~","˜":"~","῀":"~","∼":"~","⍨":"~̈","⸞":"~̇","⩪":"~̇","⸟":"~̣","𞣈":"∠","⋀":"∧","∯":"∮∮","∰":"∮∮∮","⸫":"∴","⸪":"∵","⸬":"∷","𑇞":"≈","♎":"≏","🝞":"≏","≣":"≡","⨃":"⊍","⨄":"⊎","𝈸":"⊏","𝈹":"⊐","⨅":"⊓","⨆":"⊔","⨂":"⊗","⍟":"⊛","🝱":"⊠","🝕":"⊡","◁":"⊲","▷":"⊳","⍣":"⋆̈","︴":"⌇","◠":"⌒","⨽":"⌙","⌥":"⌤","⧇":"⌻","◎":"⌾","⦾":"⌾","⧅":"⍂","⦰":"⍉","⏃":"⍋","⏂":"⍎","⏁":"⍕","⏆":"⍭","☸":"⎈","︵":"⏜","︶":"⏝","︷":"⏞","︸":"⏟","︹":"⏠","︺":"⏡","▱":"⏥","⏼":"⏻","︱":"│","|":"│","┃":"│","┏":"┌","┣":"├","▐":"▌","▗":"▖","▝":"▘","☐":"□","■":"▪","▸":"▶","►":"▶","⳩":"☧","🜊":"☩","🌒":"☽","🌙":"☽","⏾":"☾","🌘":"☾","⧙":"⦚","🜺":"⧟","⨾":"⨟","𐆠":"⳨","♩":"𝅘𝅥","♪":"𝅘𝅥𝅮","˙":"ॱ","ൎ":"ॱ","-":"ー","—":"ー","―":"ー","─":"ー","━":"ー","㇐":"ー","ꟷ":"ー","ᅳ":"ー","ㅡ":"ー","一":"ー","⼀":"ー","ᆖ":"ーー","ힹ":"ーᅡ","ힺ":"ーᅥ","ힻ":"ーᅥ丨","ힼ":"ーᅩ","ᆕ":"ーᅮ","ᅴ":"ー丨","ㅢ":"ー丨","ᆗ":"ー丨ᅮ","₤":"£","〒":"₸","〶":"₸","᭜":"᭐","꧆":"꧐","𑓑":"১","೧":"౧","ၥ":"၁","①":"➀","⑩":"➉","⏨":"₁₀","𝟐":"2","𝟚":"2","𝟤":"2","𝟮":"2","𝟸":"2","Ꝛ":"2","Ƨ":"2","Ϩ":"2","Ꙅ":"2","ᒿ":"2","ꛯ":"2","ꧏ":"٢","۲":"٢","૨":"२","𑓒":"২","೨":"౨","②":"➁","ƻ":"2̵","🄃":"2,","⒉":"2.","㏵":"22日","㍮":"22点","㏶":"23日","㍯":"23点","㏷":"24日","㍰":"24点","㏸":"25日","㏹":"26日","㏺":"27日","㏻":"28日","㏼":"29日","㏴":"2l日","㍭":"2l点","⒛":"2O.","㏳":"2O日","㍬":"2O点","෩":"෨ා","෯":"෨ී","㏡":"2日","㋁":"2月","㍚":"2点","𝈆":"3","𝟑":"3","𝟛":"3","𝟥":"3","𝟯":"3","𝟹":"3","Ɜ":"3","Ȝ":"3","Ʒ":"3","Ꝫ":"3","Ⳍ":"3","З":"3","Ӡ":"3","𖼻":"3","𑣊":"3","۳":"٣","𞣉":"٣","૩":"३","③":"➂","Ҙ":"3̦","🄄":"3,","⒊":"3.","㏾":"3l日","㏽":"3O日","㏢":"3日","㋂":"3月","㍛":"3点","𝟒":"4","𝟜":"4","𝟦":"4","𝟰":"4","𝟺":"4","Ꮞ":"4","𑢯":"4","۴":"٤","૪":"४","④":"➃","🄅":"4,","⒋":"4.","ᔰ":"4·","㏣":"4日","㋃":"4月","㍜":"4点","𝟓":"5","𝟝":"5","𝟧":"5","𝟱":"5","𝟻":"5","Ƽ":"5","𑢻":"5","⑤":"➄","🄆":"5,","⒌":"5.","㏤":"5日","㋄":"5月","㍝":"5点","𝟔":"6","𝟞":"6","𝟨":"6","𝟲":"6","𝟼":"6","Ⳓ":"6","б":"6","Ꮾ":"6","𑣕":"6","۶":"٦","𑓖":"৬","⑥":"➅","🄇":"6,","⒍":"6.","㏥":"6日","㋅":"6月","㍞":"6点","𝈒":"7","𝟕":"7","𝟟":"7","𝟩":"7","𝟳":"7","𝟽":"7","𐓒":"7","𑣆":"7","⑦":"➆","🄈":"7,","⒎":"7.","㏦":"7日","㋆":"7月","㍟":"7点","ଃ":"8","৪":"8","੪":"8","𞣋":"8","𝟖":"8","𝟠":"8","𝟪":"8","𝟴":"8","𝟾":"8","ȣ":"8","Ȣ":"8","𐌚":"8","૮":"८","⑧":"➇","🄉":"8,","⒏":"8.","㏧":"8日","㋇":"8月","㍠":"8点","੧":"9","୨":"9","৭":"9","൭":"9","𝟗":"9","𝟡":"9","𝟫":"9","𝟵":"9","𝟿":"9","Ꝯ":"9","Ⳋ":"9","𑣌":"9","𑢬":"9","𑣖":"9","१":"٩","𑣤":"٩","۹":"٩","೯":"౯","⑨":"➈","🄊":"9,","⒐":"9.","㏨":"9日","㋈":"9月","㍡":"9点","⍺":"a","a":"a","𝐚":"a","𝑎":"a","𝒂":"a","𝒶":"a","𝓪":"a","𝔞":"a","𝕒":"a","𝖆":"a","𝖺":"a","𝗮":"a","𝘢":"a","𝙖":"a","𝚊":"a","ɑ":"a","α":"a","𝛂":"a","𝛼":"a","𝜶":"a","𝝰":"a","𝞪":"a","а":"a","ⷶ":"ͣ","A":"A","𝐀":"A","𝐴":"A","𝑨":"A","𝒜":"A","𝓐":"A","𝔄":"A","𝔸":"A","𝕬":"A","𝖠":"A","𝗔":"A","𝘈":"A","𝘼":"A","𝙰":"A","Α":"A","𝚨":"A","𝛢":"A","𝜜":"A","𝝖":"A","𝞐":"A","А":"A","Ꭺ":"A","ᗅ":"A","ꓮ":"A","𖽀":"A","𐊠":"A","⍶":"a̲","ǎ":"ă","Ǎ":"Ă","ȧ":"å","Ȧ":"Å","ẚ":"ả","℀":"a/c","℁":"a/s","ꜳ":"aa","Ꜳ":"AA","æ":"ae","ӕ":"ae","Æ":"AE","Ӕ":"AE","ꜵ":"ao","Ꜵ":"AO","🜇":"AR","ꜷ":"au","Ꜷ":"AU","ꜹ":"av","ꜻ":"av","Ꜹ":"AV","Ꜻ":"AV","ꜽ":"ay","Ꜽ":"AY","ꭺ":"ᴀ","∀":"Ɐ","𝈗":"Ɐ","ᗄ":"Ɐ","ꓯ":"Ɐ","𐐟":"Ɒ","𝐛":"b","𝑏":"b","𝒃":"b","𝒷":"b","𝓫":"b","𝔟":"b","𝕓":"b","𝖇":"b","𝖻":"b","𝗯":"b","𝘣":"b","𝙗":"b","𝚋":"b","Ƅ":"b","Ь":"b","Ꮟ":"b","ᑲ":"b","ᖯ":"b","B":"B","ℬ":"B","𝐁":"B","𝐵":"B","𝑩":"B","𝓑":"B","𝔅":"B","𝔹":"B","𝕭":"B","𝖡":"B","𝗕":"B","𝘉":"B","𝘽":"B","𝙱":"B","Ꞵ":"B","Β":"B","𝚩":"B","𝛣":"B","𝜝":"B","𝝗":"B","𝞑":"B","В":"B","Ᏼ":"B","ᗷ":"B","ꓐ":"B","𐊂":"B","𐊡":"B","𐌁":"B","ɓ":"b̔","ᑳ":"ḃ","ƃ":"b̄","Ƃ":"b̄","Б":"b̄","ƀ":"b̵","ҍ":"b̵","Ҍ":"b̵","ѣ":"b̵","Ѣ":"b̵","ᑿ":"b·","ᒁ":"ḃ·","ᒈ":"b\'","Ы":"bl","в":"ʙ","ᏼ":"ʙ","c":"c","ⅽ":"c","𝐜":"c","𝑐":"c","𝒄":"c","𝒸":"c","𝓬":"c","𝔠":"c","𝕔":"c","𝖈":"c","𝖼":"c","𝗰":"c","𝘤":"c","𝙘":"c","𝚌":"c","ᴄ":"c","ϲ":"c","ⲥ":"c","с":"c","ꮯ":"c","𐐽":"c","ⷭ":"ͨ","🝌":"C","𑣲":"C","𑣩":"C","C":"C","Ⅽ":"C","ℂ":"C","ℭ":"C","𝐂":"C","𝐶":"C","𝑪":"C","𝒞":"C","𝓒":"C","𝕮":"C","𝖢":"C","𝗖":"C","𝘊":"C","𝘾":"C","𝙲":"C","Ϲ":"C","Ⲥ":"C","С":"C","Ꮯ":"C","ꓚ":"C","𐊢":"C","𐌂":"C","𐐕":"C","𐔜":"C","¢":"c̸","ȼ":"c̸","₡":"C⃫","ç":"c̦","ҫ":"c̦","Ç":"C̦","Ҫ":"C̦","Ƈ":"C\'","℅":"c/o","℆":"c/u","⋴":"ꞓ","ɛ":"ꞓ","ε":"ꞓ","ϵ":"ꞓ","𝛆":"ꞓ","𝛜":"ꞓ","𝜀":"ꞓ","𝜖":"ꞓ","𝜺":"ꞓ","𝝐":"ꞓ","𝝴":"ꞓ","𝞊":"ꞓ","𝞮":"ꞓ","𝟄":"ꞓ","ⲉ":"ꞓ","є":"ꞓ","ԑ":"ꞓ","ꮛ":"ꞓ","𑣎":"ꞓ","𐐩":"ꞓ","€":"Ꞓ","Ⲉ":"Ꞓ","Є":"Ꞓ","⍷":"ꞓ̲","ͽ":"ꜿ","Ͽ":"Ꜿ","ⅾ":"d","ⅆ":"d","𝐝":"d","𝑑":"d","𝒅":"d","𝒹":"d","𝓭":"d","𝔡":"d","𝕕":"d","𝖉":"d","𝖽":"d","𝗱":"d","𝘥":"d","𝙙":"d","𝚍":"d","ԁ":"d","Ꮷ":"d","ᑯ":"d","ꓒ":"d","Ⅾ":"D","ⅅ":"D","𝐃":"D","𝐷":"D","𝑫":"D","𝒟":"D","𝓓":"D","𝔇":"D","𝔻":"D","𝕯":"D","𝖣":"D","𝗗":"D","𝘋":"D","𝘿":"D","𝙳":"D","Ꭰ":"D","ᗞ":"D","ᗪ":"D","ꓓ":"D","ɗ":"d̔","ɖ":"d̨","ƌ":"d̄","đ":"d̵","Đ":"D̵","Ð":"D̵","Ɖ":"D̵","₫":"ḏ̵","ꝺ":"Ꝺ","ᑻ":"d·","ᒇ":"d\'","ʤ":"dȝ","dz":"dz","ʣ":"dz","Dz":"Dz","DZ":"DZ","dž":"dž","Dž":"Dž","DŽ":"DŽ","ʥ":"dʑ","ꭰ":"ᴅ","⸹":"ẟ","δ":"ẟ","𝛅":"ẟ","𝛿":"ẟ","𝜹":"ẟ","𝝳":"ẟ","𝞭":"ẟ","ծ":"ẟ","ᕷ":"ẟ","℮":"e","e":"e","ℯ":"e","ⅇ":"e","𝐞":"e","𝑒":"e","𝒆":"e","𝓮":"e","𝔢":"e","𝕖":"e","𝖊":"e","𝖾":"e","𝗲":"e","𝘦":"e","𝙚":"e","𝚎":"e","ꬲ":"e","е":"e","ҽ":"e","ⷷ":"ͤ","⋿":"E","E":"E","ℰ":"E","𝐄":"E","𝐸":"E","𝑬":"E","𝓔":"E","𝔈":"E","𝔼":"E","𝕰":"E","𝖤":"E","𝗘":"E","𝘌":"E","𝙀":"E","𝙴":"E","Ε":"E","𝚬":"E","𝛦":"E","𝜠":"E","𝝚":"E","𝞔":"E","Е":"E","ⴹ":"E","Ꭼ":"E","ꓰ":"E","𑢦":"E","𑢮":"E","𐊆":"E","ě":"ĕ","Ě":"Ĕ","ɇ":"e̸","Ɇ":"E̸","ҿ":"ę","ꭼ":"ᴇ","ə":"ǝ","ә":"ǝ","∃":"Ǝ","ⴺ":"Ǝ","ꓱ":"Ǝ","ɚ":"ǝ˞","ᴔ":"ǝo","ꭁ":"ǝo̸","ꭂ":"ǝo̵","Ә":"Ə","𝈡":"Ɛ","ℇ":"Ɛ","Ԑ":"Ɛ","Ꮛ":"Ɛ","𖼭":"Ɛ","𐐁":"Ɛ","ᶟ":"ᵋ","ᴈ":"ɜ","з":"ɜ","ҙ":"ɜ̦","𐑂":"ɞ","ꞝ":"ʚ","𐐪":"ʚ","𝐟":"f","𝑓":"f","𝒇":"f","𝒻":"f","𝓯":"f","𝔣":"f","𝕗":"f","𝖋":"f","𝖿":"f","𝗳":"f","𝘧":"f","𝙛":"f","𝚏":"f","ꬵ":"f","ꞙ":"f","ſ":"f","ẝ":"f","ք":"f","𝈓":"F","ℱ":"F","𝐅":"F","𝐹":"F","𝑭":"F","𝓕":"F","𝔉":"F","𝔽":"F","𝕱":"F","𝖥":"F","𝗙":"F","𝘍":"F","𝙁":"F","𝙵":"F","Ꞙ":"F","Ϝ":"F","𝟊":"F","ᖴ":"F","ꓝ":"F","𑣂":"F","𑢢":"F","𐊇":"F","𐊥":"F","𐔥":"F","ƒ":"f̦","Ƒ":"F̦","ᵮ":"f̴","℻":"FAX","ff":"ff","ffi":"ffi","ffl":"ffl","fi":"fi","fl":"fl","ʩ":"fŋ","ᖵ":"Ⅎ","ꓞ":"Ⅎ","𝈰":"ꟻ","ᖷ":"ꟻ","g":"g","ℊ":"g","𝐠":"g","𝑔":"g","𝒈":"g","𝓰":"g","𝔤":"g","𝕘":"g","𝖌":"g","𝗀":"g","𝗴":"g","𝘨":"g","𝙜":"g","𝚐":"g","ɡ":"g","ᶃ":"g","ƍ":"g","ց":"g","𝐆":"G","𝐺":"G","𝑮":"G","𝒢":"G","𝓖":"G","𝔊":"G","𝔾":"G","𝕲":"G","𝖦":"G","𝗚":"G","𝘎":"G","𝙂":"G","𝙶":"G","Ԍ":"G","Ꮐ":"G","Ᏻ":"G","ꓖ":"G","ᶢ":"ᵍ","ɠ":"g̔","ǧ":"ğ","Ǧ":"Ğ","ǵ":"ģ","ǥ":"g̵","Ǥ":"G̵","Ɠ":"G\'","ԍ":"ɢ","ꮐ":"ɢ","ᏻ":"ɢ","h":"h","ℎ":"h","𝐡":"h","𝒉":"h","𝒽":"h","𝓱":"h","𝔥":"h","𝕙":"h","𝖍":"h","𝗁":"h","𝗵":"h","𝘩":"h","𝙝":"h","𝚑":"h","һ":"h","հ":"h","Ꮒ":"h","H":"H","ℋ":"H","ℌ":"H","ℍ":"H","𝐇":"H","𝐻":"H","𝑯":"H","𝓗":"H","𝕳":"H","𝖧":"H","𝗛":"H","𝘏":"H","𝙃":"H","𝙷":"H","Η":"H","𝚮":"H","𝛨":"H","𝜢":"H","𝝜":"H","𝞖":"H","Ⲏ":"H","Н":"H","Ꮋ":"H","ᕼ":"H","ꓧ":"H","𐋏":"H","ᵸ":"ᴴ","ɦ":"h̔","ꚕ":"h̔","Ᏺ":"h̔","Ⱨ":"H̩","Ң":"H̩","ħ":"h̵","ℏ":"h̵","ћ":"h̵","Ħ":"H̵","Ӊ":"H̦","Ӈ":"H̦","н":"ʜ","ꮋ":"ʜ","ң":"ʜ̩","ӊ":"ʜ̦","ӈ":"ʜ̦","Ԋ":"Ƕ","ꮀ":"ⱶ","Ͱ":"Ⱶ","Ꭸ":"Ⱶ","Ꮀ":"Ⱶ","ꚱ":"Ⱶ","ꞕ":"ꜧ","˛":"i","⍳":"i","i":"i","ⅰ":"i","ℹ":"i","ⅈ":"i","𝐢":"i","𝑖":"i","𝒊":"i","𝒾":"i","𝓲":"i","𝔦":"i","𝕚":"i","𝖎":"i","𝗂":"i","𝗶":"i","𝘪":"i","𝙞":"i","𝚒":"i","ı":"i","𝚤":"i","ɪ":"i","ɩ":"i","ι":"i","ι":"i","ͺ":"i","𝛊":"i","𝜄":"i","𝜾":"i","𝝸":"i","𝞲":"i","і":"i","ꙇ":"i","ӏ":"i","ꭵ":"i","Ꭵ":"i","𑣃":"i","ⓛ":"Ⓘ","⍸":"i̲","ǐ":"ĭ","Ǐ":"Ĭ","ɨ":"i̵","ᵻ":"i̵","ᵼ":"i̵","ⅱ":"ii","ⅲ":"iii","ij":"ij","ⅳ":"iv","ⅸ":"ix","j":"j","ⅉ":"j","𝐣":"j","𝑗":"j","𝒋":"j","𝒿":"j","𝓳":"j","𝔧":"j","𝕛":"j","𝖏":"j","𝗃":"j","𝗷":"j","𝘫":"j","𝙟":"j","𝚓":"j","ϳ":"j","ј":"j","J":"J","𝐉":"J","𝐽":"J","𝑱":"J","𝒥":"J","𝓙":"J","𝔍":"J","𝕁":"J","𝕵":"J","𝖩":"J","𝗝":"J","𝘑":"J","𝙅":"J","𝙹":"J","Ʝ":"J","Ϳ":"J","Ј":"J","Ꭻ":"J","ᒍ":"J","ꓙ":"J","ɉ":"j̵","Ɉ":"J̵","ᒙ":"J·","𝚥":"ȷ","յ":"ȷ","ꭻ":"ᴊ","𝐤":"k","𝑘":"k","𝒌":"k","𝓀":"k","𝓴":"k","𝔨":"k","𝕜":"k","𝖐":"k","𝗄":"k","𝗸":"k","𝘬":"k","𝙠":"k","𝚔":"k","K":"K","K":"K","𝐊":"K","𝐾":"K","𝑲":"K","𝒦":"K","𝓚":"K","𝔎":"K","𝕂":"K","𝕶":"K","𝖪":"K","𝗞":"K","𝘒":"K","𝙆":"K","𝙺":"K","Κ":"K","𝚱":"K","𝛫":"K","𝜥":"K","𝝟":"K","𝞙":"K","Ⲕ":"K","К":"K","Ꮶ":"K","ᛕ":"K","ꓗ":"K","𐔘":"K","ƙ":"k̔","Ⱪ":"K̩","Қ":"K̩","₭":"K̵","Ꝁ":"K̵","Ҟ":"K̵","Ƙ":"K\'","׀":"l","|":"l","∣":"l","⏽":"l","│":"l","١":"l","۱":"l","𐌠":"l","𞣇":"l","𝟏":"l","𝟙":"l","𝟣":"l","𝟭":"l","𝟷":"l","I":"l","I":"l","Ⅰ":"l","ℐ":"l","ℑ":"l","𝐈":"l","𝐼":"l","𝑰":"l","𝓘":"l","𝕀":"l","𝕴":"l","𝖨":"l","𝗜":"l","𝘐":"l","𝙄":"l","𝙸":"l","Ɩ":"l","l":"l","ⅼ":"l","ℓ":"l","𝐥":"l","𝑙":"l","𝒍":"l","𝓁":"l","𝓵":"l","𝔩":"l","𝕝":"l","𝖑":"l","𝗅":"l","𝗹":"l","𝘭":"l","𝙡":"l","𝚕":"l","ǀ":"l","Ι":"l","𝚰":"l","𝛪":"l","𝜤":"l","𝝞":"l","𝞘":"l","Ⲓ":"l","І":"l","Ӏ":"l","ו":"l","ן":"l","ا":"l","𞸀":"l","𞺀":"l","ﺎ":"l","ﺍ":"l","ߊ":"l","ⵏ":"l","ᛁ":"l","ꓲ":"l","𖼨":"l","𐊊":"l","𐌉":"l","𝈪":"L","Ⅼ":"L","ℒ":"L","𝐋":"L","𝐿":"L","𝑳":"L","𝓛":"L","𝔏":"L","𝕃":"L","𝕷":"L","𝖫":"L","𝗟":"L","𝘓":"L","𝙇":"L","𝙻":"L","Ⳑ":"L","Ꮮ":"L","ᒪ":"L","ꓡ":"L","𖼖":"L","𑢣":"L","𑢲":"L","𐐛":"L","𐔦":"L","ﴼ":"l̋","ﴽ":"l̋","ł":"l̸","Ł":"L̸","ɭ":"l̨","Ɨ":"l̵","ƚ":"l̵","ɫ":"l̴","إ":"lٕ","ﺈ":"lٕ","ﺇ":"lٕ","ٳ":"lٕ","ŀ":"l·","Ŀ":"l·","ᒷ":"l·","🄂":"l,","⒈":"l.","ױ":"l\'","⒓":"l2.","㏫":"l2日","㋋":"l2月","㍤":"l2点","⒔":"l3.","㏬":"l3日","㍥":"l3点","⒕":"l4.","㏭":"l4日","㍦":"l4点","⒖":"l5.","㏮":"l5日","㍧":"l5点","⒗":"l6.","㏯":"l6日","㍨":"l6点","⒘":"l7.","㏰":"l7日","㍩":"l7点","⒙":"l8.","㏱":"l8日","㍪":"l8点","⒚":"l9.","㏲":"l9日","㍫":"l9点","lj":"lj","IJ":"lJ","Lj":"Lj","LJ":"LJ","‖":"ll","∥":"ll","Ⅱ":"ll","ǁ":"ll","װ":"ll","𐆙":"l̵l̵","⒒":"ll.","Ⅲ":"lll","𐆘":"l̵l̵S̵","㏪":"ll日","㋊":"ll月","㍣":"ll点","Ю":"lO","⒑":"lO.","㏩":"lO日","㋉":"lO月","㍢":"lO点","ʪ":"ls","₶":"lt","Ⅳ":"lV","Ⅸ":"lX","ɮ":"lȝ","ʫ":"lz","أ":"lٴ","ﺄ":"lٴ","ﺃ":"lٴ","ٲ":"lٴ","ٵ":"lٴ","ﷳ":"lكبر","ﷲ":"lللّٰo","㏠":"l日","㋀":"l月","㍙":"l点","ⳑ":"ʟ","ꮮ":"ʟ","𐑃":"ʟ","M":"M","Ⅿ":"M","ℳ":"M","𝐌":"M","𝑀":"M","𝑴":"M","𝓜":"M","𝔐":"M","𝕄":"M","𝕸":"M","𝖬":"M","𝗠":"M","𝘔":"M","𝙈":"M","𝙼":"M","Μ":"M","𝚳":"M","𝛭":"M","𝜧":"M","𝝡":"M","𝞛":"M","Ϻ":"M","Ⲙ":"M","М":"M","Ꮇ":"M","ᗰ":"M","ᛖ":"M","ꓟ":"M","𐊰":"M","𐌑":"M","Ӎ":"M̦","🝫":"MB","ⷨ":"ᷟ","𝐧":"n","𝑛":"n","𝒏":"n","𝓃":"n","𝓷":"n","𝔫":"n","𝕟":"n","𝖓":"n","𝗇":"n","𝗻":"n","𝘯":"n","𝙣":"n","𝚗":"n","ո":"n","ռ":"n","N":"N","ℕ":"N","𝐍":"N","𝑁":"N","𝑵":"N","𝒩":"N","𝓝":"N","𝔑":"N","𝕹":"N","𝖭":"N","𝗡":"N","𝘕":"N","𝙉":"N","𝙽":"N","Ν":"N","𝚴":"N","𝛮":"N","𝜨":"N","𝝢":"N","𝞜":"N","Ⲛ":"N","ꓠ":"N","𐔓":"N","𐆎":"N̊","ɳ":"n̨","ƞ":"n̩","η":"n̩","𝛈":"n̩","𝜂":"n̩","𝜼":"n̩","𝝶":"n̩","𝞰":"n̩","Ɲ":"N̦","ᵰ":"n̴","nj":"nj","Nj":"Nj","NJ":"NJ","№":"No","ͷ":"ᴎ","и":"ᴎ","𐑍":"ᴎ","ņ":"ɲ","ం":"o","ಂ":"o","ം":"o","ං":"o","०":"o","੦":"o","૦":"o","௦":"o","౦":"o","೦":"o","൦":"o","๐":"o","໐":"o","၀":"o","٥":"o","۵":"o","o":"o","ℴ":"o","𝐨":"o","𝑜":"o","𝒐":"o","𝓸":"o","𝔬":"o","𝕠":"o","𝖔":"o","𝗈":"o","𝗼":"o","𝘰":"o","𝙤":"o","𝚘":"o","ᴏ":"o","ᴑ":"o","ꬽ":"o","ο":"o","𝛐":"o","𝜊":"o","𝝄":"o","𝝾":"o","𝞸":"o","σ":"o","𝛔":"o","𝜎":"o","𝝈":"o","𝞂":"o","𝞼":"o","ⲟ":"o","о":"o","ჿ":"o","օ":"o","ס":"o","ه":"o","𞸤":"o","𞹤":"o","𞺄":"o","ﻫ":"o","ﻬ":"o","ﻪ":"o","ﻩ":"o","ھ":"o","ﮬ":"o","ﮭ":"o","ﮫ":"o","ﮪ":"o","ہ":"o","ﮨ":"o","ﮩ":"o","ﮧ":"o","ﮦ":"o","ە":"o","ഠ":"o","ဝ":"o","𐓪":"o","𑣈":"o","𑣗":"o","𐐬":"o","߀":"O","০":"O","୦":"O","〇":"O","𑓐":"O","𑣠":"O","𝟎":"O","𝟘":"O","𝟢":"O","𝟬":"O","𝟶":"O","O":"O","𝐎":"O","𝑂":"O","𝑶":"O","𝒪":"O","𝓞":"O","𝔒":"O","𝕆":"O","𝕺":"O","𝖮":"O","𝗢":"O","𝘖":"O","𝙊":"O","𝙾":"O","Ο":"O","𝚶":"O","𝛰":"O","𝜪":"O","𝝤":"O","𝞞":"O","Ⲟ":"O","О":"O","Օ":"O","ⵔ":"O","ዐ":"O","ଠ":"O","𐓂":"O","ꓳ":"O","𑢵":"O","𐊒":"O","𐊫":"O","𐐄":"O","𐔖":"O","⁰":"º","ᵒ":"º","ǒ":"ŏ","Ǒ":"Ŏ","ۿ":"ô","Ő":"Ö","ø":"o̸","ꬾ":"o̸","Ø":"O̸","ⵁ":"O̸","Ǿ":"Ó̸","ɵ":"o̵","ꝋ":"o̵","ө":"o̵","ѳ":"o̵","ꮎ":"o̵","ꮻ":"o̵","⊖":"O̵","⊝":"O̵","⍬":"O̵","𝈚":"O̵","🜔":"O̵","Ɵ":"O̵","Ꝋ":"O̵","θ":"O̵","ϑ":"O̵","𝛉":"O̵","𝛝":"O̵","𝜃":"O̵","𝜗":"O̵","𝜽":"O̵","𝝑":"O̵","𝝷":"O̵","𝞋":"O̵","𝞱":"O̵","𝟅":"O̵","Θ":"O̵","ϴ":"O̵","𝚯":"O̵","𝚹":"O̵","𝛩":"O̵","𝛳":"O̵","𝜣":"O̵","𝜭":"O̵","𝝝":"O̵","𝝧":"O̵","𝞗":"O̵","𝞡":"O̵","Ө":"O̵","Ѳ":"O̵","ⴱ":"O̵","Ꮎ":"O̵","Ꮻ":"O̵","ꭴ":"ơ","ﳙ":"oٰ","🄁":"O,","🄀":"O.","ơ":"o\'","Ơ":"O\'","Ꭴ":"O\'","%":"º/₀","٪":"º/₀","⁒":"º/₀","‰":"º/₀₀","؉":"º/₀₀","‱":"º/₀₀₀","؊":"º/₀₀₀","œ":"oe","Œ":"OE","ɶ":"oᴇ","∞":"oo","ꝏ":"oo","ꚙ":"oo","Ꝏ":"OO","Ꚙ":"OO","ﳗ":"oج","ﱑ":"oج","ﳘ":"oم","ﱒ":"oم","ﶓ":"oمج","ﶔ":"oمم","ﱓ":"oى","ﱔ":"oى","ൟ":"oരo","တ":"oာ","㍘":"O点","ↄ":"ɔ","ᴐ":"ɔ","ͻ":"ɔ","𐑋":"ɔ","Ↄ":"Ɔ","Ͻ":"Ɔ","ꓛ":"Ɔ","𐐣":"Ɔ","ꬿ":"ɔ̸","ꭢ":"ɔe","𐐿":"ɷ","⍴":"p","p":"p","𝐩":"p","𝑝":"p","𝒑":"p","𝓅":"p","𝓹":"p","𝔭":"p","𝕡":"p","𝖕":"p","𝗉":"p","𝗽":"p","𝘱":"p","𝙥":"p","𝚙":"p","ρ":"p","ϱ":"p","𝛒":"p","𝛠":"p","𝜌":"p","𝜚":"p","𝝆":"p","𝝔":"p","𝞀":"p","𝞎":"p","𝞺":"p","𝟈":"p","ⲣ":"p","р":"p","P":"P","ℙ":"P","𝐏":"P","𝑃":"P","𝑷":"P","𝒫":"P","𝓟":"P","𝔓":"P","𝕻":"P","𝖯":"P","𝗣":"P","𝘗":"P","𝙋":"P","𝙿":"P","Ρ":"P","𝚸":"P","𝛲":"P","𝜬":"P","𝝦":"P","𝞠":"P","Ⲣ":"P","Р":"P","Ꮲ":"P","ᑭ":"P","ꓑ":"P","𐊕":"P","ƥ":"p̔","ᵽ":"p̵","ᑷ":"p·","ᒆ":"P\'","ᴩ":"ᴘ","ꮲ":"ᴘ","φ":"ɸ","ϕ":"ɸ","𝛗":"ɸ","𝛟":"ɸ","𝜑":"ɸ","𝜙":"ɸ","𝝋":"ɸ","𝝓":"ɸ","𝞅":"ɸ","𝞍":"ɸ","𝞿":"ɸ","𝟇":"ɸ","ⲫ":"ɸ","ф":"ɸ","𝐪":"q","𝑞":"q","𝒒":"q","𝓆":"q","𝓺":"q","𝔮":"q","𝕢":"q","𝖖":"q","𝗊":"q","𝗾":"q","𝘲":"q","𝙦":"q","𝚚":"q","ԛ":"q","գ":"q","զ":"q","ℚ":"Q","𝐐":"Q","𝑄":"Q","𝑸":"Q","𝒬":"Q","𝓠":"Q","𝔔":"Q","𝕼":"Q","𝖰":"Q","𝗤":"Q","𝘘":"Q","𝙌":"Q","𝚀":"Q","ⵕ":"Q","ʠ":"q̔","🜀":"QE","ᶐ":"ɋ","ᴋ":"ĸ","κ":"ĸ","ϰ":"ĸ","𝛋":"ĸ","𝛞":"ĸ","𝜅":"ĸ","𝜘":"ĸ","𝜿":"ĸ","𝝒":"ĸ","𝝹":"ĸ","𝞌":"ĸ","𝞳":"ĸ","𝟆":"ĸ","ⲕ":"ĸ","к":"ĸ","ꮶ":"ĸ","қ":"ĸ̩","ҟ":"ĸ̵","𝐫":"r","𝑟":"r","𝒓":"r","𝓇":"r","𝓻":"r","𝔯":"r","𝕣":"r","𝖗":"r","𝗋":"r","𝗿":"r","𝘳":"r","𝙧":"r","𝚛":"r","ꭇ":"r","ꭈ":"r","ᴦ":"r","ⲅ":"r","г":"r","ꮁ":"r","𝈖":"R","ℛ":"R","ℜ":"R","ℝ":"R","𝐑":"R","𝑅":"R","𝑹":"R","𝓡":"R","𝕽":"R","𝖱":"R","𝗥":"R","𝘙":"R","𝙍":"R","𝚁":"R","Ʀ":"R","Ꭱ":"R","Ꮢ":"R","𐒴":"R","ᖇ":"R","ꓣ":"R","𖼵":"R","ɽ":"r̨","ɼ":"r̩","ɍ":"r̵","ғ":"r̵","ᵲ":"r̴","ґ":"r\'","𑣣":"rn","m":"rn","ⅿ":"rn","𝐦":"rn","𝑚":"rn","𝒎":"rn","𝓂":"rn","𝓶":"rn","𝔪":"rn","𝕞":"rn","𝖒":"rn","𝗆":"rn","𝗺":"rn","𝘮":"rn","𝙢":"rn","𝚖":"rn","𑜀":"rn","₥":"rn̸","ɱ":"rn̦","ᵯ":"rn̴","₨":"Rs","ꭱ":"ʀ","ꮢ":"ʀ","я":"ᴙ","ᵳ":"ɾ̴","℩":"ɿ","s":"s","𝐬":"s","𝑠":"s","𝒔":"s","𝓈":"s","𝓼":"s","𝔰":"s","𝕤":"s","𝖘":"s","𝗌":"s","𝘀":"s","𝘴":"s","𝙨":"s","𝚜":"s","ꜱ":"s","ƽ":"s","ѕ":"s","ꮪ":"s","𑣁":"s","𐑈":"s","S":"S","𝐒":"S","𝑆":"S","𝑺":"S","𝒮":"S","𝓢":"S","𝔖":"S","𝕊":"S","𝕾":"S","𝖲":"S","𝗦":"S","𝘚":"S","𝙎":"S","𝚂":"S","Ѕ":"S","Տ":"S","Ꮥ":"S","Ꮪ":"S","ꓢ":"S","𖼺":"S","𐊖":"S","𐐠":"S","ʂ":"s̨","ᵴ":"s̴","ꞵ":"ß","β":"ß","ϐ":"ß","𝛃":"ß","𝛽":"ß","𝜷":"ß","𝝱":"ß","𝞫":"ß","Ᏸ":"ß","🝜":"sss","st":"st","∫":"ʃ","ꭍ":"ʃ","∑":"Ʃ","⅀":"Ʃ","Σ":"Ʃ","𝚺":"Ʃ","𝛴":"Ʃ","𝜮":"Ʃ","𝝨":"Ʃ","𝞢":"Ʃ","ⵉ":"Ʃ","∬":"ʃʃ","∭":"ʃʃʃ","⨌":"ʃʃʃʃ","𝐭":"t","𝑡":"t","𝒕":"t","𝓉":"t","𝓽":"t","𝔱":"t","𝕥":"t","𝖙":"t","𝗍":"t","𝘁":"t","𝘵":"t","𝙩":"t","𝚝":"t","⊤":"T","⟙":"T","🝨":"T","T":"T","𝐓":"T","𝑇":"T","𝑻":"T","𝒯":"T","𝓣":"T","𝔗":"T","𝕋":"T","𝕿":"T","𝖳":"T","𝗧":"T","𝘛":"T","𝙏":"T","𝚃":"T","Τ":"T","𝚻":"T","𝛵":"T","𝜯":"T","𝝩":"T","𝞣":"T","Ⲧ":"T","Т":"T","Ꭲ":"T","ꓔ":"T","𖼊":"T","𑢼":"T","𐊗":"T","𐊱":"T","𐌕":"T","ƭ":"t̔","⍡":"T̈","Ⱦ":"T̸","Ț":"Ţ","Ʈ":"T̨","Ҭ":"T̩","₮":"T⃫","ŧ":"t̵","Ŧ":"T̵","ᵵ":"t̴","Ⴀ":"Ꞇ","Ꜩ":"T3","ʨ":"tɕ","℡":"TEL","ꝷ":"tf","ʦ":"ts","ʧ":"tʃ","ꜩ":"tȝ","τ":"ᴛ","𝛕":"ᴛ","𝜏":"ᴛ","𝝉":"ᴛ","𝞃":"ᴛ","𝞽":"ᴛ","т":"ᴛ","ꭲ":"ᴛ","ҭ":"ᴛ̩","ţ":"ƫ","ț":"ƫ","Ꮏ":"ƫ","𝐮":"u","𝑢":"u","𝒖":"u","𝓊":"u","𝓾":"u","𝔲":"u","𝕦":"u","𝖚":"u","𝗎":"u","𝘂":"u","𝘶":"u","𝙪":"u","𝚞":"u","ꞟ":"u","ᴜ":"u","ꭎ":"u","ꭒ":"u","ʋ":"u","υ":"u","𝛖":"u","𝜐":"u","𝝊":"u","𝞄":"u","𝞾":"u","ս":"u","𐓶":"u","𑣘":"u","∪":"U","⋃":"U","𝐔":"U","𝑈":"U","𝑼":"U","𝒰":"U","𝓤":"U","𝔘":"U","𝕌":"U","𝖀":"U","𝖴":"U","𝗨":"U","𝘜":"U","𝙐":"U","𝚄":"U","Ս":"U","ሀ":"U","𐓎":"U","ᑌ":"U","ꓴ":"U","𖽂":"U","𑢸":"U","ǔ":"ŭ","Ǔ":"Ŭ","ᵾ":"u̵","ꮜ":"u̵","Ʉ":"U̵","Ꮜ":"U̵","ᑘ":"U·","ᑧ":"U\'","ᵫ":"ue","ꭣ":"uo","ṃ":"ꭑ","պ":"ɰ","ሣ":"ɰ","℧":"Ʊ","ᘮ":"Ʊ","ᘴ":"Ʊ","ᵿ":"ʊ̵","∨":"v","⋁":"v","v":"v","ⅴ":"v","𝐯":"v","𝑣":"v","𝒗":"v","𝓋":"v","𝓿":"v","𝔳":"v","𝕧":"v","𝖛":"v","𝗏":"v","𝘃":"v","𝘷":"v","𝙫":"v","𝚟":"v","ᴠ":"v","ν":"v","𝛎":"v","𝜈":"v","𝝂":"v","𝝼":"v","𝞶":"v","ѵ":"v","ט":"v","𑜆":"v","ꮩ":"v","𑣀":"v","𝈍":"V","٧":"V","۷":"V","Ⅴ":"V","𝐕":"V","𝑉":"V","𝑽":"V","𝒱":"V","𝓥":"V","𝔙":"V","𝕍":"V","𝖁":"V","𝖵":"V","𝗩":"V","𝘝":"V","𝙑":"V","𝚅":"V","Ѵ":"V","ⴸ":"V","Ꮩ":"V","ᐯ":"V","ꛟ":"V","ꓦ":"V","𖼈":"V","𑢠":"V","𐔝":"V","𐆗":"V̵","ᐻ":"V·","🝬":"VB","ⅵ":"vi","ⅶ":"vii","ⅷ":"viii","Ⅵ":"Vl","Ⅶ":"Vll","Ⅷ":"Vlll","🜈":"Vᷤ","ᴧ":"ʌ","𐓘":"ʌ","٨":"Ʌ","۸":"Ʌ","Λ":"Ʌ","𝚲":"Ʌ","𝛬":"Ʌ","𝜦":"Ʌ","𝝠":"Ʌ","𝞚":"Ʌ","Л":"Ʌ","ⴷ":"Ʌ","𐒰":"Ʌ","ᐱ":"Ʌ","ꛎ":"Ʌ","ꓥ":"Ʌ","𖼽":"Ʌ","𐊍":"Ʌ","Ӆ":"Ʌ̦","ᐽ":"Ʌ·","ɯ":"w","𝐰":"w","𝑤":"w","𝒘":"w","𝓌":"w","𝔀":"w","𝔴":"w","𝕨":"w","𝖜":"w","𝗐":"w","𝘄":"w","𝘸":"w","𝙬":"w","𝚠":"w","ᴡ":"w","ѡ":"w","ԝ":"w","ա":"w","𑜊":"w","𑜎":"w","𑜏":"w","ꮃ":"w","𑣯":"W","𑣦":"W","𝐖":"W","𝑊":"W","𝑾":"W","𝒲":"W","𝓦":"W","𝔚":"W","𝕎":"W","𝖂":"W","𝖶":"W","𝗪":"W","𝘞":"W","𝙒":"W","𝚆":"W","Ԝ":"W","Ꮃ":"W","Ꮤ":"W","ꓪ":"W","ѽ":"w҆҇","𑓅":"ẇ","₩":"W̵","ꝡ":"w̦","ᴍ":"ʍ","м":"ʍ","ꮇ":"ʍ","ӎ":"ʍ̦","᙮":"x","×":"x","⤫":"x","⤬":"x","⨯":"x","x":"x","ⅹ":"x","𝐱":"x","𝑥":"x","𝒙":"x","𝓍":"x","𝔁":"x","𝔵":"x","𝕩":"x","𝖝":"x","𝗑":"x","𝘅":"x","𝘹":"x","𝙭":"x","𝚡":"x","х":"x","ᕁ":"x","ᕽ":"x","ⷯ":"ͯ","᙭":"X","╳":"X","𐌢":"X","𑣬":"X","X":"X","Ⅹ":"X","𝐗":"X","𝑋":"X","𝑿":"X","𝒳":"X","𝓧":"X","𝔛":"X","𝕏":"X","𝖃":"X","𝖷":"X","𝗫":"X","𝘟":"X","𝙓":"X","𝚇":"X","Ꭓ":"X","Χ":"X","𝚾":"X","𝛸":"X","𝜲":"X","𝝬":"X","𝞦":"X","Ⲭ":"X","Х":"X","ⵝ":"X","ᚷ":"X","ꓫ":"X","𐊐":"X","𐊴":"X","𐌗":"X","𐔧":"X","⨰":"ẋ","Ҳ":"X̩","𐆖":"X̵","ⅺ":"xi","ⅻ":"xii","Ⅺ":"Xl","Ⅻ":"Xll","ɣ":"y","ᶌ":"y","y":"y","𝐲":"y","𝑦":"y","𝒚":"y","𝓎":"y","𝔂":"y","𝔶":"y","𝕪":"y","𝖞":"y","𝗒":"y","𝘆":"y","𝘺":"y","𝙮":"y","𝚢":"y","ʏ":"y","ỿ":"y","ꭚ":"y","γ":"y","ℽ":"y","𝛄":"y","𝛾":"y","𝜸":"y","𝝲":"y","𝞬":"y","у":"y","ү":"y","ყ":"y","𑣜":"y","Y":"Y","𝐘":"Y","𝑌":"Y","𝒀":"Y","𝒴":"Y","𝓨":"Y","𝔜":"Y","𝕐":"Y","𝖄":"Y","𝖸":"Y","𝗬":"Y","𝘠":"Y","𝙔":"Y","𝚈":"Y","Υ":"Y","ϒ":"Y","𝚼":"Y","𝛶":"Y","𝜰":"Y","𝝪":"Y","𝞤":"Y","Ⲩ":"Y","У":"Y","Ү":"Y","Ꭹ":"Y","Ꮍ":"Y","ꓬ":"Y","𖽃":"Y","𑢤":"Y","𐊲":"Y","ƴ":"y̔","ɏ":"y̵","ұ":"y̵","¥":"Y̵","Ɏ":"Y̵","Ұ":"Y̵","ʒ":"ȝ","ꝫ":"ȝ","ⳍ":"ȝ","ӡ":"ȝ","ჳ":"ȝ","𝐳":"z","𝑧":"z","𝒛":"z","𝓏":"z","𝔃":"z","𝔷":"z","𝕫":"z","𝖟":"z","𝗓":"z","𝘇":"z","𝘻":"z","𝙯":"z","𝚣":"z","ᴢ":"z","ꮓ":"z","𑣄":"z","𐋵":"Z","𑣥":"Z","Z":"Z","ℤ":"Z","ℨ":"Z","𝐙":"Z","𝑍":"Z","𝒁":"Z","𝒵":"Z","𝓩":"Z","𝖅":"Z","𝖹":"Z","𝗭":"Z","𝘡":"Z","𝙕":"Z","𝚉":"Z","Ζ":"Z","𝚭":"Z","𝛧":"Z","𝜡":"Z","𝝛":"Z","𝞕":"Z","Ꮓ":"Z","ꓜ":"Z","𑢩":"Z","ʐ":"z̨","ƶ":"z̵","Ƶ":"Z̵","ȥ":"z̦","Ȥ":"Z̦","ᵶ":"z̴","ƿ":"þ","ϸ":"þ","Ϸ":"Þ","𐓄":"Þ","⁹":"ꝰ","ᴤ":"ƨ","ϩ":"ƨ","ꙅ":"ƨ","ь":"ƅ","ꮟ":"ƅ","ы":"ƅi","ꭾ":"ɂ","ˤ":"ˁ","ꛍ":"ʡ","⊙":"ʘ","☉":"ʘ","⨀":"ʘ","Ꙩ":"ʘ","ⵙ":"ʘ","𐓃":"ʘ","ℾ":"Γ","𝚪":"Γ","𝛤":"Γ","𝜞":"Γ","𝝘":"Γ","𝞒":"Γ","Ⲅ":"Γ","Г":"Γ","Ꮁ":"Γ","ᒥ":"Γ","𖼇":"Γ","Ғ":"Γ̵","ᒯ":"Γ·","Ґ":"Γ\'","∆":"Δ","△":"Δ","🜂":"Δ","𝚫":"Δ","𝛥":"Δ","𝜟":"Δ","𝝙":"Δ","𝞓":"Δ","Ⲇ":"Δ","ⵠ":"Δ","ᐃ":"Δ","𖼚":"Δ","𐊅":"Δ","𐊣":"Δ","⍙":"Δ̲","ᐏ":"Δ·","ᐬ":"Δᐠ","𝟋":"ϝ","𝛇":"ζ","𝜁":"ζ","𝜻":"ζ","𝝵":"ζ","𝞯":"ζ","ⳤ":"ϗ","𝛌":"λ","𝜆":"λ","𝝀":"λ","𝝺":"λ","𝞴":"λ","Ⲗ":"λ","𐓛":"λ","µ":"μ","𝛍":"μ","𝜇":"μ","𝝁":"μ","𝝻":"μ","𝞵":"μ","𝛏":"ξ","𝜉":"ξ","𝝃":"ξ","𝝽":"ξ","𝞷":"ξ","𝚵":"Ξ","𝛯":"Ξ","𝜩":"Ξ","𝝣":"Ξ","𝞝":"Ξ","ϖ":"π","ℼ":"π","𝛑":"π","𝛡":"π","𝜋":"π","𝜛":"π","𝝅":"π","𝝕":"π","𝝿":"π","𝞏":"π","𝞹":"π","𝟉":"π","ᴨ":"π","п":"π","∏":"Π","ℿ":"Π","𝚷":"Π","𝛱":"Π","𝜫":"Π","𝝥":"Π","𝞟":"Π","Ⲡ":"Π","П":"Π","ꛛ":"Π","𐊭":"Ϙ","𐌒":"Ϙ","ϛ":"ς","𝛓":"ς","𝜍":"ς","𝝇":"ς","𝞁":"ς","𝞻":"ς","𝚽":"Φ","𝛷":"Φ","𝜱":"Φ","𝝫":"Φ","𝞥":"Φ","Ⲫ":"Φ","Ф":"Φ","Փ":"Φ","ቀ":"Φ","ᛰ":"Φ","𐊳":"Φ","ꭓ":"χ","ꭕ":"χ","𝛘":"χ","𝜒":"χ","𝝌":"χ","𝞆":"χ","𝟀":"χ","ⲭ":"χ","𝛙":"ψ","𝜓":"ψ","𝝍":"ψ","𝞇":"ψ","𝟁":"ψ","ѱ":"ψ","𐓹":"ψ","𝚿":"Ψ","𝛹":"Ψ","𝜳":"Ψ","𝝭":"Ψ","𝞧":"Ψ","Ⲯ":"Ψ","Ѱ":"Ψ","𐓑":"Ψ","ᛘ":"Ψ","𐊵":"Ψ","⍵":"ω","ꞷ":"ω","𝛚":"ω","𝜔":"ω","𝝎":"ω","𝞈":"ω","𝟂":"ω","ⲱ":"ω","ꙍ":"ω","Ω":"Ω","𝛀":"Ω","𝛺":"Ω","𝜴":"Ω","𝝮":"Ω","𝞨":"Ω","ᘯ":"Ω","ᘵ":"Ω","𐊶":"Ω","⍹":"ω̲","ώ":"ῴ","☰":"Ⲷ","Ⳝ":"Ϭ","җ":"ж̩","Җ":"Ж̩","𝈋":"И","Ͷ":"И","ꚡ":"И","𐐥":"И","Й":"Ѝ","Ҋ":"Ѝ̦","ѝ":"й","ҋ":"й̦","𐒼":"Ӄ","ᴫ":"л","ӆ":"л̦","ꭠ":"љ","𐓫":"ꙩ","ᷮ":"ⷬ","𐓍":"Ћ","𝈂":"Ӿ","𝈢":"Ѡ","Ꮗ":"Ѡ","ᗯ":"Ѡ","Ѽ":"Ѡ҆҇","ᣭ":"Ѡ·","Ꞷ":"Ꙍ","ӌ":"ҷ","Ӌ":"Ҷ","Ҿ":"Ҽ̨","ⲽ":"ш","Ⲽ":"Ш","Ꙑ":"Ъl","℈":"Э","🜁":"Ꙙ","𖼜":"Ꙙ","ꦒ":"ⰿ","և":"եւ","ኔ":"ձ","ﬔ":"մե","ﬕ":"մի","ﬗ":"մխ","ﬓ":"մն","∩":"Ո","⋂":"Ո","𝉅":"Ո","በ":"Ո","ᑎ":"Ո","ꓵ":"Ո","ᑚ":"Ո·","ᑨ":"Ո\'","ﬖ":"վն","₽":"Ք","˓":"ՙ","ʿ":"ՙ","ℵ":"א","ﬡ":"א","אָ":"אַ","אּ":"אַ","ﭏ":"אל","ℶ":"ב","ℷ":"ג","ℸ":"ד","ﬢ":"ד","ﬣ":"ה","יּ":"יִ","ﬤ":"כ","ﬥ":"ל","ﬦ":"ם","ﬠ":"ע","ﬧ":"ר","שׂ":"שׁ","שּ":"שׁ","שּׂ":"שּׁ","ﬨ":"ת","ﺀ":"ء","۽":"ء͈","ﺂ":"آ","ﺁ":"آ","ﭑ":"ٱ","ﭐ":"ٱ","𞸁":"ب","𞸡":"ب","𞹡":"ب","𞺁":"ب","𞺡":"ب","ﺑ":"ب","ﺒ":"ب","ﺐ":"ب","ﺏ":"ب","ݑ":"بۛ","ࢶ":"بۢ","ࢡ":"بٔ","ﲠ":"بo","ﳢ":"بo","ﲜ":"بج","ﰅ":"بج","ﲝ":"بح","ﰆ":"بح","ﷂ":"بحى","ﲞ":"بخ","ﰇ":"بخ","ﳒ":"بخ","ﱋ":"بخ","ﶞ":"بخى","ﱪ":"بر","ﱫ":"بز","ﲟ":"بم","ﳡ":"بم","ﱬ":"بم","ﰈ":"بم","ﱭ":"بن","ﱮ":"بى","ﰉ":"بى","ﱯ":"بى","ﰊ":"بى","ﭔ":"ٻ","ﭕ":"ٻ","ﭓ":"ٻ","ﭒ":"ٻ","ې":"ٻ","ﯦ":"ٻ","ﯧ":"ٻ","ﯥ":"ٻ","ﯤ":"ٻ","ﭜ":"ڀ","ﭝ":"ڀ","ﭛ":"ڀ","ﭚ":"ڀ","ࢩ":"ݔ","ݧ":"ݔ","⍥":"ة","ö":"ة","ﺔ":"ة","ﺓ":"ة","ۃ":"ة","𞸕":"ت","𞸵":"ت","𞹵":"ت","𞺕":"ت","𞺵":"ت","ﺗ":"ت","ﺘ":"ت","ﺖ":"ت","ﺕ":"ت","ﲥ":"تo","ﳤ":"تo","ﲡ":"تج","ﰋ":"تج","ﵐ":"تجم","ﶠ":"تجى","ﶟ":"تجى","ﲢ":"تح","ﰌ":"تح","ﵒ":"تحج","ﵑ":"تحج","ﵓ":"تحم","ﲣ":"تخ","ﰍ":"تخ","ﵔ":"تخم","ﶢ":"تخى","ﶡ":"تخى","ﱰ":"تر","ﱱ":"تز","ﲤ":"تم","ﳣ":"تم","ﱲ":"تم","ﰎ":"تم","ﵕ":"تمج","ﵖ":"تمح","ﵗ":"تمخ","ﶤ":"تمى","ﶣ":"تمى","ﱳ":"تن","ﱴ":"تى","ﰏ":"تى","ﱵ":"تى","ﰐ":"تى","ﭠ":"ٺ","ﭡ":"ٺ","ﭟ":"ٺ","ﭞ":"ٺ","ﭤ":"ٿ","ﭥ":"ٿ","ﭣ":"ٿ","ﭢ":"ٿ","𞸂":"ج","𞸢":"ج","𞹂":"ج","𞹢":"ج","𞺂":"ج","𞺢":"ج","ﺟ":"ج","ﺠ":"ج","ﺞ":"ج","ﺝ":"ج","ﲧ":"جح","ﰕ":"جح","ﶦ":"جحى","ﶾ":"جحى","ﷻ":"جل جلlلo","ﲨ":"جم","ﰖ":"جم","ﵙ":"جمح","ﵘ":"جمح","ﶧ":"جمى","ﶥ":"جمى","ﴝ":"جى","ﴁ":"جى","ﴞ":"جى","ﴂ":"جى","ﭸ":"ڃ","ﭹ":"ڃ","ﭷ":"ڃ","ﭶ":"ڃ","ﭴ":"ڄ","ﭵ":"ڄ","ﭳ":"ڄ","ﭲ":"ڄ","ﭼ":"چ","ﭽ":"چ","ﭻ":"چ","ﭺ":"چ","ﮀ":"ڇ","ﮁ":"ڇ","ﭿ":"ڇ","ﭾ":"ڇ","𞸇":"ح","𞸧":"ح","𞹇":"ح","𞹧":"ح","𞺇":"ح","𞺧":"ح","ﺣ":"ح","ﺤ":"ح","ﺢ":"ح","ﺡ":"ح","څ":"حۛ","ځ":"حٔ","ݲ":"حٔ","ﲩ":"حج","ﰗ":"حج","ﶿ":"حجى","ﲪ":"حم","ﰘ":"حم","ﵛ":"حمى","ﵚ":"حمى","ﴛ":"حى","ﳿ":"حى","ﴜ":"حى","ﴀ":"حى","𞸗":"خ","𞸷":"خ","𞹗":"خ","𞹷":"خ","𞺗":"خ","𞺷":"خ","ﺧ":"خ","ﺨ":"خ","ﺦ":"خ","ﺥ":"خ","ﲫ":"خج","ﰙ":"خج","ﰚ":"خح","ﲬ":"خم","ﰛ":"خم","ﴟ":"خى","ﴃ":"خى","ﴠ":"خى","ﴄ":"خى","𐋡":"د","𞸃":"د","𞺃":"د","𞺣":"د","ﺪ":"د","ﺩ":"د","ڈ":"دؕ","ﮉ":"دؕ","ﮈ":"دؕ","ڎ":"دۛ","ﮇ":"دۛ","ﮆ":"دۛ","ۮ":"د̂","ࢮ":"د̤̣","𞸘":"ذ","𞺘":"ذ","𞺸":"ذ","ﺬ":"ذ","ﺫ":"ذ","ﱛ":"ذٰ","ڋ":"ڊؕ","ﮅ":"ڌ","ﮄ":"ڌ","ﮃ":"ڍ","ﮂ":"ڍ","𞸓":"ر","𞺓":"ر","𞺳":"ر","ﺮ":"ر","ﺭ":"ر","ڑ":"رؕ","ﮍ":"رؕ","ﮌ":"رؕ","ژ":"رۛ","ﮋ":"رۛ","ﮊ":"رۛ","ڒ":"ر̆","ࢹ":"ر̆̇","ۯ":"ر̂","ݬ":"رٔ","ﱜ":"رٰ","ﷶ":"رسول","﷼":"رىlل","𞸆":"ز","𞺆":"ز","𞺦":"ز","ﺰ":"ز","ﺯ":"ز","ࢲ":"ز̂","ݱ":"ڗؕ","𞸎":"س","𞸮":"س","𞹎":"س","𞹮":"س","𞺎":"س","𞺮":"س","ﺳ":"س","ﺴ":"س","ﺲ":"س","ﺱ":"س","ش":"سۛ","𞸔":"سۛ","𞸴":"سۛ","𞹔":"سۛ","𞹴":"سۛ","𞺔":"سۛ","𞺴":"سۛ","ﺷ":"سۛ","ﺸ":"سۛ","ﺶ":"سۛ","ﺵ":"سۛ","ݾ":"س̂","ﴱ":"سo","ﳨ":"سo","ﴲ":"سۛo","ﳪ":"سۛo","ﲭ":"سج","ﴴ":"سج","ﰜ":"سج","ﴭ":"سۛج","ﴷ":"سۛج","ﴥ":"سۛج","ﴉ":"سۛج","ﵝ":"سجح","ﵞ":"سجى","ﵩ":"سۛجى","ﲮ":"سح","ﴵ":"سح","ﰝ":"سح","ﴮ":"سۛح","ﴸ":"سۛح","ﴦ":"سۛح","ﴊ":"سۛح","ﵜ":"سحج","ﵨ":"سۛحم","ﵧ":"سۛحم","ﶪ":"سۛحى","ﲯ":"سخ","ﴶ":"سخ","ﰞ":"سخ","ﴯ":"سۛخ","ﴹ":"سۛخ","ﴧ":"سۛخ","ﴋ":"سۛخ","ﶨ":"سخى","ﷆ":"سخى","ﴪ":"سر","ﴎ":"سر","ﴩ":"سۛر","ﴍ":"سۛر","ﲰ":"سم","ﳧ":"سم","ﰟ":"سم","ﴰ":"سۛم","ﳩ":"سۛم","ﴨ":"سۛم","ﴌ":"سۛم","ﵡ":"سمج","ﵠ":"سمح","ﵟ":"سمح","ﵫ":"سۛمخ","ﵪ":"سۛمخ","ﵣ":"سمم","ﵢ":"سمم","ﵭ":"سۛمم","ﵬ":"سۛمم","ﴗ":"سى","ﳻ":"سى","ﴘ":"سى","ﳼ":"سى","ﴙ":"سۛى","ﳽ":"سۛى","ﴚ":"سۛى","ﳾ":"سۛى","𐋲":"ص","𞸑":"ص","𞸱":"ص","𞹑":"ص","𞹱":"ص","𞺑":"ص","𞺱":"ص","ﺻ":"ص","ﺼ":"ص","ﺺ":"ص","ﺹ":"ص","ڞ":"صۛ","ࢯ":"ص̤̣","ﲱ":"صح","ﰠ":"صح","ﵥ":"صحح","ﵤ":"صحح","ﶩ":"صحى","ﲲ":"صخ","ﴫ":"صر","ﴏ":"صر","ﷵ":"صلعم","ﷹ":"صلى","ﷰ":"صلى","ﷺ":"صلى lللo علىo وسلم","ﲳ":"صم","ﰡ":"صم","ﷅ":"صمم","ﵦ":"صمم","ﴡ":"صى","ﴅ":"صى","ﴢ":"صى","ﴆ":"صى","𞸙":"ض","𞸹":"ض","𞹙":"ض","𞹹":"ض","𞺙":"ض","𞺹":"ض","ﺿ":"ض","ﻀ":"ض","ﺾ":"ض","ﺽ":"ض","ﲴ":"ضج","ﰢ":"ضج","ﲵ":"ضح","ﰣ":"ضح","ﵮ":"ضحى","ﶫ":"ضحى","ﲶ":"ضخ","ﰤ":"ضخ","ﵰ":"ضخم","ﵯ":"ضخم","ﴬ":"ضر","ﴐ":"ضر","ﲷ":"ضم","ﰥ":"ضم","ﴣ":"ضى","ﴇ":"ضى","ﴤ":"ضى","ﴈ":"ضى","𐋨":"ط","𞸈":"ط","𞹨":"ط","𞺈":"ط","𞺨":"ط","ﻃ":"ط","ﻄ":"ط","ﻂ":"ط","ﻁ":"ط","ڟ":"طۛ","ﲸ":"طح","ﰦ":"طح","ﴳ":"طم","ﴺ":"طم","ﰧ":"طم","ﵲ":"طمح","ﵱ":"طمح","ﵳ":"طمم","ﵴ":"طمى","ﴑ":"طى","ﳵ":"طى","ﴒ":"طى","ﳶ":"طى","𞸚":"ظ","𞹺":"ظ","𞺚":"ظ","𞺺":"ظ","ﻇ":"ظ","ﻈ":"ظ","ﻆ":"ظ","ﻅ":"ظ","ﲹ":"ظم","ﴻ":"ظم","ﰨ":"ظم","؏":"ع","𞸏":"ع","𞸯":"ع","𞹏":"ع","𞹯":"ع","𞺏":"ع","𞺯":"ع","ﻋ":"ع","ﻌ":"ع","ﻊ":"ع","ﻉ":"ع","ﲺ":"عج","ﰩ":"عج","ﷄ":"عجم","ﵵ":"عجم","ﷷ":"علىo","ﲻ":"عم","ﰪ":"عم","ﵷ":"عمم","ﵶ":"عمم","ﵸ":"عمى","ﶶ":"عمى","ﴓ":"عى","ﳷ":"عى","ﴔ":"عى","ﳸ":"عى","𞸛":"غ","𞸻":"غ","𞹛":"غ","𞹻":"غ","𞺛":"غ","𞺻":"غ","ﻏ":"غ","ﻐ":"غ","ﻎ":"غ","ﻍ":"غ","ﲼ":"غج","ﰫ":"غج","ﲽ":"غم","ﰬ":"غم","ﵹ":"غمم","ﵻ":"غمى","ﵺ":"غمى","ﴕ":"غى","ﳹ":"غى","ﴖ":"غى","ﳺ":"غى","𞸐":"ف","𞸰":"ف","𞹰":"ف","𞺐":"ف","𞺰":"ف","ﻓ":"ف","ﻔ":"ف","ﻒ":"ف","ﻑ":"ف","ڧ":"ف","ﲾ":"فج","ﰭ":"فج","ﲿ":"فح","ﰮ":"فح","ﳀ":"فخ","ﰯ":"فخ","ﵽ":"فخم","ﵼ":"فخم","ﳁ":"فم","ﰰ":"فم","ﷁ":"فمى","ﱼ":"فى","ﰱ":"فى","ﱽ":"فى","ﰲ":"فى","𞸞":"ڡ","𞹾":"ڡ","ࢻ":"ڡ","ٯ":"ڡ","𞸟":"ڡ","𞹟":"ڡ","ࢼ":"ڡ","ڤ":"ڡۛ","ﭬ":"ڡۛ","ﭭ":"ڡۛ","ﭫ":"ڡۛ","ﭪ":"ڡۛ","ڨ":"ڡۛ","ࢤ":"ڢۛ","ﭰ":"ڦ","ﭱ":"ڦ","ﭯ":"ڦ","ﭮ":"ڦ","𞸒":"ق","𞸲":"ق","𞹒":"ق","𞹲":"ق","𞺒":"ق","𞺲":"ق","ﻗ":"ق","ﻘ":"ق","ﻖ":"ق","ﻕ":"ق","ﳂ":"قح","ﰳ":"قح","ﷱ":"قلى","ﳃ":"قم","ﰴ":"قم","ﶴ":"قمح","ﵾ":"قمح","ﵿ":"قمم","ﶲ":"قمى","ﱾ":"قى","ﰵ":"قى","ﱿ":"قى","ﰶ":"قى","𞸊":"ك","𞸪":"ك","𞹪":"ك","ﻛ":"ك","ﻜ":"ك","ﻚ":"ك","ﻙ":"ك","ک":"ك","ﮐ":"ك","ﮑ":"ك","ﮏ":"ك","ﮎ":"ك","ڪ":"ك","ڭ":"كۛ","ﯕ":"كۛ","ﯖ":"كۛ","ﯔ":"كۛ","ﯓ":"كۛ","ݣ":"كۛ","ﲀ":"كl","ﰷ":"كl","ﳄ":"كج","ﰸ":"كج","ﳅ":"كح","ﰹ":"كح","ﳆ":"كخ","ﰺ":"كخ","ﳇ":"كل","ﳫ":"كل","ﲁ":"كل","ﰻ":"كل","ﳈ":"كم","ﳬ":"كم","ﲂ":"كم","ﰼ":"كم","ﷃ":"كمم","ﶻ":"كمم","ﶷ":"كمى","ﲃ":"كى","ﰽ":"كى","ﲄ":"كى","ﰾ":"كى","ݢ":"ڬ","ﮔ":"گ","ﮕ":"گ","ﮓ":"گ","ﮒ":"گ","ࢰ":"گ","ڴ":"گۛ","ﮜ":"ڱ","ﮝ":"ڱ","ﮛ":"ڱ","ﮚ":"ڱ","ﮘ":"ڳ","ﮙ":"ڳ","ﮗ":"ڳ","ﮖ":"ڳ","𞸋":"ل","𞸫":"ل","𞹋":"ل","𞺋":"ل","𞺫":"ل","ﻟ":"ل","ﻠ":"ل","ﻞ":"ل","ﻝ":"ل","ڷ":"لۛ","ڵ":"ل̆","ﻼ":"لl","ﻻ":"لl","ﻺ":"لlٕ","ﻹ":"لlٕ","ﻸ":"لlٴ","ﻷ":"لlٴ","ﳍ":"لo","ﻶ":"لآ","ﻵ":"لآ","ﳉ":"لج","ﰿ":"لج","ﶃ":"لجج","ﶄ":"لجج","ﶺ":"لجم","ﶼ":"لجم","ﶬ":"لجى","ﳊ":"لح","ﱀ":"لح","ﶵ":"لحم","ﶀ":"لحم","ﶂ":"لحى","ﶁ":"لحى","ﳋ":"لخ","ﱁ":"لخ","ﶆ":"لخم","ﶅ":"لخم","ﳌ":"لم","ﳭ":"لم","ﲅ":"لم","ﱂ":"لم","ﶈ":"لمح","ﶇ":"لمح","ﶭ":"لمى","ﲆ":"لى","ﱃ":"لى","ﲇ":"لى","ﱄ":"لى","𞸌":"م","𞸬":"م","𞹬":"م","𞺌":"م","𞺬":"م","ﻣ":"م","ﻤ":"م","ﻢ":"م","ﻡ":"م","ࢧ":"مۛ","۾":"م͈","ﲈ":"مl","ﳎ":"مج","ﱅ":"مج","ﶌ":"مجح","ﶒ":"مجخ","ﶍ":"مجم","ﷀ":"مجى","ﳏ":"مح","ﱆ":"مح","ﶉ":"محج","ﶊ":"محم","ﷴ":"محمد","ﶋ":"محى","ﳐ":"مخ","ﱇ":"مخ","ﶎ":"مخج","ﶏ":"مخم","ﶹ":"مخى","ﳑ":"مم","ﲉ":"مم","ﱈ":"مم","ﶱ":"ممى","ﱉ":"مى","ﱊ":"مى","𞸍":"ن","𞸭":"ن","𞹍":"ن","𞹭":"ن","𞺍":"ن","𞺭":"ن","ﻧ":"ن","ﻨ":"ن","ﻦ":"ن","ﻥ":"ن","ݨ":"نؕ","ݩ":"ن̆","ﳖ":"نo","ﳯ":"نo","ﶸ":"نجح","ﶽ":"نجح","ﶘ":"نجم","ﶗ":"نجم","ﶙ":"نجى","ﷇ":"نجى","ﳓ":"نح","ﱌ":"نح","ﶕ":"نحم","ﶖ":"نحى","ﶳ":"نحى","ﳔ":"نخ","ﱍ":"نخ","ﲊ":"نر","ﲋ":"نز","ﳕ":"نم","ﳮ":"نم","ﲌ":"نم","ﱎ":"نم","ﶛ":"نمى","ﶚ":"نمى","ﲍ":"نن","ﲎ":"نى","ﱏ":"نى","ﲏ":"نى","ﱐ":"نى","ۂ":"ۀ","ﮥ":"ۀ","ﮤ":"ۀ","𐋤":"و","𞸅":"و","𞺅":"و","𞺥":"و","ﻮ":"و","ﻭ":"و","ࢱ":"و","ۋ":"وۛ","ﯟ":"وۛ","ﯞ":"وۛ","ۇ":"و̓","ﯘ":"و̓","ﯗ":"و̓","ۆ":"و̆","ﯚ":"و̆","ﯙ":"و̆","ۉ":"و̂","ﯣ":"و̂","ﯢ":"و̂","ۈ":"وٰ","ﯜ":"وٰ","ﯛ":"وٰ","ؤ":"وٴ","ﺆ":"وٴ","ﺅ":"وٴ","ٶ":"وٴ","ٷ":"و̓ٴ","ﯝ":"و̓ٴ","ﷸ":"وسلم","ﯡ":"ۅ","ﯠ":"ۅ","ٮ":"ى","𞸜":"ى","𞹼":"ى","ں":"ى","𞸝":"ى","𞹝":"ى","ﮟ":"ى","ﮞ":"ى","ࢽ":"ى","ﯨ":"ى","ﯩ":"ى","ﻰ":"ى","ﻯ":"ى","ي":"ى","𞸉":"ى","𞸩":"ى","𞹉":"ى","𞹩":"ى","𞺉":"ى","𞺩":"ى","ﻳ":"ى","ﻴ":"ى","ﻲ":"ى","ﻱ":"ى","ی":"ى","ﯾ":"ى","ﯿ":"ى","ﯽ":"ى","ﯼ":"ى","ے":"ى","ﮯ":"ى","ﮮ":"ى","ٹ":"ىؕ","ﭨ":"ىؕ","ﭩ":"ىؕ","ﭧ":"ىؕ","ﭦ":"ىؕ","ڻ":"ىؕ","ﮢ":"ىؕ","ﮣ":"ىؕ","ﮡ":"ىؕ","ﮠ":"ىؕ","پ":"ىۛ","ﭘ":"ىۛ","ﭙ":"ىۛ","ﭗ":"ىۛ","ﭖ":"ىۛ","ث":"ىۛ","𞸖":"ىۛ","𞸶":"ىۛ","𞹶":"ىۛ","𞺖":"ىۛ","𞺶":"ىۛ","ﺛ":"ىۛ","ﺜ":"ىۛ","ﺚ":"ىۛ","ﺙ":"ىۛ","ڽ":"ىۛ","ۑ":"ىۛ","ؿ":"ىۛ","ࢷ":"ىۛۢ","ݖ":"ى̆","ێ":"ى̆","ࢺ":"ى̆̇","ؽ":"ى̂","ࢨ":"ىٔ","ﲐ":"ىٰ","ﱝ":"ىٰ","ﳞ":"ىo","ﳱ":"ىo","ﳦ":"ىۛo","ئ":"ىٴ","ﺋ":"ىٴ","ﺌ":"ىٴ","ﺊ":"ىٴ","ﺉ":"ىٴ","ٸ":"ىٴ","ﯫ":"ىٴl","ﯪ":"ىٴl","ﲛ":"ىٴo","ﳠ":"ىٴo","ﯭ":"ىٴo","ﯬ":"ىٴo","ﯸ":"ىٴٻ","ﯷ":"ىٴٻ","ﯶ":"ىٴٻ","ﲗ":"ىٴج","ﰀ":"ىٴج","ﲘ":"ىٴح","ﰁ":"ىٴح","ﲙ":"ىٴخ","ﱤ":"ىٴر","ﱥ":"ىٴز","ﲚ":"ىٴم","ﳟ":"ىٴم","ﱦ":"ىٴم","ﰂ":"ىٴم","ﱧ":"ىٴن","ﯯ":"ىٴو","ﯮ":"ىٴو","ﯱ":"ىٴو̓","ﯰ":"ىٴو̓","ﯳ":"ىٴو̆","ﯲ":"ىٴو̆","ﯵ":"ىٴوٰ","ﯴ":"ىٴوٰ","ﯻ":"ىٴى","ﯺ":"ىٴى","ﱨ":"ىٴى","ﯹ":"ىٴى","ﰃ":"ىٴى","ﱩ":"ىٴى","ﰄ":"ىٴى","ﳚ":"ىج","ﱕ":"ىج","ﰑ":"ىۛج","ﶯ":"ىجى","ﳛ":"ىح","ﱖ":"ىح","ﶮ":"ىحى","ﳜ":"ىخ","ﱗ":"ىخ","ﲑ":"ىر","ﱶ":"ىۛر","ﲒ":"ىز","ﱷ":"ىۛز","ﳝ":"ىم","ﳰ":"ىم","ﲓ":"ىم","ﱘ":"ىم","ﲦ":"ىۛم","ﳥ":"ىۛم","ﱸ":"ىۛم","ﰒ":"ىۛم","ﶝ":"ىمم","ﶜ":"ىمم","ﶰ":"ىمى","ﲔ":"ىن","ﱹ":"ىۛن","ﲕ":"ىى","ﱙ":"ىى","ﲖ":"ىى","ﱚ":"ىى","ﱺ":"ىۛى","ﰓ":"ىۛى","ﱻ":"ىۛى","ﰔ":"ىۛى","ﮱ":"ۓ","ﮰ":"ۓ","𐊸":"ⵀ","⁞":"ⵂ","⸽":"ⵂ","⦙":"ⵂ","︙":"ⵗ","⁝":"ⵗ","⋮":"ⵗ","Մ":"ሆ","Ռ":"ቡ","Ի":"ኮ","Պ":"ጣ","आ":"अा","ऒ":"अाॆ","ओ":"अाे","औ":"अाै","ऄ":"अॆ","ऑ":"अॉ","ऍ":"एॅ","ऎ":"एॆ","ऐ":"एे","ई":"र्इ","ઽ":"ऽ","𑇜":"ꣻ","𑇋":"ऺ","ુ":"ु","ૂ":"ू","ੋ":"ॆ","੍":"्","્":"्","আ":"অা","ৠ":"ঋৃ","ৡ":"ঋৃ","𑒒":"ঘ","𑒔":"চ","𑒖":"জ","𑒘":"ঞ","𑒙":"ট","𑒛":"ড","𑒪":"ণ","𑒞":"ত","𑒟":"থ","𑒠":"দ","𑒡":"ধ","𑒢":"ন","𑒣":"প","𑒩":"ব","𑒧":"ম","𑒨":"য","𑒫":"র","𑒝":"ল","𑒭":"ষ","𑒮":"স","𑓄":"ঽ","𑒰":"া","𑒱":"ি","𑒹":"ে","𑒼":"ো","𑒾":"ৌ","𑓂":"্","𑒽":"ৗ","ਉ":"ੳੁ","ਊ":"ੳੂ","ਆ":"ਅਾ","ਐ":"ਅੈ","ਔ":"ਅੌ","ਇ":"ੲਿ","ਈ":"ੲੀ","ਏ":"ੲੇ","આ":"અા","ઑ":"અાૅ","ઓ":"અાે","ઔ":"અાૈ","ઍ":"અૅ","એ":"અે","ઐ":"અૈ","ଆ":"ଅା","௮":"அ","ர":"ஈ","ா":"ஈ","௫":"ஈு","௨":"உ","ഉ":"உ","ஊ":"உள","ഊ":"உൗ","௭":"எ","௷":"எவ","ஜ":"ஐ","ജ":"ஐ","௧":"க","௪":"ச","௬":"சு","௲":"சூ","ഺ":"டி","ണ":"ண","௺":"நீ","௴":"மீ","௰":"ய","ഴ":"ழ","ௗ":"ள","ை":"ன","ശ":"ஶ","௸":"ஷ","ി":"ி","ീ":"ி","ொ":"ெஈ","ௌ":"ெள","ோ":"ேஈ","ಅ":"అ","ಆ":"ఆ","ಇ":"ఇ","ౠ":"ఋా","ౡ":"ఌా","ಒ":"ఒ","ఔ":"ఒౌ","ಔ":"ఒౌ","ఓ":"ఒౕ","ಓ":"ఒౕ","ಜ":"జ","ಞ":"ఞ","ఢ":"డ̣","ಣ":"ణ","థ":"ధּ","భ":"బ̣","ಯ":"య","ఠ":"రּ","ಱ":"ఱ","ಲ":"ల","ష":"వ̣","హ":"వా","మ":"వు","ూ":"ుా","ౄ":"ృా","ೡ":"ಌಾ","ഈ":"ഇൗ","ഐ":"എെ","ഓ":"ഒാ","ഔ":"ഒൗ","ൡ":"ഞ","൫":"ദ്ര","൹":"നു","ഌ":"നു","ങ":"നു","൯":"ന്","ൻ":"ന്","൬":"ന്ന","൚":"ന്മ","റ":"ര","൪":"ര്","ർ":"ര്","൮":"വ്ര","൶":"ഹ്മ","ൂ":"ു","ൃ":"ു","ൈ":"െെ","෪":"ජ","෫":"ද","𑐓":"𑐴𑑂𑐒","𑐙":"𑐴𑑂𑐘","𑐤":"𑐴𑑂𑐣","𑐪":"𑐴𑑂𑐩","𑐭":"𑐴𑑂𑐬","𑐯":"𑐴𑑂𑐮","𑗘":"𑖂","𑗙":"𑖂","𑗚":"𑖃","𑗛":"𑖄","𑗜":"𑖲","𑗝":"𑖳","ฃ":"ข","ด":"ค","ต":"ค","ม":"ฆ","ຈ":"จ","ซ":"ช","ฏ":"ฎ","ท":"ฑ","ບ":"บ","ປ":"ป","ຝ":"ฝ","ພ":"พ","ຟ":"ฟ","ฦ":"ภ","ຍ":"ย","។":"ฯ","ๅ":"า","ำ":"̊า","ិ":"ิ","ី":"ี","ឹ":"ึ","ឺ":"ื","ຸ":"ุ","ູ":"ู","แ":"เเ","ໜ":"ຫນ","ໝ":"ຫມ","ຳ":"̊າ","༂":"འུྂཿ","༃":"འུྂ༔","ཪ":"ར","ༀ":"ཨོཾ","ཷ":"ྲཱྀ","ཹ":"ླཱྀ","𑲲":"𑲪","ႁ":"ဂှ","က":"ဂာ","ၰ":"ဃှ","ၦ":"ပှ","ဟ":"ပာ","ၯ":"ပာှ","ၾ":"ၽှ","ဩ":"သြ","ဪ":"သြော်","႞":"ႃ̊","ឣ":"អ","᧐":"ᦞ","᧑":"ᦱ","᪀":"ᩅ","᪐":"ᩅ","꩓":"ꨁ","꩖":"ꨣ","᭒":"ᬍ","᭓":"ᬑ","᭘":"ᬨ","ꦣ":"ꦝ","ᢖ":"ᡜ","ᡕ":"ᠵ","ῶ":"Ꮿ","ᐍ":"ᐁ·","ᐫ":"ᐁᐠ","ᐑ":"ᐄ·","ᐓ":"ᐅ·","ᐭ":"ᐅᐠ","ᐕ":"ᐆ·","ᐘ":"ᐊ·","ᐮ":"ᐊᐠ","ᐚ":"ᐋ·","ᣝ":"ᐞᣟ","ᓑ":"ᐡ","ᕀ":"ᐩ","ᐿ":"ᐲ·","ᑃ":"ᐴ·","⍩":"ᐵ","ᑇ":"ᐹ·","ᑜ":"ᑏ·","⸧":"ᑐ","⊃":"ᑐ","ᑞ":"ᑐ·","ᑩ":"ᑐ\'","⟉":"ᑐ/","⫗":"ᑐᑕ","ᑠ":"ᑑ·","⸦":"ᑕ","⊂":"ᑕ","ᑢ":"ᑕ·","ᑪ":"ᑕ\'","ᑤ":"ᑖ·","ᑵ":"ᑫ·","ᒅ":"ᑫ\'","ᑹ":"ᑮ·","ᑽ":"ᑰ·","ᘃ":"ᒉ","ᒓ":"ᒉ·","ᒕ":"ᒋ·","ᒗ":"ᒌ·","ᒛ":"ᒎ·","ᘂ":"ᒐ","ᒝ":"ᒐ·","ᒟ":"ᒑ·","ᒭ":"ᒣ·","ᒱ":"ᒦ·","ᒳ":"ᒧ·","ᒵ":"ᒨ·","ᒹ":"ᒫ·","ᓊ":"ᓀ·","ᣇ":"ᓂ·","ᣉ":"ᓃ·","ᣋ":"ᓄ·","ᣍ":"ᓅ·","ᓌ":"ᓇ·","ᓎ":"ᓈ·","ᘄ":"ᓓ","ᓝ":"ᓓ·","ᓟ":"ᓕ·","ᓡ":"ᓖ·","ᓣ":"ᓗ·","ᓥ":"ᓘ·","ᘇ":"ᓚ","ᓧ":"ᓚ·","ᓩ":"ᓛ·","ᓷ":"ᓭ·","ᓹ":"ᓯ·","ᓻ":"ᓰ·","ᓽ":"ᓱ·","ᓿ":"ᓲ·","ᔁ":"ᓴ·","ᔃ":"ᓵ·","ᔌ":"ᔋ<","ᔎ":"ᔋb","ᔍ":"ᔋᑕ","ᔏ":"ᔋᒐ","ᔘ":"ᔐ·","ᔚ":"ᔑ·","ᔜ":"ᔒ·","ᔞ":"ᔓ·","ᔠ":"ᔔ·","ᔢ":"ᔕ·","ᔤ":"ᔖ·","ᔲ":"ᔨ·","ᔴ":"ᔩ·","ᔶ":"ᔪ·","ᔸ":"ᔫ·","ᔺ":"ᔭ·","ᔼ":"ᔮ·","ᘢ":"ᕃ","ᣠ":"ᕃ·","ᘣ":"ᕆ","ᘤ":"ᕊ","ᕏ":"ᕌ·","ᖃ":"ᕐb","ᖄ":"ᕐḃ","ᖁ":"ᕐd","ᕿ":"ᕐP","ᙯ":"ᕐᑫ","ᕾ":"ᕐᑬ","ᖀ":"ᕐᑮ","ᖂ":"ᕐᑰ","ᖅ":"ᕐᒃ","ᕜ":"ᕚ·","ᣣ":"ᕞ·","ᣤ":"ᕦ·","ᕩ":"ᕧ·","ᣥ":"ᕫ·","ᣨ":"ᖆ·","ᖑ":"ᖕJ","ᙰ":"ᖕᒉ","ᖎ":"ᖕᒊ","ᖏ":"ᖕᒋ","ᖐ":"ᖕᒌ","ᖒ":"ᖕᒎ","ᖓ":"ᖕᒐ","ᖔ":"ᖕᒑ","ᙳ":"ᖖJ","ᙱ":"ᖖᒋ","ᙲ":"ᖖᒌ","ᙴ":"ᖖᒎ","ᙵ":"ᖖᒐ","ᙶ":"ᖖᒑ","ᣪ":"ᖗ·","ᙷ":"ᖧ·","ᙸ":"ᖨ·","ᙹ":"ᖩ·","ᙺ":"ᖪ·","ᙻ":"ᖫ·","ᙼ":"ᖬ·","ᙽ":"ᖭ·","⪫":"ᗒ","⪪":"ᗕ","ꓷ":"ᗡ","ᣰ":"ᗴ·","ᣲ":"ᘛ·","ᶻ":"ᙆ","ꓭ":"ᙠ","ᶺ":"ᣔ","ᴾ":"ᣖ","ᣜ":"ᣟᐞ","ˡ":"ᣳ","ʳ":"ᣴ","ˢ":"ᣵ","ᣛ":"ᣵ","ꚰ":"ᚹ","ᛡ":"ᚼ","⍿":"ᚽ","ᛂ":"ᚽ","𝈿":"ᛋ","↑":"ᛏ","↿":"ᛐ","⥮":"ᛐ⇂","⥣":"ᛐᛚ","ⵣ":"ᛯ","↾":"ᛚ","⨡":"ᛚ","⋄":"ᛜ","◇":"ᛜ","◊":"ᛜ","♢":"ᛜ","🝔":"ᛜ","𑢷":"ᛜ","𐊔":"ᛜ","⍚":"ᛜ̲","⋈":"ᛞ","⨝":"ᛞ","𐓐":"ᛦ","↕":"ᛨ","𐳼":"𐲂","𐳺":"𐲥","ㄱ":"ᄀ","ᆨ":"ᄀ","ᄁ":"ᄀᄀ","ㄲ":"ᄀᄀ","ᆩ":"ᄀᄀ","ᇺ":"ᄀᄂ","ᅚ":"ᄀᄃ","ᇃ":"ᄀᄅ","ᇻ":"ᄀᄇ","ᆪ":"ᄀᄉ","ㄳ":"ᄀᄉ","ᇄ":"ᄀᄉᄀ","ᇼ":"ᄀᄎ","ᇽ":"ᄀᄏ","ᇾ":"ᄀᄒ","ㄴ":"ᄂ","ᆫ":"ᄂ","ᄓ":"ᄂᄀ","ᇅ":"ᄂᄀ","ᄔ":"ᄂᄂ","ㅥ":"ᄂᄂ","ᇿ":"ᄂᄂ","ᄕ":"ᄂᄃ","ㅦ":"ᄂᄃ","ᇆ":"ᄂᄃ","ퟋ":"ᄂᄅ","ᄖ":"ᄂᄇ","ᅛ":"ᄂᄉ","ᇇ":"ᄂᄉ","ㅧ":"ᄂᄉ","ᅜ":"ᄂᄌ","ᆬ":"ᄂᄌ","ㄵ":"ᄂᄌ","ퟌ":"ᄂᄎ","ᇉ":"ᄂᄐ","ᅝ":"ᄂᄒ","ᆭ":"ᄂᄒ","ㄶ":"ᄂᄒ","ᇈ":"ᄂᅀ","ㅨ":"ᄂᅀ","ㄷ":"ᄃ","ᆮ":"ᄃ","ᄗ":"ᄃᄀ","ᇊ":"ᄃᄀ","ᄄ":"ᄃᄃ","ㄸ":"ᄃᄃ","ퟍ":"ᄃᄃ","ퟎ":"ᄃᄃᄇ","ᅞ":"ᄃᄅ","ᇋ":"ᄃᄅ","ꥠ":"ᄃᄆ","ꥡ":"ᄃᄇ","ퟏ":"ᄃᄇ","ꥢ":"ᄃᄉ","ퟐ":"ᄃᄉ","ퟑ":"ᄃᄉᄀ","ꥣ":"ᄃᄌ","ퟒ":"ᄃᄌ","ퟓ":"ᄃᄎ","ퟔ":"ᄃᄐ","ㄹ":"ᄅ","ᆯ":"ᄅ","ꥤ":"ᄅᄀ","ᆰ":"ᄅᄀ","ㄺ":"ᄅᄀ","ꥥ":"ᄅᄀᄀ","ퟕ":"ᄅᄀᄀ","ᇌ":"ᄅᄀᄉ","ㅩ":"ᄅᄀᄉ","ퟖ":"ᄅᄀᄒ","ᄘ":"ᄅᄂ","ᇍ":"ᄅᄂ","ꥦ":"ᄅᄃ","ᇎ":"ᄅᄃ","ㅪ":"ᄅᄃ","ꥧ":"ᄅᄃᄃ","ᇏ":"ᄅᄃᄒ","ᄙ":"ᄅᄅ","ᇐ":"ᄅᄅ","ퟗ":"ᄅᄅᄏ","ꥨ":"ᄅᄆ","ᆱ":"ᄅᄆ","ㄻ":"ᄅᄆ","ᇑ":"ᄅᄆᄀ","ᇒ":"ᄅᄆᄉ","ퟘ":"ᄅᄆᄒ","ꥩ":"ᄅᄇ","ᆲ":"ᄅᄇ","ㄼ":"ᄅᄇ","ퟙ":"ᄅᄇᄃ","ꥪ":"ᄅᄇᄇ","ᇓ":"ᄅᄇᄉ","ㅫ":"ᄅᄇᄉ","ꥫ":"ᄅᄇᄋ","ᇕ":"ᄅᄇᄋ","ퟚ":"ᄅᄇᄑ","ᇔ":"ᄅᄇᄒ","ꥬ":"ᄅᄉ","ᆳ":"ᄅᄉ","ㄽ":"ᄅᄉ","ᇖ":"ᄅᄉᄉ","ᄛ":"ᄅᄋ","ퟝ":"ᄅᄋ","ꥭ":"ᄅᄌ","ꥮ":"ᄅᄏ","ᇘ":"ᄅᄏ","ᆴ":"ᄅᄐ","ㄾ":"ᄅᄐ","ᆵ":"ᄅᄑ","ㄿ":"ᄅᄑ","ᄚ":"ᄅᄒ","ㅀ":"ᄅᄒ","ᄻ":"ᄅᄒ","ᆶ":"ᄅᄒ","ퟲ":"ᄅᄒ","ᇗ":"ᄅᅀ","ㅬ":"ᄅᅀ","ퟛ":"ᄅᅌ","ᇙ":"ᄅᅙ","ㅭ":"ᄅᅙ","ퟜ":"ᄅᅙᄒ","ㅁ":"ᄆ","ᆷ":"ᄆ","ꥯ":"ᄆᄀ","ᇚ":"ᄆᄀ","ퟞ":"ᄆᄂ","ퟟ":"ᄆᄂᄂ","ꥰ":"ᄆᄃ","ᇛ":"ᄆᄅ","ퟠ":"ᄆᄆ","ᄜ":"ᄆᄇ","ㅮ":"ᄆᄇ","ᇜ":"ᄆᄇ","ퟡ":"ᄆᄇᄉ","ꥱ":"ᄆᄉ","ᇝ":"ᄆᄉ","ㅯ":"ᄆᄉ","ᇞ":"ᄆᄉᄉ","ᄝ":"ᄆᄋ","ㅱ":"ᄆᄋ","ᇢ":"ᄆᄋ","ퟢ":"ᄆᄌ","ᇠ":"ᄆᄎ","ᇡ":"ᄆᄒ","ᇟ":"ᄆᅀ","ㅰ":"ᄆᅀ","ㅂ":"ᄇ","ᆸ":"ᄇ","ᄞ":"ᄇᄀ","ㅲ":"ᄇᄀ","ᄟ":"ᄇᄂ","ᄠ":"ᄇᄃ","ㅳ":"ᄇᄃ","ퟣ":"ᄇᄃ","ᇣ":"ᄇᄅ","ퟤ":"ᄇᄅᄑ","ퟥ":"ᄇᄆ","ᄈ":"ᄇᄇ","ㅃ":"ᄇᄇ","ퟦ":"ᄇᄇ","ᄬ":"ᄇᄇᄋ","ㅹ":"ᄇᄇᄋ","ᄡ":"ᄇᄉ","ㅄ":"ᄇᄉ","ᆹ":"ᄇᄉ","ᄢ":"ᄇᄉᄀ","ㅴ":"ᄇᄉᄀ","ᄣ":"ᄇᄉᄃ","ㅵ":"ᄇᄉᄃ","ퟧ":"ᄇᄉᄃ","ᄤ":"ᄇᄉᄇ","ᄥ":"ᄇᄉᄉ","ᄦ":"ᄇᄉᄌ","ꥲ":"ᄇᄉᄐ","ᄫ":"ᄇᄋ","ㅸ":"ᄇᄋ","ᇦ":"ᄇᄋ","ᄧ":"ᄇᄌ","ㅶ":"ᄇᄌ","ퟨ":"ᄇᄌ","ᄨ":"ᄇᄎ","ퟩ":"ᄇᄎ","ꥳ":"ᄇᄏ","ᄩ":"ᄇᄐ","ㅷ":"ᄇᄐ","ᄪ":"ᄇᄑ","ᇤ":"ᄇᄑ","ꥴ":"ᄇᄒ","ᇥ":"ᄇᄒ","ㅅ":"ᄉ","ᆺ":"ᄉ","ᄭ":"ᄉᄀ","ㅺ":"ᄉᄀ","ᇧ":"ᄉᄀ","ᄮ":"ᄉᄂ","ㅻ":"ᄉᄂ","ᄯ":"ᄉᄃ","ㅼ":"ᄉᄃ","ᇨ":"ᄉᄃ","ᄰ":"ᄉᄅ","ᇩ":"ᄉᄅ","ᄱ":"ᄉᄆ","ퟪ":"ᄉᄆ","ᄲ":"ᄉᄇ","ㅽ":"ᄉᄇ","ᇪ":"ᄉᄇ","ᄳ":"ᄉᄇᄀ","ퟫ":"ᄉᄇᄋ","ᄊ":"ᄉᄉ","ㅆ":"ᄉᄉ","ᆻ":"ᄉᄉ","ퟬ":"ᄉᄉᄀ","ퟭ":"ᄉᄉᄃ","ꥵ":"ᄉᄉᄇ","ᄴ":"ᄉᄉᄉ","ᄵ":"ᄉᄋ","ᄶ":"ᄉᄌ","ㅾ":"ᄉᄌ","ퟯ":"ᄉᄌ","ᄷ":"ᄉᄎ","ퟰ":"ᄉᄎ","ᄸ":"ᄉᄏ","ᄹ":"ᄉᄐ","ퟱ":"ᄉᄐ","ᄺ":"ᄉᄑ","ퟮ":"ᄉᅀ","ㅇ":"ᄋ","ᆼ":"ᄋ","ᅁ":"ᄋᄀ","ᇬ":"ᄋᄀ","ᇭ":"ᄋᄀᄀ","ᅂ":"ᄋᄃ","ꥶ":"ᄋᄅ","ᅃ":"ᄋᄆ","ᅄ":"ᄋᄇ","ᅅ":"ᄋᄉ","ᇱ":"ᄋᄉ","ㆂ":"ᄋᄉ","ᅇ":"ᄋᄋ","ㆀ":"ᄋᄋ","ᇮ":"ᄋᄋ","ᅈ":"ᄋᄌ","ᅉ":"ᄋᄎ","ᇯ":"ᄋᄏ","ᅊ":"ᄋᄐ","ᅋ":"ᄋᄑ","ꥷ":"ᄋᄒ","ᅆ":"ᄋᅀ","ᇲ":"ᄋᅀ","ㆃ":"ᄋᅀ","ㅈ":"ᄌ","ᆽ":"ᄌ","ퟷ":"ᄌᄇ","ퟸ":"ᄌᄇᄇ","ᅍ":"ᄌᄋ","ᄍ":"ᄌᄌ","ㅉ":"ᄌᄌ","ퟹ":"ᄌᄌ","ꥸ":"ᄌᄌᄒ","ㅊ":"ᄎ","ᆾ":"ᄎ","ᅒ":"ᄎᄏ","ᅓ":"ᄎᄒ","ㅋ":"ᄏ","ᆿ":"ᄏ","ㅌ":"ᄐ","ᇀ":"ᄐ","ꥹ":"ᄐᄐ","ㅍ":"ᄑ","ᇁ":"ᄑ","ᅖ":"ᄑᄇ","ᇳ":"ᄑᄇ","ퟺ":"ᄑᄉ","ᅗ":"ᄑᄋ","ㆄ":"ᄑᄋ","ᇴ":"ᄑᄋ","ퟻ":"ᄑᄐ","ꥺ":"ᄑᄒ","ㅎ":"ᄒ","ᇂ":"ᄒ","ᇵ":"ᄒᄂ","ᇶ":"ᄒᄅ","ᇷ":"ᄒᄆ","ᇸ":"ᄒᄇ","ꥻ":"ᄒᄉ","ᅘ":"ᄒᄒ","ㆅ":"ᄒᄒ","ᄽ":"ᄼᄼ","ᄿ":"ᄾᄾ","ㅿ":"ᅀ","ᇫ":"ᅀ","ퟳ":"ᅀᄇ","ퟴ":"ᅀᄇᄋ","ㆁ":"ᅌ","ᇰ":"ᅌ","ퟵ":"ᅌᄆ","ퟶ":"ᅌᄒ","ᅏ":"ᅎᅎ","ᅑ":"ᅐᅐ","ㆆ":"ᅙ","ᇹ":"ᅙ","ꥼ":"ᅙᅙ","ㅤ":"ᅠ","ㅏ":"ᅡ","ᆣ":"ᅡー","ᅶ":"ᅡᅩ","ᅷ":"ᅡᅮ","ᅢ":"ᅡ丨","ㅐ":"ᅡ丨","ㅑ":"ᅣ","ᅸ":"ᅣᅩ","ᅹ":"ᅣᅭ","ᆤ":"ᅣᅮ","ᅤ":"ᅣ丨","ㅒ":"ᅣ丨","ㅓ":"ᅥ","ᅼ":"ᅥー","ᅺ":"ᅥᅩ","ᅻ":"ᅥᅮ","ᅦ":"ᅥ丨","ㅔ":"ᅥ丨","ㅕ":"ᅧ","ᆥ":"ᅧᅣ","ᅽ":"ᅧᅩ","ᅾ":"ᅧᅮ","ᅨ":"ᅧ丨","ㅖ":"ᅧ丨","ㅗ":"ᅩ","ᅪ":"ᅩᅡ","ㅘ":"ᅩᅡ","ᅫ":"ᅩᅡ丨","ㅙ":"ᅩᅡ丨","ᆦ":"ᅩᅣ","ᆧ":"ᅩᅣ丨","ᅿ":"ᅩᅥ","ᆀ":"ᅩᅥ丨","ힰ":"ᅩᅧ","ᆁ":"ᅩᅧ丨","ᆂ":"ᅩᅩ","ힱ":"ᅩᅩ丨","ᆃ":"ᅩᅮ","ᅬ":"ᅩ丨","ㅚ":"ᅩ丨","ㅛ":"ᅭ","ힲ":"ᅭᅡ","ힳ":"ᅭᅡ丨","ᆄ":"ᅭᅣ","ㆇ":"ᅭᅣ","ᆆ":"ᅭᅣ","ᆅ":"ᅭᅣ丨","ㆈ":"ᅭᅣ丨","ힴ":"ᅭᅥ","ᆇ":"ᅭᅩ","ᆈ":"ᅭ丨","ㆉ":"ᅭ丨","ㅜ":"ᅮ","ᆉ":"ᅮᅡ","ᆊ":"ᅮᅡ丨","ᅯ":"ᅮᅥ","ㅝ":"ᅮᅥ","ᆋ":"ᅮᅥー","ᅰ":"ᅮᅥ丨","ㅞ":"ᅮᅥ丨","ힵ":"ᅮᅧ","ᆌ":"ᅮᅧ丨","ᆍ":"ᅮᅮ","ᅱ":"ᅮ丨","ㅟ":"ᅮ丨","ힶ":"ᅮ丨丨","ㅠ":"ᅲ","ᆎ":"ᅲᅡ","ힷ":"ᅲᅡ丨","ᆏ":"ᅲᅥ","ᆐ":"ᅲᅥ丨","ᆑ":"ᅲᅧ","ㆊ":"ᅲᅧ","ᆒ":"ᅲᅧ丨","ㆋ":"ᅲᅧ丨","ힸ":"ᅲᅩ","ᆓ":"ᅲᅮ","ᆔ":"ᅲ丨","ㆌ":"ᅲ丨","ㆍ":"ᆞ","ퟅ":"ᆞᅡ","ᆟ":"ᆞᅥ","ퟆ":"ᆞᅥ丨","ᆠ":"ᆞᅮ","ᆢ":"ᆞᆞ","ᆡ":"ᆞ丨","ㆎ":"ᆞ丨","ヘ":"へ","⍁":"〼","⧄":"〼","꒞":"ꁊ","꒬":"ꁐ","꒜":"ꃀ","꒨":"ꄲ","꒿":"ꉙ","꒾":"ꊱ","꒔":"ꋍ","꓀":"ꎫ","꓂":"ꎵ","꒺":"ꎿ","꒰":"ꏂ","꒧":"ꑘ","⊥":"ꓕ","⟂":"ꓕ","𝈜":"ꓕ","Ʇ":"ꓕ","Ꞟ":"ꓤ","⅁":"ꓨ","⅂":"ꓶ","𝈕":"ꓶ","𝈫":"ꓶ","𖼦":"ꓶ","𐐑":"ꓶ","⅃":"𖼀","𑫦":"𑫥𑫯","𑫨":"𑫥𑫥","𑫩":"𑫥𑫥𑫯","𑫪":"𑫥𑫥𑫰","𑫧":"𑫥𑫰","𑫴":"𑫳𑫯","𑫶":"𑫳𑫳","𑫷":"𑫳𑫳𑫯","𑫸":"𑫳𑫳𑫰","𑫵":"𑫳𑫰","𑫬":"𑫫𑫯","𑫭":"𑫫𑫫","𑫮":"𑫫𑫫𑫯","⊕":"𐊨","⨁":"𐊨","🜨":"𐊨","Ꚛ":"𐊨","▽":"𐊼","𝈔":"𐊼","🜄":"𐊼","⧖":"𐋀","ꞛ":"𐐺","Ꞛ":"𐐒","𐒠":"𐒆","𐏑":"𐎂","𐏓":"𐎓","𒀸":"𐎚","☥":"𐦞","𓋹":"𐦞","〹":"卄","不":"不","丽":"丽","並":"並","⎜":"丨","⎟":"丨","⎢":"丨","⎥":"丨","⎪":"丨","⎮":"丨","㇑":"丨","ᅵ":"丨","ㅣ":"丨","⼁":"丨","ᆜ":"丨ー","ᆘ":"丨ᅡ","ᆙ":"丨ᅣ","ힽ":"丨ᅣᅩ","ힾ":"丨ᅣ丨","ힿ":"丨ᅧ","ퟀ":"丨ᅧ丨","ᆚ":"丨ᅩ","ퟁ":"丨ᅩ丨","ퟂ":"丨ᅭ","ᆛ":"丨ᅮ","ퟃ":"丨ᅲ","ᆝ":"丨ᆞ","ퟄ":"丨丨","串":"串","丸":"丸","丹":"丹","乁":"乁","㇠":"乙","⼄":"乙","㇟":"乚","⺃":"乚","㇖":"乛","⺂":"乛","⻲":"亀","亂":"亂","㇚":"亅","⼅":"亅","了":"了","ニ":"二","⼆":"二","𠄢":"𠄢","⼇":"亠","亮":"亮","⼈":"人","イ":"亻","⺅":"亻","什":"什","仌":"仌","令":"令","你":"你","倂":"併","倂":"併","侀":"侀","來":"來","例":"例","侮":"侮","侮":"侮","侻":"侻","便":"便","值":"値","倫":"倫","偺":"偺","備":"備","像":"像","僚":"僚","僧":"僧","僧":"僧","㒞":"㒞","⼉":"儿","兀":"兀","⺎":"兀","充":"充","免":"免","免":"免","兔":"兔","兤":"兤","⼊":"入","內":"內","全":"全","兩":"兩","ハ":"八","⼋":"八","六":"六","具":"具","𠔜":"𠔜","𠔥":"𠔥","冀":"冀","㒹":"㒹","⼌":"冂","再":"再","𠕋":"𠕋","冒":"冒","冕":"冕","㒻":"㒻","最":"最","⼍":"冖","冗":"冗","冤":"冤","⼎":"冫","冬":"冬","况":"况","况":"况","冷":"冷","凉":"凉","凌":"凌","凜":"凜","凞":"凞","⼏":"几","𠘺":"𠘺","凵":"凵","⼐":"凵","⼑":"刀","⺉":"刂","刃":"刃","切":"切","切":"切","列":"列","利":"利","㓟":"㓟","刺":"刺","刻":"刻","剆":"剆","割":"割","剷":"剷","劉":"劉","𠠄":"𠠄","カ":"力","力":"力","⼒":"力","劣":"劣","㔕":"㔕","劳":"劳","勇":"勇","勇":"勇","勉":"勉","勉":"勉","勒":"勒","勞":"勞","勤":"勤","勤":"勤","勵":"勵","⼓":"勹","勺":"勺","勺":"勺","包":"包","匆":"匆","𠣞":"𠣞","⼔":"匕","北":"北","北":"北","⼕":"匚","⼖":"匸","匿":"匿","⼗":"十","〸":"十","〺":"卅","卉":"卉","࿖":"卍","࿕":"卐","卑":"卑","卑":"卑","博":"博","ト":"卜","⼘":"卜","⼙":"卩","⺋":"㔾","即":"即","卵":"卵","卽":"卽","卿":"卿","卿":"卿","卿":"卿","⼚":"厂","𠨬":"𠨬","⼛":"厶","參":"參","⼜":"又","及":"及","叟":"叟","𠭣":"𠭣","ロ":"口","⼝":"口","囗":"口","⼞":"口","句":"句","叫":"叫","叱":"叱","吆":"吆","吏":"吏","吝":"吝","吸":"吸","呂":"呂","呈":"呈","周":"周","咞":"咞","咢":"咢","咽":"咽","䎛":"㖈","哶":"哶","唐":"唐","啓":"啓","啟":"啓","啕":"啕","啣":"啣","善":"善","善":"善","喇":"喇","喙":"喙","喙":"喙","喝":"喝","喝":"喝","喫":"喫","喳":"喳","嗀":"嗀","嗂":"嗂","嗢":"嗢","嘆":"嘆","嘆":"嘆","噑":"噑","噴":"噴","器":"器","囹":"囹","圖":"圖","圗":"圗","⼟":"土","士":"土","⼠":"土","型":"型","城":"城","㦳":"㘽","埴":"埴","堍":"堍","報":"報","堲":"堲","塀":"塀","塚":"塚","塚":"塚","塞":"塞","填":"塡","壿":"墫","墬":"墬","墳":"墳","壘":"壘","壟":"壟","𡓤":"𡓤","壮":"壮","売":"売","壷":"壷","⼡":"夂","夆":"夆","⼢":"夊","タ":"夕","⼣":"夕","多":"多","夢":"夢","⼤":"大","奄":"奄","奈":"奈","契":"契","奔":"奔","奢":"奢","女":"女","⼥":"女","𡚨":"𡚨","𡛪":"𡛪","姘":"姘","姬":"姬","娛":"娛","娧":"娧","婢":"婢","婦":"婦","嬀":"媯","㛮":"㛮","㛼":"㛼","媵":"媵","嬈":"嬈","嬨":"嬨","嬾":"嬾","嬾":"嬾","⼦":"子","⼧":"宀","宅":"宅","𡧈":"𡧈","寃":"寃","寘":"寘","寧":"寧","寧":"寧","寧":"寧","寮":"寮","寳":"寳","𡬘":"𡬘","⼨":"寸","寿":"寿","将":"将","⼩":"小","尢":"尢","⺐":"尢","⼪":"尢","⺏":"尣","㞁":"㞁","⼫":"尸","尿":"尿","屠":"屠","屢":"屢","層":"層","履":"履","屮":"屮","屮":"屮","⼬":"屮","𡴋":"𡴋","⼭":"山","峀":"峀","岍":"岍","𡷤":"𡷤","𡷦":"𡷦","崙":"崙","嵃":"嵃","嵐":"嵐","嵫":"嵫","嵮":"嵮","嵼":"嵼","嶲":"嶲","嶺":"嶺","⼮":"巛","巢":"巢","エ":"工","⼯":"工","⼰":"己","⺒":"巳","㠯":"㠯","巽":"巽","⼱":"巾","帲":"帡","帨":"帨","帽":"帽","幩":"幩","㡢":"㡢","𢆃":"𢆃","⼲":"干","年":"年","𢆟":"𢆟","⺓":"幺","⼳":"幺","⼴":"广","度":"度","㡼":"㡼","庰":"庰","庳":"庳","庶":"庶","廊":"廊","廊":"廊","廉":"廉","廒":"廒","廓":"廓","廙":"廙","廬":"廬","⼵":"廴","廾":"廾","⼶":"廾","𢌱":"𢌱","𢌱":"𢌱","弄":"弄","⼷":"弋","⼸":"弓","弢":"弢","弢":"弢","⼹":"彐","⺔":"彑","当":"当","㣇":"㣇","⼺":"彡","形":"形","彩":"彩","彫":"彫","⼻":"彳","律":"律","㣣":"㣣","徚":"徚","復":"復","徭":"徭","⼼":"心","⺖":"忄","⺗":"㣺","忍":"忍","志":"志","念":"念","忹":"忹","怒":"怒","怜":"怜","恵":"恵","㤜":"㤜","㤺":"㤺","悁":"悁","悔":"悔","悔":"悔","惇":"惇","惘":"惘","惡":"惡","𢛔":"𢛔","愈":"愈","慨":"慨","慄":"慄","慈":"慈","慌":"慌","慌":"慌","慎":"慎","慎":"慎","慠":"慠","慺":"慺","憎":"憎","憎":"憎","憎":"憎","憐":"憐","憤":"憤","憯":"憯","憲":"憲","𢡄":"𢡄","𢡊":"𢡊","懞":"懞","懲":"懲","懲":"懲","懲":"懲","懶":"懶","懶":"懶","戀":"戀","⼽":"戈","成":"成","戛":"戛","戮":"戮","戴":"戴","⼾":"戶","戸":"戶","⼿":"手","⺘":"扌","扝":"扝","抱":"抱","拉":"拉","拏":"拏","拓":"拓","拔":"拔","拼":"拼","拾":"拾","𢬌":"𢬌","挽":"挽","捐":"捐","捨":"捨","捻":"捻","掃":"掃","掠":"掠","掩":"掩","揄":"揄","揤":"揤","摒":"摒","𢯱":"𢯱","搜":"搜","搢":"搢","揅":"揅","摩":"摩","摷":"摷","摾":"摾","㨮":"㨮","搉":"㩁","撚":"撚","撝":"撝","擄":"擄","㩬":"㩬","⽀":"支","⽁":"攴","⺙":"攵","敏":"敏","敏":"敏","敖":"敖","敬":"敬","數":"數","𣀊":"𣀊","⽂":"文","⻫":"斉","⽃":"斗","料":"料","⽄":"斤","⽅":"方","旅":"旅","⽆":"无","⺛":"旡","既":"既","旣":"旣","⽇":"日","易":"易","曶":"㫚","㫤":"㫤","晉":"晉","晩":"晚","晴":"晴","晴":"晴","暑":"暑","暑":"暑","暈":"暈","㬈":"㬈","暜":"暜","暴":"暴","曆":"曆","㬙":"㬙","𣊸":"𣊸","⽈":"曰","更":"更","書":"書","⽉":"月","𣍟":"𣍟","肦":"朌","胐":"朏","胊":"朐","脁":"朓","胶":"㬵","朗":"朗","朗":"朗","朗":"朗","脧":"朘","望":"望","望":"望","朡":"朡","幐":"㬺","䐠":"㬻","𣎓":"𣎓","膧":"朣","𣎜":"𣎜","⽊":"木","李":"李","杓":"杓","杖":"杖","杞":"杞","𣏃":"𣏃","柿":"杮","杻":"杻","枅":"枅","林":"林","㭉":"㭉","𣏕":"𣏕","柳":"柳","柺":"柺","栗":"栗","栟":"栟","桒":"桒","𣑭":"𣑭","梁":"梁","梅":"梅","梅":"梅","梎":"梎","梨":"梨","椔":"椔","楂":"楂","㮝":"㮝","㮝":"㮝","槩":"㮣","樧":"榝","榣":"榣","槪":"槪","樂":"樂","樂":"樂","樂":"樂","樓":"樓","𣚣":"𣚣","檨":"檨","櫓":"櫓","櫛":"櫛","欄":"欄","㰘":"㰘","⽋":"欠","次":"次","𣢧":"𣢧","歔":"歔","㱎":"㱎","⽌":"止","⻭":"歯","歲":"歲","歷":"歷","歹":"歹","⽍":"歹","⺞":"歺","殟":"殟","殮":"殮","⽎":"殳","殺":"殺","殺":"殺","殺":"殺","殻":"殻","𣪍":"𣪍","⽏":"毋","⺟":"母","𣫺":"𣫺","⽐":"比","⽑":"毛","⽒":"氏","⺠":"民","⽓":"气","⽔":"水","⺡":"氵","⺢":"氺","汎":"汎","汧":"汧","沈":"沈","沿":"沿","泌":"泌","泍":"泍","泥":"泥","𣲼":"𣲼","洛":"洛","洞":"洞","洴":"洴","派":"派","流":"流","流":"流","流":"流","洖":"洖","浩":"浩","浪":"浪","海":"海","海":"海","浸":"浸","涅":"涅","𣴞":"𣴞","淋":"淋","淚":"淚","淪":"淪","淹":"淹","渚":"渚","港":"港","湮":"湮","潙":"溈","滋":"滋","滋":"滋","溜":"溜","溺":"溺","滇":"滇","滑":"滑","滛":"滛","㴳":"㴳","漏":"漏","漢":"漢","漢":"漢","漣":"漣","𣻑":"𣻑","潮":"潮","𣽞":"𣽞","𣾎":"𣾎","濆":"濆","濫":"濫","濾":"濾","瀛":"瀛","瀞":"瀞","瀞":"瀞","瀹":"瀹","灊":"灊","㶖":"㶖","⽕":"火","⺣":"灬","灰":"灰","灷":"灷","災":"災","炙":"炙","炭":"炭","烈":"烈","烙":"烙","煮":"煮","煮":"煮","𤉣":"𤉣","煅":"煅","煉":"煉","𤋮":"𤋮","熜":"熜","燎":"燎","燐":"燐","𤎫":"𤎫","爐":"爐","爛":"爛","爨":"爨","⽖":"爪","爫":"爫","⺤":"爫","爵":"爵","爵":"爵","⽗":"父","⽘":"爻","⺦":"丬","⽙":"爿","⽚":"片","牐":"牐","⽛":"牙","𤘈":"𤘈","⽜":"牛","牢":"牢","犀":"犀","犕":"犕","⽝":"犬","⺨":"犭","犯":"犯","狀":"狀","𤜵":"𤜵","狼":"狼","猪":"猪","猪":"猪","𤠔":"𤠔","獵":"獵","獺":"獺","⽞":"玄","率":"率","率":"率","⽟":"玉","王":"王","㺬":"㺬","玥":"玥","玲":"玲","㺸":"㺸","㺸":"㺸","珞":"珞","琉":"琉","理":"理","琢":"琢","瑇":"瑇","瑜":"瑜","瑩":"瑩","瑱":"瑱","瑱":"瑱","璅":"璅","璉":"璉","璘":"璘","瓊":"瓊","⽠":"瓜","⽡":"瓦","㼛":"㼛","甆":"甆","⽢":"甘","⽣":"生","甤":"甤","⽤":"用","⽥":"田","画":"画","甾":"甾","𤰶":"𤰶","留":"留","略":"略","異":"異","異":"異","𤲒":"𤲒","⽦":"疋","⽧":"疒","痢":"痢","瘐":"瘐","瘟":"瘟","瘝":"瘝","療":"療","癩":"癩","⽨":"癶","⽩":"白","𤾡":"𤾡","𤾸":"𤾸","⽪":"皮","⽫":"皿","𥁄":"𥁄","㿼":"㿼","益":"益","益":"益","盛":"盛","盧":"盧","䀈":"䀈","⽬":"目","直":"直","直":"直","𥃲":"𥃲","𥃳":"𥃳","省":"省","䀘":"䀘","𥄙":"𥄙","眞":"眞","真":"真","真":"真","𥄳":"𥄳","着":"着","睊":"睊","睊":"睊","鿃":"䀹","䀹":"䀹","䀹":"䀹","晣":"䀿","䁆":"䁆","瞋":"瞋","𥉉":"𥉉","瞧":"瞧","⽭":"矛","⽮":"矢","⽯":"石","䂖":"䂖","𥐝":"𥐝","硏":"研","硎":"硎","硫":"硫","碌":"碌","碌":"碌","碑":"碑","磊":"磊","磌":"磌","磌":"磌","磻":"磻","䃣":"䃣","礪":"礪","⽰":"示","⺭":"礻","礼":"礼","社":"社","祈":"祈","祉":"祉","𥘦":"𥘦","祐":"祐","祖":"祖","祖":"祖","祝":"祝","神":"神","祥":"祥","視":"視","視":"視","祿":"祿","𥚚":"𥚚","禍":"禍","禎":"禎","福":"福","福":"福","𥛅":"𥛅","禮":"禮","⽱":"禸","⽲":"禾","秊":"秊","䄯":"䄯","秫":"秫","稜":"稜","穊":"穊","穀":"穀","穀":"穀","穏":"穏","⽳":"穴","突":"突","𥥼":"𥥼","窱":"窱","立":"立","⽴":"立","⻯":"竜","𥪧":"𥪧","𥪧":"𥪧","竮":"竮","⽵":"竹","笠":"笠","節":"節","節":"節","䈂":"䈂","𥮫":"𥮫","篆":"篆","䈧":"䈧","築":"築","𥲀":"𥲀","𥳐":"𥳐","簾":"簾","籠":"籠","⽶":"米","类":"类","粒":"粒","精":"精","糒":"糒","糖":"糖","糨":"糨","䊠":"䊠","糣":"糣","糧":"糧","⽷":"糸","⺯":"糹","𥾆":"𥾆","紀":"紀","紐":"紐","索":"索","累":"累","絶":"絕","絣":"絣","絛":"絛","綠":"綠","綾":"綾","緇":"緇","練":"練","練":"練","練":"練","縂":"縂","䌁":"䌁","縉":"縉","縷":"縷","繁":"繁","繅":"繅","𦇚":"𦇚","䌴":"䌴","⽸":"缶","𦈨":"𦈨","缾":"缾","𦉇":"𦉇","⽹":"网","⺫":"罒","⺲":"罒","⺱":"罓","䍙":"䍙","署":"署","𦋙":"𦋙","罹":"罹","罺":"罺","羅":"羅","𦌾":"𦌾","⽺":"羊","羕":"羕","羚":"羚","羽":"羽","⽻":"羽","翺":"翺","老":"老","⽼":"老","⺹":"耂","者":"者","者":"者","者":"者","⽽":"而","𦓚":"𦓚","⽾":"耒","𦔣":"𦔣","⽿":"耳","聆":"聆","聠":"聠","𦖨":"𦖨","聯":"聯","聰":"聰","聾":"聾","⾀":"聿","⺺":"肀","⾁":"肉","肋":"肋","肭":"肭","育":"育","䏕":"䏕","䏙":"䏙","腁":"胼","脃":"脃","脾":"脾","䐋":"䐋","𦞧":"𦞧","𦞵":"𦞵","朦":"䑃","臘":"臘","⾂":"臣","臨":"臨","⾃":"自","臭":"臭","⾄":"至","⾅":"臼","舁":"舁","舁":"舁","舄":"舄","⾆":"舌","舘":"舘","⾇":"舛","⾈":"舟","䑫":"䑫","⾉":"艮","良":"良","⾊":"色","⾋":"艸","艹":"艹","艹":"艹","⺾":"艹","⺿":"艹","⻀":"艹","芋":"芋","芑":"芑","芝":"芝","花":"花","芳":"芳","芽":"芽","若":"若","若":"若","苦":"苦","𦬼":"𦬼","茶":"茶","荒":"荒","荣":"荣","茝":"茝","茣":"茣","莽":"莽","荓":"荓","菉":"菉","菊":"菊","菌":"菌","菜":"菜","菧":"菧","華":"華","菱":"菱","著":"著","著":"著","𦰶":"𦰶","莭":"莭","落":"落","葉":"葉","蔿":"蒍","𦳕":"𦳕","𦵫":"𦵫","蓮":"蓮","蓱":"蓱","蓳":"蓳","蓼":"蓼","蔖":"蔖","䔫":"䔫","蕤":"蕤","𦼬":"𦼬","藍":"藍","䕝":"䕝","𦾱":"𦾱","䕡":"䕡","藺":"藺","蘆":"蘆","䕫":"䕫","蘒":"蘒","蘭":"蘭","𧃒":"𧃒","虁":"蘷","蘿":"蘿","⾌":"虍","⻁":"虎","虐":"虐","虜":"虜","虜":"虜","虧":"虧","虩":"虩","⾍":"虫","蚩":"蚩","蚈":"蚈","蛢":"蛢","蜎":"蜎","蜨":"蜨","蝫":"蝫","蟡":"蟡","蝹":"蝹","蝹":"蝹","螆":"螆","䗗":"䗗","𧏊":"𧏊","螺":"螺","蠁":"蠁","䗹":"䗹","蠟":"蠟","⾎":"血","行":"行","⾏":"行","衠":"衠","衣":"衣","⾐":"衣","⻂":"衤","裂":"裂","𧙧":"𧙧","裏":"裏","裗":"裗","裞":"裞","裡":"裡","裸":"裸","裺":"裺","䘵":"䘵","褐":"褐","襁":"襁","襤":"襤","⾑":"襾","⻄":"西","⻃":"覀","覆":"覆","見":"見","⾒":"見","𧢮":"𧢮","⻅":"见","⾓":"角","⾔":"言","𧥦":"𧥦","詽":"訮","訞":"䚶","䚾":"䚾","䛇":"䛇","誠":"誠","說":"說","說":"說","調":"調","請":"請","諒":"諒","論":"論","諭":"諭","諭":"諭","諸":"諸","諸":"諸","諾":"諾","諾":"諾","謁":"謁","謁":"謁","謹":"謹","謹":"謹","識":"識","讀":"讀","讏":"讆","變":"變","變":"變","⻈":"讠","⾕":"谷","⾖":"豆","豈":"豈","豕":"豕","⾗":"豕","豣":"豜","⾘":"豸","𧲨":"𧲨","⾙":"貝","貫":"貫","賁":"賁","賂":"賂","賈":"賈","賓":"賓","贈":"贈","贈":"贈","贛":"贛","⻉":"贝","⾚":"赤","⾛":"走","起":"起","趆":"赿","𧻓":"𧻓","𧼯":"𧼯","⾜":"足","跋":"跋","趼":"趼","跺":"跥","路":"路","跰":"跰","躛":"躗","⾝":"身","車":"車","⾞":"車","軔":"軔","輧":"軿","輦":"輦","輪":"輪","輸":"輸","輸":"輸","輻":"輻","轢":"轢","⻋":"车","⾟":"辛","辞":"辞","辰":"辰","⾠":"辰","⾡":"辵","辶":"辶","⻌":"辶","⻍":"辶","巡":"巡","連":"連","逸":"逸","逸":"逸","遲":"遲","遼":"遼","𨗒":"𨗒","𨗭":"𨗭","邏":"邏","⾢":"邑","邔":"邔","郎":"郎","郞":"郎","郞":"郎","郱":"郱","都":"都","𨜮":"𨜮","鄑":"鄑","鄛":"鄛","⾣":"酉","酪":"酪","醙":"醙","醴":"醴","⾤":"釆","里":"里","⾥":"里","量":"量","金":"金","⾦":"金","鈴":"鈴","鈸":"鈸","鉶":"鉶","鋗":"鋗","鋘":"鋘","鉼":"鉼","錄":"錄","鍊":"鍊","鎮":"鎭","鏹":"鏹","鐕":"鐕","𨯺":"𨯺","⻐":"钅","⻑":"長","⾧":"長","⻒":"镸","⻓":"长","⾨":"門","開":"開","䦕":"䦕","閭":"閭","閷":"閷","𨵷":"𨵷","⻔":"门","⾩":"阜","⻏":"阝","⻖":"阝","阮":"阮","陋":"陋","降":"降","陵":"陵","陸":"陸","陼":"陼","隆":"隆","隣":"隣","䧦":"䧦","⾪":"隶","隷":"隷","隸":"隷","隸":"隷","⾫":"隹","雃":"雃","離":"離","難":"難","難":"難","⾬":"雨","零":"零","雷":"雷","霣":"霣","𩅅":"𩅅","露":"露","靈":"靈","⾭":"靑","⻘":"青","靖":"靖","靖":"靖","𩇟":"𩇟","⾮":"非","⾯":"面","𩈚":"𩈚","⾰":"革","䩮":"䩮","䩶":"䩶","⾱":"韋","韛":"韛","韠":"韠","⻙":"韦","⾲":"韭","𩐊":"𩐊","⾳":"音","響":"響","響":"響","⾴":"頁","䪲":"䪲","頋":"頋","頋":"頋","頋":"頋","領":"領","頩":"頩","𩒖":"𩒖","頻":"頻","頻":"頻","類":"類","⻚":"页","⾵":"風","𩖶":"𩖶","⻛":"风","⾶":"飛","⻜":"飞","⻝":"食","⾷":"食","⻟":"飠","飢":"飢","飯":"飯","飼":"飼","䬳":"䬳","館":"館","餩":"餩","⻠":"饣","⾸":"首","⾹":"香","馧":"馧","⾺":"馬","駂":"駂","駱":"駱","駾":"駾","驪":"驪","⻢":"马","⾻":"骨","䯎":"䯎","⾼":"高","⾽":"髟","𩬰":"𩬰","鬒":"鬒","鬒":"鬒","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⻤":"鬼","⿂":"魚","魯":"魯","鱀":"鱀","鱗":"鱗","⻥":"鱼","⿃":"鳥","鳽":"鳽","䳎":"䳎","鵧":"鵧","䳭":"䳭","𪃎":"𪃎","鶴":"鶴","𪄅":"𪄅","䳸":"䳸","鷺":"鷺","𪈎":"𪈎","鸞":"鸞","鹃":"鹂","⿄":"鹵","鹿":"鹿","⿅":"鹿","𪊑":"𪊑","麗":"麗","麟":"麟","⿆":"麥","⻨":"麦","麻":"麻","⿇":"麻","𪎒":"𪎒","⿈":"黃","⻩":"黄","⿉":"黍","黎":"黎","䵖":"䵖","⿊":"黑","黒":"黑","墨":"墨","黹":"黹","⿋":"黹","⿌":"黽","鼅":"鼅","黾":"黾","⿍":"鼎","鼏":"鼏","⿎":"鼓","鼖":"鼖","⿏":"鼠","鼻":"鼻","⿐":"鼻","齃":"齃","⿑":"齊","⻬":"齐","⿒":"齒","𪘀":"𪘀","⻮":"齿","龍":"龍","⿓":"龍","龎":"龎","⻰":"龙","龜":"龜","龜":"龜","龜":"龜","⿔":"龜","⻳":"龟","⿕":"龠"}')},function(e,t,n){"use strict";function o(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,n,i){t=t||"&",n=n||"=";var a={};if("string"!=typeof e||0===e.length)return a;var s=/\+/g;e=e.split(t);var c=1e3;i&&"number"==typeof i.maxKeys&&(c=i.maxKeys);var l=e.length;c>0&&l>c&&(l=c);for(var u=0;u=0?(d=g.substr(0,f),p=g.substr(f+1)):(d=g,p=""),h=decodeURIComponent(d),m=decodeURIComponent(p),o(a,h)?r(a[h])?a[h].push(m):a[h]=[a[h],m]:a[h]=m}return a};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,n){"use strict";var o=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,n,s){return t=t||"&",n=n||"=",null===e&&(e=void 0),"object"==typeof e?i(a(e),(function(a){var s=encodeURIComponent(o(a))+n;return r(e[a])?i(e[a],(function(e){return s+encodeURIComponent(o(e))})).join(t):s+encodeURIComponent(o(e[a]))})).join(t):s?encodeURIComponent(o(s))+n+encodeURIComponent(o(e)):""};var r=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function i(e,t){if(e.map)return e.map(t);for(var n=[],o=0;o1;){var t=e.pop(),n=t.obj[t.prop];if(r(n)){for(var o=[],i=0;i=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122?r+=o.charAt(a):s<128?r+=i[s]:s<2048?r+=i[192|s>>6]+i[128|63&s]:s<55296||s>=57344?r+=i[224|s>>12]+i[128|s>>6&63]+i[128|63&s]:(a+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(a)),r+=i[240|s>>18]+i[128|s>>12&63]+i[128|s>>6&63]+i[128|63&s])}return r},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(r(t))t.push(n);else{if(!t||"object"!=typeof t)return[t,n];(i&&(i.plainObjects||i.allowPrototypes)||!o.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(n);var s=t;return r(t)&&!r(n)&&(s=a(t,i)),r(t)&&r(n)?(n.forEach((function(n,r){if(o.call(t,r)){var a=t[r];a&&"object"==typeof a&&n&&"object"==typeof n?t[r]=e(a,n,i):t.push(n)}else t[r]=n})),t):Object.keys(n).reduce((function(t,r){var a=n[r];return o.call(t,r)?t[r]=e(t[r],a,i):t[r]=a,t}),s)}}},function(e,t,n){"use strict";var o=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach((function(e){o[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,s,c=a(e),l=1;l1;){var t=e.pop(),n=t.obj[t.prop];if(r(n)){for(var o=[],i=0;i=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122?r+=o.charAt(a):s<128?r+=i[s]:s<2048?r+=i[192|s>>6]+i[128|63&s]:s<55296||s>=57344?r+=i[224|s>>12]+i[128|s>>6&63]+i[128|63&s]:(a+=1,s=65536+((1023&s)<<10|1023&o.charCodeAt(a)),r+=i[240|s>>18]+i[128|s>>12&63]+i[128|s>>6&63]+i[128|63&s])}return r},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},merge:function e(t,n,i){if(!n)return t;if("object"!=typeof n){if(r(t))t.push(n);else{if(!t||"object"!=typeof t)return[t,n];(i&&(i.plainObjects||i.allowPrototypes)||!o.call(Object.prototype,n))&&(t[n]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(n);var s=t;return r(t)&&!r(n)&&(s=a(t,i)),r(t)&&r(n)?(n.forEach((function(n,r){if(o.call(t,r)){var a=t[r];a&&"object"==typeof a&&n&&"object"==typeof n?t[r]=e(a,n,i):t.push(n)}else t[r]=n})),t):Object.keys(n).reduce((function(t,r){var a=n[r];return o.call(t,r)?t[r]=e(t[r],a,i):t[r]=a,t}),s)}}},function(e,t,n){"use strict";t.__esModule=!0,t.tokenize=t.test=t.scanner=t.parser=t.options=t.inherits=t.find=void 0;var o=n(247),r=s(n(901)),i=s(n(902)),a=s(n(903));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)});var c=function(e){return a.run(i.run(e))};t.find=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=c(e),o=[],r=0;r1&&void 0!==arguments[1]?arguments[1]:null,n=c(e);return 1===n.length&&n[0].isLink&&(!t||n[0].type===t)},t.tokenize=c},function(e,t,n){"use strict";t.__esModule=!0,t.AMPERSAND=t.CLOSEPAREN=t.CLOSEANGLEBRACKET=t.CLOSEBRACKET=t.CLOSEBRACE=t.OPENPAREN=t.OPENANGLEBRACKET=t.OPENBRACKET=t.OPENBRACE=t.WS=t.TLD=t.SYM=t.UNDERSCORE=t.SLASH=t.MAILTO=t.PROTOCOL=t.QUERY=t.POUND=t.PLUS=t.NUM=t.NL=t.LOCALHOST=t.PUNCTUATION=t.DOT=t.COLON=t.AT=t.DOMAIN=t.Base=void 0;var o=n(640),r=n(247),i=(0,o.createTokenClass)();function a(e){var t=e?{v:e}:{};return(0,r.inherits)(i,(0,o.createTokenClass)(),t)}i.prototype={toString:function(){return this.v+""}};var s=a(),c=a("@"),l=a(":"),u=a("."),d=a(),p=a(),h=a("\n"),m=a(),g=a("+"),f=a("#"),_=a(),v=a("mailto:"),b=a("?"),y=a("/"),E=a("_"),S=a(),w=a(),C=a(),x=a("{"),T=a("["),k=a("<"),R=a("("),O=a("}"),D=a("]"),I=a(">"),F=a(")"),N=a("&");t.Base=i,t.DOMAIN=s,t.AT=c,t.COLON=l,t.DOT=u,t.PUNCTUATION=d,t.LOCALHOST=p,t.NL=h,t.NUM=m,t.PLUS=g,t.POUND=f,t.QUERY=b,t.PROTOCOL=_,t.MAILTO=v,t.SLASH=y,t.UNDERSCORE=E,t.SYM=S,t.TLD=w,t.WS=C,t.OPENBRACE=x,t.OPENBRACKET=T,t.OPENANGLEBRACKET=k,t.OPENPAREN=R,t.CLOSEBRACE=O,t.CLOSEBRACKET=D,t.CLOSEANGLEBRACKET=I,t.CLOSEPAREN=F,t.AMPERSAND=N},function(e,t){e.exports="img/icons-create-room.817ede2.svg"},function(e,t){e.exports="img/external-link.a8d3e9b.svg"},function(e,t,n){var o=n(912);e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var o=n(195);e.exports=function(e,t){if(!o(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!o(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!o(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},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 o=n(302)("keys"),r=n(249);e.exports=function(e){return o[e]||(o[e]=r(e))}},function(e,t,n){var o=n(89),r=n(142),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return i[e]||(i[e]=void 0!==t?t:{})})("versions",[]).push({version:o.version,mode:n(248)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";t.__esModule=!0;var o=a(n(915)),r=a(n(927)),i="function"==typeof r.default&&"symbol"==typeof o.default?function(e){return typeof e}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof r.default&&"symbol"===i(o.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof r.default&&e.constructor===r.default&&e!==r.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t){var n=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},function(e,t,n){var o=n(194),r=n(919),i=n(307),a=n(301)("IE_PROTO"),s=function(){},c=function(){var e,t=n(645)("iframe"),o=i.length;for(t.style.display="none",n(922).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("