2020-10-05 14:46:56 +00:00

16 lines
768 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

!function e(t,r,n){function i(s,a){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,(function(e){return i(t[s][1][e]||e)}),l,l.exports,e,t,r,n)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(e,t,r){t.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}},{}],2:[function(e,t,r){t.exports=function(e){if(Array.isArray(e))return e}},{}],3:[function(e,t,r){var n=e("./arrayLikeToArray");t.exports=function(e){if(Array.isArray(e))return n(e)}},{"./arrayLikeToArray":1}],4:[function(e,t,r){t.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}},{}],5:[function(e,t,r){function n(e,t,r,n,i,o,s){try{var a=e[o](s),u=a.value}catch(e){return void r(e)}a.done?t(u):Promise.resolve(u).then(n,i)}t.exports=function(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var s=e.apply(t,r);function a(e){n(s,i,o,a,u,"next",e)}function u(e){n(s,i,o,a,u,"throw",e)}a(void 0)}))}}},{}],6:[function(e,t,r){t.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},{}],7:[function(e,t,r){var n=e("./setPrototypeOf"),i=e("./isNativeReflectConstruct");function o(e,r,s){return i()?t.exports=o=Reflect.construct:t.exports=o=function(e,t,r){var i=[null];i.push.apply(i,t);var o=new(Function.bind.apply(e,i));return r&&n(o,r.prototype),o},o.apply(null,arguments)}t.exports=o},{"./isNativeReflectConstruct":15,"./setPrototypeOf":21}],8:[function(e,t,r){function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}t.exports=function(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}},{}],9:[function(e,t,r){t.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},{}],10:[function(e,t,r){function n(e){return t.exports=n=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},n(e)}t.exports=n},{}],11:[function(e,t,r){var n=e("./setPrototypeOf");t.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&n(e,t)}},{"./setPrototypeOf":21}],12:[function(e,t,r){t.exports=function(e){return e&&e.__esModule?e:{default:e}}},{}],13:[function(e,t,r){var n=e("../helpers/typeof");function i(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return i=function(){return e},e}t.exports=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==n(e)&&"function"!=typeof e)return{default:e};var t=i();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if(Object.prototype.hasOwnProperty.call(e,s)){var a=o?Object.getOwnPropertyDescriptor(e,s):null;a&&(a.get||a.set)?Object.defineProperty(r,s,a):r[s]=e[s]}return r.default=e,t&&t.set(e,r),r}},{"../helpers/typeof":24}],14:[function(e,t,r){t.exports=function(e){return-1!==Function.toString.call(e).indexOf("[native code]")}},{}],15:[function(e,t,r){t.exports=function(){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}}},{}],16:[function(e,t,r){t.exports=function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}},{}],17:[function(e,t,r){t.exports=function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,i=!1,o=void 0;try{for(var s,a=e[Symbol.iterator]();!(n=(s=a.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,o=e}finally{try{n||null==a.return||a.return()}finally{if(i)throw o}}return r}}},{}],18:[function(e,t,r){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],19:[function(e,t,r){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}},{}],20:[function(e,t,r){var n=e("../helpers/typeof"),i=e("./assertThisInitialized");t.exports=function(e,t){return!t||"object"!==n(t)&&"function"!=typeof t?i(e):t}},{"../helpers/typeof":24,"./assertThisInitialized":4}],21:[function(e,t,r){function n(e,r){return t.exports=n=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},n(e,r)}t.exports=n},{}],22:[function(e,t,r){var n=e("./arrayWithHoles"),i=e("./iterableToArrayLimit"),o=e("./unsupportedIterableToArray"),s=e("./nonIterableRest");t.exports=function(e,t){return n(e)||i(e,t)||o(e,t)||s()}},{"./arrayWithHoles":2,"./iterableToArrayLimit":17,"./nonIterableRest":18,"./unsupportedIterableToArray":25}],23:[function(e,t,r){var n=e("./arrayWithoutHoles"),i=e("./iterableToArray"),o=e("./unsupportedIterableToArray"),s=e("./nonIterableSpread");t.exports=function(e){return n(e)||i(e)||o(e)||s()}},{"./arrayWithoutHoles":3,"./iterableToArray":16,"./nonIterableSpread":19,"./unsupportedIterableToArray":25}],24:[function(e,t,r){function n(e){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?t.exports=n=function(e){return typeof e}:t.exports=n=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}t.exports=n},{}],25:[function(e,t,r){var n=e("./arrayLikeToArray");t.exports=function(e,t){if(e){if("string"==typeof e)return n(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}},{"./arrayLikeToArray":1}],26:[function(e,t,r){var n=e("./getPrototypeOf"),i=e("./setPrototypeOf"),o=e("./isNativeFunction"),s=e("./construct");function a(e){var r="function"==typeof Map?new Map:void 0;return t.exports=a=function(e){if(null===e||!o(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return s(e,arguments,n(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),i(t,e)},a(e)}t.exports=a},{"./construct":7,"./getPrototypeOf":10,"./isNativeFunction":14,"./setPrototypeOf":21}],27:[function(e,t,r){t.exports=e("regenerator-runtime")},{"regenerator-runtime":47}],28:[function(e,t,r){"use strict";for(var n=/[\\\"\x00-\x1F]/g,i={},o=0;o<32;++o)i[String.fromCharCode(o)]="\\U"+("0000"+o.toString(16)).slice(-4).toUpperCase();function s(e){return n.lastIndex=0,e.replace(n,(function(e){return i[e]}))}function a(e){switch(typeof e){case"string":return'"'+s(e)+'"';case"number":return isFinite(e)?e:"null";case"boolean":return e;case"object":return null===e?"null":Array.isArray(e)?function(e){for(var t="[",r="",n=0;n<e.length;++n)r+=t,t=",",r+=a(e[n]);return","!=t?"[]":r+"]"}(e):function(e){var t="{",r="",n=Object.keys(e);n.sort();for(var i=0;i<n.length;++i){var o=n[i];r+=t+'"'+s(o)+'":',t=",",r+=a(e[o])}return","!=t?"{}":r+"}"}(e);default:throw new Error("Cannot stringify: "+typeof e)}}i["\b"]="\\b",i["\t"]="\\t",i["\n"]="\\n",i["\f"]="\\f",i["\r"]="\\r",i['"']='\\"',i["\\"]="\\\\",t.exports={stringify:a}},{}],29:[function(e,t,r){"use strict";var n=e("safe-buffer").Buffer;t.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),r=0;r<t.length;r++)t[r]=255;for(var i=0;i<e.length;i++){var o=e.charAt(i),s=o.charCodeAt(0);if(255!==t[s])throw new TypeError(o+" is ambiguous");t[s]=i}var a=e.length,u=e.charAt(0),c=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function d(e){if("string"!=typeof e)throw new TypeError("Expected String");if(0===e.length)return n.alloc(0);var r=0;if(" "!==e[r]){for(var i=0,o=0;e[r]===u;)i++,r++;for(var s=(e.length-r)*c+1>>>0,l=new Uint8Array(s);e[r];){var d=t[e.charCodeAt(r)];if(255===d)return;for(var f=0,h=s-1;(0!==d||f<o)&&-1!==h;h--,f++)d+=a*l[h]>>>0,l[h]=d%256>>>0,d=d/256>>>0;if(0!==d)throw new Error("Non-zero carry");o=f,r++}if(" "!==e[r]){for(var p=s-o;p!==s&&0===l[p];)p++;var v=n.allocUnsafe(i+(s-p));v.fill(0,0,i);for(var g=i;p!==s;)v[g++]=l[p++];return v}}}return{encode:function(t){if((Array.isArray(t)||t instanceof Uint8Array)&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError("Expected Buffer");if(0===t.length)return"";for(var r=0,i=0,o=0,s=t.length;o!==s&&0===t[o];)o++,r++;for(var c=(s-o)*l+1>>>0,d=new Uint8Array(c);o!==s;){for(var f=t[o],h=0,p=c-1;(0!==f||h<i)&&-1!==p;p--,h++)f+=256*d[p]>>>0,d[p]=f%a>>>0,f=f/a>>>0;if(0!==f)throw new Error("Non-zero carry");i=h,o++}for(var v=c-i;v!==c&&0===d[v];)v++;for(var g=u.repeat(r);v<c;++v)g+=e.charAt(d[v]);return g},decodeUnsafe:d,decode:function(e){var t=d(e);if(t)return t;throw new Error("Non-base"+a+" character")}}}},{"safe-buffer":48}],30:[function(e,t,r){"use strict";r.byteLength=function(e){var t=c(e),r=t[0],n=t[1];return 3*(r+n)/4-n},r.toByteArray=function(e){var t,r,n=c(e),s=n[0],a=n[1],u=new o(function(e,t,r){return 3*(t+r)/4-r}(0,s,a)),l=0,d=a>0?s-4:s;for(r=0;r<d;r+=4)t=i[e.charCodeAt(r)]<<18|i[e.charCodeAt(r+1)]<<12|i[e.charCodeAt(r+2)]<<6|i[e.charCodeAt(r+3)],u[l++]=t>>16&255,u[l++]=t>>8&255,u[l++]=255&t;2===a&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,u[l++]=255&t);1===a&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,u[l++]=t>>8&255,u[l++]=255&t);return u},r.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],s=0,a=r-i;s<a;s+=16383)o.push(l(e,s,s+16383>a?a:s+16383));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a<u;++a)n[a]=s[a],i[s.charCodeAt(a)]=a;function c(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function l(e,t,r){for(var i,o,s=[],a=t;a<r;a+=3)i=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),s.push(n[(o=i)>>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},{}],31:[function(e,t,r){var n,i;n=this,i=function(){var e=XMLHttpRequest;if(!e)throw new Error("missing XMLHttpRequest");function t(o,s){if("function"!=typeof s)throw new Error("Bad callback given: "+s);if(!o)throw new Error("No options given");var a=o.onResponse;if((o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o))).onResponse=a,o.verbose&&(t.log=function(){var e,t,r={},o=["trace","debug","info","warn","error"];for(t=0;t<o.length;t++)r[e=o[t]]=n,"undefined"!=typeof console&&console&&console[e]&&(r[e]=i(console,e));return r}()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var u=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],c=0;c<u.length;c++)if(o[u[c]])throw new Error("options."+u[c]+" is not supported");if(o.callback=s,o.method=o.method||"GET",o.headers=o.headers||{},o.body=o.body||null,o.timeout=o.timeout||t.DEFAULT_TIMEOUT,o.headers.host)throw new Error("Options.headers.host is not supported");o.json&&(o.headers.accept=o.headers.accept||"application/json","GET"!==o.method&&(o.headers["content-type"]="application/json"),"boolean"!=typeof o.json?o.body=JSON.stringify(o.json):"string"!=typeof o.body&&(o.body=JSON.stringify(o.body)));var l=function(e){var t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t.join("&")};if(o.qs){var d="string"==typeof o.qs?o.qs:l(o.qs);-1!==o.uri.indexOf("?")?o.uri=o.uri+"&"+d:o.uri=o.uri+"?"+d}if(o.form){if("string"==typeof o.form)throw"form name unsupported";if("POST"===o.method){var f=(o.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(o.headers["content-type"]=f,f){case"application/x-www-form-urlencoded":o.body=l(o.form).replace(/%20/g,"+");break;case"multipart/form-data":var h=function(e){var t={};t.boundry="-------------------------------"+Math.floor(1e9*Math.random());var r=[];for(var n in e)e.hasOwnProperty(n)&&r.push("--"+t.boundry+'\nContent-Disposition: form-data; name="'+n+'"\n\n'+e[n]+"\n");return r.push("--"+t.boundry+"--"),t.body=r.join(""),t.length=t.body.length,t.type="multipart/form-data; boundary="+t.boundry,t}(o.form);o.body=h.body,o.headers["content-type"]=h.type;break;default:throw new Error("unsupported encoding:"+f)}}}return o.onResponse=o.onResponse||n,!0===o.onResponse&&(o.onResponse=s,o.callback=n),!o.headers.authorization&&o.auth&&(o.headers.authorization="Basic "+function(e){var t,r,n,i,o,s,a,u,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l=0,d=0,f="",h=[];if(!e)return e;do{t=e.charCodeAt(l++),r=e.charCodeAt(l++),n=e.charCodeAt(l++),i=(u=t<<16|r<<8|n)>>18&63,o=u>>12&63,s=u>>6&63,a=63&u,h[d++]=c.charAt(i)+c.charAt(o)+c.charAt(s)+c.charAt(a)}while(l<e.length);switch(f=h.join(""),e.length%3){case 1:f=f.slice(0,-2)+"==";break;case 2:f=f.slice(0,-1)+"="}return f}(o.auth.username+":"+o.auth.password)),function(n){var i=new e,o=!1,s=function(e){var t,r=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{t=location.href}catch(e){(t=document.createElement("a")).href="",t=t.href}var n=r.exec(t.toLowerCase())||[],i=r.exec(e.toLowerCase());return!(!i||i[1]==n[1]&&i[2]==n[2]&&(i[3]||("http:"===i[1]?80:443))==(n[3]||("http:"===n[1]?80:443)))}(n.uri),a="withCredentials"in i;if(r+=1,i.seq_id=r,i.id=r+": "+n.method+" "+n.uri,i._id=i.id,s&&!a){var u=new Error("Browser does not support cross-origin request: "+n.uri);return u.cors="unsupported",n.callback(u,i)}i.timeoutTimer=setTimeout((function(){o=!0;var e=new Error("ETIMEDOUT");return e.code="ETIMEDOUT",e.duration=n.timeout,t.log.error("Timeout",{id:i._id,milliseconds:n.timeout}),n.callback(e,i)}),n.timeout);var c={response:!1,loading:!1,end:!1};return i.onreadystatechange=function(r){if(o)return t.log.debug("Ignoring timed out state change",{state:i.readyState,id:i.id});if(t.log.debug("State change",{state:i.readyState,id:i.id,timed_out:o}),i.readyState===e.OPENED)for(var s in t.log.debug("Request started",{id:i.id}),n.headers)i.setRequestHeader(s,n.headers[s]);else i.readyState===e.HEADERS_RECEIVED?l():i.readyState===e.LOADING?(l(),d()):i.readyState===e.DONE&&(l(),d(),function(){if(c.end)return;if(c.end=!0,t.log.debug("Request done",{id:i.id}),i.body=i.responseText,n.json)try{i.body=JSON.parse(i.responseText)}catch(e){return n.callback(e,i)}n.callback(null,i,i.body)}())},i.open(n.method,n.uri,!0),s&&(i.withCredentials=!!n.withCredentials),i.send(n.body),i;function l(){if(!c.response){if(c.response=!0,t.log.debug("Got response",{id:i.id,status:i.status}),clearTimeout(i.timeoutTimer),i.statusCode=i.status,s&&0==i.statusCode){var e=new Error("CORS request rejected: "+n.uri);return e.cors="rejected",c.loading=!0,c.end=!0,n.callback(e,i)}n.onResponse(null,i)}}function d(){c.loading||(c.loading=!0,t.log.debug("Response body loading",{id:i.id}))}}(o)}t.log={trace:n,debug:n,info:n,warn:n,error:n};var r=0;function n(){}function i(e,t){return function(r,n){return"object"==typeof n&&(r+=" "+JSON.stringify(n)),e[t].call(e,r)}}return t.withCredentials=!1,t.DEFAULT_TIMEOUT=18e4,t.defaults=function(e,r){var n=function(t){return function(r,n){for(var i in r="string"==typeof r?{uri:r}:JSON.parse(JSON.stringify(r)),e)void 0===r[i]&&(r[i]=e[i]);return t(r,n)}},i=n(t);return i.get=n(t.get),i.post=n(t.post),i.put=n(t.put),i.head=n(t.head),i},["get","put","post","head"].forEach((function(e){var r=e.toUpperCase();t[e.toLowerCase()]=function(e){"string"==typeof e?e={method:r,uri:e}:(e=JSON.parse(JSON.stringify(e))).method=r;var n=[e].concat(Array.prototype.slice.apply(arguments,[1]));return t.apply(this,n)}})),t.couch=function(e,r){return"string"==typeof e&&(e={uri:e}),e.json=!0,e.body&&(e.json=e.body),delete e.body,r=r||n,t(e,(function(e,t,n){if(e)return r(e,t,n);if((t.statusCode<200||t.statusCode>299)&&n.error){for(var i in e=new Error("CouchDB error: "+(n.error.reason||n.error.error)),n)e[i]=n[i];return r(e,t,n)}return r(e,t,n)}))},t},"function"==typeof define&&define.amd?define([],i):"object"==typeof r?t.exports=i():n.returnExports=i()},{}],32:[function(e,t,r){(function(e){!function(n){var i="object"==typeof r&&r&&!r.nodeType&&r,o="object"==typeof t&&t&&!t.nodeType&&t,s="object"==typeof e&&e;s.global!==s&&s.window!==s&&s.self!==s||(n=s);var a,u,c=2147483647,l=/^xn--/,d=/[^\x20-\x7E]/,f=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},p=Math.floor,v=String.fromCharCode;function g(e){throw new RangeError(h[e])}function y(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function m(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),n+y((e=e.replace(f,".")).split("."),t).join(".")}function _(e){for(var t,r,n=[],i=0,o=e.length;i<o;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<o?56320==(64512&(r=e.charCodeAt(i++)))?n.push(((1023&t)<<10)+(1023&r)+65536):(n.push(t),i--):n.push(t);return n}function b(e){return y(e,(function(e){var t="";return e>65535&&(t+=v((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=v(e)})).join("")}function k(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function S(e,t,r){var n=0;for(e=r?p(e/700):e>>1,e+=p(e/t);e>455;n+=36)e=p(e/35);return p(n+36*e/(e+38))}function E(e){var t,r,n,i,o,s,a,u,l,d,f,h=[],v=e.length,y=0,m=128,_=72;for((r=e.lastIndexOf("-"))<0&&(r=0),n=0;n<r;++n)e.charCodeAt(n)>=128&&g("not-basic"),h.push(e.charCodeAt(n));for(i=r>0?r+1:0;i<v;){for(o=y,s=1,a=36;i>=v&&g("invalid-input"),((u=(f=e.charCodeAt(i++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:36)>=36||u>p((c-y)/s))&&g("overflow"),y+=u*s,!(u<(l=a<=_?1:a>=_+26?26:a-_));a+=36)s>p(c/(d=36-l))&&g("overflow"),s*=d;_=S(y-o,t=h.length+1,0==o),p(y/t)>c-m&&g("overflow"),m+=p(y/t),y%=t,h.splice(y++,0,m)}return b(h)}function w(e){var t,r,n,i,o,s,a,u,l,d,f,h,y,m,b,E=[];for(h=(e=_(e)).length,t=128,r=0,o=72,s=0;s<h;++s)(f=e[s])<128&&E.push(v(f));for(n=i=E.length,i&&E.push("-");n<h;){for(a=c,s=0;s<h;++s)(f=e[s])>=t&&f<a&&(a=f);for(a-t>p((c-r)/(y=n+1))&&g("overflow"),r+=(a-t)*y,t=a,s=0;s<h;++s)if((f=e[s])<t&&++r>c&&g("overflow"),f==t){for(u=r,l=36;!(u<(d=l<=o?1:l>=o+26?26:l-o));l+=36)b=u-d,m=36-d,E.push(v(k(d+b%m,0))),u=p(b/m);E.push(v(k(u,0))),o=S(r,y,n==i),r=0,++n}++r,++t}return E.join("")}if(a={version:"1.4.1",ucs2:{decode:_,encode:b},decode:E,encode:w,toASCII:function(e){return m(e,(function(e){return d.test(e)?"xn--"+w(e):e}))},toUnicode:function(e){return m(e,(function(e){return l.test(e)?E(e.slice(4).toLowerCase()):e}))}},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",(function(){return a}));else if(i&&o)if(t.exports==i)o.exports=a;else for(u in a)a.hasOwnProperty(u)&&(i[u]=a[u]);else n.punycode=a}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],33:[function(e,t,r){var n=e("base-x");t.exports=n("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},{"base-x":29}],34:[function(e,t,r){(function(t){
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/
"use strict";var n=e("base64-js"),i=e("ieee754");r.Buffer=t,r.SlowBuffer=function(e){+e!=e&&(e=0);return t.alloc(+e)},r.INSPECT_MAX_BYTES=50;function o(e){if(e>2147483647)throw new RangeError('The value "'+e+'" is invalid for option "size"');var r=new Uint8Array(e);return r.__proto__=t.prototype,r}function t(e,t,r){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,r)}function s(e,r,n){if("string"==typeof e)return function(e,r){"string"==typeof r&&""!==r||(r="utf8");if(!t.isEncoding(r))throw new TypeError("Unknown encoding: "+r);var n=0|d(e,r),i=o(n),s=i.write(e,r);s!==n&&(i=i.slice(0,s));return i}(e,r);if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(N(e,ArrayBuffer)||e&&N(e.buffer,ArrayBuffer))return function(e,r,n){if(r<0||e.byteLength<r)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<r+(n||0))throw new RangeError('"length" is outside of buffer bounds');var i;i=void 0===r&&void 0===n?new Uint8Array(e):void 0===n?new Uint8Array(e,r):new Uint8Array(e,r,n);return i.__proto__=t.prototype,i}(e,r,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return t.from(i,r,n);var s=function(e){if(t.isBuffer(e)){var r=0|l(e.length),n=o(r);return 0===n.length||e.copy(n,0,0,r),n}if(void 0!==e.length)return"number"!=typeof e.length||B(e.length)?o(0):c(e);if("Buffer"===e.type&&Array.isArray(e.data))return c(e.data)}(e);if(s)return s;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return t.from(e[Symbol.toPrimitive]("string"),r,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function a(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return a(e),o(e<0?0:0|l(e))}function c(e){for(var t=e.length<0?0:0|l(e.length),r=o(t),n=0;n<t;n+=1)r[n]=255&e[n];return r}function l(e){if(e>=2147483647)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+2147483647..toString(16)+" bytes");return 0|e}function d(e,r){if(t.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||N(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 '+typeof e);var n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;for(var o=!1;;)switch(r){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return K(e).length;default:if(o)return i?-1:U(e).length;r=(""+r).toLowerCase(),o=!0}}function f(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return E(this,t,r);case"ascii":return w(this,t,r);case"latin1":case"binary":return I(this,t,r);case"base64":return S(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function h(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function p(e,r,n,i,o){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),B(n=+n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof r&&(r=t.from(r,i)),t.isBuffer(r))return 0===r.length?-1:v(e,r,n,i,o);if("number"==typeof r)return r&=255,"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):v(e,[r],n,i,o);throw new TypeError("val must be string, number or Buffer")}function v(e,t,r,n,i){var o,s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var l=-1;for(o=r;o<a;o++)if(c(e,o)===c(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===u)return l*s}else-1!==l&&(o-=o-l),l=-1}else for(r+u>a&&(r=a-u),o=r;o>=0;o--){for(var d=!0,f=0;f<u;f++)if(c(e,o+f)!==c(t,f)){d=!1;break}if(d)return o}return-1}function g(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var o=t.length;n>o/2&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(t.substr(2*s,2),16);if(B(a))return s;e[r+s]=a}return s}function y(e,t,r,n){return q(U(t,e.length-r),e,r,n)}function m(e,t,r,n){return q(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function _(e,t,r,n){return m(e,t,r,n)}function b(e,t,r,n){return q(K(t),e,r,n)}function k(e,t,r,n){return q(function(e,t){for(var r,n,i,o=[],s=0;s<e.length&&!((t-=2)<0);++s)r=e.charCodeAt(s),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function S(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function E(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var o,s,a,u,c=e[i],l=null,d=c>239?4:c>223?3:c>191?2:1;if(i+d<=r)switch(d){case 1:c<128&&(l=c);break;case 2:128==(192&(o=e[i+1]))&&(u=(31&c)<<6|63&o)>127&&(l=u);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,d=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=d}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=4096));return r}(n)}r.kMaxLength=2147483647,t.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}}(),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,r){return s(e,t,r)},t.prototype.__proto__=Uint8Array.prototype,t.__proto__=Uint8Array,t.alloc=function(e,t,r){return function(e,t,r){return a(e),e<=0?o(e):void 0!==t?"string"==typeof r?o(e).fill(t,r):o(e).fill(t):o(e)}(e,t,r)},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,r){if(N(e,Uint8Array)&&(e=t.from(e,e.offset,e.byteLength)),N(r,Uint8Array)&&(r=t.from(r,r.offset,r.byteLength)),!t.isBuffer(e)||!t.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;for(var n=e.length,i=r.length,o=0,s=Math.min(n,i);o<s;++o)if(e[o]!==r[o]){n=e[o],i=r[o];break}return n<i?-1:i<n?1:0},t.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},t.concat=function(e,r){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return t.alloc(0);var n;if(void 0===r)for(r=0,n=0;n<e.length;++n)r+=e[n].length;var i=t.allocUnsafe(r),o=0;for(n=0;n<e.length;++n){var s=e[n];if(N(s,Uint8Array)&&(s=t.from(s)),!t.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(i,o),o+=s.length}return i},t.byteLength=d,t.prototype._isBuffer=!0,t.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)h(this,t,t+1);return this},t.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)h(this,t,t+3),h(this,t+1,t+2);return this},t.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)h(this,t,t+7),h(this,t+1,t+6),h(this,t+2,t+5),h(this,t+3,t+4);return this},t.prototype.toString=function(){var e=this.length;return 0===e?"":0===arguments.length?E(this,0,e):f.apply(this,arguments)},t.prototype.toLocaleString=t.prototype.toString,t.prototype.equals=function(e){if(!t.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===t.compare(this,e)},t.prototype.inspect=function(){var e="",t=r.INSPECT_MAX_BYTES;return e=this.toString("hex",0,t).replace(/(.{2})/g,"$1 ").trim(),this.length>t&&(e+=" ... "),"<Buffer "+e+">"},t.prototype.compare=function(e,r,n,i,o){if(N(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 '+typeof e);if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===o&&(o=this.length),r<0||n>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&r>=n)return 0;if(i>=o)return-1;if(r>=n)return 1;if(this===e)return 0;for(var s=(o>>>=0)-(i>>>=0),a=(n>>>=0)-(r>>>=0),u=Math.min(s,a),c=this.slice(i,o),l=e.slice(r,n),d=0;d<u;++d)if(c[d]!==l[d]){s=c[d],a=l[d];break}return s<a?-1:a<s?1:0},t.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},t.prototype.indexOf=function(e,t,r){return p(this,e,t,r,!0)},t.prototype.lastIndexOf=function(e,t,r){return p(this,e,t,r,!1)},t.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return g(this,e,t,r);case"utf8":case"utf-8":return y(this,e,t,r);case"ascii":return m(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return b(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function w(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function I(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function R(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",o=t;o<r;++o)i+=M(e[o]);return i}function T(e,t,r){for(var n=e.slice(t,r),i="",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function C(e,r,n,i,o,s){if(!t.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>o||r<s)throw new RangeError('"value" argument is out of bounds');if(n+i>e.length)throw new RangeError("Index out of range")}function O(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function A(e,t,r,n,o){return t=+t,r>>>=0,o||O(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function D(e,t,r,n,o){return t=+t,r>>>=0,o||O(e,0,r,8),i.write(e,t,r,n,52,8),r+8}t.prototype.slice=function(e,r){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r<e&&(r=e);var i=this.subarray(e,r);return i.__proto__=t.prototype,i},t.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n},t.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},t.prototype.readUInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),this[e]},t.prototype.readUInt16LE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]|this[e+1]<<8},t.prototype.readUInt16BE=function(e,t){return e>>>=0,t||x(e,2,this.length),this[e]<<8|this[e+1]},t.prototype.readUInt32LE=function(e,t){return e>>>=0,t||x(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||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},t.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o<t&&(i*=256);)n+=this[e+o]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},t.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||x(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},t.prototype.readInt8=function(e,t){return e>>>=0,t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},t.prototype.readInt16LE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(e,t){e>>>=0,t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(e,t){return e>>>=0,t||x(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||x(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||x(e,4,this.length),i.read(this,e,!0,23,4)},t.prototype.readFloatBE=function(e,t){return e>>>=0,t||x(e,4,this.length),i.read(this,e,!1,23,4)},t.prototype.readDoubleLE=function(e,t){return e>>>=0,t||x(e,8,this.length),i.read(this,e,!0,52,8)},t.prototype.readDoubleBE=function(e,t){return e>>>=0,t||x(e,8,this.length),i.read(this,e,!1,52,8)},t.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},t.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},t.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,255,0),this[t]=255&e,t+1},t.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(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,r){return e=+e,t>>>=0,r||C(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,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);C(this,e,t,r,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o<r&&(s*=256);)e<0&&0===a&&0!==this[t+o-1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},t.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var i=Math.pow(2,8*r-1);C(this,e,t,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},t.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},t.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(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,r){return e=+e,t>>>=0,r||C(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,r){return A(this,e,t,!0,r)},t.prototype.writeFloatBE=function(e,t,r){return A(this,e,t,!1,r)},t.prototype.writeDoubleLE=function(e,t,r){return D(this,e,t,!0,r)},t.prototype.writeDoubleBE=function(e,t,r){return D(this,e,t,!1,r)},t.prototype.copy=function(e,r,n,i){if(!t.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),r>=e.length&&(r=e.length),r||(r=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===e.length||0===this.length)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-r<i-n&&(i=e.length-r+n);var o=i-n;if(this===e&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(r,n,i);else if(this===e&&n<r&&r<i)for(var s=o-1;s>=0;--s)e[s+r]=this[s+n];else Uint8Array.prototype.set.call(e,this.subarray(n,i),r);return o},t.prototype.fill=function(e,r,n,i){if("string"==typeof e){if("string"==typeof r?(i=r,r=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!t.isEncoding(i))throw new TypeError("Unknown encoding: "+i);if(1===e.length){var o=e.charCodeAt(0);("utf8"===i&&o<128||"latin1"===i)&&(e=o)}}else"number"==typeof e&&(e&=255);if(r<0||this.length<r||this.length<n)throw new RangeError("Out of range index");if(n<=r)return this;var s;if(r>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(s=r;s<n;++s)this[s]=e;else{var a=t.isBuffer(e)?e:t.from(e,i),u=a.length;if(0===u)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<n-r;++s)this[s+r]=a[s%u]}return this};var P=/[^+/0-9A-Za-z-_]/g;function M(e){return e<16?"0"+e.toString(16):e.toString(16)}function U(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function K(e){return n.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(P,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function N(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}}).call(this,e("buffer").Buffer)},{"base64-js":30,buffer:34,ieee754:37}],35:[function(e,t,r){
/*!
* content-type
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*/
"use strict";var n=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,i=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,o=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,s=/\\([\u000b\u0020-\u00ff])/g,a=/([\\"])/g,u=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;function c(e){var t=String(e);if(o.test(t))return t;if(t.length>0&&!i.test(t))throw new TypeError("invalid parameter value");return'"'+t.replace(a,"\\$1")+'"'}function l(e){this.parameters=Object.create(null),this.type=e}r.format=function(e){if(!e||"object"!=typeof e)throw new TypeError("argument obj is required");var t=e.parameters,r=e.type;if(!r||!u.test(r))throw new TypeError("invalid type");var n=r;if(t&&"object"==typeof t)for(var i,s=Object.keys(t).sort(),a=0;a<s.length;a++){if(i=s[a],!o.test(i))throw new TypeError("invalid parameter name");n+="; "+i+"="+c(t[i])}return n},r.parse=function(e){if(!e)throw new TypeError("argument string is required");var t="object"==typeof e?function(e){var t;"function"==typeof e.getHeader?t=e.getHeader("content-type"):"object"==typeof e.headers&&(t=e.headers&&e.headers["content-type"]);if("string"!=typeof t)throw new TypeError("content-type header is missing from object");return t}(e):e;if("string"!=typeof t)throw new TypeError("argument string is required to be a string");var r=t.indexOf(";"),i=-1!==r?t.substr(0,r).trim():t.trim();if(!u.test(i))throw new TypeError("invalid media type");var o=new l(i.toLowerCase());if(-1!==r){var a,c,d;for(n.lastIndex=r;c=n.exec(t);){if(c.index!==r)throw new TypeError("invalid parameter format");r+=c[0].length,a=c[1].toLowerCase(),'"'===(d=c[2])[0]&&(d=d.substr(1,d.length-2).replace(s,"$1")),o.parameters[a]=d}if(r!==t.length)throw new TypeError("invalid parameter format")}return o}},{}],36:[function(e,t,r){var n=Object.create||function(e){var t=function(){};return t.prototype=e,new t},i=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return r},o=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function s(){this._events&&Object.prototype.hasOwnProperty.call(this,"_events")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}t.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._maxListeners=void 0;var a,u=10;try{var c={};Object.defineProperty&&Object.defineProperty(c,"x",{value:0}),a=0===c.x}catch(e){a=!1}function l(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function d(e,t,r){if(t)e.call(r);else for(var n=e.length,i=k(e,n),o=0;o<n;++o)i[o].call(r)}function f(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,o=k(e,i),s=0;s<i;++s)o[s].call(r,n)}function h(e,t,r,n,i){if(t)e.call(r,n,i);else for(var o=e.length,s=k(e,o),a=0;a<o;++a)s[a].call(r,n,i)}function p(e,t,r,n,i,o){if(t)e.call(r,n,i,o);else for(var s=e.length,a=k(e,s),u=0;u<s;++u)a[u].call(r,n,i,o)}function v(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,o=k(e,i),s=0;s<i;++s)o[s].apply(r,n)}function g(e,t,r,i){var o,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=n(null),e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(o=l(e))&&o>0&&a.length>o){a.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+a.length+' "'+String(t)+'" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=a.length,"object"==typeof console&&console.warn&&console.warn("%s: %s",u.name,u.message)}}else a=s[t]=r,++e._eventsCount;return e}function y(){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;t<e.length;++t)e[t]=arguments[t];this.listener.apply(this.target,e)}}function m(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=o.call(y,n);return i.listener=r,n.wrapFn=i,i}function _(e,t,r){var n=e._events;if(!n)return[];var i=n[t];return i?"function"==typeof i?r?[i.listener||i]:[i]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(i):k(i,i.length):[]}function b(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function k(e,t){for(var r=new Array(t),n=0;n<t;++n)r[n]=e[n];return r}a?Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return u},set:function(e){if("number"!=typeof e||e<0||e!=e)throw new TypeError('"defaultMaxListeners" must be a positive number');u=e}}):s.defaultMaxListeners=u,s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return l(this)},s.prototype.emit=function(e){var t,r,n,i,o,s,a="error"===e;if(s=this._events)a=a&&null==s.error;else if(!a)return!1;if(a){if(arguments.length>1&&(t=arguments[1]),t instanceof Error)throw t;var u=new Error('Unhandled "error" event. ('+t+")");throw u.context=t,u}if(!(r=s[e]))return!1;var c="function"==typeof r;switch(n=arguments.length){case 1:d(r,c,this);break;case 2:f(r,c,this,arguments[1]);break;case 3:h(r,c,this,arguments[1],arguments[2]);break;case 4:p(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),o=1;o<n;o++)i[o-1]=arguments[o];v(r,c,this,i)}return!0},s.prototype.addListener=function(e,t){return g(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return g(this,e,t,!0)},s.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,m(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,m(this,e,t)),this},s.prototype.removeListener=function(e,t){var r,i,o,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=n(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(o=-1,s=r.length-1;s>=0;s--)if(r[s]===t||r[s].listener===t){a=r[s].listener,o=s;break}if(o<0)return this;0===o?r.shift():function(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}(r,o),1===r.length&&(i[e]=r[0]),i.removeListener&&this.emit("removeListener",e,a||t)}return this},s.prototype.removeAllListeners=function(e){var t,r,o;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=n(null),this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=n(null):delete r[e]),this;if(0===arguments.length){var s,a=i(r);for(o=0;o<a.length;++o)"removeListener"!==(s=a[o])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=n(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)for(o=t.length-1;o>=0;o--)this.removeListener(e,t[o]);return this},s.prototype.listeners=function(e){return _(this,e,!0)},s.prototype.rawListeners=function(e){return _(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):b.call(e,t)},s.prototype.listenerCount=b,s.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],37:[function(e,t,r){r.read=function(e,t,r,n,i){var o,s,a=8*i-n-1,u=(1<<a)-1,c=u>>1,l=-7,d=r?i-1:0,f=r?-1:1,h=e[t+d];for(d+=f,o=h&(1<<-l)-1,h>>=-l,l+=a;l>0;o=256*o+e[t+d],d+=f,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=n;l>0;s=256*s+e[t+d],d+=f,l-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,n),o-=c}return(h?-1:1)*s*Math.pow(2,o-n)},r.write=function(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<<c)-1,d=l>>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:o-1,p=n?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),(t+=s+d>=1?f/u:f*Math.pow(2,1-d))*u>=2&&(s++,u/=2),s+d>=l?(a=0,s=l):s+d>=1?(a=(t*u-1)*Math.pow(2,i),s+=d):(a=t*Math.pow(2,d-1)*Math.pow(2,i),s=0));i>=8;e[r+h]=255&a,h+=p,a/=256,i-=8);for(s=s<<i|a,c+=i;c>0;e[r+h]=255&s,h+=p,s/=256,c-=8);e[r+h-p]|=128*v}},{}],38:[function(e,t,r){!function(e,r){"use strict";"function"==typeof define&&define.amd?define(r):"object"==typeof t&&t.exports?t.exports=r():e.log=r()}(this,(function(){"use strict";var e=function(){},t="undefined"!=typeof window&&void 0!==window.navigator&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function n(e,t){var r=e[t];if("function"==typeof r.bind)return r.bind(e);try{return Function.prototype.bind.call(r,e)}catch(t){return function(){return Function.prototype.apply.apply(r,[e,arguments])}}}function i(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(r){return"debug"===r&&(r="log"),"undefined"!=typeof console&&("trace"===r&&t?i:void 0!==console[r]?n(console,r):void 0!==console.log?n(console,"log"):e)}function s(t,n){for(var i=0;i<r.length;i++){var o=r[i];this[o]=i<t?e:this.methodFactory(o,t,n)}this.log=this.debug}function a(e,t,r){return function(){"undefined"!=typeof console&&(s.call(this,t,r),this[e].apply(this,arguments))}}function u(e,t,r){return o(e)||a.apply(this,arguments)}function c(e,t,n){var i,o=this,a="loglevel";function c(){var e;if("undefined"!=typeof window){try{e=window.localStorage[a]}catch(e){}if(void 0===e)try{var t=window.document.cookie,r=t.indexOf(encodeURIComponent(a)+"=");-1!==r&&(e=/^([^;]+)/.exec(t.slice(r))[1])}catch(e){}return void 0===o.levels[e]&&(e=void 0),e}}e&&(a+=":"+e),o.name=e,o.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},o.methodFactory=n||u,o.getLevel=function(){return i},o.setLevel=function(t,n){if("string"==typeof t&&void 0!==o.levels[t.toUpperCase()]&&(t=o.levels[t.toUpperCase()]),!("number"==typeof t&&t>=0&&t<=o.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(i=t,!1!==n&&function(e){var t=(r[e]||"silent").toUpperCase();if("undefined"!=typeof window){try{return void(window.localStorage[a]=t)}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"="+t+";"}catch(e){}}}(t),s.call(o,t,e),"undefined"==typeof console&&t<o.levels.SILENT)return"No console available for logging"},o.setDefaultLevel=function(e){c()||o.setLevel(e,!1)},o.enableAll=function(e){o.setLevel(o.levels.TRACE,e)},o.disableAll=function(e){o.setLevel(o.levels.SILENT,e)};var l=c();null==l&&(l=null==t?"WARN":t),o.setLevel(l,!1)}var l=new c,d={};l.getLogger=function(e){if("string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=d[e];return t||(t=d[e]=new c(e,l.getLevel(),l.methodFactory)),t};var f="undefined"!=typeof window?window.log:void 0;return l.noConflict=function(){return"undefined"!=typeof window&&window.log===l&&(window.log=f),l},l.getLoggers=function(){return d},l}))},{}],39:[function(e,t,r){"use strict";var n=String.prototype.replace,i=/%20/g,o=e("./utils"),s={RFC1738:"RFC1738",RFC3986:"RFC3986"};t.exports=o.assign({default:s.RFC3986,formatters:{RFC1738:function(e){return n.call(e,i,"+")},RFC3986:function(e){return String(e)}}},s)},{"./utils":43}],40:[function(e,t,r){"use strict";var n=e("./stringify"),i=e("./parse"),o=e("./formats");t.exports={formats:o,parse:i,stringify:n}},{"./formats":39,"./parse":41,"./stringify":42}],41:[function(e,t,r){"use strict";var n=e("./utils"),i=Object.prototype.hasOwnProperty,o=Array.isArray,s={allowDots:!1,allowPrototypes:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:n.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},a=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},u=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},c=function(e,t,r,n){if(e){var o=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(o),c=a?o.slice(0,a.index):o,l=[];if(c){if(!r.plainObjects&&i.call(Object.prototype,c)&&!r.allowPrototypes)return;l.push(c)}for(var d=0;r.depth>0&&null!==(a=s.exec(o))&&d<r.depth;){if(d+=1,!r.plainObjects&&i.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;l.push(a[1])}return a&&l.push("["+o.slice(a.index)+"]"),function(e,t,r,n){for(var i=n?t:u(t,r),o=e.length-1;o>=0;--o){var s,a=e[o];if("[]"===a&&r.parseArrays)s=[].concat(i);else{s=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,l=parseInt(c,10);r.parseArrays||""!==c?!isNaN(l)&&a!==c&&String(l)===c&&l>=0&&r.parseArrays&&l<=r.arrayLimit?(s=[])[l]=i:s[c]=i:s={0:i}}i=s}return i}(l,t,r,n)}};t.exports=function(e,t){var r=function(e){if(!e)return s;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?s.charset:e.charset;return{allowDots:void 0===e.allowDots?s.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:s.allowPrototypes,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:s.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:s.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:s.comma,decoder:"function"==typeof e.decoder?e.decoder:s.decoder,delimiter:"string"==typeof e.delimiter||n.isRegExp(e.delimiter)?e.delimiter:s.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:s.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:s.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:s.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:s.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:s.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var l="string"==typeof e?function(e,t){var r,c={},l=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,d=t.parameterLimit===1/0?void 0:t.parameterLimit,f=l.split(t.delimiter,d),h=-1,p=t.charset;if(t.charsetSentinel)for(r=0;r<f.length;++r)0===f[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===f[r]?p="utf-8":"utf8=%26%2310003%3B"===f[r]&&(p="iso-8859-1"),h=r,r=f.length);for(r=0;r<f.length;++r)if(r!==h){var v,g,y=f[r],m=y.indexOf("]="),_=-1===m?y.indexOf("="):m+1;-1===_?(v=t.decoder(y,s.decoder,p,"key"),g=t.strictNullHandling?null:""):(v=t.decoder(y.slice(0,_),s.decoder,p,"key"),g=n.maybeMap(u(y.slice(_+1),t),(function(e){return t.decoder(e,s.decoder,p,"value")}))),g&&t.interpretNumericEntities&&"iso-8859-1"===p&&(g=a(g)),y.indexOf("[]=")>-1&&(g=o(g)?[g]:g),i.call(c,v)?c[v]=n.combine(c[v],g):c[v]=g}return c}(e,r):e,d=r.plainObjects?Object.create(null):{},f=Object.keys(l),h=0;h<f.length;++h){var p=f[h],v=c(p,l[p],r,"string"==typeof e);d=n.merge(d,v,r)}return n.compact(d)}},{"./utils":43}],42:[function(e,t,r){"use strict";var n=e("./utils"),i=e("./formats"),o=Object.prototype.hasOwnProperty,s={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},a=Array.isArray,u=Array.prototype.push,c=function(e,t){u.apply(e,a(t)?t:[t])},l=Date.prototype.toISOString,d=i.default,f={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:n.encode,encodeValuesOnly:!1,format:d,formatter:i.formatters[d],indices:!1,serializeDate:function(e){return l.call(e)},skipNulls:!1,strictNullHandling:!1},h=function e(t,r,i,o,s,u,l,d,h,p,v,g,y){var m,_=t;if("function"==typeof l?_=l(r,_):_ instanceof Date?_=p(_):"comma"===i&&a(_)&&(_=n.maybeMap(_,(function(e){return e instanceof Date?p(e):e})).join(",")),null===_){if(o)return u&&!g?u(r,f.encoder,y,"key"):r;_=""}if("string"==typeof(m=_)||"number"==typeof m||"boolean"==typeof m||"symbol"==typeof m||"bigint"==typeof m||n.isBuffer(_))return u?[v(g?r:u(r,f.encoder,y,"key"))+"="+v(u(_,f.encoder,y,"value"))]:[v(r)+"="+v(String(_))];var b,k=[];if(void 0===_)return k;if(a(l))b=l;else{var S=Object.keys(_);b=d?S.sort(d):S}for(var E=0;E<b.length;++E){var w=b[E],I=_[w];if(!s||null!==I){var R=a(_)?"function"==typeof i?i(r,w):r:r+(h?"."+w:"["+w+"]");c(k,e(I,R,i,o,s,u,l,d,h,p,v,g,y))}}return k};t.exports=function(e,t){var r,n=e,u=function(e){if(!e)return f;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||f.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=i.default;if(void 0!==e.format){if(!o.call(i.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var n=i.formatters[r],s=f.filter;return("function"==typeof e.filter||a(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:f.addQueryPrefix,allowDots:void 0===e.allowDots?f.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:f.charsetSentinel,delimiter:void 0===e.delimiter?f.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:f.encode,encoder:"function"==typeof e.encoder?e.encoder:f.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:f.encodeValuesOnly,filter:s,formatter:n,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:f.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:f.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:f.strictNullHandling}}(t);"function"==typeof u.filter?n=(0,u.filter)("",n):a(u.filter)&&(r=u.filter);var l,d=[];if("object"!=typeof n||null===n)return"";l=t&&t.arrayFormat in s?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var p=s[l];r||(r=Object.keys(n)),u.sort&&r.sort(u.sort);for(var v=0;v<r.length;++v){var g=r[v];u.skipNulls&&null===n[g]||c(d,h(n[g],g,p,u.strictNullHandling,u.skipNulls,u.encode?u.encoder:null,u.filter,u.sort,u.allowDots,u.serializeDate,u.formatter,u.encodeValuesOnly,u.charset))}var y=d.join(u.delimiter),m=!0===u.addQueryPrefix?"?":"";return u.charsetSentinel&&("iso-8859-1"===u.charset?m+="utf8=%26%2310003%3B&":m+="utf8=%E2%9C%93&"),y.length>0?m+y:""}},{"./formats":39,"./utils":43}],43:[function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i=Array.isArray,o=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),s=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n<e.length;++n)void 0!==e[n]&&(r[n]=e[n]);return r};t.exports={arrayToObject:s,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n<t.length;++n)for(var o=t[n],s=o.obj[o.prop],a=Object.keys(s),u=0;u<a.length;++u){var c=a[u],l=s[c];"object"==typeof l&&null!==l&&-1===r.indexOf(l)&&(t.push({obj:s,prop:c}),r.push(l))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(i(r)){for(var n=[],o=0;o<r.length;++o)void 0!==r[o]&&n.push(r[o]);t.obj[t.prop]=n}}}(t),e},decode:function(e,t,r){var n=e.replace(/\+/g," ");if("iso-8859-1"===r)return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch(e){return n}},encode:function(e,t,r){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var i="",s=0;s<n.length;++s){var a=n.charCodeAt(s);45===a||46===a||95===a||126===a||a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122?i+=n.charAt(s):a<128?i+=o[a]:a<2048?i+=o[192|a>>6]+o[128|63&a]:a<55296||a>=57344?i+=o[224|a>>12]+o[128|a>>6&63]+o[128|63&a]:(s+=1,a=65536+((1023&a)<<10|1023&n.charCodeAt(s)),i+=o[240|a>>18]+o[128|a>>12&63]+o[128|a>>6&63]+o[128|63&a])}return i},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)},maybeMap:function(e,t){if(i(e)){for(var r=[],n=0;n<e.length;n+=1)r.push(t(e[n]));return r}return t(e)},merge:function e(t,r,o){if(!r)return t;if("object"!=typeof r){if(i(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(o&&(o.plainObjects||o.allowPrototypes)||!n.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var a=t;return i(t)&&!i(r)&&(a=s(t,o)),i(t)&&i(r)?(r.forEach((function(r,i){if(n.call(t,i)){var s=t[i];s&&"object"==typeof s&&r&&"object"==typeof r?t[i]=e(s,r,o):t.push(r)}else t[i]=r})),t):Object.keys(r).reduce((function(t,i){var s=r[i];return n.call(t,i)?t[i]=e(t[i],s,o):t[i]=s,t}),a)}}},{}],44:[function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,r,o){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var u=1e3;o&&"number"==typeof o.maxKeys&&(u=o.maxKeys);var c=e.length;u>0&&c>u&&(c=u);for(var l=0;l<c;++l){var d,f,h,p,v=e[l].replace(a,"%20"),g=v.indexOf(r);g>=0?(d=v.substr(0,g),f=v.substr(g+1)):(d=v,f=""),h=decodeURIComponent(d),p=decodeURIComponent(f),n(s,h)?i(s[h])?s[h].push(p):s[h]=[s[h],p]:s[h]=p}return s};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],45:[function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,a){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?o(s(e),(function(s){var a=encodeURIComponent(n(s))+r;return i(e[s])?o(e[s],(function(e){return a+encodeURIComponent(n(e))})).join(t):a+encodeURIComponent(n(e[s]))})).join(t):a?encodeURIComponent(n(a))+r+encodeURIComponent(n(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n<e.length;n++)r.push(t(e[n],n));return r}var s=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t}},{}],46:[function(e,t,r){"use strict";r.decode=r.parse=e("./decode"),r.encode=r.stringify=e("./encode")},{"./decode":44,"./encode":45}],47:[function(e,t,r){var n=function(e){"use strict";var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},i=n.iterator||"@@iterator",o=n.asyncIterator||"@@asyncIterator",s=n.toStringTag||"@@toStringTag";function a(e,t,r,n){var i=t&&t.prototype instanceof l?t:l,o=Object.create(i.prototype),s=new S(n||[]);return o._invoke=function(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return w()}for(r.method=i,r.arg=o;;){var s=r.delegate;if(s){var a=_(s,r);if(a){if(a===c)continue;return a}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=u(e,t,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===c)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}(e,r,s),o}function u(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=a;var c={};function l(){}function d(){}function f(){}var h={};h[i]=function(){return this};var p=Object.getPrototypeOf,v=p&&p(p(E([])));v&&v!==t&&r.call(v,i)&&(h=v);var g=f.prototype=l.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function m(e,t){var n;this._invoke=function(i,o){function s(){return new t((function(n,s){!function n(i,o,s,a){var c=u(e[i],e,o);if("throw"!==c.type){var l=c.arg,d=l.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,s,a)}),(function(e){n("throw",e,s,a)})):t.resolve(d).then((function(e){l.value=e,s(l)}),(function(e){return n("throw",e,s,a)}))}a(c.arg)}(i,o,n,s)}))}return n=n?n.then(s,s):s()}}function _(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var n=u(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,c;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,c):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function b(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(b,this),this.reset(!0)}function E(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:w}}function w(){return{value:void 0,done:!0}}return d.prototype=g.constructor=f,f.constructor=d,f[s]=d.displayName="GeneratorFunction",e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},y(m.prototype),m.prototype[o]=function(){return this},e.AsyncIterator=m,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var s=new m(a(t,r,n,i),o);return e.isGeneratorFunction(r)?s:s.next().then((function(e){return e.done?e.value:s.next()}))},y(g),g[s]="Generator",g[i]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=E,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return s.type="throw",s.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var a=r.call(o,"catchLoc"),u=r.call(o,"finallyLoc");if(a&&u){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var s=o?o.completion:{};return s.type=e,s.arg=t,o?(this.method="next",this.next=o.finallyLoc,c):this.complete(s)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),k(r),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;k(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),c}},e}("object"==typeof t?t.exports:{});try{regeneratorRuntime=n}catch(e){Function("r","regeneratorRuntime = r")(n)}},{}],48:[function(e,t,r){
/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
var n=e("buffer"),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function s(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?t.exports=n:(o(n,r),r.Buffer=s),s.prototype=Object.create(i.prototype),o(i,s),s.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},{buffer:34}],49:[function(e,t,r){t.exports={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,","⒉":"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,","⒊":"3.","㏾":"3l日","㏽":"3O日","㏢":"3日","㋂":"3月","㍛":"3点","𝟒":"4","𝟜":"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月","㍝":"5点","𝟔":"6","𝟞":"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月","㍟":"7点","ଃ":"8","৪":"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月","㍡":"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'","℅":"c/o","℆":"c/u","🅭":"㏄\t⃝","⋴":"ꞓ","ɛ":"ꞓ","ε":"ꞓ","ϵ":"ꞓ","𝛆":"ꞓ","𝛜":"ꞓ","𝜀":"ꞓ","𝜖":"ꞓ","𝜺":"ꞓ","𝝐":"ꞓ","𝝴":"ꞓ","𝞊":"ꞓ","𝞮":"ꞓ","𝟄":"ꞓ","ⲉ":"ꞓ","є":"ꞓ","ԑ":"ꞓ","ꮛ":"ꞓ","𑣎":"ꞓ","𐐩":"ꞓ","€":"Ꞓ","Ⲉ":"Ꞓ","Є":"Ꞓ","⍷":"ꞓ̲","ͽ":"ꜿ","Ͽ":"Ꜿ","ⅾ":"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","🯱":"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'","Ꭴ":"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","ᙱ":"ᖖᒋ","ᙲ":"ᖖᒌ","ᙴ":"ᖖᒎ","ᙵ":"ᖖᒐ","ᙶ":"ᖖᒑ","ᣪ":"ᖗ·","ᙷ":"ᖧ·","ᙸ":"ᖨ·","ᙹ":"ᖩ·","ᙺ":"ᖪ·","ᙻ":"ᖫ·","ᙼ":"ᖬ·","ᙽ":"ᖭ·","⪫":"ᗒ","⪪":"ᗕ","ꓷ":"ᗡ","ᣰ":"ᗴ·","ᣲ":"ᘛ·","ᶻ":"ᙆ","ꓭ":"ᙠ","ᶺ":"ᣔ","ᴾ":"ᣖ","ᣜ":"ᣟᐞ","ˡ":"ᣳ","ʳ":"ᣴ","ˢ":"ᣵ","ᣛ":"ᣵ","ꚰ":"ᚹ","ᛡ":"ᚼ","⍿":"ᚽ","ᛂ":"ᚽ","𝈿":"ᛋ","↑":"ᛏ","↿":"ᛐ","⥮":"ᛐ⇂","⥣":"ᛐᛚ","ⵣ":"ᛯ","↾":"ᛚ","⨡":"ᛚ","⋄":"ᛜ","◇":"ᛜ","◊":"ᛜ","♢":"ᛜ","🝔":"ᛜ","𑢷":"ᛜ","𐊔":"ᛜ","⍚":"ᛜ̲","⋈":"ᛞ","⨝":"ᛞ","𐓐":"ᛦ","↕":"ᛨ","𐳼":"𐲂","𐳺":"𐲥","ㄱ":"ᄀ","ᆨ":"ᄀ","ᄁ":"ᄀᄀ","ㄲ":"ᄀᄀ","ᆩ":"ᄀᄀ","ᇺ":"ᄀᄂ","ᅚ":"ᄀᄃ","ᇃ":"ᄀᄅ","ᇻ":"ᄀᄇ","ᆪ":"ᄀᄉ","ㄳ":"ᄀᄉ","ᇄ":"ᄀᄉᄀ","ᇼ":"ᄀᄎ","ᇽ":"ᄀᄏ","ᇾ":"ᄀᄒ","ㄴ":"ᄂ","ᆫ":"ᄂ","ᄓ":"ᄂᄀ","ᇅ":"ᄂᄀ","ᄔ":"ᄂᄂ","ㅥ":"ᄂᄂ","ᇿ":"ᄂᄂ","ᄕ":"ᄂᄃ","ㅦ":"ᄂᄃ","ᇆ":"ᄂᄃ","ퟋ":"ᄂᄅ","ᄖ":"ᄂᄇ","ᅛ":"ᄂᄉ","ᇇ":"ᄂᄉ","ㅧ":"ᄂᄉ","ᅜ":"ᄂᄌ","ᆬ":"ᄂᄌ","ㄵ":"ᄂᄌ","ퟌ":"ᄂᄎ","ᇉ":"ᄂᄐ","ᅝ":"ᄂᄒ","ᆭ":"ᄂᄒ","ㄶ":"ᄂᄒ","ᇈ":"ᄂᅀ","ㅨ":"ᄂᅀ","ㄷ":"ᄃ","ᆮ":"ᄃ","ᄗ":"ᄃᄀ","ᇊ":"ᄃᄀ","ᄄ":"ᄃᄃ","ㄸ":"ᄃᄃ","ퟍ":"ᄃᄃ","ퟎ":"ᄃᄃᄇ","ᅞ":"ᄃᄅ","ᇋ":"ᄃᄅ","ꥠ":"ᄃᄆ","ꥡ":"ᄃᄇ","ퟏ":"ᄃᄇ","ꥢ":"ᄃᄉ","ퟐ":"ᄃᄉ","ퟑ":"ᄃᄉᄀ","ꥣ":"ᄃᄌ","ퟒ":"ᄃᄌ","ퟓ":"ᄃᄎ","ퟔ":"ᄃᄐ","ㄹ":"ᄅ","ᆯ":"ᄅ","ꥤ":"ᄅᄀ","ᆰ":"ᄅᄀ","ㄺ":"ᄅᄀ","ꥥ":"ᄅᄀᄀ","ퟕ":"ᄅᄀᄀ","ᇌ":"ᄅᄀᄉ","ㅩ":"ᄅᄀᄉ","ퟖ":"ᄅᄀᄒ","ᄘ":"ᄅᄂ","ᇍ":"ᄅᄂ","ꥦ":"ᄅᄃ","ᇎ":"ᄅᄃ","ㅪ":"ᄅᄃ","ꥧ":"ᄅᄃᄃ","ᇏ":"ᄅᄃᄒ","ᄙ":"ᄅᄅ","ᇐ":"ᄅᄅ","ퟗ":"ᄅᄅᄏ","ꥨ":"ᄅᄆ","ᆱ":"ᄅᄆ","ㄻ":"ᄅᄆ","ᇑ":"ᄅᄆᄀ","ᇒ":"ᄅᄆᄉ","ퟘ":"ᄅᄆᄒ","ꥩ":"ᄅᄇ","ᆲ":"ᄅᄇ","ㄼ":"ᄅᄇ","ퟙ":"ᄅᄇᄃ","ꥪ":"ᄅᄇᄇ","ᇓ":"ᄅᄇᄉ","ㅫ":"ᄅᄇᄉ","ꥫ":"ᄅᄇᄋ","ᇕ":"ᄅᄇᄋ","ퟚ":"ᄅᄇᄑ","ᇔ":"ᄅᄇᄒ","ꥬ":"ᄅᄉ","ᆳ":"ᄅᄉ","ㄽ":"ᄅᄉ","ᇖ":"ᄅᄉᄉ","ᄛ":"ᄅᄋ","ퟝ":"ᄅᄋ","ꥭ":"ᄅᄌ","ꥮ":"ᄅᄏ","ᇘ":"ᄅᄏ","ᆴ":"ᄅᄐ","ㄾ":"ᄅᄐ","ᆵ":"ᄅᄑ","ㄿ":"ᄅᄑ","ᄚ":"ᄅᄒ","ㅀ":"ᄅᄒ","ᄻ":"ᄅᄒ","ᆶ":"ᄅᄒ","ퟲ":"ᄅᄒ","ᇗ":"ᄅᅀ","ㅬ":"ᄅᅀ","ퟛ":"ᄅᅌ","ᇙ":"ᄅᅙ","ㅭ":"ᄅᅙ","ퟜ":"ᄅᅙᄒ","ㅁ":"ᄆ","ᆷ":"ᄆ","ꥯ":"ᄆᄀ","ᇚ":"ᄆᄀ","ퟞ":"ᄆᄂ","ퟟ":"ᄆᄂᄂ","ꥰ":"ᄆᄃ","ᇛ":"ᄆᄅ","ퟠ":"ᄆᄆ","ᄜ":"ᄆᄇ","ㅮ":"ᄆᄇ","ᇜ":"ᄆᄇ","ퟡ":"ᄆᄇᄉ","ꥱ":"ᄆᄉ","ᇝ":"ᄆᄉ","ㅯ":"ᄆᄉ","ᇞ":"ᄆᄉᄉ","ᄝ":"ᄆᄋ","ㅱ":"ᄆᄋ","ᇢ":"ᄆᄋ","ퟢ":"ᄆᄌ","ᇠ":"ᄆᄎ","ᇡ":"ᄆᄒ","ᇟ":"ᄆᅀ","ㅰ":"ᄆᅀ","ㅂ":"ᄇ","ᆸ":"ᄇ","ᄞ":"ᄇᄀ","ㅲ":"ᄇᄀ","ᄟ":"ᄇᄂ","ᄠ":"ᄇᄃ","ㅳ":"ᄇᄃ","ퟣ":"ᄇᄃ","ᇣ":"ᄇᄅ","ퟤ":"ᄇᄅᄑ","ퟥ":"ᄇᄆ","ᄈ":"ᄇᄇ","ㅃ":"ᄇᄇ","ퟦ":"ᄇᄇ","ᄬ":"ᄇᄇᄋ","ㅹ":"ᄇᄇᄋ","ᄡ":"ᄇᄉ","ㅄ":"ᄇᄉ","ᆹ":"ᄇᄉ","ᄢ":"ᄇᄉᄀ","ㅴ":"ᄇᄉᄀ","ᄣ":"ᄇᄉᄃ","ㅵ":"ᄇᄉᄃ","ퟧ":"ᄇᄉᄃ","ᄤ":"ᄇᄉᄇ","ᄥ":"ᄇᄉᄉ","ᄦ":"ᄇᄉᄌ","ꥲ":"ᄇᄉᄐ","ᄫ":"ᄇᄋ","ㅸ":"ᄇᄋ","ᇦ":"ᄇᄋ","ᄧ":"ᄇᄌ","ㅶ":"ᄇᄌ","ퟨ":"ᄇᄌ","ᄨ":"ᄇᄎ","ퟩ":"ᄇᄎ","ꥳ":"ᄇᄏ","ᄩ":"ᄇᄐ","ㅷ":"ᄇᄐ","ᄪ":"ᄇᄑ","ᇤ":"ᄇᄑ","ꥴ":"ᄇᄒ","ᇥ":"ᄇᄒ","ㅅ":"ᄉ","ᆺ":"ᄉ","ᄭ":"ᄉᄀ","ㅺ":"ᄉᄀ","ᇧ":"ᄉᄀ","ᄮ":"ᄉᄂ","ㅻ":"ᄉᄂ","ᄯ":"ᄉᄃ","ㅼ":"ᄉᄃ","ᇨ":"ᄉᄃ","ᄰ":"ᄉᄅ","ᇩ":"ᄉᄅ","ᄱ":"ᄉᄆ","ퟪ":"ᄉᄆ","ᄲ":"ᄉᄇ","ㅽ":"ᄉᄇ","ᇪ":"ᄉᄇ","ᄳ":"ᄉᄇᄀ","ퟫ":"ᄉᄇᄋ","ᄊ":"ᄉᄉ","ㅆ":"ᄉᄉ","ᆻ":"ᄉᄉ","ퟬ":"ᄉᄉᄀ","ퟭ":"ᄉᄉᄃ","ꥵ":"ᄉᄉᄇ","ᄴ":"ᄉᄉᄉ","ᄵ":"ᄉᄋ","ᄶ":"ᄉᄌ","ㅾ":"ᄉᄌ","ퟯ":"ᄉᄌ","ᄷ":"ᄉᄎ","ퟰ":"ᄉᄎ","ᄸ":"ᄉᄏ","ᄹ":"ᄉᄐ","ퟱ":"ᄉᄐ","ᄺ":"ᄉᄑ","ퟮ":"ᄉᅀ","ㅇ":"ᄋ","ᆼ":"ᄋ","ᅁ":"ᄋᄀ","ᇬ":"ᄋᄀ","ᇭ":"ᄋᄀᄀ","ᅂ":"ᄋᄃ","ꥶ":"ᄋᄅ","ᅃ":"ᄋᄆ","ᅄ":"ᄋᄇ","ᅅ":"ᄋᄉ","ᇱ":"ᄋᄉ","ㆂ":"ᄋᄉ","ᅇ":"ᄋᄋ","ㆀ":"ᄋᄋ","ᇮ":"ᄋᄋ","ᅈ":"ᄋᄌ","ᅉ":"ᄋᄎ","ᇯ":"ᄋᄏ","ᅊ":"ᄋᄐ","ᅋ":"ᄋᄑ","ꥷ":"ᄋᄒ","ᅆ":"ᄋᅀ","ᇲ":"ᄋᅀ","ㆃ":"ᄋᅀ","ㅈ":"ᄌ","ᆽ":"ᄌ","ퟷ":"ᄌᄇ","ퟸ":"ᄌᄇᄇ","ᅍ":"ᄌᄋ","ᄍ":"ᄌᄌ","ㅉ":"ᄌᄌ","ퟹ":"ᄌᄌ","ꥸ":"ᄌᄌᄒ","ㅊ":"ᄎ","ᆾ":"ᄎ","ᅒ":"ᄎᄏ","ᅓ":"ᄎᄒ","ㅋ":"ᄏ","ᆿ":"ᄏ","ㅌ":"ᄐ","ᇀ":"ᄐ","ꥹ":"ᄐᄐ","ㅍ":"ᄑ","ᇁ":"ᄑ","ᅖ":"ᄑᄇ","ᇳ":"ᄑᄇ","ퟺ":"ᄑᄉ","ᅗ":"ᄑᄋ","ㆄ":"ᄑᄋ","ᇴ":"ᄑᄋ","ퟻ":"ᄑᄐ","ꥺ":"ᄑᄒ","ㅎ":"ᄒ","ᇂ":"ᄒ","ᇵ":"ᄒᄂ","ᇶ":"ᄒᄅ","ᇷ":"ᄒᄆ","ᇸ":"ᄒᄇ","ꥻ":"ᄒᄉ","ᅘ":"ᄒᄒ","ㆅ":"ᄒᄒ","ᄽ":"ᄼᄼ","ᄿ":"ᄾᄾ","ㅿ":"ᅀ","ᇫ":"ᅀ","ퟳ":"ᅀᄇ","ퟴ":"ᅀᄇᄋ","ㆁ":"ᅌ","ᇰ":"ᅌ","ퟵ":"ᅌᄆ","ퟶ":"ᅌᄒ","ᅏ":"ᅎᅎ","ᅑ":"ᅐᅐ","ㆆ":"ᅙ","ᇹ":"ᅙ","ꥼ":"ᅙᅙ","ㅤ":"ᅠ","ㅏ":"ᅡ","ᆣ":"ᅡー","ᅶ":"ᅡᅩ","ᅷ":"ᅡᅮ","ᅢ":"ᅡ丨","ㅐ":"ᅡ丨","ㅑ":"ᅣ","ᅸ":"ᅣᅩ","ᅹ":"ᅣᅭ","ᆤ":"ᅣᅮ","ᅤ":"ᅣ丨","ㅒ":"ᅣ丨","ㅓ":"ᅥ","ᅼ":"ᅥー","ᅺ":"ᅥᅩ","ᅻ":"ᅥᅮ","ᅦ":"ᅥ丨","ㅔ":"ᅥ丨","ㅕ":"ᅧ","ᆥ":"ᅧᅣ","ᅽ":"ᅧᅩ","ᅾ":"ᅧᅮ","ᅨ":"ᅧ丨","ㅖ":"ᅧ丨","ㅗ":"ᅩ","ᅪ":"ᅩᅡ","ㅘ":"ᅩᅡ","ᅫ":"ᅩᅡ丨","ㅙ":"ᅩᅡ丨","ᆦ":"ᅩᅣ","ᆧ":"ᅩᅣ丨","ᅿ":"ᅩᅥ","ᆀ":"ᅩᅥ丨","ힰ":"ᅩᅧ","ᆁ":"ᅩᅧ丨","ᆂ":"ᅩᅩ","ힱ":"ᅩᅩ丨","ᆃ":"ᅩᅮ","ᅬ":"ᅩ丨","ㅚ":"ᅩ丨","ㅛ":"ᅭ","ힲ":"ᅭᅡ","ힳ":"ᅭᅡ丨","ᆄ":"ᅭᅣ","ㆇ":"ᅭᅣ","ᆆ":"ᅭᅣ","ᆅ":"ᅭᅣ丨","ㆈ":"ᅭᅣ丨","ힴ":"ᅭᅥ","ᆇ":"ᅭᅩ","ᆈ":"ᅭ丨","ㆉ":"ᅭ丨","ㅜ":"ᅮ","ᆉ":"ᅮᅡ","ᆊ":"ᅮᅡ丨","ᅯ":"ᅮᅥ","ㅝ":"ᅮᅥ","ᆋ":"ᅮᅥー","ᅰ":"ᅮᅥ丨","ㅞ":"ᅮᅥ丨","ힵ":"ᅮᅧ","ᆌ":"ᅮᅧ丨","ᆍ":"ᅮᅮ","ᅱ":"ᅮ丨","ㅟ":"ᅮ丨","ힶ":"ᅮ丨丨","ㅠ":"ᅲ","ᆎ":"ᅲᅡ","ힷ":"ᅲᅡ丨","ᆏ":"ᅲᅥ","ᆐ":"ᅲᅥ丨","ᆑ":"ᅲᅧ","ㆊ":"ᅲᅧ","ᆒ":"ᅲᅧ丨","ㆋ":"ᅲᅧ丨","ힸ":"ᅲᅩ","ᆓ":"ᅲᅮ","ᆔ":"ᅲ丨","ㆌ":"ᅲ丨","ㆍ":"ᆞ","ퟅ":"ᆞᅡ","ᆟ":"ᆞᅥ","ퟆ":"ᆞᅥ丨","ᆠ":"ᆞᅮ","ᆢ":"ᆞᆞ","ᆡ":"ᆞ丨","ㆎ":"ᆞ丨","ヘ":"へ","⍁":"〼","⧄":"〼","꒞":"ꁊ","꒬":"ꁐ","꒜":"ꃀ","꒨":"ꄲ","꒿":"ꉙ","꒾":"ꊱ","꒔":"ꋍ","꓀":"ꎫ","꓂":"ꎵ","꒺":"ꎿ","꒰":"ꏂ","꒧":"ꑘ","⊥":"ꓕ","⟂":"ꓕ","𝈜":"ꓕ","Ʇ":"ꓕ","Ꞟ":"ꓤ","⅁":"ꓨ","⅂":"ꓶ","𝈕":"ꓶ","𝈫":"ꓶ","𖼦":"ꓶ","𐐑":"ꓶ","⅃":"𖼀","𑫦":"𑫥𑫯","𑫨":"𑫥𑫥","𑫩":"𑫥𑫥𑫯","𑫪":"𑫥𑫥𑫰","𑫧":"𑫥𑫰","𑫴":"𑫳𑫯","𑫶":"𑫳𑫳","𑫷":"𑫳𑫳𑫯","𑫸":"𑫳𑫳𑫰","𑫵":"𑫳𑫰","𑫬":"𑫫𑫯","𑫭":"𑫫𑫫","𑫮":"𑫫𑫫𑫯","⊕":"𐊨","⨁":"𐊨","🜨":"𐊨","Ꚛ":"𐊨","▽":"𐊼","𝈔":"𐊼","🜄":"𐊼","⧖":"𐋀","ꞛ":"𐐺","Ꞛ":"𐐒","𐒠":"𐒆","𐏑":"𐎂","𐏓":"𐎓","𒀸":"𐎚","☥":"𐦞","𓋹":"𐦞","〹":"卄","不":"不","丽":"丽","並":"並","⎜":"丨","⎟":"丨","⎢":"丨","⎥":"丨","⎪":"丨","⎮":"丨","㇑":"丨","ᅵ":"丨","ㅣ":"丨","⼁":"丨","ᆜ":"丨ー","ᆘ":"丨ᅡ","ᆙ":"丨ᅣ","ힽ":"丨ᅣᅩ","ힾ":"丨ᅣ丨","ힿ":"丨ᅧ","ퟀ":"丨ᅧ丨","ᆚ":"丨ᅩ","ퟁ":"丨ᅩ丨","ퟂ":"丨ᅭ","ᆛ":"丨ᅮ","ퟃ":"丨ᅲ","ᆝ":"丨ᆞ","ퟄ":"丨丨","串":"串","丸":"丸","丹":"丹","乁":"乁","㇠":"乙","⼄":"乙","㇟":"乚","⺃":"乚","㇖":"乛","⺂":"乛","⻲":"亀","亂":"亂","㇚":"亅","⼅":"亅","了":"了","ニ":"二","⼆":"二","𠄢":"𠄢","⼇":"亠","亮":"亮","⼈":"人","イ":"亻","⺅":"亻","什":"什","仌":"仌","令":"令","你":"你","倂":"併","倂":"併","侀":"侀","來":"來","例":"例","侮":"侮","侮":"侮","侻":"侻","便":"便","值":"値","倫":"倫","偺":"偺","備":"備","像":"像","僚":"僚","僧":"僧","僧":"僧","㒞":"㒞","⼉":"儿","兀":"兀","⺎":"兀","充":"充","免":"免","免":"免","兔":"兔","兤":"兤","⼊":"入","內":"內","全":"全","兩":"兩","ハ":"八","⼋":"八","六":"六","具":"具","𠔜":"𠔜","𠔥":"𠔥","冀":"冀","㒹":"㒹","⼌":"冂","再":"再","𠕋":"𠕋","冒":"冒","冕":"冕","㒻":"㒻","最":"最","⼍":"冖","冗":"冗","冤":"冤","⼎":"冫","冬":"冬","况":"况","况":"况","冷":"冷","凉":"凉","凌":"凌","凜":"凜","凞":"凞","⼏":"几","𠘺":"𠘺","凵":"凵","⼐":"凵","⼑":"刀","⺉":"刂","刃":"刃","切":"切","切":"切","列":"列","利":"利","㓟":"㓟","刺":"刺","刻":"刻","剆":"剆","割":"割","剷":"剷","劉":"劉","𠠄":"𠠄","カ":"力","力":"力","⼒":"力","劣":"劣","㔕":"㔕","劳":"劳","勇":"勇","勇":"勇","勉":"勉","勉":"勉","勒":"勒","勞":"勞","勤":"勤","勤":"勤","勵":"勵","⼓":"勹","勺":"勺","勺":"勺","包":"包","匆":"匆","𠣞":"𠣞","⼔":"匕","北":"北","北":"北","⼕":"匚","⼖":"匸","匿":"匿","⼗":"十","〸":"十","〺":"卅","卉":"卉","࿖":"卍","࿕":"卐","卑":"卑","卑":"卑","博":"博","ト":"卜","⼘":"卜","⼙":"卩","⺋":"㔾","即":"即","卵":"卵","卽":"卽","卿":"卿","卿":"卿","卿":"卿","⼚":"厂","𠨬":"𠨬","⼛":"厶","參":"參","⼜":"又","及":"及","叟":"叟","𠭣":"𠭣","ロ":"口","⼝":"口","囗":"口","⼞":"口","句":"句","叫":"叫","叱":"叱","吆":"吆","吏":"吏","吝":"吝","吸":"吸","呂":"呂","呈":"呈","周":"周","咞":"咞","咢":"咢","咽":"咽","䎛":"㖈","哶":"哶","唐":"唐","啓":"啓","啟":"啓","啕":"啕","啣":"啣","善":"善","善":"善","喇":"喇","喙":"喙","喙":"喙","喝":"喝","喝":"喝","喫":"喫","喳":"喳","嗀":"嗀","嗂":"嗂","嗢":"嗢","嘆":"嘆","嘆":"嘆","噑":"噑","噴":"噴","器":"器","囹":"囹","圖":"圖","圗":"圗","⼟":"土","士":"土","⼠":"土","型":"型","城":"城","㦳":"㘽","埴":"埴","堍":"堍","報":"報","堲":"堲","塀":"塀","塚":"塚","塚":"塚","塞":"塞","填":"塡","壿":"墫","墬":"墬","墳":"墳","壘":"壘","壟":"壟","𡓤":"𡓤","壮":"壮","売":"売","壷":"壷","⼡":"夂","夆":"夆","⼢":"夊","タ":"夕","⼣":"夕","多":"多","夢":"夢","⼤":"大","奄":"奄","奈":"奈","契":"契","奔":"奔","奢":"奢","女":"女","⼥":"女","𡚨":"𡚨","𡛪":"𡛪","姘":"姘","姬":"姬","娛":"娛","娧":"娧","婢":"婢","婦":"婦","嬀":"媯","㛮":"㛮","㛼":"㛼","媵":"媵","嬈":"嬈","嬨":"嬨","嬾":"嬾","嬾":"嬾","⼦":"子","⼧":"宀","宅":"宅","𡧈":"𡧈","寃":"寃","寘":"寘","寧":"寧","寧":"寧","寧":"寧","寮":"寮","寳":"寳","𡬘":"𡬘","⼨":"寸","寿":"寿","将":"将","⼩":"小","尢":"尢","⺐":"尢","⼪":"尢","⺏":"尣","㞁":"㞁","⼫":"尸","尿":"尿","屠":"屠","屢":"屢","層":"層","履":"履","屮":"屮","屮":"屮","⼬":"屮","𡴋":"𡴋","⼭":"山","峀":"峀","岍":"岍","𡷤":"𡷤","𡷦":"𡷦","崙":"崙","嵃":"嵃","嵐":"嵐","嵫":"嵫","嵮":"嵮","嵼":"嵼","嶲":"嶲","嶺":"嶺","⼮":"巛","巢":"巢","エ":"工","⼯":"工","⼰":"己","⺒":"巳","㠯":"㠯","巽":"巽","⼱":"巾","帲":"帡","帨":"帨","帽":"帽","幩":"幩","㡢":"㡢","𢆃":"𢆃","⼲":"干","年":"年","𢆟":"𢆟","⺓":"幺","⼳":"幺","⼴":"广","度":"度","㡼":"㡼","庰":"庰","庳":"庳","庶":"庶","廊":"廊","廊":"廊","廉":"廉","廒":"廒","廓":"廓","廙":"廙","廬":"廬","⼵":"廴","廾":"廾","⼶":"廾","𢌱":"𢌱","𢌱":"𢌱","弄":"弄","⼷":"弋","⼸":"弓","弢":"弢","弢":"弢","⼹":"彐","⺔":"彑","当":"当","㣇":"㣇","⼺":"彡","形":"形","彩":"彩","彫":"彫","⼻":"彳","律":"律","㣣":"㣣","徚":"徚","復":"復","徭":"徭","⼼":"心","⺖":"忄","⺗":"㣺","忍":"忍","志":"志","念":"念","忹":"忹","怒":"怒","怜":"怜","恵":"恵","㤜":"㤜","㤺":"㤺","悁":"悁","悔":"悔","悔":"悔","惇":"惇","惘":"惘","惡":"惡","𢛔":"𢛔","愈":"愈","慨":"慨","慄":"慄","慈":"慈","慌":"慌","慌":"慌","慎":"慎","慎":"慎","慠":"慠","慺":"慺","憎":"憎","憎":"憎","憎":"憎","憐":"憐","憤":"憤","憯":"憯","憲":"憲","𢡄":"𢡄","𢡊":"𢡊","懞":"懞","懲":"懲","懲":"懲","懲":"懲","懶":"懶","懶":"懶","戀":"戀","⼽":"戈","成":"成","戛":"戛","戮":"戮","戴":"戴","⼾":"戶","戸":"戶","⼿":"手","⺘":"扌","扝":"扝","抱":"抱","拉":"拉","拏":"拏","拓":"拓","拔":"拔","拼":"拼","拾":"拾","𢬌":"𢬌","挽":"挽","捐":"捐","捨":"捨","捻":"捻","掃":"掃","掠":"掠","掩":"掩","揄":"揄","揤":"揤","摒":"摒","𢯱":"𢯱","搜":"搜","搢":"搢","揅":"揅","摩":"摩","摷":"摷","摾":"摾","㨮":"㨮","搉":"㩁","撚":"撚","撝":"撝","擄":"擄","㩬":"㩬","⽀":"支","⽁":"攴","⺙":"攵","敏":"敏","敏":"敏","敖":"敖","敬":"敬","數":"數","𣀊":"𣀊","⽂":"文","⻫":"斉","⽃":"斗","料":"料","⽄":"斤","⽅":"方","旅":"旅","⽆":"无","⺛":"旡","既":"既","旣":"旣","⽇":"日","易":"易","曶":"㫚","㫤":"㫤","晉":"晉","晩":"晚","晴":"晴","晴":"晴","暑":"暑","暑":"暑","暈":"暈","㬈":"㬈","暜":"暜","暴":"暴","曆":"曆","㬙":"㬙","𣊸":"𣊸","⽈":"曰","更":"更","書":"書","⽉":"月","𣍟":"𣍟","肦":"朌","胐":"朏","胊":"朐","脁":"朓","胶":"㬵","朗":"朗","朗":"朗","朗":"朗","脧":"朘","望":"望","望":"望","幐":"㬺","䐠":"㬻","𣎓":"𣎓","膧":"朣","𣎜":"𣎜","⽊":"木","李":"李","杓":"杓","杖":"杖","杞":"杞","𣏃":"𣏃","柿":"杮","杻":"杻","枅":"枅","林":"林","㭉":"㭉","𣏕":"𣏕","柳":"柳","柺":"柺","栗":"栗","栟":"栟","桒":"桒","𣑭":"𣑭","梁":"梁","梅":"梅","梅":"梅","梎":"梎","梨":"梨","椔":"椔","楂":"楂","㮝":"㮝","㮝":"㮝","槩":"㮣","樧":"榝","榣":"榣","槪":"槪","樂":"樂","樂":"樂","樂":"樂","樓":"樓","𣚣":"𣚣","檨":"檨","櫓":"櫓","櫛":"櫛","欄":"欄","㰘":"㰘","⽋":"欠","次":"次","𣢧":"𣢧","歔":"歔","㱎":"㱎","⽌":"止","⻭":"歯","歲":"歲","歷":"歷","歹":"歹","⽍":"歹","⺞":"歺","殟":"殟","殮":"殮","⽎":"殳","殺":"殺","殺":"殺","殺":"殺","殻":"殻","𣪍":"𣪍","⽏":"毋","⺟":"母","𣫺":"𣫺","⽐":"比","⽑":"毛","⽒":"氏","⺠":"民","⽓":"气","⽔":"水","⺡":"氵","⺢":"氺","汎":"汎","汧":"汧","沈":"沈","沿":"沿","泌":"泌","泍":"泍","泥":"泥","𣲼":"𣲼","洛":"洛","洞":"洞","洴":"洴","派":"派","流":"流","流":"流","流":"流","洖":"洖","浩":"浩","浪":"浪","海":"海","海":"海","浸":"浸","涅":"涅","𣴞":"𣴞","淋":"淋","淚":"淚","淪":"淪","淹":"淹","渚":"渚","港":"港","湮":"湮","潙":"溈","滋":"滋","滋":"滋","溜":"溜","溺":"溺","滇":"滇","滑":"滑","滛":"滛","㴳":"㴳","漏":"漏","漢":"漢","漢":"漢","漣":"漣","𣻑":"𣻑","潮":"潮","𣽞":"𣽞","𣾎":"𣾎","濆":"濆","濫":"濫","濾":"濾","瀛":"瀛","瀞":"瀞","瀞":"瀞","瀹":"瀹","灊":"灊","㶖":"㶖","⽕":"火","⺣":"灬","灰":"灰","灷":"灷","災":"災","炙":"炙","炭":"炭","烈":"烈","烙":"烙","煮":"煮","煮":"煮","𤉣":"𤉣","煅":"煅","煉":"煉","𤋮":"𤋮","熜":"熜","燎":"燎","燐":"燐","𤎫":"𤎫","爐":"爐","爛":"爛","爨":"爨","⽖":"爪","爫":"爫","⺤":"爫","爵":"爵","爵":"爵","⽗":"父","⽘":"爻","⺦":"丬","⽙":"爿","⽚":"片","牐":"牐","⽛":"牙","𤘈":"𤘈","⽜":"牛","牢":"牢","犀":"犀","犕":"犕","⽝":"犬","⺨":"犭","犯":"犯","狀":"狀","𤜵":"𤜵","狼":"狼","猪":"猪","猪":"猪","𤠔":"𤠔","獵":"獵","獺":"獺","⽞":"玄","率":"率","率":"率","⽟":"玉","王":"王","㺬":"㺬","玥":"玥","玲":"玲","㺸":"㺸","㺸":"㺸","珞":"珞","琉":"琉","理":"理","琢":"琢","瑇":"瑇","瑜":"瑜","瑩":"瑩","瑱":"瑱","瑱":"瑱","璅":"璅","璉":"璉","璘":"璘","瓊":"瓊","⽠":"瓜","⽡":"瓦","㼛":"㼛","甆":"甆","⽢":"甘","⽣":"生","甤":"甤","⽤":"用","⽥":"田","画":"画","甾":"甾","𤰶":"𤰶","留":"留","略":"略","異":"異","異":"異","𤲒":"𤲒","⽦":"疋","⽧":"疒","痢":"痢","瘐":"瘐","瘟":"瘟","瘝":"瘝","療":"療","癩":"癩","⽨":"癶","⽩":"白","𤾡":"𤾡","𤾸":"𤾸","⽪":"皮","⽫":"皿","𥁄":"𥁄","㿼":"㿼","益":"益","益":"益","盛":"盛","盧":"盧","䀈":"䀈","⽬":"目","直":"直","直":"直","𥃲":"𥃲","𥃳":"𥃳","省":"省","䀘":"䀘","𥄙":"𥄙","眞":"眞","真":"真","真":"真","𥄳":"𥄳","着":"着","睊":"睊","睊":"睊","鿃":"䀹","䀹":"䀹","䀹":"䀹","晣":"䀿","䁆":"䁆","瞋":"瞋","𥉉":"𥉉","瞧":"瞧","⽭":"矛","⽮":"矢","⽯":"石","䂖":"䂖","𥐝":"𥐝","硏":"研","硎":"硎","硫":"硫","碌":"碌","碌":"碌","碑":"碑","磊":"磊","磌":"磌","磌":"磌","磻":"磻","䃣":"䃣","礪":"礪","⽰":"示","⺭":"礻","礼":"礼","社":"社","祈":"祈","祉":"祉","𥘦":"𥘦","祐":"祐","祖":"祖","祖":"祖","祝":"祝","神":"神","祥":"祥","視":"視","視":"視","祿":"祿","𥚚":"𥚚","禍":"禍","禎":"禎","福":"福","福":"福","𥛅":"𥛅","禮":"禮","⽱":"禸","⽲":"禾","秊":"秊","䄯":"䄯","秫":"秫","稜":"稜","穊":"穊","穀":"穀","穀":"穀","穏":"穏","⽳":"穴","突":"突","𥥼":"𥥼","窱":"窱","立":"立","⽴":"立","⻯":"竜","𥪧":"𥪧","𥪧":"𥪧","竮":"竮","⽵":"竹","笠":"笠","節":"節","節":"節","䈂":"䈂","𥮫":"𥮫","篆":"篆","䈧":"䈧","築":"築","𥲀":"𥲀","𥳐":"𥳐","簾":"簾","籠":"籠","⽶":"米","类":"类","粒":"粒","精":"精","糒":"糒","糖":"糖","糨":"糨","䊠":"䊠","糣":"糣","糧":"糧","⽷":"糸","⺯":"糹","𥾆":"𥾆","紀":"紀","紐":"紐","索":"索","累":"累","絶":"絕","絣":"絣","絛":"絛","綠":"綠","綾":"綾","緇":"緇","練":"練","練":"練","練":"練","縂":"縂","䌁":"䌁","縉":"縉","縷":"縷","繁":"繁","繅":"繅","𦇚":"𦇚","䌴":"䌴","⽸":"缶","𦈨":"𦈨","缾":"缾","𦉇":"𦉇","⽹":"网","⺫":"罒","⺲":"罒","⺱":"罓","䍙":"䍙","署":"署","𦋙":"𦋙","罹":"罹","罺":"罺","羅":"羅","𦌾":"𦌾","⽺":"羊","羕":"羕","羚":"羚","羽":"羽","⽻":"羽","翺":"翺","老":"老","⽼":"老","⺹":"耂","者":"者","者":"者","者":"者","⽽":"而","𦓚":"𦓚","⽾":"耒","𦔣":"𦔣","⽿":"耳","聆":"聆","聠":"聠","𦖨":"𦖨","聯":"聯","聰":"聰","聾":"聾","⾀":"聿","⺺":"肀","⾁":"肉","肋":"肋","肭":"肭","育":"育","䏕":"䏕","䏙":"䏙","腁":"胼","脃":"脃","脾":"脾","䐋":"䐋","朡":"朡","𦞧":"𦞧","𦞵":"𦞵","朦":"䑃","臘":"臘","⾂":"臣","臨":"臨","⾃":"自","臭":"臭","⾄":"至","⾅":"臼","舁":"舁","舁":"舁","舄":"舄","⾆":"舌","舘":"舘","⾇":"舛","⾈":"舟","䑫":"䑫","⾉":"艮","良":"良","⾊":"色","⾋":"艸","艹":"艹","艹":"艹","⺾":"艹","⺿":"艹","⻀":"艹","芋":"芋","芑":"芑","芝":"芝","花":"花","芳":"芳","芽":"芽","若":"若","若":"若","苦":"苦","𦬼":"𦬼","茶":"茶","荒":"荒","荣":"荣","茝":"茝","茣":"茣","莽":"莽","荓":"荓","菉":"菉","菊":"菊","菌":"菌","菜":"菜","菧":"菧","華":"華","菱":"菱","著":"著","著":"著","𦰶":"𦰶","莭":"莭","落":"落","葉":"葉","蔿":"蒍","𦳕":"𦳕","𦵫":"𦵫","蓮":"蓮","蓱":"蓱","蓳":"蓳","蓼":"蓼","蔖":"蔖","䔫":"䔫","蕤":"蕤","𦼬":"𦼬","藍":"藍","䕝":"䕝","𦾱":"𦾱","䕡":"䕡","藺":"藺","蘆":"蘆","䕫":"䕫","蘒":"蘒","蘭":"蘭","𧃒":"𧃒","虁":"蘷","蘿":"蘿","⾌":"虍","⻁":"虎","虐":"虐","虜":"虜","虜":"虜","虧":"虧","虩":"虩","⾍":"虫","蚩":"蚩","蚈":"蚈","蛢":"蛢","蜎":"蜎","蜨":"蜨","蝫":"蝫","蟡":"蟡","蝹":"蝹","蝹":"蝹","螆":"螆","䗗":"䗗","𧏊":"𧏊","螺":"螺","蠁":"蠁","䗹":"䗹","蠟":"蠟","⾎":"血","行":"行","⾏":"行","衠":"衠","衣":"衣","⾐":"衣","⻂":"衤","裂":"裂","𧙧":"𧙧","裏":"裏","裗":"裗","裞":"裞","裡":"裡","裸":"裸","裺":"裺","䘵":"䘵","褐":"褐","襁":"襁","襤":"襤","⾑":"襾","⻄":"西","⻃":"覀","覆":"覆","見":"見","⾒":"見","𧢮":"𧢮","⻅":"见","⾓":"角","⾔":"言","𧥦":"𧥦","詽":"訮","訞":"䚶","䚾":"䚾","䛇":"䛇","誠":"誠","說":"說","說":"說","調":"調","請":"請","諒":"諒","論":"論","諭":"諭","諭":"諭","諸":"諸","諸":"諸","諾":"諾","諾":"諾","謁":"謁","謁":"謁","謹":"謹","謹":"謹","識":"識","讀":"讀","讏":"讆","變":"變","變":"變","⻈":"讠","⾕":"谷","⾖":"豆","豈":"豈","豕":"豕","⾗":"豕","豣":"豜","⾘":"豸","𧲨":"𧲨","⾙":"貝","貫":"貫","賁":"賁","賂":"賂","賈":"賈","賓":"賓","贈":"贈","贈":"贈","贛":"贛","⻉":"贝","⾚":"赤","⾛":"走","起":"起","趆":"赿","𧻓":"𧻓","𧼯":"𧼯","⾜":"足","跋":"跋","趼":"趼","跺":"跥","路":"路","跰":"跰","躛":"躗","⾝":"身","車":"車","⾞":"車","軔":"軔","輧":"軿","輦":"輦","輪":"輪","輸":"輸","輸":"輸","輻":"輻","轢":"轢","⻋":"车","⾟":"辛","辞":"辞","辰":"辰","⾠":"辰","⾡":"辵","辶":"辶","⻌":"辶","⻍":"辶","巡":"巡","連":"連","逸":"逸","逸":"逸","遲":"遲","遼":"遼","𨗒":"𨗒","𨗭":"𨗭","邏":"邏","⾢":"邑","邔":"邔","郎":"郎","郞":"郎","郞":"郎","郱":"郱","都":"都","𨜮":"𨜮","鄑":"鄑","鄛":"鄛","⾣":"酉","酪":"酪","醙":"醙","醴":"醴","⾤":"釆","里":"里","⾥":"里","量":"量","金":"金","⾦":"金","鈴":"鈴","鈸":"鈸","鉶":"鉶","鋗":"鋗","鋘":"鋘","鉼":"鉼","錄":"錄","鍊":"鍊","鎮":"鎭","鏹":"鏹","鐕":"鐕","𨯺":"𨯺","⻐":"钅","⻑":"長","⾧":"長","⻒":"镸","⻓":"长","⾨":"門","開":"開","䦕":"䦕","閭":"閭","閷":"閷","𨵷":"𨵷","⻔":"门","⾩":"阜","⻏":"阝","⻖":"阝","阮":"阮","陋":"陋","降":"降","陵":"陵","陸":"陸","陼":"陼","隆":"隆","隣":"隣","䧦":"䧦","⾪":"隶","隷":"隷","隸":"隷","隸":"隷","⾫":"隹","雃":"雃","離":"離","難":"難","難":"難","⾬":"雨","零":"零","雷":"雷","霣":"霣","𩅅":"𩅅","露":"露","靈":"靈","⾭":"靑","⻘":"青","靖":"靖","靖":"靖","𩇟":"𩇟","⾮":"非","⾯":"面","𩈚":"𩈚","⾰":"革","䩮":"䩮","䩶":"䩶","⾱":"韋","韛":"韛","韠":"韠","⻙":"韦","⾲":"韭","𩐊":"𩐊","⾳":"音","響":"響","響":"響","⾴":"頁","䪲":"䪲","頋":"頋","頋":"頋","頋":"頋","領":"領","頩":"頩","𩒖":"𩒖","頻":"頻","頻":"頻","類":"類","⻚":"页","⾵":"風","𩖶":"𩖶","⻛":"风","⾶":"飛","⻜":"飞","⻝":"食","⾷":"食","⻟":"飠","飢":"飢","飯":"飯","飼":"飼","䬳":"䬳","館":"館","餩":"餩","⻠":"饣","⾸":"首","⾹":"香","馧":"馧","⾺":"馬","駂":"駂","駱":"駱","駾":"駾","驪":"驪","⻢":"马","⾻":"骨","䯎":"䯎","⾼":"高","⾽":"髟","𩬰":"𩬰","鬒":"鬒","鬒":"鬒","⾾":"鬥","⾿":"鬯","⿀":"鬲","⿁":"鬼","⻤":"鬼","⿂":"魚","魯":"魯","鱀":"鱀","鱗":"鱗","⻥":"鱼","⿃":"鳥","鳽":"鳽","䳎":"䳎","鵧":"鵧","䳭":"䳭","𪃎":"𪃎","鶴":"鶴","𪄅":"𪄅","䳸":"䳸","鷺":"鷺","𪈎":"𪈎","鸞":"鸞","鹃":"鹂","⿄":"鹵","鹿":"鹿","⿅":"鹿","𪊑":"𪊑","麗":"麗","麟":"麟","⿆":"麥","⻨":"麦","麻":"麻","⿇":"麻","𪎒":"𪎒","⿈":"黃","⻩":"黄","⿉":"黍","黎":"黎","䵖":"䵖","⿊":"黑","黒":"黑","墨":"墨","黹":"黹","⿋":"黹","⿌":"黽","鼅":"鼅","黾":"黾","⿍":"鼎","鼏":"鼏","⿎":"鼓","鼖":"鼖","⿏":"鼠","鼻":"鼻","⿐":"鼻","齃":"齃","⿑":"齊","⻬":"齐","⿒":"齒","𪘀":"𪘀","⻮":"齿","龍":"龍","⿓":"龍","龎":"龎","⻰":"龙","龜":"龜","龜":"龜","龜":"龜","⿔":"龜","⻳":"龟","⿕":"龠"}},{}],50:[function(e,t,r){"use strict";var n=e("./data.json");var i=RegExp(Object.keys(n).map((function(e){return e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")})).join("|"),"g");function o(e){return n[e]}t.exports=function(e){return e.replace(i,o)}},{"./data.json":49}],51:[function(e,t,r){"use strict";var n=e("punycode"),i=e("./util");function o(){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}r.parse=_,r.resolve=function(e,t){return _(e,!1,!0).resolve(t)},r.resolveObject=function(e,t){return e?_(e,!1,!0).resolveObject(t):t},r.format=function(e){i.isString(e)&&(e=_(e));return e instanceof o?e.format():o.prototype.format.call(e)},r.Url=o;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,u=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),d=["%","/","?",";","#"].concat(l),f=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,p=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,v={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=e("querystring");function _(e,t,r){if(e&&i.isObject(e)&&e instanceof o)return e;var n=new o;return n.parse(e,t,r),n}o.prototype.parse=function(e,t,r){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var o=e.indexOf("?"),a=-1!==o&&o<e.indexOf("#")?"?":"#",c=e.split(a);c[0]=c[0].replace(/\\/g,"/");var _=e=c.join(a);if(_=_.trim(),!r&&1===e.split("#").length){var b=u.exec(_);if(b)return this.path=_,this.href=_,this.pathname=b[1],b[2]?(this.search=b[2],this.query=t?m.parse(this.search.substr(1)):this.search.substr(1)):t&&(this.search="",this.query={}),this}var k=s.exec(_);if(k){var S=(k=k[0]).toLowerCase();this.protocol=S,_=_.substr(k.length)}if(r||k||_.match(/^\/\/[^@\/]+@[^@\/]+/)){var E="//"===_.substr(0,2);!E||k&&g[k]||(_=_.substr(2),this.slashes=!0)}if(!g[k]&&(E||k&&!y[k])){for(var w,I,R=-1,T=0;T<f.length;T++){-1!==(x=_.indexOf(f[T]))&&(-1===R||x<R)&&(R=x)}-1!==(I=-1===R?_.lastIndexOf("@"):_.lastIndexOf("@",R))&&(w=_.slice(0,I),_=_.slice(I+1),this.auth=decodeURIComponent(w)),R=-1;for(T=0;T<d.length;T++){var x;-1!==(x=_.indexOf(d[T]))&&(-1===R||x<R)&&(R=x)}-1===R&&(R=_.length),this.host=_.slice(0,R),_=_.slice(R),this.parseHost(),this.hostname=this.hostname||"";var C="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!C)for(var O=this.hostname.split(/\./),A=(T=0,O.length);T<A;T++){var D=O[T];if(D&&!D.match(h)){for(var P="",M=0,U=D.length;M<U;M++)D.charCodeAt(M)>127?P+="x":P+=D[M];if(!P.match(h)){var K=O.slice(0,T),q=O.slice(T+1),N=D.match(p);N&&(K.push(N[1]),q.unshift(N[2])),q.length&&(_="/"+q.join(".")+_),this.hostname=K.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),C||(this.hostname=n.toASCII(this.hostname));var B=this.port?":"+this.port:"",L=this.hostname||"";this.host=L+B,this.href+=this.host,C&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==_[0]&&(_="/"+_))}if(!v[S])for(T=0,A=l.length;T<A;T++){var j=l[T];if(-1!==_.indexOf(j)){var F=encodeURIComponent(j);F===j&&(F=escape(j)),_=_.split(j).join(F)}}var G=_.indexOf("#");-1!==G&&(this.hash=_.substr(G),_=_.slice(0,G));var V=_.indexOf("?");if(-1!==V?(this.search=_.substr(V),this.query=_.substr(V+1),t&&(this.query=m.parse(this.query)),_=_.slice(0,V)):t&&(this.search="",this.query={}),_&&(this.pathname=_),y[S]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){B=this.pathname||"";var W=this.search||"";this.path=B+W}return this.href=this.format(),this},o.prototype.format=function(){var e=this.auth||"";e&&(e=(e=encodeURIComponent(e)).replace(/%3A/i,":"),e+="@");var t=this.protocol||"",r=this.pathname||"",n=this.hash||"",o=!1,s="";this.host?o=e+this.host:this.hostname&&(o=e+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&i.isObject(this.query)&&Object.keys(this.query).length&&(s=m.stringify(this.query));var a=this.search||s&&"?"+s||"";return t&&":"!==t.substr(-1)&&(t+=":"),this.slashes||(!t||y[t])&&!1!==o?(o="//"+(o||""),r&&"/"!==r.charAt(0)&&(r="/"+r)):o||(o=""),n&&"#"!==n.charAt(0)&&(n="#"+n),a&&"?"!==a.charAt(0)&&(a="?"+a),t+o+(r=r.replace(/[?#]/g,(function(e){return encodeURIComponent(e)})))+(a=a.replace("#","%23"))+n},o.prototype.resolve=function(e){return this.resolveObject(_(e,!1,!0)).format()},o.prototype.resolveObject=function(e){if(i.isString(e)){var t=new o;t.parse(e,!1,!0),e=t}for(var r=new o,n=Object.keys(this),s=0;s<n.length;s++){var a=n[s];r[a]=this[a]}if(r.hash=e.hash,""===e.href)return r.href=r.format(),r;if(e.slashes&&!e.protocol){for(var u=Object.keys(e),c=0;c<u.length;c++){var l=u[c];"protocol"!==l&&(r[l]=e[l])}return y[r.protocol]&&r.hostname&&!r.pathname&&(r.path=r.pathname="/"),r.href=r.format(),r}if(e.protocol&&e.protocol!==r.protocol){if(!y[e.protocol]){for(var d=Object.keys(e),f=0;f<d.length;f++){var h=d[f];r[h]=e[h]}return r.href=r.format(),r}if(r.protocol=e.protocol,e.host||g[e.protocol])r.pathname=e.pathname;else{for(var p=(e.pathname||"").split("/");p.length&&!(e.host=p.shift()););e.host||(e.host=""),e.hostname||(e.hostname=""),""!==p[0]&&p.unshift(""),p.length<2&&p.unshift(""),r.pathname=p.join("/")}if(r.search=e.search,r.query=e.query,r.host=e.host||"",r.auth=e.auth,r.hostname=e.hostname||e.host,r.port=e.port,r.pathname||r.search){var v=r.pathname||"",m=r.search||"";r.path=v+m}return r.slashes=r.slashes||e.slashes,r.href=r.format(),r}var _=r.pathname&&"/"===r.pathname.charAt(0),b=e.host||e.pathname&&"/"===e.pathname.charAt(0),k=b||_||r.host&&e.pathname,S=k,E=r.pathname&&r.pathname.split("/")||[],w=(p=e.pathname&&e.pathname.split("/")||[],r.protocol&&!y[r.protocol]);if(w&&(r.hostname="",r.port=null,r.host&&(""===E[0]?E[0]=r.host:E.unshift(r.host)),r.host="",e.protocol&&(e.hostname=null,e.port=null,e.host&&(""===p[0]?p[0]=e.host:p.unshift(e.host)),e.host=null),k=k&&(""===p[0]||""===E[0])),b)r.host=e.host||""===e.host?e.host:r.host,r.hostname=e.hostname||""===e.hostname?e.hostname:r.hostname,r.search=e.search,r.query=e.query,E=p;else if(p.length)E||(E=[]),E.pop(),E=E.concat(p),r.search=e.search,r.query=e.query;else if(!i.isNullOrUndefined(e.search)){if(w)r.hostname=r.host=E.shift(),(C=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=C.shift(),r.host=r.hostname=C.shift());return r.search=e.search,r.query=e.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!E.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var I=E.slice(-1)[0],R=(r.host||e.host||E.length>1)&&("."===I||".."===I)||""===I,T=0,x=E.length;x>=0;x--)"."===(I=E[x])?E.splice(x,1):".."===I?(E.splice(x,1),T++):T&&(E.splice(x,1),T--);if(!k&&!S)for(;T--;T)E.unshift("..");!k||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),R&&"/"!==E.join("/").substr(-1)&&E.push("");var C,O=""===E[0]||E[0]&&"/"===E[0].charAt(0);w&&(r.hostname=r.host=O?"":E.length?E.shift():"",(C=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=C.shift(),r.host=r.hostname=C.shift()));return(k=k||r.host&&E.length)&&!O&&E.unshift(""),E.length?r.pathname=E.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{"./util":52,punycode:32,querystring:46}],52:[function(e,t,r){"use strict";t.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],53:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.ReEmitter=void 0;var i=n(e("@babel/runtime/helpers/classCallCheck")),o=n(e("@babel/runtime/helpers/createClass"));function s(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,u=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){u=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u=function(){function e(t){(0,i.default)(this,e),this.target=t,this.boundHandlers={}}return(0,o.default)(e,[{key:"_handleEvent",value:function(e){for(var t,r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];(t=this.target).emit.apply(t,[e].concat(n))}},{key:"reEmit",value:function(e,t){var r,n=function(t){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];t.apply(void 0,n.concat([e]))},i=s(t);try{for(i.s();!(r=i.n()).done;){var o=r.value;void 0===this.boundHandlers[o]&&(this.boundHandlers[o]=this._handleEvent.bind(this,o));var a=n.bind(this,this.boundHandlers[o]);e.on(o,a)}}catch(e){i.e(e)}finally{i.f()}}}]),e}();r.ReEmitter=u},{"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12}],54:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.AutoDiscovery=void 0;var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=n(e("@babel/runtime/helpers/createClass")),a=n(e("@babel/runtime/helpers/classCallCheck")),u=e("./logger"),c=e("url"),l=function(){function t(){(0,a.default)(this,t)}var r,n,l,d;return(0,s.default)(t,null,[{key:"fromDiscoveryConfig",value:(d=(0,o.default)(i.default.mark((function e(r){var n,o,s,a,c,l;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n={"m.homeserver":{state:t.FAIL_ERROR,error:t.ERROR_INVALID,base_url:null},"m.identity_server":{state:t.PROMPT,error:null,base_url:null}},r&&r["m.homeserver"]){e.next=6;break}return u.logger.error("No m.homeserver key in config"),n["m.homeserver"].state=t.FAIL_PROMPT,n["m.homeserver"].error=t.ERROR_INVALID,e.abrupt("return",Promise.resolve(n));case 6:if(r["m.homeserver"].base_url){e.next=11;break}return u.logger.error("No m.homeserver base_url in config"),n["m.homeserver"].state=t.FAIL_PROMPT,n["m.homeserver"].error=t.ERROR_INVALID_HS_BASE_URL,e.abrupt("return",Promise.resolve(n));case 11:if(o=this._sanitizeWellKnownUrl(r["m.homeserver"].base_url)){e.next=16;break}return u.logger.error("Invalid base_url for m.homeserver"),n["m.homeserver"].error=t.ERROR_INVALID_HS_BASE_URL,e.abrupt("return",Promise.resolve(n));case 16:return e.next=18,this._fetchWellKnownObject("".concat(o,"/_matrix/client/versions"));case 18:if((s=e.sent)&&s.raw.versions){e.next=24;break}return u.logger.error("Invalid /versions response"),n["m.homeserver"].error=t.ERROR_INVALID_HOMESERVER,n["m.homeserver"].base_url=o,e.abrupt("return",Promise.resolve(n));case 24:if(n["m.homeserver"]={state:t.SUCCESS,error:null,base_url:o},a="",!r["m.identity_server"]){e.next=41;break}if(c={"m.homeserver":n["m.homeserver"],"m.identity_server":{state:t.FAIL_PROMPT,error:t.ERROR_INVALID_IS,base_url:null}},a=this._sanitizeWellKnownUrl(r["m.identity_server"].base_url)){e.next=33;break}return u.logger.error("Invalid base_url for m.identity_server"),c["m.identity_server"].error=t.ERROR_INVALID_IS_BASE_URL,e.abrupt("return",Promise.resolve(c));case 33:return e.next=35,this._fetchWellKnownObject("".concat(a,"/_matrix/identity/api/v1"));case 35:if((l=e.sent)&&l.raw&&"SUCCESS"===l.action){e.next=41;break}return u.logger.error("Invalid /api/v1 response"),c["m.identity_server"].error=t.ERROR_INVALID_IDENTITY_SERVER,c["m.identity_server"].base_url=a,e.abrupt("return",Promise.resolve(c));case 41:return a&&a.length>0&&(n["m.identity_server"]={state:t.SUCCESS,error:null,base_url:a}),Object.keys(r).map((function(e){if("m.homeserver"===e||"m.identity_server"===e)for(var t=["error","state","base_url"],i=0,o=Object.keys(r[e]);i<o.length;i++){var s=o[i];t.includes(s)||(n[e][s]=r[e][s])}else n[e]=r[e]})),e.abrupt("return",Promise.resolve(n));case 44:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"findClientConfig",value:(l=(0,o.default)(i.default.mark((function e(r){var n,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r&&"string"==typeof r&&0!==r.length){e.next=2;break}throw new Error("'domain' must be a string of non-zero length");case 2:return n={"m.homeserver":{state:t.FAIL_ERROR,error:t.ERROR_INVALID,base_url:null},"m.identity_server":{state:t.PROMPT,error:null,base_url:null}},e.next=5,this._fetchWellKnownObject("https://".concat(r,"/.well-known/matrix/client"));case 5:if((o=e.sent)&&"SUCCESS"===o.action){e.next=11;break}return u.logger.error("No response or error when parsing .well-known"),o.reason&&u.logger.error(o.reason),"IGNORE"===o.action?n["m.homeserver"]={state:t.PROMPT,error:null,base_url:null}:(n["m.homeserver"].state=t.FAIL_PROMPT,n["m.homeserver"].error=t.ERROR_INVALID),e.abrupt("return",Promise.resolve(n));case 11:return e.abrupt("return",t.fromDiscoveryConfig(o.raw));case 12:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"getRawClientConfig",value:(n=(0,o.default)(i.default.mark((function e(t){var r;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t&&"string"==typeof t&&0!==t.length){e.next=2;break}throw new Error("'domain' must be a string of non-zero length");case 2:return e.next=4,this._fetchWellKnownObject("https://".concat(t,"/.well-known/matrix/client"));case 4:if(r=e.sent){e.next=7;break}return e.abrupt("return",{});case 7:return e.abrupt("return",r.raw||{});case 8:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"_sanitizeWellKnownUrl",value:function(e){if(!e)return!1;try{var t=null;try{t=c.URL?new c.URL(e):new URL(e)}catch(r){t=new URL(e)}if(!t||!t.hostname)return!1;if("http:"!==t.protocol&&"https:"!==t.protocol)return!1;var r=t.port?":".concat(t.port):"",n=t.pathname?t.pathname:"",i="".concat(t.protocol,"//").concat(t.hostname).concat(r).concat(n);return i.endsWith("/")&&(i=i.substring(0,i.length-1)),i}catch(e){return u.logger.error(e),!1}}},{key:"_fetchWellKnownObject",value:(r=(0,o.default)(i.default.mark((function r(n){return i.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",new Promise((function(r,i){var o=e("./matrix").getRequest();if(!o)throw new Error("No request library available");o({method:"GET",uri:n,timeout:5e3},(function(e,n,i){if(e||n&&(n.statusCode<200||n.statusCode>=300)){var o="FAIL_PROMPT",s=(e?e.message:null)||"General failure";return n&&404===n.statusCode&&(o="IGNORE",s=t.ERROR_MISSING_WELLKNOWN),void r({raw:{},action:o,reason:s,error:e})}try{r({raw:JSON.parse(i),action:"SUCCESS"})}catch(e){var a=t.ERROR_INVALID;"SyntaxError"===e.name&&(a=t.ERROR_INVALID_JSON),r({raw:{},action:"FAIL_PROMPT",reason:a,error:e})}}))})));case 1:case"end":return r.stop()}}),r)}))),function(e){return r.apply(this,arguments)})},{key:"ERROR_INVALID",get:function(){return"Invalid homeserver discovery response"}},{key:"ERROR_GENERIC_FAILURE",get:function(){return"Failed to get autodiscovery configuration from server"}},{key:"ERROR_INVALID_HS_BASE_URL",get:function(){return"Invalid base_url for m.homeserver"}},{key:"ERROR_INVALID_HOMESERVER",get:function(){return"Homeserver URL does not appear to be a valid Matrix homeserver"}},{key:"ERROR_INVALID_IS_BASE_URL",get:function(){return"Invalid base_url for m.identity_server"}},{key:"ERROR_INVALID_IDENTITY_SERVER",get:function(){return"Identity server URL does not appear to be a valid identity server"}},{key:"ERROR_INVALID_IS",get:function(){return"Invalid identity server discovery response"}},{key:"ERROR_MISSING_WELLKNOWN",get:function(){return"No .well-known JSON file found"}},{key:"ERROR_INVALID_JSON",get:function(){return"Invalid JSON"}},{key:"ALL_ERRORS",get:function(){return[t.ERROR_INVALID,t.ERROR_GENERIC_FAILURE,t.ERROR_INVALID_HS_BASE_URL,t.ERROR_INVALID_HOMESERVER,t.ERROR_INVALID_IS_BASE_URL,t.ERROR_INVALID_IDENTITY_SERVER,t.ERROR_INVALID_IS,t.ERROR_MISSING_WELLKNOWN,t.ERROR_INVALID_JSON]}},{key:"FAIL_ERROR",get:function(){return"FAIL_ERROR"}},{key:"FAIL_PROMPT",get:function(){return"FAIL_PROMPT"}},{key:"PROMPT",get:function(){return"PROMPT"}},{key:"SUCCESS",get:function(){return"SUCCESS"}}]),t}();r.AutoDiscovery=l},{"./logger":95,"./matrix":96,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":27,url:51}],55:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixBaseApis=g;var o=i(e("@babel/runtime/helpers/typeof")),s=i(e("@babel/runtime/regenerator")),a=i(e("@babel/runtime/helpers/asyncToGenerator")),u=e("./service-types"),c=e("./logger"),l=e("./pushprocessor"),d=n(e("./utils")),f=e("./http-api");function h(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function v(e,t){switch(e){case u.SERVICE_TYPES.IS:return t+f.PREFIX_IDENTITY_V2+"/terms";case u.SERVICE_TYPES.IM:return t+"/_matrix/integrations/v1/terms";default:throw new Error("Unsupported service type")}}function g(e){d.checkObjectHasKeys(e,["baseUrl","request"]),this.baseUrl=e.baseUrl,this.idBaseUrl=e.idBaseUrl,this.identityServer=e.identityServer;var t={baseUrl:e.baseUrl,idBaseUrl:e.idBaseUrl,accessToken:e.accessToken,request:e.request,prefix:f.PREFIX_R0,onlyData:!0,extraParams:e.queryParams,localTimeoutMs:e.localTimeoutMs,useAuthorizationHeader:e.useAuthorizationHeader};this._http=new f.MatrixHttpApi(this,t),this._txnCtr=0}g.prototype.getHomeserverUrl=function(){return this.baseUrl},g.prototype.getIdentityServerUrl=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return e&&(this.idBaseUrl.startsWith("http://")||this.idBaseUrl.startsWith("https://"))?this.idBaseUrl.split("://")[1]:this.idBaseUrl},g.prototype.setIdentityServerUrl=function(e){this.idBaseUrl=d.ensureNoTrailingSlash(e),this._http.setIdBaseUrl(this.idBaseUrl)},g.prototype.getAccessToken=function(){return this._http.opts.accessToken||null},g.prototype.isLoggedIn=function(){return void 0!==this._http.opts.accessToken},g.prototype.makeTxnId=function(){return"m"+(new Date).getTime()+"."+this._txnCtr++},g.prototype.isUsernameAvailable=function(e){return this._http.authedRequest(void 0,"GET","/register/available",{username:e}).then((function(e){return e.available}))},g.prototype.register=function(e,t,r,n,i,o,s,a){!0===i?i={email:!0}:null==i&&(i={}),"function"==typeof s&&(a=s,s=void 0),r&&(n.session=r);var u={auth:n};return null!=e&&(u.username=e),null!=t&&(u.password=t),i.email&&(u.bind_email=!0),i.msisdn&&(u.bind_msisdn=!0),null!=o&&(u.guest_access_token=o),null!=s&&(u.inhibit_login=s),null!=t&&(u.x_show_msisdn=!0),this.registerRequest(u,void 0,a)},g.prototype.registerGuest=function(e,t){return(e=e||{}).body=e.body||{},this.registerRequest(e.body,"guest",t)},g.prototype.registerRequest=function(e,t,r){var n={};return t&&(n.kind=t),this._http.request(r,"POST","/register",n,e)},g.prototype.loginFlows=function(e){return this._http.request(e,"GET","/login")},g.prototype.login=function(e,t,r){var n=this,i={type:e};return d.extend(i,t),this._http.authedRequest((function(e,t){t&&t.access_token&&t.user_id&&(n._http.opts.accessToken=t.access_token,n.credentials={userId:t.user_id}),r&&r(e,t)}),"POST","/login",void 0,i)},g.prototype.loginWithPassword=function(e,t,r){return this.login("m.login.password",{user:e,password:t},r)},g.prototype.loginWithSAML2=function(e,t){return this.login("m.login.saml2",{relay_state:e},t)},g.prototype.getCasLoginUrl=function(e){return this.getSsoLoginUrl(e,"cas")},g.prototype.getSsoLoginUrl=function(e,t){return void 0===t&&(t="sso"),this._http.getUrl("/login/"+t+"/redirect",{redirectUrl:e},f.PREFIX_R0)},g.prototype.loginWithToken=function(e,t){return this.login("m.login.token",{token:e},t)},g.prototype.logout=function(e){return this._http.authedRequest(e,"POST","/logout")},g.prototype.deactivateAccount=function(e,t){if("function"==typeof t)throw new Error("deactivateAccount no longer accepts a callback parameter");var r={};return e&&(r.auth=e),void 0!==t&&(r.erase=t),this._http.authedRequest(void 0,"POST","/account/deactivate",void 0,r)},g.prototype.getFallbackAuthUrl=function(e,t){var r=d.encodeUri("/auth/$loginType/fallback/web",{$loginType:e});return this._http.getUrl(r,{session:t},f.PREFIX_R0)},g.prototype.createRoom=function(){var e=(0,a.default)(s.default.mark((function e(t,r){var n,i,o,a;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=(t.invite_3pid||[]).filter((function(e){return!e.id_access_token})),e.t0=n.length>0&&this.identityServer&&this.identityServer.getAccessToken,!e.t0){e.next=6;break}return e.next=5,this.doesServerAcceptIdentityAccessToken();case 5:e.t0=e.sent;case 6:if(!e.t0){e.next=11;break}return e.next=9,this.identityServer.getAccessToken();case 9:if(i=e.sent){o=h(n);try{for(o.s();!(a=o.n()).done;)a.value.id_access_token=i}catch(e){o.e(e)}finally{o.f()}}case 11:return e.abrupt("return",this._http.authedRequest(r,"POST","/createRoom",void 0,t));case 12:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),g.prototype.fetchRelations=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i,o){var a,u,c,l;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a={},o.from&&(a.from=o.from),u=d.encodeParams(a),c=d.encodeUri("/rooms/$roomId/relations/$eventId/$relationType/$eventType?"+u,{$roomId:t,$eventId:r,$relationType:n,$eventType:i}),e.next=6,this._http.authedRequest(void 0,"GET",c,null,null,{prefix:f.PREFIX_UNSTABLE});case 6:return l=e.sent,e.abrupt("return",l);case 8:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o){return e.apply(this,arguments)}}(),g.prototype.roomState=function(e,t){var r=d.encodeUri("/rooms/$roomId/state",{$roomId:e});return this._http.authedRequest(t,"GET",r)},g.prototype.fetchRoomEvent=function(e,t,r){var n=d.encodeUri("/rooms/$roomId/event/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(r,"GET",n)},g.prototype.members=function(e,t,r,n,i){var o={};t&&(o.membership=t),r&&(o.not_membership=r),n&&(o.at=n);var s=d.encodeParams(o),a=d.encodeUri("/rooms/$roomId/members?"+s,{$roomId:e});return this._http.authedRequest(i,"GET",a)},g.prototype.upgradeRoom=function(e,t){var r=d.encodeUri("/rooms/$roomId/upgrade",{$roomId:e});return this._http.authedRequest(void 0,"POST",r,void 0,{new_version:t})},g.prototype.getGroupSummary=function(e){var t=d.encodeUri("/groups/$groupId/summary",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.getGroupProfile=function(e){var t=d.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.setGroupProfile=function(e,t){var r=d.encodeUri("/groups/$groupId/profile",{$groupId:e});return this._http.authedRequest(void 0,"POST",r,void 0,t)},g.prototype.setGroupJoinPolicy=function(e,t){var r=d.encodeUri("/groups/$groupId/settings/m.join_policy",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,{"m.join_policy":t})},g.prototype.getGroupUsers=function(e){var t=d.encodeUri("/groups/$groupId/users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.getGroupInvitedUsers=function(e){var t=d.encodeUri("/groups/$groupId/invited_users",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.getGroupRooms=function(e){var t=d.encodeUri("/groups/$groupId/rooms",{$groupId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.inviteUserToGroup=function(e,t){var r=d.encodeUri("/groups/$groupId/admin/users/invite/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},g.prototype.removeUserFromGroup=function(e,t){var r=d.encodeUri("/groups/$groupId/admin/users/remove/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"PUT",r,void 0,{})},g.prototype.addUserToGroupSummary=function(e,t,r){var n=d.encodeUri(r?"/groups/$groupId/summary/$roleId/users/$userId":"/groups/$groupId/summary/users/$userId",{$groupId:e,$roleId:r,$userId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},g.prototype.removeUserFromGroupSummary=function(e,t){var r=d.encodeUri("/groups/$groupId/summary/users/$userId",{$groupId:e,$userId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},g.prototype.addRoomToGroupSummary=function(e,t,r){var n=d.encodeUri(r?"/groups/$groupId/summary/$categoryId/rooms/$roomId":"/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$categoryId:r,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{})},g.prototype.removeRoomFromGroupSummary=function(e,t){var r=d.encodeUri("/groups/$groupId/summary/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},g.prototype.addRoomToGroup=function(e,t,r){void 0===r&&(r=!0);var n=d.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{"m.visibility":{type:r?"public":"private"}})},g.prototype.updateGroupRoomVisibility=function(e,t,r){var n=d.encodeUri("/groups/$groupId/admin/rooms/$roomId/config/m.visibility",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"PUT",n,void 0,{type:r?"public":"private"})},g.prototype.removeRoomFromGroup=function(e,t){var r=d.encodeUri("/groups/$groupId/admin/rooms/$roomId",{$groupId:e,$roomId:t});return this._http.authedRequest(void 0,"DELETE",r,void 0,{})},g.prototype.acceptGroupInvite=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=d.encodeUri("/groups/$groupId/self/accept_invite",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,t||{})},g.prototype.joinGroup=function(e){var t=d.encodeUri("/groups/$groupId/self/join",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},g.prototype.leaveGroup=function(e){var t=d.encodeUri("/groups/$groupId/self/leave",{$groupId:e});return this._http.authedRequest(void 0,"PUT",t,void 0,{})},g.prototype.getJoinedGroups=function(){var e=d.encodeUri("/joined_groups");return this._http.authedRequest(void 0,"GET",e)},g.prototype.createGroup=function(e){var t=d.encodeUri("/create_group");return this._http.authedRequest(void 0,"POST",t,void 0,e)},g.prototype.getPublicisedGroups=function(e){var t=d.encodeUri("/publicised_groups");return this._http.authedRequest(void 0,"POST",t,void 0,{user_ids:e})},g.prototype.setGroupPublicity=function(e,t){var r=d.encodeUri("/groups/$groupId/self/update_publicity",{$groupId:e});return this._http.authedRequest(void 0,"PUT",r,void 0,{publicise:t})},g.prototype.getStateEvent=function(e,t,r,n){var i={$roomId:e,$eventType:t,$stateKey:r},o=d.encodeUri("/rooms/$roomId/state/$eventType",i);return void 0!==r&&(o=d.encodeUri(o+"/$stateKey",i)),this._http.authedRequest(n,"GET",o)},g.prototype.sendStateEvent=function(e,t,r,n,i){var o={$roomId:e,$eventType:t,$stateKey:n},s=d.encodeUri("/rooms/$roomId/state/$eventType",o);return void 0!==n&&(s=d.encodeUri(s+"/$stateKey",o)),this._http.authedRequest(i,"PUT",s,void 0,r)},g.prototype.roomInitialSync=function(e,t,r){d.isFunction(t)&&(r=t,t=void 0);var n=d.encodeUri("/rooms/$roomId/initialSync",{$roomId:e});return t||(t=30),this._http.authedRequest(r,"GET",n,{limit:t})},g.prototype.setRoomReadMarkersHttpRequest=function(e,t,r,n){var i=d.encodeUri("/rooms/$roomId/read_markers",{$roomId:e}),o={"m.fully_read":t,"m.read":r,"m.hidden":Boolean(!!n&&n.hidden)};return this._http.authedRequest(void 0,"POST",i,void 0,o)},g.prototype.getJoinedRooms=function(){var e=d.encodeUri("/joined_rooms");return this._http.authedRequest(void 0,"GET",e)},g.prototype.getJoinedRoomMembers=function(e){var t=d.encodeUri("/rooms/$roomId/joined_members",{$roomId:e});return this._http.authedRequest(void 0,"GET",t)},g.prototype.publicRooms=function(e,t){"function"==typeof e&&(t=e,e={}),void 0===e&&(e={});var r={};return e.server&&(r.server=e.server,delete e.server),0===Object.keys(e).length&&0===Object.keys(r).length?this._http.authedRequest(t,"GET","/publicRooms"):this._http.authedRequest(t,"POST","/publicRooms",r,e)},g.prototype.createAlias=function(e,t,r){var n=d.encodeUri("/directory/room/$alias",{$alias:e}),i={room_id:t};return this._http.authedRequest(r,"PUT",n,void 0,i)},g.prototype.deleteAlias=function(e,t){var r=d.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"DELETE",r,void 0,void 0)},g.prototype.unstableGetLocalAliases=function(e,t){var r=d.encodeUri("/rooms/$roomId/aliases",{$roomId:e}),n=f.PREFIX_UNSTABLE+"/org.matrix.msc2432";return this._http.authedRequest(t,"GET",r,null,null,{prefix:n})},g.prototype.getRoomIdForAlias=function(e,t){var r=d.encodeUri("/directory/room/$alias",{$alias:e});return this._http.authedRequest(t,"GET",r)},g.prototype.resolveRoomAlias=function(e,t){var r=d.encodeUri("/directory/room/$alias",{$alias:e});return this._http.request(t,"GET",r)},g.prototype.getRoomDirectoryVisibility=function(e,t){var r=d.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(t,"GET",r)},g.prototype.setRoomDirectoryVisibility=function(e,t,r){var n=d.encodeUri("/directory/list/room/$roomId",{$roomId:e});return this._http.authedRequest(r,"PUT",n,void 0,{visibility:t})},g.prototype.setRoomDirectoryVisibilityAppService=function(e,t,r,n){var i=d.encodeUri("/directory/list/appservice/$networkId/$roomId",{$networkId:e,$roomId:t});return this._http.authedRequest(n,"PUT",i,void 0,{visibility:r})},g.prototype.searchUserDirectory=function(e){var t={search_term:e.term};return void 0!==e.limit&&(t.limit=e.limit),this._http.authedRequest(void 0,"POST","/user_directory/search",void 0,t)},g.prototype.uploadContent=function(e,t){return this._http.uploadContent(e,t)},g.prototype.cancelUpload=function(e){return this._http.cancelUpload(e)},g.prototype.getCurrentUploads=function(){return this._http.getCurrentUploads()},g.prototype.getProfileInfo=function(e,t,r){d.isFunction(t)&&(r=t,t=void 0);var n=t?d.encodeUri("/profile/$userId/$info",{$userId:e,$info:t}):d.encodeUri("/profile/$userId",{$userId:e});return this._http.authedRequest(r,"GET",n)},g.prototype.getThreePids=function(e){return this._http.authedRequest(e,"GET","/account/3pid",void 0,void 0)},g.prototype.addThreePid=function(e,t,r){var n={threePidCreds:e,bind:t};return this._http.authedRequest(r,"POST","/account/3pid",null,n)},g.prototype.addThreePidOnly=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r="/account/3pid/add",e.next=3,this.isVersionSupported("r0.6.0");case 3:if(!e.sent){e.next=7;break}e.t0=f.PREFIX_R0,e.next=8;break;case 7:e.t0=f.PREFIX_UNSTABLE;case 8:return n=e.t0,e.abrupt("return",this._http.authedRequest(void 0,"POST",r,null,t,{prefix:n}));case 10:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),g.prototype.bindThreePid=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r="/account/3pid/bind",e.next=3,this.isVersionSupported("r0.6.0");case 3:if(!e.sent){e.next=7;break}e.t0=f.PREFIX_R0,e.next=8;break;case 7:e.t0=f.PREFIX_UNSTABLE;case 8:return n=e.t0,e.abrupt("return",this._http.authedRequest(void 0,"POST",r,null,t,{prefix:n}));case 10:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),g.prototype.unbindThreePid=function(){var e=(0,a.default)(s.default.mark((function e(t,r){var n,i,o;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n="/account/3pid/unbind",i={medium:t,address:r,id_server:this.getIdentityServerUrl(!0)},e.next=4,this.isVersionSupported("r0.6.0");case 4:if(!e.sent){e.next=8;break}e.t0=f.PREFIX_R0,e.next=9;break;case 8:e.t0=f.PREFIX_UNSTABLE;case 9:return o=e.t0,e.abrupt("return",this._http.authedRequest(void 0,"POST",n,null,i,{prefix:o}));case 11:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),g.prototype.deleteThreePid=function(e,t){var r={medium:e,address:t};return this._http.authedRequest(void 0,"POST","/account/3pid/delete",null,r)},g.prototype.setPassword=function(e,t,r){var n={auth:e,new_password:t};return this._http.authedRequest(r,"POST","/account/password",null,n)},g.prototype.getDevices=function(){return this._http.authedRequest(void 0,"GET","/devices",void 0,void 0)},g.prototype.setDeviceDetails=function(e,t){var r=d.encodeUri("/devices/$device_id",{$device_id:e});return this._http.authedRequest(void 0,"PUT",r,void 0,t)},g.prototype.deleteDevice=function(e,t){var r=d.encodeUri("/devices/$device_id",{$device_id:e}),n={};return t&&(n.auth=t),this._http.authedRequest(void 0,"DELETE",r,void 0,n)},g.prototype.deleteMultipleDevices=function(e,t){var r={devices:e};t&&(r.auth=t);return this._http.authedRequest(void 0,"POST","/delete_devices",void 0,r)},g.prototype.getPushers=function(e){return this._http.authedRequest(e,"GET","/pushers",void 0,void 0)},g.prototype.setPusher=function(e,t){return this._http.authedRequest(t,"POST","/pushers/set",null,e)},g.prototype.getPushRules=function(e){return this._http.authedRequest(e,"GET","/pushrules/").then((function(e){return l.PushProcessor.rewriteDefaultRules(e)}))},g.prototype.addPushRule=function(e,t,r,n,i){var o=d.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this._http.authedRequest(i,"PUT",o,void 0,n)},g.prototype.deletePushRule=function(e,t,r,n){var i=d.encodeUri("/pushrules/"+e+"/$kind/$ruleId",{$kind:t,$ruleId:r});return this._http.authedRequest(n,"DELETE",i)},g.prototype.setPushRuleEnabled=function(e,t,r,n,i){var o=d.encodeUri("/pushrules/"+e+"/$kind/$ruleId/enabled",{$kind:t,$ruleId:r});return this._http.authedRequest(i,"PUT",o,void 0,{enabled:n})},g.prototype.setPushRuleActions=function(e,t,r,n,i){var o=d.encodeUri("/pushrules/"+e+"/$kind/$ruleId/actions",{$kind:t,$ruleId:r});return this._http.authedRequest(i,"PUT",o,void 0,{actions:n})},g.prototype.search=function(e,t){var r={};return e.next_batch&&(r.next_batch=e.next_batch),this._http.authedRequest(t,"POST","/search",r,e.body)},g.prototype.uploadKeysRequest=function(e,t,r){return this._http.authedRequest(r,"POST","/keys/upload",void 0,e)},g.prototype.uploadKeySignatures=function(e){return this._http.authedRequest(void 0,"POST","/keys/signatures/upload",void 0,e,{prefix:f.PREFIX_UNSTABLE})},g.prototype.downloadKeysForUsers=function(e,t){if(d.isFunction(t))throw new Error("downloadKeysForUsers no longer accepts a callback parameter");var r={device_keys:{}};return"token"in(t=t||{})&&(r.token=t.token),e.forEach((function(e){r.device_keys[e]=[]})),this._http.authedRequest(void 0,"POST","/keys/query",void 0,r)},g.prototype.claimOneTimeKeys=function(e,t,r){var n={};void 0===t&&(t="signed_curve25519");for(var i=0;i<e.length;++i){var o=e[i][0],s=e[i][1],a=n[o]||{};n[o]=a,a[s]=t}var u={one_time_keys:n};r&&(u.timeout=r);return this._http.authedRequest(void 0,"POST","/keys/claim",void 0,u)},g.prototype.getKeyChanges=function(e,t){var r={from:e,to:t};return this._http.authedRequest(void 0,"GET","/keys/changes",r,void 0)},g.prototype.uploadDeviceSigningKeys=function(e,t){var r=Object.assign({},t);return e&&Object.assign(r,{auth:e}),this._http.authedRequest(void 0,"POST","/keys/device_signing/upload",void 0,r,{prefix:f.PREFIX_UNSTABLE})},g.prototype.registerWithIdentityServer=function(e){if(!this.idBaseUrl)throw new Error("No Identity Server base URL set");var t=this.idBaseUrl+f.PREFIX_IDENTITY_V2+"/account/register";return this._http.requestOtherUrl(void 0,"POST",t,null,e)},g.prototype.requestEmailToken=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i,o,a){var u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u={client_secret:r,email:t,send_attempt:n,next_link:i},e.next=3,this._http.idServerRequest(o,"POST","/validate/email/requestToken",u,f.PREFIX_IDENTITY_V2,a);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s){return e.apply(this,arguments)}}(),g.prototype.requestMsisdnToken=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i,o,a,u){var c;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c={client_secret:n,country:t,phone_number:r,send_attempt:i,next_link:o},e.next=3,this._http.idServerRequest(a,"POST","/validate/msisdn/requestToken",c,f.PREFIX_IDENTITY_V2,u);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s,a){return e.apply(this,arguments)}}(),g.prototype.submitMsisdnToken=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o={sid:t,client_secret:r,token:n},e.next=3,this._http.idServerRequest(void 0,"POST","/validate/msisdn/submitToken",o,f.PREFIX_IDENTITY_V2,i);case 3:return e.abrupt("return",e.sent);case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),g.prototype.submitMsisdnTokenOtherUrl=function(e,t,r,n){var i={sid:t,client_secret:r,token:n};return this._http.requestOtherUrl(void 0,"POST",e,void 0,i)},g.prototype.getIdentityHashDetails=function(e){return this._http.idServerRequest(void 0,"GET","/hash_details",null,f.PREFIX_IDENTITY_V2,e)},g.prototype.identityHashedLookup=function(){var e=(0,a.default)(s.default.mark((function e(r,n){var i,o,a,u,c,l,d,h,p,v,g;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i={},e.next=3,this.getIdentityHashDetails(n);case 3:if((o=e.sent)&&o.lookup_pepper&&o.algorithms){e.next=6;break}throw new Error("Unsupported identity server: bad response");case 6:if(i.pepper=o.lookup_pepper,a={},!o.algorithms.includes("sha256")){e.next=14;break}u=new t.Olm.Utility,i.addresses=r.map((function(e){var t=e[0].toLowerCase(),r=e[1].toLowerCase(),n=u.sha256("".concat(t," ").concat(r," ").concat(i.pepper)).replace(/\+/g,"-").replace(/\//g,"_");return a[n]=e[0],n})),i.algorithm="sha256",e.next=20;break;case 14:if(!o.algorithms.includes("none")){e.next=19;break}i.addresses=r.map((function(e){var t=e[0].toLowerCase(),r=e[1].toLowerCase(),n="".concat(t," ").concat(r);return a[n]=e[0],n})),i.algorithm="none",e.next=20;break;case 19:throw new Error("Unsupported identity server: unknown hash algorithm");case 20:return e.next=22,this._http.idServerRequest(void 0,"POST","/lookup",i,f.PREFIX_IDENTITY_V2,n);case 22:if((c=e.sent)&&c.mappings){e.next=25;break}return e.abrupt("return",[]);case 25:l=[],d=0,h=Object.keys(c.mappings);case 27:if(!(d<h.length)){e.next=37;break}if(p=h[d],v=c.mappings[p],g=a[p]){e.next=33;break}throw new Error("Identity server returned more results than expected");case 33:l.push({address:g,mxid:v});case 34:d++,e.next=27;break;case 37:return e.abrupt("return",l);case 38:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),g.prototype.lookupThreePid=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a,u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.identityHashedLookup([[r,t]],i);case 2:if(o=e.sent,a=o.find((function(e){return e.address===r}))){e.next=7;break}return n&&n(null,{}),e.abrupt("return",{});case 7:return u={address:r,medium:t,mxid:a.mxid},n&&n(null,u),e.abrupt("return",u);case 10:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),g.prototype.bulkLookupThreePids=function(){var e=(0,a.default)(s.default.mark((function e(t,r){var n,i,o,a,u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.identityHashedLookup(t.map((function(e){return[e[1],e[0]]})),r);case 2:n=e.sent,i=[],o=h(n);try{for(u=function(){var e=a.value,r=t.find((function(t){return t[1]===e.address}));if(!r)throw new Error("Identity sever returned unexpected results");i.push([r[0],e.address,e.mxid])},o.s();!(a=o.n()).done;)u()}catch(e){o.e(e)}finally{o.f()}return e.abrupt("return",{threepids:i});case 7:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),g.prototype.getIdentityAccount=function(e){return this._http.idServerRequest(void 0,"GET","/account",void 0,f.PREFIX_IDENTITY_V2,e)},g.prototype.sendToDevice=function(e,t,r){var n=d.encodeUri("/sendToDevice/$eventType/$txnId",{$eventType:e,$txnId:r||this.makeTxnId()}),i={messages:t},o=Object.keys(t).reduce((function(e,r){return e[r]=Object.keys(t[r]),e}),{});return c.logger.log("PUT ".concat(n),o),this._http.authedRequest(void 0,"PUT",n,void 0,i)},g.prototype.getThirdpartyProtocols=function(){return this._http.authedRequest(void 0,"GET","/thirdparty/protocols",void 0,void 0).then((function(e){if(!e||"object"!==(0,o.default)(e))throw new Error("/thirdparty/protocols did not return an object: ".concat(e));return e}))},g.prototype.getThirdpartyLocation=function(e,t){var r=d.encodeUri("/thirdparty/location/$protocol",{$protocol:e});return this._http.authedRequest(void 0,"GET",r,t,void 0)},g.prototype.getThirdpartyUser=function(e,t){var r=d.encodeUri("/thirdparty/user/$protocol",{$protocol:e});return this._http.authedRequest(void 0,"GET",r,t,void 0)},g.prototype.getTerms=function(e,t){var r=v(e,t);return this._http.requestOtherUrl(void 0,"GET",r)},g.prototype.agreeToTerms=function(e,t,r,n){var i=v(e,t),o={Authorization:"Bearer "+r};return this._http.requestOtherUrl(void 0,"POST",i,null,{user_accepts:n},{headers:o})},g.prototype.reportEvent=function(e,t,r,n){var i=d.encodeUri("/rooms/$roomId/report/$eventId",{$roomId:e,$eventId:t});return this._http.authedRequest(void 0,"POST",i,null,{score:r,reason:n})}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./http-api":92,"./logger":95,"./pushprocessor":109,"./service-types":113,"./utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/typeof":24,"@babel/runtime/regenerator":27}],56:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault"),i=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0});var o={};r.default=void 0;var s=i(e("./matrix"));Object.keys(s).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(o,e)||Object.defineProperty(r,e,{enumerable:!0,get:function(){return s[e]}}))}));var a,u=n(e("browser-request")),c=n(e("qs"));s.request((function(e,t){return e.qs=c.default.stringify(e.qs||{},e.qsStringifyOptions),(0,u.default)(e,t)}));try{a=t.indexedDB}catch(e){}a&&s.setCryptoStoreFactory((function(){return new s.IndexedDBCryptoStore(a,"matrix-js-sdk:crypto")}));var l=s;r.default=l,t.matrixcs=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./matrix":96,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"browser-request":31,qs:40}],57:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixClient=B,r.CRYPTO_ENABLED=void 0;var o=i(e("@babel/runtime/helpers/typeof")),s=i(e("@babel/runtime/regenerator")),a=i(e("@babel/runtime/helpers/asyncToGenerator")),u=i(e("@babel/runtime/helpers/slicedToArray")),c=i(e("url")),l=e("events"),d=e("./base-apis"),f=e("./filter"),h=e("./sync"),p=e("./models/event"),v=e("./models/event-timeline"),g=e("./models/search-result"),y=e("./store/stub"),m=e("./webrtc/call"),_=n(e("./utils")),b=e("./http-api"),k=e("./content-repo"),S=n(e("./content-helpers")),E=n(e("./crypto/olmlib")),w=e("./ReEmitter"),I=e("./crypto/RoomList"),R=e("./logger"),T=e("./crypto"),x=e("./crypto/recoverykey"),C=e("./crypto/key_passphrase"),O=e("./randomstring"),A=e("./pushprocessor"),D=e("./models/user"),P=e("./autodiscovery");function M(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return U(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return U(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var K=(0,T.isCryptoAvailable)();r.CRYPTO_ENABLED=K;function q(e,t,r){for(var n=[],i=0,o=Object.entries(e);i<o.length;i++){var s=(0,u.default)(o[i],2),a=s[0],c=s[1];try{var l=N(c,t);l.session_id=a,l.room_id=r,n.push(l)}catch(e){R.logger.log("Failed to decrypt megolm session from backup",e)}}return n}function N(e,t){return JSON.parse(t.decrypt(e.session_data.ephemeral,e.session_data.mac,e.session_data.ciphertext))}function B(e){var t=this;e.baseUrl=_.ensureNoTrailingSlash(e.baseUrl),e.idBaseUrl=_.ensureNoTrailingSlash(e.idBaseUrl),d.MatrixBaseApis.call(this,e),this.olmVersion=null,this.reEmitter=new w.ReEmitter(this),this.usingExternalCrypto=e.usingExternalCrypto,this.store=e.store||new y.StubStore,this.deviceId=e.deviceId||null;var r=e.userId||null;if(this.credentials={userId:r},e.deviceToImport?this.deviceId?R.logger.warn("not importing device because device ID is provided to constructor independently of exported data"):this.credentials.userId?R.logger.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):R.logger.warn("not importing device because no device ID in exported data"):e.pickleKey&&(this.pickleKey=e.pickleKey),this.scheduler=e.scheduler,this.scheduler){var n=this;this.scheduler.setProcessFunction(function(){var e=(0,a.default)(s.default.mark((function e(t){var r,i;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.getRoom(t.getRoomId()),t.status!==p.EventStatus.SENDING&&W(r,t,p.EventStatus.SENDING),e.next=4,$(n,t);case 4:return i=e.sent,r&&r.updatePendingEvent(t,p.EventStatus.SENT,i.event_id),e.abrupt("return",i);case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}this.clientRunning=!1,this.callList={};var i=(0,m.createNewMatrixCall)(this);this._supportsVoip=!1,i&&(!function(e){var t={},r=[];function n(){if("SYNCING"===e.getSyncState()){if(r.some((function(e){return e.isBeingDecrypted()})))return;for(var t={},n=r.length-1;n>=0;n--){var o=r[n];"m.call.answer"!==o.getType()&&"m.call.hangup"!==o.getType()||(t[o.getContent().call_id]="yep")}r.forEach((function(e){if("m.call.invite"!==e.getType()||!t[e.getContent().call_id])try{i(e)}catch(e){R.logger.error("Caught exception handling call event",e)}})),r=[]}}function i(r){var n,i=r.getContent(),o=i.call_id?e.callList[i.call_id]:void 0;if("m.call.invite"===r.getType()){if(r.getSender()===e.credentials.userId)return;if(r.getAge()>i.lifetime)return;if(o&&"ended"===o.state)return;if(o&&R.logger.log("WARN: Already have a MatrixCall with id %s but got an invite. Clobbering.",i.call_id),!(o=(0,m.createNewMatrixCall)(e,r.getRoomId(),{forceTURN:e._forceTURN})))return void R.logger.log("Incoming call ID "+i.call_id+" but this client doesn't support WebRTC");if(o.callId=i.call_id,o._initWithInvite(r),e.callList[o.callId]=o,t[o.callId])for(n=0;n<t[o.callId].length;n++)o._gotRemoteIceCandidate(t[o.callId][n]);var s,a=_.values(e.callList);for(n=0;n<a.length;++n){var u=a[n];if(o.roomId===u.roomId&&"outbound"===u.direction&&-1!==["wait_local_media","create_offer","invite_sent"].indexOf(u.state)){s=u;break}}s?"wait_local_media"===s.state||"create_offer"===s.state||s.callId>o.callId?(R.logger.log("Glare detected: answering incoming call "+o.callId+" and canceling outgoing call "+s.callId),s._replacedBy(o),o.answer()):(R.logger.log("Glare detected: rejecting incoming call "+o.callId+" and keeping outgoing call "+s.callId),o.hangup()):e.emit("Call.incoming",o)}else if("m.call.answer"===r.getType()){if(!o)return;r.getSender()===e.credentials.userId?"ringing"===o.state&&o._onAnsweredElsewhere(i):o._receivedAnswer(i)}else if("m.call.candidates"===r.getType()){if(r.getSender()===e.credentials.userId)return;if(o)for(n=0;n<i.candidates.length;n++)o._gotRemoteIceCandidate(i.candidates[n]);else t[i.call_id]||(t[i.call_id]=[]),t[i.call_id]=t[i.call_id].concat(i.candidates)}else"m.call.hangup"===r.getType()&&(o?"ended"!==o.state&&(o._onHangupReceived(i),delete e.callList[i.call_id]):(o=(0,m.createNewMatrixCall)(e,r.getRoomId()))&&(o.callId=i.call_id,o._initWithHangup(r),e.callList[i.call_id]=o))}e.on("sync",n),e.on("event",(function(e){(0===e.getType().indexOf("m.call.")||e.isBeingDecrypted())&&r.push(e),(e.isBeingDecrypted()||e.isDecryptionFailure())&&e.once("Event.decrypted",(function(){if(-1!==e.getType().indexOf("m.call."))if(r.includes(e))n();else try{i(e)}catch(e){R.logger.error("Caught exception handling call event",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 I.RoomList(this._cryptoStore),this._pushProcessor=new A.PushProcessor(this),this._serverVersionsPromise=null,this._cachedCapabilities=null,this._clientWellKnown=void 0,this._clientWellKnownPromise=void 0,this.on("Event.decrypted",(function(e){var r=e.getPushActions(),n=t._pushProcessor.actionsForEvent(e);e.setPushActions(n);var i=t.getRoom(e.getRoomId());if(i){var o=i.getUnreadNotificationCount("highlight"),s=!(!r||!r.tweaks)&&!!r.tweaks.highlight,a=!(!n||!n.tweaks)&&!!n.tweaks.highlight;if((s!==a||o>0)&&!i.hasUserReadEvent(t.getUserId(),e.getId())){var u=o;a&&!s&&u++,!a&&s&&u--,i.setUnreadNotificationCount("highlight",u),i.getUnreadNotificationCount("total")<u&&i.setUnreadNotificationCount("total",u)}}})),this.on("Room.receipt",(function(e,r){if(r&&t.isRoomEncrypted(r.roomId)){var n=e.getContent();if(!(Object.keys(n).filter((function(e){return Object.keys(n[e]["m.read"]).includes(t.getUserId())})).length>0))return;for(var i=r.getLiveTimeline().getEvents(),o=0,s=i.length-1;s>=0;s--){if(s===i.length-20)return;var a=i[s];if(r.hasUserReadEvent(t.getUserId(),a.getId()))break;var u=t.getPushActionsForEvent(a);o+=u.tweaks&&u.tweaks.highlight?1:0}r.setUnreadNotificationCount("highlight",o)}}))}function L(e,t,r,n,i,o){return j.apply(this,arguments)}function j(){return(j=(0,a.default)(s.default.mark((function e(t,r,n,i,o,a){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t._crypto){e.next=2;break}throw new Error("End-to-End encryption disabled");case 2:return e.next=4,t._crypto.setDeviceVerification(r,n,i,o,a);case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function F(e,t){var r,n=M(t);try{var i=function(){var t=r.value;e.prototype[t]=function(){var e;if(!this._crypto)throw new Error("End-to-end encryption disabled");return(e=this._crypto)[t].apply(e,arguments)}};for(n.s();!(r=n.n()).done;)i()}catch(e){n.e(e)}finally{n.f()}}function G(e,t,r,n){return Promise.resolve().then((function(){var n=function(e,t,r){if(t.isEncrypted())return null;if(!e.isRoomEncrypted(t.getRoomId()))return null;if(!e._crypto&&e.usingExternalCrypto)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,r)}(e,r,t);return n?(W(t,r,p.EventStatus.ENCRYPTING),n.then((function(){W(t,r,p.EventStatus.SENDING)}))):null})).then((function(){var n;return e.scheduler&&(n=e.scheduler.queueEvent(r))&&e.scheduler.getQueueForEvent(r).length>1&&W(t,r,p.EventStatus.QUEUED),n||(n=$(e,r),t&&(n=n.then((function(e){return t.updatePendingEvent(r,p.EventStatus.SENT,e.event_id),e})))),n})).then((function(e){return n&&n(null,e),e}),(function(e){R.logger.error("Error sending event",e.stack||e);try{r.error=e,W(t,r,p.EventStatus.NOT_SENT),e.event=r,n&&n(e)}catch(t){R.logger.error("Exception in error handler!",t.stack||e)}throw e}))}function V(e,t,r){return"m.reaction"===r?r:e.isRoomEncrypted(t)?"m.room.encrypted":r}function W(e,t,r){e?e.updatePendingEvent(t,r):t.setStatus(r)}function $(e,t){var r=t.getTxnId();r||(r=e.makeTxnId(),t.setTxnId(r));var n,i={$roomId:t.getRoomId(),$eventType:t.getWireType(),$stateKey:t.getStateKey(),$txnId:r};if(t.isState()){var o="/rooms/$roomId/state/$eventType";t.getStateKey()&&t.getStateKey().length>0&&(o="/rooms/$roomId/state/$eventType/$stateKey"),n=_.encodeUri(o,i)}else if(t.isRedaction()){n=_.encodeUri("/rooms/$roomId/redact/$redactsEventId/$txnId",Object.assign({$redactsEventId:t.event.redacts},i))}else n=_.encodeUri("/rooms/$roomId/send/$eventType/$txnId",i);return e._http.authedRequest(void 0,"PUT",n,void 0,t.getWireContent()).then((function(e){return R.logger.log("Event sent to ".concat(t.getRoomId()," with event id ").concat(e.event_id)),e}))}function H(e,t,r,n,i,o){_.isFunction(i)&&(o=i,i=void 0);var s=_.encodeUri("/rooms/$room_id/$membership",{$room_id:t,$membership:n});return e._http.authedRequest(o,"POST",s,void 0,{user_id:r,reason:i})}function Y(e){e._supportsVoip&&e.turnServer().then((function(t){if(t.uris){R.logger.log("Got TURN URIs: "+t.uris+" refresh in "+t.ttl+" secs");var r={urls:t.uris,username:t.username,credential:t.password};e._turnServers=[r],e._checkTurnServersTimeoutID=setTimeout((function(){Y(e)}),1e3*(t.ttl||3600)*.9)}}),(function(t){R.logger.error("Failed to get TURN URIs"),e._checkTurnServersTimeoutID=setTimeout((function(){Y(e)}),6e4)}))}function z(e,t,r){e&&e(r),t(r)}function Q(e,t,r){e&&e(null,r),t(r)}function J(e,t){var r=Boolean(t&&t.preventReEmit);return function(t){var n=new p.MatrixEvent(t);n.isEncrypted()&&(r||e.reEmitter.reEmit(n,["Event.decrypted"]),n.attemptDecryption(e._crypto));var i=e.getRoom(n.getRoomId());return i&&!r&&i.reEmitter.reEmit(n,["Event.replaced"]),n}}_.inherits(B,l.EventEmitter),_.extend(B.prototype,d.MatrixBaseApis.prototype),B.prototype.exportDevice=(0,a.default)(s.default.mark((function e(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._crypto){e.next=3;break}return R.logger.warn("not exporting device if crypto is not enabled"),e.abrupt("return");case 3:return e.t0=this.credentials.userId,e.t1=this.deviceId,e.next=7,this._crypto._olmDevice.export();case 7:return e.t2=e.sent,e.abrupt("return",{userId:e.t0,deviceId:e.t1,olmDevice:e.t2});case 9:case"end":return e.stop()}}),e,this)}))),B.prototype.clearStores=function(){if(this._clientRunning)throw new Error("Cannot clear stores while client is running");var e=[];return e.push(this.store.deleteAllData()),this._cryptoStore&&e.push(this._cryptoStore.deleteAllData()),Promise.all(e)},B.prototype.getUserId=function(){return this.credentials&&this.credentials.userId?this.credentials.userId:null},B.prototype.getDomain=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.replace(/^.*?:/,""):null},B.prototype.getUserIdLocalpart=function(){return this.credentials&&this.credentials.userId?this.credentials.userId.split(":")[0].substring(1):null},B.prototype.getDeviceId=function(){return this.deviceId},B.prototype.supportsVoip=function(){return this._supportsVoip},B.prototype.setForceTURN=function(e){this._forceTURN=e},B.prototype.getSyncState=function(){return this._syncApi?this._syncApi.getSyncState():null},B.prototype.getSyncStateData=function(){return this._syncApi?this._syncApi.getSyncStateData():null},B.prototype.isInitialSyncComplete=function(){var e=this.getSyncState();return!!e&&("PREPARED"===e||"SYNCING"===e)},B.prototype.isGuest=function(){return this._isGuest},B.prototype.getScheduler=function(){return this.scheduler},B.prototype.setGuest=function(e){this._isGuest=e},B.prototype.retryImmediately=function(){return this._syncApi.retryImmediately()},B.prototype.getNotifTimelineSet=function(){return this._notifTimelineSet},B.prototype.setNotifTimelineSet=function(e){this._notifTimelineSet=e},B.prototype.getCapabilities=function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],r=(new Date).getTime();return this._cachedCapabilities&&!t&&r<this._cachedCapabilities.expiration?(R.logger.log("Returning cached capabilities"),Promise.resolve(this._cachedCapabilities.capabilities)):this._http.authedRequest(void 0,"GET","/capabilities").catch((function(e){return R.logger.error(e),null})).then((function(t){t||(t={});var n=t.capabilities||{},i=Object.keys(n).length?216e5:6e4+5e3*Math.random();return e._cachedCapabilities={capabilities:n,expiration:r+i},R.logger.log("Caching capabilities: ",n),n}))},B.prototype.initCrypto=(0,a.default)(s.default.mark((function e(){var t,r;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((0,T.isCryptoAvailable)()){e.next=2;break}throw new Error("End-to-end encryption not supported in this js-sdk build: did you remember to load the olm library?");case 2:if(!this._crypto){e.next=5;break}return R.logger.warn("Attempt to re-initialise e2e encryption on MatrixClient"),e.abrupt("return");case 5:if(this._sessionStore){e.next=7;break}throw new Error("Cannot enable encryption: no sessionStore provided");case 7:if(this._cryptoStore){e.next=9;break}throw new Error("Cannot enable encryption: no cryptoStore provided");case 9:return R.logger.log("Crypto: Starting up crypto store..."),e.next=12,this._cryptoStore.startup();case 12:return R.logger.log("Crypto: initialising roomlist..."),e.next=15,this._roomList.init();case 15:if(null!==(t=this.getUserId())){e.next=18;break}throw new Error("Cannot enable encryption on MatrixClient with unknown userId: ensure userId is passed in createClient().");case 18:if(null!==this.deviceId){e.next=20;break}throw new Error("Cannot enable encryption on MatrixClient with unknown deviceId: ensure deviceId is passed in createClient().");case 20:return r=new T.Crypto(this,this._sessionStore,t,this.deviceId,this.store,this._cryptoStore,this._roomList,this._verificationMethods),this.reEmitter.reEmit(r,["crypto.keyBackupFailed","crypto.keyBackupSessionsRemaining","crypto.roomKeyRequest","crypto.roomKeyRequestCancellation","crypto.warning","crypto.devicesUpdated","crypto.willUpdateDevices","deviceVerificationChanged","userTrustStatusChanged","crossSigning.keysChanged"]),R.logger.log("Crypto: initialising crypto object..."),e.next=25,r.init({exportedOlmDevice:this._exportedOlmDeviceToImport,pickleKey:this.pickleKey});case 25:delete this._exportedOlmDeviceToImport,this.olmVersion=T.Crypto.getOlmVersion(),r.registerEventHandlers(this),this._crypto=r;case 29:case"end":return e.stop()}}),e,this)}))),B.prototype.isCryptoEnabled=function(){return null!==this._crypto},B.prototype.getDeviceEd25519Key=function(){return this._crypto?this._crypto.getDeviceEd25519Key():null},B.prototype.getDeviceCurve25519Key=function(){return this._crypto?this._crypto.getDeviceCurve25519Key():null},B.prototype.uploadKeys=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.uploadDeviceKeys()},B.prototype.downloadKeys=function(e,t){return null===this._crypto?Promise.reject(new Error("End-to-end encryption disabled")):this._crypto.downloadKeys(e,t)},B.prototype.getStoredDevicesForUser=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevicesForUser(e)||[]},B.prototype.getStoredDevice=function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getStoredDevice(e,t)||null},B.prototype.setDeviceVerified=function(e,t,r){void 0===r&&(r=!0);var n=L(this,e,t,r,null);return e==this.credentials.userId&&this._crypto.checkKeyBackup(),n},B.prototype.setDeviceBlocked=function(e,t,r){return void 0===r&&(r=!0),L(this,e,t,null,r)},B.prototype.setDeviceKnown=function(e,t,r){return void 0===r&&(r=!0),L(this,e,t,null,null,r)},B.prototype.requestVerificationDM=function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.requestVerificationDM(e,t)},B.prototype.findVerificationRequestDMInProgress=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.findVerificationRequestDMInProgress(e)},B.prototype.getVerificationRequestsToDeviceInProgress=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getVerificationRequestsToDeviceInProgress(e)},B.prototype.requestVerification=function(e,t){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.requestVerification(e,t)},B.prototype.beginKeyVerification=function(e,t,r){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.beginKeyVerification(e,t,r)},B.prototype.setGlobalBlacklistUnverifiedDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalBlacklistUnverifiedDevices(e)},B.prototype.getGlobalBlacklistUnverifiedDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalBlacklistUnverifiedDevices()},B.prototype.setGlobalErrorOnUnknownDevices=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.setGlobalErrorOnUnknownDevices(e)},B.prototype.getGlobalErrorOnUnknownDevices=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.getGlobalErrorOnUnknownDevices()},F(B,["getCrossSigningId","getStoredCrossSigningForUser","checkUserTrust","checkDeviceTrust","checkOwnCrossSigningTrust","checkCrossSigningPrivateKey","legacyDeviceVerification","prepareToEncrypt","isCrossSigningReady","bootstrapCrossSigning","getCryptoTrustCrossSignedDevices","setCryptoTrustCrossSignedDevices","countSessionsNeedingBackup"]),F(B,["getEventEncryptionInfo","createRecoveryKeyFromPassphrase","isSecretStorageReady","bootstrapSecretStorage","addSecretStorageKey","hasSecretStorageKey","storeSecret","getSecret","isSecretStored","requestSecret","getDefaultSecretStorageKeyId","setDefaultSecretStorageKeyId","checkSecretStorageKey","checkSecretStoragePrivateKey"]),B.prototype.getEventSenderDeviceInfo=function(){var e=(0,a.default)(s.default.mark((function e(t){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._crypto){e.next=2;break}return e.abrupt("return",null);case 2:return e.abrupt("return",this._crypto.getEventSenderDeviceInfo(t));case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.isEventSenderVerified=function(){var e=(0,a.default)(s.default.mark((function e(t){var r;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getEventSenderDeviceInfo(t);case 2:if(r=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return e.abrupt("return",r.isVerified());case 6:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.cancelAndResendEventRoomKeyRequest=function(e){return e.cancelAndResendKeyRequest(this._crypto,this.getUserId())},B.prototype.setRoomEncryption=function(e,t){if(!this._crypto)throw new Error("End-to-End encryption disabled");return this._crypto.setRoomEncryption(e,t)},B.prototype.isRoomEncrypted=function(e){var t=this.getRoom(e);return!!t&&(!!t.currentState.getStateEvents("m.room.encryption","")||this._roomList.isRoomEncrypted(e))},B.prototype.forceDiscardSession=function(e){if(!this._crypto)throw new Error("End-to-End encryption disabled");this._crypto.forceDiscardSession(e)},B.prototype.exportRoomKeys=function(){return this._crypto?this._crypto.exportRoomKeys():Promise.reject(new Error("End-to-end encryption disabled"))},B.prototype.importRoomKeys=function(e,t){if(!this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.importRoomKeys(e,t)},B.prototype.checkKeyBackup=function(){return this._crypto.checkKeyBackup()},B.prototype.getKeyBackupVersion=function(){return this._http.authedRequest(void 0,"GET","/room_keys/version",void 0,void 0,{prefix:b.PREFIX_UNSTABLE}).then((function(e){if(e.algorithm!==E.MEGOLM_BACKUP_ALGORITHM){var t="Unknown backup algorithm: "+e.algorithm;return Promise.reject(t)}if("object"===(0,o.default)(e.auth_data)&&e.auth_data.public_key)return e;return Promise.reject("Invalid backup data returned")})).catch((function(e){if("M_NOT_FOUND"===e.errcode)return null;throw e}))},B.prototype.isKeyBackupTrusted=function(e){return this._crypto.isKeyBackupTrusted(e)},B.prototype.getKeyBackupEnabled=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto._checkedForBackup?Boolean(this._crypto.backupKey):null},B.prototype.enableKeyBackup=function(e){if(null===this._crypto)throw new Error("End-to-end encryption disabled");this._crypto.backupInfo=e,this._crypto.backupKey&&this._crypto.backupKey.free(),this._crypto.backupKey=new t.Olm.PkEncryption,this._crypto.backupKey.set_recipient_key(e.auth_data.public_key),this.emit("crypto.keyBackupStatus",!0),this._crypto.scheduleKeyBackupSend()},B.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)},B.prototype.prepareKeyBackupVersion=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n,i,o,a,u,c,l,d=arguments;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=d.length>1&&void 0!==d[1]?d[1]:{},n=r.secureSecretStorage,i=void 0!==n&&n,null!==this._crypto){e.next=3;break}throw new Error("End-to-end encryption disabled");case 3:return e.next=5,this.createRecoveryKeyFromPassphrase(t);case 5:if(o=e.sent,a=o.keyInfo,u=o.encodedPrivateKey,c=o.privateKey,!i){e.next=13;break}return e.next=12,this.storeSecret("m.megolm_backup.v1",(0,E.encodeBase64)(c));case 12:R.logger.info("Key backup private key stored in secret storage");case 13:return l={public_key:a.pubkey},a.passphrase&&(l.private_key_salt=a.passphrase.salt,l.private_key_iterations=a.passphrase.iterations),e.abrupt("return",{algorithm:E.MEGOLM_BACKUP_ALGORITHM,auth_data:l,recovery_key:u});case 16:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.isKeyBackupKeyStored=(0,a.default)(s.default.mark((function e(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.isSecretStored("m.megolm_backup.v1",!1));case 1:case"end":return e.stop()}}),e,this)}))),B.prototype.createKeyBackupVersion=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==this._crypto){e.next=2;break}throw new Error("End-to-end encryption disabled");case 2:return r={algorithm:t.algorithm,auth_data:t.auth_data},e.next=5,this._crypto._signObject(r.auth_data);case 5:if(!this._cryptoCallbacks.getCrossSigningKey||!this._crypto._crossSigningInfo.getId()){e.next=8;break}return e.next=8,this._crypto._crossSigningInfo.signObject(r.auth_data,"master");case 8:return e.next=10,this._http.authedRequest(void 0,"POST","/room_keys/version",void 0,r,{prefix:b.PREFIX_UNSTABLE});case 10:return n=e.sent,e.next=13,this.checkKeyBackup();case 13:return this.getKeyBackupEnabled()||R.logger.error("Key backup not usable even though we just created it"),e.abrupt("return",n);case 15:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.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();var t=_.encodeUri("/room_keys/version/$version",{$version:e});return this._http.authedRequest(void 0,"DELETE",t,void 0,void 0,{prefix:b.PREFIX_UNSTABLE})},B.prototype._makeKeyBackupPath=function(e,t,r){return{path:void 0!==t?_.encodeUri("/room_keys/keys/$roomId/$sessionId",{$roomId:e,$sessionId:t}):void 0!==e?_.encodeUri("/room_keys/keys/$roomId",{$roomId:e}):"/room_keys/keys",queryData:void 0===r?void 0:{version:r}}},B.prototype.sendKeyBackup=function(e,t,r,n){if(null===this._crypto)throw new Error("End-to-end encryption disabled");var i=this._makeKeyBackupPath(e,t,r);return this._http.authedRequest(void 0,"PUT",i.path,i.queryData,n,{prefix:b.PREFIX_UNSTABLE})},B.prototype.scheduleAllGroupSessionsForBackup=(0,a.default)(s.default.mark((function e(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==this._crypto){e.next=2;break}throw new Error("End-to-end encryption disabled");case 2:return e.next=4,this._crypto.scheduleAllGroupSessionsForBackup();case 4:case"end":return e.stop()}}),e,this)}))),B.prototype.flagAllGroupSessionsForBackup=function(){if(null===this._crypto)throw new Error("End-to-end encryption disabled");return this._crypto.flagAllGroupSessionsForBackup()},B.prototype.isValidRecoveryKey=function(e){try{return(0,x.decodeRecoveryKey)(e),!0}catch(e){return!1}},B.prototype.keyBackupKeyFromPassword=function(e,t){return(0,C.keyFromAuthData)(t.auth_data,e)},B.prototype.keyBackupKeyFromRecoveryKey=function(e){return(0,x.decodeRecoveryKey)(e)},B.RESTORE_BACKUP_ERROR_BAD_KEY="RESTORE_BACKUP_ERROR_BAD_KEY",B.prototype.restoreKeyBackupWithPassword=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i,o){var a;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,C.keyFromAuthData)(i.auth_data,t);case 2:return a=e.sent,e.abrupt("return",this._restoreKeyBackup(a,r,n,i,o));case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o){return e.apply(this,arguments)}}(),B.prototype.restoreKeyBackupWithSecretStorage=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a,c,l,d,f;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSecret("m.megolm_backup.v1");case 2:if(o=e.sent,!(a=(0,T.fixBackupKey)(o))){e.next=12;break}return e.next=7,this._crypto.getSecretStorageKey();case 7:return c=e.sent,l=(0,u.default)(c,1),d=l[0],e.next=12,this.storeSecret("m.megolm_backup.v1",a,[d]);case 12:return f=(0,E.decodeBase64)(a||o),e.abrupt("return",this._restoreKeyBackup(f,r,n,t,i));case 14:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),B.prototype.restoreKeyBackupWithRecoveryKey=function(e,t,r,n,i){var o=(0,x.decodeRecoveryKey)(e);return this._restoreKeyBackup(o,t,r,n,i)},B.prototype.restoreKeyBackupWithCache=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._crypto.getSessionBackupPrivateKey();case 2:if(o=e.sent){e.next=5;break}throw new Error("Couldn't get key");case 5:return e.abrupt("return",this._restoreKeyBackup(o,t,r,n,i));case 6:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),B.prototype._restoreKeyBackup=function(e,r,n,i){var o=this,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=s.cacheCompleteCallback,c=s.progressCallback;if(null===this._crypto)throw new Error("End-to-end encryption disabled");var l,d=0,f=[],h=this._makeKeyBackupPath(r,n,i.version),p=new t.Olm.PkDecryption;try{l=p.init_with_private_key(e)}catch(e){throw p.free(),e}return l!==i.auth_data.public_key?Promise.reject({errcode:B.RESTORE_BACKUP_ERROR_BAD_KEY}):(this._crypto.storeSessionBackupPrivateKey(e).catch((function(e){console.warn("Error caching session backup key:",e)})).then(a),c&&c({stage:"fetch"}),this._http.authedRequest(void 0,"GET",h.path,h.queryData,void 0,{prefix:b.PREFIX_UNSTABLE}).then((function(e){if(e.rooms)for(var t=0,i=Object.entries(e.rooms);t<i.length;t++){var s=(0,u.default)(i[t],2),a=s[0],l=s[1];if(l.sessions){d+=Object.keys(l.sessions).length;var h,v=M(q(l.sessions,p,a));try{for(v.s();!(h=v.n()).done;){var g=h.value;g.room_id=a,f.push(g)}}catch(e){v.e(e)}finally{v.f()}}}else if(e.sessions)d=Object.keys(e.sessions).length,f=q(e.sessions,p,r);else{d=1;try{var y=N(e,p);y.room_id=r,y.session_id=n,f.push(y)}catch(e){R.logger.log("Failed to decrypt megolm session from backup",e)}}return o.importRoomKeys(f,{progressCallback:c,untrusted:!0,source:"backup"})})).then((function(){return o._crypto.setTrustedBackupPubKey(l)})).then((function(){return{total:d,imported:f.length}})).finally((function(){p.free()})))},B.prototype.deleteKeysFromBackup=function(e,t,r){if(null===this._crypto)throw new Error("End-to-end encryption disabled");var n=this._makeKeyBackupPath(e,t,r);return this._http.authedRequest(void 0,"DELETE",n.path,n.queryData,void 0,{prefix:b.PREFIX_UNSTABLE})},B.prototype.getGroup=function(e){return this.store.getGroup(e)},B.prototype.getGroups=function(){return this.store.getGroups()},B.prototype.getMediaConfig=function(e){return this._http.authedRequest(e,"GET","/config",void 0,void 0,{prefix:b.PREFIX_MEDIA_R0})},B.prototype.getRoom=function(e){return this.store.getRoom(e)},B.prototype.getRooms=function(){return this.store.getRooms()},B.prototype.getVisibleRooms=function(){var e,t=this.store.getRooms(),r=new Set,n=M(t);try{for(n.s();!(e=n.n()).done;){var i=e.value.currentState.getStateEvents("m.room.create","");if(i){var o=i.getContent().predecessor;o&&o.room_id&&r.add(o.room_id)}}}catch(e){n.e(e)}finally{n.f()}return t.filter((function(e){return!e.currentState.getStateEvents("m.room.tombstone","")||!r.has(e.roomId)}))},B.prototype.getUser=function(e){return this.store.getUser(e)},B.prototype.getUsers=function(){return this.store.getUsers()},B.prototype.setAccountData=function(e,t,r){var n=this,i=_.encodeUri("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:e}),o=(0,b.retryNetworkOperation)(5,(function(){return n._http.authedRequest(void 0,"PUT",i,void 0,t)}));return r&&o.then((function(e){return r(null,e)}),r),o},B.prototype.getAccountData=function(e){return this.store.getAccountData(e)},B.prototype.getAccountDataFromServer=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n,i;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isInitialSyncComplete()){e.next=5;break}if(r=this.store.getAccountData(t)){e.next=4;break}return e.abrupt("return",null);case 4:return e.abrupt("return",r.getContent());case 5:return n=_.encodeUri("/user/$userId/account_data/$type",{$userId:this.credentials.userId,$type:t}),e.prev=6,e.next=9,this._http.authedRequest(void 0,"GET",n,void 0);case 9:return i=e.sent,e.abrupt("return",i);case 13:if(e.prev=13,e.t0=e.catch(6),!e.t0.data||"M_NOT_FOUND"!==e.t0.data.errcode){e.next=17;break}return e.abrupt("return",null);case 17:throw e.t0;case 18:case"end":return e.stop()}}),e,this,[[6,13]])})));return function(t){return e.apply(this,arguments)}}(),B.prototype.getIgnoredUsers=function(){var e=this.getAccountData("m.ignored_user_list");return e&&e.getContent()&&e.getContent().ignored_users?Object.keys(e.getContent().ignored_users):[]},B.prototype.setIgnoredUsers=function(e,t){var r={ignored_users:{}};return e.map((function(e){return r.ignored_users[e]={}})),this.setAccountData("m.ignored_user_list",r,t)},B.prototype.isUserIgnored=function(e){return-1!==this.getIgnoredUsers().indexOf(e)},B.prototype.joinRoom=function(e,t,r){if(_.isFunction(t))throw new Error("Expected 'opts' object, got function.");void 0===(t=t||{}).syncRoom&&(t.syncRoom=!0);var n=this.getRoom(e);if(n&&n.hasMembershipState(this.credentials.userId,"join"))return Promise.resolve(n);var i=Promise.resolve();t.inviteSignUrl&&(i=this._http.requestOtherUrl(void 0,"POST",t.inviteSignUrl,{mxid:this.credentials.userId}));var o={};t.viaServers&&(o.server_name=t.viaServers);var s={qsStringifyOptions:{arrayFormat:"repeat"}},a=this;return new Promise((function(n,u){i.then((function(t){var r={};t&&(r.third_party_signed=t);var n=_.encodeUri("/join/$roomid",{$roomid:e});return a._http.authedRequest(void 0,"POST",n,o,r,s)})).then((function(e){var r=e.room_id,n=new h.SyncApi(a,a._clientOpts).createRoom(r);return t.syncRoom,Promise.resolve(n)})).then((function(e){Q(r,n,e)}),(function(e){z(r,u,e)}))}))},B.prototype.resendEvent=function(e,t){return W(t,e,p.EventStatus.SENDING),G(this,t,e)},B.prototype.cancelPendingEvent=function(e){if([p.EventStatus.QUEUED,p.EventStatus.NOT_SENT].indexOf(e.status)<0)throw new Error("cannot cancel an event with status "+e.status);this.scheduler&&this.scheduler.removeEventFromQueue(e),W(this.getRoom(e.getRoomId()),e,p.EventStatus.CANCELLED)},B.prototype.setRoomName=function(e,t,r){return this.sendStateEvent(e,"m.room.name",{name:t},void 0,r)},B.prototype.setRoomTopic=function(e,t,r){return this.sendStateEvent(e,"m.room.topic",{topic:t},void 0,r)},B.prototype.getRoomTags=function(e,t){var r=_.encodeUri("/user/$userId/rooms/$roomId/tags/",{$userId:this.credentials.userId,$roomId:e});return this._http.authedRequest(t,"GET",r,void 0)},B.prototype.setRoomTag=function(e,t,r,n){var i=_.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(n,"PUT",i,void 0,r)},B.prototype.deleteRoomTag=function(e,t,r){var n=_.encodeUri("/user/$userId/rooms/$roomId/tags/$tag",{$userId:this.credentials.userId,$roomId:e,$tag:t});return this._http.authedRequest(r,"DELETE",n,void 0,void 0)},B.prototype.setRoomAccountData=function(e,t,r,n){var i=_.encodeUri("/user/$userId/rooms/$roomId/account_data/$type",{$userId:this.credentials.userId,$roomId:e,$type:t});return this._http.authedRequest(n,"PUT",i,void 0,r)},B.prototype.setPowerLevel=function(e,t,r,n,i){var o={users:{}};n&&"m.room.power_levels"===n.getType()&&(o=_.deepCopy(n.getContent())),o.users[t]=r;var s=_.encodeUri("/rooms/$roomId/state/m.room.power_levels",{$roomId:e});return this._http.authedRequest(i,"PUT",s,void 0,o)},B.prototype.sendEvent=function(e,t,r,n,i){return this._sendCompleteEvent(e,{type:t,content:r},n,i)},B.prototype._sendCompleteEvent=function(e,t,r,n){_.isFunction(r)&&(n=r,r=void 0),r||(r=this.makeTxnId());var i=new p.MatrixEvent(Object.assign(t,{event_id:"~"+e+":"+r,user_id:this.credentials.userId,sender:this.credentials.userId,room_id:e,origin_server_ts:(new Date).getTime()})),o=this.getRoom(e),s=i.getAssociatedId();if(s&&s.startsWith("~")){var a=o.getPendingEvents().find((function(e){return e.getId()===s}));a.once("Event.localEventIdReplaced",(function(){i.updateAssociatedId(a.getId())}))}var u=i.getType();return R.logger.log("sendEvent of type ".concat(u," in ").concat(e," with txnId ").concat(r)),i.setTxnId(r),i.setStatus(p.EventStatus.SENDING),o&&o.addPendingEvent(i,r),i.status===p.EventStatus.NOT_SENT?Promise.reject(new Error("Event blocked by other events not yet sent")):G(this,o,i,n)},B.prototype.redactEvent=function(e,t,r,n){return this._sendCompleteEvent(e,{type:"m.room.redaction",content:{},redacts:t},r,n)},B.prototype.sendMessage=function(e,t,r,n){return _.isFunction(r)&&(n=r,r=void 0),this.sendEvent(e,"m.room.message",t,r,n)},B.prototype.sendTextMessage=function(e,t,r,n){var i=S.makeTextMessage(t);return this.sendMessage(e,i,r,n)},B.prototype.sendNotice=function(e,t,r,n){var i=S.makeNotice(t);return this.sendMessage(e,i,r,n)},B.prototype.sendEmoteMessage=function(e,t,r,n){var i=S.makeEmoteMessage(t);return this.sendMessage(e,i,r,n)},B.prototype.sendImageMessage=function(e,t,r,n,i){_.isFunction(n)&&(i=n,n=void 0),n||(n="Image");var o={msgtype:"m.image",url:t,info:r,body:n};return this.sendMessage(e,o,i)},B.prototype.sendStickerMessage=function(e,t,r,n,i){_.isFunction(n)&&(i=n,n=void 0),n||(n="Sticker");var o={url:t,info:r,body:n};return this.sendEvent(e,"m.sticker",o,i,void 0)},B.prototype.sendHtmlMessage=function(e,t,r,n){var i=S.makeHtmlMessage(t,r);return this.sendMessage(e,i,n)},B.prototype.sendHtmlNotice=function(e,t,r,n){var i=S.makeHtmlNotice(t,r);return this.sendMessage(e,i,n)},B.prototype.sendHtmlEmote=function(e,t,r,n){var i=S.makeHtmlEmote(t,r);return this.sendMessage(e,i,n)},B.prototype.sendReceipt=function(e,t,r,n){if("function"==typeof r&&(n=r,r={}),this.isGuest())return Promise.resolve({});var i=_.encodeUri("/rooms/$roomId/receipt/$receiptType/$eventId",{$roomId:e.getRoomId(),$receiptType:t,$eventId:e.getId()}),o=this._http.authedRequest(n,"POST",i,void 0,r||{}),s=this.getRoom(e.getRoomId());return s&&s._addLocalEchoReceipt(this.credentials.userId,e,t),o},B.prototype.sendReadReceipt=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n){var i,o,a;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("function"==typeof r&&(n=r,r={}),r||(r={}),i=t.getId(),!(o=this.getRoom(t.getRoomId()))||!o.hasPendingEvent(i)){e.next=6;break}throw new Error("Cannot set read receipt to a pending event (".concat(i,")"));case 6:return a={"m.hidden":Boolean(r.hidden)},e.abrupt("return",this.sendReceipt(t,"m.read",a,n));case 8:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),B.prototype.setRoomReadMarkers=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(o=this.getRoom(t))||!o.hasPendingEvent(r)){e.next=3;break}throw new Error("Cannot set read marker to a pending event (".concat(r,")"));case 3:if(!n){e.next=8;break}if(a=n.getId(),!o||!o.hasPendingEvent(a)){e.next=7;break}throw new Error("Cannot set read receipt to a pending event (".concat(a,")"));case 7:o&&o._addLocalEchoReceipt(this.credentials.userId,n,"m.read");case 8:return e.abrupt("return",this.setRoomReadMarkersHttpRequest(t,r,a,i));case 9:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),B.prototype.getUrlPreview=function(e,t,r){var n=(t=6e4*Math.floor(t/6e4))+"_"+e,i=this.urlPreviewCache[n];if(i)return r&&i.then(r).catch(r),i;var o=this._http.authedRequest(r,"GET","/preview_url",{url:e,ts:t},void 0,{prefix:b.PREFIX_MEDIA_R0});return this.urlPreviewCache[n]=o,o},B.prototype.sendTyping=function(e,t,r,n){if(this.isGuest())return Promise.resolve({});var i=_.encodeUri("/rooms/$roomId/typing/$userId",{$roomId:e,$userId:this.credentials.userId}),o={typing:t};return t&&(o.timeout=r||2e4),this._http.authedRequest(n,"PUT",i,void 0,o)},B.prototype.getRoomUpgradeHistory=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.getRoom(e);if(!r)return[];for(var n=[r],i=r.currentState.getStateEvents("m.room.create","");i;){R.logger.log("Looking at ".concat(i.getId()));var o=i.getContent().predecessor;if(!o||!o.room_id)break;R.logger.log("Looking at predecessor ".concat(o.room_id));var s=this.getRoom(o.room_id);if(!s)break;if(t){var a=s.currentState.getStateEvents("m.room.tombstone","");if(!a||a.getContent().replacement_room!==s.roomId)break}n.splice(0,0,s),i=s.currentState.getStateEvents("m.room.create","")}for(var u=r.currentState.getStateEvents("m.room.tombstone","");u;){var c=this.getRoom(u.getContent().replacement_room);if(!c)break;if(c.roomId===r.roomId)break;if(t){if(!(i=c.currentState.getStateEvents("m.room.create",""))||!i.getContent().predecessor)break;var l=i.getContent().predecessor;if(l.room_id!==r.roomId)break}n.push(c);var d=new Set(n.map((function(e){return e.roomId})));if(d.size<n.length)return n.slice(0,n.length-1);u=(r=c).currentState.getStateEvents("m.room.tombstone","")}return n},B.prototype.invite=function(e,t,r){return H(this,e,t,"invite",void 0,r)},B.prototype.inviteByEmail=function(e,t,r){return this.inviteByThreePid(e,"email",t,r)},B.prototype.inviteByThreePid=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a,u,c;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=_.encodeUri("/rooms/$roomId/invite",{$roomId:t}),a=this.getIdentityServerUrl(!0)){e.next=4;break}return e.abrupt("return",Promise.reject(new b.MatrixError({error:"No supplied identity server URL",errcode:"ORG.MATRIX.JSSDK_MISSING_PARAM"})));case 4:if(u={id_server:a,medium:r,address:n},e.t0=this.identityServer&&this.identityServer.getAccessToken,!e.t0){e.next=10;break}return e.next=9,this.doesServerAcceptIdentityAccessToken();case 9:e.t0=e.sent;case 10:if(!e.t0){e.next=15;break}return e.next=13,this.identityServer.getAccessToken();case 13:(c=e.sent)&&(u.id_access_token=c);case 15:return e.abrupt("return",this._http.authedRequest(i,"POST",o,void 0,u));case 16:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),B.prototype.leave=function(e,t){return H(this,e,void 0,"leave",void 0,t)},B.prototype.leaveRoomChain=function(e){var t=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.getRoomUpgradeHistory(e),i=n;if(!r){i=[];var o,s=M(n);try{for(s.s();!(o=s.n()).done;){var a=o.value;if(i.push(a),a.roomId===e)break}}catch(e){s.e(e)}finally{s.f()}}var u,c={},l=[],d=function(e){return t.leave(e).then((function(){c[e]=null})).catch((function(t){return c[e]=t,null}))},f=M(i);try{for(f.s();!(u=f.n()).done;){var h=u.value;l.push(d(h.roomId))}}catch(e){f.e(e)}finally{f.f()}return Promise.all(l).then((function(){return c}))},B.prototype.ban=function(e,t,r,n){return H(this,e,t,"ban",r,n)},B.prototype.forget=function(e,t,r){void 0===t&&(t=!0);var n=H(this,e,void 0,"forget",void 0,r);if(!t)return n;var i=this;return n.then((function(t){return i.store.removeRoom(e),i.emit("deleteRoom",e),t}))},B.prototype.unban=function(e,t,r){var n=_.encodeUri("/rooms/$roomId/unban",{$roomId:e}),i={user_id:t};return this._http.authedRequest(r,"POST",n,void 0,i)},B.prototype.kick=function(e,t,r,n){return function(e,t,r,n,i,o){_.isFunction(i)&&(o=i,i=void 0);var s=_.encodeUri("/rooms/$roomId/state/m.room.member/$userId",{$roomId:t,$userId:r});return e._http.authedRequest(o,"PUT",s,void 0,{membership:n,reason:i})}(this,e,t,"leave",r,n)},B.prototype.getPushActionsForEvent=function(e){return e.getPushActions()||e.setPushActions(this._pushProcessor.actionsForEvent(e)),e.getPushActions()},B.prototype.setProfileInfo=function(e,t,r){var n=_.encodeUri("/profile/$userId/$info",{$userId:this.credentials.userId,$info:e});return this._http.authedRequest(r,"PUT",n,void 0,t)},B.prototype.setDisplayName=function(e,t){return this.setProfileInfo("displayname",{displayname:e},t)},B.prototype.setAvatarUrl=function(e,t){return this.setProfileInfo("avatar_url",{avatar_url:e},t)},B.prototype.mxcUrlToHttp=function(e,t,r,n,i){return(0,k.getHttpUriForMxc)(this.baseUrl,e,t,r,n,i)},B.prototype._unstable_setStatusMessage=function(e){var t=this,r="im.vector.user_status";return Promise.all(this.getRooms().map((function(n){var i="join"===n.getMyMembership(),o=2===n.getInvitedAndJoinedMemberCount();return i&&o&&n.currentState.mayClientSendStateEvent(r,t)?t.sendStateEvent(n.roomId,r,{status:e},t.getUserId()):Promise.resolve()})))},B.prototype.setPresence=function(e,t){var r=_.encodeUri("/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",r,void 0,e)},B.prototype.scrollback=function(e,t,r){_.isFunction(t)&&(r=t,t=void 0),t=t||30;var n=0,i=this._ongoingScrollbacks[e.roomId]||{};if(i.promise)return i.promise;if(i.errorTs){var o=Date.now()-i.errorTs;n=Math.max(3e3-o,0)}if(null===e.oldState.paginationToken)return Promise.resolve(e);var s=this.store.scrollback(e,t).length;if(s===t)return Promise.resolve(e);t-=s;var a=this,u=new Promise((function(i,o){(0,_.sleep)(n).then((function(){return a._createMessagesRequest(e.roomId,e.oldState.paginationToken,t,"b")})).then((function(t){var n=_.map(t.chunk,J(a));if(t.state){var o=_.map(t.state,J(a));e.currentState.setUnknownStateEvents(o)}e.addEventsToTimeline(n,!0,e.getLiveTimeline()),e.oldState.paginationToken=t.end,0===t.chunk.length&&(e.oldState.paginationToken=null),a.store.storeEvents(e,n,t.end,!0),a._ongoingScrollbacks[e.roomId]=null,Q(r,i,e)}),(function(t){a._ongoingScrollbacks[e.roomId]={errorTs:Date.now()},z(r,o,t)}))}));return i={promise:u,errorTs:null},this._ongoingScrollbacks[e.roomId]=i,u},B.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));var r=_.encodeUri("/rooms/$roomId/context/$eventId",{$roomId:e.room.roomId,$eventId:t}),n=void 0;this._clientOpts.lazyLoadMembers&&(n={filter:JSON.stringify(f.Filter.LAZY_LOADING_MESSAGES_FILTER)});var i=this;return i._http.authedRequest(void 0,"GET",r,n).then((function(r){if(!r.event)throw new Error("'event' not in '/context' result - homeserver too old?");if(e.getTimelineForEvent(t))return e.getTimelineForEvent(t);r.events_after.reverse();var n=r.events_after.concat([r.event]).concat(r.events_before),o=_.map(n,i.getEventMapper()),s=e.getTimelineForEvent(o[0].getId());if(s){var a=_.map(r.state,i.getEventMapper());s.getState(v.EventTimeline.BACKWARDS).setUnknownStateEvents(a)}else(s=e.addTimeline()).initialiseState(_.map(r.state,i.getEventMapper())),s.getState(v.EventTimeline.FORWARDS).paginationToken=r.end;return e.addEventsToTimeline(o,!0,s,r.start),e.getTimelineForEvent(t)||s}))},B.prototype._createMessagesRequest=function(e,t,r,n){var i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0,o=_.encodeUri("/rooms/$roomId/messages",{$roomId:e});void 0===r&&(r=30);var s={from:t,limit:r,dir:n},a=null;return this._clientOpts.lazyLoadMembers&&(a=Object.assign({},f.Filter.LAZY_LOADING_MESSAGES_FILTER)),i&&(a=a||{},Object.assign(a,i.getRoomTimelineFilterComponent())),a&&(s.filter=JSON.stringify(a)),this._http.authedRequest(void 0,"GET",o,s)},B.prototype.paginateEventTimeline=function(e,t){var r=e.getTimelineSet()===this._notifTimelineSet,n=(t=t||{}).backwards||!1;if(r&&!n)throw new Error("paginateNotifTimeline can only paginate backwards");var i=n?v.EventTimeline.BACKWARDS:v.EventTimeline.FORWARDS,o=e.getPaginationToken(i);if(!o)return Promise.resolve(!1);var s,a,u=e._paginationRequests[i];if(u)return u;var c=this;if(r)"/notifications",s={limit:"limit"in t?t.limit:30,only:"highlight"},o&&"end"!==o&&(s.from=o),a=this._http.authedRequest(void 0,"GET","/notifications",s,void 0).then((function(t){for(var r=t.next_token,o=[],s=0;s<t.notifications.length;s++){var a=t.notifications[s],u=c.getEventMapper()(a.event);u.setPushActions(A.PushProcessor.actionListToActionsObject(a.actions)),u.event.room_id=a.room_id,o[s]=u}return e.getTimelineSet().addEventsToTimeline(o,n,e,r),n&&!t.next_token&&e.setPaginationToken(null,i),!!t.next_token})).finally((function(){e._paginationRequests[i]=null})),e._paginationRequests[i]=a;else{if(!this.getRoom(e.getRoomId()))throw new Error("Unknown room "+e.getRoomId());(a=this._createMessagesRequest(e.getRoomId(),o,t.limit,i,e.getFilter())).then((function(t){if(t.state){var r=e.getState(i),o=_.map(t.state,c.getEventMapper());r.setUnknownStateEvents(o)}var s=t.end,a=_.map(t.chunk,c.getEventMapper());return e.getTimelineSet().addEventsToTimeline(a,n,e,s),n&&t.end==t.start&&e.setPaginationToken(null,i),t.end!=t.start})).finally((function(){e._paginationRequests[i]=null})),e._paginationRequests[i]=a}return a},B.prototype.resetNotifTimelineSet=function(){this._notifTimelineSet&&this._notifTimelineSet.resetLiveTimeline("end",null)},B.prototype.peekInRoom=function(e){return this._peekSync&&this._peekSync.stopPeeking(),this._peekSync=new h.SyncApi(this,this._clientOpts),this._peekSync.peek(e)},B.prototype.stopPeeking=function(){this._peekSync&&(this._peekSync.stopPeeking(),this._peekSync=null)},B.prototype.setGuestAccess=function(e,t){var r=this.sendStateEvent(e,"m.room.guest_access",{guest_access:t.allowJoin?"can_join":"forbidden"}),n=Promise.resolve();return t.allowRead&&(n=this.sendStateEvent(e,"m.room.history_visibility",{history_visibility:"world_readable"})),Promise.all([n,r])},B.prototype.requestRegisterEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/register/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},B.prototype.requestRegisterMsisdnToken=function(e,t,r,n,i){return this._requestTokenFromEndpoint("/register/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:i})},B.prototype.requestAdd3pidEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/account/3pid/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},B.prototype.requestAdd3pidMsisdnToken=function(e,t,r,n,i){return this._requestTokenFromEndpoint("/account/3pid/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:i})},B.prototype.requestPasswordEmailToken=function(e,t,r,n){return this._requestTokenFromEndpoint("/account/password/email/requestToken",{email:e,client_secret:t,send_attempt:r,next_link:n})},B.prototype.requestPasswordMsisdnToken=function(e,t,r,n,i){return this._requestTokenFromEndpoint("/account/password/msisdn/requestToken",{country:e,phone_number:t,client_secret:r,send_attempt:n,next_link:i})},B.prototype._requestTokenFromEndpoint=function(){var e=(0,a.default)(s.default.mark((function e(t,r){var n,i,o;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=Object.assign({},r),e.next=3,this.doesServerSupportSeparateAddAndBind();case 3:if(e.t0=!e.sent,!e.t0){e.next=6;break}e.t0=this.idBaseUrl;case 6:if(!e.t0){e.next=21;break}if((i=c.default.parse(this.idBaseUrl)).host){e.next=10;break}throw new Error("Invalid ID server URL: "+this.idBaseUrl);case 10:if(n.id_server=i.host,e.t1=this.identityServer&&this.identityServer.getAccessToken,!e.t1){e.next=16;break}return e.next=15,this.doesServerAcceptIdentityAccessToken();case 15:e.t1=e.sent;case 16:if(!e.t1){e.next=21;break}return e.next=19,this.identityServer.getAccessToken();case 19:(o=e.sent)&&(n.id_access_token=o);case 21:return e.abrupt("return",this._http.request(void 0,"POST",t,void 0,n));case 22:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),B.prototype.getRoomPushRule=function(e,t){if(!this.pushRules)throw new Error("SyncApi.sync() must be done before accessing to push rules.");for(var r=0;r<this.pushRules[e].room.length;r++){var n=this.pushRules[e].room[r];if(n.rule_id===t)return n}},B.prototype.setRoomMutePushRule=function(e,t,r){var n,i,o=this,s=this.getRoomPushRule(e,t);if(s&&0<=s.actions.indexOf("dont_notify")&&(i=!0),r?s?i||(n=_.defer(),this.deletePushRule(e,"room",s.rule_id).then((function(){o.addPushRule(e,"room",t,{actions:["dont_notify"]}).then((function(){n.resolve()}),(function(e){n.reject(e)}))}),(function(e){n.reject(e)})),n=n.promise):n=this.addPushRule(e,"room",t,{actions:["dont_notify"]}):i&&(n=this.deletePushRule(e,"room",s.rule_id)),n)return new Promise((function(e,t){n.then((function(){o.getPushRules().then((function(t){o.pushRules=t,e()}),(function(e){t(e)}))}),(function(e){o.getPushRules().then((function(r){o.pushRules=r,t(e)}),(function(r){t(e)}))}))}))},B.prototype.searchMessageText=function(e,t){var r={search_term:e.query};return"keys"in e&&(r.keys=e.keys),this.search({body:{search_categories:{room_events:r}}},t)},B.prototype.searchRoomEvents=function(e){var 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}}}},r={_query:t,results:[],highlights:[]};return this.search({body:t}).then(this._processRoomEventsSearch.bind(this,r))},B.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;var t={body:e._query,next_batch:e.next_batch},r=this.search(t).then(this._processRoomEventsSearch.bind(this,e)).finally((function(){e.pendingRequest=null}));return e.pendingRequest=r,r},B.prototype._processRoomEventsSearch=function(e,t){var r=t.search_categories.room_events;e.count=r.count,e.next_batch=r.next_batch;var n={};r.highlights.forEach((function(e){n[e]=1})),e.highlights.forEach((function(e){n[e]=1})),e.highlights=Object.keys(n);for(var i=0;i<r.results.length;i++){var o=g.SearchResult.fromJson(r.results[i],this.getEventMapper());e.results.push(o)}return e},B.prototype.syncLeftRooms=function(){if(this._syncedLeftRooms)return Promise.resolve([]);if(this._syncLeftRoomsPromise)return this._syncLeftRoomsPromise;var e=this,t=new h.SyncApi(this,this._clientOpts);return this._syncLeftRoomsPromise=t.syncLeftRooms(),this._syncLeftRoomsPromise.then((function(t){R.logger.log("Marking success of sync left room request"),e._syncedLeftRooms=!0})).finally((function(){e._syncLeftRoomsPromise=null})),this._syncLeftRoomsPromise},B.prototype.createFilter=function(e){var t=this,r=_.encodeUri("/user/$userId/filter",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",r,void 0,e).then((function(r){var n=f.Filter.fromJson(t.credentials.userId,r.filter_id,e);return t.store.storeFilter(n),n}))},B.prototype.getFilter=function(e,t,r){if(r){var n=this.store.getFilter(e,t);if(n)return Promise.resolve(n)}var i=this,o=_.encodeUri("/user/$userId/filter/$filterId",{$userId:e,$filterId:t});return this._http.authedRequest(void 0,"GET",o,void 0,void 0).then((function(r){var n=f.Filter.fromJson(e,t,r);return i.store.storeFilter(n),n}))},B.prototype.getOrCreateFilter=function(){var e=(0,a.default)(s.default.mark((function e(t,r){var n,i,o,a,u,c;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this.store.getFilterIdByName(t),i=void 0,!n){e.next=15;break}return e.prev=3,e.next=6,this.getFilter(this.credentials.userId,n,!0);case 6:(o=e.sent)&&(a=o.getDefinition(),u=r.getDefinition(),_.deepCompare(a,u)&&(i=n)),e.next=14;break;case 10:if(e.prev=10,e.t0=e.catch(3),"M_UNKNOWN"===e.t0.errcode||"M_NOT_FOUND"===e.t0.errcode){e.next=14;break}throw e.t0;case 14:i||this.store.setFilterIdByName(t,void 0);case 15:if(!i){e.next=17;break}return e.abrupt("return",i);case 17:return e.next=19,this.createFilter(r.getDefinition());case 19:return c=e.sent,this.store.setFilterIdByName(t,c.filterId),e.abrupt("return",c.filterId);case 22:case"end":return e.stop()}}),e,this,[[3,10]])})));return function(t,r){return e.apply(this,arguments)}}(),B.prototype.getOpenIdToken=function(){var e=_.encodeUri("/user/$userId/openid/request_token",{$userId:this.credentials.userId});return this._http.authedRequest(void 0,"POST",e,void 0,{})},B.prototype.turnServer=function(e){return this._http.authedRequest(e,"GET","/voip/turnServer")},B.prototype.getTurnServers=function(){return this._turnServers||[]},B.prototype.setFallbackICEServerAllowed=function(e){this._fallbackICEServerAllowed=e},B.prototype.isFallbackICEServerAllowed=function(){return this._fallbackICEServerAllowed},B.prototype.isSynapseAdministrator=function(){var e=_.encodeUri("/_synapse/admin/v1/users/$userId/admin",{$userId:this.getUserId()});return this._http.authedRequest(void 0,"GET",e,void 0,void 0,{prefix:""}).then((function(e){return e.admin}))},B.prototype.whoisSynapseUser=function(e){var t=_.encodeUri("/_synapse/admin/v1/whois/$userId",{$userId:e});return this._http.authedRequest(void 0,"GET",t,void 0,void 0,{prefix:""})},B.prototype.deactivateSynapseUser=function(e){var t=_.encodeUri("/_synapse/admin/v1/deactivate/$userId",{$userId:e});return this._http.authedRequest(void 0,"POST",t,void 0,void 0,{prefix:""})},B.prototype.startClient=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n=this;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.clientRunning){e.next=2;break}return e.abrupt("return");case 2:this.clientRunning=!0,"number"==typeof t&&(t={initialSyncLimit:t}),(r=this.getUserId())&&this.store.storeUser(new D.User(r)),this._crypto&&(this._crypto.uploadDeviceKeys(),this._crypto.start()),Y(this),this._syncApi&&(R.logger.error("Still have sync object whilst not running: stopping old one"),this._syncApi.stop()),(t=Object.assign({},t)).crypto=this._crypto,t.canResetEntireTimeline=function(e){return!!n._canResetTimelineCallback&&n._canResetTimelineCallback(e)},this._clientOpts=t,this._syncApi=new h.SyncApi(this,t),this._syncApi.sync(),void 0!==t.clientWellKnownPollPeriod&&(this._clientWellKnownIntervalID=setInterval((function(){n._fetchClientWellKnown()}),1e3*t.clientWellKnownPollPeriod),this._fetchClientWellKnown());case 16:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype._fetchClientWellKnown=(0,a.default)(s.default.mark((function e(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._clientWellKnownPromise=P.AutoDiscovery.getRawClientConfig(this.getDomain()),e.next=3,this._clientWellKnownPromise;case 3:this._clientWellKnown=e.sent,this.emit("WellKnown.client",this._clientWellKnown);case 5:case"end":return e.stop()}}),e,this)}))),B.prototype.getClientWellKnown=function(){return this._clientWellKnown},B.prototype.waitForClientWellKnown=function(){return this._clientWellKnownPromise},B.prototype._storeClientOptions=function(){var e=["boolean","string","number"],t=Object.entries(this._clientOpts).filter((function(t){var r=(0,u.default)(t,2),n=(r[0],r[1]);return e.includes((0,o.default)(n))})).reduce((function(e,t){var r=(0,u.default)(t,2),n=r[0],i=r[1];return e[n]=i,e}),{});return this.store.storeClientOptions(t)},B.prototype.stopClient=function(){R.logger.log("stopping MatrixClient"),this.clientRunning=!1,this._syncApi&&(this._syncApi.stop(),this._syncApi=null),this._crypto&&this._crypto.stop(),this._peekSync&&this._peekSync.stopPeeking(),t.clearTimeout(this._checkTurnServersTimeoutID),void 0!==this._clientWellKnownIntervalID&&t.clearInterval(this._clientWellKnownIntervalID)},B.prototype.getVersions=function(){return this._serverVersionsPromise||(this._serverVersionsPromise=this._http.request(void 0,"GET","/_matrix/client/versions",void 0,void 0,{prefix:""})),this._serverVersionsPromise},B.prototype.isVersionSupported=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:return r=e.sent,n=r.versions,e.abrupt("return",n&&n.includes(t));case 5:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.doesServerSupportLazyLoading=(0,a.default)(s.default.mark((function e(){var t,r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return r=t.versions,n=t.unstable_features,e.abrupt("return",r&&r.includes("r0.5.0")||n&&n["m.lazy_load_members"]);case 8:case"end":return e.stop()}}),e,this)}))),B.prototype.doesServerRequireIdServerParam=(0,a.default)(s.default.mark((function e(){var t,r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",!0);case 5:if(!(r=t.versions)||!r.includes("r0.6.0")){e.next=8;break}return e.abrupt("return",!1);case 8:if(n=t.unstable_features){e.next=11;break}return e.abrupt("return",!0);case 11:if(void 0!==n["m.require_identity_server"]){e.next=15;break}return e.abrupt("return",!0);case 15:return e.abrupt("return",n["m.require_identity_server"]);case 16:case"end":return e.stop()}}),e,this)}))),B.prototype.doesServerAcceptIdentityAccessToken=(0,a.default)(s.default.mark((function e(){var t,r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return r=t.versions,n=t.unstable_features,e.abrupt("return",r&&r.includes("r0.6.0")||n&&n["m.id_access_token"]);case 8:case"end":return e.stop()}}),e,this)}))),B.prototype.doesServerSupportSeparateAddAndBind=(0,a.default)(s.default.mark((function e(){var t,r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return r=t.versions,n=t.unstable_features,e.abrupt("return",r&&r.includes("r0.6.0")||n&&n["m.separate_add_and_bind"]);case 8:case"end":return e.stop()}}),e,this)}))),B.prototype.doesServerSupportUnstableFeature=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(r=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return n=r.unstable_features,e.abrupt("return",n&&!!n[t]);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.doesServerForceEncryptionForPreset=function(){var e=(0,a.default)(s.default.mark((function e(t){var r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getVersions();case 2:if(r=e.sent){e.next=5;break}return e.abrupt("return",!1);case 5:return n=r.unstable_features,e.abrupt("return",n&&!!n["io.element.e2ee_forced.".concat(t)]);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),B.prototype.hasLazyLoadMembersEnabled=function(){return!!this._clientOpts.lazyLoadMembers},B.prototype.setCanResetTimelineCallback=function(e){this._canResetTimelineCallback=e},B.prototype.getCanResetTimelineCallback=function(){return this._canResetTimelineCallback},B.prototype.relations=function(){var e=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a,u,c,l,d,f,h=arguments;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=h.length>4&&void 0!==h[4]?h[4]:{},a=V(this,t,i),e.next=4,this.fetchRelations(t,r,n,a,o);case 4:if(u=e.sent,c=this.getEventMapper(),u.original_event&&(l=c(u.original_event)),d=u.chunk.map(c),"m.room.encrypted"!==a){e.next=13;break}return f=l?d.concat(l):d,e.next=12,Promise.all(f.map((function(e){return new Promise((function(t){return e.once("Event.decrypted",t)}))})));case 12:d=d.filter((function(e){return e.getType()===i}));case 13:return e.abrupt("return",{originalEvent:l,events:d,nextBatch:u.next_batch});case 14:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),B.prototype.getEventMapper=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;return J(this,e)},B.prototype.getCrossSigningCacheCallbacks=function(){return this._crypto&&this._crypto._crossSigningInfo.getCacheCallbacks()},B.prototype.generateClientSecret=function(){return(0,O.randomString)(32)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./ReEmitter":53,"./autodiscovery":54,"./base-apis":55,"./content-helpers":58,"./content-repo":59,"./crypto":73,"./crypto/RoomList":65,"./crypto/key_passphrase":74,"./crypto/olmlib":75,"./crypto/recoverykey":76,"./filter":91,"./http-api":92,"./logger":95,"./models/event":100,"./models/event-timeline":99,"./models/search-result":107,"./models/user":108,"./pushprocessor":109,"./randomstring":110,"./store/stub":119,"./sync":121,"./utils":123,"./webrtc/call":124,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/helpers/typeof":24,"@babel/runtime/regenerator":27,events:36,url:51}],58:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.makeHtmlMessage=function(e,t){return{msgtype:"m.text",format:"org.matrix.custom.html",body:e,formatted_body:t}},r.makeHtmlNotice=function(e,t){return{msgtype:"m.notice",format:"org.matrix.custom.html",body:e,formatted_body:t}},r.makeHtmlEmote=function(e,t){return{msgtype:"m.emote",format:"org.matrix.custom.html",body:e,formatted_body:t}},r.makeTextMessage=function(e){return{msgtype:"m.text",body:e}},r.makeNotice=function(e){return{msgtype:"m.notice",body:e}},r.makeEmoteMessage=function(e){return{msgtype:"m.emote",body:e}}},{}],59:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.getHttpUriForMxc=function(e,t,r,n,o,s){if("string"!=typeof t||!t)return"";if(0!==t.indexOf("mxc://"))return s?t:"";var a=t.slice(6),u="/_matrix/media/r0/download/",c={};r&&(c.width=Math.round(r));n&&(c.height=Math.round(n));o&&(c.method=o);i.keys(c).length>0&&(u="/_matrix/media/r0/thumbnail/");var l=a.indexOf("#"),d="";l>=0&&(d=a.substr(l),a=a.substr(0,l));return e+u+a+(0===i.keys(c).length?"":"?"+i.encodeParams(c))+d};var i=n(e("./utils"))},{"./utils":123,"@babel/runtime/helpers/interopRequireWildcard":13}],60:[function(e,t,r){(function(t,n){"use strict";var i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.createCryptoStoreCacheCallbacks=function(e,t){return{getCrossSigningKeyCache:(i=(0,u.default)(a.default.mark((function r(i,o){var s,u,c;return a.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,new Promise((function(t){return e.doTxn("readonly",[m.IndexedDBCryptoStore.STORE_ACCOUNT],(function(r){e.getSecretStorePrivateKey(r,t,i)}))}));case 2:if(!(s=r.sent)||!s.ciphertext){r.next=11;break}return u=n.from(t._pickleKey),r.next=7,(0,_.decryptAES)(s,u,i);case 7:return c=r.sent,r.abrupt("return",(0,v.decodeBase64)(c));case 11:return r.abrupt("return",s);case 12:case"end":return r.stop()}}),r)}))),function(e,t){return i.apply(this,arguments)}),storeCrossSigningKeyCache:(r=(0,u.default)(a.default.mark((function r(i,o){var s;return a.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(o instanceof Uint8Array){r.next=2;break}throw new Error("storeCrossSigningKeyCache expects Uint8Array, got ".concat(o));case 2:return s=n.from(t._pickleKey),r.next=5,(0,_.encryptAES)((0,v.encodeBase64)(o),s,i);case 5:return o=r.sent,r.abrupt("return",e.doTxn("readwrite",[m.IndexedDBCryptoStore.STORE_ACCOUNT],(function(t){e.storeSecretStorePrivateKey(t,i,o)})));case 7:case"end":return r.stop()}}),r)}))),function(e,t){return r.apply(this,arguments)})};var r;var i},r.requestKeysDuringVerification=function(e,t,r){return x.apply(this,arguments)},r.DeviceTrustLevel=r.UserTrustLevel=r.CrossSigningLevel=r.CrossSigningInfo=void 0;var o=i(e("@babel/runtime/helpers/slicedToArray")),s=i(e("@babel/runtime/helpers/defineProperty")),a=i(e("@babel/runtime/regenerator")),u=i(e("@babel/runtime/helpers/asyncToGenerator")),c=i(e("@babel/runtime/helpers/classCallCheck")),l=i(e("@babel/runtime/helpers/createClass")),d=i(e("@babel/runtime/helpers/assertThisInitialized")),f=i(e("@babel/runtime/helpers/inherits")),h=i(e("@babel/runtime/helpers/possibleConstructorReturn")),p=i(e("@babel/runtime/helpers/getPrototypeOf")),v=e("./olmlib"),g=e("events"),y=e("../logger"),m=e("../crypto/store/indexeddb-crypto-store"),_=e("./aes");function b(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return k(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return k(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function S(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,p.default)(e);if(t){var i=(0,p.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,h.default)(this,r)}}function E(e){return Object.values(e.keys)[0]}var w=function(e){(0,f.default)(C,e);var r,n,i,h,p,g,m,_,k,w,x=S(C);function C(e,t,r){var n;return(0,c.default)(this,C),n=x.call(this),Object.defineProperty((0,d.default)(n),"userId",{enumerable:!0,value:e}),n._callbacks=t||{},n._cacheCallbacks=r||{},n.keys={},n.firstUse=!0,n.crossSigningVerifiedBefore=!1,n}return(0,l.default)(C,[{key:"toStorage",value:function(){return{keys:this.keys,firstUse:this.firstUse,crossSigningVerifiedBefore:this.crossSigningVerifiedBefore}}},{key:"getCrossSigningKey",value:(w=(0,u.default)(a.default.mark((function e(r,n){var i,o,s,u,c;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=function(e){if(e){var r=new t.Olm.PkSigning,i=r.init_with_seed(e);if(i===n)return[i,r];r.free()}},i=["master","self_signing","user_signing"].indexOf(r)>=0,this._callbacks.getCrossSigningKey){e.next=4;break}throw new Error("No getCrossSigningKey callback supplied");case 4:if(void 0===n&&(n=this.getId(r)),!this._cacheCallbacks.getCrossSigningKeyCache||!i){e.next=9;break}return e.next=8,this._cacheCallbacks.getCrossSigningKeyCache(r,n);case 8:s=e.sent;case 9:if(!(u=o(s))){e.next=12;break}return e.abrupt("return",u);case 12:return e.next=14,this._callbacks.getCrossSigningKey(r,n);case 14:if(s=e.sent,!(c=o(s))){e.next=21;break}if(!this._cacheCallbacks.storeCrossSigningKeyCache||!i){e.next=20;break}return e.next=20,this._cacheCallbacks.storeCrossSigningKeyCache(r,s);case 20:return e.abrupt("return",c);case 21:if(s){e.next=23;break}throw new Error("getCrossSigningKey callback for "+r+" returned falsey");case 23:throw new Error("Key type "+r+" from getCrossSigningKey callback did not match");case 24:case"end":return e.stop()}}),e,this)}))),function(e,t){return w.apply(this,arguments)})},{key:"isStoredInSecretStorage",value:(k=(0,u.default)(a.default.mark((function e(t){var r,n,i,o,s;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=function(e){for(var t=0,n=Object.keys(r);t<n.length;t++){var i=n[t];e[i]||delete r[i]}},e.next=3,t.isStored("m.cross_signing.master",!1);case 3:if(e.t0=e.sent,e.t0){e.next=6;break}e.t0={};case 6:r=e.t0,i=0,o=["self_signing","user_signing"];case 8:if(!(i<o.length)){e.next=21;break}return s=o[i],e.t1=n,e.next=13,t.isStored("m.cross_signing.".concat(s),!1);case 13:if(e.t2=e.sent,e.t2){e.next=16;break}e.t2={};case 16:e.t3=e.t2,(0,e.t1)(e.t3);case 18:i++,e.next=8;break;case 21:return e.abrupt("return",Object.keys(r).length?r:null);case 22:case"end":return e.stop()}}),e)}))),function(e){return k.apply(this,arguments)})},{key:"isStoredInKeyCache",value:(_=(0,u.default)(a.default.mark((function e(t){var r,n,i,o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._cacheCallbacks){e.next=3;break}return e.abrupt("return",!1);case 3:n=0,i=t?[t]:["master","self_signing","user_signing"];case 5:if(!(n<i.length)){e.next=14;break}return o=i[n],e.next=9,r.getCrossSigningKeyCache(o);case 9:if(e.sent){e.next=11;break}return e.abrupt("return",!1);case 11:n++,e.next=5;break;case 14:return e.abrupt("return",!0);case 15:case"end":return e.stop()}}),e,this)}))),function(e){return _.apply(this,arguments)})},{key:"getCrossSigningKeysFromCache",value:(m=(0,u.default)(a.default.mark((function e(){var t,r,n,i,o,s;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=new Map,r=this._cacheCallbacks){e.next=4;break}return e.abrupt("return",t);case 4:n=0,i=["master","self_signing","user_signing"];case 5:if(!(n<i.length)){e.next=16;break}return o=i[n],e.next=9,r.getCrossSigningKeyCache(o);case 9:if(s=e.sent){e.next=12;break}return e.abrupt("continue",13);case 12:t.set(o,s);case 13:n++,e.next=5;break;case 16:return e.abrupt("return",t);case 17:case"end":return e.stop()}}),e,this)}))),function(){return m.apply(this,arguments)})},{key:"getId",value:function(e){return e=e||"master",this.keys[e]?E(this.keys[e]):null}},{key:"resetKeys",value:(g=(0,u.default)(a.default.mark((function e(r){var n,i,u,c,l,d,f,h,p,g;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._callbacks.saveCrossSigningKeys){e.next=2;break}throw new Error("No saveCrossSigningKeys callback supplied");case 2:if(!(void 0===r||r&I.MASTER)&&this.keys.master){e.next=6;break}r=I.MASTER|I.USER_SIGNING|I.SELF_SIGNING,e.next=8;break;case 6:if(0!==r){e.next=8;break}return e.abrupt("return");case 8:if(n={},i={},e.prev=10,!(r&I.MASTER)){e.next=18;break}u=new t.Olm.PkSigning,n.master=u.generate_seed(),c=u.init_with_seed(n.master),i.master={user_id:this.userId,usage:["master"],keys:(0,s.default)({},"ed25519:"+c,c)},e.next=24;break;case 18:return e.next=20,this.getCrossSigningKey("master");case 20:l=e.sent,d=(0,o.default)(l,2),c=d[0],u=d[1];case 24:if(r&I.SELF_SIGNING){f=new t.Olm.PkSigning;try{n.self_signing=f.generate_seed(),h=f.init_with_seed(n.self_signing),i.self_signing={user_id:this.userId,usage:["self_signing"],keys:(0,s.default)({},"ed25519:"+h,h)},(0,v.pkSign)(i.self_signing,u,this.userId,c)}finally{f.free()}}if(r&I.USER_SIGNING){p=new t.Olm.PkSigning;try{n.user_signing=p.generate_seed(),g=p.init_with_seed(n.user_signing),i.user_signing={user_id:this.userId,usage:["user_signing"],keys:(0,s.default)({},"ed25519:"+g,g)},(0,v.pkSign)(i.user_signing,u,this.userId,c)}finally{p.free()}}Object.assign(this.keys,i),this._callbacks.saveCrossSigningKeys(n);case 28:return e.prev=28,u&&u.free(),e.finish(28);case 31:case"end":return e.stop()}}),e,this,[[10,,28,31]])}))),function(e){return g.apply(this,arguments)})},{key:"clearKeys",value:function(){this.keys={}}},{key:"setKeys",value:function(e){var t={};if(e.master){if(e.master.user_id!==this.userId){var r="Mismatched user ID "+e.master.user_id+" in master key from "+this.userId;throw y.logger.error(r),new Error(r)}this.keys.master?E(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}var n=E(t.master);if(e.user_signing){if(e.user_signing.user_id!==this.userId){var i="Mismatched user ID "+e.master.user_id+" in user_signing key from "+this.userId;throw y.logger.error(i),new Error(i)}try{(0,v.pkVerify)(e.user_signing,n,this.userId)}catch(e){throw y.logger.error("invalid signature on user-signing key"),e}}if(e.self_signing){if(e.self_signing.user_id!==this.userId){var o="Mismatched user ID "+e.master.user_id+" in self_signing key from "+this.userId;throw y.logger.error(o),new Error(o)}try{(0,v.pkVerify)(e.self_signing,n,this.userId)}catch(e){throw y.logger.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)}},{key:"updateCrossSigningVerifiedBefore",value:function(e){!this.crossSigningVerifiedBefore&&e&&(this.crossSigningVerifiedBefore=!0)}},{key:"signObject",value:(p=(0,u.default)(a.default.mark((function e(t,r){var n,i,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.keys[r]){e.next=2;break}throw new Error("Attempted to sign with "+r+" key but no such key present");case 2:return e.next=4,this.getCrossSigningKey(r);case 4:return n=e.sent,i=(0,o.default)(n,2),s=i[0],u=i[1],e.prev=8,(0,v.pkSign)(t,u,this.userId,s),e.abrupt("return",t);case 11:return e.prev=11,u.free(),e.finish(11);case 14:case"end":return e.stop()}}),e,this,[[8,,11,14]])}))),function(e,t){return p.apply(this,arguments)})},{key:"signUser",value:(h=(0,u.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.keys.user_signing){e.next=3;break}return y.logger.info("No user signing key: not signing user"),e.abrupt("return");case 3:return e.abrupt("return",this.signObject(t.keys.master,"user_signing"));case 4:case"end":return e.stop()}}),e,this)}))),function(e){return h.apply(this,arguments)})},{key:"signDevice",value:(i=(0,u.default)(a.default.mark((function e(t,r){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t===this.userId){e.next=2;break}throw new Error("Trying to sign ".concat(t,"'s device; can only sign our own device"));case 2:if(this.keys.self_signing){e.next=5;break}return y.logger.info("No self signing key: not signing device"),e.abrupt("return");case 5:return e.abrupt("return",this.signObject({algorithms:r.algorithms,keys:r.keys,device_id:r.deviceId,user_id:t},"self_signing"));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"checkUserTrust",value:function(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 R(!0,!0,this.firstUse);if(!this.keys.user_signing)return new R(!1,!1,e.firstUse);var t,r=e.keys.master,n=this.getId("user_signing");try{(0,v.pkVerify)(r,n,this.userId),t=!0}catch(e){t=!1}return new R(t,e.crossSigningVerifiedBefore,e.firstUse)}},{key:"checkDeviceTrust",value:function(e,t,r,n){var i=this.checkUserTrust(e),o=e.keys.self_signing;if(!o)return new T(!1,!1,r,n);var s=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(0,v.pkVerify)(o,e.getId(),e.userId),(0,v.pkVerify)(s,E(o),e.userId),T.fromUserTrustLevel(i,r,n)}catch(e){return new T(!1,!1,r,n)}}},{key:"getCacheCallbacks",value:function(){return this._cacheCallbacks}}],[{key:"fromStorage",value:function(e,t){var r=new C(t);for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return r}},{key:"storeInSecretStorage",value:(n=(0,u.default)(a.default.mark((function e(t,r){var n,i,s,u,c,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=b(t),e.prev=1,n.s();case 3:if((i=n.n()).done){e.next=10;break}return s=(0,o.default)(i.value,2),u=s[0],c=s[1],l=(0,v.encodeBase64)(c),e.next=8,r.store("m.cross_signing.".concat(u),l);case 8:e.next=3;break;case 10:e.next=15;break;case 12:e.prev=12,e.t0=e.catch(1),n.e(e.t0);case 15:return e.prev=15,n.f(),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[1,12,15,18]])}))),function(e,t){return n.apply(this,arguments)})},{key:"getFromSecretStorage",value:(r=(0,u.default)(a.default.mark((function e(t,r){var n;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.get("m.cross_signing.".concat(t));case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",null);case 5:return e.abrupt("return",(0,v.decodeBase64)(n));case 6:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})}]),C}(g.EventEmitter);r.CrossSigningInfo=w;var I={MASTER:4,USER_SIGNING:2,SELF_SIGNING:1};r.CrossSigningLevel=I;var R=function(){function e(t,r,n){(0,c.default)(this,e),this._crossSigningVerified=t,this._crossSigningVerifiedBefore=r,this._tofu=n}return(0,l.default)(e,[{key:"isVerified",value:function(){return this.isCrossSigningVerified()}},{key:"isCrossSigningVerified",value:function(){return this._crossSigningVerified}},{key:"wasCrossSigningVerified",value:function(){return this._crossSigningVerifiedBefore}},{key:"isTofu",value:function(){return this._tofu}}]),e}();r.UserTrustLevel=R;var T=function(){function e(t,r,n,i){(0,c.default)(this,e),this._crossSigningVerified=t,this._tofu=r,this._localVerified=n,this._trustCrossSignedDevices=i}return(0,l.default)(e,[{key:"isVerified",value:function(){return Boolean(this.isLocallyVerified()||this._trustCrossSignedDevices&&this.isCrossSigningVerified())}},{key:"isCrossSigningVerified",value:function(){return this._crossSigningVerified}},{key:"isLocallyVerified",value:function(){return this._localVerified}},{key:"isTofu",value:function(){return this._tofu}}],[{key:"fromUserTrustLevel",value:function(t,r,n){return new e(t._crossSigningVerified,t._tofu,r,n)}}]),e}();function x(){return(x=(0,u.default)(a.default.mark((function e(t,r,n){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.getUserId()===r){e.next=2;break}return e.abrupt("return");case 2:return console.log("Cross-signing: Self-verification done; requesting keys"),e.abrupt("return",new Promise((function(e,r){var i,o=t,s=o._crypto._crossSigningInfo,c=new w(s.userId,{getCrossSigningKey:(i=(0,u.default)(a.default.mark((function e(t){var r,i,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.debug("Cross-signing: requesting secret",t,n),r=o.requestSecret("m.cross_signing.".concat(t),[n]),i=r.promise,e.next=4,i;case 4:return s=e.sent,u=(0,v.decodeBase64)(s),e.abrupt("return",Uint8Array.from(u));case 7:case"end":return e.stop()}}),e)}))),function(e){return i.apply(this,arguments)})},s._cacheCallbacks);c.keys=s.keys;var l=new Promise((function(e,t){setTimeout(e,6e4,new Error("Timeout"))})),d=new Promise(function(){var e=(0,u.default)(a.default.mark((function e(t){var r,i,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o._crypto.getSessionBackupPrivateKey();case 2:if(e.sent){e.next=18;break}return y.logger.info("No cached backup key found. Requesting..."),r=o.requestSecret("m.megolm_backup.v1",[n]),e.next=8,r.promise;case 8:return i=e.sent,y.logger.info("Got key backup key, decoding..."),s=(0,v.decodeBase64)(i),y.logger.info("Decoded backup key, storing..."),o._crypto.storeSessionBackupPrivateKey(Uint8Array.from(s)),y.logger.info("Backup key stored. Starting backup restore..."),e.next=16,o.getKeyBackupVersion();case 16:u=e.sent,o.restoreKeyBackupWithCache(void 0,void 0,u).then((function(){y.logger.info("Backup restored.")}));case 18:t();case 19:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());return Promise.race([Promise.all([c.getCrossSigningKey("master"),c.getCrossSigningKey("self_signing"),c.getCrossSigningKey("user_signing"),d]),l]).then(e,r)})).catch((function(e){console.warn("Cross-signing: failure while requesting keys:",e)})));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}r.DeviceTrustLevel=T}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../crypto/store/indexeddb-crypto-store":78,"../logger":95,"./aes":67,"./olmlib":75,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,buffer:34,events:36}],61:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.DeviceList=void 0;var o=i(e("@babel/runtime/helpers/slicedToArray")),s=i(e("@babel/runtime/regenerator")),a=i(e("@babel/runtime/helpers/asyncToGenerator")),u=i(e("@babel/runtime/helpers/classCallCheck")),c=i(e("@babel/runtime/helpers/createClass")),l=i(e("@babel/runtime/helpers/assertThisInitialized")),d=i(e("@babel/runtime/helpers/inherits")),f=i(e("@babel/runtime/helpers/possibleConstructorReturn")),h=i(e("@babel/runtime/helpers/getPrototypeOf")),p=e("events"),v=e("../logger"),g=e("./deviceinfo"),y=e("./CrossSigning"),m=n(e("./olmlib")),_=e("./store/indexeddb-crypto-store"),b=e("../utils");function k(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return S(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return S(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,h.default)(e);if(t){var i=(0,h.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,f.default)(this,r)}}var w=function(e){(0,d.default)(i,e);var t,r,n=E(i);function i(e,t,r){var o;return(0,u.default)(this,i),(o=n.call(this))._cryptoStore=t,o._devices={},o._crossSigningInfo={},o._userByIdentityKey={},o._deviceTrackingStatus={},o._syncToken=null,o._serialiser=new I(e,r,(0,l.default)(o)),o._keyDownloadsInProgressByUser={},o._dirty=!1,o._savePromise=null,o._resolveSavePromise=null,o._savePromiseTime=null,o._saveTimer=null,o._hasFetched=null,o}return(0,c.default)(i,[{key:"load",value:(r=(0,a.default)(s.default.mark((function e(){var t,r,n,i=this;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readonly",[_.IndexedDBCryptoStore.STORE_DEVICE_DATA],(function(e){i._cryptoStore.getEndToEndDeviceData(e,(function(e){i._hasFetched=Boolean(e&&e.devices),i._devices=e?e.devices:{},i._crossSigningInfo=e&&e.crossSigningInfo||{},i._deviceTrackingStatus=e?e.trackingStatus:{},i._syncToken=e?e.syncToken:null,i._userByIdentityKey={};for(var t=0,r=Object.keys(i._devices);t<r.length;t++)for(var n=r[t],o=i._devices[n],s=0,a=Object.keys(o);s<a.length;s++){var u=a[s],c=o[u].keys["curve25519:"+u];void 0!==c&&(i._userByIdentityKey[c]=n)}}))}));case 2:for(t=0,r=Object.keys(this._deviceTrackingStatus);t<r.length;t++)n=r[t],2==this._deviceTrackingStatus[n]&&(this._deviceTrackingStatus[n]=1);case 3:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"stop",value:function(){null!==this._saveTimer&&clearTimeout(this._saveTimer)}},{key:"saveIfDirty",value:(t=(0,a.default)(s.default.mark((function e(t){var r,n,i,o=this;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._dirty){e.next=2;break}return e.abrupt("return",Promise.resolve(!1));case 2:return void 0===t&&(t=500),r=Date.now+t,this._savePromiseTime&&r<this._savePromiseTime&&(clearTimeout(this._saveTimer),this._saveTimer=null,this._savePromiseTime=null),null===(n=this._savePromise)&&(n=new Promise((function(e,t){o._resolveSavePromise=e})),this._savePromise=n),null===this._saveTimer&&(i=this._resolveSavePromise,this._savePromiseTime=r,this._saveTimer=setTimeout((function(){v.logger.log("Saving device tracking data",o._syncToken),o._savePromiseTime=null,o._saveTimer=null,o._savePromise=null,o._resolveSavePromise=null,o._cryptoStore.doTxn("readwrite",[_.IndexedDBCryptoStore.STORE_DEVICE_DATA],(function(e){o._cryptoStore.storeEndToEndDeviceData({devices:o._devices,crossSigningInfo:o._crossSigningInfo,trackingStatus:o._deviceTrackingStatus,syncToken:o._syncToken},e)})).then((function(){o._dirty=!1,i()}),(function(e){v.logger.error("Failed to save device tracking data",o._syncToken),v.logger.error(e)}))}),t)),e.abrupt("return",n);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"getSyncToken",value:function(){return this._syncToken}},{key:"setSyncToken",value:function(e){this._syncToken=e}},{key:"downloadKeys",value:function(e,t){var r=this,n=[],i=[];if(e.forEach((function(e){var o=r._deviceTrackingStatus[e];r._keyDownloadsInProgressByUser[e]?(v.logger.log("downloadKeys: already have a download in progress for "+"".concat(e,": awaiting its result")),i.push(r._keyDownloadsInProgressByUser[e])):(t||3!=o)&&n.push(e)})),0!=n.length){v.logger.log("downloadKeys: downloading for",n);var o=this._doKeyDownload(n);i.push(o)}return 0===i.length&&v.logger.log("downloadKeys: already have all necessary keys"),Promise.all(i).then((function(){return r._getDevicesFromStore(e)}))}},{key:"_getDevicesFromStore",value:function(e){var t={},r=this;return e.map((function(e){t[e]={},(r.getStoredDevicesForUser(e)||[]).map((function(r){t[e][r.deviceId]=r}))})),t}},{key:"getKnownUserIds",value:function(){return Object.keys(this._devices)}},{key:"getStoredDevicesForUser",value:function(e){var t=this._devices[e];if(!t)return null;var r=[];for(var n in t)t.hasOwnProperty(n)&&r.push(g.DeviceInfo.fromStorage(t[n],n));return r}},{key:"getRawStoredDevicesForUser",value:function(e){return this._devices[e]}},{key:"getStoredCrossSigningForUser",value:function(e){return this._crossSigningInfo[e]?y.CrossSigningInfo.fromStorage(this._crossSigningInfo[e],e):null}},{key:"storeCrossSigningForUser",value:function(e,t){this._crossSigningInfo[e]=t,this._dirty=!0}},{key:"getStoredDevice",value:function(e,t){var r=this._devices[e];if(r&&r[t])return g.DeviceInfo.fromStorage(r[t],t)}},{key:"getUserByIdentityKey",value:function(e,t){return e!==m.OLM_ALGORITHM&&e!==m.MEGOLM_ALGORITHM?null:this._userByIdentityKey[t]}},{key:"getDeviceByIdentityKey",value:function(e,t){var r=this.getUserByIdentityKey(e,t);if(!r)return null;var n=this._devices[r];if(!n)return null;for(var i in n)if(n.hasOwnProperty(i)){var o=n[i];for(var s in o.keys){if(o.keys.hasOwnProperty(s))if(0===s.indexOf("curve25519:"))if(o.keys[s]==t)return g.DeviceInfo.fromStorage(o,i)}}return null}},{key:"storeDevicesForUser",value:function(e,t){if(void 0!==this._devices[e])for(var r=0,n=Object.entries(this._devices[e]);r<n.length;r++){var i=(0,o.default)(n[r],2),s=i[0],a=i[1].keys["curve25519:"+s];delete this._userByIdentityKey[a]}this._devices[e]=t;for(var u=0,c=Object.entries(t);u<c.length;u++){var l=(0,o.default)(c[u],2),d=l[0],f=l[1].keys["curve25519:"+d];this._userByIdentityKey[f]=e}this._dirty=!0}},{key:"startTrackingDeviceList",value:function(e){if("string"!=typeof e)throw new Error("userId must be a string; was "+e);this._deviceTrackingStatus[e]||(v.logger.log("Now tracking device list for "+e),this._deviceTrackingStatus[e]=1,this._dirty=!0)}},{key:"stopTrackingDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(v.logger.log("No longer tracking device list for "+e),this._deviceTrackingStatus[e]=0,this._dirty=!0)}},{key:"stopTrackingAllDeviceLists",value:function(){for(var e=0,t=Object.keys(this._deviceTrackingStatus);e<t.length;e++){var r=t[e];this._deviceTrackingStatus[r]=0}this._dirty=!0}},{key:"invalidateUserDeviceList",value:function(e){this._deviceTrackingStatus[e]&&(v.logger.log("Marking device list outdated for",e),this._deviceTrackingStatus[e]=1,this._dirty=!0)}},{key:"refreshOutdatedDeviceLists",value:function(){this.saveIfDirty();for(var e=[],t=0,r=Object.keys(this._deviceTrackingStatus);t<r.length;t++){var n=r[t];1==this._deviceTrackingStatus[n]&&e.push(n)}return this._doKeyDownload(e)}},{key:"_setRawStoredDevicesForUser",value:function(e,t){if(void 0!==this._devices[e])for(var r=0,n=Object.entries(this._devices[e]);r<n.length;r++){var i=(0,o.default)(n[r],2),s=i[0],a=i[1].keys["curve25519:"+s];delete this._userByIdentityKey[a]}this._devices[e]=t;for(var u=0,c=Object.entries(t);u<c.length;u++){var l=(0,o.default)(c[u],2),d=l[0],f=l[1].keys["curve25519:"+d];this._userByIdentityKey[f]=e}}},{key:"setRawStoredCrossSigningForUser",value:function(e,t){this._crossSigningInfo[e]=t}},{key:"_doKeyDownload",value:function(e){var t=this;if(0===e.length)return Promise.resolve();var r=this._serialiser.updateDevicesForUsers(e,this._syncToken).then((function(){n(!0)}),(function(t){throw v.logger.error("Error downloading keys for "+e+":",t),n(!1),t}));e.forEach((function(e){t._keyDownloadsInProgressByUser[e]=r,1==t._deviceTrackingStatus[e]&&(t._deviceTrackingStatus[e]=2)}));var n=function(n){t.emit("crypto.willUpdateDevices",e,!t._hasFetched),e.forEach((function(e){(t._dirty=!0,t._keyDownloadsInProgressByUser[e]===r)?(delete t._keyDownloadsInProgressByUser[e],2==t._deviceTrackingStatus[e]&&(n?(t._deviceTrackingStatus[e]=3,v.logger.log("Device list for",e,"now up to date")):t._deviceTrackingStatus[e]=1)):v.logger.log("Another update in the queue for",e,"- not marking up-to-date")})),t.saveIfDirty(),t.emit("crypto.devicesUpdated",e,!t._hasFetched),t._hasFetched=!0};return r}}]),i}(p.EventEmitter);r.DeviceList=w;var I=function(){function e(t,r,n){(0,u.default)(this,e),this._baseApis=t,this._olmDevice=r,this._deviceList=n,this._downloadInProgress=!1,this._keyDownloadsQueuedByUser={},this._queuedQueryDeferred=null,this._syncToken=null}var t;return(0,c.default)(e,[{key:"updateDevicesForUsers",value:function(e,t){var r=this;return e.forEach((function(e){r._keyDownloadsQueuedByUser[e]=!0})),this._queuedQueryDeferred||(this._queuedQueryDeferred=(0,b.defer)()),this._syncToken=t,this._downloadInProgress?(v.logger.log("Queued key download for",e),this._queuedQueryDeferred.promise):this._doQueuedQueries()}},{key:"_doQueuedQueries",value:function(){var e=this;if(this._downloadInProgress)throw new Error("DeviceListUpdateSerialiser._doQueuedQueries called with request active");var t=Object.keys(this._keyDownloadsQueuedByUser);this._keyDownloadsQueuedByUser={};var r=this._queuedQueryDeferred;this._queuedQueryDeferred=null,v.logger.log("Starting key download for",t),this._downloadInProgress=!0;var n={};return this._syncToken&&(n.token=this._syncToken),this._baseApis.downloadKeysForUsers(t,n).then(function(){var r=(0,a.default)(s.default.mark((function r(n){var i,o,a,u,c,l,d;return s.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:i=n.device_keys||{},o=n.master_keys||{},a=n.self_signing_keys||{},u=n.user_signing_keys||{},c=k(t),r.prev=5,c.s();case 7:if((l=c.n()).done){r.next=21;break}return d=l.value,r.next=11,(0,b.sleep)(5);case 11:return r.prev=11,r.next=14,e._processQueryResponseForUser(d,i[d],{master:o[d],self_signing:a[d],user_signing:u[d]});case 14:r.next=19;break;case 16:r.prev=16,r.t0=r.catch(11),v.logger.error("Error processing keys for ".concat(d,":"),r.t0);case 19:r.next=7;break;case 21:r.next=26;break;case 23:r.prev=23,r.t1=r.catch(5),c.e(r.t1);case 26:return r.prev=26,c.f(),r.finish(26);case 29:case"end":return r.stop()}}),r,null,[[5,23,26,29],[11,16]])})));return function(e){return r.apply(this,arguments)}}()).then((function(){v.logger.log("Completed key download for "+t),e._downloadInProgress=!1,r.resolve(),e._queuedQueryDeferred&&e._doQueuedQueries()}),(function(n){v.logger.warn("Error downloading keys for "+t+":",n),e._downloadInProgress=!1,r.reject(n)})),r.promise}},{key:"_processQueryResponseForUser",value:(t=(0,a.default)(s.default.mark((function e(t,r,n){var i,o,a,u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v.logger.log("got device keys for "+t+":",r),v.logger.log("got cross-signing keys for "+t+":",n),i={},(o=this._deviceList.getRawStoredDevicesForUser(t))&&Object.keys(o).forEach((function(e){var t=g.DeviceInfo.fromStorage(o[e],e);i[e]=t})),e.next=7,R(this._olmDevice,t,i,r||{});case 7:a={},Object.keys(i).forEach((function(e){a[e]=i[e].toStorage()})),this._deviceList._setRawStoredDevicesForUser(t,a),n&&(n.master||n.self_signing||n.user_signing)&&((u=this._deviceList.getStoredCrossSigningForUser(t)||new y.CrossSigningInfo(t)).setKeys(n),this._deviceList.setRawStoredCrossSigningForUser(t,u.toStorage()),this._deviceList.emit("userCrossSigningUpdated",t));case 11:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})}]),e}();function R(e,t,r,n){return T.apply(this,arguments)}function T(){return(T=(0,a.default)(s.default.mark((function e(t,r,n,i){var o,a,u,c;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=!1,e.t0=s.default.keys(n);case 2:if((e.t1=e.t0()).done){e.next=9;break}if(a=e.t1.value,n.hasOwnProperty(a)){e.next=6;break}return e.abrupt("continue",2);case 6:a in i||(v.logger.log("Device "+r+":"+a+" has been removed"),delete n[a],o=!0),e.next=2;break;case 9:e.t2=s.default.keys(i);case 10:if((e.t3=e.t2()).done){e.next=27;break}if(u=e.t3.value,i.hasOwnProperty(u)){e.next=14;break}return e.abrupt("continue",10);case 14:if((c=i[u]).user_id===r){e.next=18;break}return v.logger.warn("Mismatched user_id "+c.user_id+" in keys from "+r+":"+u),e.abrupt("continue",10);case 18:if(c.device_id===u){e.next=21;break}return v.logger.warn("Mismatched device_id "+c.device_id+" in keys from "+r+":"+u),e.abrupt("continue",10);case 21:return e.next=23,x(t,n,c);case 23:if(!e.sent){e.next=25;break}o=!0;case 25:e.next=10;break;case 27:return e.abrupt("return",o);case 28:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function x(e,t,r){return C.apply(this,arguments)}function C(){return(C=(0,a.default)(s.default.mark((function e(t,r,n){var i,o,a,u,c,l,d;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.keys){e.next=2;break}return e.abrupt("return",!1);case 2:if(i=n.device_id,o=n.user_id,a="ed25519:"+i,u=n.keys[a]){e.next=9;break}return v.logger.warn("Device "+o+":"+i+" has no ed25519 key"),e.abrupt("return",!1);case 9:return c=n.unsigned||{},l=n.signatures||{},e.prev=11,e.next=14,m.verifySignature(t,n,o,i,u);case 14:e.next=20;break;case 16:return e.prev=16,e.t0=e.catch(11),v.logger.warn("Unable to verify signature on device "+o+":"+i+":"+e.t0),e.abrupt("return",!1);case 20:if(!(i in r)){e.next=27;break}if((d=r[i]).getFingerprint()==u){e.next=25;break}return v.logger.warn("Ed25519 key for device "+o+":"+i+" has changed"),e.abrupt("return",!1);case 25:e.next=28;break;case 27:r[i]=d=new g.DeviceInfo(i);case 28:return d.keys=n.keys||{},d.algorithms=n.algorithms||[],d.unsigned=c,d.signatures=l,e.abrupt("return",!0);case 33:case"end":return e.stop()}}),e,null,[[11,16]])})))).apply(this,arguments)}},{"../logger":95,"../utils":123,"./CrossSigning":60,"./deviceinfo":72,"./olmlib":75,"./store/indexeddb-crypto-store":78,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,events:36}],62:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.EncryptionSetupOperation=r.EncryptionSetupBuilder=void 0;var i=n(e("@babel/runtime/helpers/inherits")),o=n(e("@babel/runtime/helpers/possibleConstructorReturn")),s=n(e("@babel/runtime/helpers/getPrototypeOf")),a=n(e("@babel/runtime/helpers/slicedToArray")),u=n(e("@babel/runtime/regenerator")),c=n(e("@babel/runtime/helpers/asyncToGenerator")),l=n(e("@babel/runtime/helpers/classCallCheck")),d=n(e("@babel/runtime/helpers/createClass")),f=e("../logger"),h=e("../models/event"),p=e("events"),v=e("./CrossSigning"),g=e("./store/indexeddb-crypto-store"),y=e("../http-api");function m(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,s.default)(e);if(t){var i=(0,s.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,o.default)(this,r)}}function _(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var k=function(){function e(t,r){(0,l.default)(this,e),this.accountDataClientAdapter=new E(t),this.crossSigningCallbacks=new w,this.ssssCryptoCallbacks=new I(r),this._crossSigningKeys=null,this._keySignatures=null,this._keyBackupInfo=null}var t;return(0,d.default)(e,[{key:"addCrossSigningKeys",value:function(e,t){this._crossSigningKeys={authUpload:e,keys:t}}},{key:"addSessionBackup",value:function(e){this._keyBackupInfo=e}},{key:"addSessionBackupPrivateKeyToCache",value:function(e){this._sessionBackupPrivateKey=e}},{key:"addKeySignature",value:function(e,t,r){this._keySignatures||(this._keySignatures={});var n=this._keySignatures[e]||{};this._keySignatures[e]=n,n[t]=r}},{key:"setAccountData",value:function(e,t){return this.accountDataClientAdapter.setAccountData(e,t)}},{key:"buildOperation",value:function(){var e=this.accountDataClientAdapter._values;return new S(e,this._crossSigningKeys,this._keyBackupInfo,this._keySignatures)}},{key:"persist",value:(t=(0,c.default)(u.default.mark((function e(t){var r,n,i,o,s,a=this;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._crossSigningKeys){e.next=14;break}r=(0,v.createCryptoStoreCacheCallbacks)(t._cryptoStore,t._olmDevice),n=0,i=["master","self_signing","user_signing"];case 3:if(!(n<i.length)){e.next=12;break}return o=i[n],f.logger.log("Cache ".concat(o," cross-signing private key locally")),s=this.crossSigningCallbacks.privateKeys.get(o),e.next=9,r.storeCrossSigningKeyCache(o,s);case 9:n++,e.next=3;break;case 12:return e.next=14,t._cryptoStore.doTxn("readwrite",[g.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){t._cryptoStore.storeCrossSigningKeys(e,a._crossSigningKeys.keys)}));case 14:if(!this._sessionBackupPrivateKey){e.next=17;break}return e.next=17,t.storeSessionBackupPrivateKey(this._sessionBackupPrivateKey);case 17:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})}]),e}();r.EncryptionSetupBuilder=k;var S=function(){function e(t,r,n,i){(0,l.default)(this,e),this._accountData=t,this._crossSigningKeys=r,this._keyBackupInfo=n,this._keySignatures=i}var t;return(0,d.default)(e,[{key:"apply",value:(t=(0,c.default)(u.default.mark((function e(t){var r,n,i,o,s,c,l,d,f,h,p,v;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t._baseApis,!this._crossSigningKeys){e.next=7;break}for(n={},i=0,o=Object.entries(this._crossSigningKeys.keys);i<o.length;i++)s=(0,a.default)(o[i],2),c=s[0],l=s[1],n[c+"_key"]=l;return e.next=6,this._crossSigningKeys.authUpload((function(e){return r.uploadDeviceSigningKeys(e,n)}));case 6:t._crossSigningInfo.setKeys(this._crossSigningKeys.keys);case 7:if(!this._accountData){e.next=25;break}d=_(this._accountData),e.prev=9,d.s();case 11:if((f=d.n()).done){e.next=17;break}return h=(0,a.default)(f.value,2),p=h[0],v=h[1],e.next=15,r.setAccountData(p,v);case 15:e.next=11;break;case 17:e.next=22;break;case 19:e.prev=19,e.t0=e.catch(9),d.e(e.t0);case 22:return e.prev=22,d.f(),e.finish(22);case 25:if(!this._keySignatures){e.next=28;break}return e.next=28,r.uploadKeySignatures(this._keySignatures);case 28:if(!this._keyBackupInfo){e.next=36;break}if(!this._keyBackupInfo.version){e.next=34;break}return e.next=32,r._http.authedRequest(void 0,"PUT","/room_keys/version/"+this._keyBackupInfo.version,void 0,{algorithm:this._keyBackupInfo.algorithm,auth_data:this._keyBackupInfo.auth_data},{prefix:y.PREFIX_UNSTABLE});case 32:e.next=36;break;case 34:return e.next=36,r._http.authedRequest(void 0,"POST","/room_keys/version",void 0,this._keyBackupInfo,{prefix:y.PREFIX_UNSTABLE});case 36:case"end":return e.stop()}}),e,this,[[9,19,22,25]])}))),function(e){return t.apply(this,arguments)})}]),e}();r.EncryptionSetupOperation=S;var E=function(e){(0,i.default)(r,e);var t=m(r);function r(e){var n;return(0,l.default)(this,r),(n=t.call(this))._existingValues=e,n._values=new Map,n}return(0,d.default)(r,[{key:"getAccountDataFromServer",value:function(e){return Promise.resolve(this.getAccountData(e))}},{key:"getAccountData",value:function(e){var t=this._values.get(e);if(t)return t;var r=this._existingValues[e];return r?r.getContent():null}},{key:"setAccountData",value:function(e,t){var r=this,n=this._values.get(e);return this._values.set(e,t),Promise.resolve().then((function(){var i=new h.MatrixEvent({type:e,content:t});r.emit("accountData",i,n)}))}}]),r}(p.EventEmitter),w=function(){function e(){(0,l.default)(this,e),this.privateKeys=new Map}return(0,d.default)(e,[{key:"getCrossSigningKeyCache",value:function(e,t){return this.getCrossSigningKey(e,t)}},{key:"storeCrossSigningKeyCache",value:function(e,t){return this.privateKeys.set(e,t),Promise.resolve()}},{key:"getCrossSigningKey",value:function(e,t){return Promise.resolve(this.privateKeys.get(e))}},{key:"saveCrossSigningKeys",value:function(e){for(var t=0,r=Object.entries(e);t<r.length;t++){var n=(0,a.default)(r[t],2),i=n[0],o=n[1];this.privateKeys.set(i,o)}}}]),e}(),I=function(){function e(t){(0,l.default)(this,e),this._privateKeys=new Map,this._delegateCryptoCallbacks=t}var t;return(0,d.default)(e,[{key:"getSecretStorageKey",value:(t=(0,c.default)(u.default.mark((function e(t,r){var n,i,o,s,c,l,d,f,h;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.keys,i=0,o=Object.keys(n);case 2:if(!(i<o.length)){e.next=10;break}if(s=o[i],!(c=this._privateKeys.get(s))){e.next=7;break}return e.abrupt("return",[s,c]);case 7:i++,e.next=2;break;case 10:if(!this._delegateCryptoCallbacks){e.next=16;break}return e.next=13,this._delegateCryptoCallbacks.getSecretStorageKey({keys:n},r);case 13:return(l=e.sent)&&(d=(0,a.default)(l,2),f=d[0],h=d[1],this._privateKeys.set(f,h)),e.abrupt("return",l);case 16:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"addPrivateKey",value:function(e,t){this._privateKeys.set(e,t),this._delegateCryptoCallbacks&&this._delegateCryptoCallbacks.cacheSecretStorageKey&&this._delegateCryptoCallbacks.cacheSecretStorageKey(e,t)}}]),e}()},{"../http-api":92,"../logger":95,"../models/event":100,"./CrossSigning":60,"./store/indexeddb-crypto-store":78,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,events:36}],63:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.OlmDevice=h,r.WITHHELD_MESSAGES=void 0;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=e("../logger"),u=e("./store/indexeddb-crypto-store"),c=n(e("./algorithms"));function l(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){throw e})),f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){function t(t){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(e){a=!0,o=e})),f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function f(e){if(void 0===e)throw new Error("payloadString undefined");if(e.length>49152){var t=new Error("Message too long ("+e.length+" bytes). The maximum for an encrypted message is 49152 bytes.");throw t.data={errcode:"M_TOO_LARGE",error:"Payload too large for encrypted message"},t}}function h(e){this._cryptoStore=e,this._pickleKey="DEFAULT_KEY",this.deviceCurve25519Key=null,this.deviceEd25519Key=null,this._maxOneTimeKeys=null,this._outboundGroupSessionStore={},this._inboundGroupSessionMessageIndexes={},this._sessionsInProgress={},this._olmPrekeyPromise=Promise.resolve()}function p(e,t,r,n){return v.apply(this,arguments)}function v(){return(v=(0,s.default)(o.default.mark((function e(t,r,n,i){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,r.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT,u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){r.storeAccount(e,t.pickledAccount),t.sessions.forEach((function(t){var n=t.deviceKey,i=t.sessionId,o={session:t.session,lastReceivedMessageTs:t.lastReceivedMessageTs};r.storeEndToEndSession(n,i,o,e)}))}));case 2:i.unpickle(n,t.pickledAccount);case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function g(e,t,r){return y.apply(this,arguments)}function y(){return(y=(0,s.default)(o.default.mark((function e(t,r,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){t.getAccount(e,(function(i){null!==i?n.unpickle(r,i):(n.create(),i=n.pickle(r),t.storeAccount(e,i))}))}));case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}h.prototype.init=(0,s.default)(o.default.mark((function e(){var r,n,i,s,a,u=arguments;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=u.length>0&&void 0!==u[0]?u[0]:{},i=new t.Olm.Account,s=r.pickleKey,a=r.fromExportedDevice,e.prev=3,!a){e.next=11;break}return s&&console.warn("ignoring opts.pickleKey because opts.fromExportedDevice is present."),this._pickleKey=a.pickleKey,e.next=9,p(a,this._cryptoStore,this._pickleKey,i);case 9:e.next=14;break;case 11:return s&&(this._pickleKey=s),e.next=14,g(this._cryptoStore,this._pickleKey,i);case 14:n=JSON.parse(i.identity_keys()),this._maxOneTimeKeys=i.max_number_of_one_time_keys();case 16:return e.prev=16,i.free(),e.finish(16);case 19:this.deviceCurve25519Key=n.curve25519,this.deviceEd25519Key=n.ed25519;case 21:case"end":return e.stop()}}),e,this,[[3,,16,19]])}))),h.getOlmVersion=function(){return t.Olm.get_library_version()},h.prototype._getAccount=function(e,r){var n=this;this._cryptoStore.getAccount(e,(function(e){var i=new t.Olm.Account;try{i.unpickle(n._pickleKey,e),r(i)}finally{i.free()}}))},h.prototype._storeAccount=function(e,t){this._cryptoStore.storeAccount(e,t.pickle(this._pickleKey))},h.prototype.export=(0,s.default)(o.default.mark((function e(){var t,r=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={pickleKey:this._pickleKey},e.next=3,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_ACCOUNT,u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){r._cryptoStore.getAccount(e,(function(e){t.pickledAccount=e})),t.sessions=[],r._cryptoStore.getAllEndToEndSessions(e,(function(e){t.sessions.push(e)}))}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}}),e,this)}))),h.prototype._getSession=function(e,t,r,n){var i=this;this._cryptoStore.getEndToEndSession(e,t,r,(function(e){i._unpickleSession(e,n)}))},h.prototype._unpickleSession=function(e,r){var n=new t.Olm.Session;try{n.unpickle(this._pickleKey,e.session),r(Object.assign({},e,{session:n}))}finally{n.free()}},h.prototype._saveSession=function(e,t,r){var n=t.session.session_id(),i=Object.assign(t,{session:t.session.pickle(this._pickleKey)});this._cryptoStore.storeEndToEndSession(e,n,i,r)},h.prototype._getUtility=function(e){var r=new t.Olm.Utility;try{return e(r)}finally{r.free()}},h.prototype.sign=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){n._getAccount(e,(function(e){r=e.sign(t)}))}));case 2:return e.abrupt("return",r);case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),h.prototype.getOneTimeKeys=(0,s.default)(o.default.mark((function e(){var t,r=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){r._getAccount(e,(function(e){t=JSON.parse(e.one_time_keys())}))}));case 2:return e.abrupt("return",t);case 3:case"end":return e.stop()}}),e,this)}))),h.prototype.maxNumberOfOneTimeKeys=function(){return this._maxOneTimeKeys},h.prototype.markKeysAsPublished=(0,s.default)(o.default.mark((function e(){var t=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){t._getAccount(e,(function(r){r.mark_keys_as_published(),t._storeAccount(e,r)}))}));case 2:case"end":return e.stop()}}),e,this)}))),h.prototype.generateOneTimeKeys=function(e){var t=this;return this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT],(function(r){t._getAccount(r,(function(n){n.generate_one_time_keys(e),t._storeAccount(r,n)}))}))},h.prototype.createOutboundSession=function(){var e=(0,s.default)(o.default.mark((function e(r,n){var i,s=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT,u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){s._getAccount(e,(function(o){var a=new t.Olm.Session;try{a.create_outbound(o,r,n),i=a.session_id(),s._storeAccount(e,o);var u={session:a,lastReceivedMessageTs:Date.now()};s._saveSession(r,u,e)}finally{a.free()}}))}));case 2:return e.abrupt("return",i);case 3:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),h.prototype.createInboundSession=function(){var e=(0,s.default)(o.default.mark((function e(r,n,i){var s,a=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0===n){e.next=2;break}throw new Error("Need messageType == 0 to create inbound session");case 2:return e.next=4,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ACCOUNT,u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){a._getAccount(e,(function(o){var u=new t.Olm.Session;try{u.create_inbound_from(o,r,i),o.remove_one_time_keys(u),a._storeAccount(e,o);var c=u.decrypt(n,i),l={session:u,lastReceivedMessageTs:Date.now()};a._saveSession(r,l,e),s={payload:c,session_id:u.session_id()}}finally{u.free()}}))}));case 4:return e.abrupt("return",s);case 5:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),h.prototype.getSessionIdsForDevice=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._sessionsInProgress[t]){e.next=9;break}return a.logger.log("waiting for olm session to be created"),e.prev=2,e.next=5,this._sessionsInProgress[t];case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:return e.next=11,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){n._cryptoStore.getEndToEndSessions(t,e,(function(e){r=Object.keys(e)}))}));case 11:return e.abrupt("return",r);case 12:case"end":return e.stop()}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),h.prototype.getSessionIdForDevice=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,a,u,c,l;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSessionInfoForDevice(t,r);case 2:if(0!==(n=e.sent).length){e.next=5;break}return e.abrupt("return",null);case 5:for(i=0,s=1;s<n.length;s++)a=n[s],u=void 0===a.lastReceivedMessageTs?0:a.lastReceivedMessageTs,c=n[i],l=void 0===c.lastReceivedMessageTs?0:c.lastReceivedMessageTs,(u>l||u===l&&a.sessionId<c.sessionId)&&(i=s);return e.abrupt("return",n[i].sessionId);case 8:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),h.prototype.getSessionInfoForDevice=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._sessionsInProgress[t]||r){e.next=9;break}return a.logger.log("waiting for olm session to be created"),e.prev=2,e.next=5,this._sessionsInProgress[t];case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:return n=[],e.next=12,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){i._cryptoStore.getEndToEndSessions(t,e,(function(e){var t,r=l(Object.keys(e).sort());try{var o=function(){var r=t.value;i._unpickleSession(e[r],(function(e){n.push({lastReceivedMessageTs:e.lastReceivedMessageTs,hasReceivedMessage:e.session.has_received_message(),sessionId:r})}))};for(r.s();!(t=r.n()).done;)o()}catch(e){r.e(e)}finally{r.f()}}))}));case 12:return e.abrupt("return",n);case 13:case"end":return e.stop()}}),e,this,[[2,7]])})));return function(t,r){return e.apply(this,arguments)}}(),h.prototype.encryptMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n){var i,s=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f(n),e.next=3,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){s._getSession(t,r,e,(function(o){var u=o.session.describe();a.logger.log("encryptMessage: Olm Session ID "+r+" to "+t+": "+u),i=o.session.encrypt(n),s._saveSession(t,o,e)}))}));case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),h.prototype.decryptMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n,i){var s,c=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){c._getSession(t,r,e,(function(o){var u=o.session.describe();a.logger.log("decryptMessage: Olm Session ID "+r+" from "+t+": "+u),s=o.session.decrypt(n,i),o.lastReceivedMessageTs=Date.now(),c._saveSession(t,o,e)}))}));case 2:return e.abrupt("return",s);case 3:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),h.prototype.matchesSession=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n,i){var s,a=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0===n){e.next=2;break}return e.abrupt("return",!1);case 2:return e.next=4,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_SESSIONS],(function(e){a._getSession(t,r,e,(function(e){s=e.session.matches_inbound(i)}))}));case 4:return e.abrupt("return",s);case 5:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),h.prototype.recordSessionProblem=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.storeEndToEndSessionProblem(t,r,n);case 2:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),h.prototype.sessionMayHaveProblems=function(){var e=(0,s.default)(o.default.mark((function e(t,r){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.getEndToEndSessionProblem(t,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),h.prototype.filterOutNotifiedErrorDevices=function(){var e=(0,s.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.filterOutNotifiedErrorDevices(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),h.prototype._saveOutboundGroupSession=function(e){var t=e.pickle(this._pickleKey);this._outboundGroupSessionStore[e.session_id()]=t},h.prototype._getOutboundGroupSession=function(e,r){var n=this._outboundGroupSessionStore[e];if(void 0===n)throw new Error("Unknown outbound group session "+e);var i=new t.Olm.OutboundGroupSession;try{return i.unpickle(this._pickleKey,n),r(i)}finally{i.free()}},h.prototype.createOutboundGroupSession=function(){var e=new t.Olm.OutboundGroupSession;try{return e.create(),this._saveOutboundGroupSession(e),e.session_id()}finally{e.free()}},h.prototype.encryptGroupMessage=function(e,t){var r=this;return a.logger.log("encrypting msg with megolm session ".concat(e)),f(t),this._getOutboundGroupSession(e,(function(e){var n=e.encrypt(t);return r._saveOutboundGroupSession(e),n}))},h.prototype.getOutboundGroupSessionKey=function(e){return this._getOutboundGroupSession(e,(function(e){return{chain_index:e.message_index(),key:e.session_key()}}))},h.prototype._unpickleInboundGroupSession=function(e,r){var n=new t.Olm.InboundGroupSession;try{return n.unpickle(this._pickleKey,e.session),r(n)}finally{n.free()}},h.prototype._getInboundGroupSession=function(e,t,r,n,i){var o=this;this._cryptoStore.getEndToEndInboundGroupSession(t,r,n,(function(t,r){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+")");o._unpickleInboundGroupSession(t,(function(e){i(e,t,r)}))}else i(null,null,r)}))},h.prototype.addInboundGroupSession=function(){var e=(0,s.default)(o.default.mark((function e(r,n,i,s,c,l,d){var f,h=this,p=arguments;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return f=p.length>7&&void 0!==p[7]?p[7]:{},e.next=3,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS,u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){h._getInboundGroupSession(r,n,s,e,(function(o,u){var p=new t.Olm.InboundGroupSession;try{if(d?p.import_session(c):p.create(c),s!=p.session_id())throw new Error("Mismatched group session ID from senderKey: "+n);if(o&&(a.logger.log("Update for megolm session "+n+"/"+s),o.first_known_index()<=p.first_known_index()))return void a.logger.log("Keeping existing megolm session ".concat(s));a.logger.info("Storing megolm session "+n+"/"+s+" with first index "+p.first_known_index());var v=Object.assign({},f,{room_id:r,session:p.pickle(h._pickleKey),keysClaimed:l,forwardingCurve25519KeyChain:i});h._cryptoStore.storeEndToEndInboundGroupSession(n,s,v,e)}finally{p.free()}}))}));case 3:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s,a){return e.apply(this,arguments)}}(),h.prototype.addInboundGroupSessionWithheld=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n,i,s){var a=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){a._cryptoStore.storeEndToEndInboundGroupSessionWithheld(r,n,{room_id:t,code:i,reason:s},e)}));case 2:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o){return e.apply(this,arguments)}}();var m={"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 _(e){return e.code&&e.code in m?m[e.code]:e.reason?e.reason:"decryption key withheld"}r.WITHHELD_MESSAGES=m,h.prototype.decryptGroupMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n,i,s,a){var l,d,f=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS,u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){f._getInboundGroupSession(t,r,n,e,(function(t,o,u){if(null===t)return u&&(d=new c.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",_(u),{session:r+"|"+n})),void(l=null);var h;try{h=t.decrypt(i)}catch(e){return void(d=e&&"OLM.UNKNOWN_MESSAGE_INDEX"===e.message&&u?new c.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",_(u),{session:r+"|"+n}):e)}var p=h.plaintext;if(void 0===p)p=h;else{var v=r+"|"+n+"|"+h.message_index;if(v in f._inboundGroupSessionMessageIndexes){var g=f._inboundGroupSessionMessageIndexes[v];if(g.id!==s||g.timestamp!==a)return void(d=new Error("Duplicate message index, possible replay attack: "+v))}f._inboundGroupSessionMessageIndexes[v]={id:s,timestamp:a}}o.session=t.pickle(f._pickleKey),f._cryptoStore.storeEndToEndInboundGroupSession(r,n,o,e),l={result:p,keysClaimed:o.keysClaimed||{},senderKey:r,forwardingCurve25519KeyChain:o.forwardingCurve25519KeyChain||[],untrusted:o.untrusted}}))}));case 2:if(!d){e.next=4;break}throw d;case 4:return e.abrupt("return",l);case 5:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s){return e.apply(this,arguments)}}(),h.prototype.hasInboundSessionKeys=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n){var i,s=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS,u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){s._cryptoStore.getEndToEndInboundGroupSession(r,n,e,(function(e){null!==e?t!==e.room_id?(a.logger.warn("requested keys for inbound group session ".concat(r,"|")+"".concat(n,", with incorrect room_id ")+"(expected ".concat(e.room_id,", ")+"was ".concat(t,")")),i=!1):i=!0:i=!1}))}));case 2:return e.abrupt("return",i);case 3:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),h.prototype.getInboundGroupSessionKey=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n,i){var s,a=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readonly",[u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS,u.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){a._getInboundGroupSession(t,r,n,e,(function(e,t){if(null!==e){void 0===i&&(i=e.first_known_index());var r=e.export_session(i),n=(t.keysClaimed||{}).ed25519||null;s={chain_index:i,key:r,forwarding_curve25519_key_chain:t.forwardingCurve25519KeyChain||[],sender_claimed_ed25519_key:n}}else s=null}))}));case 2:return e.abrupt("return",s);case 3:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),h.prototype.exportInboundGroupSession=function(e,t,r){return this._unpickleInboundGroupSession(r,(function(n){var i=n.first_known_index();return{sender_key:e,sender_claimed_keys:r.keysClaimed,room_id:r.room_id,session_id:t,session_key:n.export_session(i),forwarding_curve25519_key_chain:n.forwardingCurve25519KeyChain||[],first_known_index:n.first_known_index()}}))},h.prototype.verifySignature=function(e,t,r){this._getUtility((function(n){n.ed25519_verify(e,t,r)}))}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":95,"./algorithms":69,"./store/indexeddb-crypto-store":78,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27}],64:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.OutgoingRoomKeyRequestManager=r.ROOM_KEY_REQUEST_STATES=void 0;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("@babel/runtime/helpers/classCallCheck")),u=i(e("@babel/runtime/helpers/createClass")),c=e("../logger"),l=n(e("../utils"));function d(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var h={UNSENT:0,SENT:1,CANCELLATION_PENDING:2,CANCELLATION_PENDING_AND_WILL_RESEND:3};r.ROOM_KEY_REQUEST_STATES=h;var p=function(){function e(t,r,n){(0,a.default)(this,e),this._baseApis=t,this._deviceId=r,this._cryptoStore=n,this._sendOutgoingRoomKeyRequestsTimer=null,this._sendOutgoingRoomKeyRequestsRunning=!1,this._clientRunning=!1}var r,n;return(0,u.default)(e,[{key:"start",value:function(){this._clientRunning=!0}},{key:"stop",value:function(){c.logger.log("stopping OutgoingRoomKeyRequestManager"),this._clientRunning=!1}},{key:"sendQueuedRequests",value:function(){this._startTimer()}},{key:"queueRoomKeyRequest",value:(n=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,a,u,l=arguments;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>2&&void 0!==l[2]&&l[2],e.next=3,this._cryptoStore.getOutgoingRoomKeyRequest(t);case 3:if(i=e.sent){e.next=9;break}return e.next=7,this._cryptoStore.getOrAddOutgoingRoomKeyRequest({requestBody:t,recipients:r,requestId:this._baseApis.makeTxnId(),state:h.UNSENT});case 7:e.next=36;break;case 9:e.t0=i.state,e.next=e.t0===h.CANCELLATION_PENDING_AND_WILL_RESEND||e.t0===h.UNSENT?12:e.t0===h.CANCELLATION_PENDING?13:e.t0===h.SENT?17:35;break;case 12:return e.abrupt("return");case 13:return s=n?h.CANCELLATION_PENDING_AND_WILL_RESEND:h.SENT,e.next=16,this._cryptoStore.updateOutgoingRoomKeyRequest(i.requestId,h.CANCELLATION_PENDING,{state:s,cancellationTxnId:this._baseApis.makeTxnId()});case 16:return e.abrupt("break",36);case 17:if(!n){e.next=34;break}return a=h.CANCELLATION_PENDING_AND_WILL_RESEND,e.next=21,this._cryptoStore.updateOutgoingRoomKeyRequest(i.requestId,h.SENT,{state:a,cancellationTxnId:this._baseApis.makeTxnId(),requestTxnId:this._baseApis.makeTxnId()});case 21:if(u=e.sent){e.next=26;break}return e.next=25,this.queueRoomKeyRequest(t,r,n);case 25:return e.abrupt("return",e.sent);case 26:return e.prev=26,e.next=29,this._sendOutgoingRoomKeyRequestCancellation(u,!0);case 29:e.next=34;break;case 31:e.prev=31,e.t1=e.catch(26),c.logger.error("Error sending room key request cancellation; will retry later.",e.t1);case 34:return e.abrupt("break",36);case 35:throw new Error("unhandled state: "+i.state);case 36:case"end":return e.stop()}}),e,this,[[26,31]])}))),function(e,t){return n.apply(this,arguments)})},{key:"cancelRoomKeyRequest",value:function(e){var t=this;return this._cryptoStore.getOutgoingRoomKeyRequest(e).then((function(r){if(r)switch(r.state){case h.CANCELLATION_PENDING:case h.CANCELLATION_PENDING_AND_WILL_RESEND:return;case h.UNSENT:return c.logger.log("deleting unnecessary room key request for "+v(e)),t._cryptoStore.deleteOutgoingRoomKeyRequest(r.requestId,h.UNSENT);case h.SENT:return t._cryptoStore.updateOutgoingRoomKeyRequest(r.requestId,h.SENT,{state:h.CANCELLATION_PENDING,cancellationTxnId:t._baseApis.makeTxnId()}).then((function(r){r?t._sendOutgoingRoomKeyRequestCancellation(r).catch((function(e){c.logger.error("Error sending room key request cancellation; will retry later.",e),t._startTimer()})):c.logger.log("Tried to cancel room key request for "+v(e)+" but it was already cancelled in another tab")}));default:throw new Error("unhandled state: "+r.state)}}))}},{key:"getOutgoingSentRoomKeyRequest",value:function(e,t){return this._cryptoStore.getOutgoingRoomKeyRequestsByTarget(e,t,[h.SENT])}},{key:"cancelAndResendAllOutgoingRequests",value:(r=(0,s.default)(o.default.mark((function e(){var t,r=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.getAllOutgoingRoomKeyRequestsByState(h.SENT);case 2:return t=e.sent,e.abrupt("return",Promise.all(t.map((function(e){var t=e.requestBody,n=e.recipients;return r.queueRoomKeyRequest(t,n,!0)}))));case 4:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"_startTimer",value:function(){var e=this;if(!this._sendOutgoingRoomKeyRequestsTimer){this._sendOutgoingRoomKeyRequestsTimer=t.setTimeout((function(){if(e._sendOutgoingRoomKeyRequestsRunning)throw new Error("RoomKeyRequestSend already in progress!");e._sendOutgoingRoomKeyRequestsRunning=!0,e._sendOutgoingRoomKeyRequests().finally((function(){e._sendOutgoingRoomKeyRequestsRunning=!1})).catch((function(e){c.logger.warn("error in OutgoingRoomKeyRequestManager: ".concat(e))}))}),500)}}},{key:"_sendOutgoingRoomKeyRequests",value:function(){var e=this;return this._clientRunning?this._cryptoStore.getOutgoingRoomKeyRequestByState([h.CANCELLATION_PENDING,h.CANCELLATION_PENDING_AND_WILL_RESEND,h.UNSENT]).then((function(t){if(t){var r;switch(t.state){case h.UNSENT:r=e._sendOutgoingRoomKeyRequest(t);break;case h.CANCELLATION_PENDING:r=e._sendOutgoingRoomKeyRequestCancellation(t);break;case h.CANCELLATION_PENDING_AND_WILL_RESEND:r=e._sendOutgoingRoomKeyRequestCancellation(t,!0)}return r.then((function(){return e._sendOutgoingRoomKeyRequests()})).catch((function(t){c.logger.error("Error sending room key request; will retry later.",t),e._sendOutgoingRoomKeyRequestsTimer=null}))}e._sendOutgoingRoomKeyRequestsTimer=null})):(this._sendOutgoingRoomKeyRequestsTimer=null,Promise.resolve())}},{key:"_sendOutgoingRoomKeyRequest",value:function(e){var t=this;c.logger.log("Requesting keys for ".concat(v(e.requestBody))+" from ".concat(g(e.recipients))+"(id ".concat(e.requestId,")"));var r={action:"request",requesting_device_id:this._deviceId,request_id:e.requestId,body:e.requestBody};return this._sendMessageToDevices(r,e.recipients,e.requestTxnId||e.requestId).then((function(){return t._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,h.UNSENT,{state:h.SENT})}))}},{key:"_sendOutgoingRoomKeyRequestCancellation",value:function(e,t){var r=this;c.logger.log("Sending cancellation for key request for "+"".concat(v(e.requestBody)," to ")+"".concat(g(e.recipients)," ")+"(cancellation id ".concat(e.cancellationTxnId,")"));var n={action:"request_cancellation",requesting_device_id:this._deviceId,request_id:e.requestId};return this._sendMessageToDevices(n,e.recipients,e.cancellationTxnId).then((function(){return t?r._cryptoStore.updateOutgoingRoomKeyRequest(e.requestId,h.CANCELLATION_PENDING_AND_WILL_RESEND,{state:h.UNSENT}):r._cryptoStore.deleteOutgoingRoomKeyRequest(e.requestId,h.CANCELLATION_PENDING)}))}},{key:"_sendMessageToDevices",value:function(e,t,r){var n,i={},o=d(t);try{for(o.s();!(n=o.n()).done;){var s=n.value;i[s.userId]||(i[s.userId]={}),i[s.userId][s.deviceId]=e}}catch(e){o.e(e)}finally{o.f()}return this._baseApis.sendToDevice("m.room_key_request",i,r)}}]),e}();function v(e){return e.room_id+" / "+e.session_id}function g(e){return"["+l.map(e,(function(e){return"".concat(e.userId,":").concat(e.deviceId)})).join(",")+"]"}r.OutgoingRoomKeyRequestManager=p}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":95,"../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27}],65:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.RoomList=void 0;var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=n(e("@babel/runtime/helpers/classCallCheck")),a=n(e("@babel/runtime/helpers/createClass")),u=e("./store/indexeddb-crypto-store"),c=function(){function e(t){(0,s.default)(this,e),this._cryptoStore=t,this._roomEncryption={}}var t,r;return(0,a.default)(e,[{key:"init",value:(r=(0,o.default)(i.default.mark((function e(){var t=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ROOMS],(function(e){t._cryptoStore.getEndToEndRooms(e,(function(e){t._roomEncryption=e}))}));case 2:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"getRoomEncryption",value:function(e){return this._roomEncryption[e]||null}},{key:"isRoomEncrypted",value:function(e){return Boolean(this.getRoomEncryption(e))}},{key:"setRoomEncryption",value:(t=(0,o.default)(i.default.mark((function e(t,r){var n=this;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._roomEncryption[t]=r,e.next=3,this._cryptoStore.doTxn("readwrite",[u.IndexedDBCryptoStore.STORE_ROOMS],(function(e){n._cryptoStore.storeEndToEndRoom(t,r,e)}));case 3:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})}]),e}();r.RoomList=c},{"./store/indexeddb-crypto-store":78,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":27}],66:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.SecretStorage=r.SECRET_STORAGE_ALGORITHM_V1_AES=void 0;var o=i(e("@babel/runtime/helpers/slicedToArray")),s=i(e("@babel/runtime/helpers/defineProperty")),a=i(e("@babel/runtime/regenerator")),u=i(e("@babel/runtime/helpers/asyncToGenerator")),c=i(e("@babel/runtime/helpers/classCallCheck")),l=i(e("@babel/runtime/helpers/createClass")),d=i(e("@babel/runtime/helpers/inherits")),f=i(e("@babel/runtime/helpers/possibleConstructorReturn")),h=i(e("@babel/runtime/helpers/getPrototypeOf")),p=e("events"),v=e("../logger"),g=n(e("./olmlib")),y=e("../randomstring"),m=e("./aes");function _(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function k(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,h.default)(e);if(t){var i=(0,h.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,f.default)(this,r)}}r.SECRET_STORAGE_ALGORITHM_V1_AES="m.secret_storage.v1.aes-hmac-sha2";var S=function(e){(0,d.default)(T,e);var t,r,n,i,f,h,p,b,S,E,w,I,R=k(T);function T(e,t){var r;return(0,c.default)(this,T),(r=R.call(this))._baseApis=e,r._cryptoCallbacks=t,r._requests={},r._incomingRequests={},r}return(0,l.default)(T,[{key:"getDefaultKeyId",value:(I=(0,u.default)(a.default.mark((function e(){var t;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._baseApis.getAccountDataFromServer("m.secret_storage.default_key");case 2:if(t=e.sent){e.next=5;break}return e.abrupt("return",null);case 5:return e.abrupt("return",t.key);case 6:case"end":return e.stop()}}),e,this)}))),function(){return I.apply(this,arguments)})},{key:"setDefaultKeyId",value:function(e){var t=this;return new Promise(function(){var r=(0,u.default)(a.default.mark((function r(n,i){var o;return a.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return o=function r(i){"m.secret_storage.default_key"===i.getType()&&i.getContent().key===e&&(t._baseApis.removeListener("accountData",r),n())},t._baseApis.on("accountData",o),r.prev=2,r.next=5,t._baseApis.setAccountData("m.secret_storage.default_key",{key:e});case 5:r.next=11;break;case 7:r.prev=7,r.t0=r.catch(2),t._baseApis.removeListener("accountData",o),i(r.t0);case 11:case"end":return r.stop()}}),r,null,[[2,7]])})));return function(e,t){return r.apply(this,arguments)}}())}},{key:"addKey",value:(w=(0,u.default)(a.default.mark((function e(t,r,n){var i,o,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i={algorithm:t},r||(r={}),r.name&&(i.name=r.name),"m.secret_storage.v1.aes-hmac-sha2"!==t){e.next=15;break}if(r.passphrase&&(i.passphrase=r.passphrase),!r.key){e.next=13;break}return e.next=8,T._calculateKeyCheck(r.key);case 8:o=e.sent,s=o.iv,u=o.mac,i.iv=s,i.mac=u;case 13:e.next=16;break;case 15:throw new Error("Unknown key algorithm ".concat(r.algorithm));case 16:if(n){e.next=21;break}case 17:n=(0,y.randomString)(32);case 18:return e.next=20,this._baseApis.getAccountDataFromServer("m.secret_storage.key.".concat(n));case 20:if(e.sent){e.next=17;break}case 21:return e.next=23,this._baseApis.setAccountData("m.secret_storage.key.".concat(n),i);case 23:return e.abrupt("return",n);case 24:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return w.apply(this,arguments)})},{key:"getKey",value:(E=(0,u.default)(a.default.mark((function e(t){var r;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=4;break}return e.next=3,this.getDefaultKeyId();case 3:t=e.sent;case 4:if(t){e.next=6;break}return e.abrupt("return",null);case 6:return e.next=8,this._baseApis.getAccountDataFromServer("m.secret_storage.key."+t);case 8:return r=e.sent,e.abrupt("return",r?[t,r]:null);case 10:case"end":return e.stop()}}),e,this)}))),function(e){return E.apply(this,arguments)})},{key:"hasKey",value:(S=(0,u.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getKey(t);case 2:return e.abrupt("return",!!e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(e){return S.apply(this,arguments)})},{key:"checkKey",value:(b=(0,u.default)(a.default.mark((function e(t,r){var n,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("m.secret_storage.v1.aes-hmac-sha2"!==r.algorithm){e.next=12;break}if(!r.mac){e.next=9;break}return e.next=4,T._calculateKeyCheck(t,r.iv);case 4:return n=e.sent,i=n.mac,e.abrupt("return",r.mac.replace(/=+$/g,"")===i.replace(/=+$/g,""));case 9:return e.abrupt("return",!0);case 10:e.next=13;break;case 12:throw new Error("Unknown algorithm");case 13:case"end":return e.stop()}}),e)}))),function(e,t){return b.apply(this,arguments)})},{key:"store",value:(p=(0,u.default)(a.default.mark((function e(t,r,n){var i,u,c,l,d,f,h,p,g,y;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i={},n){e.next=8;break}return e.next=4,this.getDefaultKeyId();case 4:if(u=e.sent){e.next=7;break}throw new Error("No keys specified and no default key present");case 7:n=[u];case 8:if(0!==n.length){e.next=10;break}throw new Error("Zero keys given to encrypt with!");case 10:c=_(n),e.prev=11,c.s();case 13:if((l=c.n()).done){e.next=35;break}return d=l.value,e.next=17,this._baseApis.getAccountDataFromServer("m.secret_storage.key."+d);case 17:if(f=e.sent){e.next=20;break}throw new Error("Unknown key: "+d);case 20:if("m.secret_storage.v1.aes-hmac-sha2"!==f.algorithm){e.next=32;break}return h=(0,s.default)({},d,f),e.next=24,this._getSecretStorageKey(h,t);case 24:return p=e.sent,g=(0,o.default)(p,2),y=g[1],e.next=29,y.encrypt(r);case 29:i[d]=e.sent,e.next=33;break;case 32:v.logger.warn("unknown algorithm for secret storage key "+d+": "+f.algorithm);case 33:e.next=13;break;case 35:e.next=40;break;case 37:e.prev=37,e.t0=e.catch(11),c.e(e.t0);case 40:return e.prev=40,c.f(),e.finish(40);case 43:return e.next=45,this._baseApis.setAccountData(t,{encrypted:i});case 45:case"end":return e.stop()}}),e,this,[[11,37,40,43]])}))),function(e,t,r){return p.apply(this,arguments)})},{key:"_fixupStoredSecret",value:(h=(0,u.default)(a.default.mark((function e(t,r){var n,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(1!==(n=Object.keys(r)).length||"encrypted"===n[0]||!r[n[0]].passthrough){e.next=13;break}return e.next=4,this.hasKey(n[0]);case 4:if(!e.sent){e.next=13;break}return console.log("Fixing up passthrough secret: "+t),e.next=9,this.storePassthrough(t,n[0]);case 9:return e.next=11,this._baseApis.getAccountDataFromServer(t);case 11:return i=e.sent,e.abrupt("return",i);case 13:return e.abrupt("return",null);case 14:case"end":return e.stop()}}),e,this)}))),function(e,t){return h.apply(this,arguments)})},{key:"get",value:(f=(0,u.default)(a.default.mark((function e(t){var r,n,i,s,u,c,l,d,f,h,p,v;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._baseApis.getAccountDataFromServer(t);case 2:if(r=e.sent){e.next=5;break}return e.abrupt("return");case 5:if(r.encrypted){e.next=11;break}return e.next=8,this._fixupStoredSecret(t,r);case 8:if((r=e.sent)&&r.encrypted){e.next=11;break}throw new Error("Content is not encrypted!");case 11:n={},i=0,s=Object.keys(r.encrypted);case 13:if(!(i<s.length)){e.next=23;break}return u=s[i],e.next=17,this._baseApis.getAccountDataFromServer("m.secret_storage.key."+u);case 17:c=e.sent,l=r.encrypted[u],"m.secret_storage.v1.aes-hmac-sha2"===c.algorithm&&l.iv&&l.ciphertext&&l.mac&&(n[u]=c);case 20:i++,e.next=13;break;case 23:if(0!==Object.keys(n).length){e.next=25;break}throw new Error("Could not decrypt ".concat(t," because none of ")+"the keys it is encrypted with are for a supported algorithm");case 25:return e.prev=25,e.next=28,this._getSecretStorageKey(n,t);case 28:if(h=e.sent,p=(0,o.default)(h,2),d=p[0],f=p[1],!(v=r.encrypted[d]).passthrough){e.next=35;break}return e.abrupt("return",(0,g.encodeBase64)(f.get_private_key()));case 35:return e.next=37,f.decrypt(v);case 37:return e.abrupt("return",e.sent);case 38:return e.prev=38,f&&f.free&&f.free(),e.finish(38);case 41:case"end":return e.stop()}}),e,this,[[25,,38,41]])}))),function(e){return f.apply(this,arguments)})},{key:"isStored",value:(i=(0,u.default)(a.default.mark((function e(t,r){var n,i,o,s,u,c,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._baseApis.getAccountDataFromServer(t);case 2:if(n=e.sent){e.next=5;break}return e.abrupt("return",null);case 5:if(n.encrypted){e.next=11;break}return e.next=8,this._fixupStoredSecret(t,n);case 8:if((n=e.sent)&&n.encrypted){e.next=11;break}return e.abrupt("return",null);case 11:void 0===r&&(r=!0),i={},o=0,s=Object.keys(n.encrypted);case 14:if(!(o<s.length)){e.next=26;break}return u=s[o],e.next=18,this._baseApis.getAccountDataFromServer("m.secret_storage.key."+u);case 18:if(c=e.sent){e.next=21;break}return e.abrupt("continue",23);case 21:l=n.encrypted[u],"m.secret_storage.v1.aes-hmac-sha2"===c.algorithm&&l.iv&&l.ciphertext&&l.mac&&(i[u]=c);case 23:o++,e.next=14;break;case 26:return e.abrupt("return",Object.keys(i).length?i:null);case 27:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"request",value:function(e,t){var r,n=this,i=this._baseApis.makeTxnId(),o=this._requests[i]={name:e,devices:t},a=new Promise((function(e,t){o.resolve=e,o.reject=t})),u={name:e,action:"request",requesting_device_id:this._baseApis.deviceId,request_id:i},c={},l=_(t);try{for(l.s();!(r=l.n()).done;){c[r.value]=u}}catch(e){l.e(e)}finally{l.f()}return v.logger.info("Request secret ".concat(e," from ").concat(t,", id ").concat(i)),this._baseApis.sendToDevice("m.secret.request",(0,s.default)({},this._baseApis.getUserId(),c)),{request_id:i,promise:a,cancel:function(e){var r,a={action:"request_cancellation",requesting_device_id:n._baseApis.deviceId,request_id:i},u={},c=_(t);try{for(c.s();!(r=c.n()).done;){u[r.value]=a}}catch(e){c.e(e)}finally{c.f()}n._baseApis.sendToDevice("m.secret.request",(0,s.default)({},n._baseApis.getUserId(),u)),o.reject(new Error(e||"Cancelled"))}}}},{key:"_onRequestReceived",value:(n=(0,u.default)(a.default.mark((function e(t){var r,n,i,o,u,c,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getSender(),n=t.getContent(),r===this._baseApis.getUserId()&&n.name&&n.action&&n.requesting_device_id&&n.request_id){e.next=4;break}return e.abrupt("return");case 4:if(i=n.requesting_device_id,"request_cancellation"!==n.action){e.next=9;break}this._incomingRequests[i]&&this._incomingRequests[i][n.request_id]&&(v.logger.info("received request cancellation for secret ("+r+", "+i+", "+n.request_id+")"),this.baseApis.emit("crypto.secrets.requestCancelled",{user_id:r,device_id:i,request_id:n.request_id})),e.next=32;break;case 9:if("request"!==n.action){e.next=32;break}if(i!==this._baseApis.deviceId){e.next=12;break}return e.abrupt("return");case 12:if(v.logger.info("received request for secret ("+r+", "+i+", "+n.request_id+")"),this._cryptoCallbacks.onSecretRequested){e.next=15;break}return e.abrupt("return");case 15:return e.next=17,this._cryptoCallbacks.onSecretRequested({user_id:r,device_id:i,request_id:n.request_id,name:n.name,device_trust:this._baseApis.checkDeviceTrust(r,i)});case 17:if(!(o=e.sent)){e.next=31;break}return v.logger.info("Preparing ".concat(n.name," secret for ").concat(i)),u={type:"m.secret.send",content:{request_id:n.request_id,secret:o}},c={algorithm:g.OLM_ALGORITHM,sender_key:this._baseApis._crypto._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=24,g.ensureOlmSessionsForDevices(this._baseApis._crypto._olmDevice,this._baseApis,(0,s.default)({},r,[this._baseApis.getStoredDevice(r,i)]));case 24:return e.next=26,g.encryptMessageForDevice(c.ciphertext,this._baseApis.getUserId(),this._baseApis.deviceId,this._baseApis._crypto._olmDevice,r,this._baseApis.getStoredDevice(r,i),u);case 26:l=(0,s.default)({},r,(0,s.default)({},i,c)),v.logger.info("Sending ".concat(n.name," secret for ").concat(i)),this._baseApis.sendToDevice("m.room.encrypted",l),e.next=32;break;case 31:v.logger.info("Request denied for ".concat(n.name," secret for ").concat(i));case 32:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"_onSecretReceived",value:function(e){if(e.getSender()===this._baseApis.getUserId()){var t=e.getContent();v.logger.log("got secret share for request",t.request_id);var r=this._requests[t.request_id];if(r){var n=this._baseApis._crypto._deviceList.getDeviceByIdentityKey(g.OLM_ALGORITHM,e.getSenderKey());if(!n)return void v.logger.log("secret share from unknown device with key",e.getSenderKey());if(!r.devices.includes(n.deviceId))return void v.logger.log("unsolicited secret share from device",n.deviceId);v.logger.log("Successfully received secret ".concat(r.name," ")+"from ".concat(n.deviceId)),r.resolve(t.secret)}}}},{key:"_getSecretStorageKey",value:(r=(0,u.default)(a.default.mark((function e(t,r){var n,i,s,c,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._cryptoCallbacks.getSecretStorageKey){e.next=2;break}throw new Error("No getSecretStorageKey callback supplied");case 2:return e.next=4,this._cryptoCallbacks.getSecretStorageKey({keys:t},r);case 4:if(n=e.sent){e.next=7;break}throw new Error("getSecretStorageKey callback returned falsey");case 7:if(!(n.length<2)){e.next=9;break}throw new Error("getSecretStorageKey callback returned invalid data");case 9:if(i=(0,o.default)(n,2),s=i[0],c=i[1],t[s]){e.next=12;break}throw new Error("App returned unknown key from getSecretStorageKey!");case 12:if("m.secret_storage.v1.aes-hmac-sha2"!==t[s].algorithm){e.next=17;break}return l={encrypt:function(){var e=(0,u.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,m.encryptAES)(t,c,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),decrypt:function(){var e=(0,u.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,m.decryptAES)(t,c,r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()},e.abrupt("return",[s,l]);case 17:throw new Error("Unknown key type: "+t[s].algorithm);case 18:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})}],[{key:"_calculateKeyCheck",value:(t=(0,u.default)(a.default.mark((function e(t,r){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,m.encryptAES)("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",t,"",r);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)}))),function(e,r){return t.apply(this,arguments)})}]),T}(p.EventEmitter);r.SecretStorage=S},{"../logger":95,"../randomstring":110,"./aes":67,"./olmlib":75,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,events:36}],67:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.encryptAES=function(){return c?g.apply(void 0,arguments):d.apply(void 0,arguments)},r.decryptAES=function(){return c?m.apply(void 0,arguments):h.apply(void 0,arguments)};var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/slicedToArray")),s=n(e("@babel/runtime/helpers/asyncToGenerator")),a=e("../utils"),u=e("./olmlib"),c="undefined"!=typeof window&&window.crypto?window.crypto.subtle||window.crypto.webkitSubtle:null,l=new Uint8Array(8);function d(e,t,r,n){return f.apply(this,arguments)}function f(){return(f=(0,s.default)(i.default.mark((function e(t,r,n,s){var c,l,d,f,h,p,g,y,m;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(c=(0,a.getCrypto)()){e.next=3;break}throw new Error("No usable crypto implementation");case 3:return(l=s?(0,u.decodeBase64)(s):c.randomBytes(16))[8]&=127,d=v(r,n),f=(0,o.default)(d,2),h=f[0],p=f[1],g=c.createCipheriv("aes-256-ctr",h,l),y=g.update(t,"utf-8","base64")+g.final("base64"),m=c.createHmac("sha256",p).update(y,"base64").digest("base64"),e.abrupt("return",{iv:(0,u.encodeBase64)(l),ciphertext:y,mac:m});case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function h(e,t,r){return p.apply(this,arguments)}function p(){return(p=(0,s.default)(i.default.mark((function e(t,r,n){var s,c,l,d,f,h;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=(0,a.getCrypto)()){e.next=3;break}throw new Error("No usable crypto implementation");case 3:if(c=v(r,n),l=(0,o.default)(c,2),d=l[0],f=l[1],s.createHmac("sha256",f).update(t.ciphertext,"base64").digest("base64").replace(/=+$/g,"")===t.mac.replace(/=+$/g,"")){e.next=7;break}throw new Error("Error decrypting secret ".concat(n,": bad MAC"));case 7:return h=s.createDecipheriv("aes-256-ctr",d,(0,u.decodeBase64)(t.iv)),e.abrupt("return",h.update(t.ciphertext,"base64","utf-8")+h.final("utf-8"));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function v(e,r){var n=(0,a.getCrypto)(),i=n.createHmac("sha256",l).update(e).digest(),o=t.alloc(1,1),s=n.createHmac("sha256",i).update(r,"utf-8").update(o).digest();return o[0]=2,[s,n.createHmac("sha256",i).update(s).update(r,"utf-8").update(o).digest()]}function g(e,t,r,n){return y.apply(this,arguments)}function y(){return(y=(0,s.default)(i.default.mark((function e(t,r,n,s){var a,l,d,f,h,p,v,g;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s?a=(0,u.decodeBase64)(s):(a=new Uint8Array(16),window.crypto.getRandomValues(a)),a[8]&=127,e.next=4,b(r,n);case 4:return l=e.sent,d=(0,o.default)(l,2),f=d[0],h=d[1],p=(new TextEncoder).encode(t),e.next=11,c.encrypt({name:"AES-CTR",counter:a,length:64},f,p);case 11:return v=e.sent,e.next=14,c.sign({name:"HMAC"},h,v);case 14:return g=e.sent,e.abrupt("return",{iv:(0,u.encodeBase64)(a),ciphertext:(0,u.encodeBase64)(v),mac:(0,u.encodeBase64)(g)});case 16:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e,t,r){return _.apply(this,arguments)}function _(){return(_=(0,s.default)(i.default.mark((function e(t,r,n){var s,a,l,d,f,h;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b(r,n);case 2:return s=e.sent,a=(0,o.default)(s,2),l=a[0],d=a[1],f=(0,u.decodeBase64)(t.ciphertext),e.next=9,c.verify({name:"HMAC"},d,(0,u.decodeBase64)(t.mac),f);case 9:if(e.sent){e.next=11;break}throw new Error("Error decrypting secret ".concat(n,": bad MAC"));case 11:return e.next=13,c.decrypt({name:"AES-CTR",counter:(0,u.decodeBase64)(t.iv),length:64},l,f);case 13:return h=e.sent,e.abrupt("return",(new TextDecoder).decode(new Uint8Array(h)));case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function b(e,t){return k.apply(this,arguments)}function k(){return(k=(0,s.default)(i.default.mark((function e(t,r){var n,o,s,a,u,d;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.importKey("raw",t,{name:"HKDF"},!1,["deriveBits"]);case 2:return n=e.sent,e.next=5,c.deriveBits({name:"HKDF",salt:l,info:(new TextEncoder).encode(r),hash:"SHA-256"},n,512);case 5:return o=e.sent,s=o.slice(0,32),a=o.slice(32),u=c.importKey("raw",s,{name:"AES-CTR"},!1,["encrypt","decrypt"]),d=c.importKey("raw",a,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]),e.next=12,Promise.all([u,d]);case 12:return e.abrupt("return",e.sent);case 13:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,e("buffer").Buffer)},{"../utils":123,"./olmlib":75,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,buffer:34}],68:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.registerAlgorithm=function(e,t,r){p[e]=t,v[e]=r},r.UnknownDeviceError=r.DecryptionError=r.DecryptionAlgorithm=r.EncryptionAlgorithm=r.DECRYPTION_CLASSES=r.ENCRYPTION_CLASSES=void 0;var i=n(e("@babel/runtime/helpers/assertThisInitialized")),o=n(e("@babel/runtime/helpers/inherits")),s=n(e("@babel/runtime/helpers/possibleConstructorReturn")),a=n(e("@babel/runtime/helpers/getPrototypeOf")),u=n(e("@babel/runtime/helpers/wrapNativeSuper")),c=n(e("@babel/runtime/regenerator")),l=n(e("@babel/runtime/helpers/asyncToGenerator")),d=n(e("@babel/runtime/helpers/classCallCheck")),f=n(e("@babel/runtime/helpers/createClass"));function h(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,a.default)(e);if(t){var i=(0,a.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,s.default)(this,r)}}var p={};r.ENCRYPTION_CLASSES=p;var v={};r.DECRYPTION_CLASSES=v;var g=function(){function e(t){(0,d.default)(this,e),this._userId=t.userId,this._deviceId=t.deviceId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}return(0,f.default)(e,[{key:"prepareToEncrypt",value:function(e){}},{key:"onRoomMembership",value:function(e,t,r){}}]),e}();r.EncryptionAlgorithm=g;var y=function(){function e(t){(0,d.default)(this,e),this._userId=t.userId,this._crypto=t.crypto,this._olmDevice=t.olmDevice,this._baseApis=t.baseApis,this._roomId=t.roomId}var t;return(0,f.default)(e,[{key:"onRoomKeyEvent",value:function(e){}},{key:"importRoomKey",value:function(e){}},{key:"hasKeysForKeyRequest",value:function(e){return Promise.resolve(!1)}},{key:"shareKeysWithDevice",value:function(e){throw new Error("shareKeysWithDevice not supported for this DecryptionAlgorithm")}},{key:"retryDecryptionFromSender",value:(t=(0,l.default)(c.default.mark((function e(t){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)})}]),e}();r.DecryptionAlgorithm=y;var m=function(e){(0,o.default)(r,e);var t=h(r);function r(e,n,o){var s;return(0,d.default)(this,r),(s=t.call(this,n)).code=e,s.name="DecryptionError",s.detailedString=function(e,t){var r=e.name+"[msg: "+e.message;t&&(r+=", "+Object.keys(t).map((function(e){return e+": "+t[e]})).join(", "));return r+="]"}((0,i.default)(s),o),s}return r}((0,u.default)(Error));r.DecryptionError=m;var _=function(e){(0,o.default)(r,e);var t=h(r);function r(e,n){var i;return(0,d.default)(this,r),(i=t.call(this,e)).name="UnknownDeviceError",i.devices=n,i}return r}((0,u.default)(Error));r.UnknownDeviceError=_},{"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/wrapNativeSuper":26,"@babel/runtime/regenerator":27}],69:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),e("./olm"),e("./megolm");var n=e("./base");Object.keys(n).forEach((function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(r,e,{enumerable:!0,get:function(){return n[e]}})}))},{"./base":68,"./megolm":70,"./olm":71}],70:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault"),o=i(e("@babel/runtime/helpers/toConsumableArray")),s=i(e("@babel/runtime/helpers/defineProperty")),a=i(e("@babel/runtime/regenerator")),u=i(e("@babel/runtime/helpers/slicedToArray")),c=i(e("@babel/runtime/helpers/asyncToGenerator")),l=e("../../logger"),d=n(e("../../utils")),f=n(e("../olmlib")),h=e("./base"),p=e("../OlmDevice");function v(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function y(e){this.sessionId=e,this.useCount=0,this.creationTime=(new Date).getTime(),this.sharedWithDevices={},this.blockedDevicesNotified={}}function m(e){(0,d.polyfillSuper)(this,h.EncryptionAlgorithm,e),this._setupPromise=Promise.resolve(),this._outboundSessions={},this._sessionRotationPeriodMsgs=100,this._sessionRotationPeriodMs=6048e5,void 0!==e.config.rotation_period_ms&&(this._sessionRotationPeriodMs=e.config.rotation_period_ms),void 0!==e.config.rotation_period_msgs&&(this._sessionRotationPeriodMsgs=e.config.rotation_period_msgs)}function _(e){(0,d.polyfillSuper)(this,h.DecryptionAlgorithm,e),this._pendingEvents={},this.olmlib=f}y.prototype.needsRotation=function(e,t){var r=(new Date).getTime()-this.creationTime;return(this.useCount>=e||r>=t)&&(l.logger.log("Rotating megolm session after "+this.useCount+" messages, "+r+"ms"),!0)},y.prototype.markSharedWithDevice=function(e,t,r){this.sharedWithDevices[e]||(this.sharedWithDevices[e]={}),this.sharedWithDevices[e][t]=r},y.prototype.markNotifiedBlockedDevice=function(e,t){this.blockedDevicesNotified[e]||(this.blockedDevicesNotified[e]={}),this.blockedDevicesNotified[e][t]=!0},y.prototype.sharedWithTooManyDevices=function(e){for(var t in this.sharedWithDevices)if(this.sharedWithDevices.hasOwnProperty(t)){if(!e.hasOwnProperty(t))return l.logger.log("Starting new megolm session because we shared with "+t),!0;for(var r in this.sharedWithDevices[t])if(this.sharedWithDevices[t].hasOwnProperty(r)&&!e[t].hasOwnProperty(r))return l.logger.log("Starting new megolm session because we shared with "+t+":"+r),!0}},d.inherits(m,h.EncryptionAlgorithm),m.prototype._ensureOutboundSession=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n){var i,o,s,d,h=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s=function(){return i},o=function(){var e=(0,c.default)(a.default.mark((function e(o){var s,d,p,g,y,m,_,b,k,S,E,w,I,R,T,x,C;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((i=o)&&i.needsRotation(h._sessionRotationPeriodMsgs,h._sessionRotationPeriodMs)&&(l.logger.log("Starting new megolm session because we need to rotate."),i=null),i&&i.sharedWithTooManyDevices(t)&&(i=null),i){e.next=10;break}return l.logger.log("Starting new megolm session for room ".concat(h._roomId)),e.next=7,h._prepareNewSession();case 7:i=e.sent,l.logger.log("Started new megolm session ".concat(i.sessionId," ")+"for room ".concat(h._roomId)),h._outboundSessions[i.sessionId]=i;case 10:s={},d=0,p=Object.entries(t);case 12:if(!(d<p.length)){e.next=27;break}g=(0,u.default)(p[d],2),y=g[0],m=g[1],_=0,b=Object.entries(m);case 15:if(!(_<b.length)){e.next=24;break}if(k=(0,u.default)(b[_],2),S=k[0],E=k[1],E.getIdentityKey()!=h._olmDevice.deviceCurve25519Key){e.next=20;break}return e.abrupt("continue",21);case 20:i.sharedWithDevices[y]&&void 0!==i.sharedWithDevices[y][S]||(s[y]=s[y]||[],s[y].push(E));case 21:_++,e.next=15;break;case 24:d++,e.next=12;break;case 27:return w=h._olmDevice.getOutboundGroupSessionKey(i.sessionId),I={type:"m.room_key",content:{algorithm:f.MEGOLM_ALGORITHM,room_id:h._roomId,session_id:i.sessionId,session_key:w.key,chain_index:w.chain_index}},e.next=31,f.getExistingOlmSessions(h._olmDevice,h._baseApis,s);case 31:return R=e.sent,T=(0,u.default)(R,2),x=T[0],C=T[1],e.next=37,Promise.all([(0,c.default)(a.default.mark((function e(){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h._shareKeyWithOlmSessions(i,w,I,C);case 2:case"end":return e.stop()}}),e)})))(),(0,c.default)(a.default.mark((function e(){var t,r,o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],r=Date.now(),o=[],e.next=5,h._shareKeyWithDevices(i,w,I,x,t,n?1e4:2e3,o);case 5:if(n||!(Date.now()-r<1e4)){e.next=9;break}(0,c.default)(a.default.mark((function e(){var r,n,s,u,c,l,d,f,p,g,y,m;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r={},n=new Set,s=v(o);try{for(s.s();!(u=s.n()).done;)c=u.value,n.add(c)}catch(e){s.e(e)}finally{s.f()}l=[],d=v(t);try{for(d.s();!(f=d.n()).done;)p=f.value,g=p.userId,y=p.deviceInfo,m=g.slice(g.indexOf(":")+1),n.has(m)?(r[g]=r[g]||[],r[g].push(y)):l.push({userId:g,deviceInfo:y})}catch(e){d.e(e)}finally{d.f()}return e.next=9,h._shareKeyWithDevices(i,w,I,r,l,3e4);case 9:return e.next=11,h._notifyFailedOlmDevices(i,w,l);case 11:case"end":return e.stop()}}),e)})))(),e.next=11;break;case 9:return e.next=11,h._notifyFailedOlmDevices(i,w,t);case 11:case"end":return e.stop()}}),e)})))(),(0,c.default)(a.default.mark((function e(){var t,n,o,s,c,l,d,f,p,v,g;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t={},n=0,o=Object.entries(r);n<o.length;n++)for(s=(0,u.default)(o[n],2),c=s[0],l=s[1],d=0,f=Object.entries(l);d<f.length;d++)p=(0,u.default)(f[d],2),v=p[0],g=p[1],i.blockedDevicesNotified[c]&&void 0!==i.blockedDevicesNotified[c][v]||(t[c]=t[c]||{},t[c][v]={device:g});return e.next=4,h._notifyBlockedDevices(i,t);case 4:case"end":return e.stop()}}),e)})))()]);case 37:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),d=this._setupPromise.then(o),this._setupPromise=d.then(s,s),e.abrupt("return",d.then(s));case 5:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),m.prototype._prepareNewSession=(0,c.default)(a.default.mark((function e(){var t,r;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._olmDevice.createOutboundGroupSession(),r=this._olmDevice.getOutboundGroupSessionKey(t),e.next=4,this._olmDevice.addInboundGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,r.key,{ed25519:this._olmDevice.deviceEd25519Key});case 4:return this._crypto.backupInfo&&this._crypto.backupGroupSession(this._roomId,this._olmDevice.deviceCurve25519Key,[],t,r.key).catch((function(e){l.logger.log("Failed to back up megolm session",e)})),e.abrupt("return",new y(t));case 6:case"end":return e.stop()}}),e,this)}))),m.prototype._getDevicesWithoutSessions=function(e,t,r){r=r||[];for(var n=0,i=Object.entries(t);n<i.length;n++){var o,s=(0,u.default)(i[n],2),a=s[0],c=s[1],l=e[a],d=v(c);try{for(d.s();!(o=d.n()).done;){var f=o.value,h=f.deviceId;l[h].sessionId||(r.push({userId:a,deviceInfo:f}),delete l[h])}}catch(e){d.e(e)}finally{d.f()}}return r},m.prototype._splitDevices=function(e){for(var t=[],r=[t],n=0,i=Object.entries(e);n<i.length;n++){for(var o=(0,u.default)(i[n],2),s=o[0],a=o[1],c=0,l=Object.values(a);c<l.length;c++){var d=l[c];t.push({userId:s,deviceInfo:d.device})}t.length>20&&(t=[],r.push(t))}return 0===t.length&&r.pop(),r},m.prototype._encryptAndSendKeysToDevices=function(e,t,r,n){for(var i=this,o={},s=[],a=0;a<r.length;a++){var u={algorithm:f.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},c=r[a],d=c.userId,h=c.deviceInfo,p=h.deviceId;o[d]||(o[d]={}),o[d][p]=u,s.push(f.encryptMessageForDevice(u.ciphertext,this._userId,this._deviceId,this._olmDevice,d,h,n))}return Promise.all(s).then((function(){for(var r=0,n=Object.keys(o);r<n.length;r++){for(var s=n[r],a=0,u=Object.keys(o[s]);a<u.length;a++){var c=u[a];0===Object.keys(o[s][c].ciphertext).length&&(l.logger.log("No ciphertext for device "+s+":"+c+": pruning"),delete o[s][c])}0===Object.keys(o[s]).length&&(l.logger.log("Pruned all devices for user "+s),delete o[s])}if(0!==Object.keys(o).length)return i._baseApis.sendToDevice("m.room.encrypted",o).then((function(){for(var r=0,n=Object.keys(o);r<n.length;r++)for(var i=n[r],s=0,a=Object.keys(o[i]);s<a.length;s++){var u=a[s];e.markSharedWithDevice(i,u,t)}}));l.logger.log("No users left to send to: aborting")}))},m.prototype._sendBlockedNotificationsToDevices=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n){var i,o,s,u,c,l,d,f,h,p,g,y,m,_,b;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i={},o=v(r);try{for(o.s();!(s=o.n()).done;)u=s.value,c=u.userId,l=u.deviceInfo,d=l.deviceInfo,f=d.deviceId,(h=Object.assign({},n)).code=l.code,h.reason=l.reason,"m.no_olm"===h.code&&(delete h.room_id,delete h.session_id),i[c]||(i[c]={}),i[c][f]=h}catch(e){o.e(e)}finally{o.f()}return e.next=5,this._baseApis.sendToDevice("org.matrix.room_key.withheld",i);case 5:for(p=0,g=Object.keys(i);p<g.length;p++)for(y=g[p],m=0,_=Object.keys(i[y]);m<_.length;m++)b=_[m],t.markNotifiedBlockedDevice(y,b);case 6:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),m.prototype.reshareKeyWithDevice=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n,i){var o,u,c,d,h;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=this._outboundSessions[r]){e.next=4;break}return l.logger.debug("megolm session ".concat(r," not found: not re-sharing keys")),e.abrupt("return");case 4:if(void 0!==o.sharedWithDevices[n]){e.next=7;break}return l.logger.debug("megolm session ".concat(r," never shared with user ").concat(n)),e.abrupt("return");case 7:if(void 0!==(u=o.sharedWithDevices[n][i.deviceId])){e.next=11;break}return l.logger.debug("megolm session ID "+r+" never shared with device "+n+":"+i.deviceId),e.abrupt("return");case 11:return e.next=13,this._olmDevice.getInboundGroupSessionKey(this._roomId,t,r,u);case 13:if(c=e.sent){e.next=17;break}return l.logger.warn("No inbound session key found for megolm ".concat(r,": not re-sharing keys")),e.abrupt("return");case 17:return e.next=19,f.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,s.default)({},n,[i]));case 19:return d={type:"m.forwarded_room_key",content:{algorithm:f.MEGOLM_ALGORITHM,room_id:this._roomId,session_id:r,session_key:c.key,chain_index:c.chain_index,sender_key:t,sender_claimed_ed25519_key:c.sender_claimed_ed25519_key,forwarding_curve25519_key_chain:c.forwarding_curve25519_key_chain}},h={algorithm:f.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=23,f.encryptMessageForDevice(h.ciphertext,this._userId,this._deviceId,this._olmDevice,n,i,d);case 23:return e.next=25,this._baseApis.sendToDevice("m.room.encrypted",(0,s.default)({},n,(0,s.default)({},i.deviceId,h)));case 25:l.logger.debug("Re-shared key for megolm session ".concat(r," ")+"with ".concat(n,":").concat(i.deviceId));case 26:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),m.prototype._shareKeyWithDevices=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n,i,o,s,u){var c;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,f.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,i,s,u);case 2:return c=e.sent,this._getDevicesWithoutSessions(c,i,o),e.next=6,this._shareKeyWithOlmSessions(t,r,n,c);case 6:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s,a){return e.apply(this,arguments)}}(),m.prototype._shareKeyWithOlmSessions=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n,i){var o,s;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:o=this._splitDevices(i),s=0;case 2:if(!(s<o.length)){e.next=16;break}return e.prev=3,e.next=6,this._encryptAndSendKeysToDevices(t,r.chain_index,o[s],n);case 6:l.logger.log("Completed megolm keyshare for ".concat(t.sessionId," ")+"in ".concat(this._roomId," (slice ").concat(s+1,"/").concat(o.length,")")),e.next=13;break;case 9:throw e.prev=9,e.t0=e.catch(3),l.logger.log("megolm keyshare for ".concat(t.sessionId," in ").concat(this._roomId," ")+"(slice ".concat(s+1,"/").concat(o.length,") failed")),e.t0;case 13:s++,e.next=2;break;case 16:case"end":return e.stop()}}),e,this,[[3,9]])})));return function(t,r,n,i){return e.apply(this,arguments)}}(),m.prototype._notifyFailedOlmDevices=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n){var i,o,s,u,c,l,d,f,h,g,y,m,_;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=v(n);try{for(i.s();!(o=i.n()).done;)s=o.value,u=s.userId,c=s.deviceInfo,l=c.deviceId,t.markSharedWithDevice(u,l,r.chain_index)}catch(e){i.e(e)}finally{i.f()}return e.next=4,this._olmDevice.filterOutNotifiedErrorDevices(n);case 4:d=e.sent,f={},h=v(d);try{for(h.s();!(g=h.n()).done;)y=g.value,m=y.userId,_=y.deviceInfo,f[m]=f[m]||{},f[m][_.deviceId]={device:{code:"m.no_olm",reason:p.WITHHELD_MESSAGES["m.no_olm"],deviceInfo:_}}}catch(e){h.e(e)}finally{h.f()}return e.next=10,this._notifyBlockedDevices(t,f);case 10:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),m.prototype._notifyBlockedDevices=function(){var e=(0,c.default)(a.default.mark((function e(t,r){var n,i,o;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n={room_id:this._roomId,session_id:t.sessionId,algorithm:f.MEGOLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key},i=this._splitDevices(r),o=0;case 3:if(!(o<i.length)){e.next=17;break}return e.prev=4,e.next=7,this._sendBlockedNotificationsToDevices(t,i[o],n);case 7:l.logger.log("Completed blacklist notification for ".concat(t.sessionId," ")+"in ".concat(this._roomId," (slice ").concat(o+1,"/").concat(i.length,")")),e.next=14;break;case 10:throw e.prev=10,e.t0=e.catch(4),l.logger.log("blacklist notification for ".concat(t.sessionId," in ")+"".concat(this._roomId," (slice ").concat(o+1,"/").concat(i.length,") failed")),e.t0;case 14:o++,e.next=3;break;case 17:case"end":return e.stop()}}),e,this,[[4,10]])})));return function(t,r){return e.apply(this,arguments)}}(),m.prototype.prepareToEncrypt=function(e){var t=this;this.encryptionPreparation||(l.logger.debug("Preparing to encrypt events for ".concat(this._roomId)),this.encryptionPreparation=(0,c.default)(a.default.mark((function r(){var n,i,o,s;return a.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,t._getDevicesInRoom(e);case 2:return n=r.sent,i=(0,u.default)(n,2),o=i[0],s=i[1],t._crypto.getGlobalErrorOnUnknownDevices()&&t._removeUnknownDevices(o),r.next=9,t._ensureOutboundSession(o,s,!0);case 9:delete t.encryptionPreparation;case 10:case"end":return r.stop()}}),r)})))())},m.prototype.encryptMessage=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n){var i,o,s,c,d,h,p,v;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l.logger.log("Starting to encrypt event for ".concat(this._roomId)),!this.encryptionPreparation){e.next=9;break}return e.prev=2,e.next=5,this.encryptionPreparation;case 5:e.next=9;break;case 7:e.prev=7,e.t0=e.catch(2);case 9:return e.next=11,this._getDevicesInRoom(t);case 11:return i=e.sent,o=(0,u.default)(i,2),s=o[0],c=o[1],this._crypto.getGlobalErrorOnUnknownDevices()&&this._checkForUnknownDevices(s),e.next=18,this._ensureOutboundSession(s,c);case 18:return d=e.sent,h={room_id:this._roomId,type:r,content:n},p=this._olmDevice.encryptGroupMessage(d.sessionId,JSON.stringify(h)),v={algorithm:f.MEGOLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:p,session_id:d.sessionId,device_id:this._deviceId},d.useCount++,e.abrupt("return",v);case 24:case"end":return e.stop()}}),e,this,[[2,7]])})));return function(t,r,n){return e.apply(this,arguments)}}(),m.prototype.forceDiscardSession=function(){this._setupPromise=this._setupPromise.then((function(){return null}))},m.prototype._checkForUnknownDevices=function(e){var t={};if(Object.keys(e).forEach((function(r){Object.keys(e[r]).forEach((function(n){var i=e[r][n];i.isUnverified()&&!i.isKnown()&&(t[r]||(t[r]={}),t[r][n]=i)}))})),Object.keys(t).length)throw new h.UnknownDeviceError("This room contains unknown devices which have not been verified. We strongly recommend you verify them before continuing.",t)},m.prototype._removeUnknownDevices=function(e){for(var t=0,r=Object.entries(e);t<r.length;t++){for(var n=(0,u.default)(r[t],2),i=n[0],o=n[1],s=0,a=Object.entries(o);s<a.length;s++){var c=(0,u.default)(a[s],2),l=c[0],d=c[1];d.isUnverified()&&!d.isKnown()&&delete o[l]}0===Object.keys(o).length&&delete e[i]}},m.prototype._getDevicesInRoom=function(){var e=(0,c.default)(a.default.mark((function e(t){var r,n,i,o,s,u,c,l,f,h;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.getEncryptionTargetMembers();case 2:return r=e.sent,n=d.map(r,(function(e){return e.userId})),i=this._crypto.getGlobalBlacklistUnverifiedDevices(),"boolean"==typeof t.getBlacklistUnverifiedDevices()&&(i=t.getBlacklistUnverifiedDevices()),e.next=8,this._crypto.downloadKeys(n,!1);case 8:o=e.sent,s={},e.t0=a.default.keys(o);case 11:if((e.t1=e.t0()).done){e.next=27;break}if(u=e.t1.value,o.hasOwnProperty(u)){e.next=15;break}return e.abrupt("continue",11);case 15:c=o[u],e.t2=a.default.keys(c);case 17:if((e.t3=e.t2()).done){e.next=25;break}if(l=e.t3.value,c.hasOwnProperty(l)){e.next=21;break}return e.abrupt("continue",17);case 21:f=this._crypto.checkDeviceTrust(u,l),(c[l].isBlocked()||!f.isVerified()&&i)&&(s[u]||(s[u]={}),(h=c[l].isBlocked()?{code:"m.blacklisted",reason:p.WITHHELD_MESSAGES["m.blacklisted"]}:{code:"m.unverified",reason:p.WITHHELD_MESSAGES["m.unverified"]}).deviceInfo=c[l],s[u][l]=h,delete c[l]),e.next=17;break;case 25:e.next=11;break;case 27:return e.abrupt("return",[o,s]);case 28:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),d.inherits(_,h.DecryptionAlgorithm);var b={no_olm:"The sender was unable to establish a secure channel.",unknown:"The secure channel with the sender was corrupted."};_.prototype.decryptEvent=function(){var e=(0,c.default)(a.default.mark((function e(t){var r,n,i,o,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((r=t.getWireContent()).sender_key&&r.session_id&&r.ciphertext){e.next=3;break}throw new h.DecryptionError("MEGOLM_MISSING_FIELDS","Missing fields in input");case 3:return this._addEventToPendingList(t),e.prev=4,e.next=7,this._olmDevice.decryptGroupMessage(t.getRoomId(),r.sender_key,r.session_id,r.ciphertext,t.getId(),t.getTs());case 7:n=e.sent,e.next=17;break;case 10:if(e.prev=10,e.t0=e.catch(4),"DecryptionError"!==e.t0.name){e.next=14;break}throw e.t0;case 14:throw i="OLM_DECRYPT_GROUP_MESSAGE_ERROR",e.t0&&"OLM.UNKNOWN_MESSAGE_INDEX"===e.t0.message&&(this._requestKeysForEvent(t),i="OLM_UNKNOWN_MESSAGE_INDEX"),new h.DecryptionError(i,e.t0?e.t0.toString():"Unknown Error: Error is undefined",{session:r.sender_key+"|"+r.session_id});case 17:if(null!==n){e.next=27;break}return this._requestKeysForEvent(t),e.next=21,this._olmDevice.sessionMayHaveProblems(r.sender_key,t.getTs()-12e4);case 21:if(!(o=e.sent)){e.next=26;break}throw s=b[o.type]||b.unknown,o.fixed&&(s+=" Trying to create a new secure channel and re-requesting the keys."),new h.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID",s,{session:r.sender_key+"|"+r.session_id});case 26:throw new h.DecryptionError("MEGOLM_UNKNOWN_INBOUND_SESSION_ID","The sender's device has not sent us the keys for this message.",{session:r.sender_key+"|"+r.session_id});case 27:if(this._removeEventFromPendingList(t),(u=JSON.parse(n.result)).room_id===t.getRoomId()){e.next=31;break}throw new h.DecryptionError("MEGOLM_BAD_ROOM","Message intended for room "+u.room_id);case 31:return e.abrupt("return",{clearEvent:u,senderCurve25519Key:n.senderKey,claimedEd25519Key:n.keysClaimed.ed25519,forwardingCurve25519KeyChain:n.forwardingCurve25519KeyChain,untrusted:n.untrusted});case 32:case"end":return e.stop()}}),e,this,[[4,10]])})));return function(t){return e.apply(this,arguments)}}(),_.prototype._requestKeysForEvent=function(e){var t=e.getWireContent(),r=e.getKeyRequestRecipients(this._userId);this._crypto.requestRoomKey({room_id:e.getRoomId(),algorithm:t.algorithm,sender_key:t.sender_key,session_id:t.session_id},r)},_.prototype._addEventToPendingList=function(e){var t=e.getWireContent(),r=t.sender_key,n=t.session_id;this._pendingEvents[r]||(this._pendingEvents[r]=new Map);var i=this._pendingEvents[r];i.has(n)||i.set(n,new Set),i.get(n).add(e)},_.prototype._removeEventFromPendingList=function(e){var t=e.getWireContent(),r=t.sender_key,n=t.session_id,i=this._pendingEvents[r],o=i&&i.get(n);o&&(o.delete(e),0===o.size&&i.delete(r),0===i.size&&delete this._pendingEvents[r])},_.prototype.onRoomKeyEvent=function(e){var t,r=this,n=e.getContent(),i=n.session_id,o=e.getSenderKey(),s=[],a=!1;if(n.room_id&&i&&n.session_key){if(o){if("m.forwarded_room_key"==e.getType()){if(a=!0,s=n.forwarding_curve25519_key_chain,d.isArray(s)||(s=[]),(s=s.slice()).push(o),!(o=n.sender_key))return void l.logger.error("forwarded_room_key event is missing sender_key field");var u=n.sender_claimed_ed25519_key;if(!u)return void l.logger.error("forwarded_room_key_event is missing sender_claimed_ed25519_key field");t={ed25519:u}}else t=e.getKeysClaimed();return this._olmDevice.addInboundGroupSession(n.room_id,o,s,i,n.session_key,t,a).then((function(){r._retryDecryption(o,i).then((function(e){e&&r._crypto.cancelRoomKeyRequest({algorithm:n.algorithm,room_id:n.room_id,session_id:n.session_id,sender_key:o})}))})).then((function(){r._crypto.backupInfo&&r._crypto.backupGroupSession(n.room_id,o,s,n.session_id,n.session_key,t,a).catch((function(e){l.logger.log("Failed to back up megolm session",e)}))})).catch((function(e){l.logger.error("Error handling m.room_key_event: ".concat(e))}))}l.logger.error("key event has no sender key (not encrypted?)")}else l.logger.error("key event is missing fields")},_.prototype.onRoomKeyWithheldEvent=function(){var e=(0,c.default)(a.default.mark((function e(t){var r,n,i,o,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getContent(),n=r.sender_key,"m.no_olm"!==r.code){e.next=36;break}return i=t.getSender(),l.logger.warn("".concat(i,":").concat(n," was unable to establish an olm session with us")),e.next=7,this._olmDevice.getSessionIdForDevice(n);case 7:if(!e.sent){e.next=13;break}return l.logger.debug("New session already created. Not creating a new one."),e.next=11,this._olmDevice.recordSessionProblem(n,"no_olm",!0);case 11:return this.retryDecryptionFromSender(n),e.abrupt("return");case 13:if(o=this._crypto._deviceList.getDeviceByIdentityKey(r.algorithm,n)){e.next=24;break}return e.next=17,this._crypto.downloadKeys([i],!1);case 17:if(o=this._crypto._deviceList.getDeviceByIdentityKey(r.algorithm,n)){e.next=24;break}return l.logger.info("Couldn't find device for identity key "+n+": not establishing session"),e.next=22,this._olmDevice.recordSessionProblem(n,"no_olm",!1);case 22:return this.retryDecryptionFromSender(n),e.abrupt("return");case 24:return e.next=26,f.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,s.default)({},i,[o]),!1);case 26:return u={algorithm:f.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=29,f.encryptMessageForDevice(u.ciphertext,this._userId,this._deviceId,this._olmDevice,i,o,{type:"m.dummy"});case 29:return e.next=31,this._olmDevice.recordSessionProblem(n,"no_olm",!0);case 31:return this.retryDecryptionFromSender(n),e.next=34,this._baseApis.sendToDevice("m.room.encrypted",(0,s.default)({},i,(0,s.default)({},o.deviceId,u)));case 34:e.next=38;break;case 36:return e.next=38,this._olmDevice.addInboundGroupSessionWithheld(r.room_id,n,r.session_id,r.code,r.reason);case 38:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),_.prototype.hasKeysForKeyRequest=function(e){var t=e.requestBody;return this._olmDevice.hasInboundSessionKeys(t.room_id,t.sender_key,t.session_id)},_.prototype.shareKeysWithDevice=function(e){var t=this,r=e.userId,n=e.deviceId,i=this._crypto.getStoredDevice(r,n),o=e.requestBody;this.olmlib.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,(0,s.default)({},r,[i])).then((function(e){return e[r][n].sessionId?(l.logger.log("sharing keys for session "+o.sender_key+"|"+o.session_id+" with device "+r+":"+n),t._buildKeyForwardingMessage(o.room_id,o.sender_key,o.session_id)):null})).then((function(e){var o={algorithm:f.OLM_ALGORITHM,sender_key:t._olmDevice.deviceCurve25519Key,ciphertext:{}};return t.olmlib.encryptMessageForDevice(o.ciphertext,t._userId,t._deviceId,t._olmDevice,r,i,e).then((function(){var e=(0,s.default)({},r,(0,s.default)({},n,o));return t._baseApis.sendToDevice("m.room.encrypted",e)}))}))},_.prototype._buildKeyForwardingMessage=function(){var e=(0,c.default)(a.default.mark((function e(t,r,n){var i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._olmDevice.getInboundGroupSessionKey(t,r,n);case 2:return i=e.sent,e.abrupt("return",{type:"m.forwarded_room_key",content:{algorithm:f.MEGOLM_ALGORITHM,room_id:t,sender_key:r,sender_claimed_ed25519_key:i.sender_claimed_ed25519_key,session_id:n,session_key:i.key,chain_index:i.chain_index,forwarding_curve25519_key_chain:i.forwarding_curve25519_key_chain}});case 4:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),_.prototype.importRoomKey=function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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,r.untrusted?{untrusted:r.untrusted}:{}).then((function(){t._crypto.backupInfo&&"backup"!==r.source&&t._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((function(e){l.logger.log("Failed to back up megolm session",e)})),t._retryDecryption(e.sender_key,e.session_id)}))},_.prototype._retryDecryption=function(){var e=(0,c.default)(a.default.mark((function e(t,r){var n,i,s=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this._pendingEvents[t]){e.next=3;break}return e.abrupt("return",!0);case 3:if(i=n.get(r)){e.next=6;break}return e.abrupt("return",!0);case 6:return l.logger.debug("Retrying decryption on events",(0,o.default)(i)),e.next=9,Promise.all((0,o.default)(i).map(function(){var e=(0,c.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.attemptDecryption(s._crypto,!0);case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(t){return e.apply(this,arguments)}}()));case 9:return e.abrupt("return",!(this._pendingEvents[t]||{})[r]);case 10:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),_.prototype.retryDecryptionFromSender=function(){var e=(0,c.default)(a.default.mark((function e(t){var r,n=this;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._pendingEvents[t]){e.next=3;break}return e.abrupt("return",!0);case 3:return delete this._pendingEvents[t],e.next=6,Promise.all((0,o.default)(r).map(function(){var e=(0,c.default)(a.default.mark((function e(t){var r,i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=(0,u.default)(t,2),r[0],i=r[1],e.next=3,Promise.all((0,o.default)(i).map(function(){var e=(0,c.default)(a.default.mark((function e(t){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,t.attemptDecryption(n._crypto);case 3:e.next=7;break;case 5:e.prev=5,e.t0=e.catch(0);case 7:case"end":return e.stop()}}),e,null,[[0,5]])})));return function(t){return e.apply(this,arguments)}}()));case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 6:return e.abrupt("return",!this._pendingEvents[t]);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),(0,h.registerAlgorithm)(f.MEGOLM_ALGORITHM,m,_)},{"../../logger":95,"../../utils":123,"../OlmDevice":63,"../olmlib":75,"./base":68,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/regenerator":27}],71:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault"),o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=e("../../logger"),u=n(e("../../utils")),c=n(e("../olmlib")),l=e("../deviceinfo"),d=e("./base"),f=l.DeviceInfo.DeviceVerification;function h(e){(0,u.polyfillSuper)(this,d.EncryptionAlgorithm,e),this._sessionPrepared=!1,this._prepPromise=null}function p(e){(0,u.polyfillSuper)(this,d.DecryptionAlgorithm,e)}u.inherits(h,d.EncryptionAlgorithm),h.prototype._ensureSession=function(e){if(this._prepPromise)return this._prepPromise;if(this._sessionPrepared)return Promise.resolve();var t=this;return this._prepPromise=t._crypto.downloadKeys(e).then((function(r){return t._crypto.ensureOlmSessionsForUsers(e)})).then((function(){t._sessionPrepared=!0})).finally((function(){t._prepPromise=null})),this._prepPromise},h.prototype.encryptMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r,n){var i,s,a,l,d,h,p,v,g,y,m;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.getEncryptionTargetMembers();case 2:return i=e.sent,s=u.map(i,(function(e){return e.userId})),a=this,e.next=7,this._ensureSession(s);case 7:l={room_id:t.roomId,type:r,content:n},d={algorithm:c.OLM_ALGORITHM,sender_key:a._olmDevice.deviceCurve25519Key,ciphertext:{}},h=[],p=0;case 11:if(!(p<s.length)){e.next=29;break}v=s[p],g=a._crypto.getStoredDevicesForUser(v),y=0;case 15:if(!(y<g.length)){e.next=26;break}if(m=g[y],m.getIdentityKey()!=a._olmDevice.deviceCurve25519Key){e.next=20;break}return e.abrupt("continue",23);case 20:if(m.verified!=f.BLOCKED){e.next=22;break}return e.abrupt("continue",23);case 22:h.push(c.encryptMessageForDevice(d.ciphertext,a._userId,a._deviceId,a._olmDevice,v,m,l));case 23:++y,e.next=15;break;case 26:++p,e.next=11;break;case 29:return e.next=31,Promise.all(h).then((function(){return d}));case 31:return e.abrupt("return",e.sent);case 32:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),u.inherits(p,d.DecryptionAlgorithm),p.prototype.decryptEvent=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n,i,s,a,u,c;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getWireContent(),n=r.sender_key,i=r.ciphertext){e.next=5;break}throw new d.DecryptionError("OLM_MISSING_CIPHERTEXT","Missing ciphertext");case 5:if(this._olmDevice.deviceCurve25519Key in i){e.next=7;break}throw new d.DecryptionError("OLM_NOT_INCLUDED_IN_RECIPIENTS","Not included in recipients");case 7:return s=i[this._olmDevice.deviceCurve25519Key],e.prev=8,e.next=11,this._decryptMessage(n,s);case 11:a=e.sent,e.next=17;break;case 14:throw e.prev=14,e.t0=e.catch(8),new d.DecryptionError("OLM_BAD_ENCRYPTED_MESSAGE","Bad Encrypted Message",{sender:n,err:e.t0});case 17:if((u=JSON.parse(a)).recipient==this._userId){e.next=20;break}throw new d.DecryptionError("OLM_BAD_RECIPIENT","Message was intented for "+u.recipient);case 20:if(u.recipient_keys.ed25519==this._olmDevice.deviceEd25519Key){e.next=22;break}throw new d.DecryptionError("OLM_BAD_RECIPIENT_KEY","Message not intended for this device",{intended:u.recipient_keys.ed25519,our_key:this._olmDevice.deviceEd25519Key});case 22:if(u.sender==t.getSender()){e.next=24;break}throw new d.DecryptionError("OLM_FORWARDED_MESSAGE","Message forwarded from "+u.sender,{reported_sender:t.getSender()});case 24:if(u.room_id===t.getRoomId()){e.next=26;break}throw new d.DecryptionError("OLM_BAD_ROOM","Message intended for room "+u.room_id,{reported_room:t.room_id});case 26:return c=u.keys||{},e.abrupt("return",{clearEvent:u,senderCurve25519Key:n,claimedEd25519Key:c.ed25519||null});case 28:case"end":return e.stop()}}),e,this,[[8,14]])})));return function(t){return e.apply(this,arguments)}}(),p.prototype._decryptMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(0===r.type){e.next=4;break}return e.abrupt("return",this._reallyDecryptMessage(t,r));case 4:return n=this._olmDevice._olmPrekeyPromise.then((function(){return i._reallyDecryptMessage(t,r)})),this._olmDevice._olmPrekeyPromise=n.catch((function(){})),e.next=8,n;case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),p.prototype._reallyDecryptMessage=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,u,c,l;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._olmDevice.getSessionIdsForDevice(t);case 2:n=e.sent,i={},s=0;case 5:if(!(s<n.length)){e.next=26;break}return u=n[s],e.prev=7,e.next=10,this._olmDevice.decryptMessage(t,u,r.type,r.body);case 10:return c=e.sent,a.logger.log("Decrypted Olm message from "+t+" with session "+u),e.abrupt("return",c);case 15:return e.prev=15,e.t0=e.catch(7),e.next=19,this._olmDevice.matchesSession(t,u,r.type,r.body);case 19:if(!e.sent){e.next=22;break}throw new Error("Error decrypting prekey message with existing session id "+u+": "+e.t0.message);case 22:i[u]=e.t0.message;case 23:s++,e.next=5;break;case 26:if(0===r.type){e.next=30;break}if(0!==n.length){e.next=29;break}throw new Error("No existing sessions");case 29:throw new Error("Error decrypting non-prekey message with existing sessions: "+JSON.stringify(i));case 30:return e.prev=30,e.next=33,this._olmDevice.createInboundSession(t,r.type,r.body);case 33:l=e.sent,e.next=40;break;case 36:throw e.prev=36,e.t1=e.catch(30),i["(new)"]=e.t1.message,new Error("Error decrypting prekey message: "+JSON.stringify(i));case 40:return a.logger.log("created new inbound Olm session ID "+l.session_id+" with "+t),e.abrupt("return",l.payload);case 42:case"end":return e.stop()}}),e,this,[[7,15],[30,36]])})));return function(t,r){return e.apply(this,arguments)}}(),(0,d.registerAlgorithm)(c.OLM_ALGORITHM,h,p)},{"../../logger":95,"../../utils":123,"../deviceinfo":72,"../olmlib":75,"./base":68,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27}],72:[function(e,t,r){"use strict";function n(e){Object.defineProperty(this,"deviceId",{enumerable:!0,value:e}),this.algorithms=[],this.keys={},this.verified=i.UNVERIFIED,this.known=!1,this.unsigned={},this.signatures={}}Object.defineProperty(r,"__esModule",{value:!0}),r.DeviceInfo=n,n.fromStorage=function(e,t){var r=new n(t);for(var i in e)e.hasOwnProperty(i)&&(r[i]=e[i]);return r},n.prototype.toStorage=function(){return{algorithms:this.algorithms,keys:this.keys,verified:this.verified,known:this.known,unsigned:this.unsigned,signatures:this.signatures}},n.prototype.getFingerprint=function(){return this.keys["ed25519:"+this.deviceId]},n.prototype.getIdentityKey=function(){return this.keys["curve25519:"+this.deviceId]},n.prototype.getDisplayName=function(){return this.unsigned.device_display_name||null},n.prototype.isBlocked=function(){return this.verified==i.BLOCKED},n.prototype.isVerified=function(){return this.verified==i.VERIFIED},n.prototype.isUnverified=function(){return this.verified==i.UNVERIFIED},n.prototype.isKnown=function(){return 1==this.known},n.DeviceVerification={VERIFIED:1,UNVERIFIED:0,BLOCKED:-1};var i=n.DeviceVerification},{}],73:[function(e,t,r){(function(t,n){"use strict";var i=e("@babel/runtime/helpers/interopRequireDefault"),o=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.isCryptoAvailable=function(){return Boolean(t.Olm)},r.Crypto=F,r.fixBackupKey=G,r.verificationMethods=void 0;var s,a=i(e("@babel/runtime/helpers/classCallCheck")),u=i(e("@babel/runtime/helpers/slicedToArray")),c=i(e("@babel/runtime/regenerator")),l=i(e("@babel/runtime/helpers/asyncToGenerator")),d=i(e("@babel/runtime/helpers/defineProperty")),f=i(e("another-json")),h=e("events"),p=e("../ReEmitter"),v=e("../logger"),g=o(e("../utils")),y=e("./OlmDevice"),m=o(e("./olmlib")),_=e("./DeviceList"),b=e("./deviceinfo"),k=o(e("./algorithms")),S=e("./CrossSigning"),E=e("./EncryptionSetup"),w=e("./SecretStorage"),I=e("./OutgoingRoomKeyRequestManager"),R=e("./store/indexeddb-crypto-store"),T=e("./verification/QRCode"),x=e("./verification/SAS"),C=e("./key_passphrase"),O=e("./recoverykey"),A=e("./verification/request/VerificationRequest"),D=e("./verification/request/InRoomChannel"),P=e("./verification/request/ToDeviceChannel"),M=e("./verification/IllegalMethod"),U=e("../errors"),K=e("./aes");function q(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return N(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var B=b.DeviceInfo.DeviceVerification,L=(s={},(0,d.default)(s,T.ReciprocateQRCode.NAME,T.ReciprocateQRCode),(0,d.default)(s,x.SAS.NAME,x.SAS),(0,d.default)(s,T.SHOW_QR_CODE_METHOD,M.IllegalMethod),(0,d.default)(s,T.SCAN_QR_CODE_METHOD,M.IllegalMethod),s),j={RECIPROCATE_QR_CODE:T.ReciprocateQRCode.NAME,SAS:x.SAS.NAME};r.verificationMethods=j;function F(e,t,r,n,i,o,s,a){var u=this;if(this._onDeviceListUserCrossSigningUpdated=this._onDeviceListUserCrossSigningUpdated.bind(this),this._trustCrossSignedDevices=!0,this._reEmitter=new p.ReEmitter(this),this._baseApis=e,this._sessionStore=t,this._userId=r,this._deviceId=n,this._clientStore=i,this._cryptoStore=o,this._roomList=s,a){this._verificationMethods=new Map;var d,f=q(a);try{for(f.s();!(d=f.n()).done;){var h=d.value;"string"==typeof h?L[h]&&this._verificationMethods.set(h,L[h]):h.NAME?this._verificationMethods.set(h.NAME,h):console.warn("Excluding unknown verification method ".concat(h))}}catch(e){f.e(e)}finally{f.f()}}else this._verificationMethods=L;this.backupInfo=null,this.backupKey=null,this._checkedForBackup=!1,this._sendingBackups=!1,this._olmDevice=new y.OlmDevice(o),this._deviceList=new _.DeviceList(e,o,this._olmDevice),this._deviceList.on("userCrossSigningUpdated",this._onDeviceListUserCrossSigningUpdated),this._reEmitter.reEmit(this._deviceList,["crypto.devicesUpdated","crypto.willUpdateDevices"]),this._lastOneTimeKeyCheck=null,this._oneTimeKeyCheckInProgress=!1,this._roomEncryptors={},this._roomDecryptors={},this._supportedAlgorithms=g.keys(k.DECRYPTION_CLASSES),this._deviceKeys={},this._globalBlacklistUnverifiedDevices=!1,this._globalErrorOnUnknownDevices=!0,this._outgoingRoomKeyRequestManager=new I.OutgoingRoomKeyRequestManager(e,this._deviceId,this._cryptoStore),this._receivedRoomKeyRequests=[],this._receivedRoomKeyRequestCancellations=[],this._processingRoomKeyRequests=!1,this._lazyLoadMembers=!1,this._roomDeviceTrackingState={},this._lastNewSessionForced={},this._toDeviceVerificationRequests=new P.ToDeviceRequests,this._inRoomVerificationRequests=new D.InRoomRequests,this._sendKeyRequestsImmediately=!1;var v=this._baseApis._cryptoCallbacks||{},m=(0,S.createCryptoStoreCacheCallbacks)(o,this._olmDevice);this._crossSigningInfo=new S.CrossSigningInfo(r,v,m),this._secretStorage=new w.SecretStorage(e,v),!v.getCrossSigningKey&&v.getSecretStorageKey&&(v.getCrossSigningKey=function(){var e=(0,l.default)(c.default.mark((function e(t){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",S.CrossSigningInfo.getFromSecretStorage(t,u._secretStorage));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}function G(e){if("string"!=typeof e||e.indexOf(",")<0)return null;var t=Uint8Array.from(e.split(","),(function(e){return parseInt(e)}));return m.encodeBase64(t)}function V(e){if(!e._oneTimeKeyCheckInProgress){var t=Date.now();if(!(null!==e._lastOneTimeKeyCheck&&t-e._lastOneTimeKeyCheck<6e4)){e._lastOneTimeKeyCheck=t;var r=e._olmDevice.maxNumberOfOneTimeKeys(),n=Math.floor(r/2);e._oneTimeKeyCheckInProgress=!0,Promise.resolve().then((function(){return void 0!==e._oneTimeKeyCount?Promise.resolve(e._oneTimeKeyCount):e._baseApis.uploadKeysRequest({}).then((function(e){return e.one_time_key_counts.signed_curve25519||0}))})).then((function(e){return i(e)})).catch((function(e){v.logger.error("Error uploading one-time keys",e.stack||e)})).finally((function(){e._oneTimeKeyCount=void 0,e._oneTimeKeyCheckInProgress=!1}))}}function i(t){if(n<=t)return Promise.resolve();var r=Math.min(n-t,5);return e._olmDevice.generateOneTimeKeys(r).then((function(){return function(e){return W.apply(this,arguments)}(e)})).then((function(e){if(e.one_time_key_counts&&e.one_time_key_counts.signed_curve25519)return i(e.one_time_key_counts.signed_curve25519);throw new Error("response for uploading keys does not contain one_time_key_counts.signed_curve25519")}))}}function W(){return(W=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t._olmDevice.getOneTimeKeys();case 2:for(o in r=e.sent,n={},i=[],r.curve25519)r.curve25519.hasOwnProperty(o)&&(s={key:r.curve25519[o]},n["signed_curve25519:"+o]=s,i.push(t._signObject(s)));return e.next=8,Promise.all(i);case 8:return e.next=10,t._baseApis.uploadKeysRequest({one_time_keys:n});case 10:return a=e.sent,e.next=13,t._olmDevice.markKeysAsPublished();case 13:return e.abrupt("return",a);case 14:case"end":return e.stop()}}),e)})))).apply(this,arguments)}g.inherits(F,h.EventEmitter),F.prototype.init=function(){var e=(0,l.default)(c.default.mark((function e(r){var n,i,o,s,a,u=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=(n=r||{}).exportedOlmDevice,o=n.pickleKey,v.logger.log("Crypto: initialising Olm..."),e.next=4,t.Olm.init();case 4:return v.logger.log(i?"Crypto: initialising Olm device from exported device...":"Crypto: initialising Olm device..."),e.next=7,this._olmDevice.init({fromExportedDevice:i,pickleKey:o});case 7:return v.logger.log("Crypto: loading device list..."),e.next=10,this._deviceList.load();case 10:return this._deviceKeys["ed25519:"+this._deviceId]=this._olmDevice.deviceEd25519Key,this._deviceKeys["curve25519:"+this._deviceId]=this._olmDevice.deviceCurve25519Key,v.logger.log("Crypto: fetching own devices..."),(s=this._deviceList.getRawStoredDevicesForUser(this._userId))||(s={}),s[this._deviceId]||(v.logger.log("Crypto: adding this device to the store..."),a={keys:this._deviceKeys,algorithms:this._supportedAlgorithms,verified:B.VERIFIED,known:!0},s[this._deviceId]=a,this._deviceList.storeDevicesForUser(this._userId,s),this._deviceList.saveIfDirty()),e.next=18,this._cryptoStore.doTxn("readonly",[R.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){u._cryptoStore.getCrossSigningKeys(e,(function(e){e&&0!==Object.keys(e).length&&(v.logger.log("Loaded cross-signing public keys from crypto store"),u._crossSigningInfo.setKeys(e))}))}));case 18:this._deviceList.startTrackingDeviceList(this._userId),v.logger.log("Crypto: checking for key backup..."),this._checkAndStartKeyBackup();case 21:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.getCryptoTrustCrossSignedDevices=function(){return this._trustCrossSignedDevices},F.prototype.setCryptoTrustCrossSignedDevices=function(e){this._trustCrossSignedDevices=e;var t,r=q(this._deviceList.getKnownUserIds());try{for(r.s();!(t=r.n()).done;)for(var n=t.value,i=this._deviceList.getRawStoredDevicesForUser(n),o=0,s=Object.keys(i);o<s.length;o++){var a=s[o],u=this.checkDeviceTrust(n,a);if(!u.isLocallyVerified()&&u.isCrossSigningVerified()){var c=this._deviceList.getStoredDevice(n,a);this.emit("deviceVerificationChanged",n,a,c)}}}catch(e){r.e(e)}finally{r.f()}},F.prototype.createRecoveryKeyFromPassphrase=function(){var e=(0,l.default)(c.default.mark((function e(r){var n,i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=new t.Olm.PkDecryption,e.prev=1,i={},!r){e.next=11;break}return e.next=6,(0,C.keyFromPassphrase)(r);case 6:o=e.sent,i.passphrase={algorithm:"m.pbkdf2",iterations:o.iterations,salt:o.salt},i.pubkey=n.init_with_private_key(o.key),e.next=12;break;case 11:i.pubkey=n.generate_key();case 12:return s=n.get_private_key(),a=(0,O.encodeRecoveryKey)(s),e.abrupt("return",{keyInfo:i,encodedPrivateKey:a,privateKey:s});case 15:return e.prev=15,n&&n.free(),e.finish(15);case 18:case"end":return e.stop()}}),e,null,[[1,,15,18]])})));return function(t){return e.apply(this,arguments)}}(),F.prototype.isCrossSigningReady=(0,l.default)(c.default.mark((function e(){var t,r;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._crossSigningInfo.getId(),e.next=3,this._crossSigningInfo.isStoredInKeyCache();case 3:if(e.t0=e.sent,e.t0){e.next=8;break}return e.next=7,this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage);case 7:e.t0=e.sent;case 8:return r=e.t0,e.abrupt("return",!(!t||!r));case 10:case"end":return e.stop()}}),e,this)}))),F.prototype.isSecretStorageReady=(0,l.default)(c.default.mark((function e(){var t,r,n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._secretStorage.hasKey();case 2:return t=e.sent,e.next=5,this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage);case 5:return r=e.sent,n=!this._baseApis.getKeyBackupEnabled()||this._baseApis.isKeyBackupKeyStored(),e.abrupt("return",!!(t&&r&&n));case 8:case"end":return e.stop()}}),e,this)}))),F.prototype.bootstrapCrossSigning=(0,l.default)(c.default.mark((function e(){var t,r,n,i,o,s,a,u,d,f,h,p,g,y,m=this,_=arguments;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=_.length>0&&void 0!==_[0]?_[0]:{},r=t.authUploadDeviceSigningKeys,n=t.setupNewCrossSigning,v.logger.log("Bootstrapping cross-signing"),i=this._baseApis._cryptoCallbacks,o=new E.EncryptionSetupBuilder(this._baseApis.store.accountData,i),s=new S.CrossSigningInfo(this._userId,o.crossSigningCallbacks,o.crossSigningCallbacks),a=function(){var e=(0,l.default)(c.default.mark((function e(){var t,n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return s.resetKeys(),e.next=3,m._signObject(s.keys.master);case 3:return o.addCrossSigningKeys(r,s.keys),t=m._deviceList.getStoredDevice(m._userId,m._deviceId),e.next=7,s.signDevice(m._userId,t);case 7:if(n=e.sent,o.addKeySignature(m._userId,m._deviceId,n),!m.backupInfo){e.next=13;break}return e.next=12,s.signObject(m.backupInfo.auth_data,"master");case 12:o.addSessionBackup(m.backupInfo);case 13:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),u=this._crossSigningInfo.getId(),e.next=9,this._crossSigningInfo.isStoredInKeyCache();case 9:return d=e.sent,e.next=12,this._crossSigningInfo.isStoredInSecretStorage(this._secretStorage);case 12:if(f=e.sent,h=d||f,v.logger.log({setupNewCrossSigning:n,publicKeysOnDevice:u,privateKeysInCache:d,privateKeysInStorage:f,privateKeysExistSomewhere:h}),h&&!n){e.next=21;break}return v.logger.log("Cross-signing private keys not found locally or in secret storage, creating new keys"),e.next=19,a();case 19:e.next=29;break;case 21:if(!u||!d){e.next=25;break}v.logger.log("Cross-signing public keys trusted and private keys found locally"),e.next=29;break;case 25:if(!f){e.next=29;break}return v.logger.log("Cross-signing private keys not found locally, but they are available in secret storage, reading storage and caching locally"),e.next=29,this.checkOwnCrossSigningTrust();case 29:if(!(p=o.crossSigningCallbacks.privateKeys).size||this._baseApis._cryptoCallbacks.saveCrossSigningKeys){e.next=38;break}return g=new w.SecretStorage(o.accountDataClientAdapter,o.ssssCryptoCallbacks),e.next=34,g.hasKey();case 34:if(!e.sent){e.next=38;break}return v.logger.log("Storing new cross-signing private keys in secret storage"),e.next=38,S.CrossSigningInfo.storeInSecretStorage(p,g);case 38:return y=o.buildOperation(),e.next=41,y.apply(this);case 41:return e.next=43,o.persist(this);case 43:v.logger.log("Cross-signing ready");case 44:case"end":return e.stop()}}),e,this)}))),F.prototype.bootstrapSecretStorage=(0,l.default)(c.default.mark((function e(){var t,r,n,i,o,s,a,f,h,p,g,y,_,b,k,I,R,T,x,C,A,D,P,M,U,K,q,N,B,L,j,F,V=this,W=arguments;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=W.length>0&&void 0!==W[0]?W[0]:{},r=t.createSecretStorageKey,n=void 0===r?(0,l.default)(c.default.mark((function e(){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",{});case 1:case"end":return e.stop()}}),e)}))):r,i=t.keyBackupInfo,o=t.setupNewKeyBackup,s=t.setupNewSecretStorage,a=t.getKeyBackupPassphrase,v.logger.log("Bootstrapping Secure Secret Storage"),f=this._baseApis._cryptoCallbacks,h=new E.EncryptionSetupBuilder(this._baseApis.store.accountData,f),p=new w.SecretStorage(h.accountDataClientAdapter,h.ssssCryptoCallbacks),g=null,y=function(){var e=(0,l.default)(c.default.mark((function e(t,r){var n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=t||{},r&&(t.key=r),e.next=4,p.addKey(w.SECRET_STORAGE_ALGORITHM_V1_AES,t);case 4:return n=e.sent,r&&h.ssssCryptoCallbacks.addPrivateKey(n,r),e.next=8,p.setDefaultKeyId(n);case 8:return e.abrupt("return",n);case 9:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),_=function(){var e=(0,l.default)(c.default.mark((function e(t,r){var n,i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.mac){e.next=16;break}return e.next=3,V._baseApis._cryptoCallbacks.getSecretStorageKey({keys:(0,d.default)({},t,r)},"");case 3:if(!(n=e.sent)){e.next=16;break}return i=n[1],h.ssssCryptoCallbacks.addPrivateKey(t,i),e.next=9,w.SecretStorage._calculateKeyCheck(i);case 9:return o=e.sent,s=o.iv,a=o.mac,r.iv=s,r.mac=a,e.next=16,h.setAccountData("m.secret_storage.key.".concat(t),r);case 16:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),e.next=10,this.getSecretStorageKey();case 10:if(b=e.sent,k=b||[null,null],I=(0,u.default)(k,2),R=I[0],T=I[1],x=!s&&T&&T.algorithm===w.SECRET_STORAGE_ALGORITHM_V1_AES,v.logger.log({keyBackupInfo:i,setupNewKeyBackup:o,setupNewSecretStorage:s,storageExists:x,oldKeyInfo:T}),x||i){e.next=26;break}return v.logger.log("Secret storage does not exist, creating new storage key"),e.next=18,n();case 18:return C=e.sent,A=C.keyInfo,D=C.privateKey,e.next=23,y(A,D);case 23:g=e.sent,e.next=57;break;case 26:if(x||!i){e.next=53;break}return v.logger.log("Secret storage does not exist, using key backup key"),e.next=30,this.getSessionBackupPrivateKey();case 30:if(e.t0=e.sent,e.t0){e.next=35;break}return e.next=34,a();case 34:e.t0=e.sent;case 35:return P=e.t0,M={},i.auth_data.private_key_salt&&i.auth_data.private_key_iterations&&(M.passphrase={algorithm:"m.pbkdf2",iterations:i.auth_data.private_key_iterations,salt:i.auth_data.private_key_salt,bits:256}),e.next=40,y(M,P);case 40:return g=e.sent,e.next=43,p.store("m.megolm_backup.v1",m.encodeBase64(P),[g]);case 43:if(!this._crossSigningInfo.getId()||!this._crossSigningInfo.isStoredInKeyCache("master")){e.next=49;break}return v.logger.log("Adding cross-signing signature to key backup"),e.next=47,this._crossSigningInfo.signObject(i.auth_data,"master");case 47:e.next=50;break;case 49:v.logger.warn("Cross-signing keys not available, skipping signature on key backup");case 50:h.addSessionBackup(i),e.next=57;break;case 53:if(v.logger.log("Secret storage exists"),!T||T.algorithm!==w.SECRET_STORAGE_ALGORITHM_V1_AES){e.next=57;break}return e.next=57,_(R,T);case 57:if(e.t2=!this._baseApis._cryptoCallbacks.saveCrossSigningKeys,!e.t2){e.next=62;break}return e.next=61,this.isCrossSigningReady();case 61:e.t2=e.sent;case 62:if(e.t1=e.t2,!e.t1){e.next=70;break}if(e.t3=g,e.t3){e.next=69;break}return e.next=68,this._crossSigningInfo.isStoredInSecretStorage(p);case 68:e.t3=!e.sent;case 69:e.t1=e.t3;case 70:if(!e.t1){e.next=77;break}return v.logger.log("Copying cross-signing private keys from cache to secret storage"),e.next=74,this._crossSigningInfo.getCrossSigningKeysFromCache();case 74:return U=e.sent,e.next=77,S.CrossSigningInfo.storeInSecretStorage(U,p);case 77:if(!o||i){e.next=96;break}return v.logger.log("Creating new message key backup version"),e.next=81,this._baseApis.prepareKeyBackupVersion(null,{secureSecretStorage:!1});case 81:return K=e.sent,q=(0,O.decodeRecoveryKey)(K.recovery_key),e.next=85,p.store("m.megolm_backup.v1",m.encodeBase64(q));case 85:if(N={algorithm:K.algorithm,auth_data:K.auth_data},!this._crossSigningInfo.getId()||!this._crossSigningInfo.isStoredInKeyCache("master")){e.next=92;break}return v.logger.log("Adding cross-signing signature to key backup"),e.next=90,this._crossSigningInfo.signObject(N.auth_data,"master");case 90:e.next=93;break;case 92:v.logger.warn("Cross-signing keys not available, skipping signature on key backup");case 93:return e.next=95,this._signObject(N.auth_data);case 95:h.addSessionBackup(N);case 96:return e.next=98,p.get("m.megolm_backup.v1");case 98:if(!(B=e.sent)){e.next=108;break}if(v.logger.info("Got session backup key from secret storage: caching"),!(L=G(B))){e.next=105;break}return e.next=105,p.store("m.megolm_backup.v1",L,[g||R]);case 105:return j=new Uint8Array(m.decodeBase64(L||B)),e.next=108,h.addSessionBackupPrivateKeyToCache(j);case 108:return F=h.buildOperation(),e.next=111,F.apply(this);case 111:return e.next=113,h.persist(this);case 113:v.logger.log("Secure Secret Storage ready");case 114:case"end":return e.stop()}}),e,this)}))),F.prototype.addSecretStorageKey=function(e,t,r){return this._secretStorage.addKey(e,t,r)},F.prototype.hasSecretStorageKey=function(e){return this._secretStorage.hasKey(e)},F.prototype.getSecretStorageKey=function(e){return this._secretStorage.getKey(e)},F.prototype.storeSecret=function(e,t,r){return this._secretStorage.store(e,t,r)},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.checkSecretStorageKey=function(e,t){return this._secretStorage.checkKey(e,t)},F.prototype.checkSecretStoragePrivateKey=function(e,r){var n=null;try{return(n=new t.Olm.PkDecryption).init_with_private_key(e)===r}finally{n&&n.free()}},F.prototype.getSessionBackupPrivateKey=(0,l.default)(c.default.mark((function e(){var t,r,i,o=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new Promise((function(e){o._cryptoStore.doTxn("readonly",[R.IndexedDBCryptoStore.STORE_ACCOUNT],(function(t){o._cryptoStore.getSecretStorePrivateKey(t,e,"m.megolm_backup.v1")}))}));case 2:if(!(t=e.sent)||"string"!=typeof t){e.next=7;break}return t=new Uint8Array(m.decodeBase64(G(t)||t)),e.next=7,this.storeSessionBackupPrivateKey(t);case 7:if(!t||!t.ciphertext){e.next=13;break}return r=n.from(this._olmDevice._pickleKey),e.next=11,(0,K.decryptAES)(t,r,"m.megolm_backup.v1");case 11:i=e.sent,t=m.decodeBase64(i);case 13:return e.abrupt("return",t);case 14:case"end":return e.stop()}}),e,this)}))),F.prototype.storeSessionBackupPrivateKey=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,i=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array){e.next=2;break}throw new Error("storeSessionBackupPrivateKey expects Uint8Array, got ".concat(t));case 2:return r=n.from(this._olmDevice._pickleKey),e.next=5,(0,K.encryptAES)(m.encodeBase64(t),r,"m.megolm_backup.v1");case 5:return t=e.sent,e.abrupt("return",this._cryptoStore.doTxn("readwrite",[R.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){i._cryptoStore.storeSecretStorePrivateKey(e,"m.megolm_backup.v1",t)})));case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.checkCrossSigningPrivateKey=function(e,r){var n=null;try{return(n=new t.Olm.PkSigning).init_with_seed(e)===r}finally{n&&n.free()}},F.prototype._afterCrossSigningLocalKeyChange=(0,l.default)(c.default.mark((function e(){var t,r,n,i,o,s,a,l,f,h,p,g,y,m,_=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return v.logger.info("Starting cross-signing key change post-processing"),t=this._deviceList.getStoredDevice(this._userId,this._deviceId),e.next=4,this._crossSigningInfo.signDevice(this._userId,t);case 4:if(r=e.sent,v.logger.info("Starting background key sig upload for ".concat(this._deviceId)),function e(t){var n=t.shouldEmit;return _._baseApis.uploadKeySignatures((0,d.default)({},_._userId,(0,d.default)({},_._deviceId,r))).then((function(t){var r=(t||{}).failures;if(Object.keys(r||[]).length>0)throw n&&_._baseApis.emit("crypto.keySignatureUploadFailure",r,"_afterCrossSigningLocalKeyChange",e),new U.KeySignatureUploadError("Key upload failed",{failures:r});v.logger.info("Finished background key sig upload for ".concat(_._deviceId))})).catch((function(e){v.logger.error("Error during background key sig upload for ".concat(_._deviceId),e)}))}({shouldEmit:!0}),!(n=this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications)){e.next=53;break}v.logger.info("Starting device verification upgrade"),i={},o=0,s=Object.entries(this._deviceList._crossSigningInfo);case 13:if(!(o<s.length)){e.next=22;break}return a=(0,u.default)(s[o],2),l=a[0],f=a[1],e.next=17,this._checkForDeviceVerificationUpgrade(l,S.CrossSigningInfo.fromStorage(f,l));case 17:(h=e.sent)&&(i[l]=h);case 19:o++,e.next=13;break;case 22:if(!(Object.keys(i).length>0)){e.next=52;break}return v.logger.info("Found ".concat(Object.keys(i).length," verif users to upgrade")),e.prev=24,e.next=27,n({users:i});case 27:if(!(p=e.sent)){e.next=47;break}g=q(p),e.prev=30,g.s();case 32:if((y=g.n()).done){e.next=39;break}if(!((m=y.value)in i)){e.next=37;break}return e.next=37,this._baseApis.setDeviceVerified(m,i[m].crossSigningInfo.getId());case 37:e.next=32;break;case 39:e.next=44;break;case 41:e.prev=41,e.t0=e.catch(30),g.e(e.t0);case 44:return e.prev=44,g.f(),e.finish(44);case 47:e.next=52;break;case 49:e.prev=49,e.t1=e.catch(24),v.logger.log("shouldUpgradeDeviceVerifications threw an error: not upgrading",e.t1);case 52:v.logger.info("Finished device verification upgrade");case 53:v.logger.info("Finished cross-signing key change post-processing");case 54:case"end":return e.stop()}}),e,this,[[24,49],[30,41,44,47]])}))),F.prototype._checkForDeviceVerificationUpgrade=function(){var e=(0,l.default)(c.default.mark((function e(t,r){var n,i,o;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=this._crossSigningInfo.checkUserTrust(r),!r.firstUse||n.verified){e.next=8;break}return i=this._deviceList.getRawStoredDevicesForUser(t),e.next=5,this._checkForValidDeviceSignature(t,r.keys.master,i);case 5:if(!(o=e.sent).length){e.next=8;break}return e.abrupt("return",{devices:o.map((function(e){return b.DeviceInfo.fromStorage(i[e],e)})),crossSigningInfo:r});case 8:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),F.prototype._checkForValidDeviceSignature=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n){var i,o,s,a,l,d,f;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=[],!(n&&r.signatures&&r.signatures[t])){e.next=18;break}o=0,s=Object.keys(r.signatures[t]);case 3:if(!(o<s.length)){e.next=18;break}if(a=s[o],l=a.split(":",2),d=(0,u.default)(l,2),!((f=d[1])in n)||n[f].verified!==B.VERIFIED){e.next=15;break}return e.prev=7,e.next=10,m.verifySignature(this._olmDevice,r,t,f,n[f].keys[a]);case 10:i.push(f),e.next=15;break;case 13:e.prev=13,e.t0=e.catch(7);case 15:o++,e.next=3;break;case 18:return e.abrupt("return",i);case 19:case"end":return e.stop()}}),e,this,[[7,13]])})));return function(t,r,n){return e.apply(this,arguments)}}(),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){var t=this._deviceList.getStoredCrossSigningForUser(e);return t?this._crossSigningInfo.checkUserTrust(t):new S.UserTrustLevel(!1,!1,!1)},F.prototype.checkDeviceTrust=function(e,t){var r=this._deviceList.getStoredDevice(e,t);return this._checkDeviceInfoTrust(e,r)},F.prototype._checkDeviceInfoTrust=function(e,t){var r=!(!t||!t.isVerified()),n=this._deviceList.getStoredCrossSigningForUser(e);if(t&&n){var i=this._trustCrossSignedDevices||e===this._userId;return this._crossSigningInfo.checkDeviceTrust(n,t,r,i)}return new S.DeviceTrustLevel(!1,!1,r,!1)},F.prototype._onDeviceListUserCrossSigningUpdated=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==this._userId){e.next=15;break}if(r=this._deviceList.getStoredCrossSigningForUser(t),n=r?r.getId():null,i=this._crossSigningInfo.getId(),o=i!==n,!i||!n||o){e.next=10;break}return e.next=8,this.checkOwnCrossSigningTrust();case 8:e.next=13;break;case 10:this._storeTrustedSelfKeys(null),this.emit("crossSigning.keysChanged",{}),this.emit("userTrustStatusChanged",this._userId,this.checkUserTrust(t));case 13:e.next=20;break;case 15:return e.next=17,this._checkDeviceVerifications(t);case 17:(s=this._deviceList.getStoredCrossSigningForUser(t))&&(s.updateCrossSigningVerifiedBefore(this.checkUserTrust(t).isCrossSigningVerified()),this._deviceList.setRawStoredCrossSigningForUser(t,s.toStorage())),this.emit("userTrustStatusChanged",t,this.checkUserTrust(t));case 20:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.checkOwnCrossSigningTrust=(0,l.default)(c.default.mark((function e(){var t,r,n,i,o,s,a,u,l,f,h,p,g,y,m,_,b,k,S,E,w=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._userId,e.next=3,this.downloadKeys([this._userId]);case 3:if(r=this._deviceList.getStoredCrossSigningForUser(t)){e.next=7;break}return v.logger.error("Got cross-signing update event for user "+t+" but no new cross-signing information found!"),e.abrupt("return");case 7:if(n=r.getId(),!(i=this._crossSigningInfo.getId()!==n)){e.next=27;break}return v.logger.info("Got new master public key",n),v.logger.info("Attempting to retrieve cross-signing master private key"),o=null,e.prev=13,e.next=16,this._crossSigningInfo.getCrossSigningKey("master",n);case 16:s=e.sent,o=s[1],v.logger.info("Got cross-signing master private key"),e.next=24;break;case 21:e.prev=21,e.t0=e.catch(13),v.logger.error("Cross-signing master private key not available",e.t0);case 24:return e.prev=24,o&&o.free(),e.finish(24);case 27:if(a=this._crossSigningInfo.getId("self_signing"),u=this._crossSigningInfo.getId("user_signing"),this._storeTrustedSelfKeys(r.keys),l=a!==r.getId("self_signing"),f=u!==r.getId("user_signing"),h={},!l){e.next=56;break}return v.logger.info("Got new self-signing key",r.getId("self_signing")),v.logger.info("Attempting to retrieve cross-signing self-signing private key"),p=null,e.prev=37,e.next=40,this._crossSigningInfo.getCrossSigningKey("self_signing",r.getId("self_signing"));case 40:g=e.sent,p=g[1],v.logger.info("Got cross-signing self-signing private key"),e.next=48;break;case 45:e.prev=45,e.t1=e.catch(37),v.logger.error("Cross-signing self-signing private key not available",e.t1);case 48:return e.prev=48,p&&p.free(),e.finish(48);case 51:return y=this._deviceList.getStoredDevice(this._userId,this._deviceId),e.next=54,this._crossSigningInfo.signDevice(this._userId,y);case 54:m=e.sent,h[this._deviceId]=m;case 56:if(!f){e.next=74;break}return v.logger.info("Got new user-signing key",r.getId("user_signing")),v.logger.info("Attempting to retrieve cross-signing user-signing private key"),_=null,e.prev=60,e.next=63,this._crossSigningInfo.getCrossSigningKey("user_signing",r.getId("user_signing"));case 63:b=e.sent,_=b[1],v.logger.info("Got cross-signing user-signing private key"),e.next=71;break;case 68:e.prev=68,e.t2=e.catch(60),v.logger.error("Cross-signing user-signing private key not available",e.t2);case 71:return e.prev=71,_&&_.free(),e.finish(71);case 74:if(!i){e.next=80;break}return k=this._crossSigningInfo.keys.master,e.next=78,this._signObject(k);case 78:S=k.signatures[this._userId]["ed25519:"+this._deviceId],h[this._crossSigningInfo.getId()]=Object.assign({},k,{signatures:(0,d.default)({},this._userId,(0,d.default)({},"ed25519:"+this._deviceId,S))});case 80:if((E=Object.keys(h)).length&&function e(t){var r=t.shouldEmit;return v.logger.info("Starting background key sig upload for ".concat(E)),w._baseApis.uploadKeySignatures((0,d.default)({},w._userId,h)).then((function(t){var n=(t||{}).failures;if(v.logger.info("Finished background key sig upload for ".concat(E)),Object.keys(n||[]).length>0)throw r&&w._baseApis.emit("crypto.keySignatureUploadFailure",n,"checkOwnCrossSigningTrust",e),new U.KeySignatureUploadError("Key upload failed",{failures:n})})).catch((function(e){v.logger.error("Error during background key sig upload for ".concat(E),e)}))}({shouldEmit:!0}),this.emit("userTrustStatusChanged",t,this.checkUserTrust(t)),!i){e.next=87;break}return this._baseApis.emit("crossSigning.keysChanged",{}),e.next=87,this._afterCrossSigningLocalKeyChange();case 87:return e.next=89,this.checkKeyBackup();case 89:case"end":return e.stop()}}),e,this,[[13,21,24,27],[37,45,48,51],[60,68,71,74]])}))),F.prototype._storeTrustedSelfKeys=function(){var e=(0,l.default)(c.default.mark((function e(t){var r=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t?this._crossSigningInfo.setKeys(t):this._crossSigningInfo.clearKeys(),e.next=3,this._cryptoStore.doTxn("readwrite",[R.IndexedDBCryptoStore.STORE_ACCOUNT],(function(e){r._cryptoStore.storeCrossSigningKeys(e,r._crossSigningInfo.keys)}));case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._checkDeviceVerifications=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._baseApis._cryptoCallbacks.shouldUpgradeDeviceVerifications){e.next=3;break}return e.abrupt("return");case 3:if(v.logger.info("Starting device verification upgrade for ".concat(t)),!this._crossSigningInfo.keys.user_signing){e.next=17;break}if(!(n=this._deviceList.getStoredCrossSigningForUser(t))){e.next=17;break}return e.next=9,this._checkForDeviceVerificationUpgrade(t,n);case 9:if(!(i=e.sent)){e.next=17;break}return e.next=13,r({users:(0,d.default)({},t,i)});case 13:if(!e.sent.includes(t)){e.next=17;break}return e.next=17,this._baseApis.setDeviceVerified(t,n.getId());case 17:v.logger.info("Finished device verification upgrade for ".concat(t));case 18:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._checkAndStartKeyBackup=(0,l.default)(c.default.mark((function e(){var t,r;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(v.logger.log("Checking key backup status..."),!this._baseApis.isGuest()){e.next=5;break}return v.logger.log("Skipping key backup check since user is guest"),this._checkedForBackup=!0,e.abrupt("return",null);case 5:return e.prev=5,e.next=8,this._baseApis.getKeyBackupVersion();case 8:t=e.sent,e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(5),v.logger.log("Error checking for active key backup",e.t0),404===e.t0.httpStatus&&(this._checkedForBackup=!0),e.abrupt("return",null);case 16:return this._checkedForBackup=!0,e.next=19,this.isKeyBackupTrusted(t);case 19:if(!(r=e.sent).usable||this.backupInfo){e.next=25;break}v.logger.log("Found usable key backup v"+t.version+": enabling key backups"),this._baseApis.enableKeyBackup(t),e.next=44;break;case 25:if(r.usable||!this.backupInfo){e.next=30;break}v.logger.log("No usable key backup: disabling key backup"),this._baseApis.disableKeyBackup(),e.next=44;break;case 30:if(r.usable||this.backupInfo){e.next=34;break}v.logger.log("No usable key backup: not enabling key backup"),e.next=44;break;case 34:if(!r.usable||!this.backupInfo){e.next=44;break}if(t.version===this.backupInfo.version){e.next=43;break}return v.logger.log("On backup version "+this.backupInfo.version+" but found version "+t.version+": switching."),this._baseApis.disableKeyBackup(),this._baseApis.enableKeyBackup(t),e.next=41,this.scheduleAllGroupSessionsForBackup();case 41:e.next=44;break;case 43:v.logger.log("Backup version "+t.version+" still current");case 44:return e.abrupt("return",{backupInfo:t,trustInfo:r});case 45:case"end":return e.stop()}}),e,this,[[5,11]])}))),F.prototype.setTrustedBackupPubKey=function(){var e=(0,l.default)(c.default.mark((function e(t){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._sessionStore.setLocalTrustedBackupPubKey(t),e.next=3,this.checkKeyBackup();case 3:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.checkKeyBackup=(0,l.default)(c.default.mark((function e(){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return this._checkedForBackup=!1,e.abrupt("return",this._checkAndStartKeyBackup());case 2:case"end":return e.stop()}}),e,this)}))),F.prototype.isKeyBackupTrusted=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a,u,l,d,f;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r={usable:!1,trusted_locally:!1,sigs:[]},t&&t.algorithm&&t.auth_data&&t.auth_data.public_key&&t.auth_data.signatures){e.next=4;break}return v.logger.info("Key backup is absent or missing required data"),e.abrupt("return",r);case 4:n=this._sessionStore.getLocalTrustedBackupPubKey(),t.auth_data.public_key===n&&(v.logger.info("Backup public key "+n+" is trusted locally"),r.trusted_locally=!0),i=t.auth_data.signatures[this._userId]||[],o=0,s=Object.keys(i);case 8:if(!(o<s.length)){e.next=54;break}if(a=s[o],"ed25519"===(u=a.split(":"))[0]){e.next=14;break}return v.logger.log("Ignoring unknown signature type: "+u[0]),e.abrupt("continue",51);case 14:if(l={deviceId:u[1]},(d=this._crossSigningInfo.getId())!==l.deviceId){e.next=30;break}return l.crossSigningId=!0,e.prev=18,e.next=21,m.verifySignature(this._olmDevice,t.auth_data,this._userId,l.deviceId,d);case 21:l.valid=!0,e.next=28;break;case 24:e.prev=24,e.t0=e.catch(18),v.logger.warning("Bad signature from cross signing key "+d,e.t0),l.valid=!1;case 28:return r.sigs.push(l),e.abrupt("continue",51);case 30:if(!(f=this._deviceList.getStoredDevice(this._userId,l.deviceId))){e.next=48;break}return l.device=f,e.next=35,this.checkDeviceTrust(this._userId,l.deviceId);case 35:return l.deviceTrust=e.sent,e.prev=36,e.next=39,m.verifySignature(this._olmDevice,t.auth_data,this._userId,f.deviceId,f.getFingerprint());case 39:l.valid=!0,e.next=46;break;case 42:e.prev=42,e.t1=e.catch(36),v.logger.info("Bad signature from key ID "+a+" userID "+this._userId+" device ID "+f.deviceId+" fingerprint: "+f.getFingerprint(),t.auth_data,e.t1),l.valid=!1;case 46:e.next=50;break;case 48:l.valid=null,v.logger.info("Ignoring signature from unknown key "+a);case 50:r.sigs.push(l);case 51:o++,e.next=8;break;case 54:return r.usable=r.sigs.some((function(e){return e.valid&&(e.device&&e.deviceTrust.isVerified()||e.crossSigningId)})),r.usable|=r.trusted_locally,e.abrupt("return",r);case 57:case"end":return e.stop()}}),e,this,[[18,24],[36,42]])})));return function(t){return e.apply(this,arguments)}}(),F.prototype.enableLazyLoading=function(){this._lazyLoadMembers=!0},F.prototype.registerEventHandlers=function(e){var t=this;e.on("RoomMember.membership",(function(e,r,n){try{t._onRoomMembership(e,r,n)}catch(e){v.logger.error("Error handling membership change:",e)}})),e.on("toDeviceEvent",t._onToDeviceEvent.bind(t));var r=t._onTimelineEvent.bind(t);e.on("Room.timeline",r),e.on("Event.decrypted",r)},F.prototype.start=function(){this._outgoingRoomKeyRequestManager.start()},F.prototype.stop=function(){this._outgoingRoomKeyRequestManager.stop(),this._deviceList.stop()},F.getOlmVersion=function(){return y.OlmDevice.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(){var e=this,t=e._userId,r=e._deviceId,n={algorithms:e._supportedAlgorithms,device_id:r,keys:e._deviceKeys,user_id:t};return e._signObject(n).then((function(){return e._baseApis.uploadKeysRequest({device_keys:n})}))},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=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n,i,o){var s,a,u,f,h,p,g,y,m,_,k=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===n&&(n=null),void 0===i&&(i=null),void 0===o&&(o=null),!(s=this._deviceList.getStoredCrossSigningForUser(t))||s.getId()!==r){e.next=23;break}if(null===i&&null===o){e.next=7;break}throw new Error("Cannot set blocked or known for a cross-signing key");case 7:if(n){e.next=9;break}throw new Error("Cannot set a cross-signing key as unverified");case 9:if(this._crossSigningInfo.getId()||t!==this._crossSigningInfo.userId||(this._storeTrustedSelfKeys(s.keys),this.emit("userTrustStatusChanged",this._userId,this.checkUserTrust(t))),t===this._userId){e.next=22;break}return v.logger.info("Master key "+s.getId()+" for "+t+" marked verified. Signing..."),e.next=14,this._crossSigningInfo.signUser(s);case 14:if(!(a=e.sent)){e.next=19;break}return u=function(){var e=(0,l.default)(c.default.mark((function e(n){var i,o,s;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.shouldEmit,v.logger.info("Uploading signature for "+t+"..."),e.next=4,k._baseApis.uploadKeySignatures((0,d.default)({},t,(0,d.default)({},r,a)));case 4:if(o=e.sent,s=(o||{}).failures,!(Object.keys(s||[]).length>0)){e.next=9;break}throw i&&k._baseApis.emit("crypto.keySignatureUploadFailure",s,"setDeviceVerification",u),new U.KeySignatureUploadError("Key upload failed",{failures:s});case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=19,u({shouldEmit:!0});case 19:return e.abrupt("return",a);case 22:return e.abrupt("return",s);case 23:if((f=this._deviceList.getRawStoredDevicesForUser(t))&&f[r]){e.next=26;break}throw new Error("Unknown device "+t+":"+r);case 26:if(h=f[r],p=h.verified,n?p=B.VERIFIED:null!==n&&p==B.VERIFIED&&(p=B.UNVERIFIED),i?p=B.BLOCKED:null!==i&&p==B.BLOCKED&&(p=B.UNVERIFIED),g=h.known,null!==o&&(g=o),h.verified===p&&h.known===g||(h.verified=p,h.known=g,this._deviceList.storeDevicesForUser(t,f),this._deviceList.saveIfDirty()),!n||t!==this._userId){e.next=47;break}if(v.logger.info("Own device "+r+" marked verified: signing"),!this.checkDeviceTrust(t,r).isCrossSigningVerified()){e.next=40;break}v.logger.log("Own device ".concat(r," already cross-signing verified")),e.next=43;break;case 40:return e.next=42,this._crossSigningInfo.signDevice(t,b.DeviceInfo.fromStorage(h,r));case 42:y=e.sent;case 43:if(!y){e.next=47;break}return m=function(){var e=(0,l.default)(c.default.mark((function e(n){var i,o,s;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.shouldEmit,v.logger.info("Uploading signature for "+r),e.next=4,k._baseApis.uploadKeySignatures((0,d.default)({},t,(0,d.default)({},r,y)));case 4:if(o=e.sent,s=(o||{}).failures,!(Object.keys(s||[]).length>0)){e.next=9;break}throw i&&k._baseApis.emit("crypto.keySignatureUploadFailure",s,"setDeviceVerification",m),new U.KeySignatureUploadError("Key upload failed",{failures:s});case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=47,m({shouldEmit:!0});case 47:return _=b.DeviceInfo.fromStorage(h,r),this.emit("deviceVerificationChanged",t,r,_),e.abrupt("return",_);case 50:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o){return e.apply(this,arguments)}}(),F.prototype.findVerificationRequestDMInProgress=function(e){return this._inRoomVerificationRequests.findRequestInProgress(e)},F.prototype.getVerificationRequestsToDeviceInProgress=function(e){return this._toDeviceVerificationRequests.getRequestsInProgress(e)},F.prototype.requestVerificationDM=function(e,t){var r=this._inRoomVerificationRequests.findRequestInProgress(t);if(r)return Promise.resolve(r);var n=new D.InRoomChannel(this._baseApis,t,e);return this._requestVerificationWithChannel(e,n,this._inRoomVerificationRequests)},F.prototype.requestVerification=function(e,t){t||(t=Object.keys(this._deviceList.getRawStoredDevicesForUser(e)));var r=this._toDeviceVerificationRequests.findRequestInProgress(e,t);if(r)return Promise.resolve(r);var n=new P.ToDeviceChannel(this._baseApis,e,t,P.ToDeviceChannel.makeTransactionId());return this._requestVerificationWithChannel(e,n,this._toDeviceVerificationRequests)},F.prototype._requestVerificationWithChannel=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n){var i,o;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new A.VerificationRequest(r,this._verificationMethods,this._baseApis),r.transactionId&&n.setRequestByChannel(r,i),e.next=4,i.sendRequest();case 4:return(o=n.getRequestByChannel(r))?i=o:(v.logger.log("Crypto: adding new request to "+"requestsByTxnId with id ".concat(r.transactionId," ").concat(r.roomId)),n.setRequestByChannel(r,i)),e.abrupt("return",i);case 7:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),F.prototype.beginKeyVerification=function(e,t,r){var n,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;if(i){if(!(n=this._toDeviceVerificationRequests.getRequestBySenderAndTxnId(t,i)))throw new Error("No request found for user ".concat(t," with ")+"transactionId ".concat(i))}else{i=P.ToDeviceChannel.makeTransactionId();var o=new P.ToDeviceChannel(this._baseApis,t,[r],i,r);n=new A.VerificationRequest(o,this._verificationMethods,this._baseApis),this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(t,i,n)}return n.beginKeyVerification(e,{userId:t,deviceId:r})},F.prototype.legacyDeviceVerification=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n){var i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=P.ToDeviceChannel.makeTransactionId(),o=new P.ToDeviceChannel(this._baseApis,t,[r],i,r),s=new A.VerificationRequest(o,this._verificationMethods,this._baseApis),this._toDeviceVerificationRequests.setRequestBySenderAndTxnId(t,i,s),a=s.beginKeyVerification(n,{userId:t,deviceId:r}),e.next=7,Promise.race([a.verify(),s.waitFor((function(e){return e.started}))]);case 7:return e.abrupt("return",s);case 8:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),F.prototype.getOlmSessionsForUser=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=this.getStoredDevicesForUser(t)||[],n={},i=0;case 3:if(!(i<r.length)){e.next=13;break}return o=r[i],s=o.getIdentityKey(),e.next=8,this._olmDevice.getSessionInfoForDevice(s);case 8:a=e.sent,n[o.deviceId]={deviceIdKey:s,sessions:a};case 10:++i,e.next=3;break;case 13:return e.abrupt("return",n);case 14:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.getEventSenderDeviceInfo=function(e){var t=e.getSenderKey(),r=e.getWireContent().algorithm;if(!t||!r)return null;if(e.getForwardingCurve25519KeyChain().length>0)return null;if(e.isKeySourceUntrusted())return null;var n=this._deviceList.getDeviceByIdentityKey(r,t);if(null===n)return null;var i=e.getClaimedEd25519Key();return i?i!==n.getFingerprint()?(v.logger.warn("Event "+e.getId()+" claims ed25519 key "+i+"but sender device has key "+n.getFingerprint()),null):n:(v.logger.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),null)},F.prototype.getEventEncryptionInfo=function(e){var t={};if(t.senderKey=e.getSenderKey(),t.algorithm=e.getWireContent().algorithm,!t.senderKey||!t.algorithm)return t.encrypted=!1,t;t.encrypted=!0,e.getForwardingCurve25519KeyChain().length>0||e.isKeySourceUntrusted()?t.authenticated=!1:t.authenticated=!0,t.sender=this._deviceList.getDeviceByIdentityKey(t.algorithm,t.senderKey);var r=e.getClaimedEd25519Key();return r||(v.logger.warn("Event "+e.getId()+" claims no ed25519 key: cannot verify sending device"),t.mismatchedSender=!0),t.sender&&r!==t.sender.getFingerprint()&&(v.logger.warn("Event "+e.getId()+" claims ed25519 key "+r+"but sender device has key "+t.sender.getFingerprint()),t.mismatchedSender=!0),t},F.prototype.forceDiscardSession=function(e){var 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=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n){var i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.algorithm){e.next=3;break}return v.logger.log("Ignoring setRoomEncryption with no algorithm"),e.abrupt("return");case 3:if(!(i=this._roomList.getRoomEncryption(t))){e.next=8;break}if(JSON.stringify(i)==JSON.stringify(r)){e.next=8;break}return v.logger.error("Ignoring m.room.encryption event which requests a change of config in "+t),e.abrupt("return");case 8:if(!this._roomEncryptors[t]){e.next=11;break}return e.abrupt("return");case 11:if(o=null,i||(o=this._roomList.setRoomEncryption(t,r)),s=k.ENCRYPTION_CLASSES[r.algorithm]){e.next=16;break}throw new Error("Unable to encrypt with "+r.algorithm);case 16:if(a=new s({userId:this._userId,deviceId:this._deviceId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:t,config:r}),this._roomEncryptors[t]=a,!o){e.next=21;break}return e.next=21,o;case 21:if(this._lazyLoadMembers){e.next=28;break}return v.logger.log("Enabling encryption in "+t+"; starting to track device lists for all users therein"),e.next=25,this.trackRoomDevices(t);case 25:this.inhibitDeviceQuery||this._deviceList.refreshOutdatedDeviceLists(),e.next=29;break;case 28:v.logger.log("Enabling encryption in "+t);case 29:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),F.prototype.trackRoomDevices=function(e){var t=this,r=function(){var r=(0,l.default)(c.default.mark((function r(){var n;return c.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(t._roomEncryptors[e]){r.next=2;break}return r.abrupt("return");case 2:if(n=t._clientStore.getRoom(e)){r.next=5;break}throw new Error("Unable to start tracking devices in unknown room ".concat(e));case 5:return v.logger.log("Starting to track devices for room ".concat(e," ...")),r.next=8,n.getEncryptionTargetMembers();case 8:r.sent.forEach((function(e){t._deviceList.startTrackingDeviceList(e.userId)}));case 10:case"end":return r.stop()}}),r)})));return function(){return r.apply(this,arguments)}}(),n=this._roomDeviceTrackingState[e];return n||(n=r(),this._roomDeviceTrackingState[e]=n),n},F.prototype.ensureOlmSessionsForUsers=function(e){for(var t={},r=0;r<e.length;++r){var n=e[r];t[n]=[];for(var i=this.getStoredDevicesForUser(n)||[],o=0;o<i.length;++o){var s=i[o];s.getIdentityKey()!=this._olmDevice.deviceCurve25519Key&&(s.verified!=B.BLOCKED&&t[n].push(s))}}return m.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,t)},F.prototype.exportRoomKeys=(0,l.default)(c.default.mark((function e(){var t,r=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=[],e.next=3,this._cryptoStore.doTxn("readonly",[R.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS],(function(e){r._cryptoStore.getAllEndToEndInboundGroupSessions(e,(function(e){if(null!==e){var n=r._olmDevice.exportInboundGroupSession(e.senderKey,e.sessionId,e.sessionData);delete n.first_known_index,n.algorithm=m.MEGOLM_ALGORITHM,t.push(n)}}))}));case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}}),e,this)}))),F.prototype.importRoomKeys=function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=0,i=0,o=e.length;function s(){r.progressCallback({stage:"load_keys",successes:n,failures:i,total:o})}return Promise.all(e.map((function(e){return e.room_id&&e.algorithm?t._getRoomDecryptor(e.room_id,e.algorithm).importRoomKey(e,r).finally((function(e){n++,r.progressCallback&&s()})):(v.logger.warn("ignoring room key entry with missing fields",e),i++,r.progressCallback&&s(),null)})))},F.prototype.scheduleKeyBackupSend=(0,l.default)(c.default.mark((function e(){var t,r,n,i=arguments;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=i.length>0&&void 0!==i[0]?i[0]:1e4,!this._sendingBackups){e.next=3;break}return e.abrupt("return");case 3:return this._sendingBackups=!0,e.prev=4,r=Math.random()*t,e.next=8,(0,g.sleep)(r);case 8:n=0;case 9:if(this.backupKey){e.next=12;break}return e.abrupt("return");case 12:return e.prev=12,e.next=15,this._backupPendingKeys(200);case 15:if(0!==e.sent){e.next=18;break}return e.abrupt("return");case 18:n=0,e.next=31;break;case 21:if(e.prev=21,e.t0=e.catch(12),n++,v.logger.log("Key backup request failed",e.t0),!e.t0.data){e.next=31;break}if("M_NOT_FOUND"!=e.t0.data.errcode&&"M_WRONG_ROOM_KEYS_VERSION"!=e.t0.data.errcode){e.next=31;break}return e.next=29,this.checkKeyBackup();case 29:throw this.emit("crypto.keyBackupFailed",e.t0.data.errcode),e.t0;case 31:if(!n){e.next=34;break}return e.next=34,(0,g.sleep)(1e3*Math.pow(2,Math.min(n-1,4)));case 34:e.next=9;break;case 36:return e.prev=36,this._sendingBackups=!1,e.finish(36);case 39:case"end":return e.stop()}}),e,this,[[4,,36,39],[12,21]])}))),F.prototype._backupPendingKeys=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a,u,l,d,f,h,p,v,g;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.getSessionsNeedingBackup(t);case 2:if((r=e.sent).length){e.next=5;break}return e.abrupt("return",0);case 5:return e.next=7,this._cryptoStore.countSessionsNeedingBackup();case 7:n=e.sent,this.emit("crypto.keyBackupSessionsRemaining",n),i={},o=q(r),e.prev=11,o.s();case 13:if((s=o.n()).done){e.next=33;break}return a=s.value,u=a.sessionData.room_id,void 0===i[u]&&(i[u]={sessions:{}}),e.next=19,this._olmDevice.exportInboundGroupSession(a.senderKey,a.sessionId,a.sessionData);case 19:(l=e.sent).algorithm=m.MEGOLM_ALGORITHM,delete l.session_id,delete l.room_id,d=l.first_known_index,delete l.first_known_index,f=this.backupKey.encrypt(JSON.stringify(l)),h=(l.forwarding_curve25519_key_chain||[]).length,p=this._deviceList.getUserByIdentityKey(m.MEGOLM_ALGORITHM,a.senderKey),v=this._deviceList.getDeviceByIdentityKey(m.MEGOLM_ALGORITHM,a.senderKey),g=this._checkDeviceInfoTrust(p,v).isVerified(),i[u].sessions[a.sessionId]={first_message_index:d,forwarded_count:h,is_verified:g,session_data:f};case 31:e.next=13;break;case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(11),o.e(e.t0);case 38:return e.prev=38,o.f(),e.finish(38);case 41:return e.next=43,this._baseApis.sendKeyBackup(void 0,void 0,this.backupInfo.version,{rooms:i});case 43:return e.next=45,this._cryptoStore.unmarkSessionsNeedingBackup(r);case 45:return e.next=47,this._cryptoStore.countSessionsNeedingBackup();case 47:return n=e.sent,this.emit("crypto.keyBackupSessionsRemaining",n),e.abrupt("return",r.length);case 50:case"end":return e.stop()}}),e,this,[[11,35,38,41]])})));return function(t){return e.apply(this,arguments)}}(),F.prototype.backupGroupSession=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n,i,o,s,a){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.backupInfo){e.next=2;break}throw new Error("Key backups are not enabled");case 2:return e.next=4,this._cryptoStore.markSessionsNeedingBackup([{senderKey:r,sessionId:i}]);case 4:this.scheduleKeyBackupSend();case 5:case"end":return e.stop()}}),e,this)})));return function(t,r,n,i,o,s,a){return e.apply(this,arguments)}}(),F.prototype.scheduleAllGroupSessionsForBackup=(0,l.default)(c.default.mark((function e(){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.flagAllGroupSessionsForBackup();case 2:this.scheduleKeyBackupSend(0);case 3:case"end":return e.stop()}}),e,this)}))),F.prototype.flagAllGroupSessionsForBackup=(0,l.default)(c.default.mark((function e(){var t,r=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._cryptoStore.doTxn("readwrite",[R.IndexedDBCryptoStore.STORE_INBOUND_GROUP_SESSIONS,R.IndexedDBCryptoStore.STORE_BACKUP],(function(e){r._cryptoStore.getAllEndToEndInboundGroupSessions(e,(function(t){null!==t&&r._cryptoStore.markSessionsNeedingBackup([t],e)}))}));case 2:return e.next=4,this._cryptoStore.countSessionsNeedingBackup();case 4:return t=e.sent,this.emit("crypto.keyBackupSessionsRemaining",t),e.abrupt("return",t);case 7:case"end":return e.stop()}}),e,this)}))),F.prototype.countSessionsNeedingBackup=function(){return this._cryptoStore.countSessionsNeedingBackup()},F.prototype.prepareToEncrypt=function(e){var t=e.roomId,r=this._roomEncryptors[t];r&&r.prepareToEncrypt(e)},F.prototype.encryptEvent=function(){var e=(0,l.default)(c.default.mark((function e(t,r){var n,i,o,s,a;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r){e.next=2;break}throw new Error("Cannot send encrypted messages in unknown rooms");case 2:if(n=t.getRoomId(),i=this._roomEncryptors[n]){e.next=6;break}throw new Error("Room was previously configured to use encryption, but is no longer. Perhaps the homeserver is hiding the configuration event.");case 6:return this._roomDeviceTrackingState[n]||this.trackRoomDevices(n),e.next=9,this._roomDeviceTrackingState[n];case 9:return o=t.getContent(),(s=o["m.relates_to"])&&delete(o=Object.assign({},o))["m.relates_to"],e.next=14,i.encryptMessage(r,t.getType(),o);case 14:a=e.sent,s&&(a["m.relates_to"]=s),t.makeEncrypted("m.room.encrypted",a,this._olmDevice.deviceCurve25519Key,this._olmDevice.deviceEd25519Key);case 17:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),F.prototype.decryptEvent=function(e){if(e.isRedacted())return Promise.resolve({clearEvent:{room_id:e.getRoomId(),type:"m.room.message",content:{}}});var t=e.getWireContent();return this._getRoomDecryptor(e.getRoomId(),t.algorithm).decryptEvent(e)},F.prototype.handleDeviceListChanges=function(){var e=(0,l.default)(c.default.mark((function e(t,r){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.oldSyncToken){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,this._evalDeviceListChanges(r);case 4:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),F.prototype.requestRoomKey=function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return this._outgoingRoomKeyRequestManager.queueRoomKeyRequest(e,t,n).then((function(){r._sendKeyRequestsImmediately&&r._outgoingRoomKeyRequestManager.sendQueuedRequests()})).catch((function(e){v.logger.error("Error requesting key for event",e)}))},F.prototype.cancelRoomKeyRequest=function(e){this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(e).catch((function(e){v.logger.warn("Error clearing pending room key requests",e)}))},F.prototype.cancelAndResendAllOutgoingKeyRequests=function(){return this._outgoingRoomKeyRequestManager.cancelAndResendAllOutgoingRequests()},F.prototype.onCryptoEvent=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.getRoomId(),n=t.getContent(),e.prev=2,e.next=5,this.setRoomEncryption(r,n,!0);case 5:e.next=10;break;case 7:e.prev=7,e.t0=e.catch(2),v.logger.error("Error configuring encryption in room "+r+":",e.t0);case 10:case"end":return e.stop()}}),e,this,[[2,7]])})));return function(t){return e.apply(this,arguments)}}(),F.prototype.onSyncWillProcess=function(){var e=(0,l.default)(c.default.mark((function e(t){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.oldSyncToken||(v.logger.log("Initial sync performed - resetting device tracking state"),this._deviceList.stopTrackingAllDeviceLists(),this._deviceList.startTrackingDeviceList(this._userId),this._roomDeviceTrackingState={}),this._sendKeyRequestsImmediately=!1;case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype.onSyncCompleted=function(){var e=(0,l.default)(c.default.mark((function e(t){var r;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=t.nextSyncToken,this._deviceList.setSyncToken(t.nextSyncToken),this._deviceList.saveIfDirty(),this._deviceList.lastKnownSyncToken=r,this._deviceList.startTrackingDeviceList(this._userId),this._deviceList.refreshOutdatedDeviceLists(),t.catchingUp||(V(this),this._processReceivedRoomKeyRequests(),this._outgoingRoomKeyRequestManager.sendQueuedRequests(),this._sendKeyRequestsImmediately=!0);case 7:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._evalDeviceListChanges=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.changed&&Array.isArray(t.changed)&&t.changed.forEach((function(e){n._deviceList.invalidateUserDeviceList(e)})),!(t.left&&Array.isArray(t.left)&&t.left.length)){e.next=8;break}return e.t0=Set,e.next=5,this._getTrackedE2eUsers();case 5:e.t1=e.sent,r=new e.t0(e.t1),t.left.forEach((function(e){r.has(e)||n._deviceList.stopTrackingDeviceList(e)}));case 8:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._getTrackedE2eUsers=(0,l.default)(c.default.mark((function e(){var t,r,n,i,o,s,a,u;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=[],r=q(this._getTrackedE2eRooms()),e.prev=2,r.s();case 4:if((n=r.n()).done){e.next=13;break}return i=n.value,e.next=8,i.getEncryptionTargetMembers();case 8:o=e.sent,s=q(o);try{for(s.s();!(a=s.n()).done;)u=a.value,t.push(u.userId)}catch(e){s.e(e)}finally{s.f()}case 11:e.next=4;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(2),r.e(e.t0);case 18:return e.prev=18,r.f(),e.finish(18);case 21:return e.abrupt("return",t);case 22:case"end":return e.stop()}}),e,this,[[2,15,18,21]])}))),F.prototype._getTrackedE2eRooms=function(){var e=this;return this._clientStore.getRooms().filter((function(t){if(!e._roomEncryptors[t.roomId])return!1;if(!e._roomDeviceTrackingState[t.roomId])return!1;var r=t.getMyMembership();return"join"===r||"invite"===r}))},F.prototype._onToDeviceEvent=function(e){var t=this;try{v.logger.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",(function(e){t._onToDeviceEvent(e)}))}catch(e){v.logger.error("Error handling toDeviceEvent:",e)}},F.prototype._onRoomKeyEvent=function(e){var t=e.getContent();t.room_id&&t.algorithm?(this._checkedForBackup||this._checkAndStartKeyBackup(),this._getRoomDecryptor(t.room_id,t.algorithm).onRoomKeyEvent(e)):v.logger.error("key event is missing fields")},F.prototype._onRoomKeyWithheldEvent=function(e){var t=e.getContent();if(("m.no_olm"===t.code||t.room_id&&t.session_id)&&t.algorithm&&t.sender_key){v.logger.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,")"));var r=this._getRoomDecryptor(t.room_id,t.algorithm);if(r.onRoomKeyWithheldEvent&&r.onRoomKeyWithheldEvent(e),!t.room_id){var n,i=q(this._getRoomDecryptors(t.algorithm));try{for(i.s();!(n=i.n()).done;){n.value.retryDecryptionFromSender(t.sender_key)}}catch(e){i.e(e)}finally{i.f()}}}else v.logger.error("key withheld event is missing fields")},F.prototype._onKeyVerificationMessage=function(e){var t=this;if(P.ToDeviceChannel.validateEvent(e,this._baseApis)){this._handleVerificationEvent(e,this._toDeviceVerificationRequests,(function(e){if(P.ToDeviceChannel.canCreateRequest(P.ToDeviceChannel.getEventType(e))){var r=e.getContent(),n=r&&r.from_device;if(n){var i=e.getSender(),o=new P.ToDeviceChannel(t._baseApis,i,[n]);return new A.VerificationRequest(o,t._verificationMethods,t._baseApis)}}}))}},F.prototype._onTimelineEvent=function(e,t,r,n){var i=this,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},s=o.liveEvent;if(D.InRoomChannel.validateEvent(e,this._baseApis)){var a=function(e){var t=new D.InRoomChannel(i._baseApis,e.getRoomId());return new A.VerificationRequest(t,i._verificationMethods,i._baseApis)};this._handleVerificationEvent(e,this._inRoomVerificationRequests,a,s)}},F.prototype._handleVerificationEvent=function(){var e=(0,l.default)(c.default.mark((function e(t,r,n){var i,o,s,a=arguments;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=!(a.length>3&&void 0!==a[3])||a[3],o=r.getRequest(t),s=!1,o){e.next=10;break}if(o=n(t)){e.next=8;break}return v.logger.log("Crypto: could not find VerificationRequest for "+"".concat(t.getType(),", and could not create one, so ignoring.")),e.abrupt("return");case 8:s=!0,r.setRequest(t,o);case 10:return t.setVerificationRequest(o),e.prev=11,e.next=14,o.channel.handleEvent(t,o,i);case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(11),v.logger.error("error while handling verification event: "+e.t0.message);case 19:s&&!o.initiatedByMe&&!o.invalid&&!o.observeOnly&&this._baseApis.emit("crypto.verification.request",o);case 21:case"end":return e.stop()}}),e,this,[[11,16]])})));return function(t,r,n){return e.apply(this,arguments)}}(),F.prototype._onToDeviceBadEncrypted=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a,u,l,f,h,p,g,y,_=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.getWireContent(),n=t.getSender(),i=r.algorithm,o=r.sender_key,s=function(){var e,t=q(_._getRoomDecryptors(m.MEGOLM_ALGORITHM));try{for(t.s();!(e=t.n()).done;){e.value.retryDecryptionFromSender(o)}}catch(e){t.e(e)}finally{t.f()}},void 0!==n&&void 0!==o&&void 0!==o){e.next=7;break}return e.abrupt("return");case 7:if(this._lastNewSessionForced[n]=this._lastNewSessionForced[n]||{},!((a=this._lastNewSessionForced[n][o]||0)+36e5>Date.now())){e.next=15;break}return v.logger.debug("New session already forced with device "+n+":"+o+" at "+a+": not forcing another"),e.next=13,this._olmDevice.recordSessionProblem(o,"wedged",!0);case 13:return s(),e.abrupt("return");case 15:if(u=this._deviceList.getDeviceByIdentityKey(i,o)){e.next=26;break}return e.next=19,this.downloadKeys([n],!1);case 19:if(u=this._deviceList.getDeviceByIdentityKey(i,o)){e.next=26;break}return v.logger.info("Couldn't find device for identity key "+o+": not re-establishing session"),e.next=24,this._olmDevice.recordSessionProblem(o,"wedged",!1);case 24:return s(),e.abrupt("return");case 26:return(l={})[n]=[u],e.next=30,m.ensureOlmSessionsForDevices(this._olmDevice,this._baseApis,l,!0);case 30:return this._lastNewSessionForced[n][o]=Date.now(),f={algorithm:m.OLM_ALGORITHM,sender_key:this._olmDevice.deviceCurve25519Key,ciphertext:{}},e.next=34,m.encryptMessageForDevice(f.ciphertext,this._userId,this._deviceId,this._olmDevice,n,u,{type:"m.dummy"});case 34:return e.next=36,this._olmDevice.recordSessionProblem(o,"wedged",!0);case 36:return s(),e.next=39,this._baseApis.sendToDevice("m.room.encrypted",(0,d.default)({},n,(0,d.default)({},u.deviceId,f)));case 39:return e.next=41,this._outgoingRoomKeyRequestManager.getOutgoingSentRoomKeyRequest(n,u.deviceId);case 41:h=e.sent,p=q(h);try{for(p.s();!(g=p.n()).done;)y=g.value,this.requestRoomKey(y.requestBody,y.recipients,!0)}catch(e){p.e(e)}finally{p.f()}case 44:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._onRoomMembership=function(e,t,r){var n=t.roomId,i=this._roomEncryptors[n];i&&(this._roomDeviceTrackingState[n]&&("join"==t.membership?(v.logger.log("Join event for "+t.userId+" in "+n),this._deviceList.startTrackingDeviceList(t.userId)):"invite"==t.membership&&this._clientStore.getRoom(n).shouldEncryptForInvitedMembers()&&(v.logger.log("Invite event for "+t.userId+" in "+n),this._deviceList.startTrackingDeviceList(t.userId))),i.onRoomMembership(e,t,r))},F.prototype._onRoomKeyRequestEvent=function(e){var t=e.getContent();if("request"===t.action){var r=new $(e);this._receivedRoomKeyRequests.push(r)}else if("request_cancellation"===t.action){var n=new H(e);this._receivedRoomKeyRequestCancellations.push(n)}},F.prototype._processReceivedRoomKeyRequests=(0,l.default)(c.default.mark((function e(){var t,r,n=this;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._processingRoomKeyRequests){e.next=2;break}return e.abrupt("return");case 2:return this._processingRoomKeyRequests=!0,e.prev=3,t=this._receivedRoomKeyRequests,this._receivedRoomKeyRequests=[],r=this._receivedRoomKeyRequestCancellations,this._receivedRoomKeyRequestCancellations=[],e.next=10,Promise.all(t.map((function(e){return n._processReceivedRoomKeyRequest(e)})));case 10:return e.next=12,Promise.all(r.map((function(e){return n._processReceivedRoomKeyRequestCancellation(e)})));case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(3),v.logger.error("Error processing room key requsts: ".concat(e.t0));case 17:return e.prev=17,this._processingRoomKeyRequests=!1,e.finish(17);case 20:case"end":return e.stop()}}),e,this,[[3,14,17,20]])}))),F.prototype._processReceivedRoomKeyRequest=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n,i,o,s,a,u,l;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.userId,n=t.deviceId,i=t.requestBody,o=i.room_id,s=i.algorithm,v.logger.log("m.room_key_request from ".concat(r,":").concat(n)+" for ".concat(o," / ").concat(i.session_id," (id ").concat(t.requestId,")")),r===this._userId){e.next=24;break}if(this._roomEncryptors[o]){e.next=10;break}return v.logger.debug("room key request for unencrypted room ".concat(o)),e.abrupt("return");case 10:if(a=this._roomEncryptors[o],u=this._deviceList.getStoredDevice(r,n)){e.next=15;break}return v.logger.debug("Ignoring keyshare for unknown device ".concat(r,":").concat(n)),e.abrupt("return");case 15:return e.prev=15,e.next=18,a.reshareKeyWithDevice(i.sender_key,i.session_id,r,u);case 18:e.next=23;break;case 20:e.prev=20,e.t0=e.catch(15),v.logger.warn("Failed to re-share keys for session "+i.session_id+" with device "+r+":"+u.deviceId,e.t0);case 23:return e.abrupt("return");case 24:if(n!==this._deviceId){e.next=27;break}return v.logger.log("Ignoring room key request from ourselves"),e.abrupt("return");case 27:if(this._roomDecryptors[o]){e.next=30;break}return v.logger.log("room key request for unencrypted room ".concat(o)),e.abrupt("return");case 30:if(l=this._roomDecryptors[o][s]){e.next=34;break}return v.logger.log("room key request for unknown alg ".concat(s," in room ").concat(o)),e.abrupt("return");case 34:return e.next=36,l.hasKeysForKeyRequest(t);case 36:if(e.sent){e.next=39;break}return v.logger.log("room key request for unknown session ".concat(o," / ")+i.session_id),e.abrupt("return");case 39:if(t.share=function(){l.shareKeysWithDevice(t)},!this.checkDeviceTrust(r,n).isVerified()){e.next=44;break}return v.logger.log("device is already verified: sharing keys"),t.share(),e.abrupt("return");case 44:this.emit("crypto.roomKeyRequest",t);case 45:case"end":return e.stop()}}),e,this,[[15,20]])})));return function(t){return e.apply(this,arguments)}}(),F.prototype._processReceivedRoomKeyRequestCancellation=function(){var e=(0,l.default)(c.default.mark((function e(t){return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:v.logger.log("m.room_key_request cancellation for ".concat(t.userId,":")+"".concat(t.deviceId," (id ").concat(t.requestId,")")),this.emit("crypto.roomKeyRequestCancellation",t);case 2:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),F.prototype._getRoomDecryptor=function(e,t){var r,n;if((e=e||null)&&((r=this._roomDecryptors[e])||(this._roomDecryptors[e]=r={}),n=r[t]))return n;var i=k.DECRYPTION_CLASSES[t];if(!i)throw new k.DecryptionError("UNKNOWN_ENCRYPTION_ALGORITHM",'Unknown encryption algorithm "'+t+'".');return n=new i({userId:this._userId,crypto:this,olmDevice:this._olmDevice,baseApis:this._baseApis,roomId:e}),r&&(r[t]=n),n},F.prototype._getRoomDecryptors=function(e){for(var t=[],r=0,n=Object.values(this._roomDecryptors);r<n.length;r++){var i=n[r];e in i&&t.push(i[e])}return t},F.prototype._signObject=function(){var e=(0,l.default)(c.default.mark((function e(t){var r,n;return c.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.signatures||{},n=t.unsigned,delete t.signatures,delete t.unsigned,r[this._userId]=r[this._userId]||{},e.next=7,this._olmDevice.sign(f.default.stringify(t));case 7:r[this._userId]["ed25519:"+this._deviceId]=e.sent,t.signatures=r,void 0!==n&&(t.unsigned=n);case 10:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}();var $=function e(t){(0,a.default)(this,e);var r=t.getContent();this.userId=t.getSender(),this.deviceId=r.requesting_device_id,this.requestId=r.request_id,this.requestBody=r.body||{},this.share=function(){throw new Error("don't know how to share keys for this request yet")}},H=function e(t){(0,a.default)(this,e);var r=t.getContent();this.userId=t.getSender(),this.deviceId=r.requesting_device_id,this.requestId=r.request_id}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../ReEmitter":53,"../errors":89,"../logger":95,"../utils":123,"./CrossSigning":60,"./DeviceList":61,"./EncryptionSetup":62,"./OlmDevice":63,"./OutgoingRoomKeyRequestManager":64,"./SecretStorage":66,"./aes":67,"./algorithms":69,"./deviceinfo":72,"./key_passphrase":74,"./olmlib":75,"./recoverykey":76,"./store/indexeddb-crypto-store":78,"./verification/IllegalMethod":83,"./verification/QRCode":84,"./verification/SAS":85,"./verification/request/InRoomChannel":86,"./verification/request/ToDeviceChannel":87,"./verification/request/VerificationRequest":88,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,"another-json":28,buffer:34,events:36}],74:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.keyFromAuthData=function(e,t){return a.apply(this,arguments)},r.keyFromPassphrase=function(e){return u.apply(this,arguments)},r.deriveKey=c;var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=e("../randomstring");function a(){return(a=(0,o.default)(i.default.mark((function e(r,n){return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.Olm){e.next=2;break}throw new Error("Olm is not available");case 2:if(r.private_key_salt&&r.private_key_iterations){e.next=4;break}throw new Error("Salt and/or iterations not found: this backup cannot be restored with a passphrase");case 4:return e.next=6,c(n,r.private_key_salt,r.private_key_iterations,r.private_key_bits||256);case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function u(){return(u=(0,o.default)(i.default.mark((function e(r){var n,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.Olm){e.next=2;break}throw new Error("Olm is not available");case 2:return n=(0,s.randomString)(32),e.next=5,c(r,n,5e5,256);case 5:return o=e.sent,e.abrupt("return",{key:o,salt:n,iterations:5e5});case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,r){return l.apply(this,arguments)}function l(){return(l=(0,o.default)(i.default.mark((function e(r,n,o){var s,a,u,c,l,d=arguments;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s=d.length>3&&void 0!==d[3]?d[3]:256,a=t.crypto.subtle,u=t.TextEncoder,a&&u){e.next=5;break}throw new Error("Password-based backup is not avaiable on this platform");case 5:return e.next=7,a.importKey("raw",(new u).encode(r),{name:"PBKDF2"},!1,["deriveBits"]);case 7:return c=e.sent,e.next=10,a.deriveBits({name:"PBKDF2",salt:(new u).encode(n),iterations:o,hash:"SHA-512"},c,s);case 10:return l=e.sent,e.abrupt("return",new Uint8Array(l));case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../randomstring":110,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":27}],75:[function(e,t,r){(function(t,n){"use strict";var i=e("@babel/runtime/helpers/interopRequireWildcard"),o=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.encryptMessageForDevice=function(e,t,r,n,i,o,s){return v.apply(this,arguments)},r.getExistingOlmSessions=function(e,t,r){return g.apply(this,arguments)},r.ensureOlmSessionsForDevices=function(e,t,r,n,i,o){return y.apply(this,arguments)},r.verifySignature=b,r.pkSign=function(e,r,n,i){var o=!1;if(r instanceof Uint8Array){var s=new t.Olm.PkSigning;i=s.init_with_seed(r),r=s,o=!0}var a=e.signatures||{};delete e.signatures;var u=e.unsigned;e.unsigned&&delete e.unsigned;try{var c=a[n]||{};return a[n]=c,c["ed25519:"+i]=r.sign(f.default.stringify(e))}finally{e.signatures=a,u&&(e.unsigned=u),o&&r.free()}},r.pkVerify=function(e,r,n){var i="ed25519:"+r;if(!(e.signatures&&e.signatures[n]&&e.signatures[n][i]))throw new Error("No signature");var o=e.signatures[n][i],s=new t.Olm.Utility,a=e.signatures;delete e.signatures;var u=e.unsigned;e.unsigned&&delete e.unsigned;try{s.ed25519_verify(r,f.default.stringify(e),o)}finally{e.signatures=a,u&&(e.unsigned=u),s.free()}},r.encodeBase64=S,r.encodeUnpaddedBase64=function(e){return S(e).replace(/=+$/g,"")},r.decodeBase64=function(e){return n.from(e,"base64")},r.MEGOLM_BACKUP_ALGORITHM=r.MEGOLM_ALGORITHM=r.OLM_ALGORITHM=void 0;var s=o(e("@babel/runtime/helpers/toConsumableArray")),a=o(e("@babel/runtime/helpers/slicedToArray")),u=o(e("@babel/runtime/regenerator")),c=o(e("@babel/runtime/helpers/asyncToGenerator")),l=e("../logger"),d=i(e("../utils")),f=o(e("another-json"));function h(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return p(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return p(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}r.OLM_ALGORITHM="m.olm.v1.curve25519-aes-sha2";r.MEGOLM_ALGORITHM="m.megolm.v1.aes-sha2";function v(){return(v=(0,c.default)(u.default.mark((function e(t,r,n,i,o,s,a){var c,f,h;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return c=s.getIdentityKey(),e.next=3,i.getSessionIdForDevice(c);case 3:if(null!==(f=e.sent)){e.next=6;break}return e.abrupt("return");case 6:return l.logger.log("Using sessionid "+f+" for device "+o+":"+s.deviceId),h={sender:r,sender_device:n,keys:{ed25519:i.deviceEd25519Key},recipient:o,recipient_keys:{ed25519:s.getFingerprint()}},d.extend(h,a),e.next=11,i.encryptMessage(c,f,JSON.stringify(h));case 11:t[c]=e.sent;case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function g(){return(g=(0,c.default)(u.default.mark((function e(t,r,n){var i,o,s,l,d,f;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i={},o={},s=[],l=function(){var e,r=(0,a.default)(f[d],2),n=r[0],l=h(r[1]);try{var p=function(){var r=e.value,a=r.deviceId,l=r.getIdentityKey();s.push((0,c.default)(u.default.mark((function e(){var s;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.getSessionIdForDevice(l,!0);case 2:null===(s=e.sent)?(i[n]=i[n]||[],i[n].push(r)):(o[n]=o[n]||{},o[n][a]={device:r,sessionId:s});case 4:case"end":return e.stop()}}),e)})))())};for(l.s();!(e=l.n()).done;)p()}catch(e){l.e(e)}finally{l.f()}},d=0,f=Object.entries(n);d<f.length;d++)l();return e.next=7,Promise.all(s);case 7:return e.abrupt("return",[i,o]);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function y(){return(y=(0,c.default)(u.default.mark((function e(t,r,n,i,o,c){var d,f,p,v,g,y,_,b,k,S,E,w,I,R,T,x,C,O,A,D,P;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:"number"==typeof i&&(c=o,o=i,i=!1),d=[],f={},p={},v=0,g=Object.entries(n);case 5:if(!(v<g.length)){e.next=30;break}y=(0,a.default)(g[v],2),_=y[0],b=y[1],f[_]={},k=h(b),e.prev=9,E=u.default.mark((function e(){var r,n,o,s;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=S.value,n=r.deviceId,(o=r.getIdentityKey())!==t.deviceCurve25519Key){e.next=7;break}return l.logger.info("Attempted to start session with ourself! Ignoring"),f[_][n]={device:r,sessionId:null},e.abrupt("return","continue");case 7:return t._sessionsInProgress[o]||(t._sessionsInProgress[o]=new Promise((function(e,r){p[o]={resolve:function(){delete t._sessionsInProgress[o],e.apply(void 0,arguments)},reject:function(){delete t._sessionsInProgress[o],r.apply(void 0,arguments)}}}))),e.next=10,t.getSessionIdForDevice(o,p[o]);case 10:null!==(s=e.sent)&&p[o]&&(delete t._sessionsInProgress[o],p[o].resolve(),delete p[o]),(null===s||i)&&(i?l.logger.info("Forcing new Olm session for "+_+":"+n):l.logger.info("Making new Olm session for "+_+":"+n),d.push([_,n])),f[_][n]={device:r,sessionId:s};case 14:case"end":return e.stop()}}),e)})),k.s();case 12:if((S=k.n()).done){e.next=19;break}return e.delegateYield(E(),"t0",14);case 14:if("continue"!==e.t0){e.next=17;break}return e.abrupt("continue",17);case 17:e.next=12;break;case 19:e.next=24;break;case 21:e.prev=21,e.t1=e.catch(9),k.e(e.t1);case 24:return e.prev=24,k.f(),e.finish(24);case 27:v++,e.next=5;break;case 30:if(0!==d.length){e.next=32;break}return e.abrupt("return",f);case 32:return w="signed_curve25519",e.prev=33,e.next=36,r.claimOneTimeKeys(d,w,o);case 36:I=e.sent,e.next=44;break;case 39:for(e.prev=39,e.t2=e.catch(33),R=0,T=Object.values(p);R<T.length;R++)T[R].resolve();throw l.logger.log("failed to claim one-time keys",e.t2,d),e.t2;case 44:c&&"failures"in I&&(x=c).push.apply(x,(0,s.default)(Object.keys(I.failures))),C=I.one_time_keys||{},O=[],A=function(){for(var e=(0,a.default)(P[D],2),r=e[0],n=e[1],o=C[r]||{},s=function(e){var s=n[e],a=s.deviceId,u=s.getIdentityKey();if(u===t.deviceCurve25519Key)return"continue";if(f[r][a].sessionId&&!i)return"continue";var c=o[a]||{},d=null;for(var h in c)0===h.indexOf(w+":")&&(d=c[h]);if(!d){var v="No one-time keys (alg="+w+") for device "+r+":"+a;return l.logger.warn(v),p[u]&&p[u].resolve(),"continue"}O.push(m(t,d,r,s).then((function(e){p[u]&&p[u].resolve(e),f[r][a].sessionId=e}),(function(e){throw p[u]&&p[u].resolve(),e})))},u=0;u<n.length;u++)s(u)};for(D=0,P=Object.entries(n);D<P.length;D++)A();return e.next=51,Promise.all(O);case 51:return e.abrupt("return",f);case 52:case"end":return e.stop()}}),e,null,[[9,21,24,27],[33,39]])})))).apply(this,arguments)}function m(e,t,r,n){return _.apply(this,arguments)}function _(){return(_=(0,c.default)(u.default.mark((function e(t,r,n,i){var o,s;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=i.deviceId,e.prev=1,e.next=4,b(t,r,n,o,i.getFingerprint());case 4:e.next=10;break;case 6:return e.prev=6,e.t0=e.catch(1),l.logger.error("Unable to verify signature on one-time key for device "+n+":"+o+":",e.t0),e.abrupt("return",null);case 10:return e.prev=10,e.next=13,t.createOutboundSession(i.getIdentityKey(),r.key);case 13:s=e.sent,e.next=20;break;case 16:return e.prev=16,e.t1=e.catch(10),l.logger.error("Error starting olm session with device "+n+":"+o+": "+e.t1),e.abrupt("return",null);case 20:return l.logger.log("Started new olm sessionid "+s+" for device "+n+":"+o),e.abrupt("return",s);case 22:case"end":return e.stop()}}),e,null,[[1,6],[10,16]])})))).apply(this,arguments)}function b(e,t,r,n,i){return k.apply(this,arguments)}function k(){return(k=(0,c.default)(u.default.mark((function e(t,r,n,i,o){var s,a,c,l,d,h;return u.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(s="ed25519:"+i,a=r.signatures||{},c=a[n]||{},l=c[s]){e.next=6;break}throw Error("No signature");case 6:delete(d=Object.assign({},r)).unsigned,delete d.signatures,h=f.default.stringify(d),t.verifySignature(o,h,l);case 11:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(e){return n.from(e).toString("base64")}r.MEGOLM_BACKUP_ALGORITHM="m.megolm_backup.v1.curve25519-aes-sha2"}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../logger":95,"../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/regenerator":27,"another-json":28,buffer:34}],76:[function(e,t,r){(function(t,n){"use strict";var i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.encodeRecoveryKey=function(e){var t=new n(a.length+e.length+1);t.set(a,0),t.set(e,a.length);for(var r=0,i=0;i<t.length-1;++i)r^=t[i];return t[t.length-1]=r,o.default.encode(t).match(/.{1,4}/g).join(" ")},r.decodeRecoveryKey=function(e){var r,n=o.default.decode(e.replace(/ /g,"")),i=0,u=function(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw o}}}}(n);try{for(u.s();!(r=u.n()).done;){var c=r.value;i^=c}}catch(e){u.e(e)}finally{u.f()}if(0!==i)throw new Error("Incorrect parity");for(var l=0;l<a.length;++l)if(n[l]!==a[l])throw new Error("Incorrect prefix");if(n.length!==a.length+t.Olm.PRIVATE_KEY_LENGTH+1)throw new Error("Incorrect length");return Uint8Array.from(n.slice(a.length,a.length+t.Olm.PRIVATE_KEY_LENGTH))};var o=i(e("bs58"));function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var a=[139,1]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"@babel/runtime/helpers/interopRequireDefault":12,bs58:33,buffer:34}],77:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.upgradeDatabase=function(e,t){c.logger.log("Upgrading IndexedDBCryptoStore from version ".concat(t)+" to ".concat(9)),t<1&&function(e){var 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");if(t<3){e.createObjectStore("sessions",{keyPath:["deviceKey","sessionId"]}).createIndex("deviceKey","deviceKey")}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"]});if(t<9){e.createObjectStore("session_problems",{keyPath:["deviceKey","time"]}).createIndex("deviceKey","deviceKey"),e.createObjectStore("notified_error_devices",{keyPath:["userId","deviceId"]})}},r.Backend=r.VERSION=void 0;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("@babel/runtime/helpers/classCallCheck")),u=i(e("@babel/runtime/helpers/createClass")),c=e("../../logger"),l=n(e("../../utils"));function d(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return f(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}r.VERSION=9;var h=function(){function e(t){var r=this;(0,a.default)(this,e),this._db=t,t.onversionchange=function(e){c.logger.log("versionchange for indexeddb ".concat(r._dbName,": closing")),t.close()}}var t,r,n;return(0,u.default)(e,[{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=this,r=e.requestBody;return new Promise((function(n,i){var o=t._db.transaction("outgoingRoomKeyRequests","readwrite");o.onerror=i,t._getOutgoingRoomKeyRequest(o,r,(function(t){if(t)return c.logger.log("already have key request outstanding for "+"".concat(r.room_id," / ").concat(r.session_id,": ")+"not sending another"),void n(t);c.logger.log("enqueueing key request for ".concat(r.room_id," / ")+r.session_id),o.oncomplete=function(){n(e)},o.objectStore("outgoingRoomKeyRequests").add(e)}))}))}},{key:"getOutgoingRoomKeyRequest",value:function(e){var t=this;return new Promise((function(r,n){var i=t._db.transaction("outgoingRoomKeyRequests","readonly");i.onerror=n,t._getOutgoingRoomKeyRequest(i,e,(function(e){r(e)}))}))}},{key:"_getOutgoingRoomKeyRequest",value:function(e,t,r){e.objectStore("outgoingRoomKeyRequests").index("session").openCursor([t.room_id,t.session_id]).onsuccess=function(e){var n=e.target.result;if(n){var i=n.value;l.deepCompare(i.requestBody,t)?r(i):n.continue()}else r(null)}}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){if(0===e.length)return Promise.resolve(null);var t,r=0;var n=this._db.transaction("outgoingRoomKeyRequests","readonly"),i=n.objectStore("outgoingRoomKeyRequests"),o=e[r];return i.index("state").openCursor(o).onsuccess=function n(i){var o=i.target.result;if(o)t=o.value;else if(!(++r>=e.length)){var s=e[r];i.target.source.openCursor(s).onsuccess=n}},v(n).then((function(){return t}))}},{key:"getAllOutgoingRoomKeyRequestsByState",value:function(e){var t=this;return new Promise((function(r,n){var i=t._db.transaction("outgoingRoomKeyRequests","readonly").objectStore("outgoingRoomKeyRequests").index("state").getAll(e);i.onsuccess=function(e){return r(e.target.result)},i.onerror=function(e){return n(e.target.error)}}))}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){var n=0,i=[];var o=this._db.transaction("outgoingRoomKeyRequests","readonly"),s=o.objectStore("outgoingRoomKeyRequests"),a=r[n];return s.index("state").openCursor(a).onsuccess=function o(s){var a=s.target.result;if(a){var u=a.value;u.recipients.includes({userId:e,deviceId:t})&&i.push(u),a.continue()}else{if(++n>=r.length)return;var c=r[n];s.target.source.openCursor(c).onsuccess=o}},v(o).then((function(){return i}))}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){var n=null;var i=this._db.transaction("outgoingRoomKeyRequests","readwrite");return i.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var i=e.target.result;if(i){var o=i.value;o.state==t?(Object.assign(o,r),i.update(o),n=o):c.logger.warn("Cannot update room key request from ".concat(t," ")+"as it was already updated to ".concat(o.state))}},v(i).then((function(){return n}))}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){var r=this._db.transaction("outgoingRoomKeyRequests","readwrite");return r.objectStore("outgoingRoomKeyRequests").openCursor(e).onsuccess=function(e){var r=e.target.result;if(r){var n=r.value;n.state==t?r.delete():c.logger.warn("Cannot delete room key request in state ".concat(n.state," ")+"(expected ".concat(t,")"))}},v(r)}},{key:"getAccount",value:function(e,t){var r=e.objectStore("account").get("-");r.onsuccess=function(){try{t(r.result||null)}catch(t){p(e,t)}}}},{key:"storeAccount",value:function(e,t){e.objectStore("account").put(t,"-")}},{key:"getCrossSigningKeys",value:function(e,t){var r=e.objectStore("account").get("crossSigningKeys");r.onsuccess=function(){try{t(r.result||null)}catch(t){p(e,t)}}}},{key:"getSecretStorePrivateKey",value:function(e,t,r){var n=e.objectStore("account").get("ssss_cache:".concat(r));n.onsuccess=function(){try{t(n.result||null)}catch(t){p(e,t)}}}},{key:"storeCrossSigningKeys",value:function(e,t){e.objectStore("account").put(t,"crossSigningKeys")}},{key:"storeSecretStorePrivateKey",value:function(e,t,r){e.objectStore("account").put(r,"ssss_cache:".concat(t))}},{key:"countEndToEndSessions",value:function(e,t){var r=e.objectStore("sessions").count();r.onsuccess=function(){try{t(r.result)}catch(t){p(e,t)}}}},{key:"getEndToEndSessions",value:function(e,t,r){var n=t.objectStore("sessions").index("deviceKey").openCursor(e),i={};n.onsuccess=function(){var e=n.result;if(e)i[e.value.sessionId]={session:e.value.session,lastReceivedMessageTs:e.value.lastReceivedMessageTs},e.continue();else try{r(i)}catch(e){p(t,e)}}}},{key:"getEndToEndSession",value:function(e,t,r,n){var i=r.objectStore("sessions").get([e,t]);i.onsuccess=function(){try{i.result?n({session:i.result.session,lastReceivedMessageTs:i.result.lastReceivedMessageTs}):n(null)}catch(e){p(r,e)}}}},{key:"getAllEndToEndSessions",value:function(e,t){var r=e.objectStore("sessions").openCursor();r.onsuccess=function(){try{var n=r.result;n?(t(n.value),n.continue()):t(null)}catch(t){p(e,t)}}}},{key:"storeEndToEndSession",value:function(e,t,r,n){n.objectStore("sessions").put({deviceKey:e,sessionId:t,session:r.session,lastReceivedMessageTs:r.lastReceivedMessageTs})}},{key:"storeEndToEndSessionProblem",value:(n=(0,s.default)(o.default.mark((function e(t,r,n){var i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(i=this._db.transaction("session_problems","readwrite")).objectStore("session_problems").put({deviceKey:t,type:r,fixed:n,time:Date.now()}),e.abrupt("return",v(i));case 4:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return n.apply(this,arguments)})},{key:"getEndToEndSessionProblem",value:(r=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,a,u;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._db.transaction("session_problems","readwrite"),s=i.objectStore("session_problems"),a=s.index("deviceKey"),(u=a.getAll(t)).onsuccess=function(e){var t=u.result;if(t.length){t.sort((function(e,t){return e.time-t.time}));var i,o=t[t.length-1],s=d(t);try{for(s.s();!(i=s.n()).done;){var a=i.value;if(a.time>r)return void(n=Object.assign({},a,{fixed:o.fixed}))}}catch(e){s.e(e)}finally{s.f()}n=o.fixed?null:o}else n=null},e.next=7,v(i);case 7:return e.abrupt("return",n);case 8:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"filterOutNotifiedErrorDevices",value:(t=(0,s.default)(o.default.mark((function e(t){var r,n,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this._db.transaction("notified_error_devices","readwrite"),n=r.objectStore("notified_error_devices"),i=[],e.next=5,Promise.all(t.map((function(e){return new Promise((function(t){var r=e.userId,o=e.deviceInfo,s=n.get([r,o.deviceId]);s.onsuccess=function(){s.result||(n.put({userId:r,deviceId:o.deviceId}),i.push(e)),t()}}))})));case 5:return e.abrupt("return",i);case 6:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){var i=!1,o=!1,s=r.objectStore("inbound_group_sessions").get([e,t]);s.onsuccess=function(){try{i=s.result?s.result.session:null,!1!==o&&n(i,o)}catch(e){p(r,e)}};var a=r.objectStore("inbound_group_sessions_withheld").get([e,t]);a.onsuccess=function(){try{o=a.result?a.result.session:null,!1!==i&&n(i,o)}catch(e){p(r,e)}}}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){var r=e.objectStore("inbound_group_sessions").openCursor();r.onsuccess=function(){var n=r.result;if(n){try{t({senderKey:n.value.senderCurve25519Key,sessionId:n.value.sessionId,sessionData:n.value.session})}catch(t){p(e,t)}n.continue()}else try{t(null)}catch(t){p(e,t)}}}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){var i=n.objectStore("inbound_group_sessions").add({senderCurve25519Key:e,sessionId:t,session:r});i.onerror=function(r){"ConstraintError"===i.error.name?(r.stopPropagation(),r.preventDefault(),c.logger.log("Ignoring duplicate inbound group session: "+e+" / "+t)):p(n,new Error("Failed to add inbound group session: "+i.error))}}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){n.objectStore("inbound_group_sessions").put({senderCurve25519Key:e,sessionId:t,session:r})}},{key:"storeEndToEndInboundGroupSessionWithheld",value:function(e,t,r,n){n.objectStore("inbound_group_sessions_withheld").put({senderCurve25519Key:e,sessionId:t,session:r})}},{key:"getEndToEndDeviceData",value:function(e,t){var r=e.objectStore("device_data").get("-");r.onsuccess=function(){try{t(r.result||null)}catch(t){p(e,t)}}}},{key:"storeEndToEndDeviceData",value:function(e,t){t.objectStore("device_data").put(e,"-")}},{key:"storeEndToEndRoom",value:function(e,t,r){r.objectStore("rooms").put(t,e)}},{key:"getEndToEndRooms",value:function(e,t){var r={},n=e.objectStore("rooms").openCursor();n.onsuccess=function(){var i=n.result;if(i)r[i.key]=i.value,i.continue();else try{t(r)}catch(t){p(e,t)}}}},{key:"getSessionsNeedingBackup",value:function(e){var t=this;return new Promise((function(r,n){var i=[],o=t._db.transaction(["sessions_needing_backup","inbound_group_sessions"],"readonly");o.onerror=n,o.oncomplete=function(){r(i)};var s=o.objectStore("sessions_needing_backup"),a=o.objectStore("inbound_group_sessions"),u=s.openCursor();u.onsuccess=function(){var t=u.result;if(t){var r=a.get(t.key);r.onsuccess=function(){i.push({senderKey:r.result.senderCurve25519Key,sessionId:r.result.sessionId,sessionData:r.result.session})},(!e||i.length<e)&&t.continue()}}}))}},{key:"countSessionsNeedingBackup",value:function(e){e||(e=this._db.transaction("sessions_needing_backup","readonly"));var t=e.objectStore("sessions_needing_backup");return new Promise((function(e,r){var n=t.count();n.onerror=r,n.onsuccess=function(){return e(n.result)}}))}},{key:"unmarkSessionsNeedingBackup",value:function(e,t){t||(t=this._db.transaction("sessions_needing_backup","readwrite"));var r=t.objectStore("sessions_needing_backup");return Promise.all(e.map((function(e){return new Promise((function(t,n){var i=r.delete([e.senderKey,e.sessionId]);i.onsuccess=t,i.onerror=n}))})))}},{key:"markSessionsNeedingBackup",value:function(e,t){t||(t=this._db.transaction("sessions_needing_backup","readwrite"));var r=t.objectStore("sessions_needing_backup");return Promise.all(e.map((function(e){return new Promise((function(t,n){var i=r.put({senderCurve25519Key:e.senderKey,sessionId:e.sessionId});i.onsuccess=t,i.onerror=n}))})))}},{key:"doTxn",value:function(e,t,r){var n=this._db.transaction(t,e),i=v(n),o=r(n);return i.then((function(){return o}))}}]),e}();function p(e,t){e._mx_abortexception=t;try{e.abort()}catch(t){}}function v(e){return new Promise((function(t,r){e.oncomplete=function(){void 0!==e._mx_abortexception&&r(e._mx_abortexception),t()},e.onerror=function(t){void 0!==e._mx_abortexception?r(e._mx_abortexception):(c.logger.log("Error performing indexeddb txn",t),r(t.target.error))},e.onabort=function(t){void 0!==e._mx_abortexception?r(e._mx_abortexception):(c.logger.log("Error performing indexeddb txn",t),r(t.target.error))}}))}r.Backend=h},{"../../logger":95,"../../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27}],78:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.IndexedDBCryptoStore=void 0;var o=i(e("@babel/runtime/helpers/classCallCheck")),s=i(e("@babel/runtime/helpers/createClass")),a=e("../../logger"),u=e("./localStorage-crypto-store"),c=e("./memory-crypto-store"),l=n(e("./indexeddb-crypto-store-backend")),d=e("../../errors"),f=n(e("../../indexeddb-helpers")),h=function(){function e(t,r){(0,o.default)(this,e),this._indexedDB=t,this._dbName=r,this._backendPromise=null,this._backend=null}return(0,s.default)(e,[{key:"startup",value:function(){var r=this;return this._backendPromise||(this._backendPromise=new Promise((function(e,t){if(r._indexedDB){a.logger.log("connecting to indexeddb ".concat(r._dbName));var n=r._indexedDB.open(r._dbName,l.VERSION);n.onupgradeneeded=function(e){var t=e.target.result,r=e.oldVersion;l.upgradeDatabase(t,r)},n.onblocked=function(){a.logger.log("can't yet open IndexedDBCryptoStore because it is open elsewhere")},n.onerror=function(e){a.logger.log("Error connecting to indexeddb",e),t(e.target.error)},n.onsuccess=function(t){var n=t.target.result;a.logger.log("connected to indexeddb ".concat(r._dbName)),e(new l.Backend(n))}}else t(new Error("no indexeddb support available"))})).then((function(t){return t.doTxn("readonly",[e.STORE_INBOUND_GROUP_SESSIONS,e.STORE_INBOUND_GROUP_SESSIONS_WITHHELD],(function(e){t.getEndToEndInboundGroupSession("","",e,(function(){}))})).then((function(){return t}))})).catch((function(e){if("VersionError"===e.name)throw a.logger.warn("Crypto DB is too new for us to use!",e),new d.InvalidCryptoStoreError(d.InvalidCryptoStoreError.TOO_NEW);a.logger.warn("unable to connect to indexeddb ".concat(r._dbName)+": falling back to localStorage store: ".concat(e));try{return new u.LocalStorageCryptoStore(t.localStorage)}catch(e){return a.logger.warn("unable to open localStorage: falling back to in-memory store: ".concat(e)),new c.MemoryCryptoStore}})).then((function(e){r._backend=e}))),this._backendPromise}},{key:"deleteAllData",value:function(){var e=this;return new Promise((function(t,r){if(e._indexedDB){a.logger.log("Removing indexeddb instance: ".concat(e._dbName));var n=e._indexedDB.deleteDatabase(e._dbName);n.onblocked=function(){a.logger.log("can't yet delete IndexedDBCryptoStore because it is open elsewhere")},n.onerror=function(e){a.logger.log("Error deleting data from indexeddb",e),r(e.target.error)},n.onsuccess=function(){a.logger.log("Removed indexeddb instance: ".concat(e._dbName)),t()}}else r(new Error("no indexeddb support available"))})).catch((function(e){a.logger.warn("unable to delete IndexedDBCryptoStore: ".concat(e))}))}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){return this._backend.getOrAddOutgoingRoomKeyRequest(e)}},{key:"getOutgoingRoomKeyRequest",value:function(e){return this._backend.getOutgoingRoomKeyRequest(e)}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){return this._backend.getOutgoingRoomKeyRequestByState(e)}},{key:"getAllOutgoingRoomKeyRequestsByState",value:function(e){return this._backend.getAllOutgoingRoomKeyRequestsByState(e)}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){return this._backend.getOutgoingRoomKeyRequestsByTarget(e,t,r)}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){return this._backend.updateOutgoingRoomKeyRequest(e,t,r)}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){return this._backend.deleteOutgoingRoomKeyRequest(e,t)}},{key:"getAccount",value:function(e,t){this._backend.getAccount(e,t)}},{key:"storeAccount",value:function(e,t){this._backend.storeAccount(e,t)}},{key:"getCrossSigningKeys",value:function(e,t){this._backend.getCrossSigningKeys(e,t)}},{key:"getSecretStorePrivateKey",value:function(e,t,r){this._backend.getSecretStorePrivateKey(e,t,r)}},{key:"storeCrossSigningKeys",value:function(e,t){this._backend.storeCrossSigningKeys(e,t)}},{key:"storeSecretStorePrivateKey",value:function(e,t,r){this._backend.storeSecretStorePrivateKey(e,t,r)}},{key:"countEndToEndSessions",value:function(e,t){this._backend.countEndToEndSessions(e,t)}},{key:"getEndToEndSession",value:function(e,t,r,n){this._backend.getEndToEndSession(e,t,r,n)}},{key:"getEndToEndSessions",value:function(e,t,r){this._backend.getEndToEndSessions(e,t,r)}},{key:"getAllEndToEndSessions",value:function(e,t){this._backend.getAllEndToEndSessions(e,t)}},{key:"storeEndToEndSession",value:function(e,t,r,n){this._backend.storeEndToEndSession(e,t,r,n)}},{key:"storeEndToEndSessionProblem",value:function(e,t,r){return this._backend.storeEndToEndSessionProblem(e,t,r)}},{key:"getEndToEndSessionProblem",value:function(e,t){return this._backend.getEndToEndSessionProblem(e,t)}},{key:"filterOutNotifiedErrorDevices",value:function(e){return this._backend.filterOutNotifiedErrorDevices(e)}},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){this._backend.getEndToEndInboundGroupSession(e,t,r,n)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){this._backend.getAllEndToEndInboundGroupSessions(e,t)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){this._backend.addEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){this._backend.storeEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndInboundGroupSessionWithheld",value:function(e,t,r,n){this._backend.storeEndToEndInboundGroupSessionWithheld(e,t,r,n)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._backend.storeEndToEndDeviceData(e,t)}},{key:"getEndToEndDeviceData",value:function(e,t){this._backend.getEndToEndDeviceData(e,t)}},{key:"storeEndToEndRoom",value:function(e,t,r){this._backend.storeEndToEndRoom(e,t,r)}},{key:"getEndToEndRooms",value:function(e,t){this._backend.getEndToEndRooms(e,t)}},{key:"getSessionsNeedingBackup",value:function(e){return this._backend.getSessionsNeedingBackup(e)}},{key:"countSessionsNeedingBackup",value:function(e){return this._backend.countSessionsNeedingBackup(e)}},{key:"unmarkSessionsNeedingBackup",value:function(e,t){return this._backend.unmarkSessionsNeedingBackup(e,t)}},{key:"markSessionsNeedingBackup",value:function(e,t){return this._backend.markSessionsNeedingBackup(e,t)}},{key:"doTxn",value:function(e,t,r){return this._backend.doTxn(e,t,r)}}],[{key:"exists",value:function(e,t){return f.exists(e,t)}}]),e}();r.IndexedDBCryptoStore=h,h.STORE_ACCOUNT="account",h.STORE_SESSIONS="sessions",h.STORE_INBOUND_GROUP_SESSIONS="inbound_group_sessions",h.STORE_INBOUND_GROUP_SESSIONS_WITHHELD="inbound_group_sessions_withheld",h.STORE_DEVICE_DATA="device_data",h.STORE_ROOMS="rooms",h.STORE_BACKUP="sessions_needing_backup"}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../errors":89,"../../indexeddb-helpers":93,"../../logger":95,"./indexeddb-crypto-store-backend":77,"./localStorage-crypto-store":79,"./memory-crypto-store":80,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13}],79:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.LocalStorageCryptoStore=void 0;var i=n(e("@babel/runtime/helpers/defineProperty")),o=n(e("@babel/runtime/regenerator")),s=n(e("@babel/runtime/helpers/asyncToGenerator")),a=n(e("@babel/runtime/helpers/slicedToArray")),u=n(e("@babel/runtime/helpers/classCallCheck")),c=n(e("@babel/runtime/helpers/createClass")),l=n(e("@babel/runtime/helpers/inherits")),d=n(e("@babel/runtime/helpers/possibleConstructorReturn")),f=n(e("@babel/runtime/helpers/getPrototypeOf")),h=e("../../logger"),p=e("./memory-crypto-store");function v(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function y(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,f.default)(e);if(t){var i=(0,f.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,d.default)(this,r)}}function m(e){return"crypto.sessions/"+e}function _(e){return"crypto.session.problems/"+e}function b(e,t){return"crypto.inboundgroupsessions/"+e+"/"+t}function k(e,t){return"crypto.inboundgroupsessions.withheld/"+e+"/"+t}function S(e){return"crypto.rooms/"+e}var E=function(e){(0,l.default)(f,e);var t,r,n,d=y(f);function f(e){var t;return(0,u.default)(this,f),(t=d.call(this)).store=e,t}return(0,c.default)(f,[{key:"countEndToEndSessions",value:function(e,t){for(var r=0,n=0;n<this.store.length;++n)this.store.key(n).startsWith(m(""))&&++r;t(r)}},{key:"_getEndToEndSessions",value:function(e,t,r){for(var n=w(this.store,m(e)),i={},o=0,s=Object.entries(n||{});o<s.length;o++){var u=(0,a.default)(s[o],2),c=u[0],l=u[1];i[c]="string"==typeof l?{session:l}:l}return i}},{key:"getEndToEndSession",value:function(e,t,r,n){n(this._getEndToEndSessions(e)[t]||{})}},{key:"getEndToEndSessions",value:function(e,t,r){r(this._getEndToEndSessions(e)||{})}},{key:"getAllEndToEndSessions",value:function(e,t){for(var r=0;r<this.store.length;++r)if(this.store.key(r).startsWith(m("")))for(var n=this.store.key(r).split("/")[1],i=0,o=Object.values(this._getEndToEndSessions(n));i<o.length;i++){t(o[i])}}},{key:"storeEndToEndSession",value:function(e,t,r,n){var i=this._getEndToEndSessions(e)||{};i[t]=r,I(this.store,m(e),i)}},{key:"storeEndToEndSessionProblem",value:(n=(0,s.default)(o.default.mark((function e(t,r,n){var i,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=_(t),(s=w(this.store,i)||[]).push({type:r,fixed:n,time:Date.now()}),s.sort((function(e,t){return e.time-t.time})),I(this.store,i,s);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return n.apply(this,arguments)})},{key:"getEndToEndSessionProblem",value:(r=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,a,u,c;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=_(t),(i=w(this.store,n)||[]).length){e.next=4;break}return e.abrupt("return",null);case 4:s=i[i.length-1],a=v(i),e.prev=6,a.s();case 8:if((u=a.n()).done){e.next=14;break}if(!((c=u.value).time>r)){e.next=12;break}return e.abrupt("return",Object.assign({},c,{fixed:s.fixed}));case 12:e.next=8;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(6),a.e(e.t0);case 19:return e.prev=19,a.f(),e.finish(19);case 22:if(!s.fixed){e.next=26;break}return e.abrupt("return",null);case 26:return e.abrupt("return",s);case 27:case"end":return e.stop()}}),e,this,[[6,16,19,22]])}))),function(e,t){return r.apply(this,arguments)})},{key:"filterOutNotifiedErrorDevices",value:(t=(0,s.default)(o.default.mark((function e(t){var r,n,s,a,u,c,l;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=w(this.store,"crypto.notified_error_devices")||{},n=[],s=v(t);try{for(s.s();!(a=s.n()).done;)u=a.value,c=u.userId,l=u.deviceInfo,c in r?l.deviceId in r[c]||(n.push(u),r[c][l.deviceId]=!0):(n.push(u),r[c]=(0,i.default)({},l.deviceId,!0))}catch(e){s.e(e)}finally{s.f()}return I(this.store,"crypto.notified_error_devices",r),e.abrupt("return",n);case 6:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){n(w(this.store,b(e,t)),w(this.store,k(e,t)))}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){for(var r=0;r<this.store.length;++r){var n=this.store.key(r);n.startsWith("crypto.inboundgroupsessions/")&&t({senderKey:n.substr("crypto.inboundgroupsessions/".length,43),sessionId:n.substr("crypto.inboundgroupsessions/".length+44),sessionData:w(this.store,n)})}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){w(this.store,b(e,t))||this.storeEndToEndInboundGroupSession(e,t,r,n)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){I(this.store,b(e,t),r)}},{key:"storeEndToEndInboundGroupSessionWithheld",value:function(e,t,r,n){I(this.store,k(e,t),r)}},{key:"getEndToEndDeviceData",value:function(e,t){t(w(this.store,"crypto.device_data"))}},{key:"storeEndToEndDeviceData",value:function(e,t){I(this.store,"crypto.device_data",e)}},{key:"storeEndToEndRoom",value:function(e,t,r){I(this.store,S(e),t)}},{key:"getEndToEndRooms",value:function(e,t){for(var r={},n=S(""),i=0;i<this.store.length;++i){var o=this.store.key(i);if(o.startsWith(n))r[o.substr(n.length)]=w(this.store,o)}t(r)}},{key:"getSessionsNeedingBackup",value:function(e){var t=this,r=w(this.store,"crypto.sessionsneedingbackup")||{},n=[];for(var i in r){if(Object.prototype.hasOwnProperty.call(r,i))if("break"===function(){var r=i.substr(0,43),o=i.substr(44);if(t.getEndToEndInboundGroupSession(r,o,null,(function(e){n.push({senderKey:r,sessionId:o,sessionData:e})})),e&&i.length>=e)return"break"}())break}return Promise.resolve(n)}},{key:"countSessionsNeedingBackup",value:function(){var e=w(this.store,"crypto.sessionsneedingbackup")||{};return Promise.resolve(Object.keys(e).length)}},{key:"unmarkSessionsNeedingBackup",value:function(e){var t,r=w(this.store,"crypto.sessionsneedingbackup")||{},n=v(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;delete r[i.senderKey+"/"+i.sessionId]}}catch(e){n.e(e)}finally{n.f()}return I(this.store,"crypto.sessionsneedingbackup",r),Promise.resolve()}},{key:"markSessionsNeedingBackup",value:function(e){var t,r=w(this.store,"crypto.sessionsneedingbackup")||{},n=v(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;r[i.senderKey+"/"+i.sessionId]=!0}}catch(e){n.e(e)}finally{n.f()}return I(this.store,"crypto.sessionsneedingbackup",r),Promise.resolve()}},{key:"deleteAllData",value:function(){return this.store.removeItem("crypto.account"),Promise.resolve()}},{key:"getAccount",value:function(e,t){t(w(this.store,"crypto.account"))}},{key:"storeAccount",value:function(e,t){I(this.store,"crypto.account",t)}},{key:"getCrossSigningKeys",value:function(e,t){t(w(this.store,"crypto.cross_signing_keys"))}},{key:"getSecretStorePrivateKey",value:function(e,t,r){t(w(this.store,"crypto."+"ssss_cache.".concat(r)))}},{key:"storeCrossSigningKeys",value:function(e,t){I(this.store,"crypto.cross_signing_keys",t)}},{key:"storeSecretStorePrivateKey",value:function(e,t,r){I(this.store,"crypto."+"ssss_cache.".concat(t),r)}},{key:"doTxn",value:function(e,t,r){return Promise.resolve(r(null))}}],[{key:"exists",value:function(e){for(var t=e.length,r=0;r<t;r++)if(e.key(r).startsWith("crypto."))return!0;return!1}}]),f}(p.MemoryCryptoStore);function w(e,t){try{return JSON.parse(e.getItem(t))}catch(e){h.logger.log("Error: Failed to get key %s: %s",t,e.stack||e),h.logger.log(e.stack)}return null}function I(e,t,r){e.setItem(t,JSON.stringify(r))}r.LocalStorageCryptoStore=E},{"../../logger":95,"./memory-crypto-store":80,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27}],80:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MemoryCryptoStore=void 0;var o=i(e("@babel/runtime/helpers/defineProperty")),s=i(e("@babel/runtime/helpers/slicedToArray")),a=i(e("@babel/runtime/regenerator")),u=i(e("@babel/runtime/helpers/asyncToGenerator")),c=i(e("@babel/runtime/helpers/classCallCheck")),l=i(e("@babel/runtime/helpers/createClass")),d=e("../../logger"),f=n(e("../../utils"));function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function p(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?h(Object(r),!0).forEach((function(t){(0,o.default)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function v(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var y=function(){function e(){(0,c.default)(this,e),this._outgoingRoomKeyRequests=[],this._account=null,this._crossSigningKeys=null,this._privateKeys={},this._backupKeys={},this._sessions={},this._sessionProblems={},this._notifiedErrorDevices={},this._inboundGroupSessions={},this._inboundGroupSessionsWithheld={},this._deviceData=null,this._rooms={},this._sessionsNeedingBackup={}}var t,r,n,i;return(0,l.default)(e,[{key:"startup",value:(i=(0,u.default)(a.default.mark((function e(){return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this);case 1:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"deleteAllData",value:function(){return Promise.resolve()}},{key:"getOrAddOutgoingRoomKeyRequest",value:function(e){var t=this,r=e.requestBody;return f.promiseTry((function(){var n=t._getOutgoingRoomKeyRequest(r);return n?(d.logger.log("already have key request outstanding for "+"".concat(r.room_id," / ").concat(r.session_id,": ")+"not sending another"),n):(d.logger.log("enqueueing key request for ".concat(r.room_id," / ")+r.session_id),t._outgoingRoomKeyRequests.push(e),e)}))}},{key:"getOutgoingRoomKeyRequest",value:function(e){return Promise.resolve(this._getOutgoingRoomKeyRequest(e))}},{key:"_getOutgoingRoomKeyRequest",value:function(e){var t,r=v(this._outgoingRoomKeyRequests);try{for(r.s();!(t=r.n()).done;){var n=t.value;if(f.deepCompare(n.requestBody,e))return n}}catch(e){r.e(e)}finally{r.f()}return null}},{key:"getOutgoingRoomKeyRequestByState",value:function(e){var t,r=v(this._outgoingRoomKeyRequests);try{for(r.s();!(t=r.n()).done;){var n,i=t.value,o=v(e);try{for(o.s();!(n=o.n()).done;){var s=n.value;if(i.state===s)return Promise.resolve(i)}}catch(e){o.e(e)}finally{o.f()}}}catch(e){r.e(e)}finally{r.f()}return Promise.resolve(null)}},{key:"getAllOutgoingRoomKeyRequestsByState",value:function(e){return Promise.resolve(this._outgoingRoomKeyRequests.filter((function(t){return t.state==e})))}},{key:"getOutgoingRoomKeyRequestsByTarget",value:function(e,t,r){var n,i=[],o=v(this._outgoingRoomKeyRequests);try{for(o.s();!(n=o.n()).done;){var s,a=n.value,u=v(r);try{for(u.s();!(s=u.n()).done;){var c=s.value;a.state===c&&a.recipients.includes({userId:e,deviceId:t})&&i.push(a)}}catch(e){u.e(e)}finally{u.f()}}}catch(e){o.e(e)}finally{o.f()}return Promise.resolve(i)}},{key:"updateOutgoingRoomKeyRequest",value:function(e,t,r){var n,i=v(this._outgoingRoomKeyRequests);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.requestId===e)return o.state!=t?(d.logger.warn("Cannot update room key request from ".concat(t," ")+"as it was already updated to ".concat(o.state)),Promise.resolve(null)):(Object.assign(o,r),Promise.resolve(o))}}catch(e){i.e(e)}finally{i.f()}return Promise.resolve(null)}},{key:"deleteOutgoingRoomKeyRequest",value:function(e,t){for(var r=0;r<this._outgoingRoomKeyRequests.length;r++){var n=this._outgoingRoomKeyRequests[r];if(n.requestId===e)return n.state!=t?(d.logger.warn("Cannot delete room key request in state ".concat(n.state," ")+"(expected ".concat(t,")")),Promise.resolve(null)):(this._outgoingRoomKeyRequests.splice(r,1),Promise.resolve(n))}return Promise.resolve(null)}},{key:"getAccount",value:function(e,t){t(this._account)}},{key:"storeAccount",value:function(e,t){this._account=t}},{key:"getCrossSigningKeys",value:function(e,t){t(this._crossSigningKeys)}},{key:"getSecretStorePrivateKey",value:function(e,t,r){return t(this._privateKeys[r]||null)}},{key:"storeCrossSigningKeys",value:function(e,t){this._crossSigningKeys=t}},{key:"storeSecretStorePrivateKey",value:function(e,t,r){this._privateKeys[t]=r}},{key:"countEndToEndSessions",value:function(e,t){return Object.keys(this._sessions).length}},{key:"getEndToEndSession",value:function(e,t,r,n){n((this._sessions[e]||{})[t]||null)}},{key:"getEndToEndSessions",value:function(e,t,r){r(this._sessions[e]||{})}},{key:"getAllEndToEndSessions",value:function(e,t){Object.entries(this._sessions).forEach((function(e){var r=(0,s.default)(e,2),n=r[0],i=r[1];Object.entries(i).forEach((function(e){var r=(0,s.default)(e,2),i=r[0],o=r[1];t(p(p({},o),{},{deviceKey:n,sessionId:i}))}))}))}},{key:"storeEndToEndSession",value:function(e,t,r,n){var i=this._sessions[e];void 0===i&&(i={},this._sessions[e]=i),i[t]=r}},{key:"storeEndToEndSessionProblem",value:(n=(0,u.default)(a.default.mark((function e(t,r,n){var i;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(i=this._sessionProblems[t]=this._sessionProblems[t]||[]).push({type:r,fixed:n,time:Date.now()}),i.sort((function(e,t){return e.time-t.time}));case 3:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return n.apply(this,arguments)})},{key:"getEndToEndSessionProblem",value:(r=(0,u.default)(a.default.mark((function e(t,r){var n,i,o,s,u;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((n=this._sessionProblems[t]||[]).length){e.next=3;break}return e.abrupt("return",null);case 3:i=n[n.length-1],o=v(n),e.prev=5,o.s();case 7:if((s=o.n()).done){e.next=13;break}if(!((u=s.value).time>r)){e.next=11;break}return e.abrupt("return",Object.assign({},u,{fixed:i.fixed}));case 11:e.next=7;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(5),o.e(e.t0);case 18:return e.prev=18,o.f(),e.finish(18);case 21:if(!i.fixed){e.next=25;break}return e.abrupt("return",null);case 25:return e.abrupt("return",i);case 26:case"end":return e.stop()}}),e,this,[[5,15,18,21]])}))),function(e,t){return r.apply(this,arguments)})},{key:"filterOutNotifiedErrorDevices",value:(t=(0,u.default)(a.default.mark((function e(t){var r,n,i,s,u,c,l;return a.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=this._notifiedErrorDevices,n=[],i=v(t);try{for(i.s();!(s=i.n()).done;)u=s.value,c=u.userId,l=u.deviceInfo,c in r?l.deviceId in r[c]||(n.push(u),r[c][l.deviceId]=!0):(n.push(u),r[c]=(0,o.default)({},l.deviceId,!0))}catch(e){i.e(e)}finally{i.f()}return e.abrupt("return",n);case 5:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"getEndToEndInboundGroupSession",value:function(e,t,r,n){var i=e+"/"+t;n(this._inboundGroupSessions[i]||null,this._inboundGroupSessionsWithheld[i]||null)}},{key:"getAllEndToEndInboundGroupSessions",value:function(e,t){for(var r=0,n=Object.keys(this._inboundGroupSessions);r<n.length;r++){var i=n[r];t({senderKey:i.substr(0,43),sessionId:i.substr(44),sessionData:this._inboundGroupSessions[i]})}t(null)}},{key:"addEndToEndInboundGroupSession",value:function(e,t,r,n){var i=e+"/"+t;void 0===this._inboundGroupSessions[i]&&(this._inboundGroupSessions[i]=r)}},{key:"storeEndToEndInboundGroupSession",value:function(e,t,r,n){this._inboundGroupSessions[e+"/"+t]=r}},{key:"storeEndToEndInboundGroupSessionWithheld",value:function(e,t,r,n){var i=e+"/"+t;this._inboundGroupSessionsWithheld[i]=r}},{key:"getEndToEndDeviceData",value:function(e,t){t(this._deviceData)}},{key:"storeEndToEndDeviceData",value:function(e,t){this._deviceData=e}},{key:"storeEndToEndRoom",value:function(e,t,r){this._rooms[e]=t}},{key:"getEndToEndRooms",value:function(e,t){t(this._rooms)}},{key:"getSessionsNeedingBackup",value:function(e){var t=[];for(var r in this._sessionsNeedingBackup)if(this._inboundGroupSessions[r]&&(t.push({senderKey:r.substr(0,43),sessionId:r.substr(44),sessionData:this._inboundGroupSessions[r]}),e&&r.length>=e))break;return Promise.resolve(t)}},{key:"countSessionsNeedingBackup",value:function(){return Promise.resolve(Object.keys(this._sessionsNeedingBackup).length)}},{key:"unmarkSessionsNeedingBackup",value:function(e){var t,r=v(e);try{for(r.s();!(t=r.n()).done;){var n=t.value,i=n.senderKey+"/"+n.sessionId;delete this._sessionsNeedingBackup[i]}}catch(e){r.e(e)}finally{r.f()}return Promise.resolve()}},{key:"markSessionsNeedingBackup",value:function(e){var t,r=v(e);try{for(r.s();!(t=r.n()).done;){var n=t.value,i=n.senderKey+"/"+n.sessionId;this._sessionsNeedingBackup[i]=!0}}catch(e){r.e(e)}finally{r.f()}return Promise.resolve()}},{key:"doTxn",value:function(e,t,r){return Promise.resolve(r(null))}}]),e}();r.MemoryCryptoStore=y},{"../../logger":95,"../../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27}],81:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.VerificationBase=r.SwitchStartEventError=void 0;var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/defineProperty")),s=n(e("@babel/runtime/helpers/slicedToArray")),a=n(e("@babel/runtime/helpers/asyncToGenerator")),u=n(e("@babel/runtime/helpers/createClass")),c=n(e("@babel/runtime/helpers/classCallCheck")),l=n(e("@babel/runtime/helpers/inherits")),d=n(e("@babel/runtime/helpers/possibleConstructorReturn")),f=n(e("@babel/runtime/helpers/getPrototypeOf")),h=n(e("@babel/runtime/helpers/wrapNativeSuper")),p=e("../../models/event"),v=e("events"),g=e("../../logger"),y=e("../deviceinfo"),m=e("./Error"),_=e("../CrossSigning");function b(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,f.default)(e);if(t){var i=(0,f.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,d.default)(this,r)}}var k=new Error("Verification timed out"),S=function(e){(0,l.default)(r,e);var t=b(r);function r(e){var n;return(0,c.default)(this,r),(n=t.call(this)).startEvent=e,n}return r}((0,h.default)(Error));r.SwitchStartEventError=S;var E=function(e){(0,l.default)(n,e);var t,r=b(n);function n(e,t,i,o,s,a){var u;return(0,c.default)(this,n),(u=r.call(this))._channel=e,u._baseApis=t,u.userId=i,u.deviceId=o,u.startEvent=s,u.request=a,u.cancelled=!1,u._done=!1,u._promise=null,u._transactionTimeoutTimer=null,u}return(0,u.default)(n,[{key:"_resetTimer",value:function(){var e=this;g.logger.info("Refreshing/starting the verification transaction timeout timer"),null!==this._transactionTimeoutTimer&&clearTimeout(this._transactionTimeoutTimer),this._transactionTimeoutTimer=setTimeout((function(){e._done||e.cancelled||(g.logger.info("Triggering verification timeout"),e.cancel(k))}),6e5)}},{key:"_endTimer",value:function(){null!==this._transactionTimeoutTimer&&(clearTimeout(this._transactionTimeoutTimer),this._transactionTimeoutTimer=null)}},{key:"_send",value:function(e,t){return this._channel.send(e,t)}},{key:"_waitForEvent",value:function(e){var t=this;if(this._done)return Promise.reject(new Error("Verification is already done"));var r=this.request.getEventFromOtherParty(e);return r?Promise.resolve(r):(this._expectedEvent=e,new Promise((function(e,r){t._resolveEvent=e,t._rejectEvent=r})))}},{key:"canSwitchStartEvent",value:function(){return!1}},{key:"switchStartEvent",value:function(e){if(this.canSwitchStartEvent(e))if(g.logger.log("Verification Base: switching verification start event",{restartingFlow:!!this._rejectEvent}),this._rejectEvent){var t=this._rejectEvent;this._rejectEvent=void 0,t(new S(e))}else this.startEvent=e}},{key:"handleEvent",value:function(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()){var t=this._reject;if(this._reject=void 0,t){var r=e.getContent(),n=r.reason,i=r.code;t(new Error("Other side cancelled verification "+"because ".concat(n," (").concat(i,")")))}}else if(this._expectedEvent){var o=new Error("Unexpected message: expecting "+this._expectedEvent+" but got "+e.getType());if(this._expectedEvent=void 0,this._rejectEvent){var s=this._rejectEvent;this._rejectEvent=void 0,s(o)}this.cancel(o)}}},{key:"done",value:function(){if(this._endTimer(),!this._done)return this.request.onVerifierFinished(),this._resolve(),(0,_.requestKeysDuringVerification)(this._baseApis,this.userId,this.deviceId)}},{key:"cancel",value:function(e){if(this._endTimer(),!this._done){if(this.cancelled=!0,this.request.onVerifierCancelled(),this.userId&&this.deviceId)if(e===k){var t=(0,m.newTimeoutError)();this._send(t.getType(),t.getContent())}else if(e instanceof p.MatrixEvent){if(e.getSender()!==this.userId){var r=e.getContent();"m.key.verification.cancel"===e.getType()?(r.code=r.code||"m.unknown",r.reason=r.reason||r.body||"Unknown reason",this._send("m.key.verification.cancel",r)):this._send("m.key.verification.cancel",{code:"m.unknown",reason:r.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)}}},{key:"verify",value:function(){var e=this;return this._promise||(this._promise=new Promise((function(t,r){e._resolve=function(){e._done=!0,e._endTimer(),t.apply(void 0,arguments)},e._reject=function(){e._done=!0,e._endTimer(),r.apply(void 0,arguments)}})),this._doVerification&&!this._started&&(this._started=!0,this._resetTimer(),Promise.resolve(this._doVerification()).then(this.done.bind(this),this.cancel.bind(this)))),this._promise}},{key:"_verifyKeys",value:(t=(0,a.default)(i.default.mark((function e(t,r,n){var a,u,c,l,d,f,h,p,v,m,_,b;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:a=[],u=0,c=Object.entries(r);case 2:if(!(u<c.length)){e.next=23;break}if(l=(0,s.default)(c[u],2),d=l[0],f=l[1],h=d.split(":",2)[1],!(p=this._baseApis.getStoredDevice(t,h))){e.next=12;break}return e.next=9,n(d,p,f);case 9:a.push(h),e.next=20;break;case 12:if(!(v=this._baseApis._crypto._deviceList.getStoredCrossSigningForUser(t))||v.getId()!==h){e.next=19;break}return e.next=16,n(d,y.DeviceInfo.fromStorage({keys:(0,o.default)({},d,h)},h),f);case 16:a.push(h),e.next=20;break;case 19:g.logger.warn("verification: Could not find device ".concat(h," to verify"));case 20:u++,e.next=2;break;case 23:if(a.length){e.next=25;break}throw new Error("No devices could be verified");case 25:g.logger.info("Verification completed! Marking devices verified: ",a),m=0,_=a;case 27:if(!(m<_.length)){e.next=34;break}return b=_[m],e.next=31,this._baseApis.setDeviceVerified(t,b);case 31:m++,e.next=27;break;case 34:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"initiatedByMe",get:function(){if(!this.startEvent)return!0;var e=this.startEvent.getSender(),t=this.startEvent.getContent();return e===this._baseApis.getUserId()&&t.from_device===this._baseApis.getDeviceId()}}]),n}(v.EventEmitter);r.VerificationBase=E},{"../../logger":95,"../../models/event":100,"../CrossSigning":60,"../deviceinfo":72,"./Error":82,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/helpers/wrapNativeSuper":26,"@babel/runtime/regenerator":27,events:36}],82:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.newVerificationError=i,r.errorFactory=o,r.errorFromEvent=function(e){var t=e.getContent();if(t){var r=t.code,n=t.reason;return{code:r,reason:n}}return{code:"Unknown error",reason:"m.unknown"}},r.newInvalidMessageError=r.newUserMismatchError=r.newKeyMismatchError=r.newUnexpectedMessageError=r.newUnknownMethodError=r.newUnknownTransactionError=r.newTimeoutError=r.newUserCancelledError=void 0;var n=e("../../models/event");function i(e,t,r){var i=Object.assign({},{code:e,reason:t},r);return new n.MatrixEvent({type:"m.key.verification.cancel",content:i})}function o(e,t){return function(r){return i(e,t,r)}}var s=o("m.user","Cancelled by user");r.newUserCancelledError=s;var a=o("m.timeout","Timed out");r.newTimeoutError=a;var u=o("m.unknown_transaction","Unknown transaction");r.newUnknownTransactionError=u;var c=o("m.unknown_method","Unknown method");r.newUnknownMethodError=c;var l=o("m.unexpected_message","Unexpected message");r.newUnexpectedMessageError=l;var d=o("m.key_mismatch","Key mismatch");r.newKeyMismatchError=d;var f=o("m.user_error","User mismatch");r.newUserMismatchError=f;var h=o("m.invalid_message","Invalid message");r.newInvalidMessageError=h},{"../../models/event":100}],83:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.IllegalMethod=void 0;var i=n(e("@babel/runtime/helpers/construct")),o=n(e("@babel/runtime/regenerator")),s=n(e("@babel/runtime/helpers/asyncToGenerator")),a=n(e("@babel/runtime/helpers/classCallCheck")),u=n(e("@babel/runtime/helpers/createClass")),c=n(e("@babel/runtime/helpers/inherits")),l=n(e("@babel/runtime/helpers/possibleConstructorReturn")),d=n(e("@babel/runtime/helpers/getPrototypeOf"));function f(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,d.default)(e);if(t){var i=(0,d.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}var h=function(e){(0,c.default)(n,e);var t,r=f(n);function n(){return(0,a.default)(this,n),r.apply(this,arguments)}return(0,u.default)(n,[{key:"_doVerification",value:(t=(0,s.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:throw new Error("Verification is not possible with this method");case 1:case"end":return e.stop()}}),e)}))),function(){return t.apply(this,arguments)})}],[{key:"factory",value:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,i.default)(n,t)}},{key:"NAME",get:function(){return"org.matrix.illegal_method"}}]),n}(e("./Base").VerificationBase);r.IllegalMethod=h},{"./Base":81,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/construct":7,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/regenerator":27}],84:[function(e,t,r){(function(t,n){"use strict";var i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.QRCodeData=r.ReciprocateQRCode=r.SCAN_QR_CODE_METHOD=r.SHOW_QR_CODE_METHOD=void 0;var o=i(e("@babel/runtime/helpers/construct")),s=i(e("@babel/runtime/regenerator")),a=i(e("@babel/runtime/helpers/asyncToGenerator")),u=i(e("@babel/runtime/helpers/classCallCheck")),c=i(e("@babel/runtime/helpers/createClass")),l=i(e("@babel/runtime/helpers/inherits")),d=i(e("@babel/runtime/helpers/possibleConstructorReturn")),f=i(e("@babel/runtime/helpers/getPrototypeOf")),h=e("./Base"),p=e("./Error"),v=e("../olmlib");function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,f.default)(e);if(t){var i=(0,f.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,d.default)(this,r)}}r.SHOW_QR_CODE_METHOD="m.qr_code.show.v1";r.SCAN_QR_CODE_METHOD="m.qr_code.scan.v1";var y=function(e){(0,l.default)(n,e);var t,r=g(n);function n(){return(0,u.default)(this,n),r.apply(this,arguments)}return(0,c.default)(n,[{key:"_doVerification",value:(t=(0,a.default)(s.default.mark((function e(){var t,r,n,i,o,a=this;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.startEvent){e.next=2;break}throw new Error("It is not currently possible to start verificationwith this method yet.");case 2:if(t=this.request.qrCodeData,this.startEvent.getContent().secret===t.encodedSharedSecret){e.next=5;break}throw(0,p.newKeyMismatchError)();case 5:return e.next=7,new Promise((function(e,t){a.reciprocateQREvent={confirm:e,cancel:function(){return t((0,p.newUserCancelledError)())}},a.emit("show_reciprocate_qr",a.reciprocateQREvent)}));case 7:r={},e.t0=t.mode,e.next=e.t0===m?11:e.t0===_?14:e.t0===b?17:20;break;case 11:return n=t.otherUserMasterKey,r["ed25519:".concat(n)]=n,e.abrupt("break",20);case 14:return i=this.request.targetDevice.deviceId,r["ed25519:".concat(i)]=t.otherDeviceKey,e.abrupt("break",20);case 17:return o=t.myMasterKey,r["ed25519:".concat(o)]=o,e.abrupt("break",20);case 20:return e.next=22,this._verifyKeys(this.userId,r,(function(e,t,n){var i=r[e];if(!i)throw(0,p.newKeyMismatchError)();if(n!==i)throw console.error("key ID from key info does not match"),(0,p.newKeyMismatchError)();for(var o in t.keys)if(o.startsWith("ed25519")){var s=r[o];if(!s)throw(0,p.newKeyMismatchError)();if(t.keys[o]!==s)throw console.error("master key does not match"),(0,p.newKeyMismatchError)()}}));case 22:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})}],[{key:"factory",value:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,o.default)(n,t)}},{key:"NAME",get:function(){return"m.reciprocate.v1"}}]),n}(h.VerificationBase);r.ReciprocateQRCode=y;var m=0,_=1,b=2,k=function(){function e(t,r,n,i,o,s){(0,u.default)(this,e),this._sharedSecret=r,this._mode=t,this._otherUserMasterKey=n,this._otherDeviceKey=i,this._myMasterKey=o,this._buffer=s}var r,i;return(0,c.default)(e,[{key:"buffer",get:function(){return this._buffer}},{key:"mode",get:function(){return this._mode}},{key:"otherDeviceKey",get:function(){return this._otherDeviceKey}},{key:"otherUserMasterKey",get:function(){return this._otherUserMasterKey}},{key:"myMasterKey",get:function(){return this._myMasterKey}},{key:"encodedSharedSecret",get:function(){return this._sharedSecret}}],[{key:"create",value:(i=(0,a.default)(s.default.mark((function t(r,n){var i,o,a,u,c,l,d,f,h,p;return s.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=e._generateSharedSecret(),o=e._determineMode(r,n),a=null,u=null,c=null,o!==m){t.next=10;break}l=n.getStoredCrossSigningForUser(r.otherUserId),a=l.getId("master"),t.next=17;break;case 10:if(o!==_){t.next=16;break}return t.next=13,e._getOtherDeviceKey(r,n);case 13:u=t.sent,t.next=17;break;case 16:o===b&&(d=n.getUserId(),f=n.getStoredCrossSigningForUser(d),c=f.getId("master"));case 17:return h=e._generateQrData(r,n,o,i,a,u,c),p=e._generateBuffer(h),t.abrupt("return",new e(o,i,a,u,c,p));case 20:case"end":return t.stop()}}),t)}))),function(e,t){return i.apply(this,arguments)})},{key:"_generateSharedSecret",value:function(){var e=new Uint8Array(11);return t.crypto.getRandomValues(e),(0,v.encodeUnpaddedBase64)(e)}},{key:"_getOtherDeviceKey",value:(r=(0,a.default)(s.default.mark((function e(t,r){var n,i,o,a,u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.getUserId(),i=t.targetDevice,o=i?i.deviceId:null,a=r.getStoredDevice(n,o)){e.next=6;break}throw new Error("could not find device "+o);case 6:return u=a.getFingerprint(),e.abrupt("return",u);case 8:case"end":return e.stop()}}),e)}))),function(e,t){return r.apply(this,arguments)})},{key:"_determineMode",value:function(e,t){var r=t.getUserId(),n=e.otherUserId,i=m;r===n&&(i=t.checkUserTrust(r).isCrossSigningVerified()?_:b);return i}},{key:"_generateQrData",value:function(e,t,r,n,i,o,s){var a=t.getUserId(),u={prefix:"MATRIX",version:2,mode:r,transactionId:e.channel.transactionId,firstKeyB64:"",secondKeyB64:"",secretB64:n},c=t.getStoredCrossSigningForUser(a);return r===m?(u.firstKeyB64=c.getId("master"),u.secondKeyB64=i):r===_?(u.firstKeyB64=c.getId("master"),u.secondKeyB64=o):r===b&&(u.firstKeyB64=t.getDeviceEd25519Key(),u.secondKeyB64=s),u}},{key:"_generateBuffer",value:function(e){var t=n.alloc(0),r=function(e){var r=n.from([e]);t=n.concat([t,r])},i=function(e){var r=n.alloc(2);r.writeInt16BE(e,0),t=n.concat([t,r])},o=function(e,r){var o=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=n.from(e,r);o&&i(s.byteLength),t=n.concat([t,s])},s=function(e){var r=(0,v.decodeBase64)(e),i=n.from(r);t=n.concat([t,i])};return o(e.prefix,"ascii",!1),r(e.version),r(e.mode),o(e.transactionId,"utf-8"),s(e.firstKeyB64),s(e.secondKeyB64),s(e.secretB64),t}}]),e}();r.QRCodeData=k}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer)},{"../olmlib":75,"./Base":81,"./Error":82,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/construct":7,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/regenerator":27,buffer:34}],85:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.SAS=void 0;var i=n(e("@babel/runtime/helpers/slicedToArray")),o=n(e("@babel/runtime/regenerator")),s=n(e("@babel/runtime/helpers/asyncToGenerator")),a=n(e("@babel/runtime/helpers/classCallCheck")),u=n(e("@babel/runtime/helpers/createClass")),c=n(e("@babel/runtime/helpers/inherits")),l=n(e("@babel/runtime/helpers/possibleConstructorReturn")),d=n(e("@babel/runtime/helpers/getPrototypeOf")),f=e("./Base"),h=n(e("another-json")),p=e("./Error"),v=e("../../logger");function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,d.default)(e);if(t){var i=(0,d.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}function y(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return m(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var _,b="m.key.verification.start",k=["m.key.verification.accept","m.key.verification.key","m.key.verification.mac"],S=(0,p.errorFactory)("m.mismatched_sas","Mismatched short authentication string"),E=(0,p.errorFactory)("m.mismatched_commitment","Mismatched commitment");var w=[["🐶","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"]];var I={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((function(e){return w[e]}))}};function R(e,t){var r,n={},i=y(t);try{for(i.s();!(r=i.n()).done;){var o=r.value;o in I&&(n[o]=I[o](e))}}catch(e){i.e(e)}finally{i.f()}return n}var T={"hkdf-hmac-sha256":"calculate_mac","hmac-sha256":"calculate_mac_long_kdf"};function x(e,t){return function(){for(var r=e[T[t]],n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];var s=r.apply(e,i);return v.logger.log("SAS calculateMAC:",t,i,s),s}}var C={"curve25519-hkdf-sha256":function(e,t,r){var n="".concat(e._baseApis.getUserId(),"|").concat(e._baseApis.deviceId,"|")+"".concat(e.ourSASPubKey,"|"),i="".concat(e.userId,"|").concat(e.deviceId,"|").concat(e.theirSASPubKey,"|"),o="MATRIX_KEY_VERIFICATION_SAS|"+(e.initiatedByMe?n+i:i+n)+e._channel.transactionId;return t.generate_bytes(o,r)},curve25519:function(e,t,r){var n="".concat(e._baseApis.getUserId()).concat(e._baseApis.deviceId),i="".concat(e.userId).concat(e.deviceId),o="MATRIX_KEY_VERIFICATION_SAS"+(e.initiatedByMe?n+i:i+n)+e._channel.transactionId;return t.generate_bytes(o,r)}},O=["curve25519-hkdf-sha256","curve25519"],A=["sha256"],D=["hkdf-hmac-sha256","hmac-sha256"],P=Object.keys(I),M=new Set(O),U=new Set(A),K=new Set(D),q=new Set(P);function N(e,t){return e instanceof Array?e.filter((function(e){return t.has(e)})):[]}var B=function(e){(0,c.default)(m,e);var r,n,l,d,v,y=g(m);function m(){return(0,a.default)(this,m),y.apply(this,arguments)}return(0,u.default)(m,[{key:"_doVerification",value:(v=(0,s.default)(o.default.mark((function e(){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.Olm.init();case 2:return _=_||new t.Olm.Utility,e.next=5,this._baseApis.downloadKeys([this.userId]);case 5:r=!1;case 6:if(e.prev=6,!this.initiatedByMe){e.next=13;break}return e.next=10,this._doSendVerification();case 10:return e.abrupt("return",e.sent);case 13:return e.next=15,this._doRespondVerification();case 15:return e.abrupt("return",e.sent);case 16:e.next=26;break;case 18:if(e.prev=18,e.t0=e.catch(6),!(e.t0 instanceof f.SwitchStartEventError)){e.next=25;break}this.startEvent=e.t0.startEvent,r=!0,e.next=26;break;case 25:throw e.t0;case 26:if(r){e.next=6;break}case 27:case"end":return e.stop()}}),e,this,[[6,18]])}))),function(){return v.apply(this,arguments)})},{key:"canSwitchStartEvent",value:function(e){if(e.getType()!==b)return!1;var t=e.getContent();return t&&t.method===m.NAME&&this._waitingForAccept}},{key:"_sendStart",value:(d=(0,s.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._channel.completeContent(b,{method:m.NAME,from_device:this._baseApis.deviceId,key_agreement_protocols:O,hashes:A,message_authentication_codes:D,short_authentication_string:P}),e.next=3,this._channel.sendCompleted(b,t);case 3:return e.abrupt("return",t);case 4:case"end":return e.stop()}}),e,this)}))),function(){return d.apply(this,arguments)})},{key:"_doSendVerification",value:(l=(0,s.default)(o.default.mark((function e(){var r,n,a,u,c,l,d,v,g,y,m,b,k,w=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._waitingForAccept=!0,!this.startEvent){e.next=5;break}r=this._channel.completedContentFromEvent(this.startEvent),e.next=8;break;case 5:return e.next=7,this._sendStart();case 7:r=e.sent;case 8:if(this.initiatedByMe){e.next=10;break}throw new f.SwitchStartEventError(this.startEvent);case 10:return e.prev=10,e.next=13,this._waitForEvent("m.key.verification.accept");case 13:n=e.sent;case 14:return e.prev=14,this._waitingForAccept=!1,e.finish(14);case 17:if(a=n.getContent(),u=N(a.short_authentication_string,q),M.has(a.key_agreement_protocol)&&U.has(a.hash)&&K.has(a.message_authentication_code)&&u.length){e.next=21;break}throw(0,p.newUnknownMethodError)();case 21:if("string"==typeof a.commitment){e.next=23;break}throw(0,p.newInvalidMessageError)();case 23:return c=a.key_agreement_protocol,l=a.message_authentication_code,d=a.commitment,v=new t.Olm.SAS,e.prev=27,this.ourSASPubKey=v.get_pubkey(),e.next=31,this._send("m.key.verification.key",{key:this.ourSASPubKey});case 31:return e.next=33,this._waitForEvent("m.key.verification.key");case 33:if(n=e.sent,a=n.getContent(),g=a.key+h.default.stringify(r),_.sha256(g)===d){e.next=38;break}throw E();case 38:return this.theirSASPubKey=a.key,v.set_their_key(a.key),y=C[c](this,v,6),m=new Promise((function(e,t){var r;w.sasEvent={sas:R(y,u),confirm:(r=(0,s.default)(o.default.mark((function r(){return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,w._sendMAC(v,l);case 3:e(),r.next=9;break;case 6:r.prev=6,r.t0=r.catch(0),t(r.t0);case 9:case"end":return r.stop()}}),r,null,[[0,6]])}))),function(){return r.apply(this,arguments)}),cancel:function(){return t((0,p.newUserCancelledError)())},mismatch:function(){return t(S())}},w.emit("show_sas",w.sasEvent)})),e.next=44,Promise.all([this._waitForEvent("m.key.verification.mac").then((function(e){return w._expectedEvent="m.key.verification.done",e})),m]);case 44:return b=e.sent,k=(0,i.default)(b,1),n=k[0],a=n.getContent(),e.next=50,this._checkMAC(v,a,l);case 50:return e.prev=50,v.free(),e.finish(50);case 53:case"end":return e.stop()}}),e,this,[[10,,14,17],[27,,50,53]])}))),function(){return l.apply(this,arguments)})},{key:"_doRespondVerification",value:(n=(0,s.default)(o.default.mark((function e(){var r,n,a,u,c,l,d,f,v,g,y,m,b=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this._channel.completedContentFromEvent(this.startEvent),n=N(O,new Set(r.key_agreement_protocols))[0],a=N(A,new Set(r.hashes))[0],u=N(D,new Set(r.message_authentication_codes))[0],c=N(r.short_authentication_string,q),void 0!==n&&void 0!==a&&void 0!==u&&c.length){e.next=7;break}throw(0,p.newUnknownMethodError)();case 7:return l=new t.Olm.SAS,e.prev=8,d=l.get_pubkey()+h.default.stringify(r),e.next=12,this._send("m.key.verification.accept",{key_agreement_protocol:n,hash:a,message_authentication_code:u,short_authentication_string:c,commitment:_.sha256(d)});case 12:return e.next=14,this._waitForEvent("m.key.verification.key");case 14:return f=e.sent,r=f.getContent(),this.theirSASPubKey=r.key,l.set_their_key(r.key),this.ourSASPubKey=l.get_pubkey(),e.next=21,this._send("m.key.verification.key",{key:this.ourSASPubKey});case 21:return v=C[n](this,l,6),g=new Promise((function(e,t){var r;b.sasEvent={sas:R(v,c),confirm:(r=(0,s.default)(o.default.mark((function r(){return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,b._sendMAC(l,u);case 3:e(),r.next=9;break;case 6:r.prev=6,r.t0=r.catch(0),t(r.t0);case 9:case"end":return r.stop()}}),r,null,[[0,6]])}))),function(){return r.apply(this,arguments)}),cancel:function(){return t((0,p.newUserCancelledError)())},mismatch:function(){return t(S())}},b.emit("show_sas",b.sasEvent)})),e.next=25,Promise.all([this._waitForEvent("m.key.verification.mac").then((function(e){return b._expectedEvent="m.key.verification.done",e})),g]);case 25:return y=e.sent,m=(0,i.default)(y,1),f=m[0],r=f.getContent(),e.next=31,this._checkMAC(l,r,u);case 31:return e.prev=31,l.free(),e.finish(31);case 34:case"end":return e.stop()}}),e,this,[[8,,31,34]])}))),function(){return n.apply(this,arguments)})},{key:"_sendMAC",value:function(e,t){var r={},n=[],i="MATRIX_KEY_VERIFICATION_MAC"+this._baseApis.getUserId()+this._baseApis.deviceId+this.userId+this.deviceId+this._channel.transactionId,o="ed25519:".concat(this._baseApis.deviceId);r[o]=x(e,t)(this._baseApis.getDeviceEd25519Key(),i+o),n.push(o);var s=this._baseApis.getCrossSigningId();if(s){var a="ed25519:".concat(s);r[a]=x(e,t)(s,i+a),n.push(a)}var u=x(e,t)(n.sort().join(","),i+"KEY_IDS");return this._send("m.key.verification.mac",{mac:r,keys:u})}},{key:"_checkMAC",value:(r=(0,s.default)(o.default.mark((function e(t,r,n){var i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i="MATRIX_KEY_VERIFICATION_MAC"+this.userId+this.deviceId+this._baseApis.getUserId()+this._baseApis.deviceId+this._channel.transactionId,r.keys===x(t,n)(Object.keys(r.mac).sort().join(","),i+"KEY_IDS")){e.next=3;break}throw(0,p.newKeyMismatchError)();case 3:return e.next=5,this._verifyKeys(this.userId,r.mac,(function(e,r,o){if(o!==x(t,n)(r.keys[e],i+e))throw(0,p.newKeyMismatchError)()}));case 5:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"events",get:function(){return k}}],[{key:"NAME",get:function(){return"m.sas.v1"}}]),m}(f.VerificationBase);r.SAS=B}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../../logger":95,"./Base":81,"./Error":82,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,"another-json":28}],86:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.InRoomRequests=r.InRoomChannel=void 0;var i=n(e("@babel/runtime/regenerator")),o=n(e("@babel/runtime/helpers/asyncToGenerator")),s=n(e("@babel/runtime/helpers/classCallCheck")),a=n(e("@babel/runtime/helpers/createClass")),u=e("./VerificationRequest"),c=e("../../../logger");function l(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f=function(){function e(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;(0,s.default)(this,e),this._client=t,this._roomId=r,this.userId=n,this._requestEventId=null}var t,r;return(0,a.default)(e,[{key:"getTimestamp",value:function(e){return e.getTs()}},{key:"handleEvent",value:(r=(0,o.default)(i.default.mark((function t(r,n,o){var s,a,u,l,d,f;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n.hasEventId(r.getId())){t.next=2;break}return t.abrupt("return");case 2:if(s=e.getEventType(r),r.getRoomId()===this._roomId){t.next=5;break}return t.abrupt("return");case 5:if(null===this.userId&&(a=e.getOtherPartyUserId(r,this._client))&&(this.userId=a),u=this._client.getUserId(),l=r.getSender(),null===this.userId){t.next=12;break}if(l===u||l===this.userId){t.next=12;break}return c.logger.log("InRoomChannel: ignoring verification event from "+"non-participating sender ".concat(l)),t.abrupt("return");case 12:return null===this._requestEventId&&(this._requestEventId=e.getTransactionId(r)),d=!!r.getUnsigned().transaction_id,f=r.getSender()===this._client.getUserId(),t.next=17,n.handleEvent(s,r,o,d,f);case 17:return t.abrupt("return",t.sent);case 18:case"end":return t.stop()}}),t,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"completedContentFromEvent",value:function(e){var t=Object.assign({},e.getContent());return t["m.relates_to"]=e.getRelation(),t}},{key:"completeContent",value:function(e,t){return t=Object.assign({},t),e!==u.REQUEST_TYPE&&e!==u.READY_TYPE&&e!==u.START_TYPE||(t.from_device=this._client.getDeviceId()),e===u.REQUEST_TYPE?t={body:this._client.getUserId()+" is requesting to verify your key, but your client does not support in-chat key verification. You will need to use legacy key verification to verify keys.",msgtype:u.REQUEST_TYPE,to:this.userId,from_device:t.from_device,methods:t.methods}:t["m.relates_to"]={rel_type:"m.reference",event_id:this.transactionId},t}},{key:"send",value:function(e,t){var r=this.completeContent(e,t);return this.sendCompleted(e,r)}},{key:"sendCompleted",value:(t=(0,o.default)(i.default.mark((function e(t,r){var n,o;return i.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t,t===u.REQUEST_TYPE&&(n="m.room.message"),e.next=4,this._client.sendEvent(this._roomId,n,r);case 4:o=e.sent,t===u.REQUEST_TYPE&&(this._requestEventId=o.event_id);case 6:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"receiveStartFromOtherDevices",get:function(){return!0}},{key:"roomId",get:function(){return this._roomId}},{key:"transactionId",get:function(){return this._requestEventId}}],[{key:"getOtherPartyUserId",value:function(t,r){if(e.getEventType(t)===u.REQUEST_TYPE){var n=r.getUserId(),i=t.getSender(),o=t.getContent().to;return i===n?o:o===n?i:void 0}}},{key:"canCreateRequest",value:function(e){return e===u.REQUEST_TYPE}},{key:"getTransactionId",value:function(t){if(e.getEventType(t)===u.REQUEST_TYPE)return t.getId();var r=t.getRelation();return r&&"m.reference"===r.rel_type?r.event_id:void 0}},{key:"validateEvent",value:function(t,r){var n=e.getTransactionId(t);if("string"!=typeof n||0===n.length)return!1;var i=e.getEventType(t),o=t.getContent();if(i===u.REQUEST_TYPE){if(!o||"string"!=typeof o.to||!o.to.length)return c.logger.log("InRoomChannel: validateEvent: no valid to "+(o&&o.to)),!1;if(!e.getOtherPartyUserId(t,r))return c.logger.log("InRoomChannel: validateEvent: "+"not directed to or sent by me: ".concat(t.getSender())+", ".concat(o&&o.to)),!1}return u.VerificationRequest.validateEvent(i,t,r)}},{key:"getEventType",value:function(e){var t=e.getType();if("m.room.message"===t){var r=e.getContent();if(r)if(r.msgtype===u.REQUEST_TYPE)return u.REQUEST_TYPE}return t&&t!==u.REQUEST_TYPE?t:""}}]),e}();r.InRoomChannel=f;var h=function(){function e(){(0,s.default)(this,e),this._requestsByRoomId=new Map}return(0,a.default)(e,[{key:"getRequest",value:function(e){var t=e.getRoomId(),r=f.getTransactionId(e);return this._getRequestByTxnId(t,r)}},{key:"getRequestByChannel",value:function(e){return this._getRequestByTxnId(e.roomId,e.transactionId)}},{key:"_getRequestByTxnId",value:function(e,t){var r=this._requestsByRoomId.get(e);if(r)return r.get(t)}},{key:"setRequest",value:function(e,t){this._setRequest(e.getRoomId(),f.getTransactionId(e),t)}},{key:"setRequestByChannel",value:function(e,t){this._setRequest(e.roomId,e.transactionId,t)}},{key:"_setRequest",value:function(e,t,r){var n=this._requestsByRoomId.get(e);n||(n=new Map,this._requestsByRoomId.set(e,n)),n.set(t,r)}},{key:"removeRequest",value:function(e){var t=e.getRoomId(),r=this._requestsByRoomId.get(t);r&&(r.delete(f.getTransactionId(e)),0===r.size&&this._requestsByRoomId.delete(t))}},{key:"findRequestInProgress",value:function(e){var t=this._requestsByRoomId.get(e);if(t){var r,n=l(t.values());try{for(n.s();!(r=n.n()).done;){var i=r.value;if(i.pending)return i}}catch(e){n.e(e)}finally{n.f()}}}}]),e}();r.InRoomRequests=h},{"../../../logger":95,"./VerificationRequest":88,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/regenerator":27}],87:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.ToDeviceRequests=r.ToDeviceChannel=void 0;var i=n(e("@babel/runtime/helpers/defineProperty")),o=n(e("@babel/runtime/regenerator")),s=n(e("@babel/runtime/helpers/asyncToGenerator")),a=n(e("@babel/runtime/helpers/typeof")),u=n(e("@babel/runtime/helpers/classCallCheck")),c=n(e("@babel/runtime/helpers/createClass")),l=e("../../../randomstring"),d=e("../../../logger"),f=e("./VerificationRequest"),h=e("../Error"),p=e("../../../models/event");function v(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return g(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var y=function(){function e(t,r,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;(0,u.default)(this,e),this._client=t,this.userId=r,this._devices=n,this.transactionId=i,this._deviceId=o}var t,r;return(0,c.default)(e,[{key:"isToDevices",value:function(e){var t=this;if(e.length===this._devices.length){var r,n=v(e);try{var i=function(){var e=r.value;if(!t._devices.find((function(t){return t.deviceId===e.deviceId})))return{v:!1}};for(n.s();!(r=n.n()).done;){var o=i();if("object"===(0,a.default)(o))return o.v}}catch(e){n.e(e)}finally{n.f()}return!0}return!1}},{key:"getTimestamp",value:function(e){var t=e.getContent();return t&&t.timestamp}},{key:"handleEvent",value:(r=(0,s.default)(o.default.mark((function e(t,r,n){var i,s,a,u,c,l,d,p,v=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getType(),s=t.getContent(),i!==f.REQUEST_TYPE&&i!==f.READY_TYPE&&i!==f.START_TYPE){e.next=9;break}if(this.transactionId||(this.transactionId=s.transaction_id),a=s.from_device,!this._deviceId&&this._devices.includes(a)&&(this._deviceId=a),this._deviceId&&this._deviceId===a){e.next=9;break}return u=this.completeContent((0,h.errorFromEvent)((0,h.newUnexpectedMessageError)())),e.abrupt("return",this._sendToDevices(f.CANCEL_TYPE,u,[a]));case 9:return c=r.phase===f.PHASE_STARTED||r.phase===f.PHASE_READY,e.next=12,r.handleEvent(t.getType(),t,n,!1,!1);case 12:if(l=r.phase===f.PHASE_STARTED||r.phase===f.PHASE_READY,i!==f.START_TYPE&&i!==f.READY_TYPE||c||!l||!this._deviceId){e.next=20;break}if(!(d=this._devices.filter((function(e){return e!==v._deviceId}))).length){e.next=20;break}return p=this.completeContent({code:"m.accepted",reason:"Verification request accepted by another device"}),e.next=20,this._sendToDevices(f.CANCEL_TYPE,p,d);case 20:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return r.apply(this,arguments)})},{key:"completedContentFromEvent",value:function(e){return e.getContent()}},{key:"completeContent",value:function(e,t){return t=Object.assign({},t),this.transactionId&&(t.transaction_id=this.transactionId),e!==f.REQUEST_TYPE&&e!==f.READY_TYPE&&e!==f.START_TYPE||(t.from_device=this._client.getDeviceId()),e===f.REQUEST_TYPE&&(t.timestamp=Date.now()),t}},{key:"send",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t!==f.REQUEST_TYPE&&t!==f.START_TYPE||this.transactionId||(this.transactionId=e.makeTransactionId());var n=this.completeContent(t,r);return this.sendCompleted(t,n)}},{key:"sendCompleted",value:(t=(0,s.default)(o.default.mark((function e(t,r){var n,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==f.REQUEST_TYPE){e.next=6;break}return e.next=3,this._sendToDevices(t,r,this._devices);case 3:n=e.sent,e.next=9;break;case 6:return e.next=8,this._sendToDevices(t,r,[this._deviceId]);case 8:n=e.sent;case 9:return i=new p.MatrixEvent({sender:this._client.getUserId(),content:r,type:t}),e.next=12,this._request.handleEvent(t,i,!0,!0,!0);case 12:return e.abrupt("return",n);case 13:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"_sendToDevices",value:function(e,t,r){if(r.length){var n,o={},s=v(r);try{for(s.s();!(n=s.n()).done;){o[n.value]=t}}catch(e){s.e(e)}finally{s.f()}return this._client.sendToDevice(e,(0,i.default)({},this.userId,o))}return Promise.resolve()}},{key:"deviceId",get:function(){return this._deviceId}}],[{key:"getEventType",value:function(e){return e.getType()}},{key:"getTransactionId",value:function(e){var t=e.getContent();return t&&t.transaction_id}},{key:"canCreateRequest",value:function(e){return e===f.REQUEST_TYPE||e===f.START_TYPE}},{key:"validateEvent",value:function(e,t){if(e.isCancelled())return d.logger.warn("Ignoring flagged verification request from "+e.getSender()),!1;var r=e.getContent();if(!r)return d.logger.warn("ToDeviceChannel.validateEvent: invalid: no content"),!1;if(!r.transaction_id)return d.logger.warn("ToDeviceChannel.validateEvent: invalid: no transaction_id"),!1;var n=e.getType();if(n===f.REQUEST_TYPE){if(!Number.isFinite(r.timestamp))return d.logger.warn("ToDeviceChannel.validateEvent: invalid: no timestamp"),!1;if(e.getSender()===t.getUserId()&&r.from_device==t.getDeviceId())return d.logger.warn("ToDeviceChannel.validateEvent: invalid: from own device"),!1}return f.VerificationRequest.validateEvent(n,e,t)}},{key:"makeTransactionId",value:function(){return(0,l.randomString)(32)}}]),e}();r.ToDeviceChannel=y;var m=function(){function e(){(0,u.default)(this,e),this._requestsByUserId=new Map}return(0,c.default)(e,[{key:"getRequest",value:function(e){return this.getRequestBySenderAndTxnId(e.getSender(),y.getTransactionId(e))}},{key:"getRequestByChannel",value:function(e){return this.getRequestBySenderAndTxnId(e.userId,e.transactionId)}},{key:"getRequestBySenderAndTxnId",value:function(e,t){var r=this._requestsByUserId.get(e);if(r)return r.get(t)}},{key:"setRequest",value:function(e,t){this.setRequestBySenderAndTxnId(e.getSender(),y.getTransactionId(e),t)}},{key:"setRequestByChannel",value:function(e,t){this.setRequestBySenderAndTxnId(e.userId,e.transactionId,t)}},{key:"setRequestBySenderAndTxnId",value:function(e,t,r){var n=this._requestsByUserId.get(e);n||(n=new Map,this._requestsByUserId.set(e,n)),n.set(t,r)}},{key:"removeRequest",value:function(e){var t=e.getSender(),r=this._requestsByUserId.get(t);r&&(r.delete(y.getTransactionId(e)),0===r.size&&this._requestsByUserId.delete(t))}},{key:"findRequestInProgress",value:function(e,t){var r=this._requestsByUserId.get(e);if(r){var n,i=v(r.values());try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.pending&&o.channel.isToDevices(t))return o}}catch(e){i.e(e)}finally{i.f()}}}},{key:"getRequestsInProgress",value:function(e){var t=this._requestsByUserId.get(e);return t?Array.from(t.values()).filter((function(e){return e.pending})):[]}}]),e}();r.ToDeviceRequests=m},{"../../../logger":95,"../../../models/event":100,"../../../randomstring":110,"../Error":82,"./VerificationRequest":88,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24,"@babel/runtime/regenerator":27}],88:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.VerificationRequest=r.PHASE_DONE=r.PHASE_CANCELLED=r.PHASE_STARTED=r.PHASE_READY=r.PHASE_REQUESTED=r.PHASE_UNSENT=r.READY_TYPE=r.DONE_TYPE=r.CANCEL_TYPE=r.START_TYPE=r.REQUEST_TYPE=r.EVENT_PREFIX=void 0;var i=n(e("@babel/runtime/helpers/slicedToArray")),o=n(e("@babel/runtime/regenerator")),s=n(e("@babel/runtime/helpers/toConsumableArray")),a=n(e("@babel/runtime/helpers/asyncToGenerator")),u=n(e("@babel/runtime/helpers/classCallCheck")),c=n(e("@babel/runtime/helpers/createClass")),l=n(e("@babel/runtime/helpers/assertThisInitialized")),d=n(e("@babel/runtime/helpers/inherits")),f=n(e("@babel/runtime/helpers/possibleConstructorReturn")),h=n(e("@babel/runtime/helpers/getPrototypeOf")),p=n(e("@babel/runtime/helpers/defineProperty")),v=e("../../../logger"),g=e("events"),y=e("../Error"),m=e("../QRCode");function _(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return b(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return b(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function k(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,h.default)(e);if(t){var i=(0,h.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,f.default)(this,r)}}var S="m.key.verification.";r.EVENT_PREFIX=S;var E=S+"request";r.REQUEST_TYPE=E;var w=S+"start";r.START_TYPE=w;var I=S+"cancel";r.CANCEL_TYPE=I;r.DONE_TYPE="m.key.verification.done";var R=S+"ready";r.READY_TYPE=R;r.PHASE_UNSENT=1;r.PHASE_REQUESTED=2;r.PHASE_READY=3;r.PHASE_STARTED=4;r.PHASE_CANCELLED=5;r.PHASE_DONE=6;var T=function(e){(0,d.default)(b,e);var t,r,n,f,h,g=k(b);function b(e,t,r){var n;return(0,u.default)(this,b),n=g.call(this),(0,p.default)((0,l.default)(n),"_cancelOnTimeout",(function(){try{n.initiatedByMe?n.cancel({reason:"Other party didn't accept in time",code:"m.timeout"}):n.cancel({reason:"User didn't accept in time",code:"m.timeout"})}catch(e){v.logger.error("Error while cancelling verification request",e)}})),n.channel=e,n.channel._request=(0,l.default)(n),n._verificationMethods=t,n._client=r,n._commonMethods=[],n._setPhase(1,!1),n._eventsByUs=new Map,n._eventsByThem=new Map,n._observeOnly=!1,n._timeoutTimer=null,n._accepting=!1,n._declining=!1,n._verifierHasFinished=!1,n._cancelled=!1,n._chosenMethod=null,n._qrCodeData=null,n._requestReceivedAt=null,n}return(0,c.default)(b,[{key:"calculateEventTimeout",value:function(e){var t=this.channel.getTimestamp(e)+6e5;if(this._requestReceivedAt&&!this.initiatedByMe&&this.phase<=2){var r=this._requestReceivedAt+12e4;t=Math.min(t,r)}return Math.max(0,t-Date.now())}},{key:"otherPartySupportsMethod",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!t&&!this.ready&&!this.started)return!1;var r=this._eventsByThem.get(E)||this._eventsByThem.get(R);if(!r){if(this.started&&this.initiatedByMe){var n=this._eventsByUs.get(w),i=n&&n.getContent(),o=i&&i.method;return e==o}return!1}var s=r.getContent();if(!s)return!1;var a=s.methods;return!!Array.isArray(a)&&a.includes(e)}},{key:"beginKeyVerification",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!this.observeOnly&&!this._verifier){var r=2===this.phase||3===this.phase||1===this.phase&&this.channel.constructor.canCreateRequest(w);if(r){if(this._commonMethods.length&&!this._commonMethods.includes(e))throw(0,y.newUnknownMethodError)();if(this._verifier=this._createVerifier(e,null,t),!this._verifier)throw(0,y.newUnknownMethodError)();this._chosenMethod=e}}return this._verifier}},{key:"sendRequest",value:(h=(0,a.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.observeOnly||1!==this._phase){e.next=4;break}return t=(0,s.default)(this._verificationMethods.keys()),e.next=4,this.channel.send(E,{methods:t});case 4:case"end":return e.stop()}}),e,this)}))),function(){return h.apply(this,arguments)})},{key:"cancel",value:(f=(0,a.default)(o.default.mark((function e(){var t,r,n,i,s,a=arguments;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=a.length>0&&void 0!==a[0]?a[0]:{},r=t.reason,n=void 0===r?"User declined":r,i=t.code,s=void 0===i?"m.user":i,this.observeOnly||5===this._phase){e.next=11;break}if(this._declining=!0,this.emit("change"),!this._verifier){e.next=8;break}return e.abrupt("return",this._verifier.cancel((0,y.errorFactory)(s,n)()));case 8:return this._cancellingUserId=this._client.getUserId(),e.next=11,this.channel.send(I,{code:s,reason:n});case 11:case"end":return e.stop()}}),e,this)}))),function(){return f.apply(this,arguments)})},{key:"accept",value:(n=(0,a.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.observeOnly||2!==this.phase||this.initiatedByMe){e.next=6;break}return t=(0,s.default)(this._verificationMethods.keys()),this._accepting=!0,this.emit("change"),e.next=6,this.channel.send(R,{methods:t});case 6:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"waitFor",value:function(e){var t=this;return new Promise((function(r,n){var i=function i(){var o=!1;return e(t)?(r(t),o=!0):t.cancelled&&(n(new Error("cancelled")),o=!0),o&&t.off("change",i),o};i()||t.on("change",i)}))}},{key:"_setPhase",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._phase=e,t&&this.emit("change")}},{key:"_getEventByEither",value:function(e){return this._eventsByThem.get(e)||this._eventsByUs.get(e)}},{key:"_getEventBy",value:function(e,t){return t?this._eventsByThem.get(e):this._eventsByUs.get(e)}},{key:"_calculatePhaseTransitions",value:function(){var e=[{phase:1}],t=function(){return e[e.length-1].phase},r=this._eventsByThem.has(E),n=this._getEventBy(E,r);n&&e.push({phase:2,event:n});var i,o=n&&this._getEventBy(R,!r);if(o&&2===t()&&e.push({phase:3,event:o}),o||!n){var s=this._eventsByThem.get(w),a=this._eventsByUs.get(w);i=s&&a?s.getSender()<a.getSender()?s:a:s||a}else i=this._getEventBy(w,!r);if(i){var u=2===t()&&n.getSender()!==i.getSender(),c=1===t()&&this.channel.constructor.canCreateRequest(w);(u||3===t()||c)&&e.push({phase:4,event:i})}var l=this._eventsByUs.get("m.key.verification.done");(this._verifierHasFinished||l&&4===t())&&e.push({phase:6});var d=this._getEventByEither(I);return(this._cancelled||d)&&6!==t()?(e.push({phase:5,event:d}),e):e}},{key:"_transitionToPhase",value:function(e){var t=this,r=e.phase,n=e.event;if((2===r||3===r)&&!this._wasSentByOwnDevice(n)){var i=n.getContent();this._commonMethods=i.methods.filter((function(e){return t._verificationMethods.has(e)}))}if(this.observeOnly||2!==r&&4!==r&&3!==r||this.channel.receiveStartFromOtherDevices&&this._wasSentByOwnUser(n)&&!this._wasSentByOwnDevice(n)&&(this._observeOnly=!0),4===r){var o=n.getContent().method;this._verifier||this.observeOnly||(this._verifier=this._createVerifier(o,n),this._verifier?this._chosenMethod=o:this.cancel({code:"m.unknown_method",reason:"Unknown method: ".concat(o)}))}}},{key:"_applyPhaseTransitions",value:function(){var e,t=this,r=this._calculatePhaseTransitions(),n=r.findIndex((function(e){return e.phase===t.phase})),i=r.slice(n+1),o=_(i);try{for(o.s();!(e=o.n()).done;){var s=e.value;this._transitionToPhase(s)}}catch(e){o.e(e)}finally{o.f()}return i}},{key:"_isWinningStartRace",value:function(e){if(e.getType()!==w)return!1;var t,r,n=this._verifier.startEvent;if(this.isSelfVerification)if(n){var i=n.getContent();t=i&&i.from_device}else t=this._client.getDeviceId();else t=n?n.getSender():this._client.getUserId();if(this.isSelfVerification){var o=e.getContent();r=o&&o.from_device}else r=e.getSender();return r<t}},{key:"hasEventId",value:function(e){var t,r=_(this._eventsByUs.values());try{for(r.s();!(t=r.n()).done;){if(t.value.getId()===e)return!0}}catch(e){r.e(e)}finally{r.f()}var n,i=_(this._eventsByThem.values());try{for(i.s();!(n=i.n()).done;){if(n.value.getId()===e)return!0}}catch(e){i.e(e)}finally{i.f()}return!1}},{key:"handleEvent",value:(r=(0,a.default)(o.default.mark((function e(t,r,n,i,s){var a,u,c,l,d,f;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.done&&!this.cancelled){e.next=2;break}return e.abrupt("return");case 2:if(a=this._observeOnly,this._adjustObserveOnly(r,n),this.observeOnly||i){e.next=9;break}return e.next=7,this._cancelOnError(t,r);case 7:if(!e.sent){e.next=9;break}return e.abrupt("return");case 9:if(!(s?this._eventsByUs.has(t):this._eventsByThem.has(t))){e.next=12;break}return e.abrupt("return");case 12:if(u=this.phase,this._addEvent(t,r,s),c=this._applyPhaseTransitions(),e.prev=15,this._verifier&&!this.observeOnly&&(l=this._isWinningStartRace(r),this._verifier.canSwitchStartEvent(r)&&l?this._verifier.switchStartEvent(r):i||(t===I||this._verifier.events&&this._verifier.events.includes(t))&&this._verifier.handleEvent(r)),!c.length){e.next=30;break}if(!n||!c.some((function(e){return 3===e.phase}))){e.next=24;break}if(!this.otherPartySupportsMethod(m.SCAN_QR_CODE_METHOD,!0)){e.next=24;break}return e.next=23,m.QRCodeData.create(this,this._client);case 23:this._qrCodeData=e.sent;case 24:d=c[c.length-1],f=d.phase,this._setupTimeout(f),this._setPhase(f),e.next=31;break;case 30:this._observeOnly!==a&&this.emit("change");case 31:return e.prev=31,v.logger.log("Verification request ".concat(this.channel.transactionId,": ")+"".concat(t," event with id:").concat(r.getId(),", ")+"content:".concat(JSON.stringify(r.getContent())," ")+"deviceId:".concat(this.channel.deviceId,", ")+"sender:".concat(r.getSender(),", isSentByUs:").concat(s,", ")+"isLiveEvent:".concat(n,", isRemoteEcho:").concat(i,", ")+"phase:".concat(u,"=>").concat(this.phase,", ")+"observeOnly:".concat(a,"=>").concat(this._observeOnly)),e.finish(31);case 34:case"end":return e.stop()}}),e,this,[[15,,31,34]])}))),function(e,t,n,i,o){return r.apply(this,arguments)})},{key:"_setupTimeout",value:function(e){(!this._timeoutTimer&&!this.observeOnly&&2===e&&(this._timeoutTimer=setTimeout(this._cancelOnTimeout,this.timeout)),this._timeoutTimer)&&((4===e||3===e||6===e||5===e)&&(clearTimeout(this._timeoutTimer),this._timeoutTimer=null))}},{key:"_cancelOnError",value:(t=(0,a.default)(o.default.mark((function e(t,r){var n,i,s,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t!==w){e.next=6;break}if(n=r.getContent().method,this._verificationMethods.has(n)){e.next=6;break}return e.next=5,this.cancel((0,y.errorFromEvent)((0,y.newUnknownMethodError)()));case 5:return e.abrupt("return",!0);case 6:if(i=t===E&&1!==this.phase,s=t===R&&2!==this.phase,1===this.phase||!i&&!s){e.next=14;break}return v.logger.warn("Cancelling, unexpected ".concat(t," verification ")+"event from ".concat(r.getSender())),a="Unexpected ".concat(t," event in phase ").concat(this.phase),e.next=13,this.cancel((0,y.errorFromEvent)((0,y.newUnexpectedMessageError)({reason:a})));case 13:return e.abrupt("return",!0);case 14:return e.abrupt("return",!1);case 15:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"_adjustObserveOnly",value:function(e,t){t||(this._observeOnly=!0),this.calculateEventTimeout(e)<3e3&&(this._observeOnly=!0)}},{key:"_addEvent",value:function(e,t,r){if(r?this._eventsByUs.set(e,t):this._eventsByThem.set(e,t),e===E){var n,o=_(this._eventsByThem.entries());try{for(o.s();!(n=o.n()).done;){var s=(0,i.default)(n.value,2),a=s[0];s[1].getSender()!==this.otherUserId&&this._eventsByThem.delete(a)}}catch(e){o.e(e)}finally{o.f()}this._requestReceivedAt=Date.now()}}},{key:"_createVerifier",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r||(r=this.targetDevice);var n=r,i=n.userId,o=n.deviceId,s=this._verificationMethods.get(e);if(s)return new s(this.channel,this._client,i,o,t,this);v.logger.warn("could not find verifier constructor for method",e)}},{key:"_wasSentByOwnUser",value:function(e){return e.getSender()===this._client.getUserId()}},{key:"_wasSentByOwnDevice",value:function(e){if(!this._wasSentByOwnUser(e))return!1;var t=e.getContent();return!(!t||t.from_device!==this._client.getDeviceId())}},{key:"onVerifierCancelled",value:function(){this._cancelled=!0;var e=this._applyPhaseTransitions();e.length&&this._setPhase(e[e.length-1].phase)}},{key:"onVerifierFinished",value:function(){this.channel.send("m.key.verification.done",{}),this._verifierHasFinished=!0;var e=this._applyPhaseTransitions();e.length&&this._setPhase(e[e.length-1].phase)}},{key:"getEventFromOtherParty",value:function(e){return this._eventsByThem.get(e)}},{key:"invalid",get:function(){return 1===this.phase}},{key:"requested",get:function(){return 2===this.phase}},{key:"cancelled",get:function(){return 5===this.phase}},{key:"ready",get:function(){return 3===this.phase}},{key:"started",get:function(){return 4===this.phase}},{key:"done",get:function(){return 6===this.phase}},{key:"methods",get:function(){return this._commonMethods}},{key:"chosenMethod",get:function(){return this._chosenMethod}},{key:"timeout",get:function(){var e=this._getEventByEither(E);return e?this.calculateEventTimeout(e):0}},{key:"requestEvent",get:function(){return this._getEventByEither(E)}},{key:"phase",get:function(){return this._phase}},{key:"verifier",get:function(){return this._verifier}},{key:"canAccept",get:function(){return this.phase<3&&!this._accepting&&!this._declining}},{key:"accepting",get:function(){return this._accepting}},{key:"declining",get:function(){return this._declining}},{key:"pending",get:function(){return!this.observeOnly&&6!==this._phase&&5!==this._phase}},{key:"qrCodeData",get:function(){return this._qrCodeData}},{key:"initiatedByMe",get:function(){var e=this._eventsByUs.size+this._eventsByThem.size===0;if(1===this._phase&&e)return!0;var t=this._eventsByUs.has(E),r=this._eventsByThem.has(E);if(t&&!r)return!0;if(!t&&r)return!1;var n=this._eventsByUs.has(w),i=this._eventsByThem.has(w);return!(!n||i)}},{key:"requestingUserId",get:function(){return this.initiatedByMe?this._client.getUserId():this.otherUserId}},{key:"receivingUserId",get:function(){return this.initiatedByMe?this.otherUserId:this._client.getUserId()}},{key:"otherUserId",get:function(){return this.channel.userId}},{key:"isSelfVerification",get:function(){return this._client.getUserId()===this.otherUserId}},{key:"cancellingUserId",get:function(){var e=this._eventsByUs.get(I),t=this._eventsByThem.get(I);return e&&(!t||e.getId()<t.getId())?e.getSender():t?t.getSender():void 0}},{key:"cancellationCode",get:function(){var e=this._getEventByEither(I);return e?e.getContent().code:null}},{key:"observeOnly",get:function(){return this._observeOnly}},{key:"targetDevice",get:function(){var e=(this._eventsByThem.get(E)||this._eventsByThem.get(R)||this._eventsByThem.get(w)).getContent().from_device;return{userId:this.otherUserId,deviceId:e}}}],[{key:"validateEvent",value:function(e,t,r){var n=t.getContent();return!(!e||!e.startsWith(S))&&(n?e!==E&&e!==R||Array.isArray(n.methods)?e!==E&&e!==R&&e!==w||"string"==typeof n.from_device&&0!==n.from_device.length||(v.logger.log("VerificationRequest: validateEvent: fail because from_device"),!1):(v.logger.log("VerificationRequest: validateEvent: fail because methods"),!1):(v.logger.log("VerificationRequest: validateEvent: no content"),!1))}}]),b}(g.EventEmitter);r.VerificationRequest=T},{"../../../logger":95,"../Error":82,"../QRCode":84,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/helpers/toConsumableArray":23,"@babel/runtime/regenerator":27,events:36}],89:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.InvalidStoreError=l,r.InvalidCryptoStoreError=d,r.KeySignatureUploadError=void 0;var i=n(e("@babel/runtime/helpers/classCallCheck")),o=n(e("@babel/runtime/helpers/inherits")),s=n(e("@babel/runtime/helpers/possibleConstructorReturn")),a=n(e("@babel/runtime/helpers/getPrototypeOf")),u=n(e("@babel/runtime/helpers/wrapNativeSuper"));function c(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,a.default)(e);if(t){var i=(0,a.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,s.default)(this,r)}}function l(e,t){var r="Store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again",n=Reflect.construct(Error,[r]);return Reflect.setPrototypeOf(n,Reflect.getPrototypeOf(this)),n.reason=e,n.value=t,n}function d(e){var t="Crypto store is invalid because ".concat(e,", ")+"please stop the client, delete all data and start the client again",r=Reflect.construct(Error,[t]);return Reflect.setPrototypeOf(r,Reflect.getPrototypeOf(this)),r.reason=e,r.name="InvalidCryptoStoreError",r}l.TOGGLED_LAZY_LOADING="TOGGLED_LAZY_LOADING",l.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),Reflect.setPrototypeOf(l,Error),d.TOO_NEW="TOO_NEW",d.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),Reflect.setPrototypeOf(d,Error);var f=function(e){(0,o.default)(r,e);var t=c(r);function r(e,n){var o;return(0,i.default)(this,r),(o=t.call(this,e)).value=n,o}return r}((0,u.default)(Error));r.KeySignatureUploadError=f},{"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/wrapNativeSuper":26}],90:[function(e,t,r){"use strict";function n(e){this.filter_json=e,this.types=e.types||null,this.not_types=e.not_types||[],this.rooms=e.rooms||null,this.not_rooms=e.not_rooms||[],this.senders=e.senders||null,this.not_senders=e.not_senders||[],this.contains_url=e.contains_url||null}Object.defineProperty(r,"__esModule",{value:!0}),r.FilterComponent=n,n.prototype.check=function(e){return this._checkFields(e.getRoomId(),e.getSender(),e.getType(),!!e.getContent()&&void 0!==e.getContent().url)},n.prototype._checkFields=function(e,t,r,n){for(var i={rooms:function(t){return e===t},senders:function(e){return t===e},types:function(e){return function(e,t){if(t.endsWith("*")){var r=t.slice(0,-1);return e.substr(0,r.length)===r}return e===t}(r,e)}},o=0;o<Object.keys(i).length;o++){var s=Object.keys(i)[o],a=i[s];if(this["not_"+s].filter(a).length>0)return!1;var u=this[s];if(u&&u.length>0)if(!u.some(a))return!1}var c=this.filter_json.contains_url;return void 0===c||c===n},n.prototype.filter=function(e){return e.filter(this.check,this)},n.prototype.limit=function(){return void 0!==this.filter_json.limit?this.filter_json.limit:10}},{}],91:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.Filter=o;var n=e("./filter-component");function i(e,t,r){for(var n=t.split("."),i=e,o=0;o<n.length-1;o++)i[n[o]]||(i[n[o]]={}),i=i[n[o]];i[n[n.length-1]]=r}function o(e,t){this.userId=e,this.filterId=t,this.definition={}}o.LAZY_LOADING_MESSAGES_FILTER={lazy_load_members:!0},o.prototype.getFilterId=function(){return this.filterId},o.prototype.getDefinition=function(){return this.definition},o.prototype.setDefinition=function(e){this.definition=e;var t=e.room,r={};t&&(t.rooms&&(r.rooms=t.rooms),t.rooms&&(r.not_rooms=t.not_rooms),this._include_leave=t.include_leave||!1),this._room_filter=new n.FilterComponent(r),this._room_timeline_filter=new n.FilterComponent(t&&t.timeline||{})},o.prototype.getRoomTimelineFilterComponent=function(){return this._room_timeline_filter},o.prototype.filterRoomTimeline=function(e){return this._room_timeline_filter.filter(this._room_filter.filter(e))},o.prototype.setTimelineLimit=function(e){i(this.definition,"room.timeline.limit",e)},o.prototype.setLazyLoadMembers=function(e){i(this.definition,"room.state.lazy_load_members",!!e)},o.prototype.setIncludeLeaveRooms=function(e){i(this.definition,"room.include_leave",e)},o.fromJson=function(e,t,r){var n=new o(e,t);return n.setDefinition(r),n}},{"./filter-component":90}],92:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixHttpApi=S,r.retryNetworkOperation=function(e,t){return T.apply(this,arguments)},r.AbortError=r.ConnectionError=r.MatrixError=r.PREFIX_MEDIA_R0=r.PREFIX_IDENTITY_V2=r.PREFIX_IDENTITY_V1=r.PREFIX_UNSTABLE=r.PREFIX_R0=void 0;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("@babel/runtime/helpers/createClass")),u=i(e("@babel/runtime/helpers/classCallCheck")),c=i(e("@babel/runtime/helpers/inherits")),l=i(e("@babel/runtime/helpers/possibleConstructorReturn")),d=i(e("@babel/runtime/helpers/getPrototypeOf")),f=i(e("@babel/runtime/helpers/wrapNativeSuper")),h=i(e("@babel/runtime/helpers/defineProperty")),p=i(e("@babel/runtime/helpers/typeof")),v=e("content-type"),g=n(e("./utils")),y=e("./logger"),m=n(e("./realtime-callbacks"));function _(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,d.default)(e);if(t){var i=(0,d.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,l.default)(this,r)}}function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function k(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){(0,h.default)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}r.PREFIX_R0="/_matrix/client/r0";r.PREFIX_UNSTABLE="/_matrix/client/unstable";r.PREFIX_IDENTITY_V1="/_matrix/identity/api/v1";r.PREFIX_IDENTITY_V2="/_matrix/identity/v2";function S(e,t){g.checkObjectHasKeys(t,["baseUrl","request","prefix"]),t.onlyData=t.onlyData||!1,this.event_emitter=e,this.opts=t,this.useAuthorizationHeader=Boolean(t.useAuthorizationHeader),this.uploads=[]}r.PREFIX_MEDIA_R0="/_matrix/media/r0",S.prototype={setIdBaseUrl:function(e){this.opts.idBaseUrl=e},getContentUri:function(){var e={access_token:this.opts.accessToken};return{base:this.opts.baseUrl,path:"/_matrix/media/r0/upload",params:e}},uploadContent:function(e,r){g.isFunction(r)?r={callback:r}:void 0===r&&(r={});var n=!1!==r.includeFilename,i=r.type||e.type||"application/octet-stream",o=r.name||e.name,s=e;s.stream&&"function"!=typeof s.stream&&(y.logger.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."),s=s.stream);var a=r.rawResponse;void 0===a&&(t.XMLHttpRequest?a=!1:(y.logger.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."),a=!0));var u=r.onlyContentUri;a||void 0!==u||(t.XMLHttpRequest?(y.logger.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."),u=!0):u=!1);var c,l={loaded:0,total:0},d=null;if(a||(d=function(e){var t=JSON.parse(e);if(u&&void 0===(t=t.content_uri))throw Error("Bad response");return t}),t.XMLHttpRequest){var f=g.defer(),h=new t.XMLHttpRequest;l.xhr=h;var p=E(f,r.callback,this.opts.onlyData),v=function(){h.abort(),p(new Error("Timeout"))};h.timeout_timer=m.setTimeout(v,3e4),h.onreadystatechange=function(){switch(h.readyState){case t.XMLHttpRequest.DONE:var e;m.clearTimeout(h.timeout_timer);try{if(0===h.status)throw new R;if(!h.responseText)throw new Error("No response body.");e=h.responseText,d&&(e=d(e))}catch(e){return e.http_status=h.status,void p(e)}p(void 0,h,e)}},h.upload.addEventListener("progress",(function(e){m.clearTimeout(h.timeout_timer),l.loaded=e.loaded,l.total=e.total,h.timeout_timer=m.setTimeout(v,3e4),r.progressHandler&&r.progressHandler({loaded:e.loaded,total:e.total})}));var _=this.opts.baseUrl+"/_matrix/media/r0/upload",b=[];n&&o&&b.push("filename="+encodeURIComponent(o)),this.useAuthorizationHeader||b.push("access_token="+encodeURIComponent(this.opts.accessToken)),b.length>0&&(_+="?"+b.join("&")),h.open("POST",_),this.useAuthorizationHeader&&h.setRequestHeader("Authorization","Bearer "+this.opts.accessToken),h.setRequestHeader("Content-Type",i),h.send(s),(c=f.promise).abort=h.abort.bind(h)}else{var k={};n&&o&&(k.filename=o),c=this.authedRequest(r.callback,"POST","/upload",k,s,{prefix:"/_matrix/media/r0",headers:{"Content-Type":i},json:!1,bodyParser:d})}var S=this,w=c.finally((function(){for(var e=0;e<S.uploads.length;++e)if(S.uploads[e]===l)return void S.uploads.splice(e,1)}));return w.abort=c.abort,l.promise=w,this.uploads.push(l),w},cancelUpload:function(e){return!!e.abort&&(e.abort(),!0)},getCurrentUploads:function(){return this.uploads},idServerRequest:function(e,t,r,n,i,o){if(!this.opts.idBaseUrl)throw new Error("No Identity Server base URL set");var s=this.opts.idBaseUrl+i+r;if(void 0!==e&&!g.isFunction(e))throw Error("Expected callback to be a function but got "+(0,p.default)(e));var a={uri:s,method:t,withCredentials:!1,json:!0,_matrix_opts:this.opts,headers:{}};"GET"===t?a.qs=n:"object"===(0,p.default)(n)&&(a.json=n),o&&(a.headers.Authorization="Bearer ".concat(o));var u=g.defer();return this.opts.request(a,E(u,e,this.opts.onlyData)),u.promise},authedRequest:function(e,t,r,n,i,o){n||(n={}),this.useAuthorizationHeader?(isFinite(o)&&(o={localTimeoutMs:o}),o||(o={}),o.headers||(o.headers={}),o.headers.Authorization||(o.headers.Authorization="Bearer "+this.opts.accessToken),n.access_token&&delete n.access_token):n.access_token||(n.access_token=this.opts.accessToken);var s=this.request(e,t,r,n,i,o),a=this;return s.catch((function(e){"M_UNKNOWN_TOKEN"==e.errcode?a.event_emitter.emit("Session.logged_out",e):"M_CONSENT_NOT_GIVEN"==e.errcode&&a.event_emitter.emit("no_consent",e.message,e.data.consent_uri)})),s},request:function(e,t,r,n,i,o){var s=void 0!==(o=o||{}).prefix?o.prefix:this.opts.prefix,a=this.opts.baseUrl+s+r;return this.requestOtherUrl(e,t,a,n,i,o)},requestOtherUrl:function(e,t,r,n,i,o){return null==o?o={}:isFinite(o)&&(o={localTimeoutMs:o}),this._request(e,t,r,n,i,o)},getUrl:function(e,t,r){var n="";return t&&(n="?"+g.encodeParams(t)),this.opts.baseUrl+r+e+n},_request:function(e,t,r,n,i,o){if(void 0!==e&&!g.isFunction(e))throw Error("Expected callback to be a function but got "+(0,p.default)(e));o=o||{};var s=this;this.opts.extraParams&&(n=k(k({},n),this.opts.extraParams));var a=g.extend({},o.headers||{}),u=void 0===o.json||o.json,c=o.bodyParser;u&&(i&&(i=JSON.stringify(i),a["content-type"]="application/json"),a.accept||(a.accept="application/json"),void 0===c&&(c=function(e){return JSON.parse(e)}));var l,d,f=g.defer(),h=!1,v=o.localTimeoutMs||this.opts.localTimeoutMs,y=function(){v&&(l&&m.clearTimeout(l),l=m.setTimeout((function(){h=!0,d&&d.abort&&d.abort(),f.reject(new w({error:"Locally timed out waiting for a response",errcode:"ORG.MATRIX.JSSDK_TIMEOUT",timeout:v}))}),v))};y();var _=f.promise;try{(d=this.opts.request({uri:r,method:t,withCredentials:!1,qs:n,qsStringifyOptions:o.qsStringifyOptions,useQuerystring:!0,body:i,json:!1,timeout:v,headers:a||{},_matrix_opts:this.opts},(function(t,r,n){v&&(m.clearTimeout(l),h)||E(f,e,s.opts.onlyData,c)(t,r,n)})))&&("onprogress"in d&&(d.onprogress=function(e){y()}),d.abort&&(_.abort=d.abort.bind(d)))}catch(t){f.reject(t),e&&e(t)}return _}};var E=function(e,t,r,n){return t=t||function(){},function(i,o,s){i&&("AbortError"===i.name||"aborted"===i||i instanceof w||(i=new I("request failed",i)));if(!i)try{o.statusCode>=400?i=function(e,t){var r,n=e.statusCode,i=function(e){var t;e.getResponseHeader?t=e.getResponseHeader("Content-Type"):e.headers&&(t=e.headers["content-type"]||null);if(!t)return null;try{return(0,v.parse)(t)}catch(e){throw new Error("Error parsing Content-Type '".concat(t,"': ").concat(e))}}(e);if(i)if("application/json"===i.type){var o="object"===(0,p.default)(t)?t:JSON.parse(t);r=new w(o)}else"text/plain"===i.type&&(r=new Error("Server returned ".concat(n," error: ").concat(t)));r||(r=new Error("Server returned ".concat(n," error")));return r.httpStatus=n,r}(o,s):n&&(s=n(s))}catch(e){i=new Error("Error parsing server response: ".concat(e))}if(i)e.reject(i),t(i);else{var a={code:o.statusCode,headers:o.headers,data:s};e.resolve(r?s:a),t(null,r?s:a)}}};var w=function(e){(0,c.default)(r,e);var t=_(r);function r(e){var n;return(0,u.default)(this,r),e=e||{},(n=t.call(this,"MatrixError: ".concat(e.errcode))).errcode=e.errcode,n.name=e.errcode||"Unknown error code",n.message=e.error||"Unknown message",n.data=e,n}return r}((0,f.default)(Error));r.MatrixError=w;var I=function(e){(0,c.default)(r,e);var t=_(r);function r(e){var n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;return(0,u.default)(this,r),(n=t.call(this,e+(i?": ".concat(i.message):"")))._cause=i,n}return(0,a.default)(r,[{key:"name",get:function(){return"ConnectionError"}},{key:"cause",get:function(){return this._cause}}]),r}((0,f.default)(Error));r.ConnectionError=I;var R=function(e){(0,c.default)(r,e);var t=_(r);function r(){return(0,u.default)(this,r),t.call(this,"Operation aborted")}return(0,a.default)(r,[{key:"name",get:function(){return"AbortError"}}]),r}((0,f.default)(Error));function T(){return(T=(0,s.default)(o.default.mark((function e(t,r){var n,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=0,i=null;case 2:if(!(n<t)){e.next=21;break}if(e.prev=3,!(n>0)){e.next=6;break}return e.delegateYield(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=1e3*Math.pow(2,n),console.log("network operation failed ".concat(n," times,")+" retrying in ".concat(t,"ms...")),e.next=4,new Promise((function(e){return setTimeout(e,t)}));case 4:case"end":return e.stop()}}),e)}))(),"t0",6);case 6:return e.next=8,r();case 8:return e.abrupt("return",e.sent);case 11:if(e.prev=11,e.t1=e.catch(3),!(e.t1 instanceof I)){e.next=18;break}n+=1,i=e.t1,e.next=19;break;case 18:throw e.t1;case 19:e.next=2;break;case 21:throw i;case 22:case"end":return e.stop()}}),e,null,[[3,11]])})))).apply(this,arguments)}r.AbortError=R}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./logger":95,"./realtime-callbacks":111,"./utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/typeof":24,"@babel/runtime/helpers/wrapNativeSuper":26,"@babel/runtime/regenerator":27,"content-type":35}],93:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.exists=function(e,t){return new Promise((function(r,n){var i=!0,o=e.open(t);o.onupgradeneeded=function(){i=!1},o.onblocked=function(){return n()},o.onsuccess=function(){o.result.close(),i||e.deleteDatabase(t),r(i)},o.onerror=function(e){return n(e.target.error)}}))}},{}],94:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.InteractiveAuth=v;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("url")),u=n(e("./utils")),c=e("./logger");function l(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return d(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return d(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var f,h,p;function v(e){this._matrixClient=e.matrixClient,this._data=e.authData||{},this._requestCallback=e.doRequest,this._busyChangedCallback=e.busyChanged,this._stateUpdatedCallback=e.stateUpdated||e.startAuthStage,this._resolveFunc=null,this._rejectFunc=null,this._inputs=e.inputs||{},this._requestEmailTokenCallback=e.requestEmailToken,e.sessionId&&(this._data.session=e.sessionId),this._clientSecret=e.clientSecret||this._matrixClient.generateClientSecret(),this._emailSid=e.emailSid,void 0===this._emailSid&&(this._emailSid=null),this._requestingEmailToken=!1,this._chosenFlow=null,this._currentStage=null,this._submitPromise=null}v.prototype={attemptAuth:function(){var e=this;return new Promise((function(t,r){if(e._resolveFunc=t,e._rejectFunc=r,e._data&&e._data.flows)e._startNextAuthStage();else{e._busyChangedCallback&&e._busyChangedCallback(!0);var n=null;e._data.session&&(n={session:e._data.session}),e._doRequest(n).finally((function(){e._busyChangedCallback&&e._busyChangedCallback(!1)}))}}))},poll:(p=(0,s.default)(o.default.mark((function e(){var t,r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._data.session){e.next=2;break}return e.abrupt("return");case 2:if(this._resolveFunc){e.next=4;break}return e.abrupt("return");case 4:if(!this._submitPromise){e.next=6;break}return e.abrupt("return");case 6:if(t={},"m.login.email.identity"!=this._currentStage){e.next=16;break}if(!this._emailSid){e.next=16;break}return r={sid:this._emailSid,client_secret:this._clientSecret},e.next=12,this._matrixClient.doesServerRequireIdServerParam();case 12:if(!e.sent){e.next=15;break}n=a.default.parse(this._matrixClient.getIdentityServerUrl()),r.id_server=n.host;case 15:t={type:"m.login.email.identity",threepid_creds:r,threepidCreds:r};case 16:this.submitAuthDict(t,!0);case 17:case"end":return e.stop()}}),e,this)}))),function(){return p.apply(this,arguments)}),getSessionId:function(){return this._data?this._data.session:void 0},getClientSecret:function(){return this._clientSecret},getStageParams:function(e){var t={};return this._data&&this._data.params&&(t=this._data.params),t[e]},getChosenFlow:function(){return this._chosenFlow},submitAuthDict:(h=(0,s.default)(o.default.mark((function e(t,r){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._resolveFunc){e.next=2;break}throw new Error("submitAuthDict() called before attemptAuth()");case 2:!r&&this._busyChangedCallback&&this._busyChangedCallback(!0);case 3:if(!this._submitPromise){e.next=13;break}return e.prev=4,e.next=7,this._submitPromise;case 7:e.next=11;break;case 9:e.prev=9,e.t0=e.catch(4);case 11:e.next=3;break;case 13:return this._data.session?(n={session:this._data.session},u.extend(n,t)):n=t,e.prev=14,this._submitPromise=this._doRequest(n,r),e.next=18,this._submitPromise;case 18:return e.prev=18,this._submitPromise=null,!r&&this._busyChangedCallback&&this._busyChangedCallback(!1),e.finish(18);case 22:case"end":return e.stop()}}),e,this,[[4,9],[14,,18,22]])}))),function(e,t){return h.apply(this,arguments)}),getEmailSid:function(){return this._emailSid},setEmailSid:function(e){this._emailSid=e},_doRequest:(f=(0,s.default)(o.default.mark((function e(t,r){var n,i,s,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._requestCallback(t,r);case 3:n=e.sent,this._resolveFunc(n),this._resolveFunc=null,this._rejectFunc=null,e.next=34;break;case 9:e.prev=9,e.t0=e.catch(0),i=e.t0.data?e.t0.data.flows:null,s=this._data.flows||Boolean(i),401===e.t0.httpStatus&&e.t0.data&&s||(r?c.logger.log("Background poll request failed doing UI auth: ignoring",e.t0):this._rejectFunc(e.t0)),e.t0.data.flows||e.t0.data.completed||e.t0.data.session||(e.t0.data.flows=this._data.flows,e.t0.data.completed=this._data.completed,e.t0.data.session=this._data.session),this._data=e.t0.data;try{this._startNextAuthStage()}catch(e){this._rejectFunc(e),this._resolveFunc=null,this._rejectFunc=null}if(this._emailSid||this._requestingEmailToken||!this._chosenFlow.stages.includes("m.login.email.identity")){e.next=34;break}return this._requestingEmailToken=!0,e.prev=19,e.next=22,this._requestEmailTokenCallback(this._inputs.emailAddress,this._clientSecret,1,this._data.session);case 22:a=e.sent,this._emailSid=a.sid,e.next=31;break;case 26:e.prev=26,e.t1=e.catch(19),this._rejectFunc(e.t1),this._resolveFunc=null,this._rejectFunc=null;case 31:return e.prev=31,this._requestingEmailToken=!1,e.finish(31);case 34:case"end":return e.stop()}}),e,this,[[0,9],[19,26,31,34]])}))),function(e,t){return f.apply(this,arguments)}),_startNextAuthStage:function(){var e=this._chooseStage();if(!e)throw new Error("No incomplete flows from the server");if(this._currentStage=e,"m.login.dummy"!==e)if(this._data&&this._data.errcode||this._data.error)this._stateUpdatedCallback(e,{errcode:this._data.errcode||"",error:this._data.error||""});else{var t={};"m.login.email.identity"==e&&(t.emailSid=this._emailSid),this._stateUpdatedCallback(e,t)}else this.submitAuthDict({type:"m.login.dummy"})},_chooseStage:function(){null===this._chosenFlow&&(this._chosenFlow=this._chooseFlow()),c.logger.log("Active flow => %s",JSON.stringify(this._chosenFlow));var e=this._firstUncompletedStage(this._chosenFlow);return c.logger.log("Next stage: %s",e),e},_chooseFlow:function(){var e,t=this._data.flows||[],r=Boolean(this._inputs.emailAddress)||Boolean(this._emailSid),n=Boolean(this._inputs.phoneCountry)&&Boolean(this._inputs.phoneNumber),i=l(t);try{for(i.s();!(e=i.n()).done;){var o,s=e.value,a=!1,u=!1,c=l(s.stages);try{for(c.s();!(o=c.n()).done;){var d=o.value;"m.login.email.identity"===d?a=!0:"m.login.msisdn"==d&&(u=!0)}}catch(f){c.e(f)}finally{c.f()}if(a==r&&u==n)return s}}catch(f){i.e(f)}finally{i.f()}var f=new Error("No appropriate authentication flow found");throw f.name="NoAuthFlowFoundError",f.required_stages=[],r&&f.required_stages.push("m.login.email.identity"),n&&f.required_stages.push("m.login.msisdn"),f.available_flows=t,f},_firstUncompletedStage:function(e){for(var t=(this._data||{}).completed||[],r=0;r<e.stages.length;++r){var n=e.stages[r];if(-1===t.indexOf(n))return n}}}},{"./logger":95,"./utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27,url:51}],95:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.logger=void 0;var i=n(e("loglevel"));i.default.methodFactory=function(e,t,r){return function(){var t,r,n="error"===e||"warn"===e||"trace"===e||"info"===e;return n?(t=console)[e].apply(t,arguments):(r=console).log.apply(r,arguments)}};var o=i.default.getLogger("matrix");r.logger=o,o.setLevel(i.default.levels.DEBUG)},{"@babel/runtime/helpers/interopRequireDefault":12,loglevel:38}],96:[function(e,t,r){(function(t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||t.hasOwnProperty(r)||n(t,e,r)},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.hasOwnProperty.call(e,r)&&n(t,e,r);return i(t,e),t};Object.defineProperty(r,"__esModule",{value:!0}),r.createClient=r.setCryptoStoreFactory=r.wrapRequest=r.getRequest=r.request=r.ContentHelpers=void 0;const a=e("./crypto/store/memory-crypto-store"),u=e("./store/memory"),c=e("./scheduler"),l=e("./client");o(e("./client"),r),o(e("./http-api"),r),o(e("./autodiscovery"),r),o(e("./sync-accumulator"),r),o(e("./errors"),r),o(e("./models/event"),r),o(e("./models/room"),r),o(e("./models/group"),r),o(e("./models/event-timeline"),r),o(e("./models/event-timeline-set"),r),o(e("./models/room-member"),r),o(e("./models/room-state"),r),o(e("./models/user"),r),o(e("./scheduler"),r),o(e("./filter"),r),o(e("./timeline-window"),r),o(e("./interactive-auth"),r),o(e("./service-types"),r),o(e("./store/memory"),r),o(e("./store/indexeddb"),r),o(e("./store/session/webstorage"),r),o(e("./crypto/store/memory-crypto-store"),r),o(e("./crypto/store/indexeddb-crypto-store"),r),o(e("./content-repo"),r),r.ContentHelpers=Promise.resolve().then(()=>s(e("./content-helpers")));var d=e("./webrtc/call");let f;Object.defineProperty(r,"createNewMatrixCall",{enumerable:!0,get:function(){return d.createNewMatrixCall}}),Object.defineProperty(r,"setMatrixCallAudioOutput",{enumerable:!0,get:function(){return d.setAudioOutput}}),Object.defineProperty(r,"setMatrixCallAudioInput",{enumerable:!0,get:function(){return d.setAudioInput}}),Object.defineProperty(r,"setMatrixCallVideoInput",{enumerable:!0,get:function(){return d.setVideoInput}}),r.request=function(e){f=e},r.getRequest=function(){return f},r.wrapRequest=function(e){const t=f;f=function(r,n){return e(t,r,n)}};let h=()=>new a.MemoryCryptoStore;r.setCryptoStoreFactory=function(e){h=e},r.createClient=function(e){return"string"==typeof e&&(e={baseUrl:e}),e.request=e.request||f,e.store=e.store||new u.MemoryStore({localStorage:t.localStorage}),e.scheduler=e.scheduler||new c.MatrixScheduler,e.cryptoStore=e.cryptoStore||h(),new l.MatrixClient(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./autodiscovery":54,"./client":57,"./content-helpers":58,"./content-repo":59,"./crypto/store/indexeddb-crypto-store":78,"./crypto/store/memory-crypto-store":80,"./errors":89,"./filter":91,"./http-api":92,"./interactive-auth":94,"./models/event":100,"./models/event-timeline":99,"./models/event-timeline-set":98,"./models/group":101,"./models/room":106,"./models/room-member":103,"./models/room-state":104,"./models/user":108,"./scheduler":112,"./service-types":113,"./store/indexeddb":116,"./store/memory":117,"./store/session/webstorage":118,"./sync-accumulator":120,"./timeline-window":122,"./webrtc/call":124}],97:[function(e,t,r){"use strict";function n(e){this._timeline=[e],this._ourEventIndex=0,this._paginateTokens={b:null,f:null},this._paginateRequests={b:null,f:null}}Object.defineProperty(r,"__esModule",{value:!0}),r.EventContext=n,n.prototype.getEvent=function(){return this._timeline[this._ourEventIndex]},n.prototype.getTimeline=function(){return this._timeline},n.prototype.getOurEventIndex=function(){return this._ourEventIndex},n.prototype.getPaginateToken=function(e){return this._paginateTokens[e?"b":"f"]},n.prototype.setPaginateToken=function(e,t){this._paginateTokens[t?"b":"f"]=e},n.prototype.addEvents=function(e,t){t?(this._timeline=e.concat(this._timeline),this._ourEventIndex+=e.length):this._timeline=this._timeline.concat(e)}},{}],98:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.EventTimelineSet=d;var i,o=e("events"),s=e("./event-timeline"),a=e("./event"),u=n(e("../utils")),c=e("../logger"),l=e("./relations");function d(e,t){this.room=e,this._timelineSupport=Boolean(t.timelineSupport),this._liveTimeline=new s.EventTimeline(this),this._unstableClientRelationAggregation=!!t.unstableClientRelationAggregation,this._timelines=[this._liveTimeline],this._eventIdToTimeline={},this._filter=t.filter||null,this._unstableClientRelationAggregation&&(this._relations={})}i=c.logger.log.bind(c.logger),u.inherits(d,o.EventEmitter),d.prototype.getTimelines=function(){return this._timelines},d.prototype.getFilter=function(){return this._filter},d.prototype.setFilter=function(e){this._filter=e},d.prototype.getPendingEvents=function(){return this.room?this._filter?this._filter.filterRoomTimeline(this.room.getPendingEvents()):this.room.getPendingEvents():[]},d.prototype.getLiveTimeline=function(){return this._liveTimeline},d.prototype.eventIdToTimeline=function(e){return this._eventIdToTimeline[e]},d.prototype.replaceEventId=function(e,t){var r=this._eventIdToTimeline[e];r&&(delete this._eventIdToTimeline[e],this._eventIdToTimeline[t]=r)},d.prototype.resetLiveTimeline=function(e,t){var r=!this._timelineSupport||!t,n=this._liveTimeline,i=r?n.forkLive(s.EventTimeline.FORWARDS):n.fork(s.EventTimeline.FORWARDS);r?(this._timelines=[i],this._eventIdToTimeline={}):this._timelines.push(i),t&&n.setPaginationToken(t,s.EventTimeline.FORWARDS),i.setPaginationToken(e,s.EventTimeline.BACKWARDS),this._liveTimeline=i,this.emit("Room.timelineReset",this.room,this,r)},d.prototype.getTimelineForEvent=function(e){var t=this._eventIdToTimeline[e];return void 0===t?null:t},d.prototype.findEventById=function(e){var t=this.getTimelineForEvent(e);if(t)return u.findElement(t.getEvents(),(function(t){return t.getId()==e}))},d.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.");var e=new s.EventTimeline(this);return this._timelines.push(e),e},d.prototype.addEventsToTimeline=function(e,t,r,n){if(!r)throw new Error("'timeline' not specified for EventTimelineSet.addEventsToTimeline");if(!t&&r==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){for(var o=t?s.EventTimeline.BACKWARDS:s.EventTimeline.FORWARDS,a=t?s.EventTimeline.FORWARDS:s.EventTimeline.BACKWARDS,u=!1,l=!1,d=0;d<e.length;d++){var f=e[d],h=f.getId(),p=this._eventIdToTimeline[h];if(p)if(l=!1,p!=r){var v=r.getNeighbouringTimeline(o);if(v)i(p==v?"Event "+h+" in neighbouring timeline - switching to "+p:"Event "+h+" already in a different timeline "+p),r=p;else{c.logger.info("Already have timeline for "+h+" - joining timeline "+r+" to "+p);var g=p===this._liveTimeline,y=r===this._liveTimeline,m=o===s.EventTimeline.BACKWARDS&&g,_=o===s.EventTimeline.FORWARDS&&y;m||_?(m&&c.logger.warn("Refusing to set a preceding existingTimeLine on our timeline as the existingTimeLine is live ("+p+")"),_&&c.logger.warn("Refusing to set our preceding timeline on a existingTimeLine as our timeline is live ("+r+")")):(r.setNeighbouringTimeline(p,o),p.setNeighbouringTimeline(r,a),r=p,u=!0)}}else i("Event "+h+" already in timeline "+r);else this.addEventToTimeline(f,r,t),l=!0,u=!0}if(l||!u){if(o===s.EventTimeline.FORWARDS&&r===this._liveTimeline)return c.logger.warn({lastEventWasNew:l,didUpdate:u}),void c.logger.warn("Refusing to set forwards pagination token of live timeline "+"".concat(r," to ").concat(n));r.setPaginationToken(n,o)}}},d.prototype.addLiveEvent=function(e,t,r){if(this._filter&&!this._filter.filterRoomTimeline([e]).length)return;var n=this._eventIdToTimeline[e.getId()];if(n)if("replace"===t){i("EventTimelineSet.addLiveEvent: replacing duplicate event "+e.getId());for(var o=n.getEvents(),a=0;a<o.length;a++)if(o[a].getId()===e.getId()){s.EventTimeline.setEventMetadata(e,n.getState(s.EventTimeline.FORWARDS),!1),o[a].encryptedType||(o[a]=e);break}}else i("EventTimelineSet.addLiveEvent: ignoring duplicate event "+e.getId());else this.addEventToTimeline(e,this._liveTimeline,!1,r)},d.prototype.addEventToTimeline=function(e,t,r,n){var i=e.getId();t.addEvent(e,r),this._eventIdToTimeline[i]=t,this.setRelationsTarget(e),this.aggregateRelations(e);var o={timeline:t,liveEvent:!r&&t==this._liveTimeline&&!n};this.emit("Room.timeline",e,this.room,Boolean(r),!1,o)},d.prototype.handleRemoteEcho=function(e,t,r){var n=this._eventIdToTimeline[t];n?(delete this._eventIdToTimeline[t],this._eventIdToTimeline[r]=n):this._filter?this._filter.filterRoomTimeline([e]).length&&this.addEventToTimeline(e,this._liveTimeline,!1):this.addEventToTimeline(e,this._liveTimeline,!1)},d.prototype.removeEvent=function(e){var t=this._eventIdToTimeline[e];if(!t)return null;var r=t.removeEvent(e);if(r){delete this._eventIdToTimeline[e];var n={timeline:t};this.emit("Room.timeline",r,this.room,void 0,!0,n)}return r},d.prototype.compareEventOrdering=function(e,t){if(e==t)return 0;var r=this._eventIdToTimeline[e],n=this._eventIdToTimeline[t];if(void 0===r)return null;if(void 0===n)return null;if(r===n){for(var i,o,a=r.getEvents(),u=0;u<a.length&&(void 0===i||void 0===o);u++){var c=a[u].getId();c==e&&(i=u),c==t&&(o=u)}return i-o}for(var l=r;l;){if(l===n)return-1;l=l.getNeighbouringTimeline(s.EventTimeline.FORWARDS)}for(l=r;l;){if(l===n)return 1;l=l.getNeighbouringTimeline(s.EventTimeline.BACKWARDS)}return null},d.prototype.getRelationsForEvent=function(e,t,r){if(!this._unstableClientRelationAggregation)throw new Error("Client-side relation aggregation is disabled");if(!e||!t||!r)throw new Error("Invalid arguments for `getRelationsForEvent`");return((this._relations[e]||{})[t]||{})[r]},d.prototype.setRelationsTarget=function(e){if(this._unstableClientRelationAggregation){var t=this._relations[e.getId()];if(t){var r=t["m.replace"];if(r){var n=r["m.room.message"];n&&n.setTargetEvent(e)}}}},d.prototype.aggregateRelations=function(e){var t=this;if(this._unstableClientRelationAggregation&&!e.isRedacted()&&e.status!==a.EventStatus.CANCELLED)if(e.isBeingDecrypted())e.once("Event.decrypted",(function(){t.aggregateRelations(e)}));else{var r=e.getRelation();if(r){var n=r.event_id,i=r.rel_type,o=e.getType(),s=this._relations[n];s||(s=this._relations[n]={});var u=s[i];u||(u=s[i]={});var c,d=u[o],f=!1;d||(d=u[o]=new l.Relations(i,o,this.room),f=!0,(c=this.findEventById(n))&&d.setTargetEvent(c)),d.addEvent(e),f&&c&&c.emit("Event.relationsCreated",i,o)}}}},{"../logger":95,"../utils":123,"./event":100,"./event-timeline":99,"./relations":102,"@babel/runtime/helpers/interopRequireWildcard":13,events:36}],99:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.EventTimeline=s;var n=e("./room-state");function i(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return o(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,u=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,s=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw s}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function s(e){this._eventTimelineSet=e,this._roomId=e.room?e.room.roomId:null,this._events=[],this._baseIndex=0,this._startState=new n.RoomState(this._roomId),this._startState.paginationToken=null,this._endState=new n.RoomState(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()}s.BACKWARDS="b",s.FORWARDS="f",s.prototype.initialiseState=function(e){if(this._events.length>0)throw new Error("Cannot initialise state after events are added");var t,r=i(e);try{for(r.s();!(t=r.n()).done;){var n=t.value;Object.freeze(n)}}catch(e){r.e(e)}finally{r.f()}this._startState.setStateEvents(e),this._endState.setStateEvents(e)},s.prototype.forkLive=function(e){var t=this.getState(e),r=new s(this._eventTimelineSet);return r._startState=t.clone(),r._endState=t,this._endState=t.clone(),r},s.prototype.fork=function(e){var t=this.getState(e),r=new s(this._eventTimelineSet);return r._startState=t.clone(),r._endState=t.clone(),r},s.prototype.getRoomId=function(){return this._roomId},s.prototype.getFilter=function(){return this._eventTimelineSet.getFilter()},s.prototype.getTimelineSet=function(){return this._eventTimelineSet},s.prototype.getBaseIndex=function(){return this._baseIndex},s.prototype.getEvents=function(){return this._events},s.prototype.getState=function(e){if(e==s.BACKWARDS)return this._startState;if(e==s.FORWARDS)return this._endState;throw new Error("Invalid direction '"+e+"'")},s.prototype.getPaginationToken=function(e){return this.getState(e).paginationToken},s.prototype.setPaginationToken=function(e,t){this.getState(t).paginationToken=e},s.prototype.getNeighbouringTimeline=function(e){if(e==s.BACKWARDS)return this._prevTimeline;if(e==s.FORWARDS)return this._nextTimeline;throw new Error("Invalid direction '"+e+"'")},s.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==s.BACKWARDS)this._prevTimeline=e;else{if(t!=s.FORWARDS)throw new Error("Invalid direction '"+t+"'");this._nextTimeline=e}this.setPaginationToken(null,t)},s.prototype.addEvent=function(e,t){var r,n=t?this._startState:this._endState,i=this.getTimelineSet();i.room&&i.room.getUnfilteredTimelineSet()===i&&(s.setEventMetadata(e,n,t),e.isState()&&(n.setStateEvents([e]),e.sender&&("m.room.member"!==e.getType()||t)||s.setEventMetadata(e,n,t))),r=t?0:this._events.length,this._events.splice(r,0,e),t&&this._baseIndex++},s.setEventMetadata=function(e,t,r){e.sender=t.getSentinelMember(e.getSender()),"m.room.member"===e.getType()&&(e.target=t.getSentinelMember(e.getStateKey())),e.isState()&&r&&(e.forwardLooking=!1)},s.prototype.removeEvent=function(e){for(var t=this._events.length-1;t>=0;t--){var r=this._events[t];if(r.getId()==e)return this._events.splice(t,1),t<this._baseIndex&&this._baseIndex--,r}return null},s.prototype.toString=function(){return this._name}},{"./room-state":104}],100:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixEvent=r.EventStatus=void 0;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=e("events"),u=n(e("../utils")),c=e("../logger");r.EventStatus={NOT_SENT:"not_sent",ENCRYPTING:"encrypting",SENDING:"sending",QUEUED:"queued",SENT:"sent",CANCELLED:"cancelled"};var l={};function d(e){return l[e]||(l[e]=e),l[e]}var f,h,p=function(e){["state_key","type","sender","room_id","membership"].forEach((function(t){e[t]&&(e[t]=d(e[t]))})),["membership","avatar_url","displayname"].forEach((function(t){e.content&&e.content[t]&&(e.content[t]=d(e.content[t]))})),["rel_type"].forEach((function(t){e.content&&e.content["m.relates_to"]&&e.content["m.relates_to"][t]&&(e.content["m.relates_to"][t]=d(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._untrusted=null,this._decryptionPromise=null,this._retryDecryption=!1,this.verificationRequest=null,this._txnId=null};r.MatrixEvent=p,u.inherits(p,a.EventEmitter),u.extend(p.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,r,n){this._clearEvent={type:this.event.type,content:this.event.content},this.event.type=e,this.event.content=t,this._senderCurve25519Key=r,this._claimedEd25519Key=n},isBeingDecrypted:function(){return null!=this._decryptionPromise},isDecryptionFailure:function(){return this._clearEvent&&this._clearEvent.content&&"m.bad.encrypted"===this._clearEvent.content.msgtype},attemptDecryption:(h=(0,s.default)(o.default.mark((function e(t,r){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isEncrypted()){e.next=2;break}throw new Error("Attempt to decrypt event which isn't encrypted");case 2:if(!this._clearEvent||!this._clearEvent.content||"m.bad.encrypted"===this._clearEvent.content.msgtype){e.next=4;break}throw new Error("Attempt to decrypt event which has already been decrypted");case 4:if(!this._decryptionPromise){e.next=8;break}return c.logger.log("Event ".concat(this.getId()," already being decrypted; queueing a retry")),this._retryDecryption=!0,e.abrupt("return",this._decryptionPromise);case 8:return this._decryptionPromise=this._decryptionLoop(t,r),e.abrupt("return",this._decryptionPromise);case 10:case"end":return e.stop()}}),e,this)}))),function(e,t){return h.apply(this,arguments)}),cancelAndResendKeyRequest:function(e,t){var r=this.getWireContent();return e.requestRoomKey({algorithm:r.algorithm,room_id:this.getRoomId(),session_id:r.session_id,sender_key:r.sender_key},this.getKeyRequestRecipients(t),!0)},getKeyRequestRecipients:function(e){var t=this.getWireContent(),r=[{userId:e,deviceId:"*"}],n=this.getSender();return n!==e&&r.push({userId:n,deviceId:t.device_id}),r},_decryptionLoop:(f=(0,s.default)(o.default.mark((function e(t,r){var n,i,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.resolve();case 2:if(this._retryDecryption=!1,n=void 0,i=void 0,e.prev=6,t){e.next=11;break}n=this._badEncryptedMessage("Encryption not enabled"),e.next=15;break;case 11:return e.next=13,t.decryptEvent(this);case 13:n=e.sent,r&&c.logger.info("Decrypted event on retry (id=".concat(this.getId(),")"));case 15:e.next=31;break;case 17:if(e.prev=17,e.t0=e.catch(6),"DecryptionError"===e.t0.name){e.next=25;break}return s=r?"re":"",c.logger.error("Error ".concat(s,"decrypting event ")+"(id=".concat(this.getId(),"): ").concat(e.t0.stack||e.t0)),this._decryptionPromise=null,this._retryDecryption=!1,e.abrupt("return");case 25:if(i=e.t0,!this._retryDecryption){e.next=29;break}return c.logger.log("Got error decrypting event (id=".concat(this.getId(),": ")+"".concat(e.t0,"), but retrying")),e.abrupt("continue",2);case 29:c.logger.warn("Error decrypting event (id=".concat(this.getId(),"): ").concat(e.t0.detailedString)),n=this._badEncryptedMessage(e.t0.message);case 31:return this._decryptionPromise=null,this._retryDecryption=!1,this._setClearData(n),this.setPushActions(null),this.emit("Event.decrypted",this,i),e.abrupt("return");case 39:case"end":return e.stop()}}),e,this,[[6,17]])}))),function(e,t){return f.apply(this,arguments)}),_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||[],this._untrusted=e.untrusted||!1},getClearContent:function(){var e=this._clearEvent;return e&&e.content?e.content:null},isEncrypted:function(){return!this.isState()&&"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},isKeySourceUntrusted:function(){return this._untrusted},getUnsigned:function(){return this.event.unsigned||{}},unmarkLocallyRedacted:function(){var 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");var 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)&&(v[t]||delete this.event[t]);var r=g[this.getType()]||{},n=this.getContent();for(t in n)n.hasOwnProperty(t)&&(r[t]||delete n[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){var t=this.getUnsigned(),r=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()!==r&&this.emit("Event.localEventIdReplaced",this)},isSending:function(){return!!this.status},setStatus:function(e){this.status=e,this.emit("Event.status",this,e)},replaceLocalEventId:function(e){this.event.event_id=e,this.emit("Event.localEventIdReplaced",this)},isRelation:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,t=this.getWireContent(),r=t&&t["m.relates_to"];return r&&r.rel_type&&r.event_id&&(e&&r.rel_type===e||!e)},getRelation:function(){return this.isRelation()?this.getWireContent()["m.relates_to"]:null},makeReplaced:function(e){this.isRedacted()&&e||this._replacingEvent!==e&&(this._replacingEvent=e,this.emit("Event.replaced",this))},getAssociatedStatus:function(){return this._replacingEvent?this._replacingEvent.status:this._localRedactionEvent?this._localRedactionEvent.status:this.status},getServerAggregatedRelation:function(e){var t=this.getUnsigned()["m.relations"];if(t)return t[e]},replacingEventId:function(){var e=this.getServerAggregatedRelation("m.replace");return e?e.event_id:this._replacingEvent?this._replacingEvent.getId():void 0},replacingEvent:function(){return this._replacingEvent},replacingEventDate:function(){var e=this.getServerAggregatedRelation("m.replace");if(e){var t=e.origin_server_ts;if(Number.isFinite(t))return new Date(t)}else if(this._replacingEvent)return this._replacingEvent.getDate()},localRedactionEvent:function(){return this._localRedactionEvent},getAssociatedId:function(){var e=this.getRelation();return e?e.event_id:this.isRedaction()?this.event.redacts:void 0},hasAssocation:function(){return!!this.getAssociatedId()},updateAssociatedId:function(e){var t=this.getRelation();t?t.event_id=e:this.isRedaction()&&(this.event.redacts=e)},flagCancelled:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._isCancelled=e},isCancelled:function(){return this._isCancelled},toJSON:function(){var 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},setTxnId:function(e){this._txnId=e},getTxnId:function(){return this._txnId}});var v=["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}),{}),g={"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}}},{"../logger":95,"../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27,events:36}],101:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.Group=s;var i=n(e("../utils")),o=e("events");function s(e){this.groupId=e,this.name=null,this.avatarUrl=null,this.myMembership=null,this.inviter=null}i.inherits(s,o.EventEmitter),s.prototype.setProfile=function(e,t){this.name===e&&this.avatarUrl===t||(this.name=e||this.groupId,this.avatarUrl=t,this.emit("Group.profile",this))},s.prototype.setMyMembership=function(e){this.myMembership!==e&&(this.myMembership=e,this.emit("Group.myMembership",this))},s.prototype.setInviter=function(e){this.inviter=e}},{"../utils":123,"@babel/runtime/helpers/interopRequireWildcard":13,events:36}],102:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.Relations=void 0;var i=n(e("@babel/runtime/helpers/toConsumableArray")),o=n(e("@babel/runtime/helpers/classCallCheck")),s=n(e("@babel/runtime/helpers/createClass")),a=n(e("@babel/runtime/helpers/assertThisInitialized")),u=n(e("@babel/runtime/helpers/inherits")),c=n(e("@babel/runtime/helpers/possibleConstructorReturn")),l=n(e("@babel/runtime/helpers/getPrototypeOf")),d=n(e("@babel/runtime/helpers/defineProperty")),f=e("events"),h=e("../models/event");function p(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=(0,l.default)(e);if(t){var i=(0,l.default)(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return(0,c.default)(this,r)}}var v=function(e){(0,u.default)(r,e);var t=p(r);function r(e,n,i){var s;return(0,o.default)(this,r),s=t.call(this),(0,d.default)((0,a.default)(s),"_onEventStatus",(function(e,t){e.isSending()?t===h.EventStatus.CANCELLED&&(e.removeListener("Event.status",s._onEventStatus),s._removeEvent(e)):e.removeListener("Event.status",s._onEventStatus)})),(0,d.default)((0,a.default)(s),"_onBeforeRedaction",(function(e){s._relations.has(e)&&(s._relations.delete(e),"m.annotation"===s.relationType?s._removeAnnotationFromAggregation(e):"m.replace"===s.relationType&&s._targetEvent&&s._targetEvent.makeReplaced(s.getLastReplacement()),e.removeListener("Event.beforeRedaction",s._onBeforeRedaction),s.emit("Relations.redaction",e))})),s.relationType=e,s.eventType=n,s._relations=new Set,s._annotationsByKey={},s._annotationsBySender={},s._sortedAnnotationsByKey=[],s._targetEvent=null,s}return(0,s.default)(r,[{key:"addEvent",value:function(e){if(!this._relations.has(e)){var t=e.getRelation();if(t){var r=t.rel_type,n=e.getType();this.relationType===r&&this.eventType===n?(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")}else console.error("Event must have relation info")}}},{key:"_removeEvent",value:function(e){if(this._relations.has(e)){var t=e.getRelation();if(t){var r=t.rel_type,n=e.getType();this.relationType===r&&this.eventType===n?(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")}else console.error("Event must have relation info")}}},{key:"getRelations",value:function(){return(0,i.default)(this._relations)}},{key:"_addAnnotationToAggregation",value:function(e){var t=e.getRelation().key;if(t){var r=this._annotationsByKey[t];r||(r=this._annotationsByKey[t]=new Set,this._sortedAnnotationsByKey.push([t,r])),r.add(e),this._sortedAnnotationsByKey.sort((function(e,t){var r=e[1];return t[1].size-r.size}));var n=e.getSender(),i=this._annotationsBySender[n];i||(i=this._annotationsBySender[n]=new Set),i.add(e)}}},{key:"_removeAnnotationFromAggregation",value:function(e){var t=e.getRelation().key;if(t){var r=this._annotationsByKey[t];r&&(r.delete(e),this._sortedAnnotationsByKey.sort((function(e,t){var r=e[1];return t[1].size-r.size})));var n=e.getSender(),i=this._annotationsBySender[n];i&&i.delete(e)}}},{key:"getSortedAnnotationsByKey",value:function(){return"m.annotation"!==this.relationType?null:this._sortedAnnotationsByKey}},{key:"getAnnotationsBySender",value:function(){return"m.annotation"!==this.relationType?null:this._annotationsBySender}},{key:"getLastReplacement",value:function(){var e=this;if("m.replace"!==this.relationType)return null;if(!this._targetEvent)return null;var t=this._targetEvent.getServerAggregatedRelation("m.replace"),r=t&&t.origin_server_ts;return this.getRelations().reduce((function(t,n){return n.getSender()!==e._targetEvent.getSender()||r&&r>n.getTs()||t&&t.getTs()>n.getTs()?t:n}),null)}},{key:"setTargetEvent",value:function(e){if(!this._targetEvent&&(this._targetEvent=e,"m.replace"===this.relationType)){var t=this.getLastReplacement();t&&this._targetEvent.makeReplaced(t)}}}]),r}(f.EventEmitter);r.Relations=v},{"../models/event":100,"@babel/runtime/helpers/assertThisInitialized":4,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/defineProperty":9,"@babel/runtime/helpers/getPrototypeOf":10,"@babel/runtime/helpers/inherits":11,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/possibleConstructorReturn":20,"@babel/runtime/helpers/toConsumableArray":23,events:36}],103:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.RoomMember=a;var i=e("events"),o=e("../content-repo"),s=n(e("../utils"));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()}s.inherits(a,i.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()){this._isOutOfBand=!1,this.events.member=e;var r=this.membership;this.membership=e.getDirectionalContent().membership;var n=this.name;this.name=function(e,t,r){if(!t||t===e)return e;if(!s.removeHiddenChars(t))return e;if(!r)return t;var n=/@.+:.+/.test(t);n||(n=/[\u200E\u200F\u202A-\u202F]/.test(t));if(!n){var i=r.getUserIdsWithDisplayName(t);n=i.some((function(t){return t!==e}))}if(n)return t+" ("+e+")";return t}(this.userId,e.getDirectionalContent().displayname,t),this.rawDisplayName=e.getDirectionalContent().displayname||this.userId,r!==this.membership&&(this._updateModifiedTime(),this.emit("RoomMember.membership",e,this,r)),n!==this.name&&(this._updateModifiedTime(),this.emit("RoomMember.name",e,this,n))}},a.prototype.setPowerLevelEvent=function(e){if("m.room.power_levels"===e.getType()){var t=e.getDirectionalContent(),r=t.users_default||0;s.forEach(s.values(t.users),(function(e){r=Math.max(r,e)}));var n=this.powerLevel,i=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,r>0&&(this.powerLevelNorm=100*this.powerLevel/r),n===this.powerLevel&&i===this.powerLevelNorm||(this._updateModifiedTime(),this.emit("RoomMember.powerLevel",e,this))}},a.prototype.setTypingEvent=function(e){if("m.typing"===e.getType()){var t=this.typing;this.typing=!1;var r=e.getContent().user_ids;s.isArray(r)&&(-1!==r.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){var e=this.events.member,t=e.getContent(),r=e.getSender();if("join"===t.membership&&(t=e.getPrevContent(),r=e.getUnsigned().prev_sender),"invite"===t.membership&&t.is_direct)return r}},a.prototype.getAvatarUrl=function(e,t,r,n,i,s){void 0===i&&(i=!0);var a=this.getMxcAvatarUrl();if(!a&&!i)return null;var u=(0,o.getHttpUriForMxc)(e,a,t,r,n,s);return u||null},a.prototype.getMxcAvatarUrl=function(){return this.events.member?this.events.member.getDirectionalContent().avatar_url:this.user?this.user.avatarUrl:null}},{"../content-repo":59,"../utils":123,"@babel/runtime/helpers/interopRequireWildcard":13,events:36}],104:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.RoomState=u;var i=e("events"),o=e("./room-member"),s=e("../logger"),a=n(e("../utils"));function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;this.roomId=e,this.members={},this.events=new Map,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,r){var n=e._userIdsToDisplayNames[t];if(delete e._userIdsToDisplayNames[t],n){var i=a.removeHiddenChars(n),o=e._displayNameToUserIds[i];if(o){var s=o.filter((function(e){return e!==t}));e._displayNameToUserIds[i]=s}}e._userIdsToDisplayNames[t]=r;var u=r&&a.removeHiddenChars(r);u&&(e._displayNameToUserIds[u]||(e._displayNameToUserIds[u]=[]),e._displayNameToUserIds[u].push(t))}a.inherits(u,i.EventEmitter),u.prototype.getJoinedMemberCount=function(){return null!==this._summaryJoinedMemberCount?this._summaryJoinedMemberCount:(null===this._joinedMemberCount&&(this._joinedMemberCount=this.getMembers().reduce((function(e,t){return"join"===t.membership?e+1:e}),0)),this._joinedMemberCount)},u.prototype.setJoinedMemberCount=function(e){this._summaryJoinedMemberCount=e},u.prototype.getInvitedMemberCount=function(){return null!==this._summaryInvitedMemberCount?this._summaryInvitedMemberCount:(null===this._invitedMemberCount&&(this._invitedMemberCount=this.getMembers().reduce((function(e,t){return"invite"===t.membership?e+1:e}),0)),this._invitedMemberCount)},u.prototype.setInvitedMemberCount=function(e){this._summaryInvitedMemberCount=e},u.prototype.getMembers=function(){return a.values(this.members)},u.prototype.getMembersExcept=function(e){return a.values(this.members).filter((function(t){return!e.includes(t.userId)}))},u.prototype.getMember=function(e){return this.members[e]||null},u.prototype.getSentinelMember=function(e){if(!e)return null;var t=this._sentinels[e];if(void 0===t){t=new o.RoomMember(this.roomId,e);var r=this.members[e];r&&t.setMembershipEvent(r.events.member,this),this._sentinels[e]=t}return t},u.prototype.getStateEvents=function(e,t){if(!this.events.has(e))return void 0===t?[]:null;if(void 0===t)return Array.from(this.events.get(e).values());var r=this.events.get(e).get(t);return r||null},u.prototype.clone=function(){var e=new u(this.roomId,this._oobMemberFlags),t=this._oobMemberFlags.status;return this._oobMemberFlags.status=1,Array.from(this.events.values()).forEach((function(t){e.setStateEvents(Array.from(t.values()))})),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((function(t){t.isOutOfBand()&&e.getMember(t.userId).markOutOfBand()})),e},u.prototype.setUnknownStateEvents=function(e){var t=this,r=e.filter((function(e){return!t.events.has(e.getType())||!t.events.get(e.getType()).has(e.getStateKey())}));this.setStateEvents(r)},u.prototype.setStateEvents=function(e){var t=this;this._updateModifiedTime(),a.forEach(e,(function(e){if(e.getRoomId()===t.roomId&&e.isState()){var r=t._getStateEventMatching(e);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;var r=(t.getContent().third_party_invite.signed||{}).token;if(!r)return;if(!e.getStateEvents("m.room.third_party_invite",r))return;e._tokenToInvite[r]=t}(t,e)),t.emit("RoomState.events",e,t,r)}})),a.forEach(e,(function(e){if(e.getRoomId()===t.roomId&&e.isState())if("m.room.member"===e.getType()){var r=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);var n=t._getOrCreateMember(r,e);n.setMembershipEvent(e,t),t._updateMember(n),t.emit("RoomState.members",e,t,n)}else if("m.room.power_levels"===e.getType()){var i=a.values(t.members);a.forEach(i,(function(r){r.setPowerLevelEvent(e),t.emit("RoomState.members",e,t,r)})),t._sentinels={}}}))},u.prototype._getOrCreateMember=function(e,t){var r=this.members[e];return r||(r=new o.RoomMember(this.roomId,e),this.members[e]=r,this.emit("RoomState.newMember",t,this,r)),r},u.prototype._setStateEvent=function(e){this.events.has(e.getType())||this.events.set(e.getType(),new Map),this.events.get(e.getType()).set(e.getStateKey(),e)},u.prototype._getStateEventMatching=function(e){return this.events.has(e.getType())?this.events.get(e.getType()).get(e.getStateKey()):null},u.prototype._updateMember=function(e){var 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},u.prototype.needsOutOfBandMembers=function(){return 1===this._oobMemberFlags.status},u.prototype.markOutOfBandMembersStarted=function(){1===this._oobMemberFlags.status&&(this._oobMemberFlags.status=2)},u.prototype.markOutOfBandMembersFailed=function(){2===this._oobMemberFlags.status&&(this._oobMemberFlags.status=1)},u.prototype.clearOutOfBandMembers=function(){var e=this,t=0;Object.keys(this.members).forEach((function(r){e.members[r].isOutOfBand()&&(++t,delete e.members[r])})),s.logger.log("LL: RoomState removed ".concat(t," members...")),this._oobMemberFlags.status=1},u.prototype.setOutOfBandMembers=function(e){var t=this;s.logger.log("LL: RoomState about to set ".concat(e.length," OOB members ...")),2===this._oobMemberFlags.status&&(s.logger.log("LL: RoomState put in OOB_STATUS_FINISHED state ..."),this._oobMemberFlags.status=3,e.forEach((function(e){return t._setOutOfBandMember(e)})))},u.prototype._setOutOfBandMember=function(e){if("m.room.member"===e.getType()){var t=e.getStateKey(),r=this.getMember(t);if(!r||r.isOutOfBand()){var n=this._getOrCreateMember(t,e);n.setMembershipEvent(e,this),n.markOutOfBand(),c(this,n.userId,n.name),this._setStateEvent(e),this._updateMember(n),this.emit("RoomState.members",e,this,n)}}},u.prototype.setTypingEvent=function(e){a.forEach(a.values(this.members),(function(t){t.setTypingEvent(e)}))},u.prototype.getInviteForThreePidToken=function(e){return this._tokenToInvite[e]||null},u.prototype._updateModifiedTime=function(){this._modified=Date.now()},u.prototype.getLastModifiedTime=function(){return this._modified},u.prototype.getUserIdsWithDisplayName=function(e){return this._displayNameToUserIds[a.removeHiddenChars(e)]||[]},u.prototype.maySendRedactionForEvent=function(e,t){var r=this.getMember(t);if(!r||"leave"===r.membership)return!1;if(e.status||e.isRedacted())return!1;var n=this.maySendEvent("m.room.redaction",t);return e.getSender()===t?n:this._hasSufficientPowerLevelFor("redact",r.powerLevel)},u.prototype._hasSufficientPowerLevelFor=function(e,t){var r=this.getStateEvents("m.room.power_levels",""),n={};r&&(n=r.getContent());var i=50;return a.isNumber(n[e])&&(i=n[e]),t>=i},u.prototype.maySendMessage=function(e){return this._maySendEventOfType("m.room.message",e,!1)},u.prototype.maySendEvent=function(e,t){return this._maySendEventOfType(e,t,!1)},u.prototype.mayClientSendStateEvent=function(e,t){return!t.isGuest()&&this.maySendStateEvent(e,t.credentials.userId)},u.prototype.maySendStateEvent=function(e,t){return this._maySendEventOfType(e,t,!0)},u.prototype._maySendEventOfType=function(e,t,r){var n,i=this.getStateEvents("m.room.power_levels",""),o={},s=0,a=0,u=0;if(i){o=(n=i.getContent()).events||{},s=Number.isFinite(n.state_default)?n.state_default:50;var c=n.users&&n.users[t];Number.isFinite(c)?u=c:Number.isFinite(n.users_default)&&(u=n.users_default),Number.isFinite(n.events_default)&&(a=n.events_default)}var l=r?s:a;return Number.isFinite(o[e])&&(l=o[e]),u>=l},u.prototype.mayTriggerNotifOfType=function(e,t){var r=this.getMember(t);if(!r)return!1;var n=this.getStateEvents("m.room.power_levels",""),i=50;return n&&n.getContent()&&n.getContent().notifications&&a.isNumber(n.getContent().notifications[e])&&(i=n.getContent().notifications[e]),r.powerLevel>=i}},{"../logger":95,"../utils":123,"./room-member":103,"@babel/runtime/helpers/interopRequireWildcard":13,events:36}],105:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RoomSummary=function(e,t){this.roomId=e,this.info=t}},{}],106:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.Room=S;var o=i(e("@babel/runtime/helpers/slicedToArray")),s=i(e("@babel/runtime/regenerator")),a=i(e("@babel/runtime/helpers/asyncToGenerator")),u=e("events"),c=e("./event-timeline-set"),l=e("./event-timeline"),d=e("../content-repo"),f=n(e("../utils")),h=e("./event"),p=e("./room-member"),v=e("./room-summary"),g=e("../logger"),y=e("../ReEmitter");function m(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return _(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function _(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var b=["1","2","3","4","5"];function k(e,t,r){var n={content:{},type:"m.receipt",room_id:t.getRoomId()};return n.content[t.getId()]={},n.content[t.getId()][r]={},n.content[t.getId()][r][e]={ts:t.getTs()},new h.MatrixEvent(n)}function S(e,t,r,n){if((n=n||{}).pendingEventOrdering=n.pendingEventOrdering||"chronological",this.setMaxListeners(100),this.reEmitter=new y.ReEmitter(this),-1===["chronological","detached"].indexOf(n.pendingEventOrdering))throw new Error("opts.pendingEventOrdering MUST be either 'chronological' or 'detached'. Got: '"+n.pendingEventOrdering+"'");this.myUserId=r,this.roomId=e,this.name=e,this.tags={},this.accountData={},this.summary=null,this.storageToken=n.storageToken,this._opts=n,this._txnToEvent={},this._receipts={},this._receiptCacheByEventId={},this._realReceipts={},this._notificationCounts={},this._timelineSets=[new c.EventTimelineSet(this,n)],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()}f.inherits(S,u.EventEmitter),S.prototype.getVersion=function(){var e=this.currentState.getStateEvents("m.room.create","");if(!e)return g.logger.warn("Room "+this.roomId+" does not have an m.room.create event"),"1";var t=e.getContent().room_version;return void 0===t?"1":t},S.prototype.shouldUpgradeToVersion=function(){return b.includes(this.getVersion())?null:"5"},S.prototype.getRecommendedVersion=(0,a.default)(s.default.mark((function e(){var t,r,n,i,o,a,u;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._client.getCapabilities();case 2:if(t=e.sent,!(r=t["m.room_versions"])){r={default:"5",available:{}},n=m(b);try{for(n.s();!(i=n.n()).done;)o=i.value,r.available[o]="stable"}catch(e){n.e(e)}finally{n.f()}}if(!(a=this._checkVersionAgainstCapability(r)).urgent||!a.needsUpgrade){e.next=18;break}return g.logger.warn("Refreshing room version capability because the server looks to be supporting a newer room version we don't know about."),e.next=10,this._client.getCapabilities(!0);case 10:if(u=e.sent,r=u["m.room_versions"]){e.next=17;break}return g.logger.warn("No room version capability - assuming upgrade required."),e.abrupt("return",a);case 17:a=this._checkVersionAgainstCapability(r);case 18:return e.abrupt("return",a);case 19:case"end":return e.stop()}}),e,this)}))),S.prototype._checkVersionAgainstCapability=function(e){var t=this.getVersion();g.logger.log("[".concat(this.roomId,"] Current version: ").concat(t)),g.logger.log("[".concat(this.roomId,"] Version capability: "),e);var r={version:t,needsUpgrade:!1,urgent:!1};return t===e.default||Object.keys(e.available).filter((function(t){return"stable"===e.available[t]})).includes(t)||(r.version=e.default,r.needsUpgrade=!0,r.urgent=!!this.getVersion().match(/^[0-9]+[0-9.]*$/g),r.urgent?g.logger.warn("URGENT upgrade required on ".concat(this.roomId)):g.logger.warn("Non-urgent upgrade required on ".concat(this.roomId))),r},S.prototype.userMayUpgradeRoom=function(e){return this.currentState.maySendStateEvent("m.room.tombstone",e)},S.prototype.getPendingEvents=function(){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call getPendingEvents with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList},S.prototype.hasPendingEvent=function(e){if("detached"!==this._opts.pendingEventOrdering)throw new Error("Cannot call hasPendingEvent with pendingEventOrdering == "+this._opts.pendingEventOrdering);return this._pendingEventList.some((function(t){return t.getId()===e}))},S.prototype.getLiveTimeline=function(){return this.getUnfilteredTimelineSet().getLiveTimeline()},S.prototype.getLastActiveTimestamp=function(){var e=this.getLiveTimeline().getEvents();return e.length?e[e.length-1].getTs():Number.MIN_SAFE_INTEGER},S.prototype.getMyMembership=function(){return this._selfMembership},S.prototype.getDMInviter=function(){if(this.myUserId){var e=this.getMember(this.myUserId);if(e)return e.getDMInviter()}if("invite"===this._selfMembership&&(2==this.getInvitedAndJoinedMemberCount()&&this._summaryHeroes.length))return this._summaryHeroes[0]},S.prototype.guessDMUserId=function(){var e=this,t=this.getMember(this.myUserId);if(t){var r=t.getDMInviter();if(r)return r}if(Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length)return this._summaryHeroes[0];var n=this.currentState.getMembers().find((function(t){return t.userId!==e.myUserId}));return n?n.userId:this.myUserId},S.prototype.getAvatarFallbackMember=function(){var e=this;if(!(this.getInvitedAndJoinedMemberCount()>2)){var t=Array.isArray(this._summaryHeroes)&&this._summaryHeroes.length;if(t){var r=this._summaryHeroes.map((function(t){return e.getMember(t)})).find((function(e){return!!e}));if(r)return r}var n=this.currentState.getMembers();if(n.length<=2){var i=n.find((function(t){return t.userId!==e.myUserId}));if(i)return i}if(t){var o=this._summaryHeroes.map((function(t){return e._client.getUser(t)})).find((function(e){return!!e}));if(o){var s=new p.RoomMember(this.roomId,o.userId);return s.user=o,s}}}},S.prototype.updateMyMembership=function(e){var t=this._selfMembership;this._selfMembership=e,t!==e&&("leave"===e&&this._cleanupAfterLeaving(),this.emit("Room.myMembership",this,e,t))},S.prototype._loadMembersFromServer=(0,a.default)(s.default.mark((function e(){var t,r,n,i,o;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._client.store.getSyncToken(),r=f.encodeParams({not_membership:"leave",at:t}),n=f.encodeUri("/rooms/$roomId/members?"+r,{$roomId:this.roomId}),i=this._client._http,e.next=6,i.authedRequest(void 0,"GET",n);case 6:return o=e.sent,e.abrupt("return",o.chunk);case 8:case"end":return e.stop()}}),e,this)}))),S.prototype._loadMembers=(0,a.default)(s.default.mark((function e(){var t,r,n;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!1,e.next=3,this._client.store.getOutOfBandMembers(this.roomId);case 3:if(null!==(r=e.sent)){e.next=10;break}return t=!0,e.next=8,this._loadMembersFromServer();case 8:r=e.sent,g.logger.log("LL: got ".concat(r.length," ")+"members from server for room ".concat(this.roomId));case 10:return n=r.map(this._client.getEventMapper()),e.abrupt("return",{memberEvents:n,fromServer:t});case 12:case"end":return e.stop()}}),e,this)}))),S.prototype.loadMembersIfNeeded=function(){var e=this;if(this._membersPromise)return this._membersPromise;this.currentState.markOutOfBandMembersStarted();var t=this._loadMembers().then((function(t){return e.currentState.setOutOfBandMembers(t.memberEvents),e._client.isCryptoEnabled()&&e._client.isRoomEncrypted(e.roomId)&&e._client._crypto.trackRoomDevices(e.roomId),t.fromServer})).catch((function(t){throw e._membersPromise=null,e.currentState.markOutOfBandMembersFailed(),t}));return t.then((function(t){if(t){var r=e.currentState.getMembers().filter((function(e){return e.isOutOfBand()})).map((function(e){return e.events.member.event}));return g.logger.log("LL: telling store to write ".concat(r.length)+" members for room ".concat(e.roomId)),e._client.store.setOutOfBandMembers(e.roomId,r).catch((function(e){g.logger.log("LL: storing OOB room members failed, oh well",e)}))}})).catch((function(e){g.logger.error(e)})),this._membersPromise=t,this._membersPromise},S.prototype.clearLoadedMembersIfNeeded=(0,a.default)(s.default.mark((function e(){return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._opts.lazyLoadMembers||!this._membersPromise){e.next=7;break}return e.next=3,this.loadMembersIfNeeded();case 3:return e.next=5,this._client.store.clearOutOfBandMembers(this.roomId);case 5:this.currentState.clearOutOfBandMembers(),this._membersPromise=null;case 7:case"end":return e.stop()}}),e,this)}))),S.prototype._cleanupAfterLeaving=function(){var e=this;this.clearLoadedMembersIfNeeded().catch((function(t){g.logger.error("error after clearing loaded members from "+"room ".concat(e.roomId," after leaving")),g.logger.log(t)}))},S.prototype.resetLiveTimeline=function(e,t){for(var r=0;r<this._timelineSets.length;r++)this._timelineSets[r].resetLiveTimeline(e,t);this._fixUpLegacyTimelineFields()},S.prototype._fixUpLegacyTimelineFields=function(){this.timeline=this.getLiveTimeline().getEvents(),this.oldState=this.getLiveTimeline().getState(l.EventTimeline.BACKWARDS),this.currentState=this.getLiveTimeline().getState(l.EventTimeline.FORWARDS)},S.prototype.hasUnverifiedDevices=(0,a.default)(s.default.mark((function e(){var t,r,n,i;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._client.isRoomEncrypted(this.roomId)){e.next=2;break}return e.abrupt("return",!1);case 2:return e.next=4,this.getEncryptionTargetMembers();case 4:t=e.sent,r=m(t),e.prev=6,r.s();case 8:if((n=r.n()).done){e.next=15;break}if(i=n.value,!this._client.getStoredDevicesForUser(i.userId).some((function(e){return e.isUnverified()}))){e.next=13;break}return e.abrupt("return",!0);case 13:e.next=8;break;case 15:e.next=20;break;case 17:e.prev=17,e.t0=e.catch(6),r.e(e.t0);case 20:return e.prev=20,r.f(),e.finish(20);case 23:return e.abrupt("return",!1);case 24:case"end":return e.stop()}}),e,this,[[6,17,20,23]])}))),S.prototype.getTimelineSets=function(){return this._timelineSets},S.prototype.getUnfilteredTimelineSet=function(){return this._timelineSets[0]},S.prototype.getTimelineForEvent=function(e){return this.getUnfilteredTimelineSet().getTimelineForEvent(e)},S.prototype.addTimeline=function(){return this.getUnfilteredTimelineSet().addTimeline()},S.prototype.findEventById=function(e){return this.getUnfilteredTimelineSet().findEventById(e)},S.prototype.getUnreadNotificationCount=function(e){return e=e||"total",this._notificationCounts[e]},S.prototype.setUnreadNotificationCount=function(e,t){this._notificationCounts[e]=t},S.prototype.setSummary=function(e){var t=this,r=e["m.heroes"],n=e["m.joined_member_count"],i=e["m.invited_member_count"];Number.isInteger(n)&&this.currentState.setJoinedMemberCount(n),Number.isInteger(i)&&this.currentState.setInvitedMemberCount(i),Array.isArray(r)&&(this._summaryHeroes=r.filter((function(e){return e!==t.myUserId})))},S.prototype.setBlacklistUnverifiedDevices=function(e){this._blacklistUnverifiedDevices=e},S.prototype.getBlacklistUnverifiedDevices=function(){return this._blacklistUnverifiedDevices},S.prototype.getAvatarUrl=function(e,t,r,n,i){var o=this.currentState.getStateEvents("m.room.avatar","");if(void 0===i&&(i=!0),!o&&!i)return null;var s=o?o.getContent().url:null;return s?(0,d.getHttpUriForMxc)(e,s,t,r,n):null},S.prototype.getAliases=function(){var e=[],t=this.currentState.getStateEvents("m.room.aliases");if(t)for(var r=function(r){var n=t[r];if(f.isArray(n.getContent().aliases)){var i=n.getContent().aliases.filter((function(e){return"string"==typeof e&&("#"===e[0]&&!!e.endsWith(":".concat(n.getStateKey())))}));Array.prototype.push.apply(e,i)}},n=0;n<t.length;++n)r(n);return e},S.prototype.getCanonicalAlias=function(){var e=this.currentState.getStateEvents("m.room.canonical_alias","");return e&&e.getContent().alias||null},S.prototype.getAltAliases=function(){var e=this.currentState.getStateEvents("m.room.canonical_alias","");return e&&e.getContent().alt_aliases||[]},S.prototype.addEventsToTimeline=function(e,t,r,n){r.getTimelineSet().addEventsToTimeline(e,t,r,n)},S.prototype.getMember=function(e){return this.currentState.getMember(e)},S.prototype.getJoinedMembers=function(){return this.getMembersWithMembership("join")},S.prototype.getJoinedMemberCount=function(){return this.currentState.getJoinedMemberCount()},S.prototype.getInvitedMemberCount=function(){return this.currentState.getInvitedMemberCount()},S.prototype.getInvitedAndJoinedMemberCount=function(){return this.getInvitedMemberCount()+this.getJoinedMemberCount()},S.prototype.getMembersWithMembership=function(e){return f.filter(this.currentState.getMembers(),(function(t){return t.membership===e}))},S.prototype.getEncryptionTargetMembers=(0,a.default)(s.default.mark((function e(){var t;return s.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.loadMembersIfNeeded();case 2:return t=this.getMembersWithMembership("join"),this.shouldEncryptForInvitedMembers()&&(t=t.concat(this.getMembersWithMembership("invite"))),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)}))),S.prototype.shouldEncryptForInvitedMembers=function(){var e=this.currentState.getStateEvents("m.room.history_visibility","");return e&&e.getContent()&&"joined"!==e.getContent().history_visibility},S.prototype.getDefaultRoomName=function(e){return w(this,e,!0)},S.prototype.hasMembershipState=function(e,t){var r=this.getMember(e);return!!r&&r.membership===t},S.prototype.getOrCreateFilteredTimelineSet=function(e){if(this._filteredTimelineSets[e.filterId])return this._filteredTimelineSets[e.filterId];var t=Object.assign({filter:e},this._opts),r=new c.EventTimelineSet(this,t);this.reEmitter.reEmit(r,["Room.timeline","Room.timelineReset"]),this._filteredTimelineSets[e.filterId]=r,this._timelineSets.push(r);var n=this.getLiveTimeline();n.getEvents().forEach((function(e){r.addLiveEvent(e)}));for(var i=n;i.getNeighbouringTimeline(l.EventTimeline.BACKWARDS);)i=i.getNeighbouringTimeline(l.EventTimeline.BACKWARDS);return r.getLiveTimeline().setPaginationToken(i.getPaginationToken(l.EventTimeline.BACKWARDS),l.EventTimeline.BACKWARDS),r},S.prototype.removeFilteredTimelineSet=function(e){var t=this._filteredTimelineSets[e.filterId];delete this._filteredTimelineSets[e.filterId];var r=this._timelineSets.indexOf(t);r>-1&&this._timelineSets.splice(r,1)},S.prototype._addLiveEvent=function(e,t,r){if(e.isRedaction()){var n=e.event.redacts,i=this.getUnfilteredTimelineSet().findEventById(n);if(i){if(i.makeRedacted(e),i.getStateKey())this.currentState.getStateEvents(i.getType(),i.getStateKey()).getId()===i.getId()&&this.currentState.setStateEvents([i]);this.emit("Room.redaction",e,this)}}if(e.getUnsigned().transaction_id){var o=this._txnToEvent[e.getUnsigned().transaction_id];if(o)return void this._handleRemoteEcho(e,o)}for(var s=0;s<this._timelineSets.length;s++)this._timelineSets[s].addLiveEvent(e,t,r);e.sender&&"m.room.redaction"!==e.getType()&&this.addReceipt(k(e.sender.userId,e,"m.read"),!0)},S.prototype.addPendingEvent=function(e,t){if(e.status!==h.EventStatus.SENDING)throw new Error("addPendingEvent called on an event with status "+e.status);if(this._txnToEvent[t])throw new Error("addPendingEvent called on an event with known txnId "+t);if(l.EventTimeline.setEventMetadata(e,this.getLiveTimeline().getState(l.EventTimeline.FORWARDS),!1),this._txnToEvent[t]=e,"detached"==this._opts.pendingEventOrdering){if(this._pendingEventList.some((function(e){return e.status===h.EventStatus.NOT_SENT}))&&(g.logger.warn("Setting event as NOT_SENT due to messages in the same state"),e.setStatus(h.EventStatus.NOT_SENT)),this._pendingEventList.push(e),e.isRelation()&&this._aggregateNonLiveRelation(e),e.isRedaction()){var r=e.event.redacts,n=this._pendingEventList&&this._pendingEventList.find((function(e){return e.getId()===r}));n||(n=this.getUnfilteredTimelineSet().findEventById(r)),n&&(n.markLocallyRedacted(e),this.emit("Room.redaction",e,this))}}else for(var i=0;i<this._timelineSets.length;i++){var o=this._timelineSets[i];o.getFilter()?o.getFilter().filterRoomTimeline([e]).length&&o.addEventToTimeline(e,o.getLiveTimeline(),!1):o.addEventToTimeline(e,o.getLiveTimeline(),!1)}this.emit("Room.localEchoUpdated",e,this,null,null)},S.prototype._aggregateNonLiveRelation=function(e){for(var t=0;t<this._timelineSets.length;t++){var r=this._timelineSets[t];r.getFilter()?r.getFilter().filterRoomTimeline([e]).length&&r.aggregateRelations(e):r.aggregateRelations(e)}},S.prototype._handleRemoteEcho=function(e,t){var r=t.getId(),n=e.getId(),i=t.status;g.logger.debug("Got remote echo for event ".concat(r," -> ").concat(n," ")+"old status ".concat(i)),delete this._txnToEvent[e.getUnsigned().transaction_id],this._pendingEventList&&f.removeElement(this._pendingEventList,(function(e){return e.getId()==r}),!1),t.handleRemoteEcho(e.event);for(var o=0;o<this._timelineSets.length;o++){this._timelineSets[o].handleRemoteEcho(t,r,n)}this.emit("Room.localEchoUpdated",t,this,r,i)};var E={};function w(e,t,r){if(!r){var n=e.currentState.getStateEvents("m.room.name","");if(n&&n.getContent()&&n.getContent().name)return n.getContent().name}var i=e.getCanonicalAlias();if(!i){var o=e.getAltAliases();o.length&&(i=o[0])}if(i)return i;var s=e.currentState.getJoinedMemberCount()+e.currentState.getInvitedMemberCount()-1,a=null;if(e._summaryHeroes)a=e._summaryHeroes.map((function(t){var r=e.getMember(t);return r?r.name:t}));else{var u=e.currentState.getMembers().filter((function(e){return e.userId!==t&&("invite"===e.membership||"join"===e.membership)}));u.sort((function(e,t){return e.userId.localeCompare(t.userId)})),a=(u=u.slice(0,5)).map((function(e){return e.name}))}if(s)return I(a,s);if("join"==e.getMyMembership()){var c=e.currentState.getStateEvents("m.room.third_party_invite");if(c&&c.length){var l=c.map((function(e){return e.getContent().display_name}));return"Inviting ".concat(I(l))}}var d=a;return d.length||(d=e.currentState.getMembers().filter((function(e){return e.userId!==t&&"invite"!==e.membership&&"join"!==e.membership})).map((function(e){return e.name}))),d.length?"Empty room (was ".concat(I(d),")"):"Empty room"}function I(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length+1,r=t-1;if(e.length){if(1===e.length&&r<=1)return e[0];if(2===e.length&&r<=2)return"".concat(e[0]," and ").concat(e[1]);var n=r>1;return n?"".concat(e[0]," and ").concat(r," others"):"".concat(e[0]," and 1 other")}return"Empty room"}E[h.EventStatus.ENCRYPTING]=[h.EventStatus.SENDING,h.EventStatus.NOT_SENT],E[h.EventStatus.SENDING]=[h.EventStatus.ENCRYPTING,h.EventStatus.QUEUED,h.EventStatus.NOT_SENT,h.EventStatus.SENT],E[h.EventStatus.QUEUED]=[h.EventStatus.SENDING,h.EventStatus.CANCELLED],E[h.EventStatus.SENT]=[],E[h.EventStatus.NOT_SENT]=[h.EventStatus.SENDING,h.EventStatus.QUEUED,h.EventStatus.CANCELLED],E[h.EventStatus.CANCELLED]=[],S.prototype.updatePendingEvent=function(e,t,r){if(g.logger.log("setting pendingEvent status to ".concat(t," in ").concat(e.getRoomId()," ")+"event ID ".concat(e.getId()," -> ").concat(r)),t==h.EventStatus.SENT&&!r)throw new Error("updatePendingEvent called with status=SENT, but no new event id");if(t==h.EventStatus.SENT&&this.getUnfilteredTimelineSet().eventIdToTimeline(r))return;var n=e.status,i=e.getId();if(!n)throw new Error("updatePendingEventStatus called on an event which is not a local echo.");var s=E[n];if(!s||s.indexOf(t)<0)throw new Error("Invalid EventStatus transition "+n+"->"+t);if(e.setStatus(t),t==h.EventStatus.SENT){e.replaceLocalEventId(r);for(var a=0;a<this._timelineSets.length;a++)this._timelineSets[a].replaceEventId(i,r)}else if(t==h.EventStatus.CANCELLED){if(this._pendingEventList){var u=this._pendingEventList.findIndex((function(e){return e.getId()===i}));if(-1!==u){var c=this._pendingEventList.splice(u,1),l=(0,o.default)(c,1)[0];l.isRedaction()&&this._revertRedactionLocalEcho(l)}}this.removeEvent(i)}this.emit("Room.localEchoUpdated",e,this,i,n)},S.prototype._revertRedactionLocalEcho=function(e){var t=e.event.redacts;if(t){var r=this.getUnfilteredTimelineSet().findEventById(t);r&&(r.unmarkLocallyRedacted(),this.emit("Room.redactionCancelled",e,this),r.isRelation()&&this._aggregateNonLiveRelation(r))}},S.prototype.addLiveEvents=function(e,t,r){var n;if(t&&-1===["replace","ignore"].indexOf(t))throw new Error("duplicateStrategy MUST be either 'replace' or 'ignore'");for(n=0;n<this._timelineSets.length;n++){var i=this._timelineSets[n].getLiveTimeline();if(i.getPaginationToken(l.EventTimeline.FORWARDS))throw new Error("live timeline "+n+" is no longer live - it has a pagination token ("+i.getPaginationToken(l.EventTimeline.FORWARDS)+")");if(i.getNeighbouringTimeline(l.EventTimeline.FORWARDS))throw new Error("live timeline "+n+" is no longer live - it has a neighbouring timeline")}for(n=0;n<e.length;n++)this._addLiveEvent(e[n],t,r)},S.prototype.addEphemeralEvents=function(e){var t,r=m(e);try{for(r.s();!(t=r.n()).done;){var n=t.value;"m.typing"===n.getType()?this.currentState.setTypingEvent(n):"m.receipt"===n.getType()&&this.addReceipt(n)}}catch(e){r.e(e)}finally{r.f()}},S.prototype.removeEvents=function(e){for(var t=0;t<e.length;++t)this.removeEvent(e[t])},S.prototype.removeEvent=function(e){for(var t=!1,r=0;r<this._timelineSets.length;r++){var n=this._timelineSets[r].removeEvent(e);n&&(n.isRedaction()&&this._revertRedactionLocalEcho(n),t=!0)}return t},S.prototype.recalculate=function(){var e=this,t=this.currentState.getStateEvents("m.room.member",this.myUserId);if(t&&"invite"===t.getContent().membership){var r=t.event.invite_room_state||[];f.forEach(r,(function(t){e.currentState.getStateEvents(t.type,t.state_key)||e.currentState.setStateEvents([new h.MatrixEvent({type:t.type,state_key:t.state_key,content:t.content,event_id:"$fake"+Date.now(),room_id:e.roomId,user_id:e.myUserId})])}))}var n=this.name;this.name=w(this,this.myUserId),this.summary=new v.RoomSummary(this.roomId,{title:this.name}),n!==this.name&&this.emit("Room.name",this)},S.prototype.getUsersReadUpTo=function(e){return this.getReceiptsForEvent(e).filter((function(e){return"m.read"===e.type})).map((function(e){return e.userId}))},S.prototype.getEventReadUpTo=function(e,t){var r=this._receipts;return t&&(r=this._realReceipts),void 0===r["m.read"]||void 0===r["m.read"][e]?null:r["m.read"][e].eventId},S.prototype.hasUserReadEvent=function(e,t){var r=this.getEventReadUpTo(e,!1);if(r===t)return!0;if(this.timeline.length&&this.timeline[this.timeline.length-1].getSender()&&this.timeline[this.timeline.length-1].getSender()===e)return!0;for(var n=this.timeline.length-1;n>=0;--n){var i=this.timeline[n];if(i.getId()===t)return!1;if(i.getId()===r)return!0}return!1},S.prototype.getReceiptsForEvent=function(e){return this._receiptCacheByEventId[e.getId()]||[]},S.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)},S.prototype._addReceiptsToStructure=function(e,t){var r=this;f.keys(e.getContent()).forEach((function(n){f.keys(e.getContent()[n]).forEach((function(i){f.keys(e.getContent()[n][i]).forEach((function(o){var s=e.getContent()[n][i][o];t[i]||(t[i]={});var a=t[i][o];if(a){var u=r.getUnfilteredTimelineSet().compareEventOrdering(a.eventId,n);if(null!==u&&u>=0)return}else t[i][o]={};t[i][o]={eventId:n,data:s}}))}))}))},S.prototype._buildReceiptCache=function(e){var t={};return f.keys(e).forEach((function(r){f.keys(e[r]).forEach((function(n){var i=e[r][n];t[i.eventId]||(t[i.eventId]=[]),t[i.eventId].push({userId:n,type:r,data:i.data})}))})),t},S.prototype._addLocalEchoReceipt=function(e,t,r){this.addReceipt(k(e,t,r),!0)},S.prototype.addTags=function(e){this.tags=e.getContent().tags||{},this.emit("Room.tags",e,this)},S.prototype.addAccountData=function(e){for(var t=0;t<e.length;t++){var r=e[t];"m.tag"===r.getType()&&this.addTags(r);var n=this.accountData[r.getType()];this.accountData[r.getType()]=r,this.emit("Room.accountData",r,this,n)}},S.prototype.getAccountData=function(e){return this.accountData[e]},S.prototype.maySendMessage=function(){return"join"===this.getMyMembership()&&this.currentState.maySendEvent("m.room.message",this.myUserId)}},{"../ReEmitter":53,"../content-repo":59,"../logger":95,"../utils":123,"./event":100,"./event-timeline":99,"./event-timeline-set":98,"./room-member":103,"./room-summary":105,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,events:36}],107:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.SearchResult=s;var i=n(e("../utils")),o=e("./event-context");function s(e,t){this.rank=e,this.context=t}s.fromJson=function(e,t){var r=e.context||{},n=r.events_before||[],a=r.events_after||[],u=new o.EventContext(t(e.result));return u.setPaginateToken(r.start,!0),u.addEvents(i.map(n,t),!0),u.addEvents(i.map(a,t),!1),u.setPaginateToken(r.end,!1),new s(e.rank,u)}},{"../utils":123,"./event-context":97,"@babel/runtime/helpers/interopRequireWildcard":13}],108:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.User=s;var i=n(e("../utils")),o=e("events");function s(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()}i.inherits(s,o.EventEmitter),s.prototype.setPresenceEvent=function(e){if("m.presence"===e.getType()){var t=null===this.events.presence;this.events.presence=e;var r=[];(e.getContent().presence!==this.presence||t)&&r.push("User.presence"),e.getContent().avatar_url&&e.getContent().avatar_url!==this.avatarUrl&&r.push("User.avatarUrl"),e.getContent().displayname&&e.getContent().displayname!==this.displayName&&r.push("User.displayName"),void 0!==e.getContent().currently_active&&e.getContent().currently_active!==this.currentlyActive&&r.push("User.currentlyActive"),this.presence=e.getContent().presence,r.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(var n=0;n<r.length;n++)this.emit(r[n],e,this)}},s.prototype.setDisplayName=function(e){var t=this.displayName;this.displayName="string"==typeof e?e:void 0,e!==t&&this._updateModifiedTime()},s.prototype.setRawDisplayName=function(e){this.rawDisplayName="string"==typeof e?e:void 0},s.prototype.setAvatarUrl=function(e){var t=this.avatarUrl;this.avatarUrl=e,e!==t&&this._updateModifiedTime()},s.prototype._updateModifiedTime=function(){this._modified=Date.now()},s.prototype.getLastModifiedTime=function(){return this._modified},s.prototype.getLastActiveTs=function(){return this.lastPresenceTs-this.lastActiveAgo},s.prototype._unstable_updateStatusMessage=function(e){e.getContent()?this._unstable_statusMessage=e.getContent().status:this._unstable_statusMessage="",this._updateModifiedTime(),this.emit("User._unstable_statusMessage",this)}},{"../utils":123,"@babel/runtime/helpers/interopRequireWildcard":13,events:36}],109:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.PushProcessor=l;var i=n(e("@babel/runtime/helpers/typeof")),o=e("./utils");function s(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,u=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){u=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(u)throw o}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var u=["override","content","room","sender","underride"],c=[{rule_id:".m.rule.tombstone",default:!0,enabled:!0,conditions:[{kind:"event_match",key:"type",pattern:"m.room.tombstone"},{kind:"event_match",key:"state_key",pattern:""}],actions:["notify",{set_tweak:"highlight",value:!0}]},{rule_id:".m.rule.reaction",default:!0,enabled:!0,conditions:[{kind:"event_match",key:"type",pattern:"m.reaction"}],actions:["dont_notify"]}];function l(e){var t=this,r={},n=function(e,t){var r={rule_id:t.rule_id,actions:t.actions,conditions:[]};switch(e){case"underride":case"override":r.conditions=t.conditions;break;case"room":if(!t.rule_id)return null;r.conditions.push({kind:"event_match",key:"room_id",value:t.rule_id});break;case"sender":if(!t.rule_id)return null;r.conditions.push({kind:"event_match",key:"user_id",value:t.rule_id});break;case"content":if(!t.pattern)return null;r.conditions.push({kind:"event_match",key:"content.body",pattern:t.pattern})}return r},i=function(e,t){var r={event_match:f,contains_display_name:d,room_member_count:c,sender_notification_permission:a};return!!r[e.kind]&&r[e.kind](e,t)},a=function(t,r){var n=t.key;if(!n)return!1;var i=e.getRoom(r.getRoomId());return!(!i||!i.currentState)&&i.currentState.mayTriggerNotifOfType(n,r.getSender())},c=function(t,r){if(!t.is)return!1;var n=e.getRoom(r.getRoomId());if(!n||!n.currentState||!n.currentState.members)return!1;var i=n.currentState.getJoinedMemberCount(),o=t.is.match(/^([=<>]*)([0-9]*)$/);if(!o)return!1;var s=o[1],a=parseInt(o[2]);if(isNaN(a))return!1;switch(s){case"":case"==":return i==a;case"<":return i<a;case">":return i>a;case"<=":return i<=a;case">=":return i>=a;default:return!1}},d=function(t,r){var n=r.getContent();if(r.isEncrypted()&&r.getClearContent()&&(n=r.getClearContent()),!n||!n.body||"string"!=typeof n.body)return!1;var i=e.getRoom(r.getRoomId());if(!(i&&i.currentState&&i.currentState.members&&i.currentState.getMember(e.credentials.userId)))return!1;var s=i.currentState.getMember(e.credentials.userId).name,a=new RegExp("(^|\\W)"+(0,o.escapeRegExp)(s)+"(\\W|$)","i");return n.body.search(a)>-1},f=function(e,t){if(!e.key)return!1;var r,n=p(e.key,t);return"string"==typeof n&&(e.value?e.value===n:(r="content.body"==e.key?h("(^|\\W)",e.pattern,"(\\W|$)"):h("^",e.pattern,"$"),!!n.match(r)))},h=function(e,t,n){return r[t]||(r[t]=new RegExp(e+(0,o.globToRegexp)(t)+n,"i")),r[t]},p=function(e,t){var r,n=e.split("."),i=n[0];for("content"===i?(r=t.getContent(),n.shift()):"type"===i?(r=t.getType(),n.shift()):r=t.event;n.length>0;){var s=n.shift();if((0,o.isNullOrUndefined)(r[s]))return null;r=r[s]}return r},v=function(r,i){return i?r.getSender()===e.credentials.userId?null:function(e,r){for(var i=0;i<u.length;++i){var o=u[i],s=r[o];if(s)for(var a=0;a<s.length;++a){var c=s[a];if(c.enabled){var l=n(o,c);if(l&&t.ruleMatchesEvent(l,e))return c.kind=o,c}}}return null}(r,i.global):null};this.ruleMatchesEvent=function(e,t){for(var r=!0,n=0;n<e.conditions.length;++n){var o=e.conditions[n];r&=i(o,t)}return r},this.actionsForEvent=function(t){return function(e,t){var r=v(e,t);if(!r)return{};var n=l.actionListToActionsObject(r.actions);return void 0===n.tweaks.highlight&&(n.tweaks.highlight="content"==r.kind),n}(t,e.pushRules)},this.getPushRuleById=function(t){for(var r=0,n=["global"];r<n.length;r++){var i=n[r];if(void 0!==e.pushRules[i]){var o,a=s(u);try{for(a.s();!(o=a.n()).done;){var c=o.value;if(void 0!==e.pushRules[i][c]){var l,d=s(e.pushRules[i][c]);try{for(d.s();!(l=d.n()).done;){var f=l.value;if(f.rule_id===t)return f}}catch(e){d.e(e)}finally{d.f()}}}}catch(e){a.e(e)}finally{a.f()}}}return null}}l.actionListToActionsObject=function(e){for(var t={notify:!1,tweaks:{}},r=0;r<e.length;++r){var n=e[r];"notify"===n?t.notify=!0:"object"===(0,i.default)(n)&&(void 0===n.value&&(n.value=!0),t.tweaks[n.set_tweak]=n.value)}return t},l.rewriteDefaultRules=function(e){var t=JSON.parse(JSON.stringify(e));t||(t={}),t.global||(t.global={}),t.global.override||(t.global.override=[]);var r,n=t.global.override,i=s(c);try{var o=function(){var e=r.value,t=n.find((function(t){return t.rule_id===e.rule_id}));if(t)t.default=e.default,t.conditions=e.conditions,t.actions=e.actions;else{var i=e.rule_id;console.warn("Adding default global override for ".concat(i)),n.push(e)}};for(i.s();!(r=i.n()).done;)o()}catch(e){i.e(e)}finally{i.f()}return t}},{"./utils":123,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/typeof":24}],110:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.randomString=void 0,r.randomString=function(e){let t="";const r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(let n=0;n<e;++n)t+=r.charAt(Math.floor(Math.random()*r.length));return t}},{}],111:[function(e,t,r){(function(t){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.setNow=function(e){a=e||Date.now},r.setTimeout=function(e,t){(t=t||0)<0&&(t=0);var r=Array.prototype.slice.call(arguments,2),n=a()+t,i=o++;var c={runAt:n,func:e,params:r,key:i},d=l(s,(function(e){return e.runAt-n}));return s.splice(d,0,c),u(),i},r.clearTimeout=function(e){if(0===s.length)return;var t;for(t=0;t<s.length;t++){if(s[t].key==e){s.splice(t,1);break}}0===t&&u()};var n,i=e("./logger"),o=0,s=[];var a=Date.now;function u(){n&&t.clearTimeout(n);var e=s[0];if(e){var r=a(),i=Math.min(e.runAt-r,1e3);n=t.setTimeout(c,i)}}function c(){for(var e,r=a(),n=[];;){var o=s[0];if(!o||o.runAt>r)break;(e=s.shift()).key,n.push(e)}u();for(var c=0;c<n.length;c++){e=n[c];try{e.func.apply(t,e.params)}catch(e){i.logger.error("Uncaught exception in callback function",e.stack||e)}}}function l(e,t){for(var r=0,n=e.length;r<n;){var i=r+n>>1;t(e[i])>0?n=i:r=i+1}return r}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./logger":95}],112:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixScheduler=o;var i=n(e("./utils"));e("./logger");function o(e,t){this.retryAlgorithm=e||o.RETRY_BACKOFF_RATELIMIT,this.queueAlgorithm=t||o.QUEUE_MESSAGES,this._queues={},this._activeQueues=[],this._procFn=null}function s(e){e._procFn&&i.forEach(i.filter(i.keys(e._queues),(function(t){return-1===e._activeQueues.indexOf(t)&&e._queues[t].length>0})),(function(t){e._activeQueues.push(t),u("Spinning up queue: '%s'",t),function e(t,r){var n=function(e,t){var r=e._queues[t];if(!i.isArray(r))return null;return r[0]}(t,r);if(!n){var o=t._activeQueues.indexOf(r);return o>=0&&t._activeQueues.splice(o,1),void u("Stopping queue '%s' as it is now empty",r)}u("Queue '%s' has %s pending events",r,t._queues[r].length),Promise.resolve().then((function(){return t._procFn(n.event)})).then((function(i){a(t,r),u("Queue '%s' sent event %s",r,n.event.getId()),n.defer.resolve(i),e(t,r)}),(function(i){n.attempts+=1;var o=t.retryAlgorithm(n.event,n.attempts,i);u("retry(%s) err=%s event_id=%s waitTime=%s",n.attempts,i,n.event.getId(),o),-1===o?(u("Queue '%s' giving up on event %s",r,n.event.getId()),a(t,r),n.defer.reject(i),e(t,r)):setTimeout((function(){e(t,r)}),o)}))}(e,t)}))}function a(e,t){var r=e._queues[t];return i.isArray(r)?r.shift():null}function u(){0}o.prototype.getQueueForEvent=function(e){var t=this.queueAlgorithm(e);return t&&this._queues[t]?i.map(this._queues[t],(function(e){return e.event})):null},o.prototype.removeEventFromQueue=function(e){var t=this.queueAlgorithm(e);if(!t||!this._queues[t])return!1;var r=!1;return i.removeElement(this._queues[t],(function(t){if(t.event.getId()===e.getId())return r=!0,!0})),r},o.prototype.setProcessFunction=function(e){this._procFn=e,s(this)},o.prototype.queueEvent=function(e){var t=this.queueAlgorithm(e);if(!t)return null;this._queues[t]||(this._queues[t]=[]);var r=i.defer();return this._queues[t].push({event:e,defer:r,attempts:0}),u("Queue algorithm dumped event %s into queue '%s'",e.getId(),t),s(this),r.promise},o.RETRY_BACKOFF_RATELIMIT=function(e,t,r){if(400===r.httpStatus||403===r.httpStatus||401===r.httpStatus)return-1;if("rejected"===r.cors)return-1;if("M_TOO_LARGE"===r.name)return-1;if("M_LIMIT_EXCEEDED"===r.name){var n=r.data.retry_after_ms;if(n)return n}return t>4?-1:1e3*Math.pow(2,t)},o.QUEUE_MESSAGES=function(e){return"m.room.message"===e.getType()||e.hasAssocation()?"message":null}},{"./logger":95,"./utils":123,"@babel/runtime/helpers/interopRequireWildcard":13}],113:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.SERVICE_TYPES=void 0;var n=Object.freeze({IS:"SERVICE_TYPE_IS",IM:"SERVICE_TYPE_IM"});r.SERVICE_TYPES=n},{}],114:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.LocalIndexedDBStoreBackend=S;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("@babel/runtime/helpers/slicedToArray")),u=e("../sync-accumulator"),c=n(e("../utils")),l=n(e("../indexeddb-helpers")),d=e("../logger");function f(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return h(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return h(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var p,v,g;function y(e,t,r){var n=e.openCursor(t);return new Promise((function(e,t){var i=[];n.onerror=function(e){t(new Error("Query failed: "+e.target.errorCode))},n.onsuccess=function(t){var n=t.target.result;n?(i.push(r(n)),n.continue()):e(i)}}))}function m(e){return new Promise((function(t,r){e.oncomplete=function(e){t(e)},e.onerror=function(e){r(e.target.error)}}))}function _(e){return new Promise((function(t,r){e.onsuccess=function(e){t(e)},e.onerror=function(e){r(e.target.error)}}))}function b(e){return new Promise((function(t,r){e.onsuccess=function(){return t(e)},e.onerror=function(e){return r(e)}}))}function k(e){return _(e).then((function(e){return e.target.result}))}function S(e,t){this.indexedDB=e,this._dbName="matrix-js-sdk:"+(t||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new u.SyncAccumulator,this._isNewlyCreated=!1}S.exists=function(e,t){return t="matrix-js-sdk:"+(t||"default"),l.exists(e,t)},S.prototype={connect:function(){var e=this;if(!this._disconnected)return d.logger.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),Promise.resolve();this._disconnected=!1,d.logger.log("LocalIndexedDBStoreBackend.connect: connecting...");var t=this.indexedDB.open(this._dbName,3);return t.onupgradeneeded=function(t){var r=t.target.result,n=t.oldVersion;d.logger.log("LocalIndexedDBStoreBackend.connect: upgrading from ".concat(n)),n<1&&(e._isNewlyCreated=!0,function(e){e.createObjectStore("users",{keyPath:["userId"]}),e.createObjectStore("accountData",{keyPath:["type"]}),e.createObjectStore("sync",{keyPath:["clobber"]})}(r)),n<2&&function(e){e.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(r),n<3&&function(e){e.createObjectStore("client_options",{keyPath:["clobber"]})}(r)},t.onblocked=function(){d.logger.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},d.logger.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),_(t).then((function(t){return d.logger.log("LocalIndexedDBStoreBackend.connect: connected"),e.db=t.target.result,e.db.onversionchange=function(){e.db.close()},e._init()}))},isNewlyCreated:function(){return Promise.resolve(this._isNewlyCreated)},_init:function(){var e=this;return Promise.all([this._loadAccountData(),this._loadSyncData()]).then((function(t){var r=(0,a.default)(t,2),n=r[0],i=r[1];d.logger.log("LocalIndexedDBStoreBackend: loaded initial data"),e._syncAccumulator.accumulate({next_batch:i.nextBatch,rooms:i.roomsData,groups:i.groupsData,account_data:{events:n}})}))},getOutOfBandMembers:function(e){var t=this;return new Promise((function(r,n){var i=t.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),o=IDBKeyRange.only(e),s=i.openCursor(o),a=[],u=!1;s.onsuccess=function(e){var t=e.target.result;if(!t)return a.length||u?r(a):r(null);var n=t.value;n.oob_written?u=!0:a.push(n),t.continue()},s.onerror=function(e){n(e)}})).then((function(t){return d.logger.log("LL: got ".concat(t&&t.length)+" membershipEvents from storage for room ".concat(e," ...")),t}))},setOutOfBandMembers:(g=(0,s.default)(o.default.mark((function e(t,r){var n,i,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return d.logger.log("LL: backend about to store ".concat(r.length)+" members for ".concat(t)),n=this.db.transaction(["oob_membership_events"],"readwrite"),i=n.objectStore("oob_membership_events"),r.forEach((function(e){i.put(e)})),s={room_id:t,oob_written:!0,state_key:0},i.put(s),e.next=8,m(n);case 8:d.logger.log("LL: backend done storing for ".concat(t,"!"));case 9:case"end":return e.stop()}}),e,this)}))),function(e,t){return g.apply(this,arguments)}),clearOutOfBandMembers:(v=(0,s.default)(o.default.mark((function e(t){var r,n,i,s,u,c,l,f,h,p,v,g,y;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.db.transaction(["oob_membership_events"],"readonly"),n=r.objectStore("oob_membership_events"),i=n.index("room"),s=IDBKeyRange.only(t),u=k(i.openKeyCursor(s,"next")).then((function(e){return e&&e.primaryKey[1]})),c=k(i.openKeyCursor(s,"prev")).then((function(e){return e&&e.primaryKey[1]})),e.next=8,Promise.all([u,c]);case 8:return l=e.sent,f=(0,a.default)(l,2),h=f[0],p=f[1],v=this.db.transaction(["oob_membership_events"],"readwrite"),g=v.objectStore("oob_membership_events"),y=IDBKeyRange.bound([t,h],[t,p]),d.logger.log("LL: Deleting all users + marker in storage for "+"room ".concat(t,", with key range:"),[t,h],[t,p]),e.next=18,b(g.delete(y));case 18:case"end":return e.stop()}}),e,this)}))),function(e){return v.apply(this,arguments)}),clearDatabase:function(){var e=this;return new Promise((function(t,r){d.logger.log("Removing indexeddb instance: ".concat(e._dbName));var n=e.indexedDB.deleteDatabase(e._dbName);n.onblocked=function(){d.logger.log("can't yet delete indexeddb ".concat(e._dbName)+" because it is open elsewhere")},n.onerror=function(e){d.logger.warn("unable to delete js-sdk store indexeddb: ".concat(e.target.error)),t()},n.onsuccess=function(){d.logger.log("Removed indexeddb instance: ".concat(e._dbName)),t()}}))},getSavedSync:function(e){void 0===e&&(e=!0);var t=this._syncAccumulator.getJSON();return t.nextBatch?e?Promise.resolve(c.deepCopy(t)):Promise.resolve(t):Promise.resolve(null)},getNextBatchToken:function(){return Promise.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(e){var t=this;return Promise.resolve().then((function(){t._syncAccumulator.accumulate(e)}))},syncToDatabase:function(e){var 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,r){var n=this;return d.logger.log("Persisting sync data up to ",e),c.promiseTry((function(){var i=n.db.transaction(["sync"],"readwrite");return i.objectStore("sync").put({clobber:"-",nextBatch:e,roomsData:t,groupsData:r}),m(i)}))},_persistAccountData:function(e){var t=this;return c.promiseTry((function(){for(var r=t.db.transaction(["accountData"],"readwrite"),n=r.objectStore("accountData"),i=0;i<e.length;i++)n.put(e[i]);return m(r)}))},_persistUserPresenceEvents:function(e){var t=this;return c.promiseTry((function(){var r,n=t.db.transaction(["users"],"readwrite"),i=n.objectStore("users"),o=f(e);try{for(o.s();!(r=o.n()).done;){var s=r.value;i.put({userId:s[0],event:s[1]})}}catch(e){o.e(e)}finally{o.f()}return m(n)}))},getUserPresenceEvents:function(){var e=this;return c.promiseTry((function(){return y(e.db.transaction(["users"],"readonly").objectStore("users"),void 0,(function(e){return[e.value.userId,e.value.event]}))}))},_loadAccountData:function(){var e=this;return d.logger.log("LocalIndexedDBStoreBackend: loading account data..."),c.promiseTry((function(){return y(e.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,(function(e){return e.value})).then((function(e){return d.logger.log("LocalIndexedDBStoreBackend: loaded account data"),e}))}))},_loadSyncData:function(){var e=this;return d.logger.log("LocalIndexedDBStoreBackend: loading sync data..."),c.promiseTry((function(){return y(e.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,(function(e){return e.value})).then((function(e){return d.logger.log("LocalIndexedDBStoreBackend: loaded sync data"),e.length>1&&d.logger.warn("loadSyncData: More than 1 sync row found."),e.length>0?e[0]:{}}))}))},getClientOptions:function(){var e=this;return Promise.resolve().then((function(){return y(e.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,(function(e){if(e.value&&e.value&&e.value.options)return e.value.options})).then((function(e){return e[0]}))}))},storeClientOptions:(p=(0,s.default)(o.default.mark((function e(t){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return(r=this.db.transaction(["client_options"],"readwrite")).objectStore("client_options").put({clobber:"-",options:t}),e.next=5,m(r);case 5:case"end":return e.stop()}}),e,this)}))),function(e){return p.apply(this,arguments)})}},{"../indexeddb-helpers":93,"../logger":95,"../sync-accumulator":120,"../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27}],115:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.RemoteIndexedDBStoreBackend=o;var n=e("../logger"),i=e("../utils");function o(e,t,r){this._workerScript=e,this._dbName=t,this._workerApi=r,this._worker=null,this._nextSeq=0,this._inFlight={},this._startPromise=null}o.prototype={connect:function(){var e=this;return this._ensureStarted().then((function(){return e._doCmd("connect")}))},clearDatabase:function(){var e=this;return this._ensureStarted().then((function(){return e._doCmd("clearDatabase")}))},isNewlyCreated:function(){return this._doCmd("isNewlyCreated")},getSavedSync:function(){return this._doCmd("getSavedSync")},getNextBatchToken:function(){return this._doCmd("getNextBatchToken")},setSyncData:function(e){return this._doCmd("setSyncData",[e])},syncToDatabase:function(e){return this._doCmd("syncToDatabase",[e])},getOutOfBandMembers:function(e){return this._doCmd("getOutOfBandMembers",[e])},setOutOfBandMembers:function(e,t){return this._doCmd("setOutOfBandMembers",[e,t])},clearOutOfBandMembers:function(e){return this._doCmd("clearOutOfBandMembers",[e])},getClientOptions:function(){return this._doCmd("getClientOptions")},storeClientOptions:function(e){return this._doCmd("storeClientOptions",[e])},getUserPresenceEvents:function(){return this._doCmd("getUserPresenceEvents")},_ensureStarted:function(){return null===this._startPromise&&(this._worker=new this._workerApi(this._workerScript),this._worker.onmessage=this._onWorkerMessage.bind(this),this._startPromise=this._doCmd("_setupWorker",[this._dbName]).then((function(){n.logger.log("IndexedDB worker is ready")}))),this._startPromise},_doCmd:function(e,t){var r=this;return Promise.resolve().then((function(){var n=r._nextSeq++,o=(0,i.defer)();return r._inFlight[n]=o,r._worker.postMessage({command:e,seq:n,args:t}),o.promise}))},_onWorkerMessage:function(e){var t=e.data;if("cmd_success"==t.command||"cmd_fail"==t.command){if(void 0===t.seq)return void n.logger.error("Got reply from worker with no seq");var r=this._inFlight[t.seq];if(void 0===r)return void n.logger.error("Got reply for unknown seq "+t.seq);if(delete this._inFlight[t.seq],"cmd_success"==t.command)r.resolve(t.result);else{var i=new Error(t.error.message);i.name=t.error.name,r.reject(i)}}else n.logger.warn("Unrecognised message from worker: "+t)}}},{"../logger":95,"../utils":123}],116:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.IndexedDBStore=m;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=i(e("@babel/runtime/helpers/slicedToArray")),u=e("./memory"),c=n(e("../utils")),l=e("events"),d=e("./indexeddb-local-backend.js"),f=e("./indexeddb-remote-backend.js"),h=e("../models/user"),p=e("../models/event"),v=e("../logger");function g(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function m(e){if(u.MemoryStore.call(this,e),!e.indexedDB)throw new Error("Missing required option: indexedDB");if(e.workerScript){var r=e.workerApi;r||(r=t.Worker),this.backend=new f.RemoteIndexedDBStoreBackend(e.workerScript,e.dbName,r)}else this.backend=new d.LocalIndexedDBStoreBackend(e.indexedDB,e.dbName);this.startedUp=!1,this._syncTs=0,this._userModifiedMap={}}function _(e,t){return(0,s.default)(o.default.mark((function r(){var n,i,s,a,c=arguments;return o.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:for(n=c.length,i=new Array(n),s=0;s<n;s++)i[s]=c[s];return r.prev=1,r.next=4,e.call.apply(e,[this].concat(i));case 4:return r.abrupt("return",r.sent);case 7:return r.prev=7,r.t0=r.catch(1),v.logger.error("IndexedDBStore failure, degrading to MemoryStore",r.t0),this.emit("degraded",r.t0),r.prev=11,v.logger.log("IndexedDBStore trying to delete degraded data"),r.next=15,this.backend.clearDatabase();case 15:v.logger.log("IndexedDBStore delete after degrading succeeeded"),r.next=21;break;case 18:r.prev=18,r.t1=r.catch(11),v.logger.warn("IndexedDBStore delete after degrading failed",r.t1);case 21:if(Object.setPrototypeOf(this,u.MemoryStore.prototype),!t){r.next=26;break}return r.next=25,(a=u.MemoryStore.prototype[t]).call.apply(a,[this].concat(i));case 25:return r.abrupt("return",r.sent);case 26:case"end":return r.stop()}}),r,this,[[1,7],[11,18]])})))}c.inherits(m,u.MemoryStore),c.extend(m.prototype,l.EventEmitter.prototype),m.exists=function(e,t){return d.LocalIndexedDBStoreBackend.exists(e,t)},m.prototype.startup=function(){var e=this;return this.startedUp?(v.logger.log("IndexedDBStore.startup: already started"),Promise.resolve()):(v.logger.log("IndexedDBStore.startup: connecting to backend"),this.backend.connect().then((function(){return v.logger.log("IndexedDBStore.startup: loading presence events"),e.backend.getUserPresenceEvents()})).then((function(t){v.logger.log("IndexedDBStore.startup: processing presence events"),t.forEach((function(t){var r=(0,a.default)(t,2),n=r[0],i=r[1],o=new h.User(n);i&&o.setPresenceEvent(new p.MatrixEvent(i)),e._userModifiedMap[o.userId]=o.getLastModifiedTime(),e.storeUser(o)}))})))},m.prototype.getSavedSync=_((function(){return this.backend.getSavedSync()}),"getSavedSync"),m.prototype.isNewlyCreated=_((function(){return this.backend.isNewlyCreated()}),"isNewlyCreated"),m.prototype.getSavedSyncToken=_((function(){return this.backend.getNextBatchToken()}),"getSavedSyncToken"),m.prototype.deleteAllData=_((function(){return u.MemoryStore.prototype.deleteAllData.call(this),this.backend.clearDatabase().then((function(){v.logger.log("Deleted indexeddb data.")}),(function(e){throw v.logger.error("Failed to delete indexeddb data: ".concat(e)),e}))})),m.prototype.wantsSave=function(){return Date.now()-this._syncTs>3e5},m.prototype.save=function(e){return e||this.wantsSave()?this._reallySave():Promise.resolve()},m.prototype._reallySave=_((function(){this._syncTs=Date.now();var e,t=[],r=g(this.getUsers());try{for(r.s();!(e=r.n()).done;){var n=e.value;this._userModifiedMap[n.userId]!==n.getLastModifiedTime()&&(n.events.presence&&(t.push([n.userId,n.events.presence.event]),this._userModifiedMap[n.userId]=n.getLastModifiedTime()))}}catch(e){r.e(e)}finally{r.f()}return this.backend.syncToDatabase(t)})),m.prototype.setSyncData=_((function(e){return this.backend.setSyncData(e)}),"setSyncData"),m.prototype.getOutOfBandMembers=_((function(e){return this.backend.getOutOfBandMembers(e)}),"getOutOfBandMembers"),m.prototype.setOutOfBandMembers=_((function(e,t){return u.MemoryStore.prototype.setOutOfBandMembers.call(this,e,t),this.backend.setOutOfBandMembers(e,t)}),"setOutOfBandMembers"),m.prototype.clearOutOfBandMembers=_((function(e){return u.MemoryStore.prototype.clearOutOfBandMembers.call(this),this.backend.clearOutOfBandMembers(e)}),"clearOutOfBandMembers"),m.prototype.getClientOptions=_((function(){return this.backend.getClientOptions()}),"getClientOptions"),m.prototype.storeClientOptions=_((function(e){return u.MemoryStore.prototype.storeClientOptions.call(this,e),this.backend.storeClientOptions(e)}),"storeClientOptions")}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":95,"../models/event":100,"../models/user":108,"../utils":123,"./indexeddb-local-backend.js":114,"./indexeddb-remote-backend.js":115,"./memory":117,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/helpers/slicedToArray":22,"@babel/runtime/regenerator":27,events:36}],117:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.MemoryStore=a;var i=e("../models/user"),o=n(e("../utils"));function s(e){return"string"==typeof e&&!!e&&"undefined"!==e&&"null"!==e||"number"==typeof e}function a(e){e=e||{},this.rooms={},this.groups={},this.users={},this.syncToken=null,this.filters={},this.accountData={},this.localStorage=e.localStorage,this._oobMembers={},this._clientOptions={}}a.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 o.values(this.groups)},storeRoom:function(e){this.rooms[e.roomId]=e,e.currentState.on("RoomState.members",this._onRoomMember.bind(this));var t=this;e.currentState.getMembers().forEach((function(r){t._onRoomMember(null,e.currentState,r)}))},_onRoomMember:function(e,t,r){if("invite"!==r.membership){var n=this.users[r.userId]||new i.User(r.userId);r.name&&(n.setDisplayName(r.name),r.events.member&&n.setRawDisplayName(r.events.member.getDirectionalContent().displayname)),r.events.member&&r.events.member.getContent().avatar_url&&n.setAvatarUrl(r.events.member.getContent().avatar_url),this.users[n.userId]=n}},getRoom:function(e){return this.rooms[e]||null},getRooms:function(){return o.values(this.rooms)},removeRoom:function(e){this.rooms[e]&&this.rooms[e].removeListener("RoomState.members",this._onRoomMember),delete this.rooms[e]},getRoomSummaries:function(){return o.map(o.values(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 o.values(this.users)},scrollback:function(e,t){return[]},storeEvents:function(e,t,r,n){},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;var t="mxjssdk_memory_filter_"+e;try{var r=this.localStorage.getItem(t);if(s(r))return r}catch(e){}return null},setFilterIdByName:function(e,t){if(this.localStorage){var r="mxjssdk_memory_filter_"+e;try{s(t)?this.localStorage.setItem(r,t):this.localStorage.removeItem(r)}catch(e){}}},storeAccountDataEvents:function(e){var 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()}}},{"../models/user":108,"../utils":123,"@babel/runtime/helpers/interopRequireWildcard":13}],118:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(r,"__esModule",{value:!0}),r.WebStorageSessionStore=u;var i=n(e("../../utils"));e("../../logger");function o(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return s(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return a=e.done,e},e:function(e){u=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(u)throw o}}}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var a="session.e2e.";function u(e){if(this.store=e,!(i.isFunction(e.getItem)&&i.isFunction(e.setItem)&&i.isFunction(e.removeItem)&&i.isFunction(e.key)&&"number"==typeof e.length))throw new Error("Supplied webStore does not meet the WebStorage API interface")}u.prototype={removeEndToEndAccount:function(){this.store.removeItem(c)},getEndToEndAccount:function(){return this.store.getItem(c)},getAllEndToEndDevices:function(){for(var e=h(""),t={},r=0;r<this.store.length;++r){var n=this.store.key(r),i=n.substr(e.length);n.startsWith(e)&&(t[i]=g(this.store,n))}return t},getEndToEndDeviceTrackingStatus:function(){return g(this.store,d)},getEndToEndDeviceSyncToken:function(){return g(this.store,l)},removeEndToEndDeviceData:function(){m(this.store,h("")),m(this.store,d),m(this.store,l)},getEndToEndSessions:function(e){return g(this.store,p(e))},getAllEndToEndSessions:function(){var e,t={},r=o(y(this.store,p("")));try{for(r.s();!(e=r.n()).done;){var n=e.value;t[n.substr(p("").length)]=g(this.store,n)}}catch(e){r.e(e)}finally{r.f()}return t},removeAllEndToEndSessions:function(){m(this.store,p(""))},getAllEndToEndInboundGroupSessionKeys:function(){for(var e=a+"inboundgroupsessions/",t=[],r=0;r<this.store.length;r++){var n=this.store.key(r);n.startsWith(e)&&t.push({senderKey:n.substr(e.length,43),sessionId:n.substr(e.length+44)})}return t},getEndToEndInboundGroupSession:function(e,t){var r=function(e,t){return a+"inboundgroupsessions/"+e+"/"+t}(e,t);return this.store.getItem(r)},removeAllEndToEndInboundGroupSessions:function(){m(this.store,a+"inboundgroupsessions/")},getAllEndToEndRooms:function(){var e,t={},r=o(y(this.store,v("")));try{for(r.s();!(e=r.n()).done;){var n=e.value;t[n.substr(v("").length)]=g(this.store,n)}}catch(e){r.e(e)}finally{r.f()}return t},removeAllEndToEndRooms:function(){m(this.store,v(""))},setLocalTrustedBackupPubKey:function(e){this.store.setItem(f,e)},getLocalTrustedBackupPubKey:function(){return this.store.getItem(f)}};var c=a+"account",l=a+"device_sync_token",d=a+"device_tracking",f=a+"trusted_backup_pubkey";function h(e){return a+"devices/"+e}function p(e){return a+"sessions/"+e}function v(e){return a+"rooms/"+e}function g(e,t){try{return JSON.parse(e.getItem(t))}catch(e){_("Failed to get key %s: %s",t,e),_(e.stack)}return null}function y(e,t){for(var r=[],n=0;n<e.length;++n){var i=e.key(n);i.startsWith(t)&&r.push(i)}return r}function m(e,t){for(var r=[],n=0;n<e.length;++n){var i=e.key(n);i.startsWith(t)&&r.push(i)}for(var o=0,s=r;o<s.length;o++){var a=s[o];e.removeItem(a)}}function _(){0}},{"../../logger":95,"../../utils":123,"@babel/runtime/helpers/interopRequireWildcard":13}],119:[function(e,t,r){"use strict";function n(){this.fromToken=null}Object.defineProperty(r,"__esModule",{value:!0}),r.StubStore=n,n.prototype={isNewlyCreated:function(){return Promise.resolve(!0)},getSyncToken:function(){return this.fromToken},setSyncToken:function(e){this.fromToken=e},storeGroup:function(e){},getGroup:function(e){return null},getGroups:function(){return[]},storeRoom:function(e){},getRoom:function(e){return null},getRooms:function(){return[]},removeRoom:function(e){},getRoomSummaries:function(){return[]},storeUser:function(e){},getUser:function(e){return null},getUsers:function(){return[]},scrollback:function(e,t){return[]},storeEvents:function(e,t,r,n){},storeFilter:function(e){},getFilter:function(e,t){return null},getFilterIdByName:function(e){return null},setFilterIdByName:function(e,t){},storeAccountDataEvents:function(e){},getAccountData:function(e){},setSyncData:function(e){return Promise.resolve()},wantsSave:function(){return!1},save:function(){},startup:function(){return Promise.resolve()},getSavedSync:function(){return Promise.resolve(null)},getSavedSyncToken:function(){return Promise.resolve(null)},deleteAllData:function(){return Promise.resolve()},getOutOfBandMembers:function(){return Promise.resolve(null)},setOutOfBandMembers:function(){return Promise.resolve()},clearOutOfBandMembers:function(){return Promise.resolve()},getClientOptions:function(){return Promise.resolve()},storeClientOptions:function(){return Promise.resolve()}}},{}],120:[function(e,t,r){"use strict";var n=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.SyncAccumulator=void 0;var i=n(e("@babel/runtime/helpers/classCallCheck")),o=n(e("@babel/runtime/helpers/createClass")),s=e("./logger"),a=e("./utils"),u=function(){function e(t){(0,i.default)(this,e),(t=t||{}).maxTimelineEntries=t.maxTimelineEntries||50,this.opts=t,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,o.default)(e,[{key:"accumulate",value:function(e){this._accumulateRooms(e),this._accumulateGroups(e),this._accumulateAccountData(e),this.nextBatch=e.next_batch}},{key:"_accumulateAccountData",value:function(e){var t=this;e.account_data&&e.account_data.events&&e.account_data.events.forEach((function(e){t.accountData[e.type]=e}))}},{key:"_accumulateRooms",value:function(e){var t=this;e.rooms&&(e.rooms.invite&&Object.keys(e.rooms.invite).forEach((function(r){t._accumulateRoom(r,"invite",e.rooms.invite[r])})),e.rooms.join&&Object.keys(e.rooms.join).forEach((function(r){t._accumulateRoom(r,"join",e.rooms.join[r])})),e.rooms.leave&&Object.keys(e.rooms.leave).forEach((function(r){t._accumulateRoom(r,"leave",e.rooms.leave[r])})))}},{key:"_accumulateRoom",value:function(e,t,r){switch(t){case"invite":this._accumulateInviteState(e,r);break;case"join":this.inviteRooms[e]&&delete this.inviteRooms[e],this._accumulateJoinState(e,r);break;case"leave":this.inviteRooms[e]?delete this.inviteRooms[e]:delete this.joinRooms[e];break;default:s.logger.error("Unknown cateogory: ",t)}}},{key:"_accumulateInviteState",value:function(e,t){if(t.invite_state&&t.invite_state.events)if(this.inviteRooms[e]){var r=this.inviteRooms[e];t.invite_state.events.forEach((function(e){for(var t=!1,n=0;n<r.invite_state.events.length;n++){var i=r.invite_state.events[n];i.type===e.type&&i.state_key==e.state_key&&(r.invite_state.events[n]=e,t=!0)}t||r.invite_state.events.push(e)}))}else this.inviteRooms[e]={invite_state:t.invite_state}}},{key:"_accumulateJoinState",value:function(e,t){this.joinRooms[e]||(this.joinRooms[e]={_currentState:Object.create(null),_timeline:[],_accountData:Object.create(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var r=this.joinRooms[e];if(t.account_data&&t.account_data.events&&t.account_data.events.forEach((function(e){r._accountData[e.type]=e})),t.unread_notifications&&(r._unreadNotifications=t.unread_notifications),t.summary){var n=r._summary,i=t.summary;n["m.heroes"]=i["m.heroes"]||n["m.heroes"],n["m.joined_member_count"]=i["m.joined_member_count"]||n["m.joined_member_count"],n["m.invited_member_count"]=i["m.invited_member_count"]||n["m.invited_member_count"]}if(t.ephemeral&&t.ephemeral.events&&t.ephemeral.events.forEach((function(e){"m.receipt"===e.type&&e.content&&Object.keys(e.content).forEach((function(t){e.content[t]["m.read"]&&Object.keys(e.content[t]["m.read"]).forEach((function(n){r._readReceipts[n]={data:e.content[t]["m.read"][n],eventId:t}}))}))})),t.timeline&&t.timeline.limited&&(r._timeline=[]),t.state&&t.state.events&&t.state.events.forEach((function(e){c(r._currentState,e)})),t.timeline&&t.timeline.events&&t.timeline.events.forEach((function(e,n){c(r._currentState,e),r._timeline.push({event:e,token:0===n?t.timeline.prev_batch:null})})),r._timeline.length>this.opts.maxTimelineEntries)for(var o=r._timeline.length-this.opts.maxTimelineEntries;o<r._timeline.length;o++)if(r._timeline[o].token){r._timeline=r._timeline.slice(o,r._timeline.length);break}}},{key:"_accumulateGroups",value:function(e){var t=this;e.groups&&(e.groups.invite&&Object.keys(e.groups.invite).forEach((function(r){t._accumulateGroup(r,"invite",e.groups.invite[r])})),e.groups.join&&Object.keys(e.groups.join).forEach((function(r){t._accumulateGroup(r,"join",e.groups.join[r])})),e.groups.leave&&Object.keys(e.groups.leave).forEach((function(r){t._accumulateGroup(r,"leave",e.groups.leave[r])})))}},{key:"_accumulateGroup",value:function(e,t,r){for(var n=0,i=["invite","join","leave"];n<i.length;n++){var o=i[n];delete this.groups[o][e]}this.groups[t][e]=r}},{key:"getJSON",value:function(){var e=this,t={join:{},invite:{},leave:{}};Object.keys(this.inviteRooms).forEach((function(r){t.invite[r]=e.inviteRooms[r]})),Object.keys(this.joinRooms).forEach((function(r){var n=e.joinRooms[r],i={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:n._unreadNotifications,summary:n._summary};Object.keys(n._accountData).forEach((function(e){i.account_data.events.push(n._accountData[e])}));var o={type:"m.receipt",room_id:r,content:{}};Object.keys(n._readReceipts).forEach((function(e){var t=n._readReceipts[e];o.content[t.eventId]||(o.content[t.eventId]={"m.read":{}}),o.content[t.eventId]["m.read"][e]=t.data})),Object.keys(o.content).length>0&&i.ephemeral.events.push(o),n._timeline.forEach((function(e){if(!i.timeline.prev_batch){if(!e.token)return;i.timeline.prev_batch=e.token}i.timeline.events.push(e.event)}));for(var s=Object.create(null),u=i.timeline.events.length-1;u>=0;u--){var l=i.timeline.events[u];if(null!==l.state_key&&void 0!==l.state_key){var d=(0,a.deepCopy)(l);d.unsigned&&(d.unsigned.prev_content&&(d.content=d.unsigned.prev_content),d.unsigned.prev_sender&&(d.sender=d.unsigned.prev_sender)),c(s,d)}}Object.keys(n._currentState).forEach((function(e){Object.keys(n._currentState[e]).forEach((function(t){var r=n._currentState[e][t];s[e]&&s[e][t]&&(r=s[e][t]),i.state.events.push(r)}))})),t.join[r]=i}));var r=[];return Object.keys(this.accountData).forEach((function(t){r.push(e.accountData[t])})),{nextBatch:this.nextBatch,roomsData:t,groupsData:this.groups,accountData:r}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),e}();function c(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)}r.SyncAccumulator=u},{"./logger":95,"./utils":123,"@babel/runtime/helpers/classCallCheck":6,"@babel/runtime/helpers/createClass":8,"@babel/runtime/helpers/interopRequireDefault":12}],121:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.SyncApi=b;var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=e("./models/user"),u=e("./models/room"),c=e("./models/group"),l=n(e("./utils")),d=e("./filter"),f=e("./models/event-timeline"),h=e("./pushprocessor"),p=e("./logger"),v=e("./errors");function g(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return y(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,a=!1;return{s:function(){r=e[Symbol.iterator]()},n:function(){var e=r.next();return s=e.done,e},e:function(e){a=!0,o=e},f:function(){try{s||null==r.return||r.return()}finally{if(a)throw o}}}}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function m(e,t){return"FILTER_SYNC_"+e+(t?"_"+t:"")}function _(){p.logger.log.apply(p.logger,arguments)}function b(e,t){this.client=e,(t=t||{}).initialSyncLimit=void 0===t.initialSyncLimit?8:t.initialSyncLimit,t.resolveInvitesToProfiles=t.resolveInvitesToProfiles||!1,t.pollTimeout=t.pollTimeout||3e4,t.pendingEventOrdering=t.pendingEventOrdering||"chronological",t.canResetEntireTimeline||(t.canResetEntireTimeline=function(e){return!1}),this.opts=t,this._peekRoomId=null,this._currentSyncRequest=null,this._syncState=null,this._syncStateData=null,this._catchingUp=!1,this._running=!1,this._keepAliveTimer=null,this._connectionReturnedDefer=null,this._notifEvents=[],this._failedSyncCount=0,this._storeIsInvalid=!1,e.getNotifTimelineSet()&&e.reEmitter.reEmit(e.getNotifTimelineSet(),["Room.timeline","Room.timelineReset"])}function k(e,t){var r=new a.User(t);return e.reEmitter.reEmit(r,["User.avatarUrl","User.displayName","User.presence","User.currentlyActive","User.lastPresenceTs"]),r}b.prototype.createRoom=function(e){var t=this.client,r=t.timelineSupport,n=t.unstableClientRelationAggregation,i=new u.Room(e,t,t.getUserId(),{lazyLoadMembers:this.opts.lazyLoadMembers,pendingEventOrdering:this.opts.pendingEventOrdering,timelineSupport:r,unstableClientRelationAggregation:n});return t.reEmitter.reEmit(i,["Room.name","Room.timeline","Room.redaction","Room.redactionCancelled","Room.receipt","Room.tags","Room.timelineReset","Room.localEchoUpdated","Room.accountData","Room.myMembership","Room.replaceEvent"]),this._registerStateListeners(i),i},b.prototype.createGroup=function(e){var t=this.client,r=new c.Group(e);return t.reEmitter.reEmit(r,["Group.profile","Group.myMembership"]),t.store.storeGroup(r),r},b.prototype._registerStateListeners=function(e){var t=this.client;t.reEmitter.reEmit(e.currentState,["RoomState.events","RoomState.members","RoomState.newMember"]),e.currentState.on("RoomState.newMember",(function(e,r,n){n.user=t.getUser(n.userId),t.reEmitter.reEmit(n,["RoomMember.name","RoomMember.typing","RoomMember.powerLevel","RoomMember.membership"])}))},b.prototype._deregisterStateListeners=function(e){e.currentState.removeAllListeners("RoomState.events"),e.currentState.removeAllListeners("RoomState.members"),e.currentState.removeAllListeners("RoomState.newMember")},b.prototype.syncLeftRooms=function(){var e=this.client,t=this,r=new d.Filter(this.client.credentials.userId);r.setTimelineLimit(1),r.setIncludeLeaveRooms(!0);var n=this.opts.pollTimeout+8e4,i={timeout:0};return e.getOrCreateFilter(m(e.credentials.userId,"LEFT_ROOMS"),r).then((function(t){return i.filter=t,e._http.authedRequest(void 0,"GET","/sync",i,void 0,n)})).then((function(r){var n=[];r.rooms&&r.rooms.leave&&(n=t._mapSyncResponseToRoomArray(r.rooms.leave));var i=[];return n.forEach((function(r){var n=r.room;if(i.push(n),r.isBrandNewRoom){r.timeline=r.timeline||{};var o=t._mapSyncEventsFormat(r.timeline,n),s=t._mapSyncEventsFormat(r.state,n);n.getLiveTimeline().setPaginationToken(r.timeline.prev_batch,f.EventTimeline.BACKWARDS),t._processRoomEvents(n,s,o),n.recalculate(),e.store.storeRoom(n),e.emit("Room",n),t._processEventsForNotifs(n,o)}})),i}))},b.prototype.peek=function(e){var t=this,r=this.client;return this._peekRoomId=e,this.client.roomInitialSync(e,20).then((function(n){n.messages=n.messages||{},n.messages.chunk=n.messages.chunk||[],n.state=n.state||[];var i=t.createRoom(e),o=l.map(l.deepCopy(n.state),r.getEventMapper()),s=l.map(n.state,r.getEventMapper()),a=l.map(n.messages.chunk,r.getEventMapper());return n.presence&&l.isArray(n.presence)&&n.presence.map(r.getEventMapper()).forEach((function(e){var t=r.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=k(r,e.getContent().user_id)).setPresenceEvent(e),r.store.storeUser(t)),r.emit("event",e)})),n.messages.start&&(i.oldState.paginationToken=n.messages.start),i.oldState.setStateEvents(o),i.currentState.setStateEvents(s),t._resolveInvites(i),i.recalculate(),i.addEventsToTimeline(a.reverse(),!0,i.getLiveTimeline(),n.messages.start),r.store.storeRoom(i),r.emit("Room",i),t._peekPoll(i),i}))},b.prototype.stopPeeking=function(){this._peekRoomId=null},b.prototype._peekPoll=function(e,t){if(this._peekRoomId===e.roomId){var r=this;this.client._http.authedRequest(void 0,"GET","/events",{room_id:e.roomId,timeout:3e4,from:t},void 0,5e4).then((function(t){if(r._peekRoomId===e.roomId){t.chunk.filter((function(e){return"m.presence"===e.type})).map(r.client.getEventMapper()).forEach((function(e){var t=r.client.store.getUser(e.getContent().user_id);t?t.setPresenceEvent(e):((t=k(r.client,e.getContent().user_id)).setPresenceEvent(e),r.client.store.storeUser(t)),r.client.emit("event",e)}));var n=t.chunk.filter((function(t){return t.room_id===e.roomId&&t.event_id})).map(r.client.getEventMapper());e.addLiveEvents(n),r._peekPoll(e,t.end)}else _("Stopped peeking in room %s",e.roomId)}),(function(n){p.logger.error("[%s] Peek poll failed: %s",e.roomId,n),setTimeout((function(){r._peekPoll(e,t)}),3e4)}))}else _("Stopped peeking in room %s",e.roomId)},b.prototype.getSyncState=function(){return this._syncState},b.prototype.getSyncStateData=function(){return this._syncStateData},b.prototype.recoverFromSyncStartupError=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t;case 2:return n=this._startKeepAlives(),this._updateSyncState("ERROR",{error:r}),e.next=6,n;case 6:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),b.prototype._wasLazyLoadingToggled=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!!t,r=!1,e.next=4,this.client.store.isNewlyCreated();case 4:if(e.sent){e.next=11;break}return e.next=8,this.client.store.getClientOptions();case 8:return(n=e.sent)&&(r=!!n.lazyLoadMembers),e.abrupt("return",r!==t);case 11:return e.abrupt("return",!1);case 12:case"end":return e.stop()}}),e,this)})));return function(t){return e.apply(this,arguments)}}(),b.prototype._shouldAbortSync=function(e){return"M_UNKNOWN_TOKEN"===e.errcode&&(p.logger.warn("Token no longer valid - assuming logout"),this.stop(),!0)},b.prototype.sync=function(){var e=this,r=this.client,n=this;this._running=!0,t.document&&(this._onOnlineBound=this._onOnline.bind(this),t.document.addEventListener("online",this._onOnlineBound,!1));var i=Promise.resolve(),a=null;function u(){return c.apply(this,arguments)}function c(){return(c=(0,s.default)(o.default.mark((function e(){var t;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,_("Getting push rules..."),e.next=4,r.getPushRules();case 4:t=e.sent,_("Got push rules"),r.pushRules=t,e.next=19;break;case 9:if(e.prev=9,e.t0=e.catch(0),p.logger.error("Getting push rules failed",e.t0),!n._shouldAbortSync(e.t0)){e.next=14;break}return e.abrupt("return");case 14:return _("Waiting for saved sync before retrying push rules..."),e.next=17,n.recoverFromSyncStartupError(i,e.t0);case 17:return u(),e.abrupt("return");case 19:f();case 20:case"end":return e.stop()}}),e,null,[[0,9]])})))).apply(this,arguments)}function l(){var e=new d.Filter(r.credentials.userId);return e.setTimelineLimit(n.opts.initialSyncLimit),e}var f=function(){var t=(0,s.default)(o.default.mark((function t(){var n,i;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(_("Checking lazy load status..."),e.opts.lazyLoadMembers&&r.isGuest()&&(e.opts.lazyLoadMembers=!1),!e.opts.lazyLoadMembers){t.next=8;break}return _("Checking server lazy load support..."),t.next=6,r.doesServerSupportLazyLoading();case 6:t.sent?(_("Enabling lazy load on sync filter..."),e.opts.filter||(e.opts.filter=l()),e.opts.filter.setLazyLoadMembers(!0)):(_("LL: lazy loading requested but not supported by server, so disabling"),e.opts.lazyLoadMembers=!1);case 8:return _("Checking whether lazy loading has changed in store..."),t.next=11,e._wasLazyLoadingToggled(e.opts.lazyLoadMembers);case 11:if(!t.sent){t.next=19;break}return e._storeIsInvalid=!0,n=v.InvalidStoreError.TOGGLED_LAZY_LOADING,i=new v.InvalidStoreError(n,!!e.opts.lazyLoadMembers),e._updateSyncState("ERROR",{error:i}),p.logger.warn("InvalidStoreError: store is not usable: stopping sync."),t.abrupt("return");case 19:return e.opts.lazyLoadMembers&&e.opts.crypto&&e.opts.crypto.enableLazyLoading(),t.prev=20,_("Storing client options..."),t.next=24,e.client._storeClientOptions();case 24:_("Stored client options"),t.next=31;break;case 27:throw t.prev=27,t.t0=t.catch(20),p.logger.error("Storing client options failed",t.t0),t.t0;case 31:h();case 32:case"end":return t.stop()}}),t,null,[[20,27]])})));return function(){return t.apply(this,arguments)}}();function h(){return g.apply(this,arguments)}function g(){return(g=(0,s.default)(o.default.mark((function e(){var t,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _("Getting filter..."),t=n.opts.filter?n.opts.filter:l(),e.prev=2,e.next=5,r.getOrCreateFilter(m(r.credentials.userId),t);case 5:s=e.sent,e.next=18;break;case 8:if(e.prev=8,e.t0=e.catch(2),p.logger.error("Getting filter failed",e.t0),!n._shouldAbortSync(e.t0)){e.next=13;break}return e.abrupt("return");case 13:return _("Waiting for saved sync before retrying filter..."),e.next=16,n.recoverFromSyncStartupError(i,e.t0);case 16:return h(),e.abrupt("return");case 18:return r.resetNotifTimelineSet(),null===n._currentSyncRequest&&(_("Sending first sync request..."),n._currentSyncRequest=n._doSyncRequest({filterId:s},a)),_("Waiting for saved sync before starting sync processing..."),e.next=23,i;case 23:n._sync({filterId:s});case 24:case"end":return e.stop()}}),e,null,[[2,8]])})))).apply(this,arguments)}r.isGuest()?n._sync({}):(_("Getting saved sync token..."),i=r.store.getSavedSyncToken().then((function(e){return _("Got saved sync token"),a=e,_("Getting saved sync..."),r.store.getSavedSync()})).then((function(e){if(_("Got reply from saved sync, exists? ".concat(!!e)),e)return n._syncFromCache(e)})).catch((function(e){p.logger.error("Getting saved sync failed",e)})),u())},b.prototype.stop=function(){_("SyncApi.stop"),t.document&&(t.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)},b.prototype.retryImmediately=function(){return!!this._connectionReturnedDefer&&(this._startKeepAlives(0),!0)},b.prototype._syncFromCache=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return _("sync(): not doing HTTP hit, instead returning stored /sync data"),r=t.nextBatch,this.client.store.setSyncToken(r),n={oldSyncToken:null,nextSyncToken:r,catchingUp:!1,fromCache:!0},i={next_batch:r,rooms:t.roomsData,groups:t.groupsData,account_data:{events:t.accountData}},e.prev=5,e.next=8,this._processSyncResponse(n,i);case 8:e.next=13;break;case 10:e.prev=10,e.t0=e.catch(5),p.logger.error("Error processing cached sync",e.t0.stack||e.t0);case 13:this._storeIsInvalid||this._updateSyncState("PREPARED",n);case 14:case"end":return e.stop()}}),e,this,[[5,10]])})));return function(t){return e.apply(this,arguments)}}(),b.prototype._sync=function(){var e=(0,s.default)(o.default.mark((function e(t){var r,n,i,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=this.client,this._running){e.next=6;break}return _("Sync no longer running: exiting."),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),this._updateSyncState("STOPPED"),e.abrupt("return");case 6:return n=r.store.getSyncToken(),e.prev=7,null===this._currentSyncRequest&&(this._currentSyncRequest=this._doSyncRequest(t,n)),e.next=11,this._currentSyncRequest;case 11:i=e.sent,e.next=18;break;case 14:return e.prev=14,e.t0=e.catch(7),this._onSyncError(e.t0,t),e.abrupt("return");case 18:return e.prev=18,this._currentSyncRequest=null,e.finish(18);case 21:return r.store.setSyncToken(i.next_batch),this._failedSyncCount=0,e.next=25,r.store.setSyncData(i);case 25:if(s={oldSyncToken:n,nextSyncToken:i.next_batch,catchingUp:this._catchingUp},!this.opts.crypto){e.next=29;break}return e.next=29,this.opts.crypto.onSyncWillProcess(s);case 29:return e.prev=29,e.next=32,this._processSyncResponse(s,i);case 32:e.next=38;break;case 34:e.prev=34,e.t1=e.catch(29),p.logger.error("Caught /sync error",e.t1.stack||e.t1),this.client.emit("sync.unexpectedError",e.t1);case 38:if(s.catchingUp=this._catchingUp,t.hasSyncedBefore||(this._updateSyncState("PREPARED",s),t.hasSyncedBefore=!0),!this.opts.crypto){e.next=43;break}return e.next=43,this.opts.crypto.onSyncCompleted(s);case 43:if(this._updateSyncState("SYNCING",s),!r.store.wantsSave()){e.next=49;break}if(!this.opts.crypto){e.next=48;break}return e.next=48,this.opts.crypto.saveDeviceList(0);case 48:r.store.save();case 49:this._sync(t);case 50:case"end":return e.stop()}}),e,this,[[7,14,18,21],[29,34]])})));return function(t){return e.apply(this,arguments)}}(),b.prototype._doSyncRequest=function(e,t){var r=this._getSyncParams(e,t);return this.client._http.authedRequest(void 0,"GET","/sync",r,void 0,r.timeout+8e4)},b.prototype._getSyncParams=function(e,t){var r=this.opts.pollTimeout;("SYNCING"!==this.getSyncState()||this._catchingUp)&&(this._catchingUp=!0,r=0);var n=e.filterId;this.client.isGuest()&&!n&&(n=this._getGuestFilter());var i={filter:n,timeout:r};return this.opts.disablePresence&&(i.set_presence="offline"),t?i.since=t:i._cacheBuster=Date.now(),"ERROR"!=this.getSyncState()&&"RECONNECTING"!=this.getSyncState()||(i.timeout=0),i},b.prototype._onSyncError=function(e,t){var r=this;if(!this._running)return _("Sync no longer running: exiting"),this._connectionReturnedDefer&&(this._connectionReturnedDefer.reject(),this._connectionReturnedDefer=null),void this._updateSyncState("STOPPED");p.logger.error("/sync error %s",e),p.logger.error(e),this._shouldAbortSync(e)||(this._failedSyncCount++,p.logger.log("Number of consecutive failed sync requests:",this._failedSyncCount),_("Starting keep-alive"),this._startKeepAlives().then((function(e){e&&"ERROR"===r.getSyncState()&&r._updateSyncState("CATCHUP",{oldSyncToken:null,nextSyncToken:null,catchingUp:!0}),r._sync(t)})),this._currentSyncRequest=null,this._updateSyncState(this._failedSyncCount>=3?"ERROR":"RECONNECTING",{error:e}))},b.prototype._processSyncResponse=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i,a,u,c,d,v,g,y;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=this.client,i=this,r.presence&&l.isArray(r.presence.events)&&r.presence.events.map(n.getEventMapper()).forEach((function(e){var t=n.store.getUser(e.getSender());t?t.setPresenceEvent(e):((t=k(n,e.getSender())).setPresenceEvent(e),n.store.storeUser(t)),n.emit("event",e)})),r.account_data&&l.isArray(r.account_data.events)&&(a=r.account_data.events.map(n.getEventMapper()),u=a.reduce((function(e,t){return e[t.getId()]=n.store.getAccountData(t.getType()),e}),{}),n.store.storeAccountDataEvents(a),a.forEach((function(e){if("m.push_rules"===e.getType()){var t=e.getContent();n.pushRules=h.PushProcessor.rewriteDefaultRules(t)}var r=u[e.getId()];return n.emit("accountData",e,r),e}))),r.to_device&&l.isArray(r.to_device.events)&&r.to_device.events.length>0?(c=[],r.to_device.events.map(n.getEventMapper()).map((function(e){if("m.key.verification.cancel"===e.getType()){var t=e.getContent().transaction_id;t&&c.push(t)}return e})).forEach((function(e){var t=e.getContent();if("m.room.message"!=e.getType()||"m.bad.encrypted"!=t.msgtype){if("m.key.verification.start"===e.getType()||"m.key.verification.request"===e.getType()){var r=t.transaction_id;c.includes(r)&&e.flagCancelled()}n.emit("toDeviceEvent",e)}else p.logger.log("Ignoring undecryptable to-device event from "+e.getSender())}))):this._catchingUp=!1,r.groups&&(r.groups.invite&&this._processGroupSyncEntry(r.groups.invite,"invite"),r.groups.join&&this._processGroupSyncEntry(r.groups.join,"join"),r.groups.leave&&this._processGroupSyncEntry(r.groups.leave,"leave")),d=[],v=[],g=[],r.rooms&&(r.rooms.invite&&(d=this._mapSyncResponseToRoomArray(r.rooms.invite)),r.rooms.join&&(v=this._mapSyncResponseToRoomArray(r.rooms.join)),r.rooms.leave&&(g=this._mapSyncResponseToRoomArray(r.rooms.leave))),this._notifEvents=[],d.forEach((function(e){var t=e.room,r=i._mapSyncEventsFormat(e.invite_state,t);i._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")})),e.next=14,l.promiseMapSeries(v,function(){var e=(0,s.default)(o.default.mark((function e(r){var a,u,c,d,h,p,v,g,y,m,b;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(b=function(){return(b=(0,s.default)(o.default.mark((function e(t){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.emit("event",t),!t.isState()||"m.room.encryption"!=t.getType()||!i.opts.crypto){e.next=4;break}return e.next=4,i.opts.crypto.onCryptoEvent(t);case 4:t.isState()&&"im.vector.user_status"===t.getType()&&((r=n.store.getUser(t.getStateKey()))?r._unstable_updateStatusMessage(t):((r=k(n,t.getStateKey()))._unstable_updateStatusMessage(t),n.store.storeUser(r)));case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)},m=function(e){return b.apply(this,arguments)},a=r.room,u=i._mapSyncEventsFormat(r.state,a),c=i._mapSyncEventsFormat(r.timeline,a),d=i._mapSyncEventsFormat(r.ephemeral),h=i._mapSyncEventsFormat(r.account_data),r.unread_notifications&&(a.setUnreadNotificationCount("total",r.unread_notifications.notification_count),(!(p=n.isRoomEncrypted(a.roomId))||p&&a.getUnreadNotificationCount("highlight")<=0)&&a.setUnreadNotificationCount("highlight",r.unread_notifications.highlight_count)),r.timeline=r.timeline||{},!r.isBrandNewRoom){e.next=13;break}a.getLiveTimeline().setPaginationToken(r.timeline.prev_batch,f.EventTimeline.BACKWARDS),e.next=27;break;case 13:if(!r.timeline.limited){e.next=27;break}v=!0,g=c.length-1;case 16:if(!(g>=0)){e.next=26;break}if(y=c[g].getId(),!a.getTimelineForEvent(y)){e.next=23;break}return _("Already have event "+y+" in limited sync - not resetting"),v=!1,c.splice(0,g),e.abrupt("break",26);case 23:g--,e.next=16;break;case 26:v&&(i._deregisterStateListeners(a),a.resetLiveTimeline(r.timeline.prev_batch,i.opts.canResetEntireTimeline(a.roomId)?null:t.oldSyncToken),n.resetNotifTimelineSet(),i._registerStateListeners(a));case 27:return i._processRoomEvents(a,u,c,t.fromCache),r.summary&&a.setSummary(r.summary),a.addEphemeralEvents(d),a.addAccountData(h),a.recalculate(),r.isBrandNewRoom&&(n.store.storeRoom(a),n.emit("Room",a)),i._processEventsForNotifs(a,c),e.next=36,l.promiseMapSeries(u,m);case 36:return e.next=38,l.promiseMapSeries(c,m);case 38:d.forEach((function(e){n.emit("event",e)})),h.forEach((function(e){n.emit("event",e)})),a.updateMyMembership("join");case 41:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 14:if(g.forEach((function(e){var t=e.room,r=i._mapSyncEventsFormat(e.state,t),o=i._mapSyncEventsFormat(e.timeline,t),s=i._mapSyncEventsFormat(e.account_data);i._processRoomEvents(t,r,o),t.addAccountData(s),t.recalculate(),e.isBrandNewRoom&&(n.store.storeRoom(t),n.emit("Room",t)),i._processEventsForNotifs(t,o),r.forEach((function(e){n.emit("event",e)})),o.forEach((function(e){n.emit("event",e)})),s.forEach((function(e){n.emit("event",e)})),t.updateMyMembership("leave")})),t.oldSyncToken&&this._notifEvents.length&&(this._notifEvents.sort((function(e,t){return e.getTs()-t.getTs()})),this._notifEvents.forEach((function(e){n.getNotifTimelineSet().addLiveEvent(e)}))),!r.device_lists){e.next=22;break}if(!this.opts.crypto){e.next=22;break}return e.next=20,this.opts.crypto.handleDeviceListChanges(t,r.device_lists);case 20:e.next=22;break;case 22:this.opts.crypto&&r.device_one_time_keys_count&&(y=r.device_one_time_keys_count.signed_curve25519||0,this.opts.crypto.updateOneTimeKeyCount(y));case 23:case"end":return e.stop()}}),e,this)})));return function(t,r){return e.apply(this,arguments)}}(),b.prototype._startKeepAlives=function(e){void 0===e&&(e=2e3+Math.floor(5e3*Math.random())),null!==this._keepAliveTimer&&clearTimeout(this._keepAliveTimer);return e>0?this._keepAliveTimer=setTimeout(this._pokeKeepAlive.bind(this),e):this._pokeKeepAlive(),this._connectionReturnedDefer||(this._connectionReturnedDefer=l.defer()),this._connectionReturnedDefer.promise},b.prototype._pokeKeepAlive=function(e){void 0===e&&(e=!1);var t=this;function r(){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(){r()}),(function(n){400==n.httpStatus||404==n.httpStatus?t._keepAliveTimer=setTimeout(r,2e3):(e=!0,t._keepAliveTimer=setTimeout(t._pokeKeepAlive.bind(t,e),5e3+Math.floor(5e3*Math.random())),t._updateSyncState("ERROR",{error:n}))}))},b.prototype._processGroupSyncEntry=function(e,t){for(var r=0,n=Object.keys(e);r<n.length;r++){var i=n[r],o=e[i],s=this.client.store.getGroup(i),a=null===s;null===s&&(s=this.createGroup(i)),o.profile&&s.setProfile(o.profile.name,o.profile.avatar_url),o.inviter&&s.setInviter({userId:o.inviter}),s.setMyMembership(t),a&&this.client.emit("Group",s)}},b.prototype._mapSyncResponseToRoomArray=function(e){var t=this.client,r=this;return l.keys(e).map((function(n){var i=e[n],o=t.store.getRoom(n),s=!1;return o||(o=r.createRoom(n),s=!0),i.room=o,i.isBrandNewRoom=s,i}))},b.prototype._mapSyncEventsFormat=function(e,t){if(!e||!l.isArray(e.events))return[];var r=this.client.getEventMapper();return e.events.map((function(e){return t&&(e.room_id=t.roomId),r(e)}))},b.prototype._resolveInvites=function(e){if(e&&this.opts.resolveInvitesToProfiles){var t=this.client;e.getMembersWithMembership("invite").forEach((function(r){if(!r._requestedProfileInfo){r._requestedProfileInfo=!0;var n=t.getUser(r.userId);(n?Promise.resolve({avatar_url:n.avatarUrl,displayname:n.displayName}):t.getProfileInfo(r.userId)).then((function(t){var n=r.events.member;"invite"===n.getContent().membership&&(n.getContent().avatar_url=t.avatar_url,n.getContent().displayname=t.displayname,r.setMembershipEvent(n,e.currentState))}),(function(e){}))}}))}},b.prototype._processRoomEvents=function(e,t,r,n){var i=e.getLiveTimeline(),o=0==i.getEvents().length;if(o){var s,a=g(t);try{for(a.s();!(s=a.n()).done;){var u=s.value;this.client.getPushActionsForEvent(u)}}catch(e){a.e(e)}finally{a.f()}i.initialiseState(t)}this._resolveInvites(e),e.recalculate(),o||(e.oldState.setStateEvents(t||[]),e.currentState.setStateEvents(t||[])),e.addLiveEvents(r||[],null,n)},b.prototype._processEventsForNotifs=function(e,t){if(this.client.getNotifTimelineSet())for(var r=0;r<t.length;r++){var n=this.client.getPushActionsForEvent(t[r]);n&&n.notify&&n.tweaks&&n.tweaks.highlight&&this._notifEvents.push(t[r])}},b.prototype._getGuestFilter=function(){return this.client._guestRooms?JSON.stringify({room:{timeline:{limit:20}}}):"{}"},b.prototype._updateSyncState=function(e,t){var r=this._syncState;this._syncState=e,this._syncStateData=t,this.client.emit("sync",this._syncState,r,t)},b.prototype._onOnline=function(){_("Browser thinks we are back online"),this._startKeepAlives(0)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./errors":89,"./filter":91,"./logger":95,"./models/event-timeline":99,"./models/group":101,"./models/room":106,"./models/user":108,"./pushprocessor":109,"./utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27}],122:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.TimelineWindow=o,r.TimelineIndex=s;var n=e("./models/event-timeline"),i=(e("./logger"),function(){});function o(e,t,r){r=r||{},this._client=e,this._timelineSet=t,this._start=null,this._end=null,this._eventCount=0,this._windowLimit=r.windowLimit||1e3}function s(e,t){this.timeline=e,this.index=t}o.prototype.load=function(e,t){var r=this;t=t||20;var n=function(n){var i,o=n.getEvents();if(e){for(var a=0;a<o.length;a++)if(o[a].getId()==e){i=a;break}if(void 0===i)throw new Error("getEventTimeline result didn't include requested event")}else i=o.length;var u=Math.min(o.length,i+Math.ceil(t/2)),c=Math.max(0,u-t);r._start=new s(n,c-n.getBaseIndex()),r._end=new s(n,u-n.getBaseIndex()),r._eventCount=u-c};if(e){var i=this._timelineSet.getTimelineForEvent(e);return i?(n(i),Promise.resolve(i)):this._client.getEventTimeline(this._timelineSet,e).then(n)}return n(this._timelineSet.getLiveTimeline()),Promise.resolve()},o.prototype.getTimelineIndex=function(e){if(e==n.EventTimeline.BACKWARDS)return this._start;if(e==n.EventTimeline.FORWARDS)return this._end;throw new Error("Invalid direction '"+e+"'")},o.prototype.extend=function(e,t){var r=this.getTimelineIndex(e);if(!r)return i("TimelineWindow: no timeline yet"),!1;var o=e==n.EventTimeline.BACKWARDS?r.retreat(t):r.advance(t);if(o){this._eventCount+=o,i("TimelineWindow: increased cap by "+o+" (now "+this._eventCount+")");var s=this._eventCount-this._windowLimit;return s>0&&this.unpaginate(s,e!=n.EventTimeline.BACKWARDS),!0}return!1},o.prototype.canPaginate=function(e){var t=this.getTimelineIndex(e);if(!t)return i("TimelineWindow: no timeline yet"),!1;if(e==n.EventTimeline.BACKWARDS){if(t.index>t.minIndex())return!0}else if(t.index<t.maxIndex())return!0;return Boolean(t.timeline.getNeighbouringTimeline(e)||t.timeline.getPaginationToken(e))},o.prototype.paginate=function(e,t,r,o){void 0===r&&(r=!0),void 0===o&&(o=5);var s=this.getTimelineIndex(e);if(!s)return i("TimelineWindow: no timeline yet"),Promise.resolve(!1);if(s.pendingPaginate)return s.pendingPaginate;if(this.extend(e,t))return Promise.resolve(!0);if(!r||0===o)return Promise.resolve(!1);if(!s.timeline.getPaginationToken(e))return i("TimelineWindow: no token"),Promise.resolve(!1);i("TimelineWindow: starting request");var a=this,u=this._client.paginateEventTimeline(s.timeline,{backwards:e==n.EventTimeline.BACKWARDS,limit:t}).finally((function(){s.pendingPaginate=null})).then((function(r){return i("TimelineWindow: request completed with result "+r),!!r&&a.paginate(e,t,!0,o-1)}));return s.pendingPaginate=u,u},o.prototype.unpaginate=function(e,t){var r=t?this._start:this._end;if(e>this._eventCount||e<0)throw new Error("Attemting to unpaginate "+e+" events, but only have "+this._eventCount+" in the timeline");for(;e>0;){var n=t?r.advance(e):r.retreat(e);if(n<=0)throw new Error("Unable to unpaginate any further, but still have "+this._eventCount+" events");e-=n,this._eventCount-=n,i("TimelineWindow.unpaginate: dropped "+n+" (now "+this._eventCount+")")}},o.prototype.getEvents=function(){if(!this._start)return[];for(var e=[],t=this._start.timeline;;){var r=t.getEvents(),i=0,o=r.length;t===this._start.timeline&&(i=this._start.index+t.getBaseIndex()),t===this._end.timeline&&(o=this._end.index+t.getBaseIndex());for(var s=i;s<o;s++)e.push(r[s]);if(t===this._end.timeline)break;t=t.getNeighbouringTimeline(n.EventTimeline.FORWARDS)}return e},s.prototype.minIndex=function(){return-1*this.timeline.getBaseIndex()},s.prototype.maxIndex=function(){return this.timeline.getEvents().length-this.timeline.getBaseIndex()},s.prototype.advance=function(e){if(!e)return 0;var t;if(e<0){if((t=Math.max(e,this.minIndex()-this.index))<0)return this.index+=t,t}else if((t=Math.min(e,this.maxIndex()-this.index))>0)return this.index+=t,t;var r=this.timeline.getNeighbouringTimeline(e<0?n.EventTimeline.BACKWARDS:n.EventTimeline.FORWARDS);return r?(this.timeline=r,this.index=e<0?this.maxIndex():this.minIndex(),i("paginate: switched to new neighbour"),this.advance(e)):0},s.prototype.retreat=function(e){return-1*this.advance(-1*e)}},{"./logger":95,"./models/event-timeline":99}],123:[function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,o){function s(e){try{u(n.next(e))}catch(e){o(e)}}function a(e){try{u(n.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}u((n=n.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.getCrypto=r.setCrypto=r.promiseTry=r.promiseMapSeries=r.defer=r.isNullOrUndefined=r.sleep=r.ensureNoTrailingSlash=r.globToRegexp=r.escapeRegExp=r.removeHiddenChars=r.isNumber=r.polyfillSuper=r.inherits=r.runPolyfills=r.extend=r.deepCompare=r.deepCopy=r.checkObjectHasNoAdditionalKeys=r.checkObjectHasKeys=r.isArray=r.isFunction=r.removeElement=r.findElement=r.forEach=r.values=r.keys=r.filter=r.map=r.encodeUri=r.encodeParams=void 0;const o=i(e("unhomoglyph"));r.encodeParams=function(e){let t="";for(const r in e)e.hasOwnProperty(r)&&(t+="&"+encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t.substring(1)},r.encodeUri=function(e,t){for(const r in t)t.hasOwnProperty(r)&&(e=e.replace(r,encodeURIComponent(t[r])));return e},r.map=function(e,t){const r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=t(e[n]);return r},r.filter=function(e,t){const r=[];for(let n=0;n<e.length;n++)t(e[n],n,e)&&r.push(e[n]);return r},r.keys=function(e){const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(r);return t},r.values=function(e){const t=[];for(const r in e)e.hasOwnProperty(r)&&t.push(e[r]);return t},r.forEach=function(e,t){for(let r=0;r<e.length;r++)t(e[r],r)},r.findElement=function(e,t,r){let n;if(r){for(n=e.length-1;n>=0;n--)if(t(e[n],n,e))return e[n]}else for(n=0;n<e.length;n++)if(t(e[n],n,e))return e[n]},r.removeElement=function(e,t,r){let n,i;if(r){for(n=e.length-1;n>=0;n--)if(t(e[n],n,e))return i=e[n],e.splice(n,1),i}else for(n=0;n<e.length;n++)if(t(e[n],n,e))return i=e[n],e.splice(n,1),i;return!1},r.isFunction=function(e){return"[object Function]"===Object.prototype.toString.call(e)},r.isArray=function(e){return Array.isArray?Array.isArray(e):Boolean(e&&e.constructor===Array)},r.checkObjectHasKeys=function(e,t){for(let r=0;r<t.length;r++)if(!e.hasOwnProperty(t[r]))throw new Error("Missing required key: "+t[r])},r.checkObjectHasNoAdditionalKeys=function(e,t){for(const r in e)if(e.hasOwnProperty(r)&&-1===t.indexOf(r))throw new Error("Unknown key: "+r)},r.deepCopy=function(e){return JSON.parse(JSON.stringify(e))},r.deepCompare=function e(t,r){if(t===r)return!0;if(typeof t!=typeof r)return!1;if("number"==typeof t&&isNaN(t)&&isNaN(r))return!0;if(null===t||null===r)return t===r;if(!(t instanceof Object))return!1;if(t.constructor!==r.constructor||t.prototype!==r.prototype)return!1;if(t instanceof RegExp||t instanceof Date)return t.toString()===r.toString();if(t instanceof Array){if(t.length!==r.length)return!1;for(let n=0;n<t.length;n++)if(!e(t[n],r[n]))return!1}else{let n;for(n in r)if(r.hasOwnProperty(n)!==t.hasOwnProperty(n))return!1;for(n in r){if(r.hasOwnProperty(n)!==t.hasOwnProperty(n))return!1;if(!e(t[n],r[n]))return!1}}return!0},r.extend=function(...e){const t=e[0]||{};for(let r=1;r<e.length;r++){const n=e[r];if(n)for(const e in n)t[e]=n[e]}return t},r.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(e,...t){if(null==this)throw new TypeError;const r=Object(this),n=r.length>>>0;if("function"!=typeof e)throw new TypeError;const i=[],o=t?t[0]:void 0;for(let t=0;t<n;t++)if(t in r){const n=r[t];e.call(o,n,t,r)&&i.push(n)}return i}),Array.prototype.map||(Array.prototype.map=function(e,t){let r,n;if(null==this)throw new TypeError(" this is null or not defined");const i=Object(this),o=i.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(r=t);const s=new Array(o);for(n=0;n<o;){let t,o;n in i&&(t=i[n],o=e.call(r,t,n,i),s[n]=o),n++}return s}),Array.prototype.forEach||(Array.prototype.forEach=function(e,t){let r,n;if(null==this)throw new TypeError(" this is null or not defined");const i=Object(this),o=i.length>>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(r=t),n=0;n<o;){let t;n in i&&(t=i[n],e.call(r,t,n,i)),n++}})},r.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},r.polyfillSuper=function(e,t,...r){try{t.call(e,...r)}catch(n){const i=new t(...r);Object.assign(e,i)}},r.isNumber=function(e){return"number"==typeof e&&isFinite(e)},r.removeHiddenChars=function(e){return"string"==typeof e?o.default(e.normalize("NFD").replace(s,"")):""};const s=/[\u2000-\u200F\u202A-\u202F\u0300-\u036f\uFEFF\s]/g;function a(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}let u;r.escapeRegExp=a,r.globToRegexp=function(e,t){t="boolean"!=typeof t||t;let r=a(e);return r=r.replace(/\\\*/g,".*"),r=r.replace(/\?/g,"."),t&&(r=r.replace(/\\\[(!|)(.*)\\]/g,(function(e,t,r,n,i){return"["+(t?"^":"")+r.replace(/\\-/,"-")+"]"}))),r},r.ensureNoTrailingSlash=function(e){return e&&e.endsWith("/")?e.substr(0,e.length-1):e},r.sleep=function(e,t){return new Promise(r=>{setTimeout(r,e,t)})},r.isNullOrUndefined=function(e){return null==e},r.defer=function(){let e,t;const r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}},r.promiseMapSeries=function(e,t){return n(this,void 0,void 0,(function*(){for(const r of yield e)yield t(yield r)}))},r.promiseTry=function(e){return new Promise(t=>t(e()))},r.setCrypto=function(e){u=e},r.getCrypto=function(){return u}},{unhomoglyph:50}],124:[function(e,t,r){(function(t){"use strict";var n=e("@babel/runtime/helpers/interopRequireWildcard"),i=e("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(r,"__esModule",{value:!0}),r.MatrixCall=l,r.setAudioOutput=function(e){d=e},r.setAudioInput=function(e){f=e},r.setVideoInput=function(e){h=e},r.createNewMatrixCall=function(e,r,n){var i=t.window,o=t.document;if(!i||!o)return null;var s={};s.isOpenWebRTC=function(){var e=o.getElementById("script");if(!e||!e.length)return!1;for(var t=0;t<e.length;t++)if(e[t].src.indexOf("owr.js")>-1)return!0;return!1};var u=i.navigator.getUserMedia||i.navigator.webkitGetUserMedia||i.navigator.mozGetUserMedia;u&&(s.getUserMedia=function(){return u.apply(i.navigator,arguments)});var c=i.navigator.mediaDevices&&i.navigator.mediaDevices.getDisplayMedia||i.navigator.getDisplayMedia;c&&(s.getDisplayMedia=c.bind(i.navigator.mediaDevices));try{s.RtcPeerConnection=i.RTCPeerConnection||i.webkitRTCPeerConnection||i.mozRTCPeerConnection,s.RtcSessionDescription=i.RTCSessionDescription||i.webkitRTCSessionDescription||i.mozRTCSessionDescription,s.RtcIceCandidate=i.RTCIceCandidate||i.webkitRTCIceCandidate||i.mozRTCIceCandidate,s.vendor=null,i.mozRTCPeerConnection?s.vendor="mozilla":i.webkitRTCPeerConnection?s.vendor="webkit":i.RTCPeerConnection&&(s.vendor="generic")}catch(e){return a.logger.error("Failed to set up WebRTC object: possible browser interference?"),a.logger.error(e),null}if(!(s.RtcIceCandidate&&s.RtcSessionDescription&&s.RtcPeerConnection&&s.getUserMedia))return null;var d=!!n&&n.forceTURN;return new l({webRtc:s,client:e,URL:i.URL,roomId:r,turnServers:e.getTurnServers(),forceTURN:e._forceTURN||d})};var o=i(e("@babel/runtime/regenerator")),s=i(e("@babel/runtime/helpers/asyncToGenerator")),a=e("../logger"),u=e("events"),c=n(e("../utils"));function l(e){this.roomId=e.roomId,this.client=e.client,this.webRtc=e.webRtc,this.forceTURN=e.forceTURN,this.URL=e.URL,this.turnServers=e.turnServers||[],0===this.turnServers.length&&this.client.isFallbackICEServerAllowed()&&this.turnServers.push({urls:[l.FALLBACK_ICE_SERVER]}),c.forEach(this.turnServers,(function(e){c.checkObjectHasKeys(e,["urls"])})),this.callId="c"+(new Date).getTime()+Math.random(),this.state="fledgling",this.didConnect=!1,this.candidateSendQueue=[],this.candidateSendTries=0,this.mediaPromises=Object.create(null),this.screenSharingStream=null,this._answerContent=null,this._sentEndOfCandidates=!1}l.CALL_TIMEOUT_MS=6e4,l.FALLBACK_ICE_SERVER="stun:turn.matrix.org",l.ERR_LOCAL_OFFER_FAILED="local_offer_failed",l.ERR_NO_USER_MEDIA="no_user_media",l.ERR_UNKNOWN_DEVICES="unknown_devices",l.ERR_SEND_INVITE="send_invite",l.ERR_SEND_ANSWER="send_answer",c.inherits(l,u.EventEmitter),l.prototype.placeVoiceCall=function(){I("placeVoiceCall"),E(this),T(this,C("voice")),this.type="voice"},l.prototype.placeVideoCall=function(e,t){I("placeVideoCall"),E(this),this.localVideoElement=t,this.remoteVideoElement=e,T(this,C("video")),this.type="video",k(this)},l.prototype.placeScreenSharingCall=function(){var e=(0,s.default)(o.default.mark((function e(t,r){var n,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return I("placeScreenSharingCall"),E(this),this.localVideoElement=r,this.remoteVideoElement=t,n=this,e.prev=5,e.next=8,this.webRtc.getDisplayMedia({audio:!1});case 8:n.screenSharingStream=e.sent,I("Got screen stream, requesting audio stream..."),i=C("voice"),T(n,i),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(5),n.emit("error",w(l.ERR_NO_USER_MEDIA,"Failed to get screen-sharing stream: "+e.t0));case 17:this.type="video",k(this);case 19:case"end":return e.stop()}}),e,this,[[5,14]])})));return function(t,r){return e.apply(this,arguments)}}(),l.prototype.playElement=function(e,t){a.logger.log("queuing play on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then((function(){return a.logger.log("previous promise completed for "+t),e.play()}),(function(){return a.logger.log("previous promise failed for "+t),e.play()})):this.mediaPromises[t]=e.play()},l.prototype.pauseElement=function(e,t){a.logger.log("queuing pause on "+t+" and element "+e),this.mediaPromises[t]?this.mediaPromises[t]=this.mediaPromises[t].then((function(){return a.logger.log("previous promise completed for "+t),e.pause()}),(function(){return a.logger.log("previous promise failed for "+t),e.pause()})):this.mediaPromises[t]=e.pause()},l.prototype.assignElement=function(e,t,r){a.logger.log("queuing assign on "+r+" element "+e+" for "+t),this.mediaPromises[r]?this.mediaPromises[r]=this.mediaPromises[r].then((function(){a.logger.log("previous promise completed for "+r),e.srcObject=t}),(function(){a.logger.log("previous promise failed for "+r),e.srcObject=t})):e.srcObject=t},l.prototype.getLocalVideoElement=function(){return this.localVideoElement},l.prototype.getRemoteVideoElement=function(){return this.remoteVideoElement},l.prototype.getRemoteAudioElement=function(){return this.remoteAudioElement},l.prototype.setLocalVideoElement=function(e){if(this.localVideoElement=e,e&&this.localAVStream&&"video"===this.type){e.autoplay=!0,this.assignElement(e,this.localAVStream,"localVideo"),e.muted=!0;var t=this;setTimeout((function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")}),0)}},l.prototype.setRemoteVideoElement=function(e){this.remoteVideoElement=e,k(this)},l.prototype.setRemoteAudioElement=function(e){this.remoteVideoElement.muted=!0,this.remoteAudioElement=e,this.remoteAudioElement.muted=!1,S(this)},l.prototype._initWithInvite=function(e){this.msg=e.getContent(),this.peerConn=x(this);var t=this;this.peerConn&&this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(this.msg.offer),O(t,t._onSetRemoteDescriptionSuccess),O(t,t._onSetRemoteDescriptionError)),g(this,"ringing"),this.direction="inbound",this.msg.offer&&this.msg.offer.sdp&&this.msg.offer.sdp.indexOf("m=video")>-1?this.type="video":this.type="voice",e.getAge()&&setTimeout((function(){"ringing"==t.state&&(I("Call invite has expired. Hanging up."),t.hangupParty="remote",g(t,"ended"),b(t),"closed"!=t.peerConn.signalingState&&t.peerConn.close(),t.emit("hangup",t))}),this.msg.lifetime-e.getAge())},l.prototype._initWithHangup=function(e){this.msg=e.getContent(),g(this,"ended")},l.prototype.answer=function(){I("Answering call ".concat(this.callId," of type ").concat(this.type));if(this._answerContent)this._sendAnswer();else if(this.localAVStream||this.waitForLocalAVStream)this.localAVStream?this._maybeGotUserMediaForAnswer(this.localAVStream):this.waitForLocalAVStream&&g(this,"wait_local_media");else{var e=C(this.type);a.logger.log("Getting user media with constraints",e),this.webRtc.getUserMedia(e,O(this,this._maybeGotUserMediaForAnswer),O(this,this._maybeGotUserMediaForAnswer)),g(this,"wait_local_media")}},l.prototype._replacedBy=function(e){I(this.callId+" being replaced by "+e.callId),"wait_local_media"==this.state?(I("Telling new call to wait for local media"),e.waitForLocalAVStream=!0):("create_offer"==this.state||"invite_sent"==this.state)&&(I("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)},l.prototype.hangup=function(e,t){if("ended"!=this.state){I("Ending call "+this.callId),_(this,"local",e,!t);var r={version:0,call_id:this.callId,reason:e};y(this,"m.call.hangup",r)}},l.prototype.setLocalVideoMuted=function(e){this.localAVStream&&p(this.localAVStream.getVideoTracks(),!e)},l.prototype.isLocalVideoMuted=function(){return!!this.localAVStream&&!v(this.localAVStream.getVideoTracks())},l.prototype.setMicrophoneMuted=function(e){this.localAVStream&&p(this.localAVStream.getAudioTracks(),!e)},l.prototype.isMicrophoneMuted=function(){return!!this.localAVStream&&!v(this.localAVStream.getAudioTracks())},l.prototype._maybeGotUserMediaForInvite=function(e){if(this.successor)this.successor._maybeGotUserMediaForAnswer(e);else if("ended"!=this.state){I("_maybeGotUserMediaForInvite -> "+this.type);var t=this,r=e,n={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};if(e instanceof MediaStream){var i=this.getLocalVideoElement();i&&"video"==this.type&&(i.autoplay=!0,this.screenSharingStream?(I("Setting screen sharing stream to the local video element"),this.assignElement(i,this.screenSharingStream,"localVideo")):this.assignElement(i,e,"localVideo"),i.muted=!0,setTimeout((function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")}),0)),this.screenSharingStream&&(this.screenSharingStream.addTrack(e.getAudioTracks()[0]),e=this.screenSharingStream),this.localAVStream=e,p(e.getAudioTracks(),!0),this.peerConn=x(this),this.peerConn.addStream(e)}else{if("PermissionDeniedError"!==r.name)return I("Failed to getUserMedia: "+r.name),void this._getUserMediaFailed(r);I("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only."),this.peerConn=x(this)}this.peerConn.createOffer(O(t,t._gotLocalOffer),O(t,t._getLocalOfferFailed),n),g(t,"create_offer")}},l.prototype._sendAnswer=function(e){var t=this;y(this,"m.call.answer",this._answerContent).then((function(){g(t,"connecting"),R(t)})).catch((function(e){g(t,"ringing"),t.client.cancelPendingEvent(e.event);var r=l.ERR_SEND_ANSWER,n="Failed to send answer";throw"UnknownDeviceError"==e.name&&(r=l.ERR_UNKNOWN_DEVICES,n="Unknown devices present in the room"),t.emit("error",w(r,n)),e}))},l.prototype._maybeGotUserMediaForAnswer=function(e){var t=this;if("ended"!=t.state){var r=e;if(e instanceof MediaStream){var n=t.getLocalVideoElement();n&&"video"==t.type&&(n.autoplay=!0,this.assignElement(n,e,"localVideo"),n.muted=!0,setTimeout((function(){var e=t.getLocalVideoElement();e.play&&t.playElement(e,"localVideo")}),0)),t.localAVStream=e,p(e.getAudioTracks(),!0),t.peerConn.addStream(e)}else{if("PermissionDeniedError"!==r.name)return I("Failed to getUserMedia: "+r.name),void this._getUserMediaFailed(r);I("User denied access to camera/microphone. Or possibly you are using an insecure domain. Receiving only.")}var i={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:"video"===t.type}};t.peerConn.createAnswer((function(e){I("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(){I("Error setting local description!")}),i)}),(function(e){I("Failed to create answer: "+e)})),g(t,"create_answer")}},l.prototype._gotLocalIceCandidate=function(e){if(e.candidate){if(I("Got local ICE "+e.candidate.sdpMid+" candidate: "+e.candidate.candidate),"ended"==this.state)return;if(""!==e.candidate.candidate||!this._sentEndOfCandidates){var t={candidate:e.candidate.candidate,sdpMid:e.candidate.sdpMid,sdpMLineIndex:e.candidate.sdpMLineIndex};m(this,t),""===e.candidate.candidate&&(this._sentEndOfCandidates=!0)}}},l.prototype._onIceGatheringStateChange=function(e){if(I("ice gathering state changed to "+this.peerConn.iceGatheringState),"complete"===this.peerConn.iceGatheringState&&!this._sentEndOfCandidates){m(this,{candidate:""}),this._sentEndOfCandidates=!0}},l.prototype._gotRemoteIceCandidate=function(e){"ended"!=this.state&&(null!==e.sdpMid&&void 0!==e.sdpMid||null!==e.sdpMLineIndex&&void 0!==e.sdpMLineIndex?(I("Got remote ICE "+e.sdpMid+" candidate: "+e.candidate),this.peerConn.addIceCandidate(new this.webRtc.RtcIceCandidate(e),(function(){}),(function(e){}))):I("Ignoring remote ICE candidate with no sdpMid or sdpMLineIndex"))},l.prototype._receivedAnswer=function(e){if("ended"!=this.state){this.peerConn.setRemoteDescription(new this.webRtc.RtcSessionDescription(e.answer),O(this,this._onSetRemoteDescriptionSuccess),O(this,this._onSetRemoteDescriptionError)),g(this,"connecting")}},l.prototype._gotLocalOffer=function(e){var t=this;I("Created offer: ",e),"ended"!=t.state?t.peerConn.setLocalDescription(e,(function(){var e={version:0,call_id:t.callId,offer:{sdp:t.peerConn.localDescription.sdp,type:t.peerConn.localDescription.type},lifetime:l.CALL_TIMEOUT_MS};y(t,"m.call.invite",e).then((function(){g(t,"invite_sent"),setTimeout((function(){"invite_sent"==t.state&&t.hangup("invite_timeout")}),l.CALL_TIMEOUT_MS)})).catch((function(e){var r=l.ERR_SEND_INVITE,n="Failed to send invite";throw"UnknownDeviceError"==e.name&&(r=l.ERR_UNKNOWN_DEVICES,n="Unknown devices present in the room"),t.client.cancelPendingEvent(e.event),_(t,"local",r,!1),t.emit("error",w(r,n)),e}))}),(function(){I("Error setting local description!")})):I("Ignoring newly created offer on call ID "+t.callId+" because the call has ended")},l.prototype._getLocalOfferFailed=function(e){this.emit("error",w(l.ERR_LOCAL_OFFER_FAILED,"Failed to start audio for call!"))},l.prototype._getUserMediaFailed=function(e){_(this,"local","user_media_failed",!1),this.emit("error",w(l.ERR_NO_USER_MEDIA,"Couldn't start capturing media! Is your microphone set up and does this app have permission?"))},l.prototype._onIceConnectionStateChanged=function(){"ended"!=this.state&&(I("Ice connection state changed to: "+this.peerConn.iceConnectionState),"completed"==this.peerConn.iceConnectionState||"connected"==this.peerConn.iceConnectionState?(g(this,"connected"),this.didConnect=!0):"failed"==this.peerConn.iceConnectionState&&this.hangup("ice_failed"))},l.prototype._onSignallingStateChanged=function(){I("call "+this.callId+": Signalling state changed to: "+this.peerConn.signalingState)},l.prototype._onSetRemoteDescriptionSuccess=function(){I("Set remote description")},l.prototype._onSetRemoteDescriptionError=function(e){I("Failed to set remote description"+e)},l.prototype._onAddStream=function(e){I("Stream id "+e.stream.id+" added");var t=e.stream;t.getVideoTracks().length>0?(this.type="video",this.remoteAVStream=t,this.remoteAStream=t):(this.type="voice",this.remoteAStream=t);var r=this;A(t,(function(e){I("Track id "+e.id+" added"),e.onstarted=O(r,r._onRemoteStreamTrackStarted)})),void 0!==e.stream.oninactive?e.stream.oninactive=O(r,r._onRemoteStreamEnded):e.stream.onended=O(r,r._onRemoteStreamEnded),e.stream.onstarted=O(r,r._onRemoteStreamStarted),"video"===this.type?(k(this),S(this)):S(this)},l.prototype._onRemoteStreamStarted=function(e){g(this,"connected")},l.prototype._onRemoteStreamEnded=function(e){I("Remote stream ended"),this.hangupParty="remote",g(this,"ended"),b(this),"closed"!=this.peerConn.signalingState&&this.peerConn.close(),this.emit("hangup",this)},l.prototype._onRemoteStreamTrackStarted=function(e){g(this,"connected")},l.prototype._onHangupReceived=function(e){I("Hangup received"),_(this,"remote",e.reason,!0)},l.prototype._onAnsweredElsewhere=function(e){I("Answered elsewhere"),_(this,"remote","answered_elsewhere",!0)};var d,f,h,p=function(e,t){for(var r=0;r<e.length;r++)e[r].enabled=t},v=function(e){for(var t=0;t<e.length;t++)if(e[t].enabled)return!0;return!1},g=function(e,t){var r=e.state;e.state=t,e.emit("state",t,r)},y=function(e,t,r){return e.client.sendEvent(e.roomId,t,r)},m=function(e,t){e.candidateSendQueue.push(t),"ringing"!=e.state&&0===e.candidateSendTries&&setTimeout((function(){R(e)}),100)},_=function(e,t,r,n){e.getRemoteVideoElement()&&(e.getRemoteVideoElement().pause&&e.pauseElement(e.getRemoteVideoElement(),"remoteVideo"),e.assignElement(e.getRemoteVideoElement(),null,"remoteVideo")),e.getRemoteAudioElement()&&(e.getRemoteAudioElement().pause&&e.pauseElement(e.getRemoteAudioElement(),"remoteAudio"),e.assignElement(e.getRemoteAudioElement(),null,"remoteAudio")),e.getLocalVideoElement()&&(e.getLocalVideoElement().pause&&e.pauseElement(e.getLocalVideoElement(),"localVideo"),e.assignElement(e.getLocalVideoElement(),null,"localVideo")),e.hangupParty=t,e.hangupReason=r,g(e,"ended"),b(e),e.peerConn&&"closed"!==e.peerConn.signalingState&&e.peerConn.close(),n&&e.emit("hangup",e)},b=function(e){I("stopAllMedia (stream=".concat(e.localAVStream,")")),e.localAVStream&&(A(e.localAVStream,(function(e){e.stop&&e.stop()})),e.localAVStream.stop&&e.localAVStream.stop()),e.screenSharingStream&&(A(e.screenSharingStream,(function(e){e.stop&&e.stop()})),e.screenSharingStream.stop&&e.screenSharingStream.stop()),e.remoteAVStream&&A(e.remoteAVStream,(function(e){e.stop&&e.stop()})),e.remoteAStream&&A(e.remoteAStream,(function(e){e.stop&&e.stop()}))},k=function(e){if(e.getRemoteVideoElement()&&e.remoteAVStream){var t=e.getRemoteVideoElement();t.autoplay=!0,e.assignElement(t,e.remoteAVStream,"remoteVideo"),setTimeout((function(){var t=e.getRemoteVideoElement();t.play&&e.playElement(t,"remoteVideo"),e.webRtc.isOpenWebRTC()&&g(e,"connected")}),0)}},S=function(){var e=(0,s.default)(o.default.mark((function e(t){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.getRemoteAudioElement()||!t.remoteAStream){e.next=14;break}if(r=t.getRemoteAudioElement(),e.prev=2,!d){e.next=6;break}return e.next=6,r.setSinkId(d);case 6:e.next=11;break;case 8:e.prev=8,e.t0=e.catch(2),a.logger.warn("Couldn't set requested audio output device: using default",e.t0);case 11:r.autoplay=!0,t.assignElement(r,t.remoteAStream,"remoteAudio"),setTimeout((function(){var e=t.getRemoteAudioElement();e.play&&t.playElement(e,"remoteAudio"),t.webRtc.isOpenWebRTC()&&g(t,"connected")}),0);case 14:case"end":return e.stop()}}),e,null,[[2,8]])})));return function(t){return e.apply(this,arguments)}}(),E=function(e){if(0===e.listeners("error").length)throw new Error("You MUST attach an error listener using call.on('error', function() {})")},w=function(e,t){var r=new Error(t);return r.code=e,r},I=function(){a.logger.log.apply(a.logger,arguments)},R=function e(t){if(0!==t.candidateSendQueue.length){var r=t.candidateSendQueue;t.candidateSendQueue=[],++t.candidateSendTries;var n={version:0,call_id:t.callId,candidates:r};I("Attempting to send "+r.length+" candidates"),y(t,"m.call.candidates",n).then((function(){t.candidateSendTries=0,e(t)}),(function(n){for(var i=0;i<r.length;i++)t.candidateSendQueue.push(r[i]);if(t.candidateSendTries>5)return I("Failed to send candidates on attempt "+t.candidateSendTries+". Giving up for now."),void(t.candidateSendTries=0);var o=500*Math.pow(2,t.candidateSendTries);++t.candidateSendTries,I("Failed to send candidates. Retrying in "+o+"ms"),setTimeout((function(){e(t)}),o)}))}},T=function(e,t){a.logger.log("Getting user media with constraints",t),e.client.callList[e.callId]=e,e.webRtc.getUserMedia(t,O(e,e._maybeGotUserMediaForInvite),O(e,e._maybeGotUserMediaForInvite)),g(e,"wait_local_media"),e.direction="outbound",e.config=t},x=function(e){var t=new e.webRtc.RtcPeerConnection({iceTransportPolicy:e.forceTURN?"relay":void 0,iceServers:e.turnServers});return t.oniceconnectionstatechange=O(e,e._onIceConnectionStateChanged),t.onsignalingstatechange=O(e,e._onSignallingStateChanged),t.onicecandidate=O(e,e._gotLocalIceCandidate),t.onicegatheringstatechange=O(e,e._onIceGatheringStateChange),t.onaddstream=O(e,e._onAddStream),t},C=function(e){var r=!!t.window.navigator.webkitGetUserMedia;switch(e){case"voice":return{audio:{deviceId:f?{ideal:f}:void 0},video:!1};case"video":return{audio:{deviceId:f?{ideal:f}:void 0},video:{deviceId:h?{ideal:h}:void 0,width:r?{exact:640}:{ideal:640},height:r?{exact:360}:{ideal:360}}}}},O=function(e,t){return function(){return t.apply(e,arguments)}},A=function(e,t){!function(e,t){for(var r=e.getVideoTracks(),n=0;n<r.length;n++)t(r[n])}(e,t),function(e,t){for(var r=e.getAudioTracks(),n=0;n<r.length;n++)t(r[n])}(e,t)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../logger":95,"../utils":123,"@babel/runtime/helpers/asyncToGenerator":5,"@babel/runtime/helpers/interopRequireDefault":12,"@babel/runtime/helpers/interopRequireWildcard":13,"@babel/runtime/regenerator":27,events:36}]},{},[56]);