p2party 0.7.11 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/signalingServerApi.d.ts +0 -3
- package/lib/api/signalingServerApi.d.ts.map +1 -0
- package/lib/api/webrtc/baseQuery.d.ts.map +1 -1
- package/lib/api/webrtc/disconnectFromPeerChannelLabelQuery.d.ts.map +1 -1
- package/lib/api/webrtc/disconnectFromPeerQuery.d.ts.map +1 -1
- package/lib/api/webrtc/sendMessageQuery.d.ts.map +1 -1
- package/lib/api/webrtc/setDescriptionQuery.d.ts.map +1 -1
- package/lib/cryptography/chacha20poly1305.d.ts.map +1 -0
- package/lib/cryptography/ed25519.d.ts.map +1 -0
- package/lib/cryptography/interfaces.d.ts.map +1 -0
- package/lib/cryptography/memory.d.ts.map +1 -0
- package/lib/cryptography/merkle.d.ts.map +1 -0
- package/lib/cryptography/mnemonic.d.ts.map +1 -0
- package/lib/cryptography/utils.d.ts.map +1 -0
- package/lib/cryptography/wasmLoader.d.ts.map +1 -0
- package/lib/db/api.d.ts.map +1 -0
- package/lib/db/db.worker.d.ts.map +1 -0
- package/lib/db/types.d.ts.map +1 -0
- package/lib/db.worker.js +1 -1
- package/lib/db.worker.js.map +1 -0
- package/lib/handlers/handleChallenge.d.ts +1 -2
- package/lib/handlers/handleChallenge.d.ts.map +1 -0
- package/lib/handlers/handleConnectToPeer.d.ts.map +1 -0
- package/lib/handlers/handleMessageQueueing.d.ts +5 -0
- package/lib/handlers/handleMessageQueueing.d.ts.map +1 -0
- package/lib/handlers/handleOpenChannel.d.ts.map +1 -0
- package/lib/handlers/handleQueuedIceCandidates.d.ts.map +1 -0
- package/lib/handlers/handleReadReceipt.d.ts +1 -2
- package/lib/handlers/handleReadReceipt.d.ts.map +1 -0
- package/lib/handlers/handleReceiveMessage.d.ts.map +1 -0
- package/lib/handlers/handleSendMessage.d.ts.map +1 -0
- package/lib/handlers/handleWebSocketMessage.d.ts +2 -1
- package/lib/handlers/handleWebSocketMessage.d.ts.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -0
- package/lib/index.min.js +1 -1
- package/lib/index.min.js.map +1 -0
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -0
- package/lib/middleware/keyPairListenerMiddleware.d.ts.map +1 -0
- package/lib/middleware/roomListenerMiddleware.d.ts.map +1 -0
- package/lib/reducers/commonSlice.d.ts.map +1 -0
- package/lib/reducers/keyPairSlice.d.ts.map +1 -0
- package/lib/reducers/roomSlice.d.ts.map +1 -0
- package/lib/reducers/signalingServerSlice.d.ts.map +1 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/utils/allocators.d.ts.map +1 -0
- package/lib/utils/channelLabel.d.ts.map +1 -0
- package/lib/utils/constants.d.ts.map +1 -0
- package/lib/utils/interfaces.d.ts +21 -0
- package/lib/utils/interfaces.d.ts.map +1 -0
- package/lib/utils/messageTypes.d.ts.map +1 -0
- package/lib/utils/metadata.d.ts.map +1 -0
- package/lib/utils/splitToChunks.d.ts.map +1 -0
- package/lib/utils/uint8array.d.ts.map +1 -0
- package/package.json +12 -21
- package/lib/handlers/handleSendMessageWebsocket.d.ts +0 -4
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("class-validator");function t(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var n=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),r=()=>Math.random().toString(36).substring(7).split("").join("."),a={INIT:`@@redux/INIT${r()}`,REPLACE:`@@redux/REPLACE${r()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${r()}`};function o(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function s(e,r,i){if("function"!=typeof e)throw new Error(t(2));if("function"==typeof r&&"function"==typeof i||"function"==typeof i&&"function"==typeof arguments[3])throw new Error(t(0));if("function"==typeof r&&void 0===i&&(i=r,r=void 0),void 0!==i){if("function"!=typeof i)throw new Error(t(1));return i(s)(e,r)}let c=e,l=r,d=new Map,u=d,m=0,p=!1;function f(){u===d&&(u=new Map,d.forEach((e,t)=>{u.set(t,e)}))}function h(){if(p)throw new Error(t(3));return l}function y(e){if("function"!=typeof e)throw new Error(t(4));if(p)throw new Error(t(5));let n=!0;f();const r=m++;return u.set(r,e),function(){if(n){if(p)throw new Error(t(6));n=!1,f(),u.delete(r),d=null}}}function g(e){if(!o(e))throw new Error(t(7));if(void 0===e.type)throw new Error(t(8));if("string"!=typeof e.type)throw new Error(t(17));if(p)throw new Error(t(9));try{p=!0,l=c(l,e)}finally{p=!1}return(d=u).forEach(e=>{e()}),e}g({type:a.INIT});return{dispatch:g,subscribe:y,getState:h,replaceReducer:function(e){if("function"!=typeof e)throw new Error(t(10));c=e,g({type:a.REPLACE})},[n]:function(){const e=y;return{subscribe(n){if("object"!=typeof n||null===n)throw new Error(t(11));function r(){const e=n;e.next&&e.next(h())}r();return{unsubscribe:e(r)}},[n](){return this}}}}}function i(e){const n=Object.keys(e),r={};for(let t=0;t<n.length;t++){const a=n[t];"function"==typeof e[a]&&(r[a]=e[a])}const o=Object.keys(r);let s;try{!function(e){Object.keys(e).forEach(n=>{const r=e[n];if(void 0===r(void 0,{type:a.INIT}))throw new Error(t(12));if(void 0===r(void 0,{type:a.PROBE_UNKNOWN_ACTION()}))throw new Error(t(13))})}(r)}catch(e){s=e}return function(e={},n){if(s)throw s;let a=!1;const i={};for(let s=0;s<o.length;s++){const c=o[s],l=r[c],d=e[c],u=l(d,n);if(void 0===u)throw n&&n.type,new Error(t(14));i[c]=u,a=a||u!==d}return a=a||o.length!==Object.keys(e).length,a?i:e}}function c(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function l(e){return o(e)&&"type"in e&&"string"==typeof e.type}var d=Symbol.for("immer-nothing"),u=Symbol.for("immer-draftable"),m=Symbol.for("immer-state");function p(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var f=Object.getPrototypeOf;function h(e){return!!e&&!!e[m]}function y(e){return!!e&&(w(e)||Array.isArray(e)||!!e[u]||!!e.constructor?.[u]||_(e)||x(e))}var g=Object.prototype.constructor.toString();function w(e){if(!e||"object"!=typeof e)return!1;const t=f(e);if(null===t)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object||"function"==typeof n&&Function.toString.call(n)===g}function b(e,t){0===I(e)?Reflect.ownKeys(e).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function I(e){const t=e[m];return t?t.type_:Array.isArray(e)?1:_(e)?2:x(e)?3:0}function k(e,t){return 2===I(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function v(e,t){return 2===I(e)?e.get(t):e[t]}function S(e,t,n){const r=I(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function _(e){return e instanceof Map}function x(e){return e instanceof Set}function E(e){return e.copy_||e.base_}function P(e,t){if(_(e))return new Map(e);if(x(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=w(e);if(!0===t||"class_only"===t&&!n){const t=Object.getOwnPropertyDescriptors(e);delete t[m];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){const a=n[r],o=t[a];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(t[a]={configurable:!0,writable:!0,enumerable:o.enumerable,value:e[a]})}return Object.create(f(e),t)}{const t=f(e);if(null!==t&&n)return{...e};const r=Object.create(t);return Object.assign(r,e)}}function C(e,t=!1){return T(e)||h(e)||!y(e)||(I(e)>1&&Object.defineProperties(e,{set:{value:A},add:{value:A},clear:{value:A},delete:{value:A}}),Object.freeze(e),t&&Object.values(e).forEach(e=>C(e,!0))),e}function A(){p(2)}function T(e){return Object.isFrozen(e)}var R,M={};function D(e){const t=M[e];return t||p(0),t}function U(){return R}function O(e,t){t&&(D("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function B(e){q(e),e.drafts_.forEach(N),e.drafts_=null}function q(e){e===R&&(R=e.parent_)}function j(e){return R={drafts_:[],parent_:R,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function N(e){const t=e[m];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function z(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[m].modified_&&(B(t),p(4)),y(e)&&(e=K(t,e),t.parent_||F(t,e)),t.patches_&&D("Patches").generateReplacementPatches_(n[m].base_,e,t.patches_,t.inversePatches_)):e=K(t,n,[]),B(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==d?e:void 0}function K(e,t,n){if(T(t))return t;const r=t[m];if(!r)return b(t,(a,o)=>L(e,r,t,a,o,n)),t;if(r.scope_!==e)return t;if(!r.modified_)return F(e,r.base_,!0),r.base_;if(!r.finalized_){r.finalized_=!0,r.scope_.unfinalizedDrafts_--;const t=r.copy_;let a=t,o=!1;3===r.type_&&(a=new Set(t),t.clear(),o=!0),b(a,(a,s)=>L(e,r,t,a,s,n,o)),F(e,t,!1),n&&e.patches_&&D("Patches").generatePatches_(r,n,e.patches_,e.inversePatches_)}return r.copy_}function L(e,t,n,r,a,o,s){if(h(a)){const s=K(e,a,o&&t&&3!==t.type_&&!k(t.assigned_,r)?o.concat(r):void 0);if(S(n,r,s),!h(s))return;e.canAutoFreeze_=!1}else s&&n.add(a);if(y(a)&&!T(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;K(e,a),t&&t.scope_.parent_||"symbol"==typeof r||!(_(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))||F(e,a)}}function F(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&C(t,n)}var H={get(e,t){if(t===m)return e;const n=E(e);if(!k(n,t))return function(e,t,n){const r=Q(t,n);return r?"value"in r?r.value:r.get?.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!y(r)?r:r===V(e.base_,t)?(G(e),e.copy_[t]=X(r,e)):r},has:(e,t)=>t in E(e),ownKeys:e=>Reflect.ownKeys(E(e)),set(e,t,n){const r=Q(E(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=V(E(e),t),s=r?.[m];if(s&&s.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(((a=n)===(o=r)?0!==a||1/a==1/o:a!=a&&o!=o)&&(void 0!==n||k(e.base_,t)))return!0;G(e),$(e)}var a,o;return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==V(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,G(e),$(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=E(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){p(11)},getPrototypeOf:e=>f(e.base_),setPrototypeOf(){p(12)}},W={};function V(e,t){const n=e[m];return(n?E(n):e)[t]}function Q(e,t){if(!(t in e))return;let n=f(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=f(n)}}function $(e){e.modified_||(e.modified_=!0,e.parent_&&$(e.parent_))}function G(e){e.copy_||(e.copy_=P(e.base_,e.scope_.immer_.useStrictShallowCopy_))}b(H,(e,t)=>{W[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),W.deleteProperty=function(e,t){return W.set.call(this,e,t,void 0)},W.set=function(e,t,n){return H.set.call(this,e[0],t,n,e[0])};function X(e,t){const n=_(e)?D("MapSet").proxyMap_(e,t):x(e)?D("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:U(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=r,o=H;n&&(a=[r],o=W);const{revoke:s,proxy:i}=Proxy.revocable(a,o);return r.draft_=i,r.revoke_=s,i}(e,t);return(t?t.scope_:U()).drafts_.push(n),n}function Y(e){if(!y(e)||T(e))return e;const t=e[m];let n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=P(e,t.scope_.immer_.useStrictShallowCopy_)}else n=P(e,!0);return b(n,(e,t)=>{S(n,e,Y(t))}),t&&(t.finalized_=!1),n}function J(){const e="replace",t="add",n="remove";function r(e){if(!y(e))return e;if(Array.isArray(e))return e.map(r);if(_(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,r(t)]));if(x(e))return new Set(Array.from(e).map(r));const t=Object.create(f(e));for(const n in e)t[n]=r(e[n]);return k(e,u)&&(t[u]=e[u]),t}function a(e){return h(e)?r(e):e}var o,s;s={applyPatches_:function(a,o){return o.forEach(o=>{const{path:s,op:i}=o;let c=a;for(let e=0;e<s.length-1;e++){const t=I(c);let n=s[e];"string"!=typeof n&&"number"!=typeof n&&(n=""+n),0!==t&&1!==t||"__proto__"!==n&&"constructor"!==n||p(19),"function"==typeof c&&"prototype"===n&&p(19),c=v(c,n),"object"!=typeof c&&p(18,s.join("/"))}const l=I(c),d=r(o.value),u=s[s.length-1];switch(i){case e:switch(l){case 2:return c.set(u,d);case 3:p(16);default:return c[u]=d}case t:switch(l){case 1:return"-"===u?c.push(d):c.splice(u,0,d);case 2:return c.set(u,d);case 3:return c.add(d);default:return c[u]=d}case n:switch(l){case 1:return c.splice(u,1);case 2:return c.delete(u);case 3:return c.delete(o.value);default:return delete c[u]}default:p(17)}}),a},generatePatches_:function(r,o,s,i){switch(r.type_){case 0:case 2:return function(r,o,s,i){const{base_:c,copy_:l}=r;b(r.assigned_,(r,d)=>{const u=v(c,r),m=v(l,r),p=d?k(c,r)?e:t:n;if(u===m&&p===e)return;const f=o.concat(r);s.push(p===n?{op:p,path:f}:{op:p,path:f,value:m}),i.push(p===t?{op:n,path:f}:p===n?{op:t,path:f,value:a(u)}:{op:e,path:f,value:a(u)})})}(r,o,s,i);case 1:return function(r,o,s,i){let{base_:c,assigned_:l}=r,d=r.copy_;d.length<c.length&&([c,d]=[d,c],[s,i]=[i,s]);for(let t=0;t<c.length;t++)if(l[t]&&d[t]!==c[t]){const n=o.concat([t]);s.push({op:e,path:n,value:a(d[t])}),i.push({op:e,path:n,value:a(c[t])})}for(let e=c.length;e<d.length;e++){const n=o.concat([e]);s.push({op:t,path:n,value:a(d[e])})}for(let e=d.length-1;c.length<=e;--e){const t=o.concat([e]);i.push({op:n,path:t})}}(r,o,s,i);case 3:return function(e,r,a,o){let{base_:s,copy_:i}=e,c=0;s.forEach(e=>{if(!i.has(e)){const s=r.concat([c]);a.push({op:n,path:s,value:e}),o.unshift({op:t,path:s,value:e})}c++}),c=0,i.forEach(e=>{if(!s.has(e)){const s=r.concat([c]);a.push({op:t,path:s,value:e}),o.unshift({op:n,path:s,value:e})}c++})}(r,o,s,i)}},generateReplacementPatches_:function(t,n,r,a){r.push({op:e,path:[],value:n===d?void 0:n}),a.push({op:e,path:[],value:t})}},M[o="Patches"]||(M[o]=s)}var Z=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const n=t;t=e;const r=this;return function(e=n,...a){return r.produce(e,e=>t.call(this,e,...a))}}let r;if("function"!=typeof t&&p(6),void 0!==n&&"function"!=typeof n&&p(7),y(e)){const a=j(this),o=X(e,void 0);let s=!0;try{r=t(o),s=!1}finally{s?B(a):q(a)}return O(a,n),z(r,a)}if(!e||"object"!=typeof e){if(r=t(e),void 0===r&&(r=e),r===d&&(r=void 0),this.autoFreeze_&&C(r,!0),n){const t=[],a=[];D("Patches").generateReplacementPatches_(e,r,t,a),n(t,a)}return r}p(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){y(e)||p(8),h(e)&&(e=function(e){h(e)||p(10);return Y(e)}(e));const t=j(this),n=X(e,void 0);return n[m].isManual_=!0,q(t),n}finishDraft(e,t){const n=e&&e[m];n&&n.isManual_||p(9);const{scope_:r}=n;return O(r,t),z(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=D("Patches").applyPatches_;return h(e)?r(e,t):this.produce(e,e=>r(e,t))}},ee=Z.produce,te=Z.produceWithPatches.bind(Z),ne=Z.applyPatches.bind(Z);var re=e=>Array.isArray(e)?e:[e];function ae(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const n=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${n}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}var oe="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function se(){return{s:0,v:void 0,o:null,p:null}}function ie(e,t={}){let n={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:r}=t;let a,o=0;function s(){let t=n;const{length:s}=arguments;for(let e=0,n=s;e<n;e++){const n=arguments[e];if("function"==typeof n||"object"==typeof n&&null!==n){let e=t.o;null===e&&(t.o=e=new WeakMap);const r=e.get(n);void 0===r?(t=se(),e.set(n,t)):t=r}else{let e=t.p;null===e&&(t.p=e=new Map);const r=e.get(n);void 0===r?(t=se(),e.set(n,t)):t=r}}const i=t;let c;if(1===t.s)c=t.v;else if(c=e.apply(null,arguments),o++,r){const e=a?.deref?.()??a;null!=e&&r(e,c)&&(c=e,0!==o&&o--);a="object"==typeof c&&null!==c||"function"==typeof c?new oe(c):c}return i.s=1,i.v=c,c}return s.clearCache=()=>{n={s:0,v:void 0,o:null,p:null},s.resetResultsCount()},s.resultsCount=()=>o,s.resetResultsCount=()=>{o=0},s}function ce(e,...t){const n="function"==typeof e?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t,r=0,a=0,o={},s=e.pop();"object"==typeof s&&(o=s,s=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(s,`createSelector expects an output function after the inputs, but received: [${typeof s}]`);const i={...n,...o},{memoize:c,memoizeOptions:l=[],argsMemoize:d=ie,argsMemoizeOptions:u=[]}=i,m=re(l),p=re(u),f=ae(e),h=c(function(){return r++,s.apply(null,arguments)},...m),y=d(function(){a++;const e=function(e,t){const n=[],{length:r}=e;for(let a=0;a<r;a++)n.push(e[a].apply(null,t));return n}(f,arguments);return t=h.apply(null,e),t},...p);return Object.assign(y,{resultFunc:s,memoizedResultFunc:h,dependencies:f,dependencyRecomputations:()=>a,resetDependencyRecomputations:()=>{a=0},lastResult:()=>t,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:c,argsMemoize:d})};return Object.assign(r,{withTypes:()=>r}),r}var le=ce(ie),de=Object.assign((e,t=le)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>de});function ue(e){return({dispatch:t,getState:n})=>r=>a=>"function"==typeof a?a(t,n,e):r(a)}var me=ue(),pe=ue,fe="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?c:c.apply(null,arguments)};function he(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw new Error(Et(0));return{type:e,payload:r.payload,..."meta"in r&&{meta:r.meta},..."error"in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>l(t)&&t.type===e,n}var ye=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function ge(e){return y(e)?ee(e,()=>{}):e}function we(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var be="RTK_autoBatch",Ie=()=>e=>({payload:e,meta:{[be]:!0}}),ke=e=>t=>{setTimeout(t,e)},ve=e=>function(t){const{autoBatch:n=!0}=t??{};let r=new ye(e);return n&&r.push(((e={type:"raf"})=>t=>(...n)=>{const r=t(...n);let a=!0,o=!1,s=!1;const i=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:ke(10):"callback"===e.type?e.queueNotification:ke(e.timeout),l=()=>{s=!1,o&&(o=!1,i.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){const t=r.subscribe(()=>a&&e());return i.add(e),()=>{t(),i.delete(e)}},dispatch(e){try{return a=!e?.meta?.[be],o=!a,o&&(s||(s=!0,c(l))),r.dispatch(e)}finally{a=!0}}})})("object"==typeof n?n:void 0)),r};function Se(e){const t={},n=[];let r;const a={addCase(e,n){const r="string"==typeof e?e:e.type;if(!r)throw new Error(Et(28));if(r in t)throw new Error(Et(29));return t[r]=n,a},addAsyncThunk:(e,r)=>(r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),a),addMatcher:(e,t)=>(n.push({matcher:e,reducer:t}),a),addDefaultCase:e=>(r=e,a)};return e(a),[t,n,r]}var _e=(e,t)=>{return(n=e)&&"function"==typeof n.match?e.match(t):e(t);var n};function xe(...e){return t=>e.some(e=>_e(e,t))}function Ee(...e){return t=>e.every(e=>_e(e,t))}function Pe(e,t){if(!e||!e.meta)return!1;const n="string"==typeof e.meta.requestId,r=t.indexOf(e.meta.requestStatus)>-1;return n&&r}function Ce(e){return"function"==typeof e[0]&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function Ae(...e){return 0===e.length?e=>Pe(e,["pending"]):Ce(e)?xe(...e.map(e=>e.pending)):Ae()(e[0])}function Te(...e){return 0===e.length?e=>Pe(e,["rejected"]):Ce(e)?xe(...e.map(e=>e.rejected)):Te()(e[0])}function Re(...e){const t=e=>e&&e.meta&&e.meta.rejectedWithValue;return 0===e.length||Ce(e)?Ee(Te(...e),t):Re()(e[0])}function Me(...e){return 0===e.length?e=>Pe(e,["fulfilled"]):Ce(e)?xe(...e.map(e=>e.fulfilled)):Me()(e[0])}function De(...e){return 0===e.length?e=>Pe(e,["pending","fulfilled","rejected"]):Ce(e)?xe(...e.flatMap(e=>[e.pending,e.rejected,e.fulfilled])):De()(e[0])}var Ue=(e=21)=>{let t="",n=e;for(;n--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t},Oe=["name","message","stack","code"],Be=class{constructor(e,t){this.payload=e,this.meta=t}_type},qe=class{constructor(e,t){this.payload=e,this.meta=t}_type},je=e=>{if("object"==typeof e&&null!==e){const t={};for(const n of Oe)"string"==typeof e[n]&&(t[n]=e[n]);return t}return{message:String(e)}},Ne="External signal was aborted",ze=(()=>{function e(e,t,n){const r=he(e+"/fulfilled",(e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:"fulfilled"}})),a=he(e+"/pending",(e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:"pending"}})),o=he(e+"/rejected",(e,t,r,a,o)=>({payload:a,error:(n&&n.serializeError||je)(e||"Rejected"),meta:{...o||{},arg:r,requestId:t,rejectedWithValue:!!a,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}}));return Object.assign(function(e,{signal:s}={}){return(i,c,l)=>{const d=n?.idGenerator?n.idGenerator(e):Ue(),u=new AbortController;let m,p;function f(e){p=e,u.abort()}s&&(s.aborted?f(Ne):s.addEventListener("abort",()=>f(Ne),{once:!0}));const h=async function(){let s;try{let o=n?.condition?.(e,{getState:c,extra:l});if(null!==(h=o)&&"object"==typeof h&&"function"==typeof h.then&&(o=await o),!1===o||u.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const y=new Promise((e,t)=>{m=()=>{t({name:"AbortError",message:p||"Aborted"})},u.signal.addEventListener("abort",m)});i(a(d,e,n?.getPendingMeta?.({requestId:d,arg:e},{getState:c,extra:l}))),s=await Promise.race([y,Promise.resolve(t(e,{dispatch:i,getState:c,extra:l,requestId:d,signal:u.signal,abort:f,rejectWithValue:(e,t)=>new Be(e,t),fulfillWithValue:(e,t)=>new qe(e,t)})).then(t=>{if(t instanceof Be)throw t;return t instanceof qe?r(t.payload,d,e,t.meta):r(t,d,e)})])}catch(t){s=t instanceof Be?o(null,d,e,t.payload,t.meta):o(t,d,e)}finally{m&&u.signal.removeEventListener("abort",m)}var h;return n&&!n.dispatchConditionRejection&&o.match(s)&&s.meta.condition||i(s),s}();return Object.assign(h,{abort:f,requestId:d,arg:e,unwrap:()=>h.then(Ke)})}},{pending:a,rejected:o,fulfilled:r,settled:xe(o,r),typePrefix:e})}return e.withTypes=()=>e,e})();function Ke(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var Le=Symbol.for("rtk-slice-createasyncthunk");function Fe(e,t){return`${e}/${t}`}function He({creators:e}={}){const t=e?.asyncThunk?.[Le];return function(e){const{name:n,reducerPath:r=n}=e;if(!n)throw new Error(Et(11));const a=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},o=Object.keys(a),s={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},i={addCase(e,t){const n="string"==typeof e?e:e.type;if(!n)throw new Error(Et(12));if(n in s.sliceCaseReducersByType)throw new Error(Et(13));return s.sliceCaseReducersByType[n]=t,i},addMatcher:(e,t)=>(s.sliceMatchers.push({matcher:e,reducer:t}),i),exposeAction:(e,t)=>(s.actionCreators[e]=t,i),exposeCaseReducer:(e,t)=>(s.sliceCaseReducersByName[e]=t,i)};function c(){const[t={},n=[],r]="function"==typeof e.extraReducers?Se(e.extraReducers):[e.extraReducers],a={...t,...s.sliceCaseReducersByType};return function(e,t){let n,[r,a,o]=Se(t);if("function"==typeof e)n=()=>ge(e());else{const t=ge(e);n=()=>t}function s(e=n(),t){let s=[r[t.type],...a.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return 0===s.filter(e=>!!e).length&&(s=[o]),s.reduce((e,n)=>{if(n){if(h(e)){const r=n(e,t);return void 0===r?e:r}if(y(e))return ee(e,e=>n(e,t));{const r=n(e,t);if(void 0===r){if(null===e)return e;throw Error("A case reducer on a non-draftable value must not return undefined")}return r}}return e},e)}return s.getInitialState=n,s}(e.initialState,e=>{for(let t in a)e.addCase(t,a[t]);for(let t of s.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}o.forEach(r=>{const o=a[r],s={reducerName:r,type:Fe(n,r),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(o)?function({type:e,reducerName:t,createNotation:n},r,a){let o,s;if("reducer"in r){if(n&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(r))throw new Error(Et(17));o=r.reducer,s=r.prepare}else o=r;a.addCase(e,o).exposeCaseReducer(t,o).exposeAction(t,s?he(e,s):he(e))}(s,o,i):function({type:e,reducerName:t},n,r,a){if(!a)throw new Error(Et(18));const{payloadCreator:o,fulfilled:s,pending:i,rejected:c,settled:l,options:d}=n,u=a(e,o,d);r.exposeAction(t,u),s&&r.addCase(u.fulfilled,s);i&&r.addCase(u.pending,i);c&&r.addCase(u.rejected,c);l&&r.addMatcher(u.settled,l);r.exposeCaseReducer(t,{fulfilled:s||Qe,pending:i||Qe,rejected:c||Qe,settled:l||Qe})}(s,o,i,t)});const l=e=>e,d=new Map,u=new WeakMap;let m;function p(e,t){return m||(m=c()),m(e,t)}function f(){return m||(m=c()),m.getInitialState()}function g(t,n=!1){function r(e){let a=e[t];return void 0===a&&n&&(a=we(u,r,f)),a}function a(t=l){const r=we(d,n,()=>new WeakMap);return we(r,t,()=>{const r={};for(const[a,o]of Object.entries(e.selectors??{}))r[a]=We(o,t,()=>we(u,t,f),n);return r})}return{reducerPath:t,getSelectors:a,get selectors(){return a(r)},selectSlice:r}}const w={name:n,reducer:p,actions:s.actionCreators,caseReducers:s.sliceCaseReducersByName,getInitialState:f,...g(r),injectInto(e,{reducerPath:t,...n}={}){const a=t??r;return e.inject({reducerPath:a,reducer:p},n),{...w,...g(a,!0)}}};return w}}function We(e,t,n,r){function a(a,...o){let s=t(a);return void 0===s&&r&&(s=n()),e(s,...o)}return a.unwrapped=e,a}var Ve=He();function Qe(){}var $e="listener",Ge="completed",Xe="cancelled",Ye=`task-${Xe}`,Je=`task-${Ge}`,Ze=`${$e}-${Xe}`,et=`${$e}-${Ge}`,tt=class{constructor(e){this.code=e,this.message=`task ${Xe} (reason: ${e})`}name="TaskAbortError";message},nt=(e,t)=>{if("function"!=typeof e)throw new TypeError(Et(32))},rt=()=>{},at=(e,t=rt)=>(e.catch(t),e),ot=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),st=(e,t)=>{const n=e.signal;n.aborted||("reason"in n||Object.defineProperty(n,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},it=e=>{if(e.aborted){const{reason:t}=e;throw new tt(t)}};function ct(e,t){let n=rt;return new Promise((r,a)=>{const o=()=>a(new tt(e.reason));e.aborted?o():(n=ot(e,o),t.finally(()=>n()).then(r,a))}).finally(()=>{n=rt})}var lt=e=>t=>at(ct(e,t).then(t=>(it(e),t))),dt=e=>{const t=lt(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:ut}=Object,mt={},pt="listenerMiddleware",ft=(e,t)=>(n,r)=>{nt(n);const a=new AbortController;var o;o=a,ot(e,()=>st(o,e.reason));const s=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof tt?"cancelled":"rejected",error:e}}finally{t?.()}})(async()=>{it(e),it(a.signal);const t=await n({pause:lt(a.signal),delay:dt(a.signal),signal:a.signal});return it(a.signal),t},()=>st(a,Je));return r?.autoJoin&&t.push(s.catch(rt)),{result:lt(e)(s),cancel(){st(a,Ye)}}},ht=(e,t)=>(n,r)=>at((async(n,r)=>{it(t);let a=()=>{};const o=[new Promise((t,r)=>{let o=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});a=()=>{o(),r()}})];null!=r&&o.push(new Promise(e=>setTimeout(e,r,null)));try{const e=await ct(t,Promise.race(o));return it(t),e}finally{a()}})(n,r)),yt=e=>{let{type:t,actionCreator:n,matcher:r,predicate:a,effect:o}=e;if(t)a=he(t).match;else if(n)t=n.type,a=n.match;else if(r)a=r;else if(!a)throw new Error(Et(21));return nt(o),{predicate:a,type:t,effect:o}},gt=ut(e=>{const{type:t,predicate:n,effect:r}=yt(e);return{id:Ue(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw new Error(Et(22))}}},{withTypes:()=>gt}),wt=(e,t)=>{const{type:n,effect:r,predicate:a}=yt(t);return Array.from(e.values()).find(e=>("string"==typeof n?e.type===n:e.predicate===a)&&e.effect===r)},bt=e=>{e.pending.forEach(e=>{st(e,Ze)})},It=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},kt=ut(he(`${pt}/add`),{withTypes:()=>kt}),vt=he(`${pt}/removeAll`),St=ut(he(`${pt}/remove`),{withTypes:()=>St}),_t=(...e)=>{console.error(`${pt}/error`,...e)},xt=(e={})=>{const t=new Map,{extra:n,onError:r=_t}=e;nt(r);const a=e=>(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&bt(e)}))(wt(t,e)??gt(e));ut(a,{withTypes:()=>a});const o=e=>{const n=wt(t,e);return n&&(n.unsubscribe(),e.cancelActive&&bt(n)),!!n};ut(o,{withTypes:()=>o});const s=async(e,o,s,i)=>{const c=new AbortController,l=ht(a,c.signal),d=[];try{e.pending.add(c),await Promise.resolve(e.effect(o,ut({},s,{getOriginalState:i,condition:(e,t)=>l(e,t).then(Boolean),take:l,delay:dt(c.signal),pause:lt(c.signal),extra:n,signal:c.signal,fork:ft(c.signal,d),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==c&&(st(e,Ze),n.delete(e))})},cancel:()=>{st(c,Ze),e.pending.delete(c)},throwIfCancelled:()=>{it(c.signal)}})))}catch(e){e instanceof tt||It(r,e,{raisedBy:"effect"})}finally{await Promise.all(d),st(c,et),e.pending.delete(c)}},i=(e=>()=>{e.forEach(bt),e.clear()})(t);return{middleware:e=>n=>c=>{if(!l(c))return n(c);if(kt.match(c))return a(c.payload);if(vt.match(c))return void i();if(St.match(c))return o(c.payload);let d=e.getState();const u=()=>{if(d===mt)throw new Error(Et(23));return d};let m;try{if(m=n(c),t.size>0){const n=e.getState(),a=Array.from(t.values());for(const t of a){let a=!1;try{a=t.predicate(c,n,d)}catch(e){a=!1,It(r,e,{raisedBy:"predicate"})}a&&s(t,c,e,u)}}}finally{d=mt}return m},startListening:a,stopListening:o,clearListeners:i}};function Et(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}const Pt=Ve({name:"commonState",initialState:{currentRoomUrl:""},reducers:{setCurrentRoomUrl:(e,t)=>{e.currentRoomUrl=t.payload}}}),{setCurrentRoomUrl:Ct}=Pt.actions;var At=Pt.reducer;const Tt={peerId:localStorage.getItem("peerId")??"",challengeId:localStorage.getItem("challengeId")??"",publicKey:localStorage.getItem("publicKey")??"",secretKey:localStorage.getItem("secretKey")??"",challenge:localStorage.getItem("challenge")??"",signature:localStorage.getItem("signature")??""},Rt=Ve({name:"keyPair",initialState:Tt,reducers:{setKeyPair:(e,t)=>{const{publicKey:n,secretKey:r}=t.payload;64===n.length&&128===r.length&&(e.publicKey=t.payload.publicKey,e.secretKey=t.payload.secretKey)},setReconnectData:(t,n)=>{const{peerId:r,challenge:a,signature:o,challengeId:s}=n.payload;e.isUUID(r,4)&&e.isUUID(s)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(t.peerId=r,t.challenge=a,t.signature=o,t.challengeId=s)},setPeerData:(t,n)=>{const{peerId:r,challenge:a,signature:o}=n.payload;e.isUUID(r,4)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(t.peerId=r,t.challenge=a,t.signature=o)},setChallengeId:(t,n)=>{const{challengeId:r}=n.payload;e.isUUID(r)&&(t.challengeId=r)},resetIdentity:(e,t)=>({peerId:"",challengeId:"",publicKey:"",secretKey:"",challenge:"",signature:""})}}),{setKeyPair:Mt,setReconnectData:Dt,setPeerData:Ut,setChallengeId:Ot,resetIdentity:Bt}=Rt.actions;var qt=Rt.reducer;const jt=64*Uint8Array.BYTES_PER_ELEMENT,Nt=64*Uint8Array.BYTES_PER_ELEMENT,zt=32*Uint8Array.BYTES_PER_ELEMENT,Kt=32*Uint8Array.BYTES_PER_ELEMENT,Lt=64*Uint8Array.BYTES_PER_ELEMENT,Ft=16*Uint8Array.BYTES_PER_ELEMENT,Ht=32*Uint8Array.BYTES_PER_ELEMENT,Wt=32*Uint8Array.BYTES_PER_ELEMENT,Vt=12*Uint8Array.BYTES_PER_ELEMENT,Qt=12*Uint8Array.BYTES_PER_ELEMENT,$t=16*Uint8Array.BYTES_PER_ELEMENT,Gt=e=>Qt+e+Ft,Xt=e=>e-Qt-Ft,Yt={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"},Jt=Ve({name:"rooms",initialState:[],reducers:{setRoom:(t,n)=>{const{url:r,id:a,canBeConnectionRelay:o,rtcConfig:s,onlyConnectWithKnownPeers:i}=n.payload;if(64===r.length&&e.isUUID(a)){const e=t.findIndex(e=>e.url===r||e.id===a);e>-1?(t[e].url=r,t[e].id=a,null!=o&&(t[e].canBeConnectionRelay=o),s&&(t[e].rtcConfig=s),t[e].onlyConnectWithKnownAddresses=null!=i?i:"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers")):t.push({url:r,id:a,connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:o??!0,onlyConnectWithKnownAddresses:i??"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers"),rtcConfig:s??Yt,peers:[],channels:[],messages:[]})}else if(64===r.length){const e=t.findIndex(e=>e.url===r);e>-1?(t[e].url=r,t[e].id="",null!=o&&(t[e].canBeConnectionRelay=o),s&&(t[e].rtcConfig=s),t[e].onlyConnectWithKnownAddresses=null!=i?i:"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers")):t.push({url:r,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:o??!0,onlyConnectWithKnownAddresses:i??"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers"),rtcConfig:s??Yt,peers:[],channels:[],messages:[]})}},setConnectingToPeers:(e,t)=>{const{roomId:n,connectingToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=r)},setConnectedToPeers:(e,t)=>{const{roomId:n,connectedToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=!1,e[a].connectedToPeers=r)},setConnectionRelay:(e,t)=>{const{roomId:n,canBeConnectionRelay:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].canBeConnectionRelay=r)},setPeer:(e,t)=>{const{roomId:n,peerId:r,peerPublicKey:a}=t.payload,o=e.findIndex(e=>e.id===n);if(o>-1){-1===e[o].peers.findIndex(e=>e.peerId===r)&&e[o].peers.push({peerId:r,peerPublicKey:a})}},deletePeer:(e,t)=>{const n=e.length;for(let r=0;r<n;r++){const n=e[r].peers.findIndex(e=>e.peerId===t.payload.peerId);n>-1&&e[r].peers.splice(n,1)}},setChannel:(e,t)=>{const{roomId:n,label:r,peerId:a}=t.payload,o=e.findIndex(e=>e.id===n);if(o>-1){const t=e[o].channels.findIndex(e=>e.label===r);if(t>-1){-1===e[o].channels[t].peerIds.findIndex(e=>e===a)&&e[o].channels[t].peerIds.push(a)}else e[o].channels.push({label:r,peerIds:[a]})}},deleteChannel:(e,t)=>{const{peerId:n,label:r}=t.payload,a=e.length;for(let t=0;t<a;t++)if(r&&!n){const n=e[t].channels.findIndex(e=>e.label===r);n>-1&&e[t].channels.splice(n,1)}else if(!r&&n){const r=e[t].channels.length;for(let a=0;a<r;a++){const r=e[t].channels[t].peerIds.findIndex(e=>e===n);r>-1&&(e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1))}}else if(n&&r){const a=e[t].channels.findIndex(e=>e.label===r&&e.peerIds.includes(n));if(a>-1){const r=e[t].channels[a].peerIds.findIndex(e=>e===n);e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1)}}},setIceServers:(e,t)=>{const{roomId:n,iceServers:r}=t.payload,a=e.findIndex(e=>e.id===n);if(a>-1){const t=r.length,n=e[a].rtcConfig.iceServers?.flatMap(e=>Array.isArray(e.urls)?e.urls:[e.urls])??[];for(let o=0;o<t;o++){const t=r[o].urls.length;let s=!1;for(let e=0;e<t;e++)if(!n.includes(r[o].urls[e])){s=!0;break}s&&e[a].rtcConfig.iceServers?.push(r[o])}}},setMessage:(t,n)=>{const{roomId:r,merkleRootHex:a,sha512Hex:o,filename:s,channelLabel:i,fromPeerId:c,messageType:l,chunkSize:d,totalSize:u,chunksCreated:m,totalChunks:p,timestamp:f}=n.payload,h=t.findIndex(e=>e.id===r);if(h>-1){const n=t[h].messages.findLastIndex(e=>e.merkleRootHex===a||e.sha512Hex===o&&0===e.merkleRootHex.length);-1===n?i&&c&&e.isUUID(c)&&l&&u&&t[h].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:i,filename:s.length>0?s:"txt",messageType:l,fromPeerId:c,timestamp:f??Date.now(),savedSize:d>0?d:0,totalSize:u,chunksCreated:m??0,totalChunks:p??0}):t[h].messages[n].timestamp!==f&&t[h].messages[n].sha512Hex===o&&t[h].messages[n].savedSize===t[h].messages[n].totalSize?t[h].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:i,filename:s.length>0?s:"txt",messageType:l,fromPeerId:c,timestamp:f??Date.now(),savedSize:d,totalSize:u,chunksCreated:m??0,totalChunks:p??0}):(a.length===2*jt&&""===t[h].messages[n].merkleRootHex&&(t[h].messages[n].merkleRootHex=a),u>0&&t[h].messages[n].totalSize!==u&&(t[h].messages[n].totalSize=u),d>0&&t[h].messages[n].totalSize>=t[h].messages[n].savedSize+d&&(t[h].messages[n].savedSize+=d),m&&m<=t[h].messages[n].totalChunks&&(t[h].messages[n].chunksCreated=m+1))}},setMessageAllChunks:(t,n)=>{const{roomId:r,merkleRootHex:a,sha512Hex:o,channelLabel:s,filename:i,messageType:c,fromPeerId:l,timestamp:d,totalSize:u}=n.payload,m=t.findIndex(e=>e.id===r);if(m>-1){const n=t[m].messages.findLastIndex(e=>e.merkleRootHex===a);-1===n&&s&&l&&e.isUUID(l)&&c&&u||n>-1&&t[m].messages[n].timestamp<d?t[m].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:s,filename:i.length>0?i:"txt",messageType:c,fromPeerId:l,timestamp:d,savedSize:u,totalSize:u,chunksCreated:0,totalChunks:0}):n>-1&&t[m].messages[n].savedSize!==u&&(t[m].messages[n].savedSize=u)}},deleteMessage:(e,t)=>{const{merkleRootHex:n,hashHex:r}=t.payload;if(!n&&!r)return;if(n&&n.length!==2*jt)return;if(r&&r.length!==2*jt)return;const a=e.length;for(let t=0;t<a;t++)if(n){const r=e[t].messages.findIndex(e=>e.merkleRootHex===n);r>-1&&e[t].messages.splice(r,1)}else if(r){const n=e[t].messages.findLastIndex(e=>e.sha512Hex===r);n>-1&&e[t].messages.splice(n,1)}},setOnlyConnectWithKnownPeers:(e,t)=>{const{roomId:n,onlyConnectWithKnownPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].onlyConnectWithKnownAddresses=r)},deleteRoom:(e,t)=>{const n=e.findIndex(e=>e.url===t.payload||e.id===t.payload);if(n>-1){const t=e[n].url;e[n]={url:t,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:!0,onlyConnectWithKnownAddresses:!1,rtcConfig:Yt,peers:[],channels:[],messages:[]}}}}}),{setRoom:Zt,setConnectingToPeers:en,setConnectedToPeers:tn,setConnectionRelay:nn,setOnlyConnectWithKnownPeers:rn,setPeer:an,setChannel:on,setIceServers:sn,setMessage:cn,setMessageAllChunks:ln,deletePeer:dn,deleteChannel:un,deleteMessage:mn,deleteRoom:pn}=Jt.actions;var fn=Jt.reducer;const hn="wss://signaling.p2party.com/ws",yn=Ve({name:"signalingServer",initialState:{isEstablishingConnection:!1,isConnected:!1,serverUrl:hn},reducers:{startConnecting:(e,t)=>{e.isEstablishingConnection=!0,e.serverUrl=t.payload??hn},connectionEstablished:e=>{e.isConnected=!0,e.isEstablishingConnection=!1},disconnect:e=>{e.isConnected=!1,e.isEstablishingConnection=!1}}}),gn=yn.actions;var wn=yn.reducer,bn=class extends Error{issues;constructor(e){super(e[0].message),this.name="SchemaError",this.issues=e}};function In(e){return{status:e,isUninitialized:"uninitialized"===e,isLoading:"pending"===e,isSuccess:"fulfilled"===e,isError:"rejected"===e}}var kn=o;function vn(e,t){if(e===t||!(kn(e)&&kn(t)||Array.isArray(e)&&Array.isArray(t)))return t;const n=Object.keys(t),r=Object.keys(e);let a=n.length===r.length;const o=Array.isArray(t)?[]:{};for(const r of n)o[r]=vn(e[r],t[r]),a&&(a=e[r]===o[r]);return a?e:o}function Sn(e){let t=0;for(const n in e)t++;return t}var _n=e=>[].concat(...e);function xn(e){return null!=e}function En(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var Pn=()=>new Map,Cn=class{constructor(e,t=void 0){this.value=e,this.meta=t}},An=he("__rtkq/focused"),Tn=he("__rtkq/unfocused"),Rn=he("__rtkq/online"),Mn=he("__rtkq/offline");function Dn(e){return"query"===e.type}function Un(e){return"infinitequery"===e.type}function On(e){return Dn(e)||Un(e)}function Bn(e,t,n,r,a,o){return"function"==typeof e?e(t,n,r,a).filter(xn).map(qn).map(o):Array.isArray(e)?e.map(qn).map(o):[]}function qn(e){return"string"==typeof e?{type:e}:e}var jn=Symbol("forceQueryFn"),Nn=e=>"function"==typeof e[jn];var zn=class extends bn{constructor(e,t,n,r){super(e),this.value=t,this.schemaName=n,this._bqMeta=r}},Kn=(e,t)=>Array.isArray(e)?e.includes(t):!!e;async function Ln(e,t,n,r){const a=await e["~standard"].validate(t);if(a.issues)throw new zn(a.issues,t,n,r);return a.value}function Fn(e){return e}var Hn=(e={})=>({...e,[be]:!0});function Wn(e,{pages:t,pageParams:n},r){const a=t.length-1;return e.getNextPageParam(t[a],t,n[a],n,r)}function Vn(e,{pages:t,pageParams:n},r){return e.getPreviousPageParam?.(t[0],t,n[0],n,r)}function Qn(e,t,n,r){return Bn(n[e.meta.arg.endpointName][t],Me(e)?e.payload:void 0,Re(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function $n(e,t,n){const r=e[t];r&&n(r)}function Gn(e){return("arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)??e.requestId}function Xn(e,t,n){const r=e[Gn(t)];r&&n(r)}var Yn={};function Jn({reducerPath:e,queryThunk:t,mutationThunk:n,serializeQueryArgs:r,context:{endpointDefinitions:a,apiUid:o,extractRehydrationInfo:s,hasRehydrationInfo:c},assertTagType:l,config:d}){const u=he(`${e}/resetApiState`);function f(e,t,n,r){e[t.queryCacheKey]??={status:"uninitialized",endpointName:t.endpointName},$n(e,t.queryCacheKey,e=>{e.status="pending",e.requestId=n&&e.requestId?e.requestId:r.requestId,void 0!==t.originalArgs&&(e.originalArgs=t.originalArgs),e.startedTimeStamp=r.startedTimeStamp;Un(a[r.arg.endpointName])&&"direction"in t&&(e.direction=t.direction)})}function y(e,t,n,r){$n(e,t.arg.queryCacheKey,e=>{if(e.requestId!==t.requestId&&!r)return;const{merge:o}=a[t.arg.endpointName];if(e.status="fulfilled",o)if(void 0!==e.data){const{fulfilledTimeStamp:r,arg:a,baseQueryMeta:s,requestId:i}=t;let c=ee(e.data,e=>o(e,n,{arg:a.originalArgs,baseQueryMeta:s,fulfilledTimeStamp:r,requestId:i}));e.data=c}else e.data=n;else e.data=a[t.arg.endpointName].structuralSharing??1?vn(h(e.data)?(h(s=e.data)||p(15),s[m].base_):e.data,n):n;var s;delete e.error,e.fulfilledTimeStamp=t.fulfilledTimeStamp})}const g=Ve({name:`${e}/queries`,initialState:Yn,reducers:{removeQueryResult:{reducer(e,{payload:{queryCacheKey:t}}){delete e[t]},prepare:Ie()},cacheEntriesUpserted:{reducer(e,t){for(const n of t.payload){const{queryDescription:r,value:a}=n;f(e,r,!0,{arg:r,requestId:t.meta.requestId,startedTimeStamp:t.meta.timestamp}),y(e,{arg:r,requestId:t.meta.requestId,fulfilledTimeStamp:t.meta.timestamp,baseQueryMeta:{}},a,!0)}},prepare:e=>({payload:e.map(e=>{const{endpointName:t,arg:n,value:o}=e,s=a[t];return{queryDescription:{type:"query",endpointName:t,originalArgs:e.arg,queryCacheKey:r({queryArgs:n,endpointDefinition:s,endpointName:t})},value:o}}),meta:{[be]:!0,requestId:Ue(),timestamp:Date.now()}})},queryResultPatched:{reducer(e,{payload:{queryCacheKey:t,patches:n}}){$n(e,t,e=>{e.data=ne(e.data,n.concat())})},prepare:Ie()}},extraReducers(e){e.addCase(t.pending,(e,{meta:t,meta:{arg:n}})=>{f(e,n,Nn(n),t)}).addCase(t.fulfilled,(e,{meta:t,payload:n})=>{y(e,t,n,Nn(t.arg))}).addCase(t.rejected,(e,{meta:{condition:t,arg:n,requestId:r},error:a,payload:o})=>{$n(e,n.queryCacheKey,e=>{if(t);else{if(e.requestId!==r)return;e.status="rejected",e.error=o??a}})}).addMatcher(c,(e,t)=>{const{queries:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||(e[t]=r)})}}),w=Ve({name:`${e}/mutations`,initialState:Yn,reducers:{removeMutationResult:{reducer(e,{payload:t}){const n=Gn(t);n in e&&delete e[n]},prepare:Ie()}},extraReducers(e){e.addCase(n.pending,(e,{meta:t,meta:{requestId:n,arg:r,startedTimeStamp:a}})=>{r.track&&(e[Gn(t)]={requestId:n,status:"pending",endpointName:r.endpointName,startedTimeStamp:a})}).addCase(n.fulfilled,(e,{payload:t,meta:n})=>{n.arg.track&&Xn(e,n,e=>{e.requestId===n.requestId&&(e.status="fulfilled",e.data=t,e.fulfilledTimeStamp=n.fulfilledTimeStamp)})}).addCase(n.rejected,(e,{payload:t,error:n,meta:r})=>{r.arg.track&&Xn(e,r,e=>{e.requestId===r.requestId&&(e.status="rejected",e.error=t??n)})}).addMatcher(c,(e,t)=>{const{mutations:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||t===r?.requestId||(e[t]=r)})}}),b=Ve({name:`${e}/invalidation`,initialState:{tags:{},keys:{}},reducers:{updateProvidedBy:{reducer(e,t){for(const{queryCacheKey:n,providedTags:r}of t.payload){I(e,n);for(const{type:t,id:a}of r){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];r.includes(n)||r.push(n)}e.keys[n]=r}},prepare:Ie()}},extraReducers(e){e.addCase(g.actions.removeQueryResult,(e,{payload:{queryCacheKey:t}})=>{I(e,t)}).addMatcher(c,(e,t)=>{const{provided:n}=s(t);for(const[t,r]of Object.entries(n.tags??{}))for(const[a,o]of Object.entries(r)){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];for(const t of o){r.includes(t)||r.push(t),e.keys[t]=n.keys[t]}}}).addMatcher(xe(Me(t),Re(t)),(e,t)=>{k(e,[t])}).addMatcher(g.actions.cacheEntriesUpserted.match,(e,t)=>{k(e,t.payload.map(({queryDescription:e,value:t})=>({type:"UNKNOWN",payload:t,meta:{requestStatus:"fulfilled",requestId:"UNKNOWN",arg:e}})))})}});function I(e,t){const n=e.keys[t]??[];for(const r of n){const n=r.type,a=r.id??"__internal_without_id",o=e.tags[n]?.[a];o&&(e.tags[n][a]=o.filter(e=>e!==t))}delete e.keys[t]}function k(e,t){const n=t.map(e=>{const t=Qn(e,"providesTags",a,l),{queryCacheKey:n}=e.meta.arg;return{queryCacheKey:n,providedTags:t}});b.caseReducers.updateProvidedBy(e,b.actions.updateProvidedBy(n))}const v=Ve({name:`${e}/subscriptions`,initialState:Yn,reducers:{updateSubscriptionOptions(e,t){},unsubscribeQueryResult(e,t){},internal_getRTKQSubscriptions(){}}}),S=Ve({name:`${e}/internalSubscriptions`,initialState:Yn,reducers:{subscriptionsUpdated:{reducer:(e,t)=>ne(e,t.payload),prepare:Ie()}}}),_=Ve({name:`${e}/config`,initialState:{online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine,focused:"undefined"==typeof document||"hidden"!==document.visibilityState,middlewareRegistered:!1,...d},reducers:{middlewareRegistered(e,{payload:t}){e.middlewareRegistered="conflict"!==e.middlewareRegistered&&o===t||"conflict"}},extraReducers:e=>{e.addCase(Rn,e=>{e.online=!0}).addCase(Mn,e=>{e.online=!1}).addCase(An,e=>{e.focused=!0}).addCase(Tn,e=>{e.focused=!1}).addMatcher(c,e=>({...e}))}}),x=i({queries:g.reducer,mutations:w.reducer,provided:b.reducer,subscriptions:S.reducer,config:_.reducer});return{reducer:(e,t)=>x(u.match(t)?void 0:e,t),actions:{..._.actions,...g.actions,...v.actions,...S.actions,...w.actions,...b.actions,resetApiState:u}}}var Zn=Symbol.for("RTKQ/skipToken"),er={status:"uninitialized"},tr=ee(er,()=>{}),nr=ee(er,()=>{});var rr=WeakMap?new WeakMap:void 0,ar=({endpointName:e,queryArgs:t})=>{let n="";const r=rr?.get(t);if("string"==typeof r)n=r;else{const e=JSON.stringify(t,(e,t)=>t=o(t="bigint"==typeof t?{$bigint:t.toString()}:t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t);o(t)&&rr?.set(t,e),n=e}return`${e}(${n})`};function or(...e){return function(t){const n=ie(e=>t.extractRehydrationInfo?.(e,{reducerPath:t.reducerPath??"api"})),r={reducerPath:"api",keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!1,invalidationBehavior:"delayed",...t,extractRehydrationInfo:n,serializeQueryArgs(e){let n=ar;if("serializeQueryArgs"in e.endpointDefinition){const t=e.endpointDefinition.serializeQueryArgs;n=e=>{const n=t(e);return"string"==typeof n?n:ar({...e,queryArgs:n})}}else t.serializeQueryArgs&&(n=t.serializeQueryArgs);return n(e)},tagTypes:[...t.tagTypes||[]]},a={endpointDefinitions:{},batch(e){e()},apiUid:Ue(),extractRehydrationInfo:n,hasRehydrationInfo:ie(e=>null!=n(e))},o={injectEndpoints:function(e){const t=e.endpoints({query:e=>({...e,type:"query"}),mutation:e=>({...e,type:"mutation"}),infiniteQuery:e=>({...e,type:"infinitequery"})});for(const[n,r]of Object.entries(t))if(!0!==e.overrideExisting&&n in a.endpointDefinitions){if("throw"===e.overrideExisting)throw new Error(Et(39))}else{a.endpointDefinitions[n]=r;for(const e of s)e.injectEndpoint(n,r)}return o},enhanceEndpoints({addTagTypes:e,endpoints:t}){if(e)for(const t of e)r.tagTypes.includes(t)||r.tagTypes.push(t);if(t)for(const[e,n]of Object.entries(t))"function"==typeof n?n(a.endpointDefinitions[e]):Object.assign(a.endpointDefinitions[e]||{},n);return o}},s=e.map(e=>e.init(o,r,a));return o.injectEndpoints({endpoints:t.endpoints})}}function sr(e,...t){return Object.assign(e,...t)}var ir=({api:e,queryThunk:t,internalState:n,mwApi:r})=>{const a=`${e.reducerPath}/subscriptions`;let o=null,s=null;const{updateSubscriptionOptions:i,unsubscribeQueryResult:c}=e.internalActions,l=()=>n.currentSubscriptions,d={getSubscriptions:l,getSubscriptionCount:e=>{const t=l().get(e);return t?.size??0},isRequestSubscribed:(e,t)=>{const n=l();return!!n?.get(e)?.get(t)}};function u(e){return JSON.parse(JSON.stringify(Object.fromEntries([...e].map(([e,t])=>[e,Object.fromEntries(t)]))))}return(r,l)=>{if(o||(o=u(n.currentSubscriptions)),e.util.resetApiState.match(r))return o={},n.currentSubscriptions.clear(),s=null,[!0,!1];if(e.internalActions.internal_getRTKQSubscriptions.match(r))return[!1,d];const m=((n,r)=>{if(i.match(r)){const{queryCacheKey:e,requestId:t,options:a}=r.payload,o=n.get(e);return o?.has(t)&&o.set(t,a),!0}if(c.match(r)){const{queryCacheKey:e,requestId:t}=r.payload,a=n.get(e);return a&&a.delete(t),!0}if(e.internalActions.removeQueryResult.match(r))return n.delete(r.payload.queryCacheKey),!0;if(t.pending.match(r)){const{meta:{arg:e,requestId:t}}=r,a=En(n,e.queryCacheKey,Pn);return e.subscribe&&a.set(t,e.subscriptionOptions??a.get(t)??{}),!0}let a=!1;if(t.rejected.match(r)){const{meta:{condition:e,arg:t,requestId:o}}=r;if(e&&t.subscribe){const e=En(n,t.queryCacheKey,Pn);e.set(o,t.subscriptionOptions??e.get(o)??{}),a=!0}}return a})(n.currentSubscriptions,r);let p=!0;if(m){s||(s=setTimeout(()=>{const t=u(n.currentSubscriptions),[,r]=te(o,()=>t);l.next(e.internalActions.subscriptionsUpdated(r)),o=t,s=null},500));const i="string"==typeof r.type&&!!r.type.startsWith(a),c=t.rejected.match(r)&&r.meta.condition&&!!r.meta.arg.subscribe;p=!i&&!c}return[p,!1]}},cr=({reducerPath:e,api:t,queryThunk:n,context:r,internalState:a,selectors:{selectQueryEntry:o,selectConfig:s},getRunningQueryThunk:i,mwApi:c})=>{const{removeQueryResult:l,unsubscribeQueryResult:d,cacheEntriesUpserted:u}=t.internalActions,m=a.runningQueries.get(c.dispatch),p=xe(d.match,n.fulfilled,n.rejected,u.match);function f(e){const t=a.currentSubscriptions.get(e);if(!t)return!1;return t.size>0||void 0!==m?.[e]}const h={};function y(e,t,n){const r=t.getState();for(const a of e){const e=o(r,a);e?.endpointName&&g(a,e.endpointName,t,n)}}function g(e,t,n,a){const s=r.endpointDefinitions[t],c=s?.keepUnusedDataFor??a.keepUnusedDataFor;if(c===1/0)return;const d=Math.max(0,Math.min(c,2147482.647));if(!f(e)){const t=h[e];t&&clearTimeout(t),h[e]=setTimeout(()=>{if(!f(e)){const t=o(n.getState(),e);if(t?.endpointName){const e=n.dispatch(i(t.endpointName,t.originalArgs));e?.abort()}n.dispatch(l({queryCacheKey:e}))}delete h[e]},1e3*d)}}return(e,n,a)=>{const o=n.getState(),i=s(o);if(p(e)){let t;if(u.match(e))t=e.payload.map(e=>e.queryDescription.queryCacheKey);else{const{queryCacheKey:n}=d.match(e)?e.payload:e.meta.arg;t=[n]}y(t,n,i)}if(t.util.resetApiState.match(e))for(const[e,t]of Object.entries(h))t&&clearTimeout(t),delete h[e];if(r.hasRehydrationInfo(e)){const{queries:t}=r.extractRehydrationInfo(e);y(Object.keys(t),n,i)}}},lr=new Error("Promise never resolved before cacheEntryRemoved."),dr=({api:e,reducerPath:t,context:n,queryThunk:r,mutationThunk:a,internalState:o,selectors:{selectQueryEntry:s,selectApiState:i}})=>{const c=De(r),l=De(a),d=Me(r,a),u={};function m(e,t,n){const r=u[e];r?.valueResolved&&(r.valueResolved({data:t,meta:n}),delete r.valueResolved)}function p(e){const t=u[e];t&&(delete u[e],t.cacheEntryRemoved())}function f(t,r,a,o,s){const i=n.endpointDefinitions[t],c=i?.onCacheEntryAdded;if(!c)return;const l={},d=new Promise(e=>{l.cacheEntryRemoved=e}),m=Promise.race([new Promise(e=>{l.valueResolved=e}),d.then(()=>{throw lr})]);m.catch(()=>{}),u[a]=l;const p=e.endpoints[t].select(On(i)?r:a),f=o.dispatch((e,t,n)=>n),h={...o,getCacheEntry:()=>p(o.getState()),requestId:s,extra:f,updateCachedData:On(i)?n=>o.dispatch(e.util.updateQueryData(t,r,n)):void 0,cacheDataLoaded:m,cacheEntryRemoved:d},y=c(r,h);Promise.resolve(y).catch(e=>{if(e!==lr)throw e})}return(n,o,i)=>{const h=function(t){if(c(t))return t.meta.arg.queryCacheKey;if(l(t))return t.meta.arg.fixedCacheKey??t.meta.requestId;return e.internalActions.removeQueryResult.match(t)?t.payload.queryCacheKey:e.internalActions.removeMutationResult.match(t)?Gn(t.payload):""}(n);function y(e,t,n,r){const a=s(i,t),c=s(o.getState(),t);!a&&c&&f(e,r,t,o,n)}if(r.pending.match(n))y(n.meta.arg.endpointName,h,n.meta.requestId,n.meta.arg.originalArgs);else if(e.internalActions.cacheEntriesUpserted.match(n))for(const{queryDescription:e,value:t}of n.payload){const{endpointName:r,originalArgs:a,queryCacheKey:o}=e;y(r,o,n.meta.requestId,a),m(o,t,{})}else if(a.pending.match(n)){o.getState()[t].mutations[h]&&f(n.meta.arg.endpointName,n.meta.arg.originalArgs,h,o,n.meta.requestId)}else if(d(n))m(h,n.payload,n.meta.baseQueryMeta);else if(e.internalActions.removeQueryResult.match(n)||e.internalActions.removeMutationResult.match(n))p(h);else if(e.util.resetApiState.match(n))for(const e of Object.keys(u))p(e)}},ur=({api:e,context:{apiUid:t},reducerPath:n})=>(n,r)=>{e.util.resetApiState.match(n)&&r.dispatch(e.internalActions.middlewareRegistered(t))},mr=({reducerPath:e,context:t,context:{endpointDefinitions:n},mutationThunk:r,queryThunk:a,api:o,assertTagType:s,refetchQuery:i,internalState:c})=>{const{removeQueryResult:l}=o.internalActions,d=xe(Me(r),Re(r)),u=xe(Me(r,a),Te(r,a));let m=[];function p(n,r){const a=r.getState(),s=a[e];if(m.push(...n),"delayed"===s.config.invalidationBehavior&&function(e){const{queries:t,mutations:n}=e;for(const e of[t,n])for(const t in e)if("pending"===e[t]?.status)return!0;return!1}(s))return;const d=m;if(m=[],0===d.length)return;const u=o.util.selectInvalidatedBy(a,d);t.batch(()=>{const e=Array.from(u.values());for(const{queryCacheKey:t}of e){const e=s.queries[t],n=En(c.currentSubscriptions,t,Pn);e&&(0===n.size?r.dispatch(l({queryCacheKey:t})):"uninitialized"!==e.status&&r.dispatch(i(e)))}})}return(e,t)=>{d(e)?p(Qn(e,"invalidatesTags",n,s),t):u(e)?p([],t):o.util.invalidateTags.match(e)&&p(Bn(e.payload,void 0,void 0,void 0,void 0,s),t)}},pr=({reducerPath:e,queryThunk:t,api:n,refetchQuery:r,internalState:a})=>{const{currentPolls:o,currentSubscriptions:s}=a,i=new Set;let c=null;function l(e,t){i.add(e),c||(c=setTimeout(()=>{for(const e of i)u({queryCacheKey:e},t);i.clear(),c=null},0))}function d({queryCacheKey:t},n){const a=n.getState()[e],i=a.queries[t],c=s.get(t);if(!i||"uninitialized"===i.status)return;const{lowestPollingInterval:l,skipPollingIfUnfocused:u}=p(c);if(!Number.isFinite(l))return;const m=o.get(t);m?.timeout&&(clearTimeout(m.timeout),m.timeout=void 0);const f=Date.now()+l;o.set(t,{nextPollTimestamp:f,pollingInterval:l,timeout:setTimeout(()=>{!a.config.focused&&u||n.dispatch(r(i)),d({queryCacheKey:t},n)},l)})}function u({queryCacheKey:t},n){const r=n.getState()[e].queries[t],a=s.get(t);if(!r||"uninitialized"===r.status)return;const{lowestPollingInterval:i}=p(a);if(!Number.isFinite(i))return void m(t);const c=o.get(t),l=Date.now()+i;(!c||l<c.nextPollTimestamp)&&d({queryCacheKey:t},n)}function m(e){const t=o.get(e);t?.timeout&&clearTimeout(t.timeout),o.delete(e)}function p(e=new Map){let t=!1,n=Number.POSITIVE_INFINITY;for(const r of e.values())r.pollingInterval&&(n=Math.min(r.pollingInterval,n),t=r.skipPollingIfUnfocused||t);return{lowestPollingInterval:n,skipPollingIfUnfocused:t}}return(e,r)=>{(n.internalActions.updateSubscriptionOptions.match(e)||n.internalActions.unsubscribeQueryResult.match(e))&&l(e.payload.queryCacheKey,r),(t.pending.match(e)||t.rejected.match(e)&&e.meta.condition)&&l(e.meta.arg.queryCacheKey,r),(t.fulfilled.match(e)||t.rejected.match(e)&&!e.meta.condition)&&d(e.meta.arg,r),n.util.resetApiState.match(e)&&(!function(){for(const e of o.keys())m(e)}(),c&&(clearTimeout(c),c=null),i.clear())}},fr=({api:e,context:t,queryThunk:n,mutationThunk:r})=>{const a=Ae(n,r),o=Te(n,r),s=Me(n,r),i={};return(n,r)=>{if(a(n)){const{requestId:a,arg:{endpointName:o,originalArgs:s}}=n.meta,c=t.endpointDefinitions[o],l=c?.onQueryStarted;if(l){const t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});n.catch(()=>{}),i[a]=t;const d=e.endpoints[o].select(On(c)?s:a),u=r.dispatch((e,t,n)=>n),m={...r,getCacheEntry:()=>d(r.getState()),requestId:a,extra:u,updateCachedData:On(c)?t=>r.dispatch(e.util.updateQueryData(o,s,t)):void 0,queryFulfilled:n};l(s,m)}}else if(s(n)){const{requestId:e,baseQueryMeta:t}=n.meta;i[e]?.resolve({data:n.payload,meta:t}),delete i[e]}else if(o(n)){const{requestId:e,rejectedWithValue:t,baseQueryMeta:r}=n.meta;i[e]?.reject({error:n.payload??n.error,isUnhandledError:!t,meta:r}),delete i[e]}}};function hr(e){const{reducerPath:t,queryThunk:n,api:r,context:a,internalState:o}=e,{apiUid:s}=a,i={invalidateTags:he(`${t}/invalidateTags`)},c=e=>e.type.startsWith(`${t}/`),d=[ur,cr,mr,pr,dr,fr];return{middleware:n=>{let i=!1;const m={...e,internalState:o,refetchQuery:u,isThisApiSliceAction:c,mwApi:n},p=d.map(e=>e(m)),f=ir(m),h=(({reducerPath:e,context:t,api:n,refetchQuery:r,internalState:a})=>{const{removeQueryResult:o}=n.internalActions;function s(n,s){const i=n.getState()[e],c=i.queries,l=a.currentSubscriptions;t.batch(()=>{for(const e of l.keys()){const t=c[e],a=l.get(e);if(!a||!t)continue;const d=[...a.values()];(d.some(e=>!0===e[s])||d.every(e=>void 0===e[s])&&i.config[s])&&(0===a.size?n.dispatch(o({queryCacheKey:e})):"uninitialized"!==t.status&&n.dispatch(r(t)))}})}return(e,t)=>{An.match(e)&&s(t,"refetchOnFocus"),Rn.match(e)&&s(t,"refetchOnReconnect")}})(m);return e=>o=>{if(!l(o))return e(o);i||(i=!0,n.dispatch(r.internalActions.middlewareRegistered(s)));const d={...n,next:e},u=n.getState(),[m,y]=f(o,d,u);let g;if(g=m?e(o):y,n.getState()[t]&&(h(o,d,u),c(o)||a.hasRehydrationInfo(o)))for(const e of p)e(o,d,u);return g}},actions:i};function u(t){return e.api.endpoints[t.endpointName].initiate(t.originalArgs,{subscribe:!1,forceRefetch:!0})}}var yr=Symbol(),gr=or((({createSelector:e=le}={})=>({name:yr,init(t,{baseQuery:n,tagTypes:r,reducerPath:a,serializeQueryArgs:o,keepUnusedDataFor:s,refetchOnMountOrArgChange:i,refetchOnFocus:c,refetchOnReconnect:l,invalidationBehavior:d,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:p},f){J();const h=e=>e;Object.assign(t,{reducerPath:a,endpoints:{},internalActions:{onOnline:Rn,onOffline:Mn,onFocus:An,onFocusLost:Tn},util:{}});const g=function({serializeQueryArgs:e,reducerPath:t,createSelector:n}){const r=e=>tr,a=e=>nr;return{buildQuerySelector:function(e,t){return l(e,t,o)},buildInfiniteQuerySelector:function(e,t){const{infiniteQueryOptions:n}=t;return l(e,t,function(e){const t={...e,...In(e.status)},{isLoading:r,isError:a,direction:o}=t,s="forward"===o,i="backward"===o;return{...t,hasNextPage:d(n,t.data,t.originalArgs),hasPreviousPage:u(n,t.data,t.originalArgs),isFetchingNextPage:r&&s,isFetchingPreviousPage:r&&i,isFetchNextPageError:a&&s,isFetchPreviousPageError:a&&i}})},buildMutationSelector:function(){return e=>{let t;return t="object"==typeof e?Gn(e)??Zn:e,n(t===Zn?a:e=>s(e)?.mutations?.[t]??nr,o)}},selectInvalidatedBy:function(e,n){const r=e[t],a=new Set;for(const e of n.filter(xn).map(qn)){const t=r.provided.tags[e.type];if(!t)continue;let n=(void 0!==e.id?t[e.id]:_n(Object.values(t)))??[];for(const e of n)a.add(e)}return _n(Array.from(a.values()).map(e=>{const t=r.queries[e];return t?[{queryCacheKey:e,endpointName:t.endpointName,originalArgs:t.originalArgs}]:[]}))},selectCachedArgsForQuery:function(e,t){return Object.values(i(e)).filter(e=>e?.endpointName===t&&"uninitialized"!==e.status).map(e=>e.originalArgs)},selectApiState:s,selectQueries:i,selectMutations:function(e){return s(e)?.mutations},selectQueryEntry:c,selectConfig:function(e){return s(e)?.config}};function o(e){return{...e,...In(e.status)}}function s(e){return e[t]}function i(e){return s(e)?.queries}function c(e,t){return i(e)?.[t]}function l(t,a,o){return s=>{if(s===Zn)return n(r,o);const i=e({queryArgs:s,endpointDefinition:a,endpointName:t});return n(e=>c(e,i)??tr,o)}}function d(e,t,n){return!!t&&null!=Wn(e,t,n)}function u(e,t,n){return!(!t||!e.getPreviousPageParam)&&null!=Vn(e,t,n)}}({serializeQueryArgs:o,reducerPath:a,createSelector:e}),{selectInvalidatedBy:w,selectCachedArgsForQuery:b,buildQuerySelector:I,buildInfiniteQuerySelector:k,buildMutationSelector:v}=g;sr(t.util,{selectInvalidatedBy:w,selectCachedArgsForQuery:b});const{queryThunk:S,infiniteQueryThunk:_,mutationThunk:x,patchQueryData:E,updateQueryData:P,upsertQueryData:C,prefetch:A,buildMatchThunkActions:T}=function({reducerPath:e,baseQuery:t,context:{endpointDefinitions:n},serializeQueryArgs:r,api:a,assertTagType:o,selectors:s,onSchemaFailure:i,catchSchemaFailure:c,skipSchemaValidation:l}){function d(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}function u(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}const m=(e,t)=>e.query&&e[t]?e[t]:Fn,p=async(e,{signal:r,abort:a,rejectWithValue:o,fulfillWithValue:p,dispatch:h,getState:y,extra:g})=>{const w=n[e.endpointName],{metaSchema:b,skipSchemaValidation:I=l}=w;try{let k=Fn;const v={signal:r,abort:a,dispatch:h,getState:y,extra:g,endpoint:e.endpointName,type:e.type,forced:"query"===e.type?f(e,y()):void 0,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0},S="query"===e.type?e[jn]:void 0;let _;const x=async(t,n,r,a)=>{if(null==n&&t.pages.length)return Promise.resolve({data:t});const o={queryArg:e.originalArgs,pageParam:n},s=await E(o),i=a?d:u;return{data:{pages:i(t.pages,s.data,r),pageParams:i(t.pageParams,n,r)},meta:s.meta}};async function E(e){let n;const{extraOptions:r,argSchema:a,rawResponseSchema:o,responseSchema:s}=w;if(a&&!Kn(I,"arg")&&(e=await Ln(a,e,"argSchema",{})),S?n=S():w.query?(k=m(w,"transformResponse"),n=await t(w.query(e),v,r)):n=await w.queryFn(e,v,r,e=>t(e,v,r)),n.error)throw new Cn(n.error,n.meta);let{data:i}=n;o&&!Kn(I,"rawResponse")&&(i=await Ln(o,n.data,"rawResponseSchema",n.meta));let c=await k(i,n.meta,e);return s&&!Kn(I,"response")&&(c=await Ln(s,c,"responseSchema",n.meta)),{...n,data:c}}if("query"===e.type&&"infiniteQueryOptions"in w){const{infiniteQueryOptions:P}=w,{maxPages:C=1/0}=P;let A;const T={pages:[],pageParams:[]},R=s.selectQueryEntry(y(),e.queryCacheKey)?.data,M=f(e,y())&&!e.direction||!R?T:R;if("direction"in e&&e.direction&&M.pages.length){const D="backward"===e.direction,U=(D?Vn:Wn)(P,M,e.originalArgs);A=await x(M,U,C,D)}else{const{initialPageParam:O=P.initialPageParam}=e,B=R?.pageParams??[],q=B[0]??O,j=B.length;A=await x(M,q,C),S&&(A={data:A.data.pages[0]});for(let N=1;N<j;N++){const z=Wn(P,A.data,e.originalArgs);A=await x(A.data,z,C)}}_=A}else _=await E(e.originalArgs);return b&&!Kn(I,"meta")&&_.meta&&(_.meta=await Ln(b,_.meta,"metaSchema",_.meta)),p(_.data,Hn({fulfilledTimeStamp:Date.now(),baseQueryMeta:_.meta}))}catch(K){let L=K;if(L instanceof Cn){let F=m(w,"transformErrorResponse");const{rawErrorResponseSchema:H,errorResponseSchema:W}=w;let{value:V,meta:Q}=L;try{H&&!Kn(I,"rawErrorResponse")&&(V=await Ln(H,V,"rawErrorResponseSchema",Q)),b&&!Kn(I,"meta")&&(Q=await Ln(b,Q,"metaSchema",Q));let $=await F(V,Q,e.originalArgs);return W&&!Kn(I,"errorResponse")&&($=await Ln(W,$,"errorResponseSchema",Q)),o($,Hn({baseQueryMeta:Q}))}catch(G){L=G}}try{if(L instanceof zn){const X={endpoint:e.endpointName,arg:e.originalArgs,type:e.type,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0};w.onSchemaFailure?.(L,X),i?.(L,X);const{catchSchemaFailure:Y=c}=w;if(Y)return o(Y(L,X),Hn({baseQueryMeta:L._bqMeta}))}}catch(J){L=J}throw console.error(L),L}};function f(e,t){const n=s.selectQueryEntry(t,e.queryCacheKey),r=s.selectConfig(t).refetchOnMountOrArgChange,a=n?.fulfilledTimeStamp,o=e.forceRefetch??(e.subscribe&&r);return!!o&&(!0===o||(Number(new Date)-Number(a))/1e3>=o)}const h=()=>ze(`${e}/executeQuery`,p,{getPendingMeta({arg:e}){const t=n[e.endpointName];return Hn({startedTimeStamp:Date.now(),...Un(t)?{direction:e.direction}:{}})},condition(e,{getState:t}){const r=t(),a=s.selectQueryEntry(r,e.queryCacheKey),o=a?.fulfilledTimeStamp,i=e.originalArgs,c=a?.originalArgs,l=n[e.endpointName],d=e.direction;return!(!Nn(e)&&("pending"===a?.status||!f(e,r)&&(!Dn(l)||!l?.forceRefetch?.({currentArg:i,previousArg:c,endpointState:a,state:r}))&&o&&!d))},dispatchConditionRejection:!0}),g=h(),w=h(),b=ze(`${e}/executeMutation`,p,{getPendingMeta:()=>Hn({startedTimeStamp:Date.now()})});function I(e){return t=>t?.meta?.arg?.endpointName===e}return{queryThunk:g,mutationThunk:b,infiniteQueryThunk:w,prefetch:(e,t,n)=>(r,o)=>{const s=(e=>"force"in e)(n)&&n.force,i=(e=>"ifOlderThan"in e)(n)&&n.ifOlderThan,c=(n=!0)=>{const r={forceRefetch:n,isPrefetch:!0};return a.endpoints[e].initiate(t,r)},l=a.endpoints[e].select(t)(o());if(s)r(c());else if(i){const e=l?.fulfilledTimeStamp;if(!e)return void r(c());(Number(new Date)-Number(new Date(e)))/1e3>=i&&r(c())}else r(c(!1))},updateQueryData:(e,t,n,r=!0)=>(o,s)=>{const i=a.endpoints[e].select(t)(s()),c={patches:[],inversePatches:[],undo:()=>o(a.util.patchQueryData(e,t,c.inversePatches,r))};if("uninitialized"===i.status)return c;let l;if("data"in i)if(y(i.data)){const[e,t,r]=te(i.data,n);c.patches.push(...t),c.inversePatches.push(...r),l=e}else l=n(i.data),c.patches.push({op:"replace",path:[],value:l}),c.inversePatches.push({op:"replace",path:[],value:i.data});return 0===c.patches.length||o(a.util.patchQueryData(e,t,c.patches,r)),c},upsertQueryData:(e,t,n)=>r=>r(a.endpoints[e].initiate(t,{subscribe:!1,forceRefetch:!0,[jn]:()=>({data:n})})),patchQueryData:(e,t,s,i)=>(c,l)=>{const d=n[e],u=r({queryArgs:t,endpointDefinition:d,endpointName:e});if(c(a.internalActions.queryResultPatched({queryCacheKey:u,patches:s})),!i)return;const m=a.endpoints[e].select(t)(l()),p=Bn(d.providesTags,m.data,void 0,t,{},o);c(a.internalActions.updateProvidedBy([{queryCacheKey:u,providedTags:p}]))},buildMatchThunkActions:function(e,t){return{matchPending:Ee(Ae(e),I(t)),matchFulfilled:Ee(Me(e),I(t)),matchRejected:Ee(Te(e),I(t))}}}}({baseQuery:n,reducerPath:a,context:f,api:t,serializeQueryArgs:o,assertTagType:h,selectors:g,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:p}),{reducer:R,actions:M}=Jn({context:f,queryThunk:S,mutationThunk:x,serializeQueryArgs:o,reducerPath:a,assertTagType:h,config:{refetchOnFocus:c,refetchOnReconnect:l,refetchOnMountOrArgChange:i,keepUnusedDataFor:s,reducerPath:a,invalidationBehavior:d}});sr(t.util,{patchQueryData:E,updateQueryData:P,upsertQueryData:C,prefetch:A,resetApiState:M.resetApiState,upsertQueryEntries:M.cacheEntriesUpserted}),sr(t.internalActions,M);const D={currentSubscriptions:new Map,currentPolls:new Map,runningQueries:new Map,runningMutations:new Map},{buildInitiateQuery:U,buildInitiateInfiniteQuery:O,buildInitiateMutation:B,getRunningMutationThunk:q,getRunningMutationsThunk:j,getRunningQueriesThunk:N,getRunningQueryThunk:z}=function({serializeQueryArgs:e,queryThunk:t,infiniteQueryThunk:n,mutationThunk:r,api:a,context:o,internalState:s}){const{runningQueries:i,runningMutations:c}=s,{unsubscribeQueryResult:l,removeMutationResult:d,updateSubscriptionOptions:u}=a.internalActions;return{buildInitiateQuery:function(e,t){return m(e,t)},buildInitiateInfiniteQuery:function(e,t){return m(e,t)},buildInitiateMutation:function(e){return(t,{track:n=!0,fixedCacheKey:a}={})=>(o,s)=>{const i=r({type:"mutation",endpointName:e,originalArgs:t,track:n,fixedCacheKey:a}),l=o(i),{requestId:u,abort:m,unwrap:p}=l,f=(h=e=>({error:e}),l.unwrap().then(e=>({data:e})).catch(h));var h;const y=Object.assign(f,{arg:l.arg,requestId:u,abort:m,unwrap:p,reset:()=>{o(d({requestId:u,fixedCacheKey:a}))}}),g=c.get(o)||{};return c.set(o,g),g[u]=y,y.then(()=>{delete g[u],Sn(g)||c.delete(o)}),a&&(g[a]=y,y.then(()=>{g[a]===y&&(delete g[a],Sn(g)||c.delete(o))})),y}},getRunningQueryThunk:function(t,n){return r=>{const a=o.endpointDefinitions[t],s=e({queryArgs:n,endpointDefinition:a,endpointName:t});return i.get(r)?.[s]}},getRunningMutationThunk:function(e,t){return e=>c.get(e)?.[t]},getRunningQueriesThunk:function(){return e=>Object.values(i.get(e)||{}).filter(xn)},getRunningMutationsThunk:function(){return e=>Object.values(c.get(e)||{}).filter(xn)}};function m(r,o){const s=(c,{subscribe:d=!0,forceRefetch:m,subscriptionOptions:p,[jn]:f,...h}={})=>(y,g)=>{const w=e({queryArgs:c,endpointDefinition:o,endpointName:r});let b;const I={...h,type:"query",subscribe:d,forceRefetch:m,subscriptionOptions:p,endpointName:r,originalArgs:c,queryCacheKey:w,[jn]:f};if(Dn(o))b=t(I);else{const{direction:e,initialPageParam:t}=h;b=n({...I,direction:e,initialPageParam:t})}const k=a.endpoints[r].select(c),v=y(b),S=k(g()),{requestId:_,abort:x}=v,E=S.requestId!==_,P=i.get(y)?.[w],C=()=>k(g()),A=Object.assign(f?v.then(C):E&&!P?Promise.resolve(S):Promise.all([P,v]).then(C),{arg:c,requestId:_,subscriptionOptions:p,queryCacheKey:w,abort:x,async unwrap(){const e=await A;if(e.isError)throw e.error;return e.data},refetch:()=>y(s(c,{subscribe:!1,forceRefetch:!0})),unsubscribe(){d&&y(l({queryCacheKey:w,requestId:_}))},updateSubscriptionOptions(e){A.subscriptionOptions=e,y(u({endpointName:r,requestId:_,queryCacheKey:w,options:e}))}});if(!P&&!E&&!f){const e=(R=y,M={},(T=i).has(R)?T.get(R):T.set(R,M).get(R));e[w]=A,A.then(()=>{delete e[w],Sn(e)||i.delete(y)})}var T,R,M;return A};return s}}({queryThunk:S,mutationThunk:x,infiniteQueryThunk:_,api:t,serializeQueryArgs:o,context:f,internalState:D});sr(t.util,{getRunningMutationThunk:q,getRunningMutationsThunk:j,getRunningQueryThunk:z,getRunningQueriesThunk:N});const{middleware:K,actions:L}=hr({reducerPath:a,context:f,queryThunk:S,mutationThunk:x,infiniteQueryThunk:_,api:t,assertTagType:h,selectors:g,getRunningQueryThunk:z,internalState:D});return sr(t.util,L),sr(t,{reducer:R,middleware:K}),{name:yr,injectEndpoint(e,n){const r=t,a=r.endpoints[e]??={};Dn(n)&&sr(a,{name:e,select:I(e,n),initiate:U(e,n)},T(S,e)),"mutation"===n.type&&sr(a,{name:e,select:v(),initiate:B(e)},T(x,e)),Un(n)&&sr(a,{name:e,select:k(e,n),initiate:O(e,n)},T(S,e))}}}}))());const wr=new Blob(['const e=(e,t)=>t.some(t=>e instanceof t);let t,a;const n=new WeakMap,o=new WeakMap,r=new WeakMap;let s={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return n.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return d(e[t])},set:(e,t,a)=>(e[t]=a,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function i(e){s=e(s)}function c(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(l(this),t),d(this.request)}:function(...t){return d(e.apply(l(this),t))}}function u(a){return"function"==typeof a?c(a):(a instanceof IDBTransaction&&function(e){if(n.has(e))return;const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",r),e.removeEventListener("abort",r)},o=()=>{t(),n()},r=()=>{a(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",r),e.addEventListener("abort",r)});n.set(e,t)}(a),e(a,t||(t=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(a,s):a)}function d(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",r)},o=()=>{t(d(e.result)),n()},r=()=>{a(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",r)});return r.set(t,e),t}(e);if(o.has(e))return o.get(e);const t=u(e);return t!==e&&(o.set(e,t),r.set(t,e)),t}const l=e=>r.get(e);const w=["get","getKey","getAll","getAllKeys","count"],h=["put","add","delete","clear"],m=new Map;function g(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(m.get(t))return m.get(t);const a=t.replace(/FromIndex$/,""),n=t!==a,o=h.includes(a);if(!(a in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!w.includes(a))return;const r=async function(e,...t){const r=this.transaction(e,o?"readwrite":"readonly");let s=r.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[a](...t),o&&r.done]))[0]};return m.set(t,r),r}i(e=>({...e,get:(t,a,n)=>g(t,a)||e.get(t,a,n),has:(t,a)=>!!g(t,a)||e.has(t,a)}));const k=["continue","continuePrimaryKey","advance"],y={},b=new WeakMap,f=new WeakMap,I={get(e,t){if(!k.includes(t))return e[t];let a=y[t];return a||(a=y[t]=function(...e){b.set(this,f.get(this)[t](...e))}),a}};async function*x(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const a=new Proxy(t,I);for(f.set(a,t),r.set(a,l(t));t;)yield a,t=await(b.get(a)||t.continue()),b.delete(a)}function p(t,a){return a===Symbol.asyncIterator&&e(t,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===a&&e(t,[IDBIndex,IDBObjectStore])}i(e=>({...e,get:(t,a,n)=>p(t,a)?x:e.get(t,a,n),has:(t,a)=>p(t,a)||e.has(t,a)}));const D=64*Uint8Array.BYTES_PER_ELEMENT,B="p2party";async function S(){return function(e,t,{blocked:a,upgrade:n,blocking:o,terminated:r}={}){const s=indexedDB.open(e,t),i=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),a&&s.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),i.then(e=>{r&&e.addEventListener("close",()=>r()),o&&e.addEventListener("versionchange",e=>o(e.oldVersion,e.newVersion,e))}).catch(()=>{}),i}(B,16,{upgrade(e,t,a,n){if(e.objectStoreNames.contains("addressBook")){const e=n.objectStore("addressBook");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("addressBook",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("blacklist")){const e=n.objectStore("blacklist");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("blacklist",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("uniqueRoom")){const e=n.objectStore("uniqueRoom");e.indexNames.contains("roomUrl")||e.createIndex("roomUrl","roomUrl",{unique:!0}),e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!0})}else{const t=e.createObjectStore("uniqueRoom",{keyPath:["roomId"]});t.createIndex("roomUrl","roomUrl",{unique:!0}),t.createIndex("roomId","roomId",{unique:!0})}if(e.objectStoreNames.contains("messageData")){const e=n.objectStore("messageData");e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!0}),e.indexNames.contains("fromPeerId")||e.createIndex("fromPeerId","fromPeerId",{unique:!1})}else{const t=e.createObjectStore("messageData",{keyPath:["timestamp","roomId","merkleRoot"]});t.createIndex("roomId","roomId",{unique:!1}),t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!0}),t.createIndex("fromPeerId","fromPeerId",{unique:!1})}if(e.objectStoreNames.contains("chunks")){const e=n.objectStore("chunks");e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1})}else{const t=e.createObjectStore("chunks",{keyPath:["merkleRoot","chunkIndex"]});t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("hash","hash",{unique:!1})}if(e.objectStoreNames.contains("newChunks")){const e=n.objectStore("newChunks");e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("realChunkHash")||e.createIndex("realChunkHash","realChunkHash",{unique:!0})}else{const t=e.createObjectStore("newChunks",{keyPath:["hash","chunkIndex"]});t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("realChunkHash","realChunkHash",{unique:!0})}if(e.objectStoreNames.contains("sendQueue")){const e=n.objectStore("sendQueue");e.indexNames.contains("labelPeer")||e.createIndex("labelPeer",["label","toPeerId"],{unique:!1})}else{e.createObjectStore("sendQueue",{keyPath:["position","label","toPeerId"]}).createIndex("labelPeer",["label","toPeerId"],{unique:!1})}}})}async function R(){await function(e,{blocked:t}={}){const a=indexedDB.deleteDatabase(e);return t&&a.addEventListener("blocked",e=>t(e.oldVersion,e)),d(a).then(()=>{})}(B,{blocked(){console.error("DB deletion BLOCKED")}})}onmessage=async e=>{const t=e.data,{id:a,method:n}=t;try{let e;switch(n){case"getDBAddressBookEntry":e=await async function(e,t){if(!e&&!t)return;if(e&&e.length<10&&!t)return;if(t&&64!==t.length&&!e)return;const a=await S();try{const n=a.transaction("addressBook","readonly"),o=e?n.objectStore("addressBook").index("peerId"):n.objectStore("addressBook").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),r?{username:r.username,peerId:r.peerId,peerPublicKey:r.peerPublicKey}:void 0}catch(e){return void a.close()}}(...t.args);break;case"getAllDBAddressBookEntries":e=await async function(){try{const e=await S(),t=await e.getAll("addressBook");return e.close(),t}catch(e){return[]}}(...t.args);break;case"setDBAddressBookEntry":e=await async function(e,t,a){try{const n=await S(),o=n.transaction(["addressBook"],"readwrite"),r=o.objectStore("addressBook"),s=r.index("peerId"),i=r.index("peerPublicKey"),c=await s.get(t),u=await i.get(a);(!c&&!u||c&&!u||!c&&u)&&await r.put({username:e,peerId:t,peerPublicKey:a,dateAdded:Date.now()}),await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBAddressBookEntry":e=await async function(e,t,a){const n=!e||0===e.length,o=!t||t.length<10,r=!a||64!==a.length;if(n&&o&&r)throw new Error("Cannot delete address book with no data");let s=t??"";try{const n=await S(),i=n.transaction("addressBook","readwrite"),c=i.objectStore("addressBook");if(o)if(r){const t=c.index("username"),a=await t.getKey(e);if(a){const n=await t.get(e);s=n?.peerId??"",await c.delete(a)}}else{const e=c.index("peerPublicKey"),t=await e.getKey(a);if(t){const n=await e.get(a);s=n?.peerId??"",await c.delete(t)}}else{const e=c.index("peerId"),a=await e.getKey(t);a&&await c.delete(a)}await i.done,n.close()}catch{}return s}(...t.args);break;case"getDBPeerIsBlacklisted":e=await async function(e,t){if(!e&&!t)return!1;if(e&&e.length<10&&!t)return!1;if(t&&64!==t.length&&!e)return!1;try{const a=await S(),n=a.transaction("blacklist","readonly"),o=e?n.objectStore("blacklist").index("peerId"):n.objectStore("blacklist").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),!!r}catch(e){return!1}}(...t.args);break;case"getAllDBBlacklisted":e=await async function(){const e=await S();try{const t=await e.getAll("blacklist");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBPeerInBlacklist":e=await async function(e,t){try{const a=await S(),n=a.transaction(["blacklist"],"readwrite"),o=n.objectStore("blacklist"),r=o.index("peerId"),s=o.index("peerPublicKey"),i=await r.get(e),c=await s.get(t);(!i&&!c||i&&!c||!i&&c)&&await o.put({peerId:e,peerPublicKey:t,dateAdded:Date.now()}),await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBPeerFromBlacklist":e=await async function(e,t){const a=!e||e.length<10,n=!t||64!==t.length;if(a&&n)throw new Error("Cannot delete blacklisted with no data");try{const n=await S(),o=n.transaction("blacklist","readwrite"),r=o.objectStore("blacklist");if(a){const e=r.index("peerPublicKey"),a=await e.getKey(t);a&&await r.delete(a)}else{const t=r.index("peerId"),a=await t.getKey(e);a&&await r.delete(a)}await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"getAllDBUniqueRooms":e=await async function(){const e=await S();try{const t=await e.getAll("uniqueRoom");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBUniqueRoom":e=await async function(e,t){try{const a=await S(),n=a.transaction(["uniqueRoom"],"readwrite"),o=n.objectStore("uniqueRoom"),r=o.index("roomUrl"),s=o.index("roomId"),i=await r.get(e),c=await s.get(t);if(!i&&!c){const a=Date.now();await o.put({roomId:t,roomUrl:e,messageCount:0,lastMessageMerkleRoot:"",createdAt:a,updatedAt:a})}await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"getDBMessageData":e=await async function(e,t){try{const a=await S(),n=a.transaction(["messageData"],"readonly"),o=n.objectStore("messageData"),r=o.index("merkleRoot"),s=o.index("hash");if(e&&e.length===2*D){const o=await r.get(e);if(o)return await n.done,a.close(),o;if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}catch(e){return void console.error(e)}}(...t.args);break;case"getDBRoomMessageData":e=await async function(e){const t=await S(),a=await t.getAllFromIndex("messageData","roomId",e);t.close();const n=a.length,o=[];for(let t=0;t<n;t++)o.push({roomId:e,merkleRoot:a[t].merkleRoot,hash:a[t].hash,fromPeerId:a[t].fromPeerId,filename:a[t].filename,messageType:a[t].messageType,savedSize:a[t].savedSize,totalSize:a[t].totalSize,channelLabel:a[t].channelLabel,timestamp:a[t].timestamp});return o}(...t.args);break;case"setDBRoomMessageData":e=await async function(e,t,a,n,o,r,s,i,c,u){try{const d=await S(),l=d.transaction(["messageData","uniqueRoom"],"readwrite"),w=l.objectStore("messageData"),h=await w.index("merkleRoot").get(t),m=h?.savedSize??0;try{await w.put({roomId:e,timestamp:u,merkleRoot:t,hash:a,fromPeerId:n,filename:i,messageType:s,savedSize:m+o<=r?m+o:r,totalSize:r,channelLabel:c})}catch(e){throw await l.done,d.close(),e}const g=l.objectStore("uniqueRoom"),k=await g.index("roomId").get(e);if(k&&k.lastMessageMerkleRoot!==t)try{await g.put({...k,lastMessageMerkleRoot:t,messageCount:k.messageCount+1,updatedAt:u})}catch(e){throw await l.done,d.close(),e}await l.done,d.close()}catch(e){throw console.error(e),e}}(...t.args);break;case"getDBChunk":e=await async function(e,t){const a=await S(),n=await a.get("chunks",[e,t]);return a.close(),n?.data}(...t.args);break;case"existsDBChunk":e=await async function(e,t){const a=await S(),n=await a.count("chunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBNewChunk":e=await async function(e,t){try{const a=await S(),n=t??-1;if(n>-1){const t=await a.get("newChunks",[e,n]);return a.close(),t}{const t=a.transaction("newChunks"),n=t.objectStore("newChunks").index("realChunkHash"),o=await n.get(e);return await t.done,a.close(),o}}catch(e){return void console.error(e)}}(...t.args);break;case"existsDBNewChunk":e=await async function(e,t){const a=await S(),n=await a.count("newChunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBSendQueue":e=await async function(e,t,a){const n=await S();if(a){const o=await n.get("sendQueue",[a,e,t]);return n.close(),o?[o]:[]}const o=n.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),r=IDBKeyRange.only([e,t]),s=await o.getAll(r);return n.close(),s}(...t.args);break;case"getDBAllChunks":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(e&&e.length===2*D){const t=await s.getAll(e);return 0===t.length?(await n.done,a.close(),[]):(await n.done,a.close(),t)}if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e.length>0?e.filter(t=>t.merkleRoot===e[0].merkleRoot):e}return await n.done,a.close(),[]}catch(e){return console.error(e),[]}}(...t.args);break;case"getDBAllChunksCount":e=await async function(e,t){try{const a=await S(),n=a.transaction(["chunks"],"readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(t&&t.length===2*D){const o=await r.count(t);if(0===o){if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}return await n.done,a.close(),o}if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}catch(e){return 0}}(...t.args);break;case"setDBChunk":e=await async function(e){const t=await S();try{await t.add("chunks",e)}catch(e){}t.close()}(...t.args);break;case"getDBAllNewChunks":e=await async function(e,t){if(!e&&!t)return[];if(e?.length!==2*D&&t?.length!==2*D)return[];const a=await S();if((e?await a.countFromIndex("newChunks","hash",e):await a.countFromIndex("newChunks","merkleRoot",t))>0){const n=e?await a.getAllFromIndex("newChunks","hash",e):await a.getAllFromIndex("newChunks","merkleRoot",t);return a.close(),n}{const n=a.transaction("newChunks","readonly").objectStore("newChunks"),o=e?n.index("hash"):n.index("merkleRoot"),r=e?IDBKeyRange.only(e):IDBKeyRange.only(t),s=await o.getAll(r);return a.close(),s}}(...t.args);break;case"getDBAllNewChunksCount":e=await async function(e){const t=await S(),a=await t.countFromIndex("newChunks","hash",e);return t.close(),a}(...t.args);break;case"setDBNewChunk":e=await async function(e){const t=await S();await t.put("newChunks",e),t.close()}(...t.args);break;case"setDBSendQueue":e=await async function(e){const t=await S();await t.put("sendQueue",e),t.close()}(...t.args);break;case"countDBSendQueue":e=await async function(e,t){const a=await S(),n=a.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),o=IDBKeyRange.only([e,t]),r=await n.count(o);return a.close(),r}(...t.args);break;case"deleteDBChunk":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readwrite"),o=n.objectStore("chunks");if(t){const a=IDBKeyRange.only([e,t]);await o.delete(a)}else{const t=o.index("hash"),a=await t.getAllKeys(e),n=a.length;if(0===n){const t=o.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await o.delete(a[e])}else for(let e=0;e<n;e++)await o.delete(a[e])}await n.done,a.close()}catch(e){}}(...t.args);break;case"deleteDBNewChunk":e=await async function(e,t,a,n){try{const o=await S(),r=o.transaction("newChunks","readwrite"),s=r.objectStore("newChunks");if(e){const t=s.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await s.delete(a[e])}else if(a&&n)await s.delete([a,n]);else if(a){const e=s.index("hash"),t=await e.getAllKeys(a),n=t.length;for(let e=0;e<n;e++)await s.delete(t[e])}else if(t){const e=s.index("realChunkHash"),a=await e.getKey(t);a&&await s.delete(a)}await r.done,o.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBMessageData":e=await async function(e){try{const t=await S(),a=t.transaction(["messageData","uniqueRoom"],"readwrite"),n=a.objectStore("messageData"),o=a.objectStore("uniqueRoom"),r=n.index("merkleRoot"),s=await r.getAllKeys(e),i=s.length;let c="";for(let e=0;e<i;e++){if(0===e||0===c.length){const t=await n.get(s[e]);c=t?.roomId??""}await n.delete(s[e])}if(c.length>0){const e=o.index("roomId"),t=await e.get(c);if(t){const e=n.index("roomId"),a=await e.getAllKeys(c),r=a.length,s=r>0?await n.get(a[r-1]):void 0;await o.put({...t,messageCount:t.messageCount>0?t.messageCount-1:0,updatedAt:s?.timestamp??Date.now(),lastMessageMerkleRoot:s?.merkleRoot??""})}}await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBUniqueRoom":e=await async function(e){try{const t=await S(),a=t.transaction("uniqueRoom","readwrite"),n=a.objectStore("uniqueRoom"),o=n.index("roomId"),r=await o.getKey(e);r&&await n.delete(r),await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBSendQueue":e=await async function(e,t,a){try{const n=await S();if(a)await n.delete("sendQueue",[a,e,t]);else{const a=IDBKeyRange.only([e,t]);await n.delete("sendQueue",a)}n.close()}catch(e){}}(...t.args);break;case"deleteDB":e=await R();break;default:return void postMessage({id:a,error:"Method not found"})}postMessage({id:a,result:e})}catch(e){postMessage({id:a,error:String(e)})}};\n//# sourceMappingURL=db.worker.js.map\n'],{type:"application/javascript"}),br=new Worker(URL.createObjectURL(wr),{type:"module"});let Ir=0;const kr=new Map;function vr(e,...t){return new Promise((n,r)=>{const a=++Ir;kr.set(a,{resolve:n,reject:r}),br.postMessage({id:a,method:e,args:t})})}br.onmessage=e=>{const{id:t,result:n,error:r}=e.data,a=kr.get(t);a&&(kr.delete(t),r?a.reject(r):a.resolve(n))};const Sr=(e,t)=>vr("getDBAddressBookEntry",e,t),_r=(e,t)=>vr("getDBPeerIsBlacklisted",e,t),xr=()=>vr("getAllDBUniqueRooms"),Er=e=>vr("getDBRoomMessageData",e),Pr=(e,t,n,r,a,o,s,i,c,l)=>vr("setDBRoomMessageData",e,t,n,r,a,o,s,i,c,l),Cr=(e,t)=>vr("getDBNewChunk",e,t),Ar=(e,t)=>vr("getDBSendQueue",e,t),Tr=e=>vr("setDBChunk",e),Rr=e=>vr("setDBNewChunk",e),Mr=e=>vr("setDBSendQueue",e),Dr=(e,t)=>vr("deleteDBChunk",e,t),Ur=(e,t,n,r)=>vr("deleteDBNewChunk",e,t,n,r),Or=(e,t,n)=>vr("deleteDBSendQueue",e,t,n),Br={Text:1,ImagePNG:2,ImageJPEG:3,ImageJPG:4,ImageGIF:5,ImageBMP:6,ImageTIFF:7,ImageSVG:8,ImageWEBP:9,ImageHEIC:10,DocumentPDF:11,DocumentDOC:12,DocumentDOCX:13,DocumentXLS:14,DocumentXLSX:15,DocumentPPT:16,DocumentPPTX:17,DocumentTXT:18,DocumentRTF:19,DocumentODT:20,AudioMP3:21,AudioWAV:22,AudioAAC:23,AudioFLAC:24,AudioOGG:25,AudioM4A:26,VideoMP4:27,VideoAVI:28,VideoMKV:29,VideoMOV:30,VideoWMV:31,VideoFLV:32,VideoWEBM:33,CompressedZIP:34,CompressedRAR:35,Compressed7Z:36,CompressedTAR:37,CompressedGZ:38,CodeHTML:39,CodeCSS:40,CodeJS:41,CodeJSX:42,CodeTS:43,CodeTSX:44,CodeJSON:45,CodeXML:46,CodePY:47,CodeJAVA:48,CodeC:49,CodeCPP:50,CodeCS:51,CodeRB:52,CodePHP:53,CodeSQL:54,EbookEPUB:55,EbookMOBI:56,EbookAZW:57,FontTTF:58,FontOTF:59,ImageICO:60,ExecutableEXE:61,ExecutableDMG:62,ExecutableAPK:63,Unknown:64},qr={Text:"Text",Image:"Image",Document:"Document",Audio:"Audio",Video:"Video",Compressed:"Compressed",Code:"Code",Ebook:"Ebook",Font:"Font",Executable:"Executable",Unknown:"Unknown"},jr=e=>{switch(e){case Br.Text:return"text/plain";case Br.ImagePNG:return"image/png";case Br.ImageJPEG:case Br.ImageJPG:return"image/jpeg";case Br.ImageGIF:return"image/gif";case Br.ImageBMP:return"image/bmp";case Br.ImageTIFF:return"image/tiff";case Br.ImageSVG:return"image/svg+xml";case Br.ImageWEBP:return"image/webp";case Br.ImageHEIC:return"image/heic";case Br.ImageICO:return"image/vnd.microsoft.icon";case Br.DocumentPDF:return"application/pdf";case Br.DocumentDOC:return"application/msword";case Br.DocumentDOCX:return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case Br.DocumentXLS:return"application/vnd.ms-excel";case Br.DocumentXLSX:return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case Br.DocumentPPT:return"application/vnd.ms-powerpoint";case Br.DocumentPPTX:return"application/vnd.openxmlformats-officedocument.presentationml.presentation";case Br.DocumentTXT:return"text/plain";case Br.DocumentRTF:return"application/rtf";case Br.DocumentODT:return"application/vnd.oasis.opendocument.text";case Br.AudioMP3:return"audio/mpeg";case Br.AudioWAV:return"audio/wav";case Br.AudioAAC:return"audio/aac";case Br.AudioFLAC:return"audio/flac";case Br.AudioOGG:return"audio/ogg";case Br.AudioM4A:return"audio/mp4";case Br.VideoMP4:return"video/mp4";case Br.VideoAVI:return"video/x-msvideo";case Br.VideoMKV:return"video/x-matroska";case Br.VideoMOV:return"video/quicktime";case Br.VideoWMV:return"video/x-ms-wmv";case Br.VideoFLV:return"video/x-flv";case Br.VideoWEBM:return"video/webm";case Br.CompressedZIP:return"application/zip";case Br.CompressedRAR:return"application/vnd.rar";case Br.Compressed7Z:return"application/x-7z-compressed";case Br.CompressedTAR:return"application/x-tar";case Br.CompressedGZ:return"application/gzip";case Br.CodeHTML:return"text/html";case Br.CodeCSS:return"text/css";case Br.CodeJS:case Br.CodeJSX:return"application/javascript";case Br.CodeTS:case Br.CodeTSX:return"application/typescript";case Br.CodeJSON:return"application/json";case Br.CodeXML:return"application/xml";case Br.CodePY:return"text/x-python";case Br.CodeJAVA:return"text/x-java-source";case Br.CodeC:return"text/x-c";case Br.CodeCPP:return"text/x-c++";case Br.CodeCS:return"text/plain";case Br.CodeRB:return"text/x-ruby";case Br.CodePHP:return"application/x-httpd-php";case Br.CodeSQL:return"application/sql";case Br.EbookEPUB:return"application/epub+zip";case Br.EbookMOBI:return"application/x-mobipocket-ebook";case Br.EbookAZW:return"application/vnd.amazon.ebook";case Br.FontTTF:return"font/ttf";case Br.FontOTF:return"font/otf";case Br.ExecutableEXE:return"application/vnd.microsoft.portable-executable";case Br.ExecutableDMG:return"application/x-apple-diskimage";case Br.ExecutableAPK:return"application/vnd.android.package-archive";default:return"application/octet-stream"}},Nr="0123456789abcdef",zr=new Array(64),Kr=new Array(128),Lr=e=>new Promise(t=>{let n=0;const r=e.length;for(let t=0;t<r;t++)n+=e[t].length;const a=new Uint8Array(n);let o=0;for(const t of e)a.set(t,o),o+=t.length;t(a)}),Fr=e=>{const t=e.length,n=t===jt?Kr:32===t?zr:new Array(2*t);let r=0;for(let a=0;a<t;a++){const t=e[a];n[r++]=Nr[t>>4],n[r++]=Nr[15&t]}return n.join("")},Hr=e=>{(e=e.replace(/^0x/,"")).length%2!=0&&(e="0"+e);const t=/[G-Z\s]/i.exec(e);if(t)throw new Error(`Found non-hex characters ${t[0]}`);const n=e.match(/[\dA-F]{2}/gi);if(!n)throw new Error("No hex characters in string");const r=n.length,a=new Uint8Array(r);for(let e=0;e<r;e++)a[e]=parseInt(n[e],16);return a},Wr=65536,Vr=131072,Qr=9+jt+8+8+256+8+8+8,$r=4+48*(jt+1),Gr=Kt+Nt+(Qr+$r)+Qt+Ft,Xr=Wr-Gr,Yr=Qr+$r+Xr,Jr=Gt(Yr),Zr=e=>{const t=new Uint8Array(Qr);let n=0;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.schemaVersion),!1),n+=8,t[n]=e.messageType,n+=1,t.set(e.hash,n),n+=jt;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.totalSize),!1),n+=8;new DataView(t.buffer,n,8).setBigInt64(0,BigInt(e.date.getTime()),!1),n+=8;const r=(new TextEncoder).encode(e.name),a=new Uint8Array(256);a.set(r.subarray(0,Math.min(256,r.length))),t.set(a,n),n+=256;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkStartIndex),!1),n+=8;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkEndIndex),!1),n+=8;return new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkIndex),!1),n+=8,t},ea=e=>{if(e.length!==Qr)throw new Error("Invalid metadata buffer totalSize");let t=0;const n=new DataView(e.buffer,e.byteOffset+t,8),r=Number(n.getBigUint64(0,!1));t+=8;const a=e[t];t+=1;const o=e.slice(t,t+jt);t+=jt;const s=new DataView(e.buffer,e.byteOffset+t,8),i=Number(s.getBigUint64(0,!1));t+=8;const c=new DataView(e.buffer,e.byteOffset+t,8),l=Number(c.getBigUint64(0,!1)),d=new Date(l);t+=8;const u=e.slice(t,t+256),m=(new TextDecoder).decode(u).replace(/\0+$/,"");t+=256;const p=new DataView(e.buffer,e.byteOffset+t,8),f=Number(p.getBigUint64(0,!1));t+=8;const h=new DataView(e.buffer,e.byteOffset+t,8),y=Number(h.getBigUint64(0,!1));t+=8;const g=new DataView(e.buffer,e.byteOffset+t,8);return{schemaVersion:r,messageType:a,hash:o,totalSize:i,date:d,name:m,chunkStartIndex:f,chunkEndIndex:y,chunkIndex:Number(g.getBigUint64(0,!1))}},ta=(e,t,n)=>{t=t??32,n=n??16384;const r=65536,a=Math.ceil(e/r);if(a>n)throw new Error(`Memory required is ${String(a*r)} bytes while declared maximum is ${String(n*r)} bytes`);return a<t?t:a};var na=()=>{const e=(Kt+Lt)*Uint8Array.BYTES_PER_ELEMENT,t=ta(e);return new WebAssembly.Memory({initial:t,maximum:t})},ra=()=>{const e=(Kt+Lt+zt)*Uint8Array.BYTES_PER_ELEMENT,t=ta(e);return new WebAssembly.Memory({initial:t,maximum:t})},aa=e=>{const t=(e+Nt+Lt+jt)*Uint8Array.BYTES_PER_ELEMENT,n=ta(t);return new WebAssembly.Memory({initial:n,maximum:n})},oa=e=>{const t=(e+Nt+Kt)*Uint8Array.BYTES_PER_ELEMENT,n=ta(t);return new WebAssembly.Memory({initial:n,maximum:n})},sa=(e,t)=>{const n=Gt(e),r=(e+Kt+t+n+Qt+1*(e+Ft)+2*Ht+2*Wt+Vt)*Uint8Array.BYTES_PER_ELEMENT,a=ta(r);return new WebAssembly.Memory({initial:a,maximum:a})},ia=(e,t)=>{const n=Xt(e),r=(e+Lt+t+n+2*Ht+Vt+Wt)*Uint8Array.BYTES_PER_ELEMENT,a=ta(r);return new WebAssembly.Memory({initial:a,maximum:a})},ca=e=>{const t=ta((2*e+3)*jt);return new WebAssembly.Memory({initial:t,maximum:t})},la=e=>{const t=ta(e*jt+e*(jt+1)+3*jt);return new WebAssembly.Memory({initial:t,maximum:t})},da=e=>{const t=e*Uint8Array.BYTES_PER_ELEMENT+4*jt,n=ta(t);return new WebAssembly.Memory({initial:n,maximum:n})},ua=e=>{const t=(78643200+e+zt+$t)*Uint8Array.BYTES_PER_ELEMENT,n=ta(t);return new WebAssembly.Memory({initial:n,maximum:n})},ma=()=>{const e=(Kt+Nt+Kt)*Uint8Array.BYTES_PER_ELEMENT,t=Wr-Kt-Nt,n=Xt(t),r=(t+Lt+jt+n+2*Ht+Vt+Wt)*Uint8Array.BYTES_PER_ELEMENT,a=$r*Uint8Array.BYTES_PER_ELEMENT+4*jt,o=ta(n+Wr+2*jt+Kt+Lt+e+r+a+jt);return new WebAssembly.Memory({initial:o,maximum:o})};function pa(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var fa,ha={exports:{}};var ya=(fa||(fa=1,function(e){async function t(e={}){var t,n=e,r=[],a=(e,t)=>{throw t};t=self.location.href;var o,s,i="";function c(e){return i+e}try{i=new URL(".",t).href}catch{}s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},o=async e=>{var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},console.log.bind(console);var l,d,u,m,p,f,h,y=console.error.bind(console),g=[],w=!1,b=!1,I=!1,k=[];function v(e){y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw m?.(t),t}async function S(e){if(!l)try{var t=await o(e);return new Uint8Array(t)}catch{}return function(e){if(e==h&&l)return new Uint8Array(l);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}(e)}async function _(e,t,n){if(!e)try{var r=fetch(t,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(r,n)}catch(e){y(`wasm streaming compile failed: ${e}`),y("falling back to ArrayBuffer instantiation")}return async function(e,t){try{var n=await S(e);return await WebAssembly.instantiate(n,t)}catch(e){y(`failed to asynchronously prepare wasm: ${e}`),v(e)}}(t,n)}class x{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var E,P={},C=new Set([]),A={get(e,t){var n=P[t];return n||(n=P[t]=new WebAssembly.Global({value:"i32",mutable:!0})),C.has(t)||(n.required=!0),n}},T=e=>{for(;e.length>0;)e.shift()(n)},R="undefined"!=typeof TextDecoder?new TextDecoder:void 0,M=(e,t=0,n,r)=>{var a=((e,t,n)=>{for(var r=t+n;e[t]&&!(t>=r);)++t;return t})(e,t,n);if(a-t>16&&e.buffer&&R)return R.decode(e.subarray(t,a));for(var o="";t<a;){var s=e[t++];if(128&s){var i=63&e[t++];if(192!=(224&s)){var c=63&e[t++];if((s=224==(240&s)?(15&s)<<12|i<<6|c:(7&s)<<18|i<<12|c<<6|63&e[t++])<65536)o+=String.fromCharCode(s);else{var l=s-65536;o+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|i)}else o+=String.fromCharCode(s)}return o},D=e=>{var t=0,n=0;function r(){return e[t++]}function a(){for(var n=0,r=1;;){var a=e[t++];if(n+=(127&a)*r,r*=128,!(128&a))break}return n}function o(){var n=a();return M(e,(t+=n)-n,n)}function s(){for(var e=a(),t=[];e--;)t.push(o());return t}function i(e,t){if(e)throw new Error(t)}if(e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");i(0===c.length,"need dylink section"),n=(e=new Uint8Array(c[0])).length}else{i(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),i(0!==e[8],"need the dylink section to be first"),t=9;var l=a();n=t+l,i("dylink.0"!==o())}for(var d={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]};t<n;){var u=r(),m=a();if(1===u)d.memorySize=a(),d.memoryAlign=a(),d.tableSize=a(),d.tableAlign=a();else if(2===u)d.neededDynlibs=s();else if(3===u)for(var p=a();p--;){var f=o();256&a()&&d.tlsExports.add(f)}else if(4===u)for(p=a();p--;)o(),f=o(),1==(3&a())&&d.weakImports.add(f);else 5===u?d.runtimePaths=s():t+=m}return d},U=(e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return O.loadedLibsByName[e]=r,null!=t&&(O.loadedLibsByHandle[t]=r),r},O={loadedLibsByName:{},loadedLibsByHandle:{},init(){U("__main__",0,Te)}},B=562416,q=(e,t)=>Math.ceil(e/t)*t,j=e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),N=e=>{const t=e.length;return[t%128|128,t>>7,...e]},z={i:127,p:127,j:126,f:125,d:124,e:111},K=e=>N(Array.from(e,e=>z[e])),L=[],F=new WebAssembly.Table({initial:3,element:"anyfunc"}),H=e=>{var t=L[e];return t||(L[e]=t=F.get(e)),t},W=(e,t)=>{if(E)for(var n=e;n<e+t;n++){var r=H(n);r&&E.set(r,n)}},V=[],Q=(e,t)=>{F.set(e,t),L[e]=F.get(e)},$=(e,t)=>{var n=(e=>(E||(E=new WeakMap,W(0,F.length)),E.get(e)||0))(e);if(n)return n;var r=V.length?V.pop():F.grow(1);try{Q(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var a=((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...N([1,96,...K(t.slice(1)),...K("v"===t[0]?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n);return new WebAssembly.Instance(r,{e:{f:e}}).exports.f})(e,t);Q(r,a)}return E.set(e,r),r},G=(e,t,n)=>{var r={};for(var a in e){var o=e[a];"object"==typeof o&&(o=o.value),"number"==typeof o&&(o+=t),r[a]=o}return(e=>{for(var t in e)if(!j(t)){var n=e[t];P[t]||=new WebAssembly.Global({value:"i32",mutable:!0}),0==P[t].value&&("function"==typeof n?P[t].value=$(n):"number"==typeof n?P[t].value=n:y(`unhandled export type for '${t}': ${typeof n}`))}})(r),r},X=e=>{var t=Te[e];return!(!t||t.stub)},Y=(e,t=!1)=>{var n;return X(e)&&(n=Te[e]),{sym:n,name:e}},J=[],Z=(e,t,n)=>e?M(f,e,t):"",ee=(e,t,n,r,a)=>{var o=D(e);function s(){var n,a=Math.pow(2,o.memoryAlign),s=o.memorySize?q((e=>{if(b)return xe(e,1);var t=B,n=t+q(e,16);return B=n,P.__heap_base.value=n,t})(o.memorySize+a),a):0,i=o.tableSize?F.length:0;o.tableSize&&F.grow(o.tableSize);var c=new Proxy({},{get(e,t){switch(t){case"__memory_base":return s;case"__table_base":return i}var a;return t in Te&&!Te[t].stub?Te[t]:(t in e||(e[t]=(...e)=>(a||=function(e){var t=Y(e).sym;return!t&&r&&(t=r[e]),t||(t=n[e]),t}(t),a(...e))),e[t])}});C=o.weakImports;var l={"GOT.mem":new Proxy({},A),"GOT.func":new Proxy({},A),env:c,wasi_snapshot_preview1:c};function d(e,r){function a(e,t){for(var n=[],r=0;r<16&&-1!=t.indexOf("$"+r);r++)n.push("$"+r);n=n.join(","),v("DYNAMIC_EXECUTION=0 was set, cannot eval")}if(W(i,o.tableSize),n=G(r.exports,s),t.allowUndefined||ae(),"__start_em_asm"in n)for(var c=n.__start_em_asm,l=n.__stop_em_asm;c<l;)a(0,Z(c)),c=f.indexOf(0,c)+1;function d(e,t,n){var r=[];if("void"!=(t=t.slice(1,-1)))for(var a in t=t.split(",")){var o=t[a].split(" ").pop();r.push(o.replace("*",""))}v("DYNAMIC_EXECUTION=0 was set, cannot eval")}for(var u in n)if(u.startsWith("__em_js__")){c=n[u];var m=Z(c).split("<::>");d(u.replace("__em_js__",""),m[0],m[1]),delete n[u]}var p=n.__wasm_apply_data_relocs;p&&(b?p():k.push(p));var h,y=n.__wasm_call_ctors;return y&&(b?y():(h=y,J.push(h))),n}if(t.loadAsync)return(async()=>{var t;return e instanceof WebAssembly.Module?t=new WebAssembly.Instance(e,l):({module:e,instance:t}=await WebAssembly.instantiate(e,l)),d(0,t)})();var u=e instanceof WebAssembly.Module?e:new WebAssembly.Module(e);return d(0,new WebAssembly.Instance(u,l))}return(t={...t,rpath:{parentLibPath:n,paths:o.runtimePaths}}).loadAsync?o.neededDynlibs.reduce((e,n)=>e.then(()=>re(n,t,r)),Promise.resolve()).then(s):(o.neededDynlibs.forEach(e=>re(e,t,r)),s())},te=(e,t)=>{for(var[n,r]of Object.entries(e)){const e=e=>{X(e)||(Te[e]=r)};e(n);const t="__main_argc_argv";"main"==n&&e(t),n==t&&e("main")}},ne=async e=>{var t=await o(e);return new Uint8Array(t)};function re(e,t={global:!0,nodelete:!0},n,r){var a=O.loadedLibsByName[e];if(a)return t.global&&(a.global||(a.global=!0,te(a.exports))),t.nodelete&&a.refcount!==1/0&&(a.refcount=1/0),a.refcount++,!t.loadAsync||Promise.resolve(!0);function o(){var n=c(e);if(t.loadAsync)return ne(n);if(!s)throw new Error(`${n}: file not found, and synchronous loading of external files is not available`);return s(n)}function i(){return t.loadAsync?o().then(r=>ee(r,t,e,n)):ee(o(),t,e,n)}function l(e){a.global&&te(e),a.exports=e}return(a=U(e,r,"loading")).refcount=t.nodelete?1/0:1,a.global=t.global,t.loadAsync?i().then(e=>(l(e),!0)):(l(i()),!0)}var ae=()=>{for(var[e,t]of Object.entries(P))if(0==t.value){var n=Y(e,!0).sym;if(!n&&!t.required)continue;if("function"==typeof n)t.value=$(n,n.sig);else{if("number"!=typeof n)throw new Error(`bad export type for '${e}': ${typeof n}`);t.value=n}}},oe=0,se=null,ie=async()=>{if(g.length){for(var e of(oe++,g))await re(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});ae(),(()=>{if(0==--oe&&se){var e=se;se=null,e()}})()}else ae()},ce=(e,t,n,r)=>v(`Assertion failed: ${Z(e)}, at: `+[t?Z(t):"unknown filename",n,r?Z(r):"unknown function"]);ce.sig="vppip";var le=new WebAssembly.Global({value:"i32",mutable:!1},4096),de=new WebAssembly.Global({value:"i32",mutable:!0},562416),ue=new WebAssembly.Global({value:"i32",mutable:!1},1),me=()=>v("");me.sig="v";var pe=0,fe=()=>{pe=0};fe.sig="v";var he={},ye=e=>{if(e instanceof x||"unwind"==e)return d;a(0,e)},ge=()=>pe>0,we=e=>{d=e,ge()||(w=!0),a(0,new x(e))};we.sig="vi";var be=(e,t)=>{d=e,ge()||(Se(),I=!0),we(e)};be.sig="vi";var Ie=e=>{if(!I&&!w)try{e(),(()=>{if(!I&&!ge())try{be(d)}catch(e){ye(e)}})()}catch(e){ye(e)}},ke=()=>performance.now();ke.sig="d";var ve=(e,t)=>{if(he[e]&&(clearTimeout(he[e].id),delete he[e]),!t)return 0;var n=setTimeout(()=>{delete he[e],Ie(()=>_e(e,ke()))},t);return he[e]={id:n,timeout_ms:t},0};ve.sig="iid";var Se,_e,xe,Ee,Pe,Ce=e=>{f.length,v("OOM")};Ce.sig="ip",p=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:32,maximum:32}),Pe=p.buffer,f=new Uint8Array(Pe),new BigInt64Array(Pe),new BigUint64Array(Pe),n.wasmBinary&&(l=n.wasmBinary);var Ae,Te={__assert_fail:ce,__heap_base:B,__indirect_function_table:F,__memory_base:le,__stack_high:562416,__stack_pointer:de,__table_base:ue,_abort_js:me,_emscripten_runtime_keepalive_clear:fe,_setitimer_js:ve,alignfault:function(){v("alignment fault")},emscripten_resize_heap:Ce,memory:p,proc_exit:we,segfault:function(){v("segmentation fault")}};return Ae=await async function(){function e(e,t){Ae=e.exports,Ae=G(Ae,4096);var r=D(t);return r.neededDynlibs&&(g=r.neededDynlibs.concat(g)),te(Ae),O.init(),ie(),k.push(Ae.__wasm_apply_data_relocs),function(e){n._argon2=e.argon2,n._malloc=e.malloc,n._free=e.free,n._encrypt_chachapoly_asymmetric=e.encrypt_chachapoly_asymmetric,n._decrypt_chachapoly_asymmetric=e.decrypt_chachapoly_asymmetric,n._keypair_from_seed=e.keypair_from_seed,n._keypair_from_secret_key=e.keypair_from_secret_key,n._sign=e.sign,n._verify=e.verify,n._get_merkle_root=e.get_merkle_root,n._get_merkle_proof=e.get_merkle_proof,n._get_merkle_root_from_proof=e.get_merkle_root_from_proof,n._verify_merkle_proof=e.verify_merkle_proof,n._receive_message=e.receive_message,Se=e.__funcs_on_exit,_e=e._emscripten_timeout,e.sbrk,xe=e.calloc,Ee=e.realloc,e.emscripten_stack_get_base,e._emscripten_stack_alloc,e.__wasm_apply_data_relocs}(Ae),Ae}var t={env:Te,wasi_snapshot_preview1:Te,"GOT.mem":new Proxy(Te,A),"GOT.func":new Proxy(Te,A)};h??=c("libcrypto.wasm");var r=function(t){return e(t.instance,t.module)}(await _(l,h,t));return r}(),function e(t=r){oe>0||oe>0?se=e:(n.calledRun=!0,w||(b=!0,T(k),Ae.__wasm_call_ctors(),T(J),u?.(n)))}(),(()=>{var e=null,t=0;function r(){if(e&&b){var t=e;e=null,t.forEach(e=>onmessage(e))}}function a(){r(),e&&setTimeout(a,100)}onmessage=o=>{if(!b)return e||(e=[],setTimeout(a,100)),void e.push(o);r();var s=n["_"+o.data.funcName];s||v("invalid worker function to call: "+o.data.funcName);var i=o.data.data;i&&(i.byteLength||(i=new Uint8Array(i)),t=Ee(t,i.length),f.set(i,t)),o.data.callbackId,i?s(t,i.length):s(0,0)}})(),b?n:new Promise((e,t)=>{u=e,m=t})}e.exports=t,e.exports.default=t}(ha)),ha.exports),ga=pa(ya);if("object"!=typeof WebAssembly)throw new Error("no native wasm support detected");const wa=async e=>{const t=new URL("https://cdn.p2party.com/@0.7.11/libcrypto.wasm"),n=await fetch(t,{integrity:"sha384-iCNxnyD3ho2bH3H868svpjRIZTRA66sPJDwbi4loPTBIAsYlghPXQFThc96d5jIC"}),r=await n.arrayBuffer();return await ga({wasmBinary:r,wasmMemory:e})},ba=async(e,t,n,r)=>{if(e.length%jt!==0)throw new Error("Hashes were not passed");const a=e.length/jt;if(0===a)throw new Error("Cannot calculate Merkle proof of element of empty tree.");if(1===a){const e=new Uint8Array(jt+1);if(e.set(t),r){const t=jt+1,n=window.crypto.getRandomValues(new Uint8Array(r));let a=0;const o=4;return new DataView(n.buffer,a,o).setUint32(0,t,!1),a+=o,n.set(e,a),n}return e}const o=n?.wasmMemory??la(a),s=n??await wa(o),i=s._malloc(a*jt),c=new Uint8Array(o.buffer,i,a*jt);c.set(e);const l=s._malloc(jt),d=new Uint8Array(o.buffer,l,jt);d.set(t);const u=a*(jt+1),m=s._malloc(u),p=new Uint8Array(o.buffer,m,u),f=s._get_merkle_proof(a,c.byteOffset,d.byteOffset,p.byteOffset);switch(s._free(i),s._free(l),f){case-1:throw s._free(m),new Error("Element not in tree.");case-2:throw s._free(m),new Error("Could not allocate memory for hash concatenation helper array.");case-3:throw s._free(m),new Error("Could not calculate hash.");default:if(f>0){if(r&&r>=f){const e=window.crypto.getRandomValues(new Uint8Array(r));let t=0;const n=4;return new DataView(e.buffer,t,n).setUint32(0,f,!1),t+=n,e.set(p.slice(0,f),t),s._free(m),e}{const e=Uint8Array.from([...p.slice(0,f)]);return s._free(m),e}}throw s._free(m),new Error("An unexpected error occured")}},Ia=(e,t)=>new Promise((n,r)=>{try{e===t&&n(e);const r=t-e,a=Math.ceil(Math.log2(r)/8),o=Math.pow(Math.pow(2,8),a),s=Math.floor(o/r)*r;let i=new Uint8Array(a),c=s;for(;c>=s;){i=window.crypto.getRandomValues(i),c=0;for(let e=0;e<a;e++)c<<=8,c+=i[e];c<s&&(c%=r,n(e+c))}n(c)}catch(e){r(e)}}),ka=async(e,t,n=!0,r=!0,a=!0)=>{if(t??=e,0===t&&e===t)return"";const o=t>e?await Ia(e,t):e,s=await((e,t=!0,n=!0,r=!0)=>new Promise((a,o)=>{try{let o="";t&&(o+="abcdefghijklmnopqrstuvwxyz"),n&&(o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),r&&(o+="0123456789");let s="";const i=window.crypto.getRandomValues(new Uint8Array(e));for(let t=0;t<e;t++)s+=o[i[t]%o.length];a(s)}catch(e){o(e)}}))(o,n,r,a);return s};function va(e,t){if(!(t>e))return e;const n=t-e,r=Math.floor(4294967296/n)*n;let a=0;do{a=crypto.getRandomValues(new Uint32Array(1))[0]}while(a>=r);return e+a%n}function Sa(e){const t=e.slice();for(let e=t.length-1;e>0;e--){const n=va(0,e+1);[t[e],t[n]]=[t[n],t[e]]}return t}const _a=[1],xa="CANCEL_SEND",Ea=async(e,t,n,r,a,o=1,s=Xr,i=.9,c=1)=>{const{keyPair:l}=t.getState();if(o<1)throw new Error("Need at least one chunk.");if(i<1e-4||i>1)throw new Error("Percentage of useful data in chunk should be in (0, 1].");if(!_a.includes(c))throw new Error("Unknown metadata version schema.");if(s>Xr||s<=Gr)throw new Error(`Chunk length needs to be between ${String(Gr)} and ${String(Xr)}`);let d=!1;const u=()=>{d=!0};window.addEventListener(xa,u);const m=(e=>{if("string"==typeof e)return Br.Text;const t=e.name.split(".").pop()?.toLowerCase()??"";return{png:Br.ImagePNG,jpeg:Br.ImageJPEG,jpg:Br.ImageJPG,gif:Br.ImageGIF,bmp:Br.ImageBMP,tiff:Br.ImageTIFF,svg:Br.ImageSVG,webp:Br.ImageWEBP,heic:Br.ImageHEIC,pdf:Br.DocumentPDF,doc:Br.DocumentDOC,docx:Br.DocumentDOCX,xls:Br.DocumentXLS,xlsx:Br.DocumentXLSX,ppt:Br.DocumentPPT,pptx:Br.DocumentPPTX,txt:Br.DocumentTXT,rtf:Br.DocumentRTF,odt:Br.DocumentODT,mp3:Br.AudioMP3,wav:Br.AudioWAV,aac:Br.AudioAAC,flac:Br.AudioFLAC,ogg:Br.AudioOGG,m4a:Br.AudioM4A,mp4:Br.VideoMP4,avi:Br.VideoAVI,mkv:Br.VideoMKV,mov:Br.VideoMOV,wmv:Br.VideoWMV,flv:Br.VideoFLV,webm:Br.VideoWEBM,zip:Br.CompressedZIP,rar:Br.CompressedRAR,"7z":Br.Compressed7Z,tar:Br.CompressedTAR,gz:Br.CompressedGZ,html:Br.CodeHTML,css:Br.CodeCSS,js:Br.CodeJS,ts:Br.CodeTS,jsx:Br.CodeJSX,tsx:Br.CodeTSX,json:Br.CodeJSON,xml:Br.CodeXML,py:Br.CodePY,java:Br.CodeJAVA,c:Br.CodeC,cpp:Br.CodeCPP,cs:Br.CodeCS,rb:Br.CodeRB,php:Br.CodePHP,sql:Br.CodeSQL,epub:Br.EbookEPUB,mobi:Br.EbookMOBI,azw:Br.EbookAZW,ttf:Br.FontTTF,otf:Br.FontOTF,ico:Br.ImageICO,exe:Br.ExecutableEXE,dmg:Br.ExecutableDMG,apk:Br.ExecutableAPK}[t]??Br.Unknown})(e),p=m===Br.Text?await ka(256):e.name.substring(0,255),f="string"==typeof e?(new TextEncoder).encode(e):e,h=await navigator.storage.estimate(),y=(h.quota??10737418240)-(h.usage??65536),g="string"==typeof e?f.length:f.size;if(g>y)throw new Error("Not enough space to save the file in the browser.");if(g<1)throw new Error("No data to split in chunks");const w=new Date,b=await window.crypto.subtle.digest("SHA-512",g<10485760?"string"==typeof e?f.buffer:await f.arrayBuffer():"string"==typeof e?f.subarray(0,10485760).buffer:await f.slice(0,10485760).arrayBuffer()),I=new Uint8Array(b),k=Fr(I),v={schemaVersion:c,messageType:m,hash:I,name:p,totalSize:g,date:w};let S=0;const _=Math.max(o,Math.ceil(g/(s*i))),x=new Uint8Array(s),E=new Uint8Array(_*jt),P=Math.floor(s*(1-i)),C=Math.ceil(s*i);for(let a=0;a<_&&!d;a++){window.crypto.getRandomValues(x);const o=await Ia(0,P),s=g-S,i=Math.min(Math.max(s,0),C);let c=o+i;if(s>0){const t=f.slice(S,S+i);if("string"==typeof e)x.set(t,o);else{const e=await t.arrayBuffer();x.set(new Uint8Array(e),o)}S+=i}else{const e=c+g+1,t=Number.MAX_SAFE_INTEGER-e;c+=await Ia(e,t)}const d=await window.crypto.subtle.digest("SHA-512",x),u=new Uint8Array(d),h=Fr(u);E.set(u,a*jt);const y=Zr({...v,chunkStartIndex:o,chunkEndIndex:c,chunkIndex:a});try{await Rr({hash:k,merkleRoot:"",chunkIndex:a,realChunkHash:h,data:x.buffer,metadata:y.buffer,merkleProof:(new Uint8Array).buffer})}catch{}t.dispatch(cn({roomId:r.id,merkleRootHex:"",sha512Hex:k,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:a+1,totalChunks:_,messageType:m,filename:p,channelLabel:n,timestamp:w.getTime()}))}if(d)return window.removeEventListener(xa,u),await Ur(void 0,void 0,k),t.dispatch(mn({hashHex:k})),{merkleRoot:new Uint8Array,merkleRootHex:"",hash:new Uint8Array,hashHex:"",totalChunks:0,totalSize:0,messageType:0,chunkHashes:new Uint8Array};const A=await(async(e,t)=>{if(e.length%jt!==0)throw new Error("Hashes were not passed");const n=e.length/jt;if(0===n)throw new Error("Cannot calculate Merkle root of tree with no leaves.");if(1===n)return e;const r=t?.wasmMemory??ca(n),a=t??await wa(r),o=a._malloc(n*jt),s=new Uint8Array(r.buffer,o,n*jt);s.set(e);const i=a._malloc(jt),c=new Uint8Array(r.buffer,i,jt),l=a._get_merkle_root(n,s.byteOffset,c.byteOffset);switch(a._free(o),l){case 0:{const e=Uint8Array.from([...c]);return a._free(i),e}case-1:throw a._free(i),new Error("Could not allocate memory for hash concatenation helper array.");case-2:throw a._free(i),new Error("Could not calculate hash.");default:throw a._free(i),new Error("Unexpected error occured.")}})(E,a),T=Fr(A);try{await Pr(r.id,T,k,l.peerId,g,g,m,p,n,w.getTime())}catch(e){console.error(e)}return t.dispatch(cn({roomId:r.id,merkleRootHex:T,sha512Hex:k,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:_,totalChunks:_,messageType:m,filename:p,channelLabel:n,timestamp:w.getTime()})),window.removeEventListener(xa,u),{merkleRoot:A,merkleRootHex:T,hash:I,hashHex:k,totalSize:g,totalChunks:_,messageType:m,chunkHashes:E}},Pa=async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??sa(o,s),c=a??await wa(i),l=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),d=new Uint8Array(i.buffer,l,o*Uint8Array.BYTES_PER_ELEMENT);d.set(e);const u=c._malloc(Kt),m=new Uint8Array(i.buffer,u,Kt);m.set(t);const p=c._malloc(Lt),f=new Uint8Array(i.buffer,p,Lt);f.set(n);const h=c._malloc(Qt),y=new Uint8Array(i.buffer,h,Qt),g=window.crypto.getRandomValues(new Uint8Array(Qt));y.set(g);const w=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,s*Uint8Array.BYTES_PER_ELEMENT);b.set(r);const I=Gt(o),k=c._malloc(I*Uint8Array.BYTES_PER_ELEMENT),v=new Uint8Array(i.buffer,k,I*Uint8Array.BYTES_PER_ELEMENT),S=c._encrypt_chachapoly_asymmetric(o,d.byteOffset,m.byteOffset,f.byteOffset,y.byteOffset,s,b.byteOffset,v.byteOffset);switch(c._free(l),c._free(u),c._free(p),c._free(h),c._free(w),S){case 0:{const e=Uint8Array.from([...v]);return c._free(k),e}case-1:throw c._free(k),new Error("Could not allocate memory for the ephemeral x25519 public key array.");case-2:throw c._free(k),new Error("Could not allocate memory for the ephemeral x25519 secret key array.");case-3:throw c._free(k),new Error("Could not convert Ed25519 secret key to X25519.");case-4:throw c._free(k),new Error("Could not calculate x25519 public key from x25519 secret key.");case-5:throw c._free(k),new Error("Could not allocate memory for the receiver's ed25519 converted to x25519 public key array.");case-6:throw c._free(k),new Error("Could not convert Ed25519 public key to X25519.");case-7:throw c._free(k),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(k),new Error("Could not calculate the shared secret.");case-9:throw c._free(k),new Error("Could not encrypt.");default:throw c._free(k),new Error("An unexpected error occured.")}},Ca=async(e,t,n,r,a)=>{const{keyPair:o,rooms:s}=r.getState(),i=Hr(o.secretKey),c=s.findIndex(e=>e.id===t);if(c>-1){const l=s[c].peers,d=s[c].channels,u=a?d.findIndex(e=>e.label===a):0;if(-1===u)throw new Error("No channel with label "+a);const{merkleRoot:m,merkleRootHex:p,hashHex:f,totalSize:h,totalChunks:y}=await Ea(e,r,a,s[c],n),g=d[u].peerIds.length;for(let e=0;e<g;e++){const s=d[u].peerIds[e],c=l.findIndex(e=>e.peerId===s);if(-1===c)continue;const g=l[c].peerPublicKey,w=Hr(g),b=Array.from({length:y},(e,t)=>t),I=Sa(b);for(let e=0;e<y;e++){const c=I[e],l=await Cr(f,c);if(!l)continue;const y=ea(new Uint8Array(l.data).slice(0,Qr));y.chunkStartIndex<y.chunkEndIndex?r.dispatch(cn({roomId:t,merkleRootHex:p,sha512Hex:f,fromPeerId:o.peerId,chunkSize:y.chunkEndIndex-y.chunkStartIndex,totalSize:h,messageType:y.messageType,filename:y.name,channelLabel:a??d[u].label})):await Dr(p,y.chunkIndex);const g=await Pa(new Uint8Array(l.data),w,i,m,n),b=await Lr([m,g]);await r.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"message",message:Fr(b),roomId:t,fromPeerId:o.peerId,toPeerId:s,label:a}}))}}}},Aa=async e=>{const t=e?.wasmMemory??na(),n=e??await wa(t),r=n._malloc(Kt),a=new Uint8Array(t.buffer,r,Kt),o=n._malloc(Lt),s=new Uint8Array(t.buffer,o,Lt),i=n._malloc(zt),c=new Uint8Array(t.buffer,i,zt);window.crypto.getRandomValues(c);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")},Ta=async(e,t,n)=>{const r=e.length,a=n?n.wasmMemory:aa(r),o=n??await wa(a),s=o._malloc(r*Uint8Array.BYTES_PER_ELEMENT),i=new Uint8Array(a.buffer,s,r*Uint8Array.BYTES_PER_ELEMENT);i.set(e);const c=o._malloc(Nt),l=new Uint8Array(a.buffer,c,Nt),d=o._malloc(Lt),u=new Uint8Array(a.buffer,d,Lt);u.set(t),o._sign(r,i.byteOffset,u.byteOffset,l.byteOffset);const m=Uint8Array.from([...l]);return o._free(s),o._free(c),o._free(d),m},Ra=(e,t)=>new Promise((n,r)=>{try{(e.length<=0||e.length>32)&&r(new Error("Label larger than 128 characters")),"string"==typeof t&&t.length!==2*jt?r(new Error("Merkle root hex should be 128 bytes")):"string"!=typeof t&&t.length!==jt&&r(new Error("Merkle root should be 64 bytes"));let a="";const o=(new TextEncoder).encode(e),s=new Uint8Array(32);s.set(o.subarray(0,Math.min(32,o.length))),a+=Fr(s),a+="~",a+="string"==typeof t?t:Fr(t),n(a)}catch(e){r(e)}}),Ma=e=>new Promise((t,n)=>{try{const r=e.split("~"),a=r.length;2!==a&&a>1?n(new Error(`Channel message label needs to have ${String(2)} components.`)):1===a&&t({channelLabel:e,merkleRootHex:"",merkleRoot:new Uint8Array});const o=Hr(r[0]);32!==o.length&&n(new Error("Channel label is not 128 bytes long."));const s=(new TextDecoder).decode(o).replace(/\0+$/,""),i=Hr(r[1]);i.length!==jt&&n(new Error("Merkle root has invalid length")),t({channelLabel:s,merkleRoot:i,merkleRootHex:r[1]})}catch(e){n(e)}}),Da=async(e,t,n,r,a)=>{try{const o=a.filter(e=>e.label===t.label),s=Fr(e),{channelLabel:i,merkleRootHex:c}=await Ma(t.label),l=n.messages.findLastIndex(e=>e.merkleRootHex===c);if(l<0)return;const d=n.messages[l].sha512Hex;if(s===d){r.dispatch(ln({roomId:n.id,merkleRootHex:c,sha512Hex:d,fromPeerId:n.messages[l].fromPeerId,totalSize:n.messages[l].totalSize,messageType:n.messages[l].messageType,filename:n.messages[l].filename,channelLabel:i,timestamp:n.messages[l].timestamp}));const e=Hr(d);await r.dispatch(Va.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:t.label,messageHash:e,alsoDeleteData:!1,alsoSendFinishedMessage:!1}))}else{const e=await Cr(s),t=e?.chunkIndex??-1;if(e&&t>-1){const e=n.messages.findLastIndex(e=>e.merkleRootHex===c),a=await((e,t)=>vr("getDBChunk",e,t))(c,t),l=a?.byteLength??0;a&&e>-1&&l>0&&n.messages[e].savedSize+l<=n.messages[e].totalSize?(r.dispatch(cn({roomId:n.id,merkleRootHex:c,sha512Hex:d,fromPeerId:n.messages[e].fromPeerId,chunkSize:l,totalSize:n.messages[e].totalSize,messageType:n.messages[e].messageType,filename:n.messages[e].filename,channelLabel:i,timestamp:n.messages[e].timestamp})),1===o.length&&await Ur(void 0,s)):-1===e&&console.log("No message with hex "+d)}}}catch(e){throw console.error(e),e}},Ua=async(e,t,n,r,a,o)=>{switch(o._receive_message(e.byteOffset,t.byteOffset,n.byteOffset,r.byteOffset,a.byteOffset)){case 0:{const t=e.slice(0,Qr),r=e.slice(Qr+$r),a=ea(t),o=r.slice(a.chunkStartIndex,a.chunkEndIndex),s=await window.crypto.subtle.digest("SHA-512",r),i=new Uint8Array(s),c=a.chunkEndIndex-a.chunkStartIndex>a.totalSize||a.chunkEndIndex-a.chunkStartIndex>Wr?0:a.chunkEndIndex-a.chunkStartIndex;if(0===c)return{date:a.date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const l=Fr(n),d=await((e,t)=>vr("getDBMessageData",e,t))(l),u=null!=d&&d.savedSize===d.totalSize,m=!d||d.savedSize+c<=d.totalSize,p=u||c===a.totalSize||null!=d&&d.savedSize+c===d.totalSize;if(!m)return{date:a.date,chunkIndex:-1,chunkSize:c,receivedFullSize:p,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const f=jr(a.messageType);try{return await Tr({merkleRoot:l,hash:Fr(a.hash),chunkIndex:a.chunkIndex,data:o.buffer,mimeType:f}),{date:a.date,chunkIndex:a.chunkIndex,chunkSize:c,receivedFullSize:p,chunkAlreadyExists:!1,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}catch(e){return{date:a.date,chunkIndex:a.chunkIndex,chunkSize:0,receivedFullSize:null!=d&&p,chunkAlreadyExists:!0,totalSize:0,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}}case-1:return console.error("Message signature is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-2:return console.error("Could not decrypt message"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-3:return console.error("Merkle proof length is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-4:return console.error("Could not allocate memory for hash"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-5:return console.error("Could not hash chunk"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-6:return console.error("Could not verify Merkle proof"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};default:return console.error("Unexpected error occured."),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:Br.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array}}},Oa=async({channel:e,epc:t,roomId:n,dataChannels:r},a)=>{const{keyPair:o,rooms:s}=a.getState(),i=Hr(t.withPeerPublicKey),c=Hr(o.secretKey),l=s.findIndex(e=>e.id===n);let d=t.rooms.findLastIndex(e=>e.roomId===n);if(-1===d){const e=ma(),r=await wa(e);d=t.rooms.length,t.rooms.push({roomId:n,receiveMessageModule:r})}const u=new Set,m=new Map;let p=!1;if("string"==typeof e){const n=r.findIndex(n=>n.label===e&&n.withPeerId===t.withPeerId);if(n>-1&&"open"===r[n].readyState)return r[n]}const f="string"==typeof e?e:e.label,{channelLabel:h,merkleRoot:y,merkleRootHex:g}=await Ma(f),w="string"==typeof e?t.createDataChannel(e,{ordered:!1,protocol:"raw"}):e;w.binaryType="arraybuffer",w.bufferedAmountLowThreshold=Wr,w.onbufferedamountlow=async()=>{for(;"open"===w.readyState;){const e=await Ar(f,t.withPeerId);if(0===e.length)break;for(;e.length>0&&w.bufferedAmount<Vr&&"open"===w.readyState;){let n=await Ia(0,e.length);n===e.length&&(n=0);const[r]=e.splice(n,1);"open"===w.readyState&&(w.send(r.encryptedData),await Or(f,t.withPeerId,r.position))}}};const b=w;let I,k,v,S,_,x,E,P,C,A;b.withPeerId=t.withPeerId,b.roomIds=[n];const T=async e=>{if(I&&v&&_&&E&&C&&k&&S&&x&&P&&A)try{S.set([...e]);const{date:r,chunkSize:o,chunkIndex:s,receivedFullSize:i,chunkAlreadyExists:c,totalSize:l,messageType:u,filename:m,chunkHash:p,messageHash:f}=await Ua(k,S,x,P,A,t.rooms[d].receiveMessageModule),y=Fr(f);i?(await Pr(n,g,y,t.withPeerId,l,l,u,m,h,r.getTime()),a.dispatch(ln({roomId:n,merkleRootHex:g,sha512Hex:y,fromPeerId:t.withPeerId,totalSize:l,messageType:u,filename:m,channelLabel:h,timestamp:r.getTime(),alsoSendFinishedMessage:!0}))):o>0&&s>-1&&!c&&(await Pr(n,g,y,t.withPeerId,o,l,u,m,h,r.getTime()),a.dispatch(cn({roomId:n,merkleRootHex:g,sha512Hex:y,fromPeerId:t.withPeerId,chunkSize:o,totalSize:l,messageType:u,filename:m,channelLabel:h,timestamp:r.getTime()}))),l>0&&p.length===jt&&"open"===b.readyState&&!c&&b.send(p.buffer)}catch(e){console.error(e)}},R=async()=>{p=!0;try{for(;u.size>0;){const e=u.values().next();if(e.done)break;const t=e.value;u.delete(t);const n=m.get(t);n&&(m.delete(t),await T(n))}}finally{p=!1,u.size>0&&await R()}};return b.onclose=async()=>{console.log(`Channel with label ${b.label} has closed.`),d&&t.rooms[d]&&(I&&t.rooms[d].receiveMessageModule._free(I),v&&t.rooms[d].receiveMessageModule._free(v),_&&t.rooms[d].receiveMessageModule._free(_),E&&t.rooms[d].receiveMessageModule._free(E),C&&t.rooms[d].receiveMessageModule._free(C)),await a.dispatch(Va.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:b.label})),"main"===b.label&&a.dispatch(en({roomId:n,connectingToPeers:!0}))},b.onerror=async e=>{console.error(e),await a.dispatch(Va.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:b.label})),a.dispatch(en({roomId:n,connectingToPeers:!0}))},b.onmessage=async e=>{const t=e.data,n=new Uint8Array(t);if(l>-1&&n.byteLength===jt)try{await Da(n,b,s[l],a,r)}catch(e){console.error(e)}else if(n.byteLength===Wr){const e=Fr(n.subarray(0,16));m.has(e)||(m.set(e,n),u.add(e)),p||await R()}else console.error(new Error("Wrong data length received"))},b.onopen=()=>{console.log(`Channel with label "${b.label}" and client ${t.withPeerId} is open.`),r.push(b),""===g&&h.length>0&&a.dispatch(on({roomId:n,label:f,peerId:b.withPeerId}));try{I=t.rooms[d].receiveMessageModule._malloc(Yr),k=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,I,Yr),v=t.rooms[d].receiveMessageModule._malloc(Wr),S=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,v,Wr),_=t.rooms[d].receiveMessageModule._malloc(jt),x=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,_,jt),x.set(y),E=t.rooms[d].receiveMessageModule._malloc(Kt),P=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,E,Kt),P.set(i),C=t.rooms[d].receiveMessageModule._malloc(Lt),A=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,C,Lt),A.set(c)}catch(e){console.error(e)}},b},Ba=async({peerId:t,peerPublicKey:n,roomId:r,peerConnections:a,rtcConfig:o},s)=>{const{keyPair:i}=s.getState();if(o??=Yt,!e.isUUID(t))throw new Error("PeerId is not a valid uuidv4");if(64!==n.length)throw new Error("Peer public key is not a valid length");const c=a.findIndex(e=>e.withPeerId===t);if(c>-1){if(-1===a[c].rooms.findIndex(e=>e.roomId===r)){const e=ma(),t=await wa(e);a[c].rooms.push({roomId:r,receiveMessageModule:t})}return a[c]}const l=new RTCPeerConnection(o);l.withPeerId=t,l.withPeerPublicKey=n,l.makingOffer=!1,l.iceCandidates=[];const d=ma(),u=await wa(d);return l.rooms=[{roomId:r,receiveMessageModule:u}],l.onnegotiationneeded=async()=>{try{l.makingOffer=!0,await l.setLocalDescription(),l.localDescription&&(await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"description",description:l.localDescription,fromPeerId:i.peerId,fromPeerPublicKey:i.publicKey,toPeerId:t,roomId:r}})),console.log(`Negotiation was needed with ${t} and you sent a description ${l.localDescription.type}.`))}catch(e){console.error(e)}finally{l.makingOffer=!1}},l.onicecandidate=async({candidate:e})=>{e&&""!==e.candidate&&await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"candidate",candidate:e,fromPeerId:i.peerId,toPeerId:t,roomId:r}}))},l.onicecandidateerror=e=>{console.error(e)},l.oniceconnectionstatechange=async()=>{if("failed"===l.iceConnectionState){const{signalingServer:e}=s.getState();!e.isConnected&&!e.isEstablishingConnection&&e.serverUrl.length>0&&await s.dispatch(eo.endpoints.connectWebSocket.initiate(e.serverUrl)),l.restartIce()}console.log(`ICE candidate connection state with ${t} is ${l.iceConnectionState}.`)},l.onicegatheringstatechange=()=>{console.log(`ICE gathering state with ${t} is ${l.iceGatheringState}.`)},l.onsignalingstatechange=async()=>{console.log(`Signaling state with ${t} is ${l.signalingState}.`),"stable"===l.signalingState&&l.remoteDescription&&await(async e=>{for(;e.iceCandidates.length>0&&"stable"===e.signalingState&&e.remoteDescription;){const t=e.iceCandidates.shift();if(t){const n=new RTCIceCandidate(t);n.usernameFragment!==t.usernameFragment&&await e.addIceCandidate(n)}}})(l)},l.onconnectionstatechange=async()=>{if("closed"===l.connectionState||"failed"===l.connectionState||"disconnected"===l.connectionState){if(await s.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:t})),console.error(`Connection with peer ${t} has ${l.connectionState}.`),"closed"===l.connectionState){const{signalingServer:e}=s.getState();e.isConnected&&await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:i.peerId,roomId:r}}))}}else"connected"===l.connectionState&&(s.dispatch(an({roomId:r,peerId:t,peerPublicKey:n})),console.log(`Connection status with peer ${t} is ${l.connectionState}.`))},l},qa=async(e,t,n,r,a,o,s,i,c)=>{let l=!1;const{merkleRootHex:d}=await Ma(e.label),u=Sa(Array.from({length:n},(e,t)=>t)),{ptr1:m,ptr2:p,ptr3:f,ptr5:h,ptr6:y,ptr7:g,ptr9:w,ptr10:b,senderEphemeralPublicKey:I,senderEphemeralSecretKey:k,seedBytes:v,senderEphemeralSignature:S,chunkArray:_,receiverPublicKeyArray:x,nonceArray:E,encryptedArray:P}=(e=>{const t=e._malloc(Kt),n=new Uint8Array(e.wasmMemory.buffer,t,Kt),r=e._malloc(Lt),a=new Uint8Array(e.wasmMemory.buffer,r,Lt),o=e._malloc(zt),s=new Uint8Array(e.wasmMemory.buffer,o,zt),i=e._malloc(Lt),c=e._malloc(Nt),l=new Uint8Array(e.wasmMemory.buffer,c,Nt),d=e._malloc(Yr),u=new Uint8Array(e.wasmMemory.buffer,d,Yr),m=e._malloc(Kt),p=new Uint8Array(e.wasmMemory.buffer,m,Kt),f=e._malloc(jt),h=e._malloc(Qt),y=new Uint8Array(e.wasmMemory.buffer,h,Qt),g=e._malloc(Jr);return{ptr1:t,ptr2:r,ptr3:o,ptr4:i,ptr5:c,ptr6:d,ptr7:m,ptr8:f,ptr9:h,ptr10:g,senderEphemeralPublicKey:n,senderEphemeralSecretKey:a,seedBytes:s,senderEphemeralSignature:l,chunkArray:u,receiverPublicKeyArray:p,nonceArray:y,encryptedArray:new Uint8Array(e.wasmMemory.buffer,g,Jr)}})(i),C=s.withPeerPublicKey;x.set(Hr(C));for(let s=0;s<n;s++){const n=u[s];window.crypto.getRandomValues(v);if(0!==i._keypair_from_seed(I.byteOffset,k.byteOffset,v.byteOffset))continue;if(0!==i._sign(Kt,I.byteOffset,t.byteOffset,S.byteOffset))continue;const m=await Cr(o,n);if(!m)continue;const p=new Uint8Array(m.metadata),f=ea(p);if(f.chunkStartIndex>=0&&f.chunkEndIndex>f.chunkStartIndex&&f.chunkEndIndex-f.chunkStartIndex<=f.totalSize){const e=jr(f.messageType),t=m.data.slice(f.chunkStartIndex,f.chunkEndIndex);await Tr({merkleRoot:d,hash:o,chunkIndex:f.chunkIndex,data:t,mimeType:e})}const h=new Uint8Array($r);if(0===m.merkleProof.byteLength){const e=await ba(r,Hr(m.realChunkHash),c,$r);h.set(e);try{await Rr({hash:o,merkleRoot:d,realChunkHash:m.realChunkHash,chunkIndex:n,data:m.data,metadata:m.metadata,merkleProof:h.buffer})}catch(e){console.warn(e)}}else if(h.set(new Uint8Array(m.merkleProof)),0===m.merkleRoot.length)try{await Rr({hash:o,merkleRoot:d,realChunkHash:m.realChunkHash,chunkIndex:n,data:m.data,metadata:m.metadata,merkleProof:m.merkleProof})}catch(e){console.warn(e)}if(Yr!==p.length+h.length+new Uint8Array(m.data).length)continue;const y=await Lr([p,h,new Uint8Array(m.data)]);_.set(y),window.crypto.getRandomValues(E);if(0!==i._encrypt_chachapoly_asymmetric(Yr,_.byteOffset,x.byteOffset,k.byteOffset,E.byteOffset,jt,a.byteOffset,P.byteOffset))continue;const g=await Lr([I,S,P]);if("open"===e.readyState&&e.bufferedAmount<Vr)e.send(g.buffer);else{if("closed"===e.readyState){console.log("Cannot send message because channel is "+e.readyState+" and bufferedAmount is "+String(e.bufferedAmount));break}l=!0;try{await Mr({position:n,label:e.label,toPeerId:e.withPeerId,encryptedData:g.buffer})}catch(e){console.error(e)}}}if(l)for(;"open"===e.readyState&&e.bufferedAmount<Vr;){const t=await Ar(e.label,s.withPeerId);for(;t.length>0&&e.bufferedAmount<Vr&&"open"===e.readyState;){let n=await Ia(0,t.length);n===t.length&&(n=0);const[r]=t.splice(n,1);if("open"===e.readyState){e.send(r.encryptedData);try{await Or(e.label,s.withPeerId,r.position)}catch(e){console.error(e)}}}}i._free(m),i._free(p),i._free(f),i._free(h),i._free(y),i._free(g),i._free(w),i._free(b)},ja=async({data:e,label:t,roomId:n,peerConnections:r,dataChannels:a,encryptionWasmMemory:o,merkleWasmMemory:s,minChunks:i,chunkSize:c,percentageFilledChunk:l,metadataSchemaVersion:d},u)=>{const m=await wa(o),p=await wa(s);return await(async(e,t,n,r,a,o,s,i,c=1,l=Xr,d=.9,u=1)=>{try{const{rooms:m,keyPair:p}=t.getState(),f=m.findIndex(e=>e.id===r);if(f>-1){const h=m[f].channels.findIndex(e=>e.label===n);if(-1===h)throw new Error("No channel with label "+n);const{merkleRoot:y,merkleRootHex:g,hashHex:w,totalChunks:b,chunkHashes:I}=await Ea(e,t,n,m[f],i,c,l,d,u);if(0===y.length||0===w.length||0===b||0===I.length)return;const k=await Ra(n,g),v=s._malloc(Lt),S=new Uint8Array(s.wasmMemory.buffer,v,Lt);S.set(Hr(p.secretKey));const _=s._malloc(jt),x=new Uint8Array(s.wasmMemory.buffer,_,jt);x.set(y);const E=m[f].channels[h].peerIds.length,P=[];for(let e=0;e<E;e++){const n=a.findIndex(t=>t.withPeerId===m[f].channels[h].peerIds[e]);if(-1===n)continue;const c=await Oa({channel:k,epc:a[n],roomId:r,dataChannels:o},t);P.push(qa(c,S,b,I,x,w,a[n],s,i))}await Promise.allSettled(P),s._free(v),s._free(_)}}catch(e){console.trace(e)}})(e,u,t,n,r,a,m,p,i,c,l,d),{data:void 0}},Na=async({alsoDeleteDB:e,peerConnections:t,dataChannels:n},r)=>{const a=n.length;for(let e=0;e<a;e++)"open"===n[e].readyState&&n[e].close();const o=t.length;for(let e=0;e<o;e++)await r.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:t[e].withPeerId}));return e&&await vr("deleteDB"),{data:void 0}},za=async({roomId:e,deleteMessages:t,peerConnections:n,dataChannels:r},a)=>{const o=r.length;for(let t=0;t<o;t++){if(!r[t]||!r[t].roomIds.includes(e)||"open"!==r[t].readyState)continue;const n=r[t].roomIds.findIndex(t=>t===e);n>-1&&(r[t].roomIds.splice(n,1),0===r[t].roomIds.length&&r[t].close())}const s=n.length;for(let t=0;t<s;t++){if(!n[t]||"connected"!==n[t].connectionState)continue;const r=n[t].rooms.findIndex(t=>t.roomId===e);-1!==r&&(n[t].rooms.splice(r,1),0===n[t].rooms.length&&await a.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:n[t].withPeerId})))}if(t){if((await xr()).findIndex(t=>t.roomId===e)>-1){await(e=>vr("deleteDBUniqueRoom",e))(e);const t=await Er(e),n=t.length;for(let e=0;e<n;e++)a.dispatch(mn({merkleRootHex:t[e].merkleRoot}))}}return{data:void 0}},Ka=[],La=[],Fa=[],Ha=sa(Xr,jt),Wa=da($r),Va=gr({reducerPath:"webrtcApi",baseQuery:async({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:o,dataChannels:s},i)=>{const{keyPair:c}=i.getState();if(e===c.peerId)throw new Error("Cannot create a connection with oneself.");if(await _r(e))return{data:void 0};const l=o.findIndex(t=>t.withPeerId===e);if(-1===l){const c=await Ba({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},i);c.ondatachannel=async e=>{await Oa({channel:e.channel,epc:c,roomId:n,dataChannels:s},i)},o.push(c),r&&await Oa({channel:"main",epc:c,roomId:n,dataChannels:s},i)}else{const r=o[l];if("connected"===r.connectionState){const a=ma(),o=await wa(a);r.rooms.push({roomId:n,receiveMessageModule:o}),i.dispatch(an({roomId:n,peerId:e,peerPublicKey:t}));const c=s.length;for(let t=0;t<c;t++)s[t].withPeerId===e&&s[t].roomIds.push(n);const{rooms:l}=i.getState(),d=l.length;for(let t=0;t<d;t++){const r=l[t].channels.findIndex(t=>t.peerIds.includes(e));r>-1&&i.dispatch(on({roomId:n,label:l[t].channels[r].label,peerId:e}))}}}return{data:void 0}},endpoints:e=>({connectWithPeer:e.mutation({query:({peerId:e,peerPublicKey:t,roomId:n,initiator:r=!1,rtcConfig:a={iceServers:[{urls:["stun:stun.p2party.com:3478"]}]}})=>({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:Ka,dataChannels:Fa})}),setDescription:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,peerPublicKey:t,roomId:n,description:r,rtcConfig:a,peerConnections:o,iceCandidates:s,dataChannels:i},c)=>{const{keyPair:l}=c.getState(),d=o.findIndex(t=>t.withPeerId===e),u=d>-1?o[d]:await Ba({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},c);-1!==d&&null!=o[d].ondatachannel||(u.ondatachannel=async e=>{await Oa({channel:e.channel,epc:u,roomId:n,dataChannels:i},c)});const m=s.length,p=[];for(let t=0;t<m;t++)s[t].withPeerId===e&&(p.push(t),u.iceCandidates.push(s[t]));const f=p.length;for(let e=0;e<f;e++)s.splice(p[e],1);-1===d&&o.push(u);const h="offer"===r.type&&(u.makingOffer||"stable"!==u.signalingState);if(!(l.peerId<u.withPeerId)&&h)return{data:void 0};if("closed"!==u.signalingState){if(await u.setRemoteDescription(r),"offer"===r.type){await u.setLocalDescription();const t=u.localDescription;t&&await c.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"description",description:t,fromPeerId:l.peerId,fromPeerPublicKey:l.publicKey,toPeerId:e,roomId:n}}))}}else await c.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:u.withPeerId})),await c.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:l.peerId,roomId:n}}));return"connected"===u.connectionState&&d>-1&&await Oa({channel:"main",epc:u,roomId:n,dataChannels:i},c),{data:void 0}})({...e,peerConnections:Ka,iceCandidates:La,dataChannels:Fa},t)}),setCandidate:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,candidate:t,peerConnections:n,iceCandidates:r},a)=>{const{keyPair:o}=a.getState(),s=n.findIndex(t=>t.withPeerId===e);if(s>-1){const e=n[s],r=new RTCIceCandidate(t);if(e.remoteDescription&&"stable"===e.signalingState)try{await e.addIceCandidate(r)}catch(t){const n=e.makingOffer||"stable"!==e.signalingState;!(o.peerId<e.withPeerId)&&n||(await a.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:e.withPeerId})),e.restartIce())}else e.iceCandidates.push(r)}else r.push({...t,withPeerId:e});return{data:void 0}})({...e,peerConnections:Ka,iceCandidates:La},t)}),openChannel:e.mutation({queryFn:(e,t,n)=>(async({roomId:e,channel:t,withPeers:n,peerConnections:r,dataChannels:a},o)=>{const{keyPair:s}=o.getState();if(n&&n.length>0){const i=n.length;for(let c=0;c<i;c++){if(s.peerId===n[c].peerId)continue;const i=r.findIndex(e=>e.withPeerId===n[c].peerId);if(i>-1){const n=r[i];await Oa({channel:t,epc:n,roomId:e,dataChannels:a},o)}}}else{const n=r.length;for(let s=0;s<n;s++){const n=r[s];await Oa({channel:t,epc:n,roomId:e,dataChannels:a},o)}}return{data:void 0}})({...e,peerConnections:Ka,dataChannels:Fa},t)}),sendMessage:e.mutation({queryFn:(e,t,n)=>ja({...e,peerConnections:Ka,dataChannels:Fa,encryptionWasmMemory:Ha,merkleWasmMemory:Wa},t)}),disconnect:e.mutation({queryFn:(e,t,n)=>Na({...e,peerConnections:Ka,dataChannels:Fa},t)}),disconnectFromRoom:e.mutation({queryFn:(e,t,n)=>za({...e,peerConnections:Ka,dataChannels:Fa},t)}),disconnectFromAllRooms:e.mutation({queryFn:(e,t,n)=>(async({deleteMessages:e,exceptionRoomIds:t,peerConnections:n,dataChannels:r},a)=>{let o,s=0;const i=r.length;for(o=0;o<i;o++)if(r[o]&&"open"===r[o].readyState)if(t&&t.length>0){const e=r[o].roomIds.length,n=[];for(s=0;s<e;s++)t.includes(r[o].roomIds[s])||n.push(s);const a=n.length;for(s=0;s<a;s++)r[o].roomIds.splice(n[s],1);0===r[o].roomIds.length&&r[o].close()}else r[o].close();const c=n.length;for(o=0;o<c;o++)if(n[o]&&"connected"===n[o].connectionState)if(t&&t.length>0){const e=n[o].rooms.length,r=[];for(s=0;s<e;s++)t.includes(n[o].rooms[s].roomId)||r.push(s);const i=r.length;for(s=0;s<i;s++)n[o].rooms.splice(r[s],1);0===n[o].rooms.length&&await a.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}))}else await a.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}));if(e){const{rooms:e}=a.getState(),n=e.length;for(o=0;o<n;o++){if(t&&t.includes(e[o].id))continue;const n=e[o].messages.length;for(s=0;s<n;s++)a.dispatch(mn({merkleRootHex:e[o].messages[s].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Ka,dataChannels:Fa},t)}),disconnectFromPeer:e.mutation({queryFn:(e,t,n)=>(({peerId:e,alsoDeleteData:t,peerConnections:n,dataChannels:r},a)=>{a.dispatch(dn({peerId:e}));const o=n.findIndex(t=>t.withPeerId===e);o>-1&&(n[o].ontrack=null,n[o].ondatachannel=null,n[o].onicecandidate=null,n[o].onicecandidateerror=null,n[o].onnegotiationneeded=null,n[o].onsignalingstatechange=null,n[o].onconnectionstatechange=null,n[o].onicegatheringstatechange=null,n[o].oniceconnectionstatechange=null,"failed"!==n[o].connectionState&&"connected"!==n[o].connectionState||n[o].close(),n.splice(o,1));const s=r.length;for(let t=0;t<s;t++)r[t].withPeerId===e&&"open"===r[t].readyState&&r[t].close();if(t){const{rooms:t}=a.getState(),n=t.length;for(let r=0;r<n;r++){const n=t[r].messages.length;for(let o=0;o<n;o++)t[r].messages[o].fromPeerId===e&&a.dispatch(mn({merkleRootHex:t[r].messages[o].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Ka,dataChannels:Fa},t)}),disconnectFromChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({label:e,messageHash:t,alsoDeleteData:n,alsoSendFinishedMessage:r,dataChannels:a},o)=>{const s=a.length;if(0===s)return{data:void 0};for(let i=0;i<s;i++)if(a[i]&&a[i].label===e&&"open"===a[i].readyState&&(t&&r&&t.length===jt&&a[i].send(t.buffer),a[i].close(),n)){const{merkleRootHex:t}=await Ma(e);n&&o.dispatch(mn({merkleRootHex:t}))}return{data:void 0}})({...e,dataChannels:Fa},t)}),disconnectFromPeerChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,label:t,messageHash:n,alsoDeleteData:r,alsoSendFinishedMessage:a,peerConnections:o,dataChannels:s},i)=>{const c=s.findIndex(n=>n.label===t&&n.withPeerId===e);c>-1&&s[c]&&(n&&a&&n.length===jt&&s[c].send(n.buffer),s[c].onopen=null,s[c].onclose=null,s[c].onerror=null,s[c].onclosing=null,s[c].onmessage=null,s[c].onbufferedamountlow=null,"open"===s[c].readyState&&s[c].close(),s.splice(c,1),await Or(t,e));const{merkleRootHex:l}=await Ma(t);l.length>0?(r&&i.dispatch(mn({merkleRootHex:l})),s.findIndex(e=>{const t=e.label.split("~");return 2===t.length&&t[1]===l})<0&&await Ur(l)):i.dispatch(un({peerId:e,label:t}));const{rooms:d}=i.getState(),u=d.length;let m=!1;for(let t=0;t<u;t++){const n=d[t].channels.length;for(let r=0;r<n;r++)if(d[t].channels[r].peerIds.includes(e)){m=!0;break}if(m)break}if(!m){const t=o.findIndex(t=>t.withPeerId===e);t>-1&&("failed"===o[t].connectionState||"connected"===o[t].connectionState)&&await i.dispatch(Va.endpoints.disconnectFromPeer.initiate({peerId:o[t].withPeerId}))}return{data:void 0}})({...e,peerConnections:Ka,dataChannels:Fa},t)})})}),Qa=async(t,n,r)=>{try{if("PING"===t.data)return void n.send("PONG");const a=JSON.parse(t.data);switch(a.type){case"ping":{const{keyPair:e}=r.getState();await r.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"pong",fromPeerId:e.peerId}}));break}case"peerId":{const{keyPair:t}=r.getState(),n=a.peerId.length>0?a.peerId:"",o=a.challenge.length>0?a.challenge:"",s=e.isUUID(n)&&e.isHexadecimal(o)&&64===o.length&&0===t.challenge.length&&0===t.signature.length&&!a.challengeId&&!a.username&&!a.credential,i=e.isUUID(n)&&e.isUUID(t.peerId)&&t.peerId!==n&&e.isHexadecimal(o)&&64===o.length&&!a.challengeId&&!a.username&&!a.credential;s||i?await(async(e,t,n,r)=>{const a=Hr(e.secretKey),o=Uint8Array.from(n.match(/.{1,2}/g).map(e=>parseInt(e,16))),s=await Ta(o,a),i=[...new Uint8Array(s)].map(e=>e.toString(16).padStart(2,"0")).join("");r.dispatch(Ut({peerId:t,challenge:n,signature:i}))})(t,n,o,r):r.dispatch(Dt({peerId:n,challenge:o,signature:a.signature??"",challengeId:a.challengeId??"",username:a.username??"",credential:a.credential??""}));break}case"roomId":r.dispatch(Zt({id:a.roomId,url:a.roomUrl}));break;case"challenge":r.dispatch(Ot(a));break;case"peerConnection":{if(await _r(a.peer.id,a.peer.publicKey))break;const{keyPair:e,rooms:t}=r.getState(),n=t.findIndex(e=>e.id===a.roomId);if(n>-1&&t[n].onlyConnectWithKnownAddresses){if(!await Sr(a.peer.id,a.peer.publicKey))break}await r.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peerConnection",roomId:a.roomId,fromPeerId:e.peerId,toPeerId:a.peer.id}}));break}case"peers":{const{keyPair:t,rooms:n,commonState:o}=r.getState(),s=64===o.currentRoomUrl.length?n.findIndex(e=>e.url===o.currentRoomUrl):-1;if(s>-1){const o=a.peers.length;if(0===o)break;const i=n[s].onlyConnectWithKnownAddresses;for(let c=0;c<o;c++){if(a.peers[c].publicKey===t.publicKey||a.peers[c].id===t.peerId||!e.isUUID(a.peers[c].id)||64!==a.peers[c].publicKey.length)continue;if(!await _r(a.peers[c].id,a.peers[c].publicKey)){if(i){if(!await Sr(a.peers[c].id,a.peers[c].publicKey))continue}await r.dispatch(Va.endpoints.connectWithPeer.initiate({roomId:a.roomId,peerId:a.peers[c].id,peerPublicKey:a.peers[c].publicKey,initiator:!0,rtcConfig:n[s].rtcConfig}))}}}break}case"description":await _r(a.fromPeerId,a.fromPeerPublicKey)||await r.dispatch(Va.endpoints.setDescription.initiate({peerId:a.fromPeerId,peerPublicKey:a.fromPeerPublicKey,roomId:a.roomId,description:a.description}));break;case"candidate":await _r(a.fromPeerId)||await r.dispatch(Va.endpoints.setCandidate.initiate({peerId:a.fromPeerId,candidate:a.candidate}));break;case"error":console.error(a);break;default:console.error("Unknown message type "+JSON.stringify(a))}}catch(e){return}},$a=sa(65536-jt-Qt-Ft,jt),Ga=(e,t,n=10,r=20)=>{let a=0;const o=setInterval(()=>{e.readyState===WebSocket.OPEN?(clearInterval(o),t()):(a+=1,console.log(`Waiting for connection... Attempt ${String(a)}`),a>=n&&(clearInterval(o),console.log("WebSocket failed to connect after multiple attempts, closing..."),e.removeEventListener("message",()=>{}),e.removeEventListener("open",()=>{}),e.removeEventListener("close",()=>{}),e.close()))},r)};let Xa=null;const Ya=(e,t)=>(Xa&&(Xa.removeEventListener("message",()=>{}),Xa.removeEventListener("open",()=>{}),Xa.removeEventListener("close",()=>{}),Xa.close(),Xa=null,console.log("WebSocket manually disconnected")),t.dispatch(gn.disconnect()),{data:void 0}),Ja=(t,n)=>{if(Xa&&Xa.readyState===WebSocket.OPEN){const{keyPair:r}=n.getState();return e.isUUID(r.peerId)&&e.isHexadecimal(r.challenge)&&e.isHexadecimal(r.signature)&&128===r.signature.length&&64===r.challenge.length&&Ga(Xa,()=>{Xa.send(JSON.stringify(t.content))}),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},Za=async({peerId:t,peerPublicKey:n,roomId:r},a)=>{if(Xa&&Xa.readyState===WebSocket.OPEN){const{keyPair:o}=a.getState();if(e.isUUID(o.peerId)&&e.isHexadecimal(o.challenge)&&e.isHexadecimal(o.signature)&&128===o.signature.length&&64===o.challenge.length&&e.isUUID(t)&&64===n.length&&e.isUUID(r)){a.dispatch(an({roomId:r,peerId:t,peerPublicKey:n}));const e=[];a.dispatch(on({roomId:r,label:"main",peerId:t})),e.push("main"),a.dispatch(on({roomId:r,label:"signaling",peerId:t})),e.push("signaling"),Ga(Xa,()=>{Xa.send(JSON.stringify({type:"connection",roomId:r,fromPeerId:o.peerId,toPeerId:t,labels:e}))});const s=e.length,i=await wa($a);for(let t=0;t<s;t++){const n=`Connected with ${o.peerId} on channel ${e[t]}`;await Ca(n,r,i,a,e[t])}}return{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},eo=gr({reducerPath:"signalingServerApi",baseQuery:async({signalingServerUrl:t},n)=>{const{signalingServer:r}=n.getState();if(Xa||r.isConnected||r.isEstablishingConnection)return console.log("WebSocket already connected"),{data:void 0};n.dispatch(gn.startConnecting(t));try{const{keyPair:r}=n.getState();let a=localStorage.getItem("publicKey")??"",o=localStorage.getItem("secretKey")??"";if(0===r.secretKey.length&&0===o.length){const e=await Aa();a=Fr(e.publicKey),o=Fr(e.secretKey),n.dispatch(Mt({publicKey:a,secretKey:o}))}else if(0===r.secretKey.length)if(128===o.length&&64===a.length)n.dispatch(Mt({publicKey:a,secretKey:o}));else{const e=await Aa();a=Fr(e.publicKey),o=Fr(e.secretKey),n.dispatch(Mt({publicKey:a,secretKey:o}))}else a=r.publicKey;const s=t+"?publickey="+a;return Xa=new WebSocket(s),Xa.binaryType="arraybuffer",await new Promise((t,a)=>{try{Xa.onopen=()=>{console.log("WebSocket connected to:",s),n.dispatch(gn.connectionEstablished());const{rooms:a,commonState:o}=n.getState(),i=64===o.currentRoomUrl.length?a.findIndex(e=>e.url===o.currentRoomUrl):-1;i>-1&&e.isUUID(r.peerId)&&e.isUUID(a[i].id)?n.dispatch(en({roomId:a[i].id,connectingToPeers:!0})):e.isUUID(r.peerId)&&64===o.currentRoomUrl.length&&Ga(Xa,()=>{Xa.send(JSON.stringify({type:"room",fromPeerId:r.peerId,roomUrl:o.currentRoomUrl}))}),t({data:void 0})},Xa.onerror=e=>{console.error("WebSocket error:",e),Xa&&(Xa.removeEventListener("message",()=>{}),Xa.removeEventListener("open",()=>{}),Xa.removeEventListener("close",()=>{}),Xa.close(),Xa=null),n.dispatch(gn.disconnect()),a({error:"WebSocket connection failed"})},Xa.onmessage=async e=>{await Qa(e,Xa,n)},Xa.onclose=()=>{Xa&&(Xa.removeEventListener("message",()=>{}),Xa.removeEventListener("open",()=>{}),Xa.removeEventListener("close",()=>{}),Xa.close(),Xa=null),n.dispatch(gn.disconnect()),console.log("WebSocket disconnected"),t({data:void 0})}}catch(e){a(e)}return()=>{Xa&&(console.log("Cleaning up WebSocket connection..."),Xa.removeEventListener("message",()=>{}),Xa.removeEventListener("open",()=>{}),Xa.removeEventListener("close",()=>{}),Xa.close(),Xa=null)}})}catch(e){return Xa&&(Xa.removeEventListener("message",()=>{}),Xa.removeEventListener("open",()=>{}),Xa.removeEventListener("close",()=>{}),Xa.close(),Xa=null),n.dispatch(gn.disconnect()),console.error("Error during WebSocket setup:",e),{error:"WebSocket connection failed"}}},endpoints:e=>({connectWebSocket:e.mutation({query:(e="wss://signaling.p2party.com/ws")=>({signalingServerUrl:e})}),disconnectWebSocket:e.mutation({queryFn:Ya}),sendMessage:e.mutation({queryFn:Ja}),connectWithPeer:e.mutation({queryFn:Za})})}),to=xt();to.startListening({matcher:xe(en,Zt,cn,ln,mn,pn),effect:async(t,n)=>{if(en.match(t)){const{roomId:r,connectingToPeers:a}=t.payload;if(a){const{signalingServer:t,keyPair:a,rooms:o}=n.getState(),s=o.findIndex(e=>e.id===r);t.isConnected&&e.isUUID(a.peerId)&&s>-1&&e.isUUID(o[s].id)&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:a.peerId,roomId:r}})),n.dispatch(en({roomId:r,connectingToPeers:!1}))}}else if(Zt.match(t)){const{signalingServer:o,keyPair:s,rooms:i}=n.getState(),{url:c,id:l,onlyConnectWithKnownPeers:d}=t.payload;if(64===c.length&&null!=d&&localStorage.setItem(c+"-onlyConnectWithKnownPeers",String(d)),64===c.length&&e.isUUID(l)){await(r=c,a=l,vr("setDBUniqueRoom",r,a));const t=await Er(l),d=t.length;for(let e=0;e<d;e++)n.dispatch(cn({roomId:t[e].roomId,merkleRootHex:t[e].merkleRoot,sha512Hex:t[e].hash,fromPeerId:t[e].fromPeerId,filename:t[e].filename,messageType:t[e].messageType,chunkSize:t[e].savedSize,totalSize:t[e].totalSize,channelLabel:t[e].channelLabel,timestamp:t[e].timestamp}));const u=i.findIndex(e=>e.id===l);o.isConnected&&e.isUUID(s.peerId)&&u>-1&&e.isUUID(i[u].id)&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:s.peerId,roomId:i[u].id}}))}}else if(ln.match(t)){const{roomId:e,merkleRootHex:r,sha512Hex:a,alsoSendFinishedMessage:o}=t.payload,{rooms:s,keyPair:i}=n.getState(),c=s.findIndex(t=>t.id===e);if(c>-1){const e=s[c].messages.findLastIndex(e=>e.merkleRootHex===r&&e.fromPeerId!==i.peerId);if(e>-1){const t=await Ra(s[c].messages[e].channelLabel,s[c].messages[e].merkleRootHex),r=Hr(a);await n.dispatch(Va.endpoints.disconnectFromPeerChannelLabel.initiate({label:t,peerId:s[c].messages[e].fromPeerId,messageHash:r,alsoDeleteData:!1,alsoSendFinishedMessage:o}))}}}else if(mn.match(t)){const{merkleRootHex:e,hashHex:n}=t.payload;if(!e&&!n)return;if(e&&e.length!==2*jt)return;if(n&&n.length!==2*jt)return;e?(await Dr(e),await Ur(e),await(e=>vr("deleteDBMessageData",e))(e)):n&&await Ur(void 0,void 0,n)}else if(pn.match(t)){const e=t.payload;await n.dispatch(Va.endpoints.disconnectFromRoom.initiate({roomId:e,deleteMessages:!0}))}var r,a}});const no=xt();no.startListening({matcher:xe(Mt,Dt,Ut,Ot,Bt),effect:async(t,n)=>{if(Mt.match(t)){const{publicKey:e,secretKey:n}=t.payload;64===e.length&&128===n.length&&(localStorage.setItem("publicKey",t.payload.publicKey),localStorage.setItem("secretKey",t.payload.secretKey))}else if(Dt.match(t)){const{peerId:r,challenge:a,signature:o,challengeId:s,username:i,credential:c}=t.payload;if(e.isUUID(r)&&e.isUUID(s)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length){localStorage.setItem("peerId",r),localStorage.setItem("challenge",a),localStorage.setItem("signature",o),localStorage.setItem("challengeId",s);const{keyPair:l,rooms:d,commonState:u}=n.getState(),m=64===u.currentRoomUrl.length?d.findIndex(e=>e.url===u.currentRoomUrl):-1;m>-1?(t.payload.username&&t.payload.credential&&n.dispatch(sn({roomId:d[m].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:i,credential:c}]})),e.isUUID(d[m].id)&&n.dispatch(en({roomId:d[m].id,connectingToPeers:!0}))):e.isUUID(l.peerId)&&64===u.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:l.peerId,roomUrl:u.currentRoomUrl}}))}}else if(Ut.match(t)){const{peerId:r,challenge:a,signature:o}=t.payload;e.isUUID(r)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(localStorage.setItem("peerId",r),localStorage.setItem("challenge",a),localStorage.setItem("signature",o),await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"challenge",fromPeerId:r,challenge:a,signature:o}})))}else if(Ot.match(t)){const{challengeId:r}=t.payload;if(e.isUUID(r)){localStorage.setItem("challengeId",r);const{keyPair:a,rooms:o,commonState:s}=n.getState(),i=64===s.currentRoomUrl.length?o.findIndex(e=>e.url===s.currentRoomUrl):-1;i>-1?t.payload.username&&t.payload.credential&&(n.dispatch(sn({roomId:o[i].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:t.payload.username,credential:t.payload.credential}]})),e.isUUID(o[i].id)?n.dispatch(en({roomId:o[i].id,connectingToPeers:!0})):e.isUUID(a.peerId)&&64===s.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:s.currentRoomUrl}}))):e.isUUID(a.peerId)&&64===s.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:s.currentRoomUrl}}))}}else Bt.match(t)&&(localStorage.setItem("peerId",""),localStorage.setItem("challengeId",""),localStorage.setItem("publicKey",""),localStorage.setItem("secretKey",""),localStorage.setItem("challenge",""),localStorage.setItem("signature",""))}});const ro=function(e){const n=function(e){const{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:a=!0}=e??{};let o=new ye;return t&&("boolean"==typeof t?o.push(me):o.push(pe(t.extraArgument))),o},{reducer:r,middleware:a,devTools:l=!0,preloadedState:d,enhancers:u}=e||{};let m,p;if("function"==typeof r)m=r;else{if(!o(r))throw new Error(Et(1));m=i(r)}p="function"==typeof a?a(n):n();let f=c;l&&(f=fe({trace:!1,..."object"==typeof l&&l}));const h=function(...e){return n=>(r,a)=>{const o=n(r,a);let s=()=>{throw new Error(t(15))};const i={getState:o.getState,dispatch:(e,...t)=>s(e,...t)},l=e.map(e=>e(i));return s=c(...l)(o.dispatch),{...o,dispatch:s}}}(...p),y=ve(h);return s(m,d,f(..."function"==typeof u?u(y):y()))}({reducer:{commonState:At,keyPair:qt,rooms:fn,signalingServer:wn,[eo.reducerPath]:eo.reducer,[Va.reducerPath]:Va.reducer},middleware:e=>e().concat([eo.middleware,Va.middleware,to.middleware,no.middleware])}),ao=ro.dispatch;var oo=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];const so=e=>e.normalize("NFKD"),io=async e=>{try{return await(async e=>{const t=so(e).split(" ");if(t.length%3!=0)throw new Error("Number of words in mnemonic must be multiple of three.");const n=t.map(e=>{const t=oo.indexOf(e);if(-1===t)throw new Error("Could not find word in wordlist.");return t.toString(2).padStart(11,"0")}).join(""),r=32*Math.floor(n.length/33),a=n.slice(0,r),o=n.slice(r),s=a.match(/(.{1,8})/g).map(e=>parseInt(e,2));if(s.length<16)throw new Error("Entropy length too small (less than 128 bits).");if(s.length>64)throw new Error("Entropy length too large (more than 512 bits).");const i=s.length/4,c=Uint8Array.from(s),l=await window.crypto.subtle.digest("SHA-512",c);if(new Uint8Array(l).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,i)!==o)throw new Error("Invalid checksum.");return!0})(e)}catch{return!1}},co={store:ro,commonStateSelector:e=>e.commonState,signalingServerSelector:e=>e.signalingServer,roomSelector:e=>e.rooms,keyPairSelector:e=>e.keyPair,connect:async(t,n="wss://signaling.p2party.com/ws",r={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"})=>{if(64!==t.length)throw new Error("Invalid room url length");const{keyPair:a,signalingServer:o,rooms:s,commonState:i}=ro.getState(),c=s.findIndex(e=>e.url===t);-1===c&&ao(Zt({url:t,id:"",rtcConfig:r})),i.currentRoomUrl!==t&&ao(Ct(t)),o.isConnected&&e.isUUID(a.peerId)?-1===c?await ao(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:t}})):ao(en({roomId:s[c].id,connectingToPeers:!0})):await ao(eo.endpoints.connectWebSocket.initiate(n))},connectToSignalingServer:async(e,t="wss://signaling.p2party.com/ws")=>{if(64!==e.length)throw new Error("Invalid room url length");const{signalingServer:n,rooms:r,commonState:a}=ro.getState();-1===r.findIndex(t=>t.url===e)&&ao(Zt({url:e,id:""})),a.currentRoomUrl!==e&&ao(Ct(e)),n.serverUrl===t&&(n.isConnected||n.isEstablishingConnection)||await ao(eo.endpoints.connectWebSocket.initiate(t))},disconnectFromSignalingServer:async()=>{await ao(eo.endpoints.disconnectWebSocket.initiate())},disconnectFromRoom:async(e,t=!1)=>{await ao(Va.endpoints.disconnectFromRoom.initiate({roomId:e,deleteMessages:t}))},disconnectFromAllRooms:async(e=!1,t=[])=>{await ao(Va.endpoints.disconnectFromAllRooms.initiate({deleteMessages:e,exceptionRoomIds:t}))},disconnectFromPeer:async e=>{await ao(Va.endpoints.disconnectFromPeer.initiate({peerId:e}))},allowConnectionRelay:(e,t=!0)=>{const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.id===e);r>-1&&ao(nn({roomId:n[r].id,canBeConnectionRelay:t}))},onlyAllowConnectionsFromAddressBook:async(e,t)=>{if(64===e.length){const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.url===e);if(r>-1&&!n[r].onlyConnectWithKnownAddresses&&t&&n[r].peers.length>0){const e=n[r].peers.length;for(let t=0;t<e;t++){await Sr(n[r].peers[t].peerId,n[r].peers[t].peerPublicKey)||await ao(Va.endpoints.disconnectFromPeer.initiate({peerId:n[r].peers[t].peerId,alsoDeleteData:!1}))}}ao(Zt({url:r>-1?n[r].url:e,id:r>-1?n[r].id:"",onlyConnectWithKnownPeers:t}))}},addPeerToAddressBook:(e,t,n)=>vr("setDBAddressBookEntry",e,t,n),getPeerAddressBookEntry:Sr,getAllPeersInAddressBook:()=>vr("getAllDBAddressBookEntries"),getAllPeersInBlacklist:()=>vr("getAllDBBlacklisted"),deletePeerFromAddressBook:async(t,n,r)=>{const a=await((e,t,n)=>vr("deleteDBAddressBookEntry",e,t,n))(t,n,r);e.isUUID(a)&&await ao(Va.endpoints.disconnectFromPeer.initiate({peerId:a,alsoDeleteData:!1}))},blacklistPeer:async(e,t)=>{await((e,t)=>vr("setDBPeerInBlacklist",e,t))(e,t),await ao(Va.endpoints.disconnectFromPeer.initiate({peerId:e,alsoDeleteData:!0}))},getPeerIsBlacklisted:_r,removePeerFromBlacklist:(e,t)=>vr("deleteDBPeerFromBlacklist",e,t),getAllExistingRooms:xr,sendMessage:async(e,t,n,r=.9,a=3,o=Xr,s=1)=>{await ao(Va.endpoints.sendMessage.initiate({data:e,label:t,roomId:n,minChunks:a,chunkSize:o,percentageFilledChunk:r,metadataSchemaVersion:s}))},readMessage:async(e,t)=>{if(!e&&!t)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"txt",category:qr.Text};try{const{keyPair:n,rooms:r}=ro.getState(),a=r.length;let o=-1,s=-1;for(let i=0;i<a;i++)if(s=r[i].messages.findLastIndex(r=>r.merkleRootHex===e||n.peerId===r.fromPeerId&&r.sha512Hex===t&&""===r.merkleRootHex),s>-1){o=i;break}if(-1===o||-1===s)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:qr.Text};const i=r[o].messages[s].messageType,c=jr(i),l=(e=>{switch(e){case Br.ImagePNG:return"png";case Br.ImageJPEG:return"jpeg";case Br.ImageJPG:return"jpg";case Br.ImageGIF:return"gif";case Br.ImageBMP:return"bmp";case Br.ImageTIFF:return"tiff";case Br.ImageSVG:return"svg";case Br.ImageWEBP:return"webp";case Br.ImageHEIC:return"heic";case Br.DocumentPDF:return"pdf";case Br.DocumentDOC:return"doc";case Br.DocumentDOCX:return"docx";case Br.DocumentXLS:return"xls";case Br.DocumentXLSX:return"xlsx";case Br.DocumentPPT:return"ppt";case Br.DocumentPPTX:return"pptx";case Br.DocumentTXT:return"txt";case Br.DocumentRTF:return"rtf";case Br.DocumentODT:return"odt";case Br.AudioMP3:return"mp3";case Br.AudioWAV:return"wav";case Br.AudioAAC:return"aac";case Br.AudioFLAC:return"flac";case Br.AudioOGG:return"ogg";case Br.AudioM4A:return"m4a";case Br.VideoMP4:return"mp4";case Br.VideoAVI:return"avi";case Br.VideoMKV:return"mkv";case Br.VideoMOV:return"mov";case Br.VideoWMV:return"wmv";case Br.VideoFLV:return"flv";case Br.VideoWEBM:return"webm";case Br.CompressedZIP:return"zip";case Br.CompressedRAR:return"rar";case Br.Compressed7Z:return"7z";case Br.CompressedTAR:return"tar";case Br.CompressedGZ:return"gz";case Br.CodeHTML:return"html";case Br.CodeCSS:return"css";case Br.CodeJS:return"js";case Br.CodeTS:return"ts";case Br.CodeJSX:return"jsx";case Br.CodeTSX:return"tsx";case Br.CodeJSON:return"json";case Br.CodeXML:return"xml";case Br.CodePY:return"py";case Br.CodeJAVA:return"java";case Br.CodeC:return"c";case Br.CodeCPP:return"cpp";case Br.CodeCS:return"cs";case Br.CodeRB:return"rb";case Br.CodePHP:return"php";case Br.CodeSQL:return"sql";case Br.EbookEPUB:return"epub";case Br.EbookMOBI:return"mobi";case Br.EbookAZW:return"azw";case Br.FontTTF:return"ttf";case Br.FontOTF:return"otf";case Br.ImageICO:return"ico";case Br.ExecutableEXE:return"exe";case Br.ExecutableDMG:return"dmg";case Br.ExecutableAPK:return"apk";default:return""}})(i),d=(e=>{switch(e){case Br.Text:return qr.Text;case Br.ImagePNG:case Br.ImageJPEG:case Br.ImageJPG:case Br.ImageGIF:case Br.ImageBMP:case Br.ImageTIFF:case Br.ImageSVG:case Br.ImageWEBP:case Br.ImageHEIC:case Br.ImageICO:return qr.Image;case Br.DocumentPDF:case Br.DocumentDOC:case Br.DocumentDOCX:case Br.DocumentXLS:case Br.DocumentXLSX:case Br.DocumentPPT:case Br.DocumentPPTX:case Br.DocumentTXT:case Br.DocumentRTF:case Br.DocumentODT:return qr.Document;case Br.AudioMP3:case Br.AudioWAV:case Br.AudioAAC:case Br.AudioFLAC:case Br.AudioOGG:case Br.AudioM4A:return qr.Audio;case Br.VideoMP4:case Br.VideoAVI:case Br.VideoMKV:case Br.VideoMOV:case Br.VideoWMV:case Br.VideoFLV:case Br.VideoWEBM:return qr.Video;case Br.CompressedZIP:case Br.CompressedRAR:case Br.Compressed7Z:case Br.CompressedTAR:case Br.CompressedGZ:return qr.Compressed;case Br.CodeHTML:case Br.CodeCSS:case Br.CodeJS:case Br.CodeJSX:case Br.CodeTS:case Br.CodeTSX:case Br.CodeJSON:case Br.CodeXML:case Br.CodePY:case Br.CodeJAVA:case Br.CodeC:case Br.CodeCPP:case Br.CodeCS:case Br.CodeRB:case Br.CodePHP:case Br.CodeSQL:return qr.Code;case Br.EbookEPUB:case Br.EbookMOBI:case Br.EbookAZW:return qr.Ebook;case Br.FontTTF:case Br.FontOTF:return qr.Font;case Br.ExecutableEXE:case Br.ExecutableDMG:case Br.ExecutableAPK:return qr.Executable;default:return qr.Unknown}})(i),u=r[o].messages[s].fromPeerId===n.peerId?100:Math.floor(r[o].messages[s].savedSize/r[o].messages[s].totalSize*100),m=100===u?await((e,t)=>vr("getDBAllChunks",e,t))(r[o].messages[s].merkleRootHex,r[o].messages[s].sha512Hex):[],p=m.map(e=>e.data);try{const e=new Blob(p,{type:c});return i===Br.Text?{message:p.length>0?await e.text():"Incoming message...",percentage:u,size:r[o].messages[s].totalSize,filename:"",mimeType:c,extension:l,category:d}:{message:e,percentage:u,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}catch{return{message:"Invalid message",percentage:0,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}}catch(e){return console.error(e),{message:"Irretrievable message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:qr.Text}}},cancelMessage:async(e,t,n)=>{if(!t&&!n)throw new Error("Need to provide either merkle root or hash");if(t&&"string"==typeof t&&t.length!==2*jt)throw new Error("Invalid Merkle root length");if(t&&"string"!=typeof t&&t.length!==jt)throw new Error("Invalid Merkle root length");if(n&&"string"==typeof n&&n.length!==2*jt)throw new Error("Invalid hash length");if(n&&"string"!=typeof n&&n.length!==jt)throw new Error("Invalid hash length");const r=new CustomEvent(xa);window.dispatchEvent(r);const a=t&&"string"==typeof t?t:t&&"string"!=typeof t?Fr(t):"";let o=-1,s=-1;const{rooms:i}=ro.getState(),c=i.length;for(let e=0;e<c;e++)if(s=t?i[e].messages.findIndex(e=>e.merkleRootHex===a):-1,s>-1){o=e;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*jt){const t=await Ra(e,i[o].messages[s].merkleRootHex);await ro.dispatch(Va.endpoints.disconnectFromChannelLabel.initiate({label:t,alsoDeleteData:!0})),ro.dispatch(mn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},deleteMessage:async(e,t)=>{if(!e&&!t)throw new Error("Need to provide either merkle root or hash");if(e&&"string"==typeof e&&e.length!==2*jt)throw new Error("Invalid Merkle root length");if(e&&"string"!=typeof e&&e.length!==jt)throw new Error("Invalid Merkle root length");if(t&&"string"==typeof t&&t.length!==2*jt)throw new Error("Invalid hash length");if(t&&"string"!=typeof t&&t.length!==jt)throw new Error("Invalid hash length");const n=new CustomEvent(xa);window.dispatchEvent(n);const r=e&&"string"==typeof e?e:e&&"string"!=typeof e?Fr(e):"",a=t&&"string"==typeof t?t:t&&"string"!=typeof t?Fr(t):"";let o=-1,s=-1;const{rooms:i}=ro.getState(),c=i.length;for(let n=0;n<c;n++)if(s=e?i[n].messages.findIndex(e=>e.merkleRootHex===r):t?i[n].messages.findIndex(e=>e.sha512Hex===a):-1,s>-1){o=n;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*jt){const e=await Ra(i[o].messages[s].channelLabel,i[o].messages[s].merkleRootHex);await ro.dispatch(Va.endpoints.disconnectFromChannelLabel.initiate({label:e,alsoDeleteData:!0})),ro.dispatch(mn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},purgeIdentity:async()=>{const e=new CustomEvent(xa);window.dispatchEvent(e),ao(Bt());const{rooms:t}=ro.getState(),n=t.length;for(let e=0;e<n;e++)await ao(Va.endpoints.disconnectFromRoom.initiate({roomId:t[e].id}));await ao(eo.endpoints.disconnectWebSocket.initiate())},purgeRoom:async e=>{const t=new CustomEvent(xa);window.dispatchEvent(t);const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.url===e);r>-1&&ao(pn(n[r].id)),await ao(eo.endpoints.disconnectWebSocket.initiate())},purge:async()=>{const e=new CustomEvent(xa);window.dispatchEvent(e),ao(Bt()),await ao(eo.endpoints.disconnectWebSocket.initiate());const t=await xr(),n=t.length;for(let e=0;e<n;e++)ao(pn(t[e].roomId))},generateRandomRoomUrl:async()=>{const e=await ka(256),t=(new TextEncoder).encode(e),n=await window.crypto.subtle.digest("SHA-512",t),r=await window.crypto.subtle.digest("SHA-256",n),a=new Uint8Array(r);return Fr(a)},encrypt:Pa,decrypt:async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??ia(o,s),c=a??await wa(i),l=Xt(o),d=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),u=new Uint8Array(i.buffer,d,o*Uint8Array.BYTES_PER_ELEMENT);u.set(e);const m=c._malloc(Kt),p=new Uint8Array(i.buffer,m,Kt);p.set(t);const f=c._malloc(Lt),h=new Uint8Array(i.buffer,f,Lt);h.set(n);const y=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),g=new Uint8Array(i.buffer,y,s*Uint8Array.BYTES_PER_ELEMENT);g.set(r);const w=c._malloc(l*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,l*Uint8Array.BYTES_PER_ELEMENT),I=c._decrypt_chachapoly_asymmetric(o,u.byteOffset,p.byteOffset,h.byteOffset,s,g.byteOffset,b.byteOffset);switch(c._free(d),c._free(m),c._free(f),c._free(y),I){case 0:{const e=Uint8Array.from([...b]);return c._free(w),e}case-1:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 public key array.");case-2:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 secret key array.");case-3:throw c._free(w),new Error("Could not convert receiver ed25519 secret key to x25519.");case-4:throw c._free(w),new Error("Could not generate x25519 public key from x25519 secret key.");case-5:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 receiver public key.");case-6:throw c._free(w),new Error("Could not convert receiver ed25519 public key to x25519.");case-7:throw c._free(w),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(w),new Error("Could not calculate the shared secret.");case-9:throw c._free(w),new Error("Could not decrypt");default:throw c._free(w),new Error("Unsuccessful decryption attempt")}},sign:Ta,verify:async(e,t,n,r)=>{const a=e.length,o=r?r.wasmMemory:oa(a),s=r??await wa(o),i=s._malloc(a*Uint8Array.BYTES_PER_ELEMENT),c=new Uint8Array(o.buffer,i,a*Uint8Array.BYTES_PER_ELEMENT);c.set(e);const l=s._malloc(Nt),d=new Uint8Array(o.buffer,l,Nt);d.set(t);const u=s._malloc(Kt),m=new Uint8Array(o.buffer,u,Kt);m.set(n);const p=s._verify(a,c.byteOffset,m.byteOffset,d.byteOffset);return s._free(i),s._free(l),s._free(u),0===p},newKeyPair:Aa,generateMnemonic:async(e=128)=>{if(!oo)throw new Error("English wordlist could not be loaded.");if(e%32!=0)throw new TypeError("Mnemonic strength needs to be multiple of 32.");if(![128,160,192,224,256,288,320,352,384,416,448,480,512].includes(e))throw new Error("Wrong mnemonic strength");const t=window.crypto.getRandomValues(new Uint8Array(e/8)),n=t.reduce((e,t)=>e+t.toString(2).padStart(8,"0"),""),r=e/32,a=Uint8Array.from(t),o=await window.crypto.subtle.digest("SHA-512",a);return(n+new Uint8Array(o).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,r)).match(/(.{1,11})/g).map(e=>{const t=parseInt(e,2);return oo[t]}).join(" ")},keyPairFromMnemonic:async(e,t)=>{if(!await io(e))throw new Error("Invalid mnemonic.");const n=new Uint8Array($t),r=new TextEncoder;r.encodeInto("password12345678",n);const a=new Uint8Array($t);if(t){const e=r.encode(t),n=await window.crypto.subtle.digest("SHA-512",e);a.set(new Uint8Array(n).slice(jt-$t,jt))}else a.set(n);const o=await(async(e,t,n)=>{const r=so(e),a=(new TextEncoder).encode(r).buffer,o=new Int8Array(a),s=o.length;t=t??window.crypto.getRandomValues(new Uint8Array($t));const i=n?.wasmMemory??ua(s),c=(n=n??await wa(i))._malloc(zt),l=new Uint8Array(i.buffer,c,zt),d=window.crypto.getRandomValues(new Uint8Array(zt));l.set(d);const u=n._malloc(s*Uint8Array.BYTES_PER_ELEMENT),m=new Int8Array(i.buffer,u,s*Uint8Array.BYTES_PER_ELEMENT);m.set(o);const p=n._malloc($t),f=new Uint8Array(i.buffer,p,$t);f.set(t);const h=n._argon2(s,l.byteOffset,m.byteOffset,f.byteOffset),y=Uint8Array.from(l);if(n._free(c),n._free(u),n._free(p),0===h)return y;throw new Error("Could not generate argon2id for mnemonic.")})(e,a);return await(async e=>{const t=ra(),n=await wa(t),r=n._malloc(Kt),a=new Uint8Array(t.buffer,r,Kt),o=n._malloc(Lt),s=new Uint8Array(t.buffer,o,Lt),i=n._malloc(zt),c=new Uint8Array(t.buffer,i,zt);c.set(e);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")})(o)},MIN_CHUNKS:3,MIN_CHUNK_SIZE:Gr+1,MAX_CHUNK_SIZE:Xr,MIN_PERCENTAGE_FILLED_CHUNK:.1,MAX_PERCENTAGE_FILLED_CHUNK:1,ROOM_URL_LENGTH:64,MessageType:Br,MessageCategory:qr};"undefined"!=typeof window&&(window.p2party=co),exports.default=co,exports.p2party=co;
|
|
1
|
+
"use strict";var e=require("class-validator");var t="0.8.0";function n(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var r=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),a=()=>Math.random().toString(36).substring(7).split("").join("."),o={INIT:`@@redux/INIT${a()}`,REPLACE:`@@redux/REPLACE${a()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${a()}`};function s(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function i(e,t,a){if("function"!=typeof e)throw new Error(n(2));if("function"==typeof t&&"function"==typeof a||"function"==typeof a&&"function"==typeof arguments[3])throw new Error(n(0));if("function"==typeof t&&void 0===a&&(a=t,t=void 0),void 0!==a){if("function"!=typeof a)throw new Error(n(1));return a(i)(e,t)}let c=e,l=t,d=new Map,u=d,m=0,f=!1;function p(){u===d&&(u=new Map,d.forEach((e,t)=>{u.set(t,e)}))}function h(){if(f)throw new Error(n(3));return l}function y(e){if("function"!=typeof e)throw new Error(n(4));if(f)throw new Error(n(5));let t=!0;p();const r=m++;return u.set(r,e),function(){if(t){if(f)throw new Error(n(6));t=!1,p(),u.delete(r),d=null}}}function g(e){if(!s(e))throw new Error(n(7));if(void 0===e.type)throw new Error(n(8));if("string"!=typeof e.type)throw new Error(n(17));if(f)throw new Error(n(9));try{f=!0,l=c(l,e)}finally{f=!1}return(d=u).forEach(e=>{e()}),e}g({type:o.INIT});return{dispatch:g,subscribe:y,getState:h,replaceReducer:function(e){if("function"!=typeof e)throw new Error(n(10));c=e,g({type:o.REPLACE})},[r]:function(){const e=y;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(n(11));function r(){const e=t;e.next&&e.next(h())}r();return{unsubscribe:e(r)}},[r](){return this}}}}}function c(e){const t=Object.keys(e),r={};for(let n=0;n<t.length;n++){const a=t[n];"function"==typeof e[a]&&(r[a]=e[a])}const a=Object.keys(r);let s;try{!function(e){Object.keys(e).forEach(t=>{const r=e[t];if(void 0===r(void 0,{type:o.INIT}))throw new Error(n(12));if(void 0===r(void 0,{type:o.PROBE_UNKNOWN_ACTION()}))throw new Error(n(13))})}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;let o=!1;const i={};for(let s=0;s<a.length;s++){const c=a[s],l=r[c],d=e[c],u=l(d,t);if(void 0===u)throw t&&t.type,new Error(n(14));i[c]=u,o=o||u!==d}return o=o||a.length!==Object.keys(e).length,o?i:e}}function l(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function d(e){return s(e)&&"type"in e&&"string"==typeof e.type}var u=Symbol.for("immer-nothing"),m=Symbol.for("immer-draftable"),f=Symbol.for("immer-state");function p(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var h=Object.getPrototypeOf;function y(e){return!!e&&!!e[f]}function g(e){return!!e&&(b(e)||Array.isArray(e)||!!e[m]||!!e.constructor?.[m]||P(e)||x(e))}var w=Object.prototype.constructor.toString();function b(e){if(!e||"object"!=typeof e)return!1;const t=h(e);if(null===t)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return n===Object||"function"==typeof n&&Function.toString.call(n)===w}function I(e,t){0===v(e)?Reflect.ownKeys(e).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function v(e){const t=e[f];return t?t.type_:Array.isArray(e)?1:P(e)?2:x(e)?3:0}function k(e,t){return 2===v(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function S(e,t){return 2===v(e)?e.get(t):e[t]}function _(e,t,n){const r=v(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function P(e){return e instanceof Map}function x(e){return e instanceof Set}function C(e){return e.copy_||e.base_}function E(e,t){if(P(e))return new Map(e);if(x(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=b(e);if(!0===t||"class_only"===t&&!n){const t=Object.getOwnPropertyDescriptors(e);delete t[f];let n=Reflect.ownKeys(t);for(let r=0;r<n.length;r++){const a=n[r],o=t[a];!1===o.writable&&(o.writable=!0,o.configurable=!0),(o.get||o.set)&&(t[a]={configurable:!0,writable:!0,enumerable:o.enumerable,value:e[a]})}return Object.create(h(e),t)}{const t=h(e);if(null!==t&&n)return{...e};const r=Object.create(t);return Object.assign(r,e)}}function A(e,t=!1){return R(e)||y(e)||!g(e)||(v(e)>1&&Object.defineProperties(e,{set:{value:T},add:{value:T},clear:{value:T},delete:{value:T}}),Object.freeze(e),t&&Object.values(e).forEach(e=>A(e,!0))),e}function T(){p(2)}function R(e){return Object.isFrozen(e)}var M,D={};function U(e){const t=D[e];return t||p(0),t}function O(){return M}function q(e,t){t&&(U("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function B(e){K(e),e.drafts_.forEach(N),e.drafts_=null}function K(e){e===M&&(M=e.parent_)}function j(e){return M={drafts_:[],parent_:M,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function N(e){const t=e[f];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function z(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[f].modified_&&(B(t),p(4)),g(e)&&(e=L(t,e),t.parent_||H(t,e)),t.patches_&&U("Patches").generateReplacementPatches_(n[f].base_,e,t.patches_,t.inversePatches_)):e=L(t,n,[]),B(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==u?e:void 0}function L(e,t,n){if(R(t))return t;const r=t[f];if(!r)return I(t,(a,o)=>F(e,r,t,a,o,n)),t;if(r.scope_!==e)return t;if(!r.modified_)return H(e,r.base_,!0),r.base_;if(!r.finalized_){r.finalized_=!0,r.scope_.unfinalizedDrafts_--;const t=r.copy_;let a=t,o=!1;3===r.type_&&(a=new Set(t),t.clear(),o=!0),I(a,(a,s)=>F(e,r,t,a,s,n,o)),H(e,t,!1),n&&e.patches_&&U("Patches").generatePatches_(r,n,e.patches_,e.inversePatches_)}return r.copy_}function F(e,t,n,r,a,o,s){if(y(a)){const s=L(e,a,o&&t&&3!==t.type_&&!k(t.assigned_,r)?o.concat(r):void 0);if(_(n,r,s),!y(s))return;e.canAutoFreeze_=!1}else s&&n.add(a);if(g(a)&&!R(a)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;L(e,a),t&&t.scope_.parent_||"symbol"==typeof r||!(P(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))||H(e,a)}}function H(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&A(t,n)}var W={get(e,t){if(t===f)return e;const n=C(e);if(!k(n,t))return function(e,t,n){const r=$(t,n);return r?"value"in r?r.value:r.get?.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!g(r)?r:r===Q(e.base_,t)?(X(e),e.copy_[t]=Y(r,e)):r},has:(e,t)=>t in C(e),ownKeys:e=>Reflect.ownKeys(C(e)),set(e,t,n){const r=$(C(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=Q(C(e),t),s=r?.[f];if(s&&s.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(((a=n)===(o=r)?0!==a||1/a==1/o:a!=a&&o!=o)&&(void 0!==n||k(e.base_,t)))return!0;X(e),G(e)}var a,o;return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Q(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,X(e),G(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=C(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){p(11)},getPrototypeOf:e=>h(e.base_),setPrototypeOf(){p(12)}},V={};function Q(e,t){const n=e[f];return(n?C(n):e)[t]}function $(e,t){if(!(t in e))return;let n=h(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=h(n)}}function G(e){e.modified_||(e.modified_=!0,e.parent_&&G(e.parent_))}function X(e){e.copy_||(e.copy_=E(e.base_,e.scope_.immer_.useStrictShallowCopy_))}I(W,(e,t)=>{V[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),V.deleteProperty=function(e,t){return V.set.call(this,e,t,void 0)},V.set=function(e,t,n){return W.set.call(this,e[0],t,n,e[0])};function Y(e,t){const n=P(e)?U("MapSet").proxyMap_(e,t):x(e)?U("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:O(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=r,o=W;n&&(a=[r],o=V);const{revoke:s,proxy:i}=Proxy.revocable(a,o);return r.draft_=i,r.revoke_=s,i}(e,t);return(t?t.scope_:O()).drafts_.push(n),n}function J(e){if(!g(e)||R(e))return e;const t=e[f];let n;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=E(e,t.scope_.immer_.useStrictShallowCopy_)}else n=E(e,!0);return I(n,(e,t)=>{_(n,e,J(t))}),t&&(t.finalized_=!1),n}function Z(){const e="replace",t="add",n="remove";function r(e){if(!g(e))return e;if(Array.isArray(e))return e.map(r);if(P(e))return new Map(Array.from(e.entries()).map(([e,t])=>[e,r(t)]));if(x(e))return new Set(Array.from(e).map(r));const t=Object.create(h(e));for(const n in e)t[n]=r(e[n]);return k(e,m)&&(t[m]=e[m]),t}function a(e){return y(e)?r(e):e}var o,s;s={applyPatches_:function(a,o){return o.forEach(o=>{const{path:s,op:i}=o;let c=a;for(let e=0;e<s.length-1;e++){const t=v(c);let n=s[e];"string"!=typeof n&&"number"!=typeof n&&(n=""+n),0!==t&&1!==t||"__proto__"!==n&&"constructor"!==n||p(19),"function"==typeof c&&"prototype"===n&&p(19),c=S(c,n),"object"!=typeof c&&p(18,s.join("/"))}const l=v(c),d=r(o.value),u=s[s.length-1];switch(i){case e:switch(l){case 2:return c.set(u,d);case 3:p(16);default:return c[u]=d}case t:switch(l){case 1:return"-"===u?c.push(d):c.splice(u,0,d);case 2:return c.set(u,d);case 3:return c.add(d);default:return c[u]=d}case n:switch(l){case 1:return c.splice(u,1);case 2:return c.delete(u);case 3:return c.delete(o.value);default:return delete c[u]}default:p(17)}}),a},generatePatches_:function(r,o,s,i){switch(r.type_){case 0:case 2:return function(r,o,s,i){const{base_:c,copy_:l}=r;I(r.assigned_,(r,d)=>{const u=S(c,r),m=S(l,r),f=d?k(c,r)?e:t:n;if(u===m&&f===e)return;const p=o.concat(r);s.push(f===n?{op:f,path:p}:{op:f,path:p,value:m}),i.push(f===t?{op:n,path:p}:f===n?{op:t,path:p,value:a(u)}:{op:e,path:p,value:a(u)})})}(r,o,s,i);case 1:return function(r,o,s,i){let{base_:c,assigned_:l}=r,d=r.copy_;d.length<c.length&&([c,d]=[d,c],[s,i]=[i,s]);for(let t=0;t<c.length;t++)if(l[t]&&d[t]!==c[t]){const n=o.concat([t]);s.push({op:e,path:n,value:a(d[t])}),i.push({op:e,path:n,value:a(c[t])})}for(let e=c.length;e<d.length;e++){const n=o.concat([e]);s.push({op:t,path:n,value:a(d[e])})}for(let e=d.length-1;c.length<=e;--e){const t=o.concat([e]);i.push({op:n,path:t})}}(r,o,s,i);case 3:return function(e,r,a,o){let{base_:s,copy_:i}=e,c=0;s.forEach(e=>{if(!i.has(e)){const s=r.concat([c]);a.push({op:n,path:s,value:e}),o.unshift({op:t,path:s,value:e})}c++}),c=0,i.forEach(e=>{if(!s.has(e)){const s=r.concat([c]);a.push({op:t,path:s,value:e}),o.unshift({op:n,path:s,value:e})}c++})}(r,o,s,i)}},generateReplacementPatches_:function(t,n,r,a){r.push({op:e,path:[],value:n===u?void 0:n}),a.push({op:e,path:[],value:t})}},D[o="Patches"]||(D[o]=s)}var ee=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const n=t;t=e;const r=this;return function(e=n,...a){return r.produce(e,e=>t.call(this,e,...a))}}let r;if("function"!=typeof t&&p(6),void 0!==n&&"function"!=typeof n&&p(7),g(e)){const a=j(this),o=Y(e,void 0);let s=!0;try{r=t(o),s=!1}finally{s?B(a):K(a)}return q(a,n),z(r,a)}if(!e||"object"!=typeof e){if(r=t(e),void 0===r&&(r=e),r===u&&(r=void 0),this.autoFreeze_&&A(r,!0),n){const t=[],a=[];U("Patches").generateReplacementPatches_(e,r,t,a),n(t,a)}return r}p(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){g(e)||p(8),y(e)&&(e=function(e){y(e)||p(10);return J(e)}(e));const t=j(this),n=Y(e,void 0);return n[f].isManual_=!0,K(t),n}finishDraft(e,t){const n=e&&e[f];n&&n.isManual_||p(9);const{scope_:r}=n;return q(r,t),z(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=U("Patches").applyPatches_;return y(e)?r(e,t):this.produce(e,e=>r(e,t))}},te=ee.produce,ne=ee.produceWithPatches.bind(ee),re=ee.applyPatches.bind(ee);var ae=e=>Array.isArray(e)?e:[e];function oe(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(e=>"function"==typeof e)){const n=e.map(e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e).join(", ");throw new TypeError(`${t}[${n}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}var se="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}};function ie(){return{s:0,v:void 0,o:null,p:null}}function ce(e,t={}){let n={s:0,v:void 0,o:null,p:null};const{resultEqualityCheck:r}=t;let a,o=0;function s(){let t=n;const{length:s}=arguments;for(let e=0,n=s;e<n;e++){const n=arguments[e];if("function"==typeof n||"object"==typeof n&&null!==n){let e=t.o;null===e&&(t.o=e=new WeakMap);const r=e.get(n);void 0===r?(t=ie(),e.set(n,t)):t=r}else{let e=t.p;null===e&&(t.p=e=new Map);const r=e.get(n);void 0===r?(t=ie(),e.set(n,t)):t=r}}const i=t;let c;if(1===t.s)c=t.v;else if(c=e.apply(null,arguments),o++,r){const e=a?.deref?.()??a;null!=e&&r(e,c)&&(c=e,0!==o&&o--);a="object"==typeof c&&null!==c||"function"==typeof c?new se(c):c}return i.s=1,i.v=c,c}return s.clearCache=()=>{n={s:0,v:void 0,o:null,p:null},s.resetResultsCount()},s.resultsCount=()=>o,s.resetResultsCount=()=>{o=0},s}function le(e,...t){const n="function"==typeof e?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t,r=0,a=0,o={},s=e.pop();"object"==typeof s&&(o=s,s=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(s,`createSelector expects an output function after the inputs, but received: [${typeof s}]`);const i={...n,...o},{memoize:c,memoizeOptions:l=[],argsMemoize:d=ce,argsMemoizeOptions:u=[]}=i,m=ae(l),f=ae(u),p=oe(e),h=c(function(){return r++,s.apply(null,arguments)},...m),y=d(function(){a++;const e=function(e,t){const n=[],{length:r}=e;for(let a=0;a<r;a++)n.push(e[a].apply(null,t));return n}(p,arguments);return t=h.apply(null,e),t},...f);return Object.assign(y,{resultFunc:s,memoizedResultFunc:h,dependencies:p,dependencyRecomputations:()=>a,resetDependencyRecomputations:()=>{a=0},lastResult:()=>t,recomputations:()=>r,resetRecomputations:()=>{r=0},memoize:c,argsMemoize:d})};return Object.assign(r,{withTypes:()=>r}),r}var de=le(ce),ue=Object.assign((e,t=de)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>ue});function me(e){return({dispatch:t,getState:n})=>r=>a=>"function"==typeof a?a(t,n,e):r(a)}var fe=me(),pe=me,he="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?l:l.apply(null,arguments)};function ye(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw new Error(Ct(0));return{type:e,payload:r.payload,..."meta"in r&&{meta:r.meta},..."error"in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>d(t)&&t.type===e,n}var ge=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function we(e){return g(e)?te(e,()=>{}):e}function be(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var Ie="RTK_autoBatch",ve=()=>e=>({payload:e,meta:{[Ie]:!0}}),ke=e=>t=>{setTimeout(t,e)},Se=e=>function(t){const{autoBatch:n=!0}=t??{};let r=new ge(e);return n&&r.push(((e={type:"raf"})=>t=>(...n)=>{const r=t(...n);let a=!0,o=!1,s=!1;const i=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?"undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:ke(10):"callback"===e.type?e.queueNotification:ke(e.timeout),l=()=>{s=!1,o&&(o=!1,i.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){const t=r.subscribe(()=>a&&e());return i.add(e),()=>{t(),i.delete(e)}},dispatch(e){try{return a=!e?.meta?.[Ie],o=!a,o&&(s||(s=!0,c(l))),r.dispatch(e)}finally{a=!0}}})})("object"==typeof n?n:void 0)),r};function _e(e){const t={},n=[];let r;const a={addCase(e,n){const r="string"==typeof e?e:e.type;if(!r)throw new Error(Ct(28));if(r in t)throw new Error(Ct(29));return t[r]=n,a},addAsyncThunk:(e,r)=>(r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),a),addMatcher:(e,t)=>(n.push({matcher:e,reducer:t}),a),addDefaultCase:e=>(r=e,a)};return e(a),[t,n,r]}var Pe=(e,t)=>{return(n=e)&&"function"==typeof n.match?e.match(t):e(t);var n};function xe(...e){return t=>e.some(e=>Pe(e,t))}function Ce(...e){return t=>e.every(e=>Pe(e,t))}function Ee(e,t){if(!e||!e.meta)return!1;const n="string"==typeof e.meta.requestId,r=t.indexOf(e.meta.requestStatus)>-1;return n&&r}function Ae(e){return"function"==typeof e[0]&&"pending"in e[0]&&"fulfilled"in e[0]&&"rejected"in e[0]}function Te(...e){return 0===e.length?e=>Ee(e,["pending"]):Ae(e)?xe(...e.map(e=>e.pending)):Te()(e[0])}function Re(...e){return 0===e.length?e=>Ee(e,["rejected"]):Ae(e)?xe(...e.map(e=>e.rejected)):Re()(e[0])}function Me(...e){const t=e=>e&&e.meta&&e.meta.rejectedWithValue;return 0===e.length||Ae(e)?Ce(Re(...e),t):Me()(e[0])}function De(...e){return 0===e.length?e=>Ee(e,["fulfilled"]):Ae(e)?xe(...e.map(e=>e.fulfilled)):De()(e[0])}function Ue(...e){return 0===e.length?e=>Ee(e,["pending","fulfilled","rejected"]):Ae(e)?xe(...e.flatMap(e=>[e.pending,e.rejected,e.fulfilled])):Ue()(e[0])}var Oe=(e=21)=>{let t="",n=e;for(;n--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t},qe=["name","message","stack","code"],Be=class{constructor(e,t){this.payload=e,this.meta=t}_type},Ke=class{constructor(e,t){this.payload=e,this.meta=t}_type},je=e=>{if("object"==typeof e&&null!==e){const t={};for(const n of qe)"string"==typeof e[n]&&(t[n]=e[n]);return t}return{message:String(e)}},Ne="External signal was aborted",ze=(()=>{function e(e,t,n){const r=ye(e+"/fulfilled",(e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:"fulfilled"}})),a=ye(e+"/pending",(e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:"pending"}})),o=ye(e+"/rejected",(e,t,r,a,o)=>({payload:a,error:(n&&n.serializeError||je)(e||"Rejected"),meta:{...o||{},arg:r,requestId:t,rejectedWithValue:!!a,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}}));return Object.assign(function(e,{signal:s}={}){return(i,c,l)=>{const d=n?.idGenerator?n.idGenerator(e):Oe(),u=new AbortController;let m,f;function p(e){f=e,u.abort()}s&&(s.aborted?p(Ne):s.addEventListener("abort",()=>p(Ne),{once:!0}));const h=async function(){let s;try{let o=n?.condition?.(e,{getState:c,extra:l});if(null!==(h=o)&&"object"==typeof h&&"function"==typeof h.then&&(o=await o),!1===o||u.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const y=new Promise((e,t)=>{m=()=>{t({name:"AbortError",message:f||"Aborted"})},u.signal.addEventListener("abort",m)});i(a(d,e,n?.getPendingMeta?.({requestId:d,arg:e},{getState:c,extra:l}))),s=await Promise.race([y,Promise.resolve(t(e,{dispatch:i,getState:c,extra:l,requestId:d,signal:u.signal,abort:p,rejectWithValue:(e,t)=>new Be(e,t),fulfillWithValue:(e,t)=>new Ke(e,t)})).then(t=>{if(t instanceof Be)throw t;return t instanceof Ke?r(t.payload,d,e,t.meta):r(t,d,e)})])}catch(t){s=t instanceof Be?o(null,d,e,t.payload,t.meta):o(t,d,e)}finally{m&&u.signal.removeEventListener("abort",m)}var h;return n&&!n.dispatchConditionRejection&&o.match(s)&&s.meta.condition||i(s),s}();return Object.assign(h,{abort:p,requestId:d,arg:e,unwrap:()=>h.then(Le)})}},{pending:a,rejected:o,fulfilled:r,settled:xe(o,r),typePrefix:e})}return e.withTypes=()=>e,e})();function Le(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var Fe=Symbol.for("rtk-slice-createasyncthunk");function He(e,t){return`${e}/${t}`}function We({creators:e}={}){const t=e?.asyncThunk?.[Fe];return function(e){const{name:n,reducerPath:r=n}=e;if(!n)throw new Error(Ct(11));const a=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},o=Object.keys(a),s={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},i={addCase(e,t){const n="string"==typeof e?e:e.type;if(!n)throw new Error(Ct(12));if(n in s.sliceCaseReducersByType)throw new Error(Ct(13));return s.sliceCaseReducersByType[n]=t,i},addMatcher:(e,t)=>(s.sliceMatchers.push({matcher:e,reducer:t}),i),exposeAction:(e,t)=>(s.actionCreators[e]=t,i),exposeCaseReducer:(e,t)=>(s.sliceCaseReducersByName[e]=t,i)};function c(){const[t={},n=[],r]="function"==typeof e.extraReducers?_e(e.extraReducers):[e.extraReducers],a={...t,...s.sliceCaseReducersByType};return function(e,t){let n,[r,a,o]=_e(t);if("function"==typeof e)n=()=>we(e());else{const t=we(e);n=()=>t}function s(e=n(),t){let s=[r[t.type],...a.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return 0===s.filter(e=>!!e).length&&(s=[o]),s.reduce((e,n)=>{if(n){if(y(e)){const r=n(e,t);return void 0===r?e:r}if(g(e))return te(e,e=>n(e,t));{const r=n(e,t);if(void 0===r){if(null===e)return e;throw Error("A case reducer on a non-draftable value must not return undefined")}return r}}return e},e)}return s.getInitialState=n,s}(e.initialState,e=>{for(let t in a)e.addCase(t,a[t]);for(let t of s.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}o.forEach(r=>{const o=a[r],s={reducerName:r,type:He(n,r),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(o)?function({type:e,reducerName:t,createNotation:n},r,a){let o,s;if("reducer"in r){if(n&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(r))throw new Error(Ct(17));o=r.reducer,s=r.prepare}else o=r;a.addCase(e,o).exposeCaseReducer(t,o).exposeAction(t,s?ye(e,s):ye(e))}(s,o,i):function({type:e,reducerName:t},n,r,a){if(!a)throw new Error(Ct(18));const{payloadCreator:o,fulfilled:s,pending:i,rejected:c,settled:l,options:d}=n,u=a(e,o,d);r.exposeAction(t,u),s&&r.addCase(u.fulfilled,s);i&&r.addCase(u.pending,i);c&&r.addCase(u.rejected,c);l&&r.addMatcher(u.settled,l);r.exposeCaseReducer(t,{fulfilled:s||$e,pending:i||$e,rejected:c||$e,settled:l||$e})}(s,o,i,t)});const l=e=>e,d=new Map,u=new WeakMap;let m;function f(e,t){return m||(m=c()),m(e,t)}function p(){return m||(m=c()),m.getInitialState()}function h(t,n=!1){function r(e){let a=e[t];return void 0===a&&n&&(a=be(u,r,p)),a}function a(t=l){const r=be(d,n,()=>new WeakMap);return be(r,t,()=>{const r={};for(const[a,o]of Object.entries(e.selectors??{}))r[a]=Ve(o,t,()=>be(u,t,p),n);return r})}return{reducerPath:t,getSelectors:a,get selectors(){return a(r)},selectSlice:r}}const w={name:n,reducer:f,actions:s.actionCreators,caseReducers:s.sliceCaseReducersByName,getInitialState:p,...h(r),injectInto(e,{reducerPath:t,...n}={}){const a=t??r;return e.inject({reducerPath:a,reducer:f},n),{...w,...h(a,!0)}}};return w}}function Ve(e,t,n,r){function a(a,...o){let s=t(a);return void 0===s&&r&&(s=n()),e(s,...o)}return a.unwrapped=e,a}var Qe=We();function $e(){}var Ge="listener",Xe="completed",Ye="cancelled",Je=`task-${Ye}`,Ze=`task-${Xe}`,et=`${Ge}-${Ye}`,tt=`${Ge}-${Xe}`,nt=class{constructor(e){this.code=e,this.message=`task ${Ye} (reason: ${e})`}name="TaskAbortError";message},rt=(e,t)=>{if("function"!=typeof e)throw new TypeError(Ct(32))},at=()=>{},ot=(e,t=at)=>(e.catch(t),e),st=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),it=(e,t)=>{const n=e.signal;n.aborted||("reason"in n||Object.defineProperty(n,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},ct=e=>{if(e.aborted){const{reason:t}=e;throw new nt(t)}};function lt(e,t){let n=at;return new Promise((r,a)=>{const o=()=>a(new nt(e.reason));e.aborted?o():(n=st(e,o),t.finally(()=>n()).then(r,a))}).finally(()=>{n=at})}var dt=e=>t=>ot(lt(e,t).then(t=>(ct(e),t))),ut=e=>{const t=dt(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:mt}=Object,ft={},pt="listenerMiddleware",ht=(e,t)=>(n,r)=>{rt(n);const a=new AbortController;var o;o=a,st(e,()=>it(o,e.reason));const s=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof nt?"cancelled":"rejected",error:e}}finally{t?.()}})(async()=>{ct(e),ct(a.signal);const t=await n({pause:dt(a.signal),delay:ut(a.signal),signal:a.signal});return ct(a.signal),t},()=>it(a,Ze));return r?.autoJoin&&t.push(s.catch(at)),{result:dt(e)(s),cancel(){it(a,Je)}}},yt=(e,t)=>(n,r)=>ot((async(n,r)=>{ct(t);let a=()=>{};const o=[new Promise((t,r)=>{let o=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});a=()=>{o(),r()}})];null!=r&&o.push(new Promise(e=>setTimeout(e,r,null)));try{const e=await lt(t,Promise.race(o));return ct(t),e}finally{a()}})(n,r)),gt=e=>{let{type:t,actionCreator:n,matcher:r,predicate:a,effect:o}=e;if(t)a=ye(t).match;else if(n)t=n.type,a=n.match;else if(r)a=r;else if(!a)throw new Error(Ct(21));return rt(o),{predicate:a,type:t,effect:o}},wt=mt(e=>{const{type:t,predicate:n,effect:r}=gt(e);return{id:Oe(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw new Error(Ct(22))}}},{withTypes:()=>wt}),bt=(e,t)=>{const{type:n,effect:r,predicate:a}=gt(t);return Array.from(e.values()).find(e=>("string"==typeof n?e.type===n:e.predicate===a)&&e.effect===r)},It=e=>{e.pending.forEach(e=>{it(e,et)})},vt=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},kt=mt(ye(`${pt}/add`),{withTypes:()=>kt}),St=ye(`${pt}/removeAll`),_t=mt(ye(`${pt}/remove`),{withTypes:()=>_t}),Pt=(...e)=>{console.error(`${pt}/error`,...e)},xt=(e={})=>{const t=new Map,{extra:n,onError:r=Pt}=e;rt(r);const a=e=>(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&It(e)}))(bt(t,e)??wt(e));mt(a,{withTypes:()=>a});const o=e=>{const n=bt(t,e);return n&&(n.unsubscribe(),e.cancelActive&&It(n)),!!n};mt(o,{withTypes:()=>o});const s=async(e,o,s,i)=>{const c=new AbortController,l=yt(a,c.signal),d=[];try{e.pending.add(c),await Promise.resolve(e.effect(o,mt({},s,{getOriginalState:i,condition:(e,t)=>l(e,t).then(Boolean),take:l,delay:ut(c.signal),pause:dt(c.signal),extra:n,signal:c.signal,fork:ht(c.signal,d),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==c&&(it(e,et),n.delete(e))})},cancel:()=>{it(c,et),e.pending.delete(c)},throwIfCancelled:()=>{ct(c.signal)}})))}catch(e){e instanceof nt||vt(r,e,{raisedBy:"effect"})}finally{await Promise.all(d),it(c,tt),e.pending.delete(c)}},i=(e=>()=>{e.forEach(It),e.clear()})(t);return{middleware:e=>n=>c=>{if(!d(c))return n(c);if(kt.match(c))return a(c.payload);if(St.match(c))return void i();if(_t.match(c))return o(c.payload);let l=e.getState();const u=()=>{if(l===ft)throw new Error(Ct(23));return l};let m;try{if(m=n(c),t.size>0){const n=e.getState(),a=Array.from(t.values());for(const t of a){let a=!1;try{a=t.predicate(c,n,l)}catch(e){a=!1,vt(r,e,{raisedBy:"predicate"})}a&&s(t,c,e,u)}}}finally{l=ft}return m},startListening:a,stopListening:o,clearListeners:i}};function Ct(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}const Et=Qe({name:"commonState",initialState:{currentRoomUrl:""},reducers:{setCurrentRoomUrl:(e,t)=>{e.currentRoomUrl=t.payload}}}),{setCurrentRoomUrl:At}=Et.actions;var Tt=Et.reducer;const Rt={peerId:localStorage.getItem("peerId")??"",challengeId:localStorage.getItem("challengeId")??"",publicKey:localStorage.getItem("publicKey")??"",secretKey:localStorage.getItem("secretKey")??"",challenge:localStorage.getItem("challenge")??"",signature:localStorage.getItem("signature")??""},Mt=Qe({name:"keyPair",initialState:Rt,reducers:{setKeyPair:(e,t)=>{const{publicKey:n,secretKey:r}=t.payload;64===n.length&&128===r.length&&(e.publicKey=t.payload.publicKey,e.secretKey=t.payload.secretKey)},setReconnectData:(t,n)=>{const{peerId:r,challenge:a,signature:o,challengeId:s}=n.payload;e.isUUID(r,4)&&e.isUUID(s)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(t.peerId=r,t.challenge=a,t.signature=o,t.challengeId=s)},setPeerData:(t,n)=>{const{peerId:r,challenge:a,signature:o}=n.payload;e.isUUID(r,4)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(t.peerId=r,t.challenge=a,t.signature=o)},setChallengeId:(t,n)=>{const{challengeId:r}=n.payload;e.isUUID(r)&&(t.challengeId=r)},resetIdentity:(e,t)=>({peerId:"",challengeId:"",publicKey:"",secretKey:"",challenge:"",signature:""})}}),{setKeyPair:Dt,setReconnectData:Ut,setPeerData:Ot,setChallengeId:qt,resetIdentity:Bt}=Mt.actions;var Kt=Mt.reducer;const jt=64*Uint8Array.BYTES_PER_ELEMENT,Nt=64*Uint8Array.BYTES_PER_ELEMENT,zt=32*Uint8Array.BYTES_PER_ELEMENT,Lt=32*Uint8Array.BYTES_PER_ELEMENT,Ft=64*Uint8Array.BYTES_PER_ELEMENT,Ht=16*Uint8Array.BYTES_PER_ELEMENT,Wt=32*Uint8Array.BYTES_PER_ELEMENT,Vt=32*Uint8Array.BYTES_PER_ELEMENT,Qt=12*Uint8Array.BYTES_PER_ELEMENT,$t=12*Uint8Array.BYTES_PER_ELEMENT,Gt=16*Uint8Array.BYTES_PER_ELEMENT,Xt=e=>$t+e+Ht,Yt=e=>e-$t-Ht,Jt={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"},Zt=Qe({name:"rooms",initialState:[],reducers:{setRoom:(t,n)=>{const{url:r,id:a,canBeConnectionRelay:o,rtcConfig:s,onlyConnectWithKnownPeers:i}=n.payload;if(64===r.length&&e.isUUID(a)){const e=t.findIndex(e=>e.url===r||e.id===a);e>-1?(t[e].url=r,t[e].id=a,null!=o&&(t[e].canBeConnectionRelay=o),s&&(t[e].rtcConfig=s),t[e].onlyConnectWithKnownAddresses=null!=i?i:"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers")):t.push({url:r,id:a,connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:o??!0,onlyConnectWithKnownAddresses:i??"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers"),rtcConfig:s??Jt,peers:[],channels:[],messages:[]})}else if(64===r.length){const e=t.findIndex(e=>e.url===r);e>-1?(t[e].url=r,t[e].id="",null!=o&&(t[e].canBeConnectionRelay=o),s&&(t[e].rtcConfig=s),t[e].onlyConnectWithKnownAddresses=null!=i?i:"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers")):t.push({url:r,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:o??!0,onlyConnectWithKnownAddresses:i??"true"===localStorage.getItem(r+"-onlyConnectWithKnownPeers"),rtcConfig:s??Jt,peers:[],channels:[],messages:[]})}},setConnectingToPeers:(e,t)=>{const{roomId:n,connectingToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=r)},setConnectedToPeers:(e,t)=>{const{roomId:n,connectedToPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].connectingToPeers=!1,e[a].connectedToPeers=r)},setConnectionRelay:(e,t)=>{const{roomId:n,canBeConnectionRelay:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].canBeConnectionRelay=r)},setPeer:(e,t)=>{const{roomId:n,peerId:r,peerPublicKey:a}=t.payload,o=e.findIndex(e=>e.id===n);if(o>-1){-1===e[o].peers.findIndex(e=>e.peerId===r)&&e[o].peers.push({peerId:r,peerPublicKey:a})}},deletePeer:(e,t)=>{const n=e.length;for(let r=0;r<n;r++){const n=e[r].peers.findIndex(e=>e.peerId===t.payload.peerId);n>-1&&e[r].peers.splice(n,1)}},setChannel:(e,t)=>{const{roomId:n,label:r,peerId:a}=t.payload,o=e.findIndex(e=>e.id===n);if(o>-1){const t=e[o].channels.findIndex(e=>e.label===r);if(t>-1){-1===e[o].channels[t].peerIds.findIndex(e=>e===a)&&e[o].channels[t].peerIds.push(a)}else e[o].channels.push({label:r,peerIds:[a]})}},deleteChannel:(e,t)=>{const{peerId:n,label:r}=t.payload,a=e.length;for(let t=0;t<a;t++)if(r&&!n){const n=e[t].channels.findIndex(e=>e.label===r);n>-1&&e[t].channels.splice(n,1)}else if(!r&&n){const r=e[t].channels.length;for(let a=0;a<r;a++){const r=e[t].channels[t].peerIds.findIndex(e=>e===n);r>-1&&(e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1))}}else if(n&&r){const a=e[t].channels.findIndex(e=>e.label===r&&e.peerIds.includes(n));if(a>-1){const r=e[t].channels[a].peerIds.findIndex(e=>e===n);e[t].channels[a].peerIds.splice(r,1),0===e[t].channels[a].peerIds.length&&e[t].channels.splice(a,1)}}},setIceServers:(e,t)=>{const{roomId:n,iceServers:r}=t.payload,a=e.findIndex(e=>e.id===n);if(a>-1){const t=r.length,n=e[a].rtcConfig.iceServers?.flatMap(e=>Array.isArray(e.urls)?e.urls:[e.urls])??[];for(let o=0;o<t;o++){const t=r[o].urls.length;let s=!1;for(let e=0;e<t;e++)if(!n.includes(r[o].urls[e])){s=!0;break}s&&e[a].rtcConfig.iceServers?.push(r[o])}}},setMessage:(t,n)=>{const{roomId:r,merkleRootHex:a,sha512Hex:o,filename:s,channelLabel:i,fromPeerId:c,messageType:l,chunkSize:d,totalSize:u,chunksCreated:m,totalChunks:f,timestamp:p}=n.payload,h=t.findIndex(e=>e.id===r);if(h>-1){const n=t[h].messages.findLastIndex(e=>e.merkleRootHex===a||e.sha512Hex===o&&0===e.merkleRootHex.length);-1===n?i&&c&&e.isUUID(c)&&l&&u&&t[h].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:i,filename:s.length>0?s:"txt",messageType:l,fromPeerId:c,timestamp:p??Date.now(),savedSize:d>0?d:0,totalSize:u,chunksCreated:m??0,totalChunks:f??0}):t[h].messages[n].timestamp!==p&&t[h].messages[n].sha512Hex===o&&t[h].messages[n].savedSize===t[h].messages[n].totalSize?t[h].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:i,filename:s.length>0?s:"txt",messageType:l,fromPeerId:c,timestamp:p??Date.now(),savedSize:d,totalSize:u,chunksCreated:m??0,totalChunks:f??0}):(a.length===2*jt&&""===t[h].messages[n].merkleRootHex&&(t[h].messages[n].merkleRootHex=a),u>0&&t[h].messages[n].totalSize!==u&&(t[h].messages[n].totalSize=u),d>0&&t[h].messages[n].totalSize>=t[h].messages[n].savedSize+d&&(t[h].messages[n].savedSize+=d),m&&m<=t[h].messages[n].totalChunks&&(t[h].messages[n].chunksCreated=m+1))}},setMessageAllChunks:(t,n)=>{const{roomId:r,merkleRootHex:a,sha512Hex:o,channelLabel:s,filename:i,messageType:c,fromPeerId:l,timestamp:d,totalSize:u}=n.payload,m=t.findIndex(e=>e.id===r);if(m>-1){const n=t[m].messages.findLastIndex(e=>e.merkleRootHex===a);-1===n&&s&&l&&e.isUUID(l)&&c&&u||n>-1&&t[m].messages[n].timestamp<d?t[m].messages.push({merkleRootHex:a,sha512Hex:o,channelLabel:s,filename:i.length>0?i:"txt",messageType:c,fromPeerId:l,timestamp:d,savedSize:u,totalSize:u,chunksCreated:0,totalChunks:0}):n>-1&&t[m].messages[n].savedSize!==u&&(t[m].messages[n].savedSize=u)}},deleteMessage:(e,t)=>{const{merkleRootHex:n,hashHex:r}=t.payload;if(!n&&!r)return;if(n&&n.length!==2*jt)return;if(r&&r.length!==2*jt)return;const a=e.length;for(let t=0;t<a;t++)if(n){const r=e[t].messages.findIndex(e=>e.merkleRootHex===n);r>-1&&e[t].messages.splice(r,1)}else if(r){const n=e[t].messages.findLastIndex(e=>e.sha512Hex===r);n>-1&&e[t].messages.splice(n,1)}},setOnlyConnectWithKnownPeers:(e,t)=>{const{roomId:n,onlyConnectWithKnownPeers:r}=t.payload,a=e.findIndex(e=>e.id===n);a>-1&&(e[a].onlyConnectWithKnownAddresses=r)},deleteRoom:(e,t)=>{const n=e.findIndex(e=>e.url===t.payload||e.id===t.payload);if(n>-1){const t=e[n].url;e[n]={url:t,id:"",connectingToPeers:!1,connectedToPeers:!1,canBeConnectionRelay:!0,onlyConnectWithKnownAddresses:!1,rtcConfig:Jt,peers:[],channels:[],messages:[]}}}}}),{setRoom:en,setConnectingToPeers:tn,setConnectedToPeers:nn,setConnectionRelay:rn,setOnlyConnectWithKnownPeers:an,setPeer:on,setChannel:sn,setIceServers:cn,setMessage:ln,setMessageAllChunks:dn,deletePeer:un,deleteChannel:mn,deleteMessage:fn,deleteRoom:pn}=Zt.actions;var hn=Zt.reducer;const yn="wss://signaling.p2party.com/ws",gn=Qe({name:"signalingServer",initialState:{isEstablishingConnection:!1,isConnected:!1,serverUrl:yn},reducers:{startConnecting:(e,t)=>{e.isEstablishingConnection=!0,e.serverUrl=t.payload??yn},connectionEstablished:e=>{e.isConnected=!0,e.isEstablishingConnection=!1},disconnect:e=>{e.isConnected=!1,e.isEstablishingConnection=!1}}}),wn=gn.actions;var bn=gn.reducer,In=class extends Error{issues;constructor(e){super(e[0].message),this.name="SchemaError",this.issues=e}};function vn(e){return{status:e,isUninitialized:"uninitialized"===e,isLoading:"pending"===e,isSuccess:"fulfilled"===e,isError:"rejected"===e}}var kn=s;function Sn(e,t){if(e===t||!(kn(e)&&kn(t)||Array.isArray(e)&&Array.isArray(t)))return t;const n=Object.keys(t),r=Object.keys(e);let a=n.length===r.length;const o=Array.isArray(t)?[]:{};for(const r of n)o[r]=Sn(e[r],t[r]),a&&(a=e[r]===o[r]);return a?e:o}function _n(e){let t=0;for(const n in e)t++;return t}var Pn=e=>[].concat(...e);function xn(e){return null!=e}function Cn(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}var En=()=>new Map,An=class{constructor(e,t=void 0){this.value=e,this.meta=t}},Tn=ye("__rtkq/focused"),Rn=ye("__rtkq/unfocused"),Mn=ye("__rtkq/online"),Dn=ye("__rtkq/offline");function Un(e){return"query"===e.type}function On(e){return"infinitequery"===e.type}function qn(e){return Un(e)||On(e)}function Bn(e,t,n,r,a,o){return"function"==typeof e?e(t,n,r,a).filter(xn).map(Kn).map(o):Array.isArray(e)?e.map(Kn).map(o):[]}function Kn(e){return"string"==typeof e?{type:e}:e}var jn=Symbol("forceQueryFn"),Nn=e=>"function"==typeof e[jn];var zn=class extends In{constructor(e,t,n,r){super(e),this.value=t,this.schemaName=n,this._bqMeta=r}},Ln=(e,t)=>Array.isArray(e)?e.includes(t):!!e;async function Fn(e,t,n,r){const a=await e["~standard"].validate(t);if(a.issues)throw new zn(a.issues,t,n,r);return a.value}function Hn(e){return e}var Wn=(e={})=>({...e,[Ie]:!0});function Vn(e,{pages:t,pageParams:n},r){const a=t.length-1;return e.getNextPageParam(t[a],t,n[a],n,r)}function Qn(e,{pages:t,pageParams:n},r){return e.getPreviousPageParam?.(t[0],t,n[0],n,r)}function $n(e,t,n,r){return Bn(n[e.meta.arg.endpointName][t],De(e)?e.payload:void 0,Me(e)?e.payload:void 0,e.meta.arg.originalArgs,"baseQueryMeta"in e.meta?e.meta.baseQueryMeta:void 0,r)}function Gn(e,t,n){const r=e[t];r&&n(r)}function Xn(e){return("arg"in e?e.arg.fixedCacheKey:e.fixedCacheKey)??e.requestId}function Yn(e,t,n){const r=e[Xn(t)];r&&n(r)}var Jn={};function Zn({reducerPath:e,queryThunk:t,mutationThunk:n,serializeQueryArgs:r,context:{endpointDefinitions:a,apiUid:o,extractRehydrationInfo:s,hasRehydrationInfo:i},assertTagType:l,config:d}){const u=ye(`${e}/resetApiState`);function m(e,t,n,r){e[t.queryCacheKey]??={status:"uninitialized",endpointName:t.endpointName},Gn(e,t.queryCacheKey,e=>{e.status="pending",e.requestId=n&&e.requestId?e.requestId:r.requestId,void 0!==t.originalArgs&&(e.originalArgs=t.originalArgs),e.startedTimeStamp=r.startedTimeStamp;On(a[r.arg.endpointName])&&"direction"in t&&(e.direction=t.direction)})}function h(e,t,n,r){Gn(e,t.arg.queryCacheKey,e=>{if(e.requestId!==t.requestId&&!r)return;const{merge:o}=a[t.arg.endpointName];if(e.status="fulfilled",o)if(void 0!==e.data){const{fulfilledTimeStamp:r,arg:a,baseQueryMeta:s,requestId:i}=t;let c=te(e.data,e=>o(e,n,{arg:a.originalArgs,baseQueryMeta:s,fulfilledTimeStamp:r,requestId:i}));e.data=c}else e.data=n;else e.data=a[t.arg.endpointName].structuralSharing??1?Sn(y(e.data)?(y(s=e.data)||p(15),s[f].base_):e.data,n):n;var s;delete e.error,e.fulfilledTimeStamp=t.fulfilledTimeStamp})}const g=Qe({name:`${e}/queries`,initialState:Jn,reducers:{removeQueryResult:{reducer(e,{payload:{queryCacheKey:t}}){delete e[t]},prepare:ve()},cacheEntriesUpserted:{reducer(e,t){for(const n of t.payload){const{queryDescription:r,value:a}=n;m(e,r,!0,{arg:r,requestId:t.meta.requestId,startedTimeStamp:t.meta.timestamp}),h(e,{arg:r,requestId:t.meta.requestId,fulfilledTimeStamp:t.meta.timestamp,baseQueryMeta:{}},a,!0)}},prepare:e=>({payload:e.map(e=>{const{endpointName:t,arg:n,value:o}=e,s=a[t];return{queryDescription:{type:"query",endpointName:t,originalArgs:e.arg,queryCacheKey:r({queryArgs:n,endpointDefinition:s,endpointName:t})},value:o}}),meta:{[Ie]:!0,requestId:Oe(),timestamp:Date.now()}})},queryResultPatched:{reducer(e,{payload:{queryCacheKey:t,patches:n}}){Gn(e,t,e=>{e.data=re(e.data,n.concat())})},prepare:ve()}},extraReducers(e){e.addCase(t.pending,(e,{meta:t,meta:{arg:n}})=>{m(e,n,Nn(n),t)}).addCase(t.fulfilled,(e,{meta:t,payload:n})=>{h(e,t,n,Nn(t.arg))}).addCase(t.rejected,(e,{meta:{condition:t,arg:n,requestId:r},error:a,payload:o})=>{Gn(e,n.queryCacheKey,e=>{if(t);else{if(e.requestId!==r)return;e.status="rejected",e.error=o??a}})}).addMatcher(i,(e,t)=>{const{queries:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||(e[t]=r)})}}),w=Qe({name:`${e}/mutations`,initialState:Jn,reducers:{removeMutationResult:{reducer(e,{payload:t}){const n=Xn(t);n in e&&delete e[n]},prepare:ve()}},extraReducers(e){e.addCase(n.pending,(e,{meta:t,meta:{requestId:n,arg:r,startedTimeStamp:a}})=>{r.track&&(e[Xn(t)]={requestId:n,status:"pending",endpointName:r.endpointName,startedTimeStamp:a})}).addCase(n.fulfilled,(e,{payload:t,meta:n})=>{n.arg.track&&Yn(e,n,e=>{e.requestId===n.requestId&&(e.status="fulfilled",e.data=t,e.fulfilledTimeStamp=n.fulfilledTimeStamp)})}).addCase(n.rejected,(e,{payload:t,error:n,meta:r})=>{r.arg.track&&Yn(e,r,e=>{e.requestId===r.requestId&&(e.status="rejected",e.error=t??n)})}).addMatcher(i,(e,t)=>{const{mutations:n}=s(t);for(const[t,r]of Object.entries(n))"fulfilled"!==r?.status&&"rejected"!==r?.status||t===r?.requestId||(e[t]=r)})}}),b=Qe({name:`${e}/invalidation`,initialState:{tags:{},keys:{}},reducers:{updateProvidedBy:{reducer(e,t){for(const{queryCacheKey:n,providedTags:r}of t.payload){I(e,n);for(const{type:t,id:a}of r){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];r.includes(n)||r.push(n)}e.keys[n]=r}},prepare:ve()}},extraReducers(e){e.addCase(g.actions.removeQueryResult,(e,{payload:{queryCacheKey:t}})=>{I(e,t)}).addMatcher(i,(e,t)=>{const{provided:n}=s(t);for(const[t,r]of Object.entries(n.tags??{}))for(const[a,o]of Object.entries(r)){const r=(e.tags[t]??={})[a||"__internal_without_id"]??=[];for(const t of o){r.includes(t)||r.push(t),e.keys[t]=n.keys[t]}}}).addMatcher(xe(De(t),Me(t)),(e,t)=>{v(e,[t])}).addMatcher(g.actions.cacheEntriesUpserted.match,(e,t)=>{v(e,t.payload.map(({queryDescription:e,value:t})=>({type:"UNKNOWN",payload:t,meta:{requestStatus:"fulfilled",requestId:"UNKNOWN",arg:e}})))})}});function I(e,t){const n=e.keys[t]??[];for(const r of n){const n=r.type,a=r.id??"__internal_without_id",o=e.tags[n]?.[a];o&&(e.tags[n][a]=o.filter(e=>e!==t))}delete e.keys[t]}function v(e,t){const n=t.map(e=>{const t=$n(e,"providesTags",a,l),{queryCacheKey:n}=e.meta.arg;return{queryCacheKey:n,providedTags:t}});b.caseReducers.updateProvidedBy(e,b.actions.updateProvidedBy(n))}const k=Qe({name:`${e}/subscriptions`,initialState:Jn,reducers:{updateSubscriptionOptions(e,t){},unsubscribeQueryResult(e,t){},internal_getRTKQSubscriptions(){}}}),S=Qe({name:`${e}/internalSubscriptions`,initialState:Jn,reducers:{subscriptionsUpdated:{reducer:(e,t)=>re(e,t.payload),prepare:ve()}}}),_=Qe({name:`${e}/config`,initialState:{online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine,focused:"undefined"==typeof document||"hidden"!==document.visibilityState,middlewareRegistered:!1,...d},reducers:{middlewareRegistered(e,{payload:t}){e.middlewareRegistered="conflict"!==e.middlewareRegistered&&o===t||"conflict"}},extraReducers:e=>{e.addCase(Mn,e=>{e.online=!0}).addCase(Dn,e=>{e.online=!1}).addCase(Tn,e=>{e.focused=!0}).addCase(Rn,e=>{e.focused=!1}).addMatcher(i,e=>({...e}))}}),P=c({queries:g.reducer,mutations:w.reducer,provided:b.reducer,subscriptions:S.reducer,config:_.reducer});return{reducer:(e,t)=>P(u.match(t)?void 0:e,t),actions:{..._.actions,...g.actions,...k.actions,...S.actions,...w.actions,...b.actions,resetApiState:u}}}var er=Symbol.for("RTKQ/skipToken"),tr={status:"uninitialized"},nr=te(tr,()=>{}),rr=te(tr,()=>{});var ar=WeakMap?new WeakMap:void 0,or=({endpointName:e,queryArgs:t})=>{let n="";const r=ar?.get(t);if("string"==typeof r)n=r;else{const e=JSON.stringify(t,(e,t)=>t=s(t="bigint"==typeof t?{$bigint:t.toString()}:t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t);s(t)&&ar?.set(t,e),n=e}return`${e}(${n})`};function sr(...e){return function(t){const n=ce(e=>t.extractRehydrationInfo?.(e,{reducerPath:t.reducerPath??"api"})),r={reducerPath:"api",keepUnusedDataFor:60,refetchOnMountOrArgChange:!1,refetchOnFocus:!1,refetchOnReconnect:!1,invalidationBehavior:"delayed",...t,extractRehydrationInfo:n,serializeQueryArgs(e){let n=or;if("serializeQueryArgs"in e.endpointDefinition){const t=e.endpointDefinition.serializeQueryArgs;n=e=>{const n=t(e);return"string"==typeof n?n:or({...e,queryArgs:n})}}else t.serializeQueryArgs&&(n=t.serializeQueryArgs);return n(e)},tagTypes:[...t.tagTypes||[]]},a={endpointDefinitions:{},batch(e){e()},apiUid:Oe(),extractRehydrationInfo:n,hasRehydrationInfo:ce(e=>null!=n(e))},o={injectEndpoints:function(e){const t=e.endpoints({query:e=>({...e,type:"query"}),mutation:e=>({...e,type:"mutation"}),infiniteQuery:e=>({...e,type:"infinitequery"})});for(const[n,r]of Object.entries(t))if(!0!==e.overrideExisting&&n in a.endpointDefinitions){if("throw"===e.overrideExisting)throw new Error(Ct(39))}else{a.endpointDefinitions[n]=r;for(const e of s)e.injectEndpoint(n,r)}return o},enhanceEndpoints({addTagTypes:e,endpoints:t}){if(e)for(const t of e)r.tagTypes.includes(t)||r.tagTypes.push(t);if(t)for(const[e,n]of Object.entries(t))"function"==typeof n?n(a.endpointDefinitions[e]):Object.assign(a.endpointDefinitions[e]||{},n);return o}},s=e.map(e=>e.init(o,r,a));return o.injectEndpoints({endpoints:t.endpoints})}}function ir(e,...t){return Object.assign(e,...t)}var cr=({api:e,queryThunk:t,internalState:n,mwApi:r})=>{const a=`${e.reducerPath}/subscriptions`;let o=null,s=null;const{updateSubscriptionOptions:i,unsubscribeQueryResult:c}=e.internalActions,l=()=>n.currentSubscriptions,d={getSubscriptions:l,getSubscriptionCount:e=>{const t=l().get(e);return t?.size??0},isRequestSubscribed:(e,t)=>{const n=l();return!!n?.get(e)?.get(t)}};function u(e){return JSON.parse(JSON.stringify(Object.fromEntries([...e].map(([e,t])=>[e,Object.fromEntries(t)]))))}return(r,l)=>{if(o||(o=u(n.currentSubscriptions)),e.util.resetApiState.match(r))return o={},n.currentSubscriptions.clear(),s=null,[!0,!1];if(e.internalActions.internal_getRTKQSubscriptions.match(r))return[!1,d];const m=((n,r)=>{if(i.match(r)){const{queryCacheKey:e,requestId:t,options:a}=r.payload,o=n.get(e);return o?.has(t)&&o.set(t,a),!0}if(c.match(r)){const{queryCacheKey:e,requestId:t}=r.payload,a=n.get(e);return a&&a.delete(t),!0}if(e.internalActions.removeQueryResult.match(r))return n.delete(r.payload.queryCacheKey),!0;if(t.pending.match(r)){const{meta:{arg:e,requestId:t}}=r,a=Cn(n,e.queryCacheKey,En);return e.subscribe&&a.set(t,e.subscriptionOptions??a.get(t)??{}),!0}let a=!1;if(t.rejected.match(r)){const{meta:{condition:e,arg:t,requestId:o}}=r;if(e&&t.subscribe){const e=Cn(n,t.queryCacheKey,En);e.set(o,t.subscriptionOptions??e.get(o)??{}),a=!0}}return a})(n.currentSubscriptions,r);let f=!0;if(m){s||(s=setTimeout(()=>{const t=u(n.currentSubscriptions),[,r]=ne(o,()=>t);l.next(e.internalActions.subscriptionsUpdated(r)),o=t,s=null},500));const i="string"==typeof r.type&&!!r.type.startsWith(a),c=t.rejected.match(r)&&r.meta.condition&&!!r.meta.arg.subscribe;f=!i&&!c}return[f,!1]}},lr=({reducerPath:e,api:t,queryThunk:n,context:r,internalState:a,selectors:{selectQueryEntry:o,selectConfig:s},getRunningQueryThunk:i,mwApi:c})=>{const{removeQueryResult:l,unsubscribeQueryResult:d,cacheEntriesUpserted:u}=t.internalActions,m=a.runningQueries.get(c.dispatch),f=xe(d.match,n.fulfilled,n.rejected,u.match);function p(e){const t=a.currentSubscriptions.get(e);if(!t)return!1;return t.size>0||void 0!==m?.[e]}const h={};function y(e,t,n){const r=t.getState();for(const a of e){const e=o(r,a);e?.endpointName&&g(a,e.endpointName,t,n)}}function g(e,t,n,a){const s=r.endpointDefinitions[t],c=s?.keepUnusedDataFor??a.keepUnusedDataFor;if(c===1/0)return;const d=Math.max(0,Math.min(c,2147482.647));if(!p(e)){const t=h[e];t&&clearTimeout(t),h[e]=setTimeout(()=>{if(!p(e)){const t=o(n.getState(),e);if(t?.endpointName){const e=n.dispatch(i(t.endpointName,t.originalArgs));e?.abort()}n.dispatch(l({queryCacheKey:e}))}delete h[e]},1e3*d)}}return(e,n,a)=>{const o=n.getState(),i=s(o);if(f(e)){let t;if(u.match(e))t=e.payload.map(e=>e.queryDescription.queryCacheKey);else{const{queryCacheKey:n}=d.match(e)?e.payload:e.meta.arg;t=[n]}y(t,n,i)}if(t.util.resetApiState.match(e))for(const[e,t]of Object.entries(h))t&&clearTimeout(t),delete h[e];if(r.hasRehydrationInfo(e)){const{queries:t}=r.extractRehydrationInfo(e);y(Object.keys(t),n,i)}}},dr=new Error("Promise never resolved before cacheEntryRemoved."),ur=({api:e,reducerPath:t,context:n,queryThunk:r,mutationThunk:a,internalState:o,selectors:{selectQueryEntry:s,selectApiState:i}})=>{const c=Ue(r),l=Ue(a),d=De(r,a),u={};function m(e,t,n){const r=u[e];r?.valueResolved&&(r.valueResolved({data:t,meta:n}),delete r.valueResolved)}function f(e){const t=u[e];t&&(delete u[e],t.cacheEntryRemoved())}function p(t,r,a,o,s){const i=n.endpointDefinitions[t],c=i?.onCacheEntryAdded;if(!c)return;const l={},d=new Promise(e=>{l.cacheEntryRemoved=e}),m=Promise.race([new Promise(e=>{l.valueResolved=e}),d.then(()=>{throw dr})]);m.catch(()=>{}),u[a]=l;const f=e.endpoints[t].select(qn(i)?r:a),p=o.dispatch((e,t,n)=>n),h={...o,getCacheEntry:()=>f(o.getState()),requestId:s,extra:p,updateCachedData:qn(i)?n=>o.dispatch(e.util.updateQueryData(t,r,n)):void 0,cacheDataLoaded:m,cacheEntryRemoved:d},y=c(r,h);Promise.resolve(y).catch(e=>{if(e!==dr)throw e})}return(n,o,i)=>{const h=function(t){if(c(t))return t.meta.arg.queryCacheKey;if(l(t))return t.meta.arg.fixedCacheKey??t.meta.requestId;return e.internalActions.removeQueryResult.match(t)?t.payload.queryCacheKey:e.internalActions.removeMutationResult.match(t)?Xn(t.payload):""}(n);function y(e,t,n,r){const a=s(i,t),c=s(o.getState(),t);!a&&c&&p(e,r,t,o,n)}if(r.pending.match(n))y(n.meta.arg.endpointName,h,n.meta.requestId,n.meta.arg.originalArgs);else if(e.internalActions.cacheEntriesUpserted.match(n))for(const{queryDescription:e,value:t}of n.payload){const{endpointName:r,originalArgs:a,queryCacheKey:o}=e;y(r,o,n.meta.requestId,a),m(o,t,{})}else if(a.pending.match(n)){o.getState()[t].mutations[h]&&p(n.meta.arg.endpointName,n.meta.arg.originalArgs,h,o,n.meta.requestId)}else if(d(n))m(h,n.payload,n.meta.baseQueryMeta);else if(e.internalActions.removeQueryResult.match(n)||e.internalActions.removeMutationResult.match(n))f(h);else if(e.util.resetApiState.match(n))for(const e of Object.keys(u))f(e)}},mr=({api:e,context:{apiUid:t},reducerPath:n})=>(n,r)=>{e.util.resetApiState.match(n)&&r.dispatch(e.internalActions.middlewareRegistered(t))},fr=({reducerPath:e,context:t,context:{endpointDefinitions:n},mutationThunk:r,queryThunk:a,api:o,assertTagType:s,refetchQuery:i,internalState:c})=>{const{removeQueryResult:l}=o.internalActions,d=xe(De(r),Me(r)),u=xe(De(r,a),Re(r,a));let m=[];function f(n,r){const a=r.getState(),s=a[e];if(m.push(...n),"delayed"===s.config.invalidationBehavior&&function(e){const{queries:t,mutations:n}=e;for(const e of[t,n])for(const t in e)if("pending"===e[t]?.status)return!0;return!1}(s))return;const d=m;if(m=[],0===d.length)return;const u=o.util.selectInvalidatedBy(a,d);t.batch(()=>{const e=Array.from(u.values());for(const{queryCacheKey:t}of e){const e=s.queries[t],n=Cn(c.currentSubscriptions,t,En);e&&(0===n.size?r.dispatch(l({queryCacheKey:t})):"uninitialized"!==e.status&&r.dispatch(i(e)))}})}return(e,t)=>{d(e)?f($n(e,"invalidatesTags",n,s),t):u(e)?f([],t):o.util.invalidateTags.match(e)&&f(Bn(e.payload,void 0,void 0,void 0,void 0,s),t)}},pr=({reducerPath:e,queryThunk:t,api:n,refetchQuery:r,internalState:a})=>{const{currentPolls:o,currentSubscriptions:s}=a,i=new Set;let c=null;function l(e,t){i.add(e),c||(c=setTimeout(()=>{for(const e of i)u({queryCacheKey:e},t);i.clear(),c=null},0))}function d({queryCacheKey:t},n){const a=n.getState()[e],i=a.queries[t],c=s.get(t);if(!i||"uninitialized"===i.status)return;const{lowestPollingInterval:l,skipPollingIfUnfocused:u}=f(c);if(!Number.isFinite(l))return;const m=o.get(t);m?.timeout&&(clearTimeout(m.timeout),m.timeout=void 0);const p=Date.now()+l;o.set(t,{nextPollTimestamp:p,pollingInterval:l,timeout:setTimeout(()=>{!a.config.focused&&u||n.dispatch(r(i)),d({queryCacheKey:t},n)},l)})}function u({queryCacheKey:t},n){const r=n.getState()[e].queries[t],a=s.get(t);if(!r||"uninitialized"===r.status)return;const{lowestPollingInterval:i}=f(a);if(!Number.isFinite(i))return void m(t);const c=o.get(t),l=Date.now()+i;(!c||l<c.nextPollTimestamp)&&d({queryCacheKey:t},n)}function m(e){const t=o.get(e);t?.timeout&&clearTimeout(t.timeout),o.delete(e)}function f(e=new Map){let t=!1,n=Number.POSITIVE_INFINITY;for(const r of e.values())r.pollingInterval&&(n=Math.min(r.pollingInterval,n),t=r.skipPollingIfUnfocused||t);return{lowestPollingInterval:n,skipPollingIfUnfocused:t}}return(e,r)=>{(n.internalActions.updateSubscriptionOptions.match(e)||n.internalActions.unsubscribeQueryResult.match(e))&&l(e.payload.queryCacheKey,r),(t.pending.match(e)||t.rejected.match(e)&&e.meta.condition)&&l(e.meta.arg.queryCacheKey,r),(t.fulfilled.match(e)||t.rejected.match(e)&&!e.meta.condition)&&d(e.meta.arg,r),n.util.resetApiState.match(e)&&(!function(){for(const e of o.keys())m(e)}(),c&&(clearTimeout(c),c=null),i.clear())}},hr=({api:e,context:t,queryThunk:n,mutationThunk:r})=>{const a=Te(n,r),o=Re(n,r),s=De(n,r),i={};return(n,r)=>{if(a(n)){const{requestId:a,arg:{endpointName:o,originalArgs:s}}=n.meta,c=t.endpointDefinitions[o],l=c?.onQueryStarted;if(l){const t={},n=new Promise((e,n)=>{t.resolve=e,t.reject=n});n.catch(()=>{}),i[a]=t;const d=e.endpoints[o].select(qn(c)?s:a),u=r.dispatch((e,t,n)=>n),m={...r,getCacheEntry:()=>d(r.getState()),requestId:a,extra:u,updateCachedData:qn(c)?t=>r.dispatch(e.util.updateQueryData(o,s,t)):void 0,queryFulfilled:n};l(s,m)}}else if(s(n)){const{requestId:e,baseQueryMeta:t}=n.meta;i[e]?.resolve({data:n.payload,meta:t}),delete i[e]}else if(o(n)){const{requestId:e,rejectedWithValue:t,baseQueryMeta:r}=n.meta;i[e]?.reject({error:n.payload??n.error,isUnhandledError:!t,meta:r}),delete i[e]}}};function yr(e){const{reducerPath:t,queryThunk:n,api:r,context:a,internalState:o}=e,{apiUid:s}=a,i={invalidateTags:ye(`${t}/invalidateTags`)},c=e=>e.type.startsWith(`${t}/`),l=[mr,lr,fr,pr,ur,hr];return{middleware:n=>{let i=!1;const m={...e,internalState:o,refetchQuery:u,isThisApiSliceAction:c,mwApi:n},f=l.map(e=>e(m)),p=cr(m),h=(({reducerPath:e,context:t,api:n,refetchQuery:r,internalState:a})=>{const{removeQueryResult:o}=n.internalActions;function s(n,s){const i=n.getState()[e],c=i.queries,l=a.currentSubscriptions;t.batch(()=>{for(const e of l.keys()){const t=c[e],a=l.get(e);if(!a||!t)continue;const d=[...a.values()];(d.some(e=>!0===e[s])||d.every(e=>void 0===e[s])&&i.config[s])&&(0===a.size?n.dispatch(o({queryCacheKey:e})):"uninitialized"!==t.status&&n.dispatch(r(t)))}})}return(e,t)=>{Tn.match(e)&&s(t,"refetchOnFocus"),Mn.match(e)&&s(t,"refetchOnReconnect")}})(m);return e=>o=>{if(!d(o))return e(o);i||(i=!0,n.dispatch(r.internalActions.middlewareRegistered(s)));const l={...n,next:e},u=n.getState(),[m,y]=p(o,l,u);let g;if(g=m?e(o):y,n.getState()[t]&&(h(o,l,u),c(o)||a.hasRehydrationInfo(o)))for(const e of f)e(o,l,u);return g}},actions:i};function u(t){return e.api.endpoints[t.endpointName].initiate(t.originalArgs,{subscribe:!1,forceRefetch:!0})}}var gr=Symbol(),wr=sr((({createSelector:e=de}={})=>({name:gr,init(t,{baseQuery:n,tagTypes:r,reducerPath:a,serializeQueryArgs:o,keepUnusedDataFor:s,refetchOnMountOrArgChange:i,refetchOnFocus:c,refetchOnReconnect:l,invalidationBehavior:d,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:f},p){Z();const h=e=>e;Object.assign(t,{reducerPath:a,endpoints:{},internalActions:{onOnline:Mn,onOffline:Dn,onFocus:Tn,onFocusLost:Rn},util:{}});const y=function({serializeQueryArgs:e,reducerPath:t,createSelector:n}){const r=e=>nr,a=e=>rr;return{buildQuerySelector:function(e,t){return l(e,t,o)},buildInfiniteQuerySelector:function(e,t){const{infiniteQueryOptions:n}=t;return l(e,t,function(e){const t={...e,...vn(e.status)},{isLoading:r,isError:a,direction:o}=t,s="forward"===o,i="backward"===o;return{...t,hasNextPage:d(n,t.data,t.originalArgs),hasPreviousPage:u(n,t.data,t.originalArgs),isFetchingNextPage:r&&s,isFetchingPreviousPage:r&&i,isFetchNextPageError:a&&s,isFetchPreviousPageError:a&&i}})},buildMutationSelector:function(){return e=>{let t;return t="object"==typeof e?Xn(e)??er:e,n(t===er?a:e=>s(e)?.mutations?.[t]??rr,o)}},selectInvalidatedBy:function(e,n){const r=e[t],a=new Set;for(const e of n.filter(xn).map(Kn)){const t=r.provided.tags[e.type];if(!t)continue;let n=(void 0!==e.id?t[e.id]:Pn(Object.values(t)))??[];for(const e of n)a.add(e)}return Pn(Array.from(a.values()).map(e=>{const t=r.queries[e];return t?[{queryCacheKey:e,endpointName:t.endpointName,originalArgs:t.originalArgs}]:[]}))},selectCachedArgsForQuery:function(e,t){return Object.values(i(e)).filter(e=>e?.endpointName===t&&"uninitialized"!==e.status).map(e=>e.originalArgs)},selectApiState:s,selectQueries:i,selectMutations:function(e){return s(e)?.mutations},selectQueryEntry:c,selectConfig:function(e){return s(e)?.config}};function o(e){return{...e,...vn(e.status)}}function s(e){return e[t]}function i(e){return s(e)?.queries}function c(e,t){return i(e)?.[t]}function l(t,a,o){return s=>{if(s===er)return n(r,o);const i=e({queryArgs:s,endpointDefinition:a,endpointName:t});return n(e=>c(e,i)??nr,o)}}function d(e,t,n){return!!t&&null!=Vn(e,t,n)}function u(e,t,n){return!(!t||!e.getPreviousPageParam)&&null!=Qn(e,t,n)}}({serializeQueryArgs:o,reducerPath:a,createSelector:e}),{selectInvalidatedBy:w,selectCachedArgsForQuery:b,buildQuerySelector:I,buildInfiniteQuerySelector:v,buildMutationSelector:k}=y;ir(t.util,{selectInvalidatedBy:w,selectCachedArgsForQuery:b});const{queryThunk:S,infiniteQueryThunk:_,mutationThunk:P,patchQueryData:x,updateQueryData:C,upsertQueryData:E,prefetch:A,buildMatchThunkActions:T}=function({reducerPath:e,baseQuery:t,context:{endpointDefinitions:n},serializeQueryArgs:r,api:a,assertTagType:o,selectors:s,onSchemaFailure:i,catchSchemaFailure:c,skipSchemaValidation:l}){function d(e,t,n=0){const r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}function u(e,t,n=0){const r=[...e,t];return n&&r.length>n?r.slice(1):r}const m=(e,t)=>e.query&&e[t]?e[t]:Hn,f=async(e,{signal:r,abort:a,rejectWithValue:o,fulfillWithValue:f,dispatch:h,getState:y,extra:g})=>{const w=n[e.endpointName],{metaSchema:b,skipSchemaValidation:I=l}=w;try{let v=Hn;const k={signal:r,abort:a,dispatch:h,getState:y,extra:g,endpoint:e.endpointName,type:e.type,forced:"query"===e.type?p(e,y()):void 0,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0},S="query"===e.type?e[jn]:void 0;let _;const P=async(t,n,r,a)=>{if(null==n&&t.pages.length)return Promise.resolve({data:t});const o={queryArg:e.originalArgs,pageParam:n},s=await x(o),i=a?d:u;return{data:{pages:i(t.pages,s.data,r),pageParams:i(t.pageParams,n,r)},meta:s.meta}};async function x(e){let n;const{extraOptions:r,argSchema:a,rawResponseSchema:o,responseSchema:s}=w;if(a&&!Ln(I,"arg")&&(e=await Fn(a,e,"argSchema",{})),S?n=S():w.query?(v=m(w,"transformResponse"),n=await t(w.query(e),k,r)):n=await w.queryFn(e,k,r,e=>t(e,k,r)),n.error)throw new An(n.error,n.meta);let{data:i}=n;o&&!Ln(I,"rawResponse")&&(i=await Fn(o,n.data,"rawResponseSchema",n.meta));let c=await v(i,n.meta,e);return s&&!Ln(I,"response")&&(c=await Fn(s,c,"responseSchema",n.meta)),{...n,data:c}}if("query"===e.type&&"infiniteQueryOptions"in w){const{infiniteQueryOptions:C}=w,{maxPages:E=1/0}=C;let A;const T={pages:[],pageParams:[]},R=s.selectQueryEntry(y(),e.queryCacheKey)?.data,M=p(e,y())&&!e.direction||!R?T:R;if("direction"in e&&e.direction&&M.pages.length){const D="backward"===e.direction,U=(D?Qn:Vn)(C,M,e.originalArgs);A=await P(M,U,E,D)}else{const{initialPageParam:O=C.initialPageParam}=e,q=R?.pageParams??[],B=q[0]??O,K=q.length;A=await P(M,B,E),S&&(A={data:A.data.pages[0]});for(let j=1;j<K;j++){const N=Vn(C,A.data,e.originalArgs);A=await P(A.data,N,E)}}_=A}else _=await x(e.originalArgs);return b&&!Ln(I,"meta")&&_.meta&&(_.meta=await Fn(b,_.meta,"metaSchema",_.meta)),f(_.data,Wn({fulfilledTimeStamp:Date.now(),baseQueryMeta:_.meta}))}catch(z){let L=z;if(L instanceof An){let F=m(w,"transformErrorResponse");const{rawErrorResponseSchema:H,errorResponseSchema:W}=w;let{value:V,meta:Q}=L;try{H&&!Ln(I,"rawErrorResponse")&&(V=await Fn(H,V,"rawErrorResponseSchema",Q)),b&&!Ln(I,"meta")&&(Q=await Fn(b,Q,"metaSchema",Q));let $=await F(V,Q,e.originalArgs);return W&&!Ln(I,"errorResponse")&&($=await Fn(W,$,"errorResponseSchema",Q)),o($,Wn({baseQueryMeta:Q}))}catch(G){L=G}}try{if(L instanceof zn){const X={endpoint:e.endpointName,arg:e.originalArgs,type:e.type,queryCacheKey:"query"===e.type?e.queryCacheKey:void 0};w.onSchemaFailure?.(L,X),i?.(L,X);const{catchSchemaFailure:Y=c}=w;if(Y)return o(Y(L,X),Wn({baseQueryMeta:L._bqMeta}))}}catch(J){L=J}throw console.error(L),L}};function p(e,t){const n=s.selectQueryEntry(t,e.queryCacheKey),r=s.selectConfig(t).refetchOnMountOrArgChange,a=n?.fulfilledTimeStamp,o=e.forceRefetch??(e.subscribe&&r);return!!o&&(!0===o||(Number(new Date)-Number(a))/1e3>=o)}const h=()=>ze(`${e}/executeQuery`,f,{getPendingMeta({arg:e}){const t=n[e.endpointName];return Wn({startedTimeStamp:Date.now(),...On(t)?{direction:e.direction}:{}})},condition(e,{getState:t}){const r=t(),a=s.selectQueryEntry(r,e.queryCacheKey),o=a?.fulfilledTimeStamp,i=e.originalArgs,c=a?.originalArgs,l=n[e.endpointName],d=e.direction;return!(!Nn(e)&&("pending"===a?.status||!p(e,r)&&(!Un(l)||!l?.forceRefetch?.({currentArg:i,previousArg:c,endpointState:a,state:r}))&&o&&!d))},dispatchConditionRejection:!0}),y=h(),w=h(),b=ze(`${e}/executeMutation`,f,{getPendingMeta:()=>Wn({startedTimeStamp:Date.now()})});function I(e){return t=>t?.meta?.arg?.endpointName===e}return{queryThunk:y,mutationThunk:b,infiniteQueryThunk:w,prefetch:(e,t,n)=>(r,o)=>{const s=(e=>"force"in e)(n)&&n.force,i=(e=>"ifOlderThan"in e)(n)&&n.ifOlderThan,c=(n=!0)=>{const r={forceRefetch:n,isPrefetch:!0};return a.endpoints[e].initiate(t,r)},l=a.endpoints[e].select(t)(o());if(s)r(c());else if(i){const e=l?.fulfilledTimeStamp;if(!e)return void r(c());(Number(new Date)-Number(new Date(e)))/1e3>=i&&r(c())}else r(c(!1))},updateQueryData:(e,t,n,r=!0)=>(o,s)=>{const i=a.endpoints[e].select(t)(s()),c={patches:[],inversePatches:[],undo:()=>o(a.util.patchQueryData(e,t,c.inversePatches,r))};if("uninitialized"===i.status)return c;let l;if("data"in i)if(g(i.data)){const[e,t,r]=ne(i.data,n);c.patches.push(...t),c.inversePatches.push(...r),l=e}else l=n(i.data),c.patches.push({op:"replace",path:[],value:l}),c.inversePatches.push({op:"replace",path:[],value:i.data});return 0===c.patches.length||o(a.util.patchQueryData(e,t,c.patches,r)),c},upsertQueryData:(e,t,n)=>r=>r(a.endpoints[e].initiate(t,{subscribe:!1,forceRefetch:!0,[jn]:()=>({data:n})})),patchQueryData:(e,t,s,i)=>(c,l)=>{const d=n[e],u=r({queryArgs:t,endpointDefinition:d,endpointName:e});if(c(a.internalActions.queryResultPatched({queryCacheKey:u,patches:s})),!i)return;const m=a.endpoints[e].select(t)(l()),f=Bn(d.providesTags,m.data,void 0,t,{},o);c(a.internalActions.updateProvidedBy([{queryCacheKey:u,providedTags:f}]))},buildMatchThunkActions:function(e,t){return{matchPending:Ce(Te(e),I(t)),matchFulfilled:Ce(De(e),I(t)),matchRejected:Ce(Re(e),I(t))}}}}({baseQuery:n,reducerPath:a,context:p,api:t,serializeQueryArgs:o,assertTagType:h,selectors:y,onSchemaFailure:u,catchSchemaFailure:m,skipSchemaValidation:f}),{reducer:R,actions:M}=Zn({context:p,queryThunk:S,mutationThunk:P,serializeQueryArgs:o,reducerPath:a,assertTagType:h,config:{refetchOnFocus:c,refetchOnReconnect:l,refetchOnMountOrArgChange:i,keepUnusedDataFor:s,reducerPath:a,invalidationBehavior:d}});ir(t.util,{patchQueryData:x,updateQueryData:C,upsertQueryData:E,prefetch:A,resetApiState:M.resetApiState,upsertQueryEntries:M.cacheEntriesUpserted}),ir(t.internalActions,M);const D={currentSubscriptions:new Map,currentPolls:new Map,runningQueries:new Map,runningMutations:new Map},{buildInitiateQuery:U,buildInitiateInfiniteQuery:O,buildInitiateMutation:q,getRunningMutationThunk:B,getRunningMutationsThunk:K,getRunningQueriesThunk:j,getRunningQueryThunk:N}=function({serializeQueryArgs:e,queryThunk:t,infiniteQueryThunk:n,mutationThunk:r,api:a,context:o,internalState:s}){const{runningQueries:i,runningMutations:c}=s,{unsubscribeQueryResult:l,removeMutationResult:d,updateSubscriptionOptions:u}=a.internalActions;return{buildInitiateQuery:function(e,t){return m(e,t)},buildInitiateInfiniteQuery:function(e,t){return m(e,t)},buildInitiateMutation:function(e){return(t,{track:n=!0,fixedCacheKey:a}={})=>(o,s)=>{const i=r({type:"mutation",endpointName:e,originalArgs:t,track:n,fixedCacheKey:a}),l=o(i),{requestId:u,abort:m,unwrap:f}=l,p=(h=e=>({error:e}),l.unwrap().then(e=>({data:e})).catch(h));var h;const y=Object.assign(p,{arg:l.arg,requestId:u,abort:m,unwrap:f,reset:()=>{o(d({requestId:u,fixedCacheKey:a}))}}),g=c.get(o)||{};return c.set(o,g),g[u]=y,y.then(()=>{delete g[u],_n(g)||c.delete(o)}),a&&(g[a]=y,y.then(()=>{g[a]===y&&(delete g[a],_n(g)||c.delete(o))})),y}},getRunningQueryThunk:function(t,n){return r=>{const a=o.endpointDefinitions[t],s=e({queryArgs:n,endpointDefinition:a,endpointName:t});return i.get(r)?.[s]}},getRunningMutationThunk:function(e,t){return e=>c.get(e)?.[t]},getRunningQueriesThunk:function(){return e=>Object.values(i.get(e)||{}).filter(xn)},getRunningMutationsThunk:function(){return e=>Object.values(c.get(e)||{}).filter(xn)}};function m(r,o){const s=(c,{subscribe:d=!0,forceRefetch:m,subscriptionOptions:f,[jn]:p,...h}={})=>(y,g)=>{const w=e({queryArgs:c,endpointDefinition:o,endpointName:r});let b;const I={...h,type:"query",subscribe:d,forceRefetch:m,subscriptionOptions:f,endpointName:r,originalArgs:c,queryCacheKey:w,[jn]:p};if(Un(o))b=t(I);else{const{direction:e,initialPageParam:t}=h;b=n({...I,direction:e,initialPageParam:t})}const v=a.endpoints[r].select(c),k=y(b),S=v(g()),{requestId:_,abort:P}=k,x=S.requestId!==_,C=i.get(y)?.[w],E=()=>v(g()),A=Object.assign(p?k.then(E):x&&!C?Promise.resolve(S):Promise.all([C,k]).then(E),{arg:c,requestId:_,subscriptionOptions:f,queryCacheKey:w,abort:P,async unwrap(){const e=await A;if(e.isError)throw e.error;return e.data},refetch:()=>y(s(c,{subscribe:!1,forceRefetch:!0})),unsubscribe(){d&&y(l({queryCacheKey:w,requestId:_}))},updateSubscriptionOptions(e){A.subscriptionOptions=e,y(u({endpointName:r,requestId:_,queryCacheKey:w,options:e}))}});if(!C&&!x&&!p){const e=(R=y,M={},(T=i).has(R)?T.get(R):T.set(R,M).get(R));e[w]=A,A.then(()=>{delete e[w],_n(e)||i.delete(y)})}var T,R,M;return A};return s}}({queryThunk:S,mutationThunk:P,infiniteQueryThunk:_,api:t,serializeQueryArgs:o,context:p,internalState:D});ir(t.util,{getRunningMutationThunk:B,getRunningMutationsThunk:K,getRunningQueryThunk:N,getRunningQueriesThunk:j});const{middleware:z,actions:L}=yr({reducerPath:a,context:p,queryThunk:S,mutationThunk:P,infiniteQueryThunk:_,api:t,assertTagType:h,selectors:y,getRunningQueryThunk:N,internalState:D});return ir(t.util,L),ir(t,{reducer:R,middleware:z}),{name:gr,injectEndpoint(e,n){const r=t,a=r.endpoints[e]??={};Un(n)&&ir(a,{name:e,select:I(e,n),initiate:U(e,n)},T(S,e)),"mutation"===n.type&&ir(a,{name:e,select:k(),initiate:q(e)},T(P,e)),On(n)&&ir(a,{name:e,select:v(e,n),initiate:O(e,n)},T(S,e))}}}}))());const br="0123456789abcdef",Ir=new Array(64),vr=new Array(128),kr=e=>new Promise(t=>{let n=0;const r=e.length;for(let t=0;t<r;t++)n+=e[t].length;const a=new Uint8Array(n);let o=0;for(const t of e)a.set(t,o),o+=t.length;t(a)}),Sr=e=>{const t=e.length,n=t===jt?vr:32===t?Ir:new Array(2*t);let r=0;for(let a=0;a<t;a++){const t=e[a];n[r++]=br[t>>4],n[r++]=br[15&t]}return n.join("")},_r=e=>{(e=e.replace(/^0x/,"")).length%2!=0&&(e="0"+e);const t=/[G-Z\s]/i.exec(e);if(t)throw new Error(`Found non-hex characters ${t[0]}`);const n=e.match(/[\dA-F]{2}/gi);if(!n)throw new Error("No hex characters in string");const r=n.length,a=new Uint8Array(r);for(let e=0;e<r;e++)a[e]=parseInt(n[e],16);return a},Pr=65536,xr=131072,Cr=9+jt+8+8+256+8+8+8,Er=4+48*(jt+1),Ar=Lt+Nt+(Cr+Er)+$t+Ht,Tr=Pr-Ar,Rr=Cr+Er+Tr,Mr=Xt(Rr),Dr=(e,t,n)=>{t=t??32,n=n??16384;const r=65536,a=Math.ceil(e/r);if(a>n)throw new Error(`Memory required is ${String(a*r)} bytes while declared maximum is ${String(n*r)} bytes`);return a<t?t:a};var Ur=()=>{const e=(Lt+Ft)*Uint8Array.BYTES_PER_ELEMENT,t=Dr(e);return new WebAssembly.Memory({initial:t,maximum:t})},Or=()=>{const e=(Lt+Ft+zt)*Uint8Array.BYTES_PER_ELEMENT,t=Dr(e);return new WebAssembly.Memory({initial:t,maximum:t})},qr=e=>{const t=(e+Nt+Ft+jt)*Uint8Array.BYTES_PER_ELEMENT,n=Dr(t);return new WebAssembly.Memory({initial:n,maximum:n})},Br=e=>{const t=(e+Nt+Lt)*Uint8Array.BYTES_PER_ELEMENT,n=Dr(t);return new WebAssembly.Memory({initial:n,maximum:n})},Kr=(e,t)=>{const n=Xt(e),r=(e+Lt+t+n+$t+1*(e+Ht)+2*Wt+2*Vt+Qt)*Uint8Array.BYTES_PER_ELEMENT,a=Dr(r);return new WebAssembly.Memory({initial:a,maximum:a})},jr=(e,t)=>{const n=Yt(e),r=(e+Ft+t+n+2*Wt+Qt+Vt)*Uint8Array.BYTES_PER_ELEMENT,a=Dr(r);return new WebAssembly.Memory({initial:a,maximum:a})},Nr=e=>{const t=Dr((2*e+3)*jt);return new WebAssembly.Memory({initial:t,maximum:t})},zr=e=>{const t=Dr(e*jt+e*(jt+1)+3*jt);return new WebAssembly.Memory({initial:t,maximum:t})},Lr=e=>{const t=e*Uint8Array.BYTES_PER_ELEMENT+4*jt,n=Dr(t);return new WebAssembly.Memory({initial:n,maximum:n})},Fr=e=>{const t=(78643200+e+zt+Gt)*Uint8Array.BYTES_PER_ELEMENT,n=Dr(t);return new WebAssembly.Memory({initial:n,maximum:n})},Hr=()=>{const e=(Lt+Nt+Lt)*Uint8Array.BYTES_PER_ELEMENT,t=Pr-Lt-Nt,n=Yt(t),r=(t+Ft+jt+n+2*Wt+Qt+Vt)*Uint8Array.BYTES_PER_ELEMENT,a=Er*Uint8Array.BYTES_PER_ELEMENT+4*jt,o=Dr(n+Pr+2*jt+Lt+Ft+e+r+a+jt);return new WebAssembly.Memory({initial:o,maximum:o})};function Wr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Vr,Qr={exports:{}};var $r=(Vr||(Vr=1,function(e){async function t(e={}){var t,n=e,r=[],a=(e,t)=>{throw t};t=self.location.href;var o,s,i="";function c(e){return i+e}try{i=new URL(".",t).href}catch{}s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)},o=async e=>{var t=await fetch(e,{credentials:"same-origin"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+" : "+t.url)},console.log.bind(console);var l,d,u,m,f,p,h,y=console.error.bind(console),g=[],w=!1,b=!1,I=!1,v=[];function k(e){y(e="Aborted("+e+")"),w=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw m?.(t),t}async function S(e){if(!l)try{var t=await o(e);return new Uint8Array(t)}catch{}return function(e){if(e==h&&l)return new Uint8Array(l);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}(e)}async function _(e,t,n){if(!e)try{var r=fetch(t,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(r,n)}catch(e){y(`wasm streaming compile failed: ${e}`),y("falling back to ArrayBuffer instantiation")}return async function(e,t){try{var n=await S(e);return await WebAssembly.instantiate(n,t)}catch(e){y(`failed to asynchronously prepare wasm: ${e}`),k(e)}}(t,n)}class P{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var x,C={},E=new Set([]),A={get(e,t){var n=C[t];return n||(n=C[t]=new WebAssembly.Global({value:"i32",mutable:!0})),E.has(t)||(n.required=!0),n}},T=e=>{for(;e.length>0;)e.shift()(n)},R="undefined"!=typeof TextDecoder?new TextDecoder:void 0,M=(e,t=0,n,r)=>{var a=((e,t,n)=>{for(var r=t+n;e[t]&&!(t>=r);)++t;return t})(e,t,n);if(a-t>16&&e.buffer&&R)return R.decode(e.subarray(t,a));for(var o="";t<a;){var s=e[t++];if(128&s){var i=63&e[t++];if(192!=(224&s)){var c=63&e[t++];if((s=224==(240&s)?(15&s)<<12|i<<6|c:(7&s)<<18|i<<12|c<<6|63&e[t++])<65536)o+=String.fromCharCode(s);else{var l=s-65536;o+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|i)}else o+=String.fromCharCode(s)}return o},D=e=>{var t=0,n=0;function r(){return e[t++]}function a(){for(var n=0,r=1;;){var a=e[t++];if(n+=(127&a)*r,r*=128,!(128&a))break}return n}function o(){var n=a();return M(e,(t+=n)-n,n)}function s(){for(var e=a(),t=[];e--;)t.push(o());return t}function i(e,t){if(e)throw new Error(t)}if(e instanceof WebAssembly.Module){var c=WebAssembly.Module.customSections(e,"dylink.0");i(0===c.length,"need dylink section"),n=(e=new Uint8Array(c[0])).length}else{i(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),i(0!==e[8],"need the dylink section to be first"),t=9;var l=a();n=t+l,i("dylink.0"!==o())}for(var d={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]};t<n;){var u=r(),m=a();if(1===u)d.memorySize=a(),d.memoryAlign=a(),d.tableSize=a(),d.tableAlign=a();else if(2===u)d.neededDynlibs=s();else if(3===u)for(var f=a();f--;){var p=o();256&a()&&d.tlsExports.add(p)}else if(4===u)for(f=a();f--;)o(),p=o(),1==(3&a())&&d.weakImports.add(p);else 5===u?d.runtimePaths=s():t+=m}return d},U=(e,t,n)=>{var r={refcount:1/0,name:e,exports:n,global:!0};return O.loadedLibsByName[e]=r,null!=t&&(O.loadedLibsByHandle[t]=r),r},O={loadedLibsByName:{},loadedLibsByHandle:{},init(){U("__main__",0,Te)}},q=562416,B=(e,t)=>Math.ceil(e/t)*t,K=e=>["__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(e)||e.startsWith("__em_js__"),j=e=>{const t=e.length;return[t%128|128,t>>7,...e]},N={i:127,p:127,j:126,f:125,d:124,e:111},z=e=>j(Array.from(e,e=>N[e])),L=[],F=new WebAssembly.Table({initial:3,element:"anyfunc"}),H=e=>{var t=L[e];return t||(L[e]=t=F.get(e)),t},W=(e,t)=>{if(x)for(var n=e;n<e+t;n++){var r=H(n);r&&x.set(r,n)}},V=[],Q=(e,t)=>{F.set(e,t),L[e]=F.get(e)},$=(e,t)=>{var n=(e=>(x||(x=new WeakMap,W(0,F.length)),x.get(e)||0))(e);if(n)return n;var r=V.length?V.pop():F.grow(1);try{Q(r,e)}catch(n){if(!(n instanceof TypeError))throw n;var a=((e,t)=>{var n=Uint8Array.of(0,97,115,109,1,0,0,0,1,...j([1,96,...z(t.slice(1)),...z("v"===t[0]?"":t[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),r=new WebAssembly.Module(n);return new WebAssembly.Instance(r,{e:{f:e}}).exports.f})(e,t);Q(r,a)}return x.set(e,r),r},G=(e,t,n)=>{var r={};for(var a in e){var o=e[a];"object"==typeof o&&(o=o.value),"number"==typeof o&&(o+=t),r[a]=o}return(e=>{for(var t in e)if(!K(t)){var n=e[t];C[t]||=new WebAssembly.Global({value:"i32",mutable:!0}),0==C[t].value&&("function"==typeof n?C[t].value=$(n):"number"==typeof n?C[t].value=n:y(`unhandled export type for '${t}': ${typeof n}`))}})(r),r},X=e=>{var t=Te[e];return!(!t||t.stub)},Y=(e,t=!1)=>{var n;return X(e)&&(n=Te[e]),{sym:n,name:e}},J=[],Z=(e,t,n)=>e?M(p,e,t):"",ee=(e,t,n,r,a)=>{var o=D(e);function s(){var n,a=Math.pow(2,o.memoryAlign),s=o.memorySize?B((e=>{if(b)return Pe(e,1);var t=q,n=t+B(e,16);return q=n,C.__heap_base.value=n,t})(o.memorySize+a),a):0,i=o.tableSize?F.length:0;o.tableSize&&F.grow(o.tableSize);var c=new Proxy({},{get(e,t){switch(t){case"__memory_base":return s;case"__table_base":return i}var a;return t in Te&&!Te[t].stub?Te[t]:(t in e||(e[t]=(...e)=>(a||=function(e){var t=Y(e).sym;return!t&&r&&(t=r[e]),t||(t=n[e]),t}(t),a(...e))),e[t])}});E=o.weakImports;var l={"GOT.mem":new Proxy({},A),"GOT.func":new Proxy({},A),env:c,wasi_snapshot_preview1:c};function d(e,r){function a(e,t){for(var n=[],r=0;r<16&&-1!=t.indexOf("$"+r);r++)n.push("$"+r);n=n.join(","),k("DYNAMIC_EXECUTION=0 was set, cannot eval")}if(W(i,o.tableSize),n=G(r.exports,s),t.allowUndefined||ae(),"__start_em_asm"in n)for(var c=n.__start_em_asm,l=n.__stop_em_asm;c<l;)a(0,Z(c)),c=p.indexOf(0,c)+1;function d(e,t,n){var r=[];if("void"!=(t=t.slice(1,-1)))for(var a in t=t.split(",")){var o=t[a].split(" ").pop();r.push(o.replace("*",""))}k("DYNAMIC_EXECUTION=0 was set, cannot eval")}for(var u in n)if(u.startsWith("__em_js__")){c=n[u];var m=Z(c).split("<::>");d(u.replace("__em_js__",""),m[0],m[1]),delete n[u]}var f=n.__wasm_apply_data_relocs;f&&(b?f():v.push(f));var h,y=n.__wasm_call_ctors;return y&&(b?y():(h=y,J.push(h))),n}if(t.loadAsync)return(async()=>{var t;return e instanceof WebAssembly.Module?t=new WebAssembly.Instance(e,l):({module:e,instance:t}=await WebAssembly.instantiate(e,l)),d(0,t)})();var u=e instanceof WebAssembly.Module?e:new WebAssembly.Module(e);return d(0,new WebAssembly.Instance(u,l))}return(t={...t,rpath:{parentLibPath:n,paths:o.runtimePaths}}).loadAsync?o.neededDynlibs.reduce((e,n)=>e.then(()=>re(n,t,r)),Promise.resolve()).then(s):(o.neededDynlibs.forEach(e=>re(e,t,r)),s())},te=(e,t)=>{for(var[n,r]of Object.entries(e)){const e=e=>{X(e)||(Te[e]=r)};e(n);const t="__main_argc_argv";"main"==n&&e(t),n==t&&e("main")}},ne=async e=>{var t=await o(e);return new Uint8Array(t)};function re(e,t={global:!0,nodelete:!0},n,r){var a=O.loadedLibsByName[e];if(a)return t.global&&(a.global||(a.global=!0,te(a.exports))),t.nodelete&&a.refcount!==1/0&&(a.refcount=1/0),a.refcount++,!t.loadAsync||Promise.resolve(!0);function o(){var n=c(e);if(t.loadAsync)return ne(n);if(!s)throw new Error(`${n}: file not found, and synchronous loading of external files is not available`);return s(n)}function i(){return t.loadAsync?o().then(r=>ee(r,t,e,n)):ee(o(),t,e,n)}function l(e){a.global&&te(e),a.exports=e}return(a=U(e,r,"loading")).refcount=t.nodelete?1/0:1,a.global=t.global,t.loadAsync?i().then(e=>(l(e),!0)):(l(i()),!0)}var ae=()=>{for(var[e,t]of Object.entries(C))if(0==t.value){var n=Y(e,!0).sym;if(!n&&!t.required)continue;if("function"==typeof n)t.value=$(n,n.sig);else{if("number"!=typeof n)throw new Error(`bad export type for '${e}': ${typeof n}`);t.value=n}}},oe=0,se=null,ie=async()=>{if(g.length){for(var e of(oe++,g))await re(e,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0});ae(),(()=>{if(0==--oe&&se){var e=se;se=null,e()}})()}else ae()},ce=(e,t,n,r)=>k(`Assertion failed: ${Z(e)}, at: `+[t?Z(t):"unknown filename",n,r?Z(r):"unknown function"]);ce.sig="vppip";var le=new WebAssembly.Global({value:"i32",mutable:!1},4096),de=new WebAssembly.Global({value:"i32",mutable:!0},562416),ue=new WebAssembly.Global({value:"i32",mutable:!1},1),me=()=>k("");me.sig="v";var fe=0,pe=()=>{fe=0};pe.sig="v";var he={},ye=e=>{if(e instanceof P||"unwind"==e)return d;a(0,e)},ge=()=>fe>0,we=e=>{d=e,ge()||(w=!0),a(0,new P(e))};we.sig="vi";var be=(e,t)=>{d=e,ge()||(Se(),I=!0),we(e)};be.sig="vi";var Ie=e=>{if(!I&&!w)try{e(),(()=>{if(!I&&!ge())try{be(d)}catch(e){ye(e)}})()}catch(e){ye(e)}},ve=()=>performance.now();ve.sig="d";var ke=(e,t)=>{if(he[e]&&(clearTimeout(he[e].id),delete he[e]),!t)return 0;var n=setTimeout(()=>{delete he[e],Ie(()=>_e(e,ve()))},t);return he[e]={id:n,timeout_ms:t},0};ke.sig="iid";var Se,_e,Pe,xe,Ce,Ee=e=>{p.length,k("OOM")};Ee.sig="ip",f=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:32,maximum:32}),Ce=f.buffer,p=new Uint8Array(Ce),new BigInt64Array(Ce),new BigUint64Array(Ce),n.wasmBinary&&(l=n.wasmBinary);var Ae,Te={__assert_fail:ce,__heap_base:q,__indirect_function_table:F,__memory_base:le,__stack_high:562416,__stack_pointer:de,__table_base:ue,_abort_js:me,_emscripten_runtime_keepalive_clear:pe,_setitimer_js:ke,alignfault:function(){k("alignment fault")},emscripten_resize_heap:Ee,memory:f,proc_exit:we,segfault:function(){k("segmentation fault")}};return Ae=await async function(){function e(e,t){Ae=e.exports,Ae=G(Ae,4096);var r=D(t);return r.neededDynlibs&&(g=r.neededDynlibs.concat(g)),te(Ae),O.init(),ie(),v.push(Ae.__wasm_apply_data_relocs),function(e){n._argon2=e.argon2,n._malloc=e.malloc,n._free=e.free,n._encrypt_chachapoly_asymmetric=e.encrypt_chachapoly_asymmetric,n._decrypt_chachapoly_asymmetric=e.decrypt_chachapoly_asymmetric,n._keypair_from_seed=e.keypair_from_seed,n._keypair_from_secret_key=e.keypair_from_secret_key,n._sign=e.sign,n._verify=e.verify,n._get_merkle_root=e.get_merkle_root,n._get_merkle_proof=e.get_merkle_proof,n._get_merkle_root_from_proof=e.get_merkle_root_from_proof,n._verify_merkle_proof=e.verify_merkle_proof,n._receive_message=e.receive_message,Se=e.__funcs_on_exit,_e=e._emscripten_timeout,e.sbrk,Pe=e.calloc,xe=e.realloc,e.emscripten_stack_get_base,e._emscripten_stack_alloc,e.__wasm_apply_data_relocs}(Ae),Ae}var t={env:Te,wasi_snapshot_preview1:Te,"GOT.mem":new Proxy(Te,A),"GOT.func":new Proxy(Te,A)};h??=c("libcrypto.wasm");var r=function(t){return e(t.instance,t.module)}(await _(l,h,t));return r}(),function e(t=r){oe>0||oe>0?se=e:(n.calledRun=!0,w||(b=!0,T(v),Ae.__wasm_call_ctors(),T(J),u?.(n)))}(),(()=>{var e=null,t=0;function r(){if(e&&b){var t=e;e=null,t.forEach(e=>onmessage(e))}}function a(){r(),e&&setTimeout(a,100)}onmessage=o=>{if(!b)return e||(e=[],setTimeout(a,100)),void e.push(o);r();var s=n["_"+o.data.funcName];s||k("invalid worker function to call: "+o.data.funcName);var i=o.data.data;i&&(i.byteLength||(i=new Uint8Array(i)),t=xe(t,i.length),p.set(i,t)),o.data.callbackId,i?s(t,i.length):s(0,0)}})(),b?n:new Promise((e,t)=>{u=e,m=t})}e.exports=t,e.exports.default=t}(Qr)),Qr.exports),Gr=Wr($r);if("object"!=typeof WebAssembly)throw new Error("no native wasm support detected");const Xr=async e=>{const t=new URL("https://cdn.p2party.com/@0.7.11/libcrypto.wasm"),n=await fetch(t,{integrity:"sha384-iCNxnyD3ho2bH3H868svpjRIZTRA66sPJDwbi4loPTBIAsYlghPXQFThc96d5jIC"}),r=await n.arrayBuffer();return await Gr({wasmBinary:r,wasmMemory:e})},Yr=async e=>{const t=e?.wasmMemory??Ur(),n=e??await Xr(t),r=n._malloc(Lt),a=new Uint8Array(t.buffer,r,Lt),o=n._malloc(Ft),s=new Uint8Array(t.buffer,o,Ft),i=n._malloc(zt),c=new Uint8Array(t.buffer,i,zt);window.crypto.getRandomValues(c);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")},Jr=async(e,t,n)=>{const r=e.length,a=n?n.wasmMemory:qr(r),o=n??await Xr(a),s=o._malloc(r*Uint8Array.BYTES_PER_ELEMENT),i=new Uint8Array(a.buffer,s,r*Uint8Array.BYTES_PER_ELEMENT);i.set(e);const c=o._malloc(Nt),l=new Uint8Array(a.buffer,c,Nt),d=o._malloc(Ft),u=new Uint8Array(a.buffer,d,Ft);u.set(t),o._sign(r,i.byteOffset,u.byteOffset,l.byteOffset);const m=Uint8Array.from([...l]);return o._free(s),o._free(c),o._free(d),m},Zr=e=>{const t=new Uint8Array(Cr);let n=0;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.schemaVersion),!1),n+=8,t[n]=e.messageType,n+=1,t.set(e.hash,n),n+=jt;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.totalSize),!1),n+=8;new DataView(t.buffer,n,8).setBigInt64(0,BigInt(e.date.getTime()),!1),n+=8;const r=(new TextEncoder).encode(e.name),a=new Uint8Array(256);a.set(r.subarray(0,Math.min(256,r.length))),t.set(a,n),n+=256;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkStartIndex),!1),n+=8;new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkEndIndex),!1),n+=8;return new DataView(t.buffer,n,8).setBigUint64(0,BigInt(e.chunkIndex),!1),n+=8,t},ea=e=>{if(e.length!==Cr)throw new Error("Invalid metadata buffer totalSize");let t=0;const n=new DataView(e.buffer,e.byteOffset+t,8),r=Number(n.getBigUint64(0,!1));t+=8;const a=e[t];t+=1;const o=e.slice(t,t+jt);t+=jt;const s=new DataView(e.buffer,e.byteOffset+t,8),i=Number(s.getBigUint64(0,!1));t+=8;const c=new DataView(e.buffer,e.byteOffset+t,8),l=Number(c.getBigUint64(0,!1)),d=new Date(l);t+=8;const u=e.slice(t,t+256),m=(new TextDecoder).decode(u).replace(/\0+$/,"");t+=256;const f=new DataView(e.buffer,e.byteOffset+t,8),p=Number(f.getBigUint64(0,!1));t+=8;const h=new DataView(e.buffer,e.byteOffset+t,8),y=Number(h.getBigUint64(0,!1));t+=8;const g=new DataView(e.buffer,e.byteOffset+t,8);return{schemaVersion:r,messageType:a,hash:o,totalSize:i,date:d,name:m,chunkStartIndex:p,chunkEndIndex:y,chunkIndex:Number(g.getBigUint64(0,!1))}},ta={Text:1,ImagePNG:2,ImageJPEG:3,ImageJPG:4,ImageGIF:5,ImageBMP:6,ImageTIFF:7,ImageSVG:8,ImageWEBP:9,ImageHEIC:10,DocumentPDF:11,DocumentDOC:12,DocumentDOCX:13,DocumentXLS:14,DocumentXLSX:15,DocumentPPT:16,DocumentPPTX:17,DocumentTXT:18,DocumentRTF:19,DocumentODT:20,AudioMP3:21,AudioWAV:22,AudioAAC:23,AudioFLAC:24,AudioOGG:25,AudioM4A:26,VideoMP4:27,VideoAVI:28,VideoMKV:29,VideoMOV:30,VideoWMV:31,VideoFLV:32,VideoWEBM:33,CompressedZIP:34,CompressedRAR:35,Compressed7Z:36,CompressedTAR:37,CompressedGZ:38,CodeHTML:39,CodeCSS:40,CodeJS:41,CodeJSX:42,CodeTS:43,CodeTSX:44,CodeJSON:45,CodeXML:46,CodePY:47,CodeJAVA:48,CodeC:49,CodeCPP:50,CodeCS:51,CodeRB:52,CodePHP:53,CodeSQL:54,EbookEPUB:55,EbookMOBI:56,EbookAZW:57,FontTTF:58,FontOTF:59,ImageICO:60,ExecutableEXE:61,ExecutableDMG:62,ExecutableAPK:63,Unknown:64},na={Text:"Text",Image:"Image",Document:"Document",Audio:"Audio",Video:"Video",Compressed:"Compressed",Code:"Code",Ebook:"Ebook",Font:"Font",Executable:"Executable",Unknown:"Unknown"},ra=e=>{switch(e){case ta.Text:return"text/plain";case ta.ImagePNG:return"image/png";case ta.ImageJPEG:case ta.ImageJPG:return"image/jpeg";case ta.ImageGIF:return"image/gif";case ta.ImageBMP:return"image/bmp";case ta.ImageTIFF:return"image/tiff";case ta.ImageSVG:return"image/svg+xml";case ta.ImageWEBP:return"image/webp";case ta.ImageHEIC:return"image/heic";case ta.ImageICO:return"image/vnd.microsoft.icon";case ta.DocumentPDF:return"application/pdf";case ta.DocumentDOC:return"application/msword";case ta.DocumentDOCX:return"application/vnd.openxmlformats-officedocument.wordprocessingml.document";case ta.DocumentXLS:return"application/vnd.ms-excel";case ta.DocumentXLSX:return"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";case ta.DocumentPPT:return"application/vnd.ms-powerpoint";case ta.DocumentPPTX:return"application/vnd.openxmlformats-officedocument.presentationml.presentation";case ta.DocumentTXT:return"text/plain";case ta.DocumentRTF:return"application/rtf";case ta.DocumentODT:return"application/vnd.oasis.opendocument.text";case ta.AudioMP3:return"audio/mpeg";case ta.AudioWAV:return"audio/wav";case ta.AudioAAC:return"audio/aac";case ta.AudioFLAC:return"audio/flac";case ta.AudioOGG:return"audio/ogg";case ta.AudioM4A:return"audio/mp4";case ta.VideoMP4:return"video/mp4";case ta.VideoAVI:return"video/x-msvideo";case ta.VideoMKV:return"video/x-matroska";case ta.VideoMOV:return"video/quicktime";case ta.VideoWMV:return"video/x-ms-wmv";case ta.VideoFLV:return"video/x-flv";case ta.VideoWEBM:return"video/webm";case ta.CompressedZIP:return"application/zip";case ta.CompressedRAR:return"application/vnd.rar";case ta.Compressed7Z:return"application/x-7z-compressed";case ta.CompressedTAR:return"application/x-tar";case ta.CompressedGZ:return"application/gzip";case ta.CodeHTML:return"text/html";case ta.CodeCSS:return"text/css";case ta.CodeJS:case ta.CodeJSX:return"application/javascript";case ta.CodeTS:case ta.CodeTSX:return"application/typescript";case ta.CodeJSON:return"application/json";case ta.CodeXML:return"application/xml";case ta.CodePY:return"text/x-python";case ta.CodeJAVA:return"text/x-java-source";case ta.CodeC:return"text/x-c";case ta.CodeCPP:return"text/x-c++";case ta.CodeCS:return"text/plain";case ta.CodeRB:return"text/x-ruby";case ta.CodePHP:return"application/x-httpd-php";case ta.CodeSQL:return"application/sql";case ta.EbookEPUB:return"application/epub+zip";case ta.EbookMOBI:return"application/x-mobipocket-ebook";case ta.EbookAZW:return"application/vnd.amazon.ebook";case ta.FontTTF:return"font/ttf";case ta.FontOTF:return"font/otf";case ta.ExecutableEXE:return"application/vnd.microsoft.portable-executable";case ta.ExecutableDMG:return"application/x-apple-diskimage";case ta.ExecutableAPK:return"application/vnd.android.package-archive";default:return"application/octet-stream"}},aa=new Blob(['const e=(e,t)=>t.some(t=>e instanceof t);let t,a;const n=new WeakMap,o=new WeakMap,r=new WeakMap;let s={get(e,t,a){if(e instanceof IDBTransaction){if("done"===t)return n.get(e);if("store"===t)return a.objectStoreNames[1]?void 0:a.objectStore(a.objectStoreNames[0])}return d(e[t])},set:(e,t,a)=>(e[t]=a,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function i(e){s=e(s)}function c(e){return(a||(a=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(l(this),t),d(this.request)}:function(...t){return d(e.apply(l(this),t))}}function u(a){return"function"==typeof a?c(a):(a instanceof IDBTransaction&&function(e){if(n.has(e))return;const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("complete",o),e.removeEventListener("error",r),e.removeEventListener("abort",r)},o=()=>{t(),n()},r=()=>{a(e.error||new DOMException("AbortError","AbortError")),n()};e.addEventListener("complete",o),e.addEventListener("error",r),e.addEventListener("abort",r)});n.set(e,t)}(a),e(a,t||(t=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction]))?new Proxy(a,s):a)}function d(e){if(e instanceof IDBRequest)return function(e){const t=new Promise((t,a)=>{const n=()=>{e.removeEventListener("success",o),e.removeEventListener("error",r)},o=()=>{t(d(e.result)),n()},r=()=>{a(e.error),n()};e.addEventListener("success",o),e.addEventListener("error",r)});return r.set(t,e),t}(e);if(o.has(e))return o.get(e);const t=u(e);return t!==e&&(o.set(e,t),r.set(t,e)),t}const l=e=>r.get(e);const w=["get","getKey","getAll","getAllKeys","count"],h=["put","add","delete","clear"],m=new Map;function g(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(m.get(t))return m.get(t);const a=t.replace(/FromIndex$/,""),n=t!==a,o=h.includes(a);if(!(a in(n?IDBIndex:IDBObjectStore).prototype)||!o&&!w.includes(a))return;const r=async function(e,...t){const r=this.transaction(e,o?"readwrite":"readonly");let s=r.store;return n&&(s=s.index(t.shift())),(await Promise.all([s[a](...t),o&&r.done]))[0]};return m.set(t,r),r}i(e=>({...e,get:(t,a,n)=>g(t,a)||e.get(t,a,n),has:(t,a)=>!!g(t,a)||e.has(t,a)}));const k=["continue","continuePrimaryKey","advance"],y={},b=new WeakMap,f=new WeakMap,I={get(e,t){if(!k.includes(t))return e[t];let a=y[t];return a||(a=y[t]=function(...e){b.set(this,f.get(this)[t](...e))}),a}};async function*x(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;const a=new Proxy(t,I);for(f.set(a,t),r.set(a,l(t));t;)yield a,t=await(b.get(a)||t.continue()),b.delete(a)}function p(t,a){return a===Symbol.asyncIterator&&e(t,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===a&&e(t,[IDBIndex,IDBObjectStore])}i(e=>({...e,get:(t,a,n)=>p(t,a)?x:e.get(t,a,n),has:(t,a)=>p(t,a)||e.has(t,a)}));const D=64*Uint8Array.BYTES_PER_ELEMENT,B="p2party";async function S(){return function(e,t,{blocked:a,upgrade:n,blocking:o,terminated:r}={}){const s=indexedDB.open(e,t),i=d(s);return n&&s.addEventListener("upgradeneeded",e=>{n(d(s.result),e.oldVersion,e.newVersion,d(s.transaction),e)}),a&&s.addEventListener("blocked",e=>a(e.oldVersion,e.newVersion,e)),i.then(e=>{r&&e.addEventListener("close",()=>r()),o&&e.addEventListener("versionchange",e=>o(e.oldVersion,e.newVersion,e))}).catch(()=>{}),i}(B,16,{upgrade(e,t,a,n){if(e.objectStoreNames.contains("addressBook")){const e=n.objectStore("addressBook");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("addressBook",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("blacklist")){const e=n.objectStore("blacklist");e.indexNames.contains("username")||e.createIndex("username","username",{unique:!1}),e.indexNames.contains("peerId")||e.createIndex("peerId","peerId",{unique:!0}),e.indexNames.contains("peerPublicKey")||e.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}else{const t=e.createObjectStore("blacklist",{keyPath:["peerId"]});t.createIndex("username","username",{unique:!1}),t.createIndex("peerId","peerId",{unique:!0}),t.createIndex("peerPublicKey","peerPublicKey",{unique:!0})}if(e.objectStoreNames.contains("uniqueRoom")){const e=n.objectStore("uniqueRoom");e.indexNames.contains("roomUrl")||e.createIndex("roomUrl","roomUrl",{unique:!0}),e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!0})}else{const t=e.createObjectStore("uniqueRoom",{keyPath:["roomId"]});t.createIndex("roomUrl","roomUrl",{unique:!0}),t.createIndex("roomId","roomId",{unique:!0})}if(e.objectStoreNames.contains("messageData")){const e=n.objectStore("messageData");e.indexNames.contains("roomId")||e.createIndex("roomId","roomId",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!0}),e.indexNames.contains("fromPeerId")||e.createIndex("fromPeerId","fromPeerId",{unique:!1})}else{const t=e.createObjectStore("messageData",{keyPath:["timestamp","roomId","merkleRoot"]});t.createIndex("roomId","roomId",{unique:!1}),t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!0}),t.createIndex("fromPeerId","fromPeerId",{unique:!1})}if(e.objectStoreNames.contains("chunks")){const e=n.objectStore("chunks");e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1})}else{const t=e.createObjectStore("chunks",{keyPath:["merkleRoot","chunkIndex"]});t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("hash","hash",{unique:!1})}if(e.objectStoreNames.contains("newChunks")){const e=n.objectStore("newChunks");e.indexNames.contains("hash")||e.createIndex("hash","hash",{unique:!1}),e.indexNames.contains("merkleRoot")||e.createIndex("merkleRoot","merkleRoot",{unique:!1}),e.indexNames.contains("realChunkHash")||e.createIndex("realChunkHash","realChunkHash",{unique:!0})}else{const t=e.createObjectStore("newChunks",{keyPath:["hash","chunkIndex"]});t.createIndex("hash","hash",{unique:!1}),t.createIndex("merkleRoot","merkleRoot",{unique:!1}),t.createIndex("realChunkHash","realChunkHash",{unique:!0})}if(e.objectStoreNames.contains("sendQueue")){const e=n.objectStore("sendQueue");e.indexNames.contains("labelPeer")||e.createIndex("labelPeer",["label","toPeerId"],{unique:!1})}else{e.createObjectStore("sendQueue",{keyPath:["position","label","toPeerId"]}).createIndex("labelPeer",["label","toPeerId"],{unique:!1})}}})}async function R(){await function(e,{blocked:t}={}){const a=indexedDB.deleteDatabase(e);return t&&a.addEventListener("blocked",e=>t(e.oldVersion,e)),d(a).then(()=>{})}(B,{blocked(){console.error("DB deletion BLOCKED")}})}onmessage=async e=>{const t=e.data,{id:a,method:n}=t;try{let e;switch(n){case"getDBAddressBookEntry":e=await async function(e,t){if(!e&&!t)return;if(e&&e.length<10&&!t)return;if(t&&64!==t.length&&!e)return;const a=await S();try{const n=a.transaction("addressBook","readonly"),o=e?n.objectStore("addressBook").index("peerId"):n.objectStore("addressBook").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),r?{username:r.username,peerId:r.peerId,peerPublicKey:r.peerPublicKey}:void 0}catch(e){return void a.close()}}(...t.args);break;case"getAllDBAddressBookEntries":e=await async function(){try{const e=await S(),t=await e.getAll("addressBook");return e.close(),t}catch(e){return[]}}(...t.args);break;case"setDBAddressBookEntry":e=await async function(e,t,a){try{const n=await S(),o=n.transaction(["addressBook"],"readwrite"),r=o.objectStore("addressBook"),s=r.index("peerId"),i=r.index("peerPublicKey"),c=await s.get(t),u=await i.get(a);(!c&&!u||c&&!u||!c&&u)&&await r.put({username:e,peerId:t,peerPublicKey:a,dateAdded:Date.now()}),await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBAddressBookEntry":e=await async function(e,t,a){const n=!e||0===e.length,o=!t||t.length<10,r=!a||64!==a.length;if(n&&o&&r)throw new Error("Cannot delete address book with no data");let s=t??"";try{const n=await S(),i=n.transaction("addressBook","readwrite"),c=i.objectStore("addressBook");if(o)if(r){const t=c.index("username"),a=await t.getKey(e);if(a){const n=await t.get(e);s=n?.peerId??"",await c.delete(a)}}else{const e=c.index("peerPublicKey"),t=await e.getKey(a);if(t){const n=await e.get(a);s=n?.peerId??"",await c.delete(t)}}else{const e=c.index("peerId"),a=await e.getKey(t);a&&await c.delete(a)}await i.done,n.close()}catch{}return s}(...t.args);break;case"getDBPeerIsBlacklisted":e=await async function(e,t){if(!e&&!t)return!1;if(e&&e.length<10&&!t)return!1;if(t&&64!==t.length&&!e)return!1;try{const a=await S(),n=a.transaction("blacklist","readonly"),o=e?n.objectStore("blacklist").index("peerId"):n.objectStore("blacklist").index("peerPublicKey"),r=e?await o.get(e):await o.get(t);return await n.done,a.close(),!!r}catch(e){return!1}}(...t.args);break;case"getAllDBBlacklisted":e=await async function(){const e=await S();try{const t=await e.getAll("blacklist");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBPeerInBlacklist":e=await async function(e,t){try{const a=await S(),n=a.transaction(["blacklist"],"readwrite"),o=n.objectStore("blacklist"),r=o.index("peerId"),s=o.index("peerPublicKey"),i=await r.get(e),c=await s.get(t);(!i&&!c||i&&!c||!i&&c)&&await o.put({peerId:e,peerPublicKey:t,dateAdded:Date.now()}),await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBPeerFromBlacklist":e=await async function(e,t){const a=!e||e.length<10,n=!t||64!==t.length;if(a&&n)throw new Error("Cannot delete blacklisted with no data");try{const n=await S(),o=n.transaction("blacklist","readwrite"),r=o.objectStore("blacklist");if(a){const e=r.index("peerPublicKey"),a=await e.getKey(t);a&&await r.delete(a)}else{const t=r.index("peerId"),a=await t.getKey(e);a&&await r.delete(a)}await o.done,n.close()}catch(e){console.error(e)}}(...t.args);break;case"getAllDBUniqueRooms":e=await async function(){const e=await S();try{const t=await e.getAll("uniqueRoom");return e.close(),t}catch(t){return e.close(),[]}}(...t.args);break;case"setDBUniqueRoom":e=await async function(e,t){try{const a=await S(),n=a.transaction(["uniqueRoom"],"readwrite"),o=n.objectStore("uniqueRoom"),r=o.index("roomUrl"),s=o.index("roomId"),i=await r.get(e),c=await s.get(t);if(!i&&!c){const a=Date.now();await o.put({roomId:t,roomUrl:e,messageCount:0,lastMessageMerkleRoot:"",createdAt:a,updatedAt:a})}await n.done,a.close()}catch(e){console.error(e)}}(...t.args);break;case"getDBMessageData":e=await async function(e,t){try{const a=await S(),n=a.transaction(["messageData"],"readonly"),o=n.objectStore("messageData"),r=o.index("merkleRoot"),s=o.index("hash");if(e&&e.length===2*D){const o=await r.get(e);if(o)return await n.done,a.close(),o;if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}if(t&&t.length===2*D){const e=await s.get(t);return await n.done,a.close(),e}return await n.done,void a.close()}catch(e){return void console.error(e)}}(...t.args);break;case"getDBRoomMessageData":e=await async function(e){const t=await S(),a=await t.getAllFromIndex("messageData","roomId",e);t.close();const n=a.length,o=[];for(let t=0;t<n;t++)o.push({roomId:e,merkleRoot:a[t].merkleRoot,hash:a[t].hash,fromPeerId:a[t].fromPeerId,filename:a[t].filename,messageType:a[t].messageType,savedSize:a[t].savedSize,totalSize:a[t].totalSize,channelLabel:a[t].channelLabel,timestamp:a[t].timestamp});return o}(...t.args);break;case"setDBRoomMessageData":e=await async function(e,t,a,n,o,r,s,i,c,u){try{const d=await S(),l=d.transaction(["messageData","uniqueRoom"],"readwrite"),w=l.objectStore("messageData"),h=await w.index("merkleRoot").get(t),m=h?.savedSize??0;try{await w.put({roomId:e,timestamp:u,merkleRoot:t,hash:a,fromPeerId:n,filename:i,messageType:s,savedSize:m+o<=r?m+o:r,totalSize:r,channelLabel:c})}catch(e){throw await l.done,d.close(),e}const g=l.objectStore("uniqueRoom"),k=await g.index("roomId").get(e);if(k&&k.lastMessageMerkleRoot!==t)try{await g.put({...k,lastMessageMerkleRoot:t,messageCount:k.messageCount+1,updatedAt:u})}catch(e){throw await l.done,d.close(),e}await l.done,d.close()}catch(e){throw console.error(e),e}}(...t.args);break;case"getDBChunk":e=await async function(e,t){const a=await S(),n=await a.get("chunks",[e,t]);return a.close(),n?.data}(...t.args);break;case"existsDBChunk":e=await async function(e,t){const a=await S(),n=await a.count("chunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBNewChunk":e=await async function(e,t){try{const a=await S(),n=t??-1;if(n>-1){const t=await a.get("newChunks",[e,n]);return a.close(),t}{const t=a.transaction("newChunks"),n=t.objectStore("newChunks").index("realChunkHash"),o=await n.get(e);return await t.done,a.close(),o}}catch(e){return void console.error(e)}}(...t.args);break;case"existsDBNewChunk":e=await async function(e,t){const a=await S(),n=await a.count("newChunks",[e,t]);return a.close(),n>0}(...t.args);break;case"getDBSendQueue":e=await async function(e,t,a){const n=await S();if(a){const o=await n.get("sendQueue",[a,e,t]);return n.close(),o?[o]:[]}const o=n.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),r=IDBKeyRange.only([e,t]),s=await o.getAll(r);return n.close(),s}(...t.args);break;case"getDBAllChunks":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(e&&e.length===2*D){const t=await s.getAll(e);return 0===t.length?(await n.done,a.close(),[]):(await n.done,a.close(),t)}if(t&&t.length===2*D){const e=await r.getAll(t);return await n.done,a.close(),e.length>0?e.filter(t=>t.merkleRoot===e[0].merkleRoot):e}return await n.done,a.close(),[]}catch(e){return console.error(e),[]}}(...t.args);break;case"getDBAllChunksCount":e=await async function(e,t){try{const a=await S(),n=a.transaction(["chunks"],"readonly"),o=n.objectStore("chunks"),r=o.index("hash"),s=o.index("merkleRoot");if(t&&t.length===2*D){const o=await r.count(t);if(0===o){if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}return await n.done,a.close(),o}if(e&&e.length===2*D){const t=await s.count(e);return await n.done,a.close(),t}return await n.done,a.close(),0}catch(e){return 0}}(...t.args);break;case"setDBChunk":e=await async function(e){const t=await S();await t.add("chunks",e),t.close()}(...t.args);break;case"getDBAllNewChunks":e=await async function(e,t){if(!e&&!t)return[];if(e?.length!==2*D&&t?.length!==2*D)return[];const a=await S();if((e?await a.countFromIndex("newChunks","hash",e):await a.countFromIndex("newChunks","merkleRoot",t))>0){const n=e?await a.getAllFromIndex("newChunks","hash",e):await a.getAllFromIndex("newChunks","merkleRoot",t);return a.close(),n}{const n=a.transaction("newChunks","readonly").objectStore("newChunks"),o=e?n.index("hash"):n.index("merkleRoot"),r=e?IDBKeyRange.only(e):IDBKeyRange.only(t),s=await o.getAll(r);return a.close(),s}}(...t.args);break;case"getDBAllNewChunksCount":e=await async function(e){const t=await S(),a=await t.countFromIndex("newChunks","hash",e);return t.close(),a}(...t.args);break;case"setDBNewChunk":e=await async function(e){const t=await S();await t.put("newChunks",e),t.close()}(...t.args);break;case"setDBSendQueue":e=await async function(e){const t=await S();await t.put("sendQueue",e),t.close()}(...t.args);break;case"countDBSendQueue":e=await async function(e,t){const a=await S(),n=a.transaction("sendQueue","readonly").objectStore("sendQueue").index("labelPeer"),o=IDBKeyRange.only([e,t]),r=await n.count(o);return a.close(),r}(...t.args);break;case"deleteDBChunk":e=await async function(e,t){try{const a=await S(),n=a.transaction("chunks","readwrite"),o=n.objectStore("chunks");if(t){const a=IDBKeyRange.only([e,t]);await o.delete(a)}else{const t=o.index("hash"),a=await t.getAllKeys(e),n=a.length;if(0===n){const t=o.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await o.delete(a[e])}else for(let e=0;e<n;e++)await o.delete(a[e])}await n.done,a.close()}catch(e){}}(...t.args);break;case"deleteDBNewChunk":e=await async function(e,t,a,n){try{const o=await S(),r=o.transaction("newChunks","readwrite"),s=r.objectStore("newChunks");if(e){const t=s.index("merkleRoot"),a=await t.getAllKeys(e),n=a.length;for(let e=0;e<n;e++)await s.delete(a[e])}else if(a&&n)await s.delete([a,n]);else if(a){const e=s.index("hash"),t=await e.getAllKeys(a),n=t.length;for(let e=0;e<n;e++)await s.delete(t[e])}else if(t){const e=s.index("realChunkHash"),a=await e.getKey(t);a&&await s.delete(a)}await r.done,o.close()}catch(e){console.error(e)}}(...t.args);break;case"deleteDBMessageData":e=await async function(e){try{const t=await S(),a=t.transaction(["messageData","uniqueRoom"],"readwrite"),n=a.objectStore("messageData"),o=a.objectStore("uniqueRoom"),r=n.index("merkleRoot"),s=await r.getAllKeys(e),i=s.length;let c="";for(let e=0;e<i;e++){if(0===e||0===c.length){const t=await n.get(s[e]);c=t?.roomId??""}await n.delete(s[e])}if(c.length>0){const e=o.index("roomId"),t=await e.get(c);if(t){const e=n.index("roomId"),a=await e.getAllKeys(c),r=a.length,s=r>0?await n.get(a[r-1]):void 0;await o.put({...t,messageCount:t.messageCount>0?t.messageCount-1:0,updatedAt:s?.timestamp??Date.now(),lastMessageMerkleRoot:s?.merkleRoot??""})}}await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBUniqueRoom":e=await async function(e){try{const t=await S(),a=t.transaction("uniqueRoom","readwrite"),n=a.objectStore("uniqueRoom"),o=n.index("roomId"),r=await o.getKey(e);r&&await n.delete(r),await a.done,t.close()}catch(e){}}(...t.args);break;case"deleteDBSendQueue":e=await async function(e,t,a){try{const n=await S();if(a)await n.delete("sendQueue",[a,e,t]);else{const a=IDBKeyRange.only([e,t]);await n.delete("sendQueue",a)}n.close()}catch(e){}}(...t.args);break;case"deleteDB":e=await R();break;default:return void postMessage({id:a,error:"Method not found"})}postMessage({id:a,result:e})}catch(e){postMessage({id:a,error:String(e)})}};\n//# sourceMappingURL=db.worker.js.map\n'],{type:"application/javascript"}),oa=new Worker(URL.createObjectURL(aa),{type:"module"});let sa=0;const ia=new Map;function ca(e,...t){return new Promise((n,r)=>{const a=++sa;ia.set(a,{resolve:n,reject:r}),oa.postMessage({id:a,method:e,args:t})})}oa.onmessage=e=>{const{id:t,result:n,error:r}=e.data,a=ia.get(t);a&&(ia.delete(t),r?a.reject(r):a.resolve(n))};const la=(e,t)=>ca("getDBAddressBookEntry",e,t),da=(e,t)=>ca("getDBPeerIsBlacklisted",e,t),ua=()=>ca("getAllDBUniqueRooms"),ma=e=>ca("getDBRoomMessageData",e),fa=(e,t,n,r,a,o,s,i,c,l)=>ca("setDBRoomMessageData",e,t,n,r,a,o,s,i,c,l),pa=(e,t)=>ca("getDBNewChunk",e,t),ha=(e,t)=>ca("getDBSendQueue",e,t),ya=e=>ca("setDBChunk",e),ga=e=>ca("setDBNewChunk",e),wa=e=>ca("setDBSendQueue",e),ba=(e,t,n,r)=>ca("deleteDBNewChunk",e,t,n,r),Ia=(e,t,n)=>ca("deleteDBSendQueue",e,t,n),va=async(e,t,n,r,a,o)=>{switch(o._receive_message(e.byteOffset,t.byteOffset,n.byteOffset,r.byteOffset,a.byteOffset)){case 0:{const t=e.slice(0,Cr),r=e.slice(Cr+Er),a=ea(t),o=r.slice(a.chunkStartIndex,a.chunkEndIndex),s=await window.crypto.subtle.digest("SHA-512",r),i=new Uint8Array(s),c=a.chunkEndIndex-a.chunkStartIndex>a.totalSize||a.chunkEndIndex-a.chunkStartIndex>Pr?0:a.chunkEndIndex-a.chunkStartIndex;if(0===c)return{date:a.date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const l=Sr(n),d=await((e,t)=>ca("getDBMessageData",e,t))(l),u=null!=d&&d.savedSize===d.totalSize,m=!d||d.savedSize+c<=d.totalSize,f=u||c===a.totalSize||null!=d&&d.savedSize+c===d.totalSize;if(!m)return{date:a.date,chunkIndex:-1,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash};const p=ra(a.messageType);try{return await ya({merkleRoot:l,hash:Sr(a.hash),chunkIndex:a.chunkIndex,data:o.buffer,mimeType:p}),{date:a.date,chunkIndex:a.chunkIndex,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!1,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}catch(e){return{date:a.date,chunkIndex:a.chunkIndex,chunkSize:c,receivedFullSize:f,chunkAlreadyExists:!0,totalSize:a.totalSize,messageType:a.messageType,filename:a.name,chunkHash:i,messageHash:a.hash}}}case-1:return console.error("Message signature is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-2:return console.error("Could not decrypt message"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-3:return console.error("Merkle proof length is wrong"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-4:return console.error("Could not allocate memory for hash"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-5:return console.error("Could not hash chunk"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};case-6:return console.error("Could not verify Merkle proof"),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array};default:return console.error("Unexpected error occured."),{date:new Date,chunkIndex:-1,chunkSize:0,receivedFullSize:!1,chunkAlreadyExists:!1,totalSize:0,messageType:ta.Text,filename:"",chunkHash:new Uint8Array,messageHash:new Uint8Array}}},ka=(e,t)=>new Promise((n,r)=>{try{(e.length<=0||e.length>32)&&r(new Error("Label larger than 128 characters")),"string"==typeof t&&t.length!==2*jt?r(new Error("Merkle root hex should be 128 bytes")):"string"!=typeof t&&t.length!==jt&&r(new Error("Merkle root should be 64 bytes"));let a="";const o=(new TextEncoder).encode(e),s=new Uint8Array(32);s.set(o.subarray(0,Math.min(32,o.length))),a+=Sr(s),a+="~",a+="string"==typeof t?t:Sr(t),n(a)}catch(e){r(e)}}),Sa=e=>new Promise((t,n)=>{try{const r=e.split("~"),a=r.length;2!==a&&a>1?n(new Error(`Channel message label needs to have ${String(2)} components.`)):1===a&&t({channelLabel:e,merkleRootHex:"",merkleRoot:new Uint8Array});const o=_r(r[0]);32!==o.length&&n(new Error("Channel label is not 128 bytes long."));const s=(new TextDecoder).decode(o).replace(/\0+$/,""),i=_r(r[1]);i.length!==jt&&n(new Error("Merkle root has invalid length")),t({channelLabel:s,merkleRoot:i,merkleRootHex:r[1]})}catch(e){n(e)}}),_a=async(e,t,n,r,a,o,s,i,c,l,d,u,m)=>{if(i&&c&&l&&d&&u)try{c.set(e);const{date:f,chunkSize:p,chunkIndex:h,receivedFullSize:y,chunkAlreadyExists:g,totalSize:w,messageType:b,filename:I,chunkHash:v,messageHash:k}=await va(i,c,l,d,u,m),{signalingServer:S,keyPair:_}=t.getState();if(w>0&&v.length===jt&&!g)if(s&&"open"===s.readyState)s.send(v.buffer);else{const e=await ka(a,o);S.isConnected&&await t.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"message",message:Sr(v),roomId:n,fromPeerId:_.peerId,toPeerId:r,label:e}}))}const P=Sr(k);if(y)if(await fa(n,o,P,r,w,w,b,I,a,f.getTime()),t.dispatch(dn({roomId:n,merkleRootHex:o,sha512Hex:P,fromPeerId:r,totalSize:w,messageType:b,filename:I,channelLabel:a,timestamp:f.getTime(),alsoSendFinishedMessage:!0})),s&&"open"===s.readyState)s.send(k.buffer);else{const e=await ka(a,o);S.isConnected&&await t.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"message",message:Sr(k),roomId:n,fromPeerId:_.peerId,toPeerId:r,label:e}}))}else p>0&&h>-1&&!g&&(await fa(n,o,P,r,p,w,b,I,a,f.getTime()),t.dispatch(ln({roomId:n,merkleRootHex:o,sha512Hex:P,fromPeerId:r,chunkSize:p,totalSize:w,messageType:b,filename:I,channelLabel:a,timestamp:f.getTime()})));return{receivedFullSize:y}}catch(e){return console.error(e),{receivedFullSize:!1}}return{receivedFullSize:!1}},Pa=async(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p)=>{if(!n){n=!0;try{for(;;){const t=e.pop();if(!t)break;await _a(t,r,a,o,s,i,c,l,d,u,m,f,p)}}finally{n=!1,e.length>0&&Pa(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p)}}},xa=(e,t,n,r,a,o,s,i,c,l,d,u,m,f,p,h)=>{const y=(e=>{const t=new DataView(e.buffer,e.byteOffset,16);return t.getBigUint64(0,!1).toString(16).padStart(16,"0")+t.getBigUint64(8,!1).toString(16).padStart(16,"0")})(e);n.has(y)||(n.add(y),t.push(e),r||Pa(t,n,r,a,o,s,i,c,l,d,u,m,f,p,h))},Ca=(e,t)=>new Promise((n,r)=>{try{e===t&&n(e);const r=t-e,a=Math.ceil(Math.log2(r)/8),o=Math.pow(Math.pow(2,8),a),s=Math.floor(o/r)*r;let i=new Uint8Array(a),c=s;for(;c>=s;){i=window.crypto.getRandomValues(i),c=0;for(let e=0;e<a;e++)c<<=8,c+=i[e];c<s&&(c%=r,n(e+c))}n(c)}catch(e){r(e)}}),Ea=async(e,t,n=!0,r=!0,a=!0)=>{if(t??=e,0===t&&e===t)return"";const o=t>e?await Ca(e,t):e,s=await((e,t=!0,n=!0,r=!0)=>new Promise((a,o)=>{try{let o="";t&&(o+="abcdefghijklmnopqrstuvwxyz"),n&&(o+="ABCDEFGHIJKLMNOPQRSTUVWXYZ"),r&&(o+="0123456789");let s="";const i=window.crypto.getRandomValues(new Uint8Array(e));for(let t=0;t<e;t++)s+=o[i[t]%o.length];a(s)}catch(e){o(e)}}))(o,n,r,a);return s};function Aa(e,t){if(!(t>e))return e;const n=t-e,r=Math.floor(4294967296/n)*n;let a=0;do{a=crypto.getRandomValues(new Uint32Array(1))[0]}while(a>=r);return e+a%n}const Ta=async({channel:e,epc:t,roomId:n,dataChannels:r},a)=>{const{keyPair:o,rooms:s}=a.getState(),i=_r(t.withPeerPublicKey),c=_r(o.secretKey),l=s.findIndex(e=>e.id===n);let d=t.rooms.findLastIndex(e=>e.roomId===n);if(-1===d){const e=Hr(),r=await Xr(e);d=t.rooms.length,t.rooms.push({roomId:n,receiveMessageModule:r})}const u=[],m=new Set;if("string"==typeof e){const n=r.findIndex(n=>n.label===e&&n.withPeerId===t.withPeerId);if(n>-1&&"open"===r[n].readyState)return r[n]}const f="string"==typeof e?e:e.label,{channelLabel:p,merkleRoot:h,merkleRootHex:y}=await Sa(f),g="string"==typeof e?t.createDataChannel(e,{ordered:!1,protocol:"raw"}):e;g.binaryType="arraybuffer",g.bufferedAmountLowThreshold=Pr,g.onbufferedamountlow=async()=>{for(;"open"===g.readyState;){const e=await ha(f,t.withPeerId);if(0===e.length)break;for(;e.length>0&&g.bufferedAmount<xr&&"open"===g.readyState;){let n=await Ca(0,e.length);n===e.length&&(n=0);const[r]=e.splice(n,1);"open"===g.readyState&&(g.send(r.encryptedData),await Ia(f,t.withPeerId,r.position))}}};const w=g;let b,I,v,k,S,_,P,x,C,E;return w.withPeerId=t.withPeerId,w.roomIds=[n],w.onclose=async()=>{console.log(`Channel with label ${w.label} has closed.`),d&&t.rooms[d]&&(b&&t.rooms[d].receiveMessageModule._free(b),v&&t.rooms[d].receiveMessageModule._free(v),S&&t.rooms[d].receiveMessageModule._free(S),P&&t.rooms[d].receiveMessageModule._free(P),C&&t.rooms[d].receiveMessageModule._free(C)),await a.dispatch(Wa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:w.label})),"main"===w.label&&a.dispatch(tn({roomId:n,connectingToPeers:!0}))},w.onerror=async e=>{console.error(e),await a.dispatch(Wa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:t.withPeerId,label:w.label})),a.dispatch(tn({roomId:n,connectingToPeers:!0}))},w.onmessage=async e=>{const r=new Uint8Array(e.data);if(l>-1&&r.length===jt)try{await Va(r,w.label,w.withPeerId,s[l],a)}catch(e){console.error(e)}else r.length!==Pr?console.error(new Error("Wrong data length received")):xa(r,u,m,false,a,n,w.withPeerId,p,y,w,I,k,_,x,E,t.rooms[d].receiveMessageModule)},w.onopen=()=>{console.log(`Channel with label "${w.label}" and client ${t.withPeerId} is open.`),r.push(w),""===y&&p.length>0&&a.dispatch(sn({roomId:n,label:f,peerId:w.withPeerId}));try{b=t.rooms[d].receiveMessageModule._malloc(Rr),I=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,b,Rr),v=t.rooms[d].receiveMessageModule._malloc(Pr),k=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,v,Pr),S=t.rooms[d].receiveMessageModule._malloc(jt),_=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,S,jt),_.set(h),P=t.rooms[d].receiveMessageModule._malloc(Lt),x=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,P,Lt),x.set(i),C=t.rooms[d].receiveMessageModule._malloc(Ft),E=new Uint8Array(t.rooms[d].receiveMessageModule.wasmMemory.buffer,C,Ft),E.set(c)}catch(e){console.error(e)}},w},Ra=async({peerId:t,peerPublicKey:n,roomId:r,peerConnections:a,rtcConfig:o},s)=>{const{keyPair:i,signalingServer:c}=s.getState();if(o??=Jt,!e.isUUID(t))throw new Error("PeerId is not a valid uuidv4");if(64!==n.length)throw new Error("Peer public key is not a valid length");const l=a.findIndex(e=>e.withPeerId===t);if(l>-1){if(-1===a[l].rooms.findIndex(e=>e.roomId===r)){const e=Hr(),t=await Xr(e);a[l].rooms.push({roomId:r,receiveMessageModule:t})}return a[l]}const d=new RTCPeerConnection(o);d.withPeerId=t,d.withPeerPublicKey=n,d.makingOffer=!1,d.iceCandidates=[],c.isConnected&&await s.dispatch(eo.endpoints.connectWithPeer.initiate({roomId:r,peerId:t,peerPublicKey:n}));const u=Hr(),m=await Xr(u);return d.rooms=[{roomId:r,receiveMessageModule:m}],d.onnegotiationneeded=async()=>{try{d.makingOffer=!0,await d.setLocalDescription(),d.localDescription&&(await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"description",description:d.localDescription,fromPeerId:i.peerId,fromPeerPublicKey:i.publicKey,toPeerId:t,roomId:r}})),console.log(`Negotiation was needed with ${t} and you sent a description ${d.localDescription.type}.`))}catch(e){console.error(e)}finally{d.makingOffer=!1}},d.onicecandidate=async({candidate:e})=>{e&&""!==e.candidate&&await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"candidate",candidate:e,fromPeerId:i.peerId,toPeerId:t,roomId:r}}))},d.onicecandidateerror=e=>{console.error(e)},d.oniceconnectionstatechange=async()=>{if("failed"===d.iceConnectionState){const{signalingServer:e}=s.getState();!e.isConnected&&!e.isEstablishingConnection&&e.serverUrl.length>0&&await s.dispatch(eo.endpoints.connectWebSocket.initiate(e.serverUrl)),d.restartIce()}console.log(`ICE candidate connection state with ${t} is ${d.iceConnectionState}.`)},d.onicegatheringstatechange=()=>{console.log(`ICE gathering state with ${t} is ${d.iceGatheringState}.`)},d.onsignalingstatechange=async()=>{console.log(`Signaling state with ${t} is ${d.signalingState}.`),"stable"===d.signalingState&&d.remoteDescription&&await(async e=>{for(;e.iceCandidates.length>0&&"stable"===e.signalingState&&e.remoteDescription;){const t=e.iceCandidates.shift();if(t){const n=new RTCIceCandidate(t);n.usernameFragment!==t.usernameFragment&&await e.addIceCandidate(n)}}})(d)},d.onconnectionstatechange=async()=>{if("closed"===d.connectionState||"failed"===d.connectionState||"disconnected"===d.connectionState){if(await s.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:t})),console.error(`RTC Connection with peer ${t} has ${d.connectionState}.`),"closed"===d.connectionState){const{signalingServer:e}=s.getState();e.isConnected&&await s.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:i.peerId,roomId:r}}))}}else"connected"===d.connectionState&&(s.dispatch(on({roomId:r,peerId:t,peerPublicKey:n})),console.log(`RTC Connection status with peer ${t} is ${d.connectionState}.`))},d},Ma=async(e,t,n,r)=>{if(e.length%jt!==0)throw new Error("Hashes were not passed");const a=e.length/jt;if(0===a)throw new Error("Cannot calculate Merkle proof of element of empty tree.");if(1===a){const e=new Uint8Array(jt+1);if(e.set(t),r){const t=jt+1,n=window.crypto.getRandomValues(new Uint8Array(r));let a=0;const o=4;return new DataView(n.buffer,a,o).setUint32(0,t,!1),a+=o,n.set(e,a),n}return e}const o=n?.wasmMemory??zr(a),s=n??await Xr(o),i=s._malloc(a*jt),c=new Uint8Array(o.buffer,i,a*jt);c.set(e);const l=s._malloc(jt),d=new Uint8Array(o.buffer,l,jt);d.set(t);const u=a*(jt+1),m=s._malloc(u),f=new Uint8Array(o.buffer,m,u),p=s._get_merkle_proof(a,c.byteOffset,d.byteOffset,f.byteOffset);switch(s._free(i),s._free(l),p){case-1:throw s._free(m),new Error("Element not in tree.");case-2:throw s._free(m),new Error("Could not allocate memory for hash concatenation helper array.");case-3:throw s._free(m),new Error("Could not calculate hash.");default:if(p>0){if(r&&r>=p){const e=window.crypto.getRandomValues(new Uint8Array(r));let t=0;const n=4;return new DataView(e.buffer,t,n).setUint32(0,p,!1),t+=n,e.set(f.slice(0,p),t),s._free(m),e}{const e=Uint8Array.from([...f.slice(0,p)]);return s._free(m),e}}throw s._free(m),new Error("An unexpected error occured")}},Da=[1],Ua="CANCEL_SEND",Oa=async(e,t,n,r,a,o=1,s=Tr,i=.9,c=1)=>{const{keyPair:l}=t.getState();if(o<1)throw new Error("Need at least one chunk.");if(i<1e-4||i>1)throw new Error("Percentage of useful data in chunk should be in (0, 1].");if(!Da.includes(c))throw new Error("Unknown metadata version schema.");if(s>Tr||s<=Ar)throw new Error(`Chunk length needs to be between ${String(Ar)} and ${String(Tr)}`);let d=!1;const u=()=>{d=!0};window.addEventListener(Ua,u);const m=(e=>{if("string"==typeof e)return ta.Text;const t=e.name.split(".").pop()?.toLowerCase()??"";return{png:ta.ImagePNG,jpeg:ta.ImageJPEG,jpg:ta.ImageJPG,gif:ta.ImageGIF,bmp:ta.ImageBMP,tiff:ta.ImageTIFF,svg:ta.ImageSVG,webp:ta.ImageWEBP,heic:ta.ImageHEIC,pdf:ta.DocumentPDF,doc:ta.DocumentDOC,docx:ta.DocumentDOCX,xls:ta.DocumentXLS,xlsx:ta.DocumentXLSX,ppt:ta.DocumentPPT,pptx:ta.DocumentPPTX,txt:ta.DocumentTXT,rtf:ta.DocumentRTF,odt:ta.DocumentODT,mp3:ta.AudioMP3,wav:ta.AudioWAV,aac:ta.AudioAAC,flac:ta.AudioFLAC,ogg:ta.AudioOGG,m4a:ta.AudioM4A,mp4:ta.VideoMP4,avi:ta.VideoAVI,mkv:ta.VideoMKV,mov:ta.VideoMOV,wmv:ta.VideoWMV,flv:ta.VideoFLV,webm:ta.VideoWEBM,zip:ta.CompressedZIP,rar:ta.CompressedRAR,"7z":ta.Compressed7Z,tar:ta.CompressedTAR,gz:ta.CompressedGZ,html:ta.CodeHTML,css:ta.CodeCSS,js:ta.CodeJS,ts:ta.CodeTS,jsx:ta.CodeJSX,tsx:ta.CodeTSX,json:ta.CodeJSON,xml:ta.CodeXML,py:ta.CodePY,java:ta.CodeJAVA,c:ta.CodeC,cpp:ta.CodeCPP,cs:ta.CodeCS,rb:ta.CodeRB,php:ta.CodePHP,sql:ta.CodeSQL,epub:ta.EbookEPUB,mobi:ta.EbookMOBI,azw:ta.EbookAZW,ttf:ta.FontTTF,otf:ta.FontOTF,ico:ta.ImageICO,exe:ta.ExecutableEXE,dmg:ta.ExecutableDMG,apk:ta.ExecutableAPK}[t]??ta.Unknown})(e),f=m===ta.Text?await Ea(256):e.name.substring(0,255),p="string"==typeof e?(new TextEncoder).encode(e):e,h=await navigator.storage.estimate(),y=(h.quota??10737418240)-(h.usage??65536),g="string"==typeof e?p.length:p.size;if(g>y)throw new Error("Not enough space to save the file in the browser.");if(g<1)throw new Error("No data to split in chunks");const w=new Date,b=await window.crypto.subtle.digest("SHA-512",g<10485760?"string"==typeof e?p.buffer:await p.arrayBuffer():"string"==typeof e?p.subarray(0,10485760).buffer:await p.slice(0,10485760).arrayBuffer()),I=new Uint8Array(b),v=Sr(I),k={schemaVersion:c,messageType:m,hash:I,name:f,totalSize:g,date:w};let S=0;const _=Math.max(o,Math.ceil(g/(s*i))),P=new Uint8Array(s),x=new Uint8Array(_*jt),C=Math.floor(s*(1-i)),E=Math.ceil(s*i);for(let a=0;a<_&&!d;a++){window.crypto.getRandomValues(P);const o=await Ca(0,C),s=g-S,i=Math.min(Math.max(s,0),E);let c=o+i;if(s>0){const t=p.slice(S,S+i);if("string"==typeof e)P.set(t,o);else{const e=await t.arrayBuffer();P.set(new Uint8Array(e),o)}S+=i}else{const e=c+g+1,t=Number.MAX_SAFE_INTEGER-e;c+=await Ca(e,t)}const d=await window.crypto.subtle.digest("SHA-512",P),u=new Uint8Array(d),h=Sr(u);x.set(u,a*jt);const y=Zr({...k,chunkStartIndex:o,chunkEndIndex:c,chunkIndex:a});try{await ga({hash:v,merkleRoot:"",chunkIndex:a,realChunkHash:h,data:P.buffer,metadata:y.buffer,merkleProof:(new Uint8Array).buffer})}catch{}t.dispatch(ln({roomId:r.id,merkleRootHex:"",sha512Hex:v,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:a+1,totalChunks:_,messageType:m,filename:f,channelLabel:n,timestamp:w.getTime()}))}if(d)return window.removeEventListener(Ua,u),await ba(void 0,void 0,v),t.dispatch(fn({hashHex:v})),{merkleRoot:new Uint8Array,merkleRootHex:"",hash:new Uint8Array,hashHex:"",totalChunks:0,totalSize:0,messageType:0,chunkHashes:new Uint8Array};const A=await(async(e,t)=>{if(e.length%jt!==0)throw new Error("Hashes were not passed");const n=e.length/jt;if(0===n)throw new Error("Cannot calculate Merkle root of tree with no leaves.");if(1===n)return e;const r=t?.wasmMemory??Nr(n),a=t??await Xr(r),o=a._malloc(n*jt),s=new Uint8Array(r.buffer,o,n*jt);s.set(e);const i=a._malloc(jt),c=new Uint8Array(r.buffer,i,jt),l=a._get_merkle_root(n,s.byteOffset,c.byteOffset);switch(a._free(o),l){case 0:{const e=Uint8Array.from([...c]);return a._free(i),e}case-1:throw a._free(i),new Error("Could not allocate memory for hash concatenation helper array.");case-2:throw a._free(i),new Error("Could not calculate hash.");default:throw a._free(i),new Error("Unexpected error occured.")}})(x,a),T=Sr(A);try{await fa(r.id,T,v,l.peerId,g,g,m,f,n,w.getTime())}catch(e){console.error(e)}return t.dispatch(ln({roomId:r.id,merkleRootHex:T,sha512Hex:v,fromPeerId:l.peerId,chunkSize:0,totalSize:g,chunksCreated:_,totalChunks:_,messageType:m,filename:f,channelLabel:n,timestamp:w.getTime()})),window.removeEventListener(Ua,u),{merkleRoot:A,merkleRootHex:T,hash:I,hashHex:v,totalSize:g,totalChunks:_,messageType:m,chunkHashes:x}},qa=async(e,t,n,r,a,o,s,i,c,l,d,u)=>{let m=!1;const{keyPair:f}=t.getState(),{channelLabel:p,merkleRootHex:h}=await Sa("string"==typeof e?e:e.label),y=function(e){const t=e.slice();for(let e=t.length-1;e>0;e--){const n=Aa(0,e+1);[t[e],t[n]]=[t[n],t[e]]}return t}(Array.from({length:a},(e,t)=>t)),{ptr1:g,ptr2:w,ptr3:b,ptr5:I,ptr6:v,ptr7:k,ptr9:S,ptr10:_,senderEphemeralPublicKey:P,senderEphemeralSecretKey:x,seedBytes:C,senderEphemeralSignature:E,chunkArray:A,receiverPublicKeyArray:T,nonceArray:R,encryptedArray:M}=(e=>{const t=e._malloc(Lt),n=new Uint8Array(e.wasmMemory.buffer,t,Lt),r=e._malloc(Ft),a=new Uint8Array(e.wasmMemory.buffer,r,Ft),o=e._malloc(zt),s=new Uint8Array(e.wasmMemory.buffer,o,zt),i=e._malloc(Ft),c=e._malloc(Nt),l=new Uint8Array(e.wasmMemory.buffer,c,Nt),d=e._malloc(Rr),u=new Uint8Array(e.wasmMemory.buffer,d,Rr),m=e._malloc(Lt),f=new Uint8Array(e.wasmMemory.buffer,m,Lt),p=e._malloc(jt),h=e._malloc($t),y=new Uint8Array(e.wasmMemory.buffer,h,$t),g=e._malloc(Mr);return{ptr1:t,ptr2:r,ptr3:o,ptr4:i,ptr5:c,ptr6:d,ptr7:m,ptr8:p,ptr9:h,ptr10:g,senderEphemeralPublicKey:n,senderEphemeralSecretKey:a,seedBytes:s,senderEphemeralSignature:l,chunkArray:u,receiverPublicKeyArray:f,nonceArray:y,encryptedArray:new Uint8Array(e.wasmMemory.buffer,g,Mr)}})(d);T.set(_r(l));for(let l=0;l<a;l++){const a=y[l];window.crypto.getRandomValues(C);if(0!==d._keypair_from_seed(P.byteOffset,x.byteOffset,C.byteOffset))continue;if(0!==d._sign(Lt,P.byteOffset,r.byteOffset,E.byteOffset))continue;const p=await pa(i,a);if(!p)continue;const g=new Uint8Array(p.metadata),w=ea(g);if(w.chunkStartIndex>=0&&w.chunkEndIndex>w.chunkStartIndex&&w.chunkEndIndex-w.chunkStartIndex<=w.totalSize){const e=ra(w.messageType),t=p.data.slice(w.chunkStartIndex,w.chunkEndIndex);try{await ya({merkleRoot:h,hash:i,chunkIndex:w.chunkIndex,data:t,mimeType:e})}catch{}}const b=new Uint8Array(Er);if(0===p.merkleProof.byteLength){const e=await Ma(o,_r(p.realChunkHash),u,Er);b.set(e);try{await ga({hash:i,merkleRoot:h,realChunkHash:p.realChunkHash,chunkIndex:a,data:p.data,metadata:p.metadata,merkleProof:b.buffer})}catch(e){console.warn(e)}}else if(b.set(new Uint8Array(p.merkleProof)),0===p.merkleRoot.length)try{await ga({hash:i,merkleRoot:h,realChunkHash:p.realChunkHash,chunkIndex:a,data:p.data,metadata:p.metadata,merkleProof:p.merkleProof})}catch(e){console.warn(e)}if(Rr!==g.length+b.length+new Uint8Array(p.data).length)continue;const I=await kr([g,b,new Uint8Array(p.data)]);A.set(I),window.crypto.getRandomValues(R);if(0!==d._encrypt_chachapoly_asymmetric(Rr,A.byteOffset,T.byteOffset,x.byteOffset,R.byteOffset,jt,s.byteOffset,M.byteOffset))continue;const v=await kr([P,E,M]);if("string"==typeof e||"open"!==e.readyState||e.bufferedAmount>=xr)await t.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"message",message:Sr(v),roomId:n,fromPeerId:f.peerId,toPeerId:c,label:"string"==typeof e?e:e.label}}));else if("open"===e.readyState&&e.bufferedAmount<xr)e.send(v.buffer);else{if(!(e.bufferedAmount>xr)){console.log("Cannot send message because channel is "+e.readyState+" and bufferedAmount is "+String(e.bufferedAmount));break}m=!0;try{await wa({position:a,label:e.label,toPeerId:e.withPeerId,encryptedData:v.buffer})}catch(e){console.error(e)}}}if(m)if("string"==typeof e){const r=await ha(e,c);for(;r.length>0;){let a=await Ca(0,r.length);a===r.length&&(a=0);const[o]=r.splice(a,1);await t.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"message",message:Sr(new Uint8Array(o.encryptedData)),roomId:n,fromPeerId:f.peerId,toPeerId:c,label:p}}));try{await Ia(e,c,o.position)}catch(e){console.error(e)}}}else for(;"open"===e.readyState&&e.bufferedAmount<xr;){const t=await ha(e.label,c);for(;t.length>0&&e.bufferedAmount<xr&&"open"===e.readyState;){let n=await Ca(0,t.length);n===t.length&&(n=0);const[r]=t.splice(n,1);if("open"===e.readyState){e.send(r.encryptedData);try{await Ia(e.label,c,r.position)}catch(e){console.error(e)}}}}d._free(g),d._free(w),d._free(b),d._free(I),d._free(v),d._free(k),d._free(S),d._free(_)},Ba=async({data:e,label:t,roomId:n,peerConnections:r,dataChannels:a,encryptionWasmMemory:o,merkleWasmMemory:s,minChunks:i,chunkSize:c,percentageFilledChunk:l,metadataSchemaVersion:d},u)=>{const m=await Xr(o),f=await Xr(s);return await(async(e,t,n,r,a,o,s,i,c=1,l=Tr,d=.9,u=1)=>{try{const{rooms:m,keyPair:f,signalingServer:p}=t.getState(),h=m.findIndex(e=>e.id===r);if(h>-1){const y=m[h].channels.findIndex(e=>e.label===n);if(-1===y)throw new Error("No channel with label "+n);const{merkleRoot:g,merkleRootHex:w,hashHex:b,totalChunks:I,chunkHashes:v}=await Oa(e,t,n,m[h],i,c,l,d,u);if(0===g.length||0===b.length||0===I||0===v.length)return;const k=await ka(n,w),S=s._malloc(Ft),_=new Uint8Array(s.wasmMemory.buffer,S,Ft);_.set(_r(f.secretKey));const P=s._malloc(jt),x=new Uint8Array(s.wasmMemory.buffer,P,jt);x.set(g);const C=m[h].channels[y].peerIds.length,E=[];for(let e=0;e<C;e++){const n=a.findIndex(t=>t.withPeerId===m[h].channels[y].peerIds[e]);if(-1===n&&!p.isConnected)continue;const c=n>-1&&"connected"===a[n].connectionState?await Ta({channel:k,epc:a[n],roomId:r,dataChannels:o},t):k,l=n>-1?a[n].withPeerId:m[h].channels[y].peerIds[e],d=m[h].peers.findIndex(e=>e.peerId===l),u=n>-1?a[n].withPeerPublicKey:d>-1?m[h].peers[d].peerPublicKey:"";u.length===2*Lt&&E.push(qa(c,t,r,_,I,v,x,b,l,u,s,i))}await Promise.allSettled(E),s._free(S),s._free(P)}}catch(e){console.trace(e)}})(e,u,t,n,r,a,m,f,i,c,l,d),{data:void 0}},Ka=async({alsoDeleteDB:e,peerConnections:t,dataChannels:n},r)=>{const a=n.length;for(let e=0;e<a;e++)"open"===n[e].readyState&&n[e].close();const o=t.length;for(let e=0;e<o;e++)await r.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:t[e].withPeerId}));return e&&await ca("deleteDB"),{data:void 0}},ja=async({roomId:e,deleteMessages:t,peerConnections:n,dataChannels:r},a)=>{const o=r.length;for(let t=0;t<o;t++){if(!r[t]||!r[t].roomIds.includes(e)||"open"!==r[t].readyState)continue;const n=r[t].roomIds.findIndex(t=>t===e);n>-1&&(r[t].roomIds.splice(n,1),0===r[t].roomIds.length&&r[t].close())}const s=n.length;for(let t=0;t<s;t++){if(!n[t]||"connected"!==n[t].connectionState)continue;const r=n[t].rooms.findIndex(t=>t.roomId===e);-1!==r&&(n[t].rooms.splice(r,1),0===n[t].rooms.length&&await a.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:n[t].withPeerId})))}if(t){if((await ua()).findIndex(t=>t.roomId===e)>-1){await(e=>ca("deleteDBUniqueRoom",e))(e);const t=await ma(e),n=t.length;for(let e=0;e<n;e++)a.dispatch(fn({merkleRootHex:t[e].merkleRoot}))}}return{data:void 0}},Na=[],za=[],La=[],Fa=Kr(Tr,jt),Ha=Lr(Er),Wa=wr({reducerPath:"webrtcApi",baseQuery:async({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:o,dataChannels:s},i)=>{const{keyPair:c}=i.getState();if(e===c.peerId)throw new Error("Cannot create a connection with oneself.");if(await da(e))return{data:void 0};const l=o.findIndex(t=>t.withPeerId===e);if(-1===l){const c=await Ra({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},i);c.ondatachannel=async e=>{await Ta({channel:e.channel,epc:c,roomId:n,dataChannels:s},i)},o.push(c),r&&await Ta({channel:"main",epc:c,roomId:n,dataChannels:s},i)}else{const r=o[l];if("connected"===r.connectionState){if(-1===r.rooms.findIndex(e=>e.roomId===n)){const a=Hr(),o=await Xr(a);r.rooms.push({roomId:n,receiveMessageModule:o}),i.dispatch(on({roomId:n,peerId:e,peerPublicKey:t}))}const a=s.length;for(let t=0;t<a;t++)s[t].withPeerId!==e||s[t].roomIds.includes(n)||s[t].roomIds.push(n);const{rooms:o}=i.getState(),c=o.length;for(let t=0;t<c;t++){const r=o[t].channels.findIndex(t=>t.peerIds.includes(e));r>-1&&i.dispatch(sn({roomId:n,label:o[t].channels[r].label,peerId:e}))}}}return{data:void 0}},endpoints:e=>({connectWithPeer:e.mutation({query:({peerId:e,peerPublicKey:t,roomId:n,initiator:r=!1,rtcConfig:a={iceServers:[{urls:["stun:stun.p2party.com:3478"]}]}})=>({peerId:e,peerPublicKey:t,roomId:n,initiator:r,rtcConfig:a,peerConnections:Na,dataChannels:La})}),setDescription:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,peerPublicKey:t,roomId:n,description:r,rtcConfig:a,peerConnections:o,iceCandidates:s,dataChannels:i},c)=>{const{keyPair:l}=c.getState(),d=o.findIndex(t=>t.withPeerId===e),u=d>-1?o[d]:await Ra({peerId:e,peerPublicKey:t,roomId:n,peerConnections:o,rtcConfig:a},c);-1!==d&&null!=o[d].ondatachannel||(u.ondatachannel=async e=>{await Ta({channel:e.channel,epc:u,roomId:n,dataChannels:i},c)});const m=s.length,f=[];for(let t=0;t<m;t++)s[t].withPeerId===e&&(f.push(t),u.iceCandidates.push(s[t]));const p=f.length;for(let e=0;e<p;e++)s.splice(f[e],1);-1===d&&o.push(u);const h="offer"===r.type&&(u.makingOffer||"stable"!==u.signalingState);if(!(l.peerId<u.withPeerId)&&h)return{data:void 0};if("closed"!==u.signalingState){if(await u.setRemoteDescription(r),"offer"===r.type){await u.setLocalDescription();const t=u.localDescription;t&&await c.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"description",description:t,fromPeerId:l.peerId,fromPeerPublicKey:l.publicKey,toPeerId:e,roomId:n}}))}}else await c.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:u.withPeerId})),await c.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:l.peerId,roomId:n}}));return"connected"===u.connectionState&&d>-1&&await Ta({channel:"main",epc:u,roomId:n,dataChannels:i},c),{data:void 0}})({...e,peerConnections:Na,iceCandidates:za,dataChannels:La},t)}),setCandidate:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,candidate:t,peerConnections:n,iceCandidates:r},a)=>{const{keyPair:o}=a.getState(),s=n.findIndex(t=>t.withPeerId===e);if(s>-1){const e=n[s],r=new RTCIceCandidate(t);if(e.remoteDescription&&"stable"===e.signalingState)try{await e.addIceCandidate(r)}catch(t){const n=e.makingOffer||"stable"!==e.signalingState;!(o.peerId<e.withPeerId)&&n||(await a.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:e.withPeerId})),e.restartIce())}else e.iceCandidates.push(r)}else r.push({...t,withPeerId:e});return{data:void 0}})({...e,peerConnections:Na,iceCandidates:za},t)}),openChannel:e.mutation({queryFn:(e,t,n)=>(async({roomId:e,channel:t,withPeers:n,peerConnections:r,dataChannels:a},o)=>{const{keyPair:s}=o.getState();if(n&&n.length>0){const i=n.length;for(let c=0;c<i;c++){if(s.peerId===n[c].peerId)continue;const i=r.findIndex(e=>e.withPeerId===n[c].peerId);if(i>-1){const n=r[i];await Ta({channel:t,epc:n,roomId:e,dataChannels:a},o)}}}else{const n=r.length;for(let s=0;s<n;s++){const n=r[s];await Ta({channel:t,epc:n,roomId:e,dataChannels:a},o)}}return{data:void 0}})({...e,peerConnections:Na,dataChannels:La},t)}),sendMessage:e.mutation({queryFn:(e,t,n)=>Ba({...e,peerConnections:Na,dataChannels:La,encryptionWasmMemory:Fa,merkleWasmMemory:Ha},t)}),disconnect:e.mutation({queryFn:(e,t,n)=>Ka({...e,peerConnections:Na,dataChannels:La},t)}),disconnectFromRoom:e.mutation({queryFn:(e,t,n)=>ja({...e,peerConnections:Na,dataChannels:La},t)}),disconnectFromAllRooms:e.mutation({queryFn:(e,t,n)=>(async({deleteMessages:e,exceptionRoomIds:t,peerConnections:n,dataChannels:r},a)=>{let o,s=0;const i=r.length;for(o=0;o<i;o++)if(r[o]&&"open"===r[o].readyState)if(t&&t.length>0){const e=r[o].roomIds.length,n=[];for(s=0;s<e;s++)t.includes(r[o].roomIds[s])||n.push(s);const a=n.length;for(s=0;s<a;s++)r[o].roomIds.splice(n[s],1);0===r[o].roomIds.length&&r[o].close()}else r[o].close();const c=n.length;for(o=0;o<c;o++)if(n[o]&&"connected"===n[o].connectionState)if(t&&t.length>0){const e=n[o].rooms.length,r=[];for(s=0;s<e;s++)t.includes(n[o].rooms[s].roomId)||r.push(s);const i=r.length;for(s=0;s<i;s++)n[o].rooms.splice(r[s],1);0===n[o].rooms.length&&await a.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}))}else await a.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:n[o].withPeerId}));if(e){const{rooms:e}=a.getState(),n=e.length;for(o=0;o<n;o++){if(t&&t.includes(e[o].id))continue;const n=e[o].messages.length;for(s=0;s<n;s++)a.dispatch(fn({merkleRootHex:e[o].messages[s].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Na,dataChannels:La},t)}),disconnectFromPeer:e.mutation({queryFn:(e,t,n)=>(({peerId:e,alsoDeleteData:t,peerConnections:n,dataChannels:r},a)=>{const{signalingServer:o}=a.getState(),s=n.findIndex(t=>t.withPeerId===e);s>-1&&(n[s].ontrack=null,n[s].ondatachannel=null,n[s].onicecandidate=null,n[s].onicecandidateerror=null,n[s].onnegotiationneeded=null,n[s].onsignalingstatechange=null,n[s].onconnectionstatechange=null,n[s].onicegatheringstatechange=null,n[s].oniceconnectionstatechange=null,"failed"!==n[s].connectionState&&"connected"!==n[s].connectionState||n[s].close(),n.splice(s,1)),o.isConnected&&!t||a.dispatch(un({peerId:e}));const i=r.length;for(let t=0;t<i;t++)r[t].withPeerId===e&&"open"===r[t].readyState&&r[t].close();if(t){const{rooms:t}=a.getState(),n=t.length;for(let r=0;r<n;r++){const n=t[r].messages.length;for(let o=0;o<n;o++)t[r].messages[o].fromPeerId===e&&a.dispatch(fn({merkleRootHex:t[r].messages[o].merkleRootHex}))}}return{data:void 0}})({...e,peerConnections:Na,dataChannels:La},t)}),disconnectFromChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({label:e,messageHash:t,alsoDeleteData:n,alsoSendFinishedMessage:r,dataChannels:a},o)=>{const s=a.length;if(0===s)return{data:void 0};for(let i=0;i<s;i++)if(a[i]&&a[i].label===e&&"open"===a[i].readyState&&(t&&r&&t.length===jt&&a[i].send(t.buffer),a[i].close(),n)){const{merkleRootHex:t}=await Sa(e);n&&o.dispatch(fn({merkleRootHex:t}))}return{data:void 0}})({...e,dataChannels:La},t)}),disconnectFromPeerChannelLabel:e.mutation({queryFn:(e,t,n)=>(async({peerId:e,label:t,messageHash:n,alsoDeleteData:r,alsoSendFinishedMessage:a,peerConnections:o,dataChannels:s},i)=>{const{rooms:c,signalingServer:l}=i.getState(),d=s.findIndex(n=>n.label===t&&n.withPeerId===e);d>-1&&s[d]&&(n&&a&&n.length===jt&&s[d].send(n.buffer),s[d].onopen=null,s[d].onclose=null,s[d].onerror=null,s[d].onclosing=null,s[d].onmessage=null,s[d].onbufferedamountlow=null,"open"===s[d].readyState&&s[d].close(),s.splice(d,1),await Ia(t,e));const{merkleRootHex:u}=await Sa(t);u.length>0?(r&&i.dispatch(fn({merkleRootHex:u})),s.findIndex(e=>e.label===t)<0&&await ba(u)):l.isConnected&&!r||i.dispatch(mn({peerId:e,label:t}));const m=c.length;let f=!1;for(let t=0;t<m;t++){const n=c[t].channels.length;for(let r=0;r<n;r++)if(c[t].channels[r].peerIds.includes(e)){f=!0;break}if(f)break}if(!f){const t=o.findIndex(t=>t.withPeerId===e);t>-1&&("failed"===o[t].connectionState||"connected"===o[t].connectionState)&&await i.dispatch(Wa.endpoints.disconnectFromPeer.initiate({peerId:o[t].withPeerId}))}return{data:void 0}})({...e,peerConnections:Na,dataChannels:La},t)})})}),Va=async(e,t,n,r,a)=>{try{const o=Sr(e),{channelLabel:s,merkleRootHex:i}=await Sa(t),c=r.messages.findLastIndex(e=>e.merkleRootHex===i);if(c<0)return;const l=r.messages[c].sha512Hex;if(o===l){a.dispatch(dn({roomId:r.id,merkleRootHex:i,sha512Hex:l,fromPeerId:r.messages[c].fromPeerId,totalSize:r.messages[c].totalSize,messageType:r.messages[c].messageType,filename:r.messages[c].filename,channelLabel:s,timestamp:r.messages[c].timestamp}));const e=_r(l);await a.dispatch(Wa.endpoints.disconnectFromPeerChannelLabel.initiate({peerId:n,label:t,messageHash:e,alsoDeleteData:!1,alsoSendFinishedMessage:!1}))}else{const e=await pa(o),t=e?.chunkIndex??-1;if(e&&t>-1){const e=r.messages.findLastIndex(e=>e.merkleRootHex===i),n=await((e,t)=>ca("getDBChunk",e,t))(i,t),o=n?.byteLength??0;n&&e>-1&&o>0&&r.messages[e].savedSize+o<=r.messages[e].totalSize?a.dispatch(ln({roomId:r.id,merkleRootHex:i,sha512Hex:l,fromPeerId:r.messages[e].fromPeerId,chunkSize:o,totalSize:r.messages[e].totalSize,messageType:r.messages[e].messageType,filename:r.messages[e].filename,channelLabel:s,timestamp:r.messages[e].timestamp})):-1===e&&console.log("No message with hex "+l)}}}catch(e){throw console.error(e),e}},Qa=async(t,n,r,a)=>{try{if("PING"===t.data)return void n.send("PONG");const o=JSON.parse(t.data);switch(o.type){case"ping":{const{keyPair:e}=r.getState();await r.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"pong",fromPeerId:e.peerId}}));break}case"peerId":{const{keyPair:t}=r.getState(),n=o.peerId.length>0?o.peerId:"",a=o.challenge.length>0?o.challenge:"",s=e.isUUID(n)&&e.isHexadecimal(a)&&64===a.length&&0===t.challenge.length&&0===t.signature.length&&!o.challengeId&&!o.username&&!o.credential,i=e.isUUID(n)&&e.isUUID(t.peerId)&&t.peerId!==n&&e.isHexadecimal(a)&&64===a.length&&!o.challengeId&&!o.username&&!o.credential;s||i?await(async(e,t,n,r)=>{const a=_r(e.secretKey),o=Uint8Array.from(n.match(/.{1,2}/g).map(e=>parseInt(e,16))),s=await Jr(o,a),i=[...new Uint8Array(s)].map(e=>e.toString(16).padStart(2,"0")).join("");r.dispatch(Ot({peerId:t,challenge:n,signature:i}))})(t,n,a,r):r.dispatch(Ut({peerId:n,challenge:a,signature:o.signature??"",challengeId:o.challengeId??"",username:o.username??"",credential:o.credential??""}));break}case"roomId":r.dispatch(en({id:o.roomId,url:o.roomUrl}));break;case"challenge":r.dispatch(qt(o));break;case"peerConnection":{if(await da(o.peer.id,o.peer.publicKey))break;const{keyPair:e,rooms:t}=r.getState(),n=t.findIndex(e=>e.id===o.roomId);if(n>-1&&t[n].onlyConnectWithKnownAddresses){if(!await la(o.peer.id,o.peer.publicKey))break}await r.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peerConnection",roomId:o.roomId,fromPeerId:e.peerId,toPeerId:o.peer.id}}));break}case"peers":{const{keyPair:t,rooms:n,commonState:a}=r.getState(),s=64===a.currentRoomUrl.length?n.findIndex(e=>e.url===a.currentRoomUrl):-1;if(s>-1){const a=o.peers.length;if(0===a)break;const i=n[s].onlyConnectWithKnownAddresses;for(let c=0;c<a;c++){if(o.peers[c].publicKey===t.publicKey||o.peers[c].id===t.peerId||!e.isUUID(o.peers[c].id)||64!==o.peers[c].publicKey.length)continue;if(!await da(o.peers[c].id,o.peers[c].publicKey)){if(i){if(!await la(o.peers[c].id,o.peers[c].publicKey))continue}await r.dispatch(Wa.endpoints.connectWithPeer.initiate({roomId:o.roomId,peerId:o.peers[c].id,peerPublicKey:o.peers[c].publicKey,initiator:!0,rtcConfig:n[s].rtcConfig}))}}}break}case"description":if(!await da(o.fromPeerId,o.fromPeerPublicKey)){const{rooms:e,commonState:t}=r.getState(),n=64===t.currentRoomUrl.length?e.findIndex(e=>e.url===t.currentRoomUrl):-1;if(n>-1){if(e[n].onlyConnectWithKnownAddresses){if(!await la(o.fromPeerId,o.fromPeerPublicKey))break}}await r.dispatch(Wa.endpoints.setDescription.initiate({peerId:o.fromPeerId,peerPublicKey:o.fromPeerPublicKey,roomId:o.roomId,description:o.description}))}break;case"candidate":if(!await da(o.fromPeerId)){const{rooms:e,commonState:t}=r.getState(),n=64===t.currentRoomUrl.length?e.findIndex(e=>e.url===t.currentRoomUrl):-1;if(n>-1){if(e[n].onlyConnectWithKnownAddresses){if(!await la(o.fromPeerId))break}}await r.dispatch(Wa.endpoints.setCandidate.initiate({peerId:o.fromPeerId,candidate:o.candidate}))}break;case"message":{const{rooms:e}=r.getState(),t=e.findIndex(e=>e.id===o.roomId),n=new Uint8Array(_r(o.message));if(t>-1&&n.length===jt){try{await Va(n,o.label,o.fromPeerId,e[t],r)}catch(e){console.error(e)}break}if(n.length===Pr){const e=a.findIndex(e=>e.withPeerId===o.fromPeerId);if(-1===e)break;const t=a[e].rooms.findLastIndex(e=>e.roomId===o.roomId);if(-1===t)break;const{channelLabel:s,merkleRoot:i,merkleRootHex:c}=await Sa(o.label);i.length===jt&&a[e].rooms[t].ptr3&&a[e].rooms[t].merkleRootArray&&(a[e].rooms[t].merkleRootArray.set(i),xa(n,a[e].rooms[t].queue,a[e].rooms[t].seen,a[e].rooms[t].draining,r,a[e].rooms[t].roomId,o.fromPeerId,s,c,void 0,a[e].rooms[t].decrypted,a[e].rooms[t].messageArray,a[e].rooms[t].merkleRootArray,a[e].rooms[t].senderPublicKeyArray,a[e].rooms[t].receiverSecretKeyArray,a[e].rooms[t].receiveMessageModule));break}console.error(new Error("Wrong data length received, "+String(n.length)));break}case"connection":{const{keyPair:t}=r.getState();if(e.isUUID(t.peerId)&&e.isHexadecimal(t.challenge)&&e.isHexadecimal(t.signature)&&128===t.signature.length&&64===t.challenge.length&&e.isUUID(o.fromPeerId)&&64===o.fromPeerPublicKey.length&&e.isUUID(o.roomId)){r.dispatch(on({roomId:o.roomId,peerId:o.fromPeerId,peerPublicKey:o.fromPeerPublicKey}));const e=o.labels.length;for(let n=0;n<e;n++)r.dispatch(sn({roomId:o.roomId,label:o.labels[n],peerId:o.fromPeerId})),console.log(`Connected with ${t.peerId} on websocket channel ${o.labels[n]}`);const n=a.findIndex(e=>e.withPeerId===o.fromPeerId||e.withPeerPublicKey===o.fromPeerPublicKey);if(-1===n){const e=Hr(),n=await Xr(e),r=n._malloc(Rr),s=new Uint8Array(n.wasmMemory.buffer,r,Rr),i=n._malloc(Pr),c=new Uint8Array(n.wasmMemory.buffer,i,Pr),l=n._malloc(jt),d=new Uint8Array(n.wasmMemory.buffer,l,jt),u=_r(o.fromPeerPublicKey),m=n._malloc(Lt),f=new Uint8Array(n.wasmMemory.buffer,m,Lt);f.set(u);const p=_r(t.secretKey),h=n._malloc(Ft),y=new Uint8Array(n.wasmMemory.buffer,h,Ft);y.set(p),a.push({withPeerId:o.fromPeerId,withPeerPublicKey:o.fromPeerPublicKey,rooms:[{roomId:o.roomId,receiveMessageModule:n,queue:[],seen:new Set,draining:!1,ptr1:r,decrypted:s,ptr2:i,messageArray:c,ptr3:l,merkleRootArray:d,ptr4:m,senderPublicKeyArray:f,ptr5:h,receiverSecretKeyArray:y}]})}else{if(-1===a[n].rooms.findLastIndex(e=>e.roomId===o.roomId)){const e=Hr(),t=await Xr(e),r=t._malloc(Rr),s=new Uint8Array(t.wasmMemory.buffer,r,Rr),i=t._malloc(Pr),c=new Uint8Array(t.wasmMemory.buffer,i,Pr),l=t._malloc(jt),d=new Uint8Array(t.wasmMemory.buffer,l,jt),u=t._malloc(Lt),m=new Uint8Array(t.wasmMemory.buffer,u,Lt),f=t._malloc(Ft),p=new Uint8Array(t.wasmMemory.buffer,f,Ft);a[n].rooms.push({roomId:o.roomId,receiveMessageModule:t,queue:[],seen:new Set,draining:!1,ptr1:r,decrypted:s,ptr2:i,messageArray:c,ptr3:l,merkleRootArray:d,ptr4:u,senderPublicKeyArray:m,ptr5:f,receiverSecretKeyArray:p})}}}break}case"error":console.error(o);break;default:console.error("Unknown message type "+JSON.stringify(o))}}catch(e){return}},$a=(e,t,n=10,r=20)=>{let a=0;const o=setInterval(()=>{e.readyState===WebSocket.OPEN?(clearInterval(o),t()):(a+=1,console.log(`Waiting for connection... Attempt ${String(a)}`),a>=n&&(clearInterval(o),console.log("WebSocket failed to connect after multiple attempts, closing..."),e.removeEventListener("message",()=>{}),e.removeEventListener("open",()=>{}),e.removeEventListener("close",()=>{}),e.close()))},r)};let Ga=null;const Xa=[],Ya=(e,t)=>(Ga&&(Ga.removeEventListener("message",()=>{}),Ga.removeEventListener("open",()=>{}),Ga.removeEventListener("close",()=>{}),Ga.close(),Ga=null,console.log("WebSocket manually disconnected")),t.dispatch(wn.disconnect()),{data:void 0}),Ja=(t,n)=>{if(Ga&&Ga.readyState===WebSocket.OPEN){const{keyPair:r}=n.getState();return e.isUUID(r.peerId)&&e.isHexadecimal(r.challenge)&&e.isHexadecimal(r.signature)&&128===r.signature.length&&64===r.challenge.length&&$a(Ga,()=>{Ga.send(JSON.stringify(t.content))}),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},Za=async({peerId:t,peerPublicKey:n,roomId:r},a)=>{if(Ga&&Ga.readyState===WebSocket.OPEN){const{keyPair:o}=a.getState();return e.isUUID(o.peerId)&&e.isHexadecimal(o.challenge)&&e.isHexadecimal(o.signature)&&128===o.signature.length&&64===o.challenge.length&&64===n.length&&(a.dispatch(on({roomId:r,peerId:t,peerPublicKey:n})),a.dispatch(sn({roomId:r,label:"main",peerId:t})),console.log(`Connected with ${o.peerId} on channel main`),$a(Ga,()=>{Ga.send(JSON.stringify({type:"connection",roomId:r,fromPeerId:o.peerId,toPeerId:t,labels:["main"]}))})),{data:void 0}}return console.warn("WebSocket is not open"),{data:void 0}},eo=wr({reducerPath:"signalingServerApi",baseQuery:async({signalingServerUrl:t},n)=>{const{keyPair:r,signalingServer:a}=n.getState();if(Ga||a.isConnected||a.isEstablishingConnection)return console.log("WebSocket already connected"),{data:void 0};n.dispatch(wn.startConnecting(t));try{let a=localStorage.getItem("publicKey")??"",o=localStorage.getItem("secretKey")??"";if(0===r.secretKey.length&&0===o.length){const e=await Yr();a=Sr(e.publicKey),o=Sr(e.secretKey),n.dispatch(Dt({publicKey:a,secretKey:o}))}else if(0===r.secretKey.length)if(128===o.length&&64===a.length)n.dispatch(Dt({publicKey:a,secretKey:o}));else{const e=await Yr();a=Sr(e.publicKey),o=Sr(e.secretKey),n.dispatch(Dt({publicKey:a,secretKey:o}))}else a=r.publicKey;const s=t+"?publickey="+a;return Ga=new WebSocket(s),Ga.binaryType="arraybuffer",await new Promise((t,a)=>{try{Ga.onopen=()=>{console.log("WebSocket connected to:",s),n.dispatch(wn.connectionEstablished());const{rooms:a,commonState:o}=n.getState(),i=64===o.currentRoomUrl.length?a.findIndex(e=>e.url===o.currentRoomUrl):-1;i>-1&&e.isUUID(r.peerId)&&e.isUUID(a[i].id)?n.dispatch(tn({roomId:a[i].id,connectingToPeers:!0})):e.isUUID(r.peerId)&&64===o.currentRoomUrl.length&&$a(Ga,()=>{Ga.send(JSON.stringify({type:"room",fromPeerId:r.peerId,roomUrl:o.currentRoomUrl}))}),t({data:void 0})},Ga.onerror=e=>{console.error("WebSocket error:",e),Ga&&(Ga.removeEventListener("message",()=>{}),Ga.removeEventListener("open",()=>{}),Ga.removeEventListener("close",()=>{}),Ga.close(),Ga=null),n.dispatch(wn.disconnect()),a({error:"WebSocket connection failed"})},Ga.onmessage=async e=>{await Qa(e,Ga,n,Xa)},Ga.onclose=()=>{Ga&&(Ga.removeEventListener("message",()=>{}),Ga.removeEventListener("open",()=>{}),Ga.removeEventListener("close",()=>{}),Ga.close(),Ga=null),n.dispatch(wn.disconnect()),console.log("WebSocket disconnected"),t({data:void 0})}}catch(e){a(e)}return()=>{Ga&&(console.log("Cleaning up WebSocket connection..."),Ga.removeEventListener("message",()=>{}),Ga.removeEventListener("open",()=>{}),Ga.removeEventListener("close",()=>{}),Ga.close(),Ga=null)}})}catch(e){return Ga&&(Ga.removeEventListener("message",()=>{}),Ga.removeEventListener("open",()=>{}),Ga.removeEventListener("close",()=>{}),Ga.close(),Ga=null),n.dispatch(wn.disconnect()),console.error("Error during WebSocket setup:",e),{error:"WebSocket connection failed"}}},endpoints:e=>({connectWebSocket:e.mutation({query:(e="wss://signaling.p2party.com/ws")=>({signalingServerUrl:e})}),disconnectWebSocket:e.mutation({queryFn:Ya}),sendMessage:e.mutation({queryFn:Ja}),connectWithPeer:e.mutation({queryFn:Za})})}),to=xt();to.startListening({matcher:xe(tn,en,ln,fn,pn),effect:async(t,n)=>{if(tn.match(t)){const{roomId:r,connectingToPeers:a}=t.payload;if(a){const{signalingServer:t,keyPair:a,rooms:o}=n.getState(),s=o.findIndex(e=>e.id===r);t.isConnected&&e.isUUID(a.peerId)&&s>-1&&e.isUUID(o[s].id)&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:a.peerId,roomId:r}})),n.dispatch(tn({roomId:r,connectingToPeers:!1}))}}else if(en.match(t)){const{signalingServer:o,keyPair:s,rooms:i}=n.getState(),{url:c,id:l,onlyConnectWithKnownPeers:d}=t.payload;if(64===c.length&&null!=d&&localStorage.setItem(c+"-onlyConnectWithKnownPeers",String(d)),64===c.length&&e.isUUID(l)){await(r=c,a=l,ca("setDBUniqueRoom",r,a));const t=await ma(l),d=t.length;for(let e=0;e<d;e++)n.dispatch(ln({roomId:t[e].roomId,merkleRootHex:t[e].merkleRoot,sha512Hex:t[e].hash,fromPeerId:t[e].fromPeerId,filename:t[e].filename,messageType:t[e].messageType,chunkSize:t[e].savedSize,totalSize:t[e].totalSize,channelLabel:t[e].channelLabel,timestamp:t[e].timestamp}));const u=i.findIndex(e=>e.id===l);o.isConnected&&e.isUUID(s.peerId)&&u>-1&&e.isUUID(i[u].id)&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"peers",fromPeerId:s.peerId,roomId:i[u].id}}))}}else if(ln.match(t)){const{roomId:e,merkleRootHex:r,sha512Hex:a,chunkSize:o,totalSize:s}=t.payload,{rooms:i,keyPair:c}=n.getOriginalState(),l=i.findIndex(t=>t.id===e);if(l>-1){const e=i[l].messages.findLastIndex(e=>e.merkleRootHex===r&&e.fromPeerId!==c.peerId&&e.savedSize+o===s);if(e>-1){const t=await ka(i[l].messages[e].channelLabel,i[l].messages[e].merkleRootHex),r=_r(a);await n.dispatch(Wa.endpoints.disconnectFromChannelLabel.initiate({label:t,messageHash:r,alsoDeleteData:!1,alsoSendFinishedMessage:!0}))}}}else if(fn.match(t)){const{merkleRootHex:e,hashHex:n}=t.payload;if(!e&&!n)return;if(e&&e.length!==2*jt)return;if(n&&n.length!==2*jt)return;e?(await((e,t)=>ca("deleteDBChunk",e,t))(e),await ba(e),await(e=>ca("deleteDBMessageData",e))(e)):n&&await ba(void 0,void 0,n)}else if(pn.match(t)){const e=t.payload;await n.dispatch(Wa.endpoints.disconnectFromRoom.initiate({roomId:e,deleteMessages:!0}))}var r,a}});const no=xt();no.startListening({matcher:xe(Dt,Ut,Ot,qt,Bt),effect:async(t,n)=>{if(Dt.match(t)){const{publicKey:e,secretKey:n}=t.payload;64===e.length&&128===n.length&&(localStorage.setItem("publicKey",t.payload.publicKey),localStorage.setItem("secretKey",t.payload.secretKey))}else if(Ut.match(t)){const{peerId:r,challenge:a,signature:o,challengeId:s,username:i,credential:c}=t.payload;if(e.isUUID(r)&&e.isUUID(s)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length){localStorage.setItem("peerId",r),localStorage.setItem("challenge",a),localStorage.setItem("signature",o),localStorage.setItem("challengeId",s);const{keyPair:l,rooms:d,commonState:u}=n.getState(),m=64===u.currentRoomUrl.length?d.findIndex(e=>e.url===u.currentRoomUrl):-1;m>-1?(t.payload.username&&t.payload.credential&&n.dispatch(cn({roomId:d[m].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:i,credential:c}]})),e.isUUID(d[m].id)&&n.dispatch(tn({roomId:d[m].id,connectingToPeers:!0}))):e.isUUID(l.peerId)&&64===u.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:l.peerId,roomUrl:u.currentRoomUrl}}))}}else if(Ot.match(t)){const{peerId:r,challenge:a,signature:o}=t.payload;e.isUUID(r)&&e.isHexadecimal(a)&&e.isHexadecimal(o)&&64===a.length&&128===o.length&&(localStorage.setItem("peerId",r),localStorage.setItem("challenge",a),localStorage.setItem("signature",o),await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"challenge",fromPeerId:r,challenge:a,signature:o}})))}else if(qt.match(t)){const{challengeId:r}=t.payload;if(e.isUUID(r)){localStorage.setItem("challengeId",r);const{keyPair:a,rooms:o,commonState:s}=n.getState(),i=64===s.currentRoomUrl.length?o.findIndex(e=>e.url===s.currentRoomUrl):-1;i>-1?t.payload.username&&t.payload.credential&&(n.dispatch(cn({roomId:o[i].id,iceServers:[{urls:["turn:turn.p2party.com:3478?transport=udp","turn:turn.p2party.com:3478?transport=tcp","turns:turn.p2party.com:443?transport=tcp"],username:t.payload.username,credential:t.payload.credential}]})),e.isUUID(o[i].id)?n.dispatch(tn({roomId:o[i].id,connectingToPeers:!0})):e.isUUID(a.peerId)&&64===s.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:s.currentRoomUrl}}))):e.isUUID(a.peerId)&&64===s.currentRoomUrl.length&&await n.dispatch(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:s.currentRoomUrl}}))}}else Bt.match(t)&&(localStorage.setItem("peerId",""),localStorage.setItem("challengeId",""),localStorage.setItem("publicKey",""),localStorage.setItem("secretKey",""),localStorage.setItem("challenge",""),localStorage.setItem("signature",""))}});const ro=function(e){const t=function(e){const{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:a=!0}=e??{};let o=new ge;return t&&("boolean"==typeof t?o.push(fe):o.push(pe(t.extraArgument))),o},{reducer:r,middleware:a,devTools:o=!0,preloadedState:d,enhancers:u}=e||{};let m,f;if("function"==typeof r)m=r;else{if(!s(r))throw new Error(Ct(1));m=c(r)}f="function"==typeof a?a(t):t();let p=l;o&&(p=he({trace:!1,..."object"==typeof o&&o}));const h=function(...e){return t=>(r,a)=>{const o=t(r,a);let s=()=>{throw new Error(n(15))};const i={getState:o.getState,dispatch:(e,...t)=>s(e,...t)},c=e.map(e=>e(i));return s=l(...c)(o.dispatch),{...o,dispatch:s}}}(...f),y=Se(h);return i(m,d,p(..."function"==typeof u?u(y):y()))}({reducer:{commonState:Tt,keyPair:Kt,rooms:hn,signalingServer:bn,[eo.reducerPath]:eo.reducer,[Wa.reducerPath]:Wa.reducer},middleware:e=>e().concat([eo.middleware,Wa.middleware,to.middleware,no.middleware])}),ao=ro.dispatch;var oo=["abandon","ability","able","about","above","absent","absorb","abstract","absurd","abuse","access","accident","account","accuse","achieve","acid","acoustic","acquire","across","act","action","actor","actress","actual","adapt","add","addict","address","adjust","admit","adult","advance","advice","aerobic","affair","afford","afraid","again","age","agent","agree","ahead","aim","air","airport","aisle","alarm","album","alcohol","alert","alien","all","alley","allow","almost","alone","alpha","already","also","alter","always","amateur","amazing","among","amount","amused","analyst","anchor","ancient","anger","angle","angry","animal","ankle","announce","annual","another","answer","antenna","antique","anxiety","any","apart","apology","appear","apple","approve","april","arch","arctic","area","arena","argue","arm","armed","armor","army","around","arrange","arrest","arrive","arrow","art","artefact","artist","artwork","ask","aspect","assault","asset","assist","assume","asthma","athlete","atom","attack","attend","attitude","attract","auction","audit","august","aunt","author","auto","autumn","average","avocado","avoid","awake","aware","away","awesome","awful","awkward","axis","baby","bachelor","bacon","badge","bag","balance","balcony","ball","bamboo","banana","banner","bar","barely","bargain","barrel","base","basic","basket","battle","beach","bean","beauty","because","become","beef","before","begin","behave","behind","believe","below","belt","bench","benefit","best","betray","better","between","beyond","bicycle","bid","bike","bind","biology","bird","birth","bitter","black","blade","blame","blanket","blast","bleak","bless","blind","blood","blossom","blouse","blue","blur","blush","board","boat","body","boil","bomb","bone","bonus","book","boost","border","boring","borrow","boss","bottom","bounce","box","boy","bracket","brain","brand","brass","brave","bread","breeze","brick","bridge","brief","bright","bring","brisk","broccoli","broken","bronze","broom","brother","brown","brush","bubble","buddy","budget","buffalo","build","bulb","bulk","bullet","bundle","bunker","burden","burger","burst","bus","business","busy","butter","buyer","buzz","cabbage","cabin","cable","cactus","cage","cake","call","calm","camera","camp","can","canal","cancel","candy","cannon","canoe","canvas","canyon","capable","capital","captain","car","carbon","card","cargo","carpet","carry","cart","case","cash","casino","castle","casual","cat","catalog","catch","category","cattle","caught","cause","caution","cave","ceiling","celery","cement","census","century","cereal","certain","chair","chalk","champion","change","chaos","chapter","charge","chase","chat","cheap","check","cheese","chef","cherry","chest","chicken","chief","child","chimney","choice","choose","chronic","chuckle","chunk","churn","cigar","cinnamon","circle","citizen","city","civil","claim","clap","clarify","claw","clay","clean","clerk","clever","click","client","cliff","climb","clinic","clip","clock","clog","close","cloth","cloud","clown","club","clump","cluster","clutch","coach","coast","coconut","code","coffee","coil","coin","collect","color","column","combine","come","comfort","comic","common","company","concert","conduct","confirm","congress","connect","consider","control","convince","cook","cool","copper","copy","coral","core","corn","correct","cost","cotton","couch","country","couple","course","cousin","cover","coyote","crack","cradle","craft","cram","crane","crash","crater","crawl","crazy","cream","credit","creek","crew","cricket","crime","crisp","critic","crop","cross","crouch","crowd","crucial","cruel","cruise","crumble","crunch","crush","cry","crystal","cube","culture","cup","cupboard","curious","current","curtain","curve","cushion","custom","cute","cycle","dad","damage","damp","dance","danger","daring","dash","daughter","dawn","day","deal","debate","debris","decade","december","decide","decline","decorate","decrease","deer","defense","define","defy","degree","delay","deliver","demand","demise","denial","dentist","deny","depart","depend","deposit","depth","deputy","derive","describe","desert","design","desk","despair","destroy","detail","detect","develop","device","devote","diagram","dial","diamond","diary","dice","diesel","diet","differ","digital","dignity","dilemma","dinner","dinosaur","direct","dirt","disagree","discover","disease","dish","dismiss","disorder","display","distance","divert","divide","divorce","dizzy","doctor","document","dog","doll","dolphin","domain","donate","donkey","donor","door","dose","double","dove","draft","dragon","drama","drastic","draw","dream","dress","drift","drill","drink","drip","drive","drop","drum","dry","duck","dumb","dune","during","dust","dutch","duty","dwarf","dynamic","eager","eagle","early","earn","earth","easily","east","easy","echo","ecology","economy","edge","edit","educate","effort","egg","eight","either","elbow","elder","electric","elegant","element","elephant","elevator","elite","else","embark","embody","embrace","emerge","emotion","employ","empower","empty","enable","enact","end","endless","endorse","enemy","energy","enforce","engage","engine","enhance","enjoy","enlist","enough","enrich","enroll","ensure","enter","entire","entry","envelope","episode","equal","equip","era","erase","erode","erosion","error","erupt","escape","essay","essence","estate","eternal","ethics","evidence","evil","evoke","evolve","exact","example","excess","exchange","excite","exclude","excuse","execute","exercise","exhaust","exhibit","exile","exist","exit","exotic","expand","expect","expire","explain","expose","express","extend","extra","eye","eyebrow","fabric","face","faculty","fade","faint","faith","fall","false","fame","family","famous","fan","fancy","fantasy","farm","fashion","fat","fatal","father","fatigue","fault","favorite","feature","february","federal","fee","feed","feel","female","fence","festival","fetch","fever","few","fiber","fiction","field","figure","file","film","filter","final","find","fine","finger","finish","fire","firm","first","fiscal","fish","fit","fitness","fix","flag","flame","flash","flat","flavor","flee","flight","flip","float","flock","floor","flower","fluid","flush","fly","foam","focus","fog","foil","fold","follow","food","foot","force","forest","forget","fork","fortune","forum","forward","fossil","foster","found","fox","fragile","frame","frequent","fresh","friend","fringe","frog","front","frost","frown","frozen","fruit","fuel","fun","funny","furnace","fury","future","gadget","gain","galaxy","gallery","game","gap","garage","garbage","garden","garlic","garment","gas","gasp","gate","gather","gauge","gaze","general","genius","genre","gentle","genuine","gesture","ghost","giant","gift","giggle","ginger","giraffe","girl","give","glad","glance","glare","glass","glide","glimpse","globe","gloom","glory","glove","glow","glue","goat","goddess","gold","good","goose","gorilla","gospel","gossip","govern","gown","grab","grace","grain","grant","grape","grass","gravity","great","green","grid","grief","grit","grocery","group","grow","grunt","guard","guess","guide","guilt","guitar","gun","gym","habit","hair","half","hammer","hamster","hand","happy","harbor","hard","harsh","harvest","hat","have","hawk","hazard","head","health","heart","heavy","hedgehog","height","hello","helmet","help","hen","hero","hidden","high","hill","hint","hip","hire","history","hobby","hockey","hold","hole","holiday","hollow","home","honey","hood","hope","horn","horror","horse","hospital","host","hotel","hour","hover","hub","huge","human","humble","humor","hundred","hungry","hunt","hurdle","hurry","hurt","husband","hybrid","ice","icon","idea","identify","idle","ignore","ill","illegal","illness","image","imitate","immense","immune","impact","impose","improve","impulse","inch","include","income","increase","index","indicate","indoor","industry","infant","inflict","inform","inhale","inherit","initial","inject","injury","inmate","inner","innocent","input","inquiry","insane","insect","inside","inspire","install","intact","interest","into","invest","invite","involve","iron","island","isolate","issue","item","ivory","jacket","jaguar","jar","jazz","jealous","jeans","jelly","jewel","job","join","joke","journey","joy","judge","juice","jump","jungle","junior","junk","just","kangaroo","keen","keep","ketchup","key","kick","kid","kidney","kind","kingdom","kiss","kit","kitchen","kite","kitten","kiwi","knee","knife","knock","know","lab","label","labor","ladder","lady","lake","lamp","language","laptop","large","later","latin","laugh","laundry","lava","law","lawn","lawsuit","layer","lazy","leader","leaf","learn","leave","lecture","left","leg","legal","legend","leisure","lemon","lend","length","lens","leopard","lesson","letter","level","liar","liberty","library","license","life","lift","light","like","limb","limit","link","lion","liquid","list","little","live","lizard","load","loan","lobster","local","lock","logic","lonely","long","loop","lottery","loud","lounge","love","loyal","lucky","luggage","lumber","lunar","lunch","luxury","lyrics","machine","mad","magic","magnet","maid","mail","main","major","make","mammal","man","manage","mandate","mango","mansion","manual","maple","marble","march","margin","marine","market","marriage","mask","mass","master","match","material","math","matrix","matter","maximum","maze","meadow","mean","measure","meat","mechanic","medal","media","melody","melt","member","memory","mention","menu","mercy","merge","merit","merry","mesh","message","metal","method","middle","midnight","milk","million","mimic","mind","minimum","minor","minute","miracle","mirror","misery","miss","mistake","mix","mixed","mixture","mobile","model","modify","mom","moment","monitor","monkey","monster","month","moon","moral","more","morning","mosquito","mother","motion","motor","mountain","mouse","move","movie","much","muffin","mule","multiply","muscle","museum","mushroom","music","must","mutual","myself","mystery","myth","naive","name","napkin","narrow","nasty","nation","nature","near","neck","need","negative","neglect","neither","nephew","nerve","nest","net","network","neutral","never","news","next","nice","night","noble","noise","nominee","noodle","normal","north","nose","notable","note","nothing","notice","novel","now","nuclear","number","nurse","nut","oak","obey","object","oblige","obscure","observe","obtain","obvious","occur","ocean","october","odor","off","offer","office","often","oil","okay","old","olive","olympic","omit","once","one","onion","online","only","open","opera","opinion","oppose","option","orange","orbit","orchard","order","ordinary","organ","orient","original","orphan","ostrich","other","outdoor","outer","output","outside","oval","oven","over","own","owner","oxygen","oyster","ozone","pact","paddle","page","pair","palace","palm","panda","panel","panic","panther","paper","parade","parent","park","parrot","party","pass","patch","path","patient","patrol","pattern","pause","pave","payment","peace","peanut","pear","peasant","pelican","pen","penalty","pencil","people","pepper","perfect","permit","person","pet","phone","photo","phrase","physical","piano","picnic","picture","piece","pig","pigeon","pill","pilot","pink","pioneer","pipe","pistol","pitch","pizza","place","planet","plastic","plate","play","please","pledge","pluck","plug","plunge","poem","poet","point","polar","pole","police","pond","pony","pool","popular","portion","position","possible","post","potato","pottery","poverty","powder","power","practice","praise","predict","prefer","prepare","present","pretty","prevent","price","pride","primary","print","priority","prison","private","prize","problem","process","produce","profit","program","project","promote","proof","property","prosper","protect","proud","provide","public","pudding","pull","pulp","pulse","pumpkin","punch","pupil","puppy","purchase","purity","purpose","purse","push","put","puzzle","pyramid","quality","quantum","quarter","question","quick","quit","quiz","quote","rabbit","raccoon","race","rack","radar","radio","rail","rain","raise","rally","ramp","ranch","random","range","rapid","rare","rate","rather","raven","raw","razor","ready","real","reason","rebel","rebuild","recall","receive","recipe","record","recycle","reduce","reflect","reform","refuse","region","regret","regular","reject","relax","release","relief","rely","remain","remember","remind","remove","render","renew","rent","reopen","repair","repeat","replace","report","require","rescue","resemble","resist","resource","response","result","retire","retreat","return","reunion","reveal","review","reward","rhythm","rib","ribbon","rice","rich","ride","ridge","rifle","right","rigid","ring","riot","ripple","risk","ritual","rival","river","road","roast","robot","robust","rocket","romance","roof","rookie","room","rose","rotate","rough","round","route","royal","rubber","rude","rug","rule","run","runway","rural","sad","saddle","sadness","safe","sail","salad","salmon","salon","salt","salute","same","sample","sand","satisfy","satoshi","sauce","sausage","save","say","scale","scan","scare","scatter","scene","scheme","school","science","scissors","scorpion","scout","scrap","screen","script","scrub","sea","search","season","seat","second","secret","section","security","seed","seek","segment","select","sell","seminar","senior","sense","sentence","series","service","session","settle","setup","seven","shadow","shaft","shallow","share","shed","shell","sheriff","shield","shift","shine","ship","shiver","shock","shoe","shoot","shop","short","shoulder","shove","shrimp","shrug","shuffle","shy","sibling","sick","side","siege","sight","sign","silent","silk","silly","silver","similar","simple","since","sing","siren","sister","situate","six","size","skate","sketch","ski","skill","skin","skirt","skull","slab","slam","sleep","slender","slice","slide","slight","slim","slogan","slot","slow","slush","small","smart","smile","smoke","smooth","snack","snake","snap","sniff","snow","soap","soccer","social","sock","soda","soft","solar","soldier","solid","solution","solve","someone","song","soon","sorry","sort","soul","sound","soup","source","south","space","spare","spatial","spawn","speak","special","speed","spell","spend","sphere","spice","spider","spike","spin","spirit","split","spoil","sponsor","spoon","sport","spot","spray","spread","spring","spy","square","squeeze","squirrel","stable","stadium","staff","stage","stairs","stamp","stand","start","state","stay","steak","steel","stem","step","stereo","stick","still","sting","stock","stomach","stone","stool","story","stove","strategy","street","strike","strong","struggle","student","stuff","stumble","style","subject","submit","subway","success","such","sudden","suffer","sugar","suggest","suit","summer","sun","sunny","sunset","super","supply","supreme","sure","surface","surge","surprise","surround","survey","suspect","sustain","swallow","swamp","swap","swarm","swear","sweet","swift","swim","swing","switch","sword","symbol","symptom","syrup","system","table","tackle","tag","tail","talent","talk","tank","tape","target","task","taste","tattoo","taxi","teach","team","tell","ten","tenant","tennis","tent","term","test","text","thank","that","theme","then","theory","there","they","thing","this","thought","three","thrive","throw","thumb","thunder","ticket","tide","tiger","tilt","timber","time","tiny","tip","tired","tissue","title","toast","tobacco","today","toddler","toe","together","toilet","token","tomato","tomorrow","tone","tongue","tonight","tool","tooth","top","topic","topple","torch","tornado","tortoise","toss","total","tourist","toward","tower","town","toy","track","trade","traffic","tragic","train","transfer","trap","trash","travel","tray","treat","tree","trend","trial","tribe","trick","trigger","trim","trip","trophy","trouble","truck","true","truly","trumpet","trust","truth","try","tube","tuition","tumble","tuna","tunnel","turkey","turn","turtle","twelve","twenty","twice","twin","twist","two","type","typical","ugly","umbrella","unable","unaware","uncle","uncover","under","undo","unfair","unfold","unhappy","uniform","unique","unit","universe","unknown","unlock","until","unusual","unveil","update","upgrade","uphold","upon","upper","upset","urban","urge","usage","use","used","useful","useless","usual","utility","vacant","vacuum","vague","valid","valley","valve","van","vanish","vapor","various","vast","vault","vehicle","velvet","vendor","venture","venue","verb","verify","version","very","vessel","veteran","viable","vibrant","vicious","victory","video","view","village","vintage","violin","virtual","virus","visa","visit","visual","vital","vivid","vocal","voice","void","volcano","volume","vote","voyage","wage","wagon","wait","walk","wall","walnut","want","warfare","warm","warrior","wash","wasp","waste","water","wave","way","wealth","weapon","wear","weasel","weather","web","wedding","weekend","weird","welcome","west","wet","whale","what","wheat","wheel","when","where","whip","whisper","wide","width","wife","wild","will","win","window","wine","wing","wink","winner","winter","wire","wisdom","wise","wish","witness","wolf","woman","wonder","wood","wool","word","work","world","worry","worth","wrap","wreck","wrestle","wrist","write","wrong","yard","year","yellow","you","young","youth","zebra","zero","zone","zoo"];const so=e=>e.normalize("NFKD"),io=async e=>{try{return await(async e=>{const t=so(e).split(" ");if(t.length%3!=0)throw new Error("Number of words in mnemonic must be multiple of three.");const n=t.map(e=>{const t=oo.indexOf(e);if(-1===t)throw new Error("Could not find word in wordlist.");return t.toString(2).padStart(11,"0")}).join(""),r=32*Math.floor(n.length/33),a=n.slice(0,r),o=n.slice(r),s=a.match(/(.{1,8})/g).map(e=>parseInt(e,2));if(s.length<16)throw new Error("Entropy length too small (less than 128 bits).");if(s.length>64)throw new Error("Entropy length too large (more than 512 bits).");const i=s.length/4,c=Uint8Array.from(s),l=await window.crypto.subtle.digest("SHA-512",c);if(new Uint8Array(l).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,i)!==o)throw new Error("Invalid checksum.");return!0})(e)}catch{return!1}},co={store:ro,commonStateSelector:e=>e.commonState,signalingServerSelector:e=>e.signalingServer,roomSelector:e=>e.rooms,keyPairSelector:e=>e.keyPair,connect:async(t,n="wss://signaling.p2party.com/ws",r={iceServers:[{urls:["stun:stun.p2party.com:3478"]}],iceTransportPolicy:"all"})=>{if(64!==t.length)throw new Error("Invalid room url length");const{keyPair:a,signalingServer:o,rooms:s,commonState:i}=ro.getState(),c=s.findIndex(e=>e.url===t);-1===c&&ao(en({url:t,id:"",rtcConfig:r})),i.currentRoomUrl!==t&&ao(At(t)),o.isConnected&&e.isUUID(a.peerId)?-1===c?await ao(eo.endpoints.sendMessage.initiate({content:{type:"room",fromPeerId:a.peerId,roomUrl:t}})):ao(tn({roomId:s[c].id,connectingToPeers:!0})):await ao(eo.endpoints.connectWebSocket.initiate(n))},connectToSignalingServer:async(e,t="wss://signaling.p2party.com/ws")=>{if(64!==e.length)throw new Error("Invalid room url length");const{signalingServer:n,rooms:r,commonState:a}=ro.getState();-1===r.findIndex(t=>t.url===e)&&ao(en({url:e,id:""})),a.currentRoomUrl!==e&&ao(At(e)),n.serverUrl===t&&(n.isConnected||n.isEstablishingConnection)||await ao(eo.endpoints.connectWebSocket.initiate(t))},disconnectFromSignalingServer:async()=>{await ao(eo.endpoints.disconnectWebSocket.initiate())},disconnectFromRoom:async(e,t=!1)=>{await ao(Wa.endpoints.disconnectFromRoom.initiate({roomId:e,deleteMessages:t}))},disconnectFromAllRooms:async(e=!1,t=[])=>{await ao(Wa.endpoints.disconnectFromAllRooms.initiate({deleteMessages:e,exceptionRoomIds:t}))},disconnectFromPeer:async e=>{await ao(Wa.endpoints.disconnectFromPeer.initiate({peerId:e}))},allowConnectionRelay:(e,t=!0)=>{const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.id===e);r>-1&&ao(rn({roomId:n[r].id,canBeConnectionRelay:t}))},onlyAllowConnectionsFromAddressBook:async(e,t)=>{if(64===e.length){const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.url===e);if(r>-1&&!n[r].onlyConnectWithKnownAddresses&&t&&n[r].peers.length>0){const e=n[r].peers.length;for(let t=0;t<e;t++){await la(n[r].peers[t].peerId,n[r].peers[t].peerPublicKey)||await ao(Wa.endpoints.disconnectFromPeer.initiate({peerId:n[r].peers[t].peerId,alsoDeleteData:!1}))}}ao(en({url:r>-1?n[r].url:e,id:r>-1?n[r].id:"",onlyConnectWithKnownPeers:t}))}},addPeerToAddressBook:(e,t,n)=>ca("setDBAddressBookEntry",e,t,n),getPeerAddressBookEntry:la,getAllPeersInAddressBook:()=>ca("getAllDBAddressBookEntries"),getAllPeersInBlacklist:()=>ca("getAllDBBlacklisted"),deletePeerFromAddressBook:async(t,n,r)=>{const a=await((e,t,n)=>ca("deleteDBAddressBookEntry",e,t,n))(t,n,r);e.isUUID(a)&&await ao(Wa.endpoints.disconnectFromPeer.initiate({peerId:a,alsoDeleteData:!1}))},blacklistPeer:async(e,t)=>{await((e,t)=>ca("setDBPeerInBlacklist",e,t))(e,t),await ao(Wa.endpoints.disconnectFromPeer.initiate({peerId:e,alsoDeleteData:!0}))},getPeerIsBlacklisted:da,removePeerFromBlacklist:(e,t)=>ca("deleteDBPeerFromBlacklist",e,t),getAllExistingRooms:ua,sendMessage:async(e,t,n,r=.9,a=3,o=Tr,s=1)=>{await ao(Wa.endpoints.sendMessage.initiate({data:e,label:t,roomId:n,minChunks:a,chunkSize:o,percentageFilledChunk:r,metadataSchemaVersion:s}))},readMessage:async(e,t)=>{if(!e&&!t)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"txt",category:na.Text};try{const{keyPair:n,rooms:r}=ro.getState(),a=r.length;let o=-1,s=-1;for(let i=0;i<a;i++)if(s=r[i].messages.findLastIndex(r=>r.merkleRootHex===e||n.peerId===r.fromPeerId&&r.sha512Hex===t&&""===r.merkleRootHex),s>-1){o=i;break}if(-1===o||-1===s)return{message:"No message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:na.Text};const i=r[o].messages[s].messageType,c=ra(i),l=(e=>{switch(e){case ta.ImagePNG:return"png";case ta.ImageJPEG:return"jpeg";case ta.ImageJPG:return"jpg";case ta.ImageGIF:return"gif";case ta.ImageBMP:return"bmp";case ta.ImageTIFF:return"tiff";case ta.ImageSVG:return"svg";case ta.ImageWEBP:return"webp";case ta.ImageHEIC:return"heic";case ta.DocumentPDF:return"pdf";case ta.DocumentDOC:return"doc";case ta.DocumentDOCX:return"docx";case ta.DocumentXLS:return"xls";case ta.DocumentXLSX:return"xlsx";case ta.DocumentPPT:return"ppt";case ta.DocumentPPTX:return"pptx";case ta.DocumentTXT:return"txt";case ta.DocumentRTF:return"rtf";case ta.DocumentODT:return"odt";case ta.AudioMP3:return"mp3";case ta.AudioWAV:return"wav";case ta.AudioAAC:return"aac";case ta.AudioFLAC:return"flac";case ta.AudioOGG:return"ogg";case ta.AudioM4A:return"m4a";case ta.VideoMP4:return"mp4";case ta.VideoAVI:return"avi";case ta.VideoMKV:return"mkv";case ta.VideoMOV:return"mov";case ta.VideoWMV:return"wmv";case ta.VideoFLV:return"flv";case ta.VideoWEBM:return"webm";case ta.CompressedZIP:return"zip";case ta.CompressedRAR:return"rar";case ta.Compressed7Z:return"7z";case ta.CompressedTAR:return"tar";case ta.CompressedGZ:return"gz";case ta.CodeHTML:return"html";case ta.CodeCSS:return"css";case ta.CodeJS:return"js";case ta.CodeTS:return"ts";case ta.CodeJSX:return"jsx";case ta.CodeTSX:return"tsx";case ta.CodeJSON:return"json";case ta.CodeXML:return"xml";case ta.CodePY:return"py";case ta.CodeJAVA:return"java";case ta.CodeC:return"c";case ta.CodeCPP:return"cpp";case ta.CodeCS:return"cs";case ta.CodeRB:return"rb";case ta.CodePHP:return"php";case ta.CodeSQL:return"sql";case ta.EbookEPUB:return"epub";case ta.EbookMOBI:return"mobi";case ta.EbookAZW:return"azw";case ta.FontTTF:return"ttf";case ta.FontOTF:return"otf";case ta.ImageICO:return"ico";case ta.ExecutableEXE:return"exe";case ta.ExecutableDMG:return"dmg";case ta.ExecutableAPK:return"apk";default:return""}})(i),d=(e=>{switch(e){case ta.Text:return na.Text;case ta.ImagePNG:case ta.ImageJPEG:case ta.ImageJPG:case ta.ImageGIF:case ta.ImageBMP:case ta.ImageTIFF:case ta.ImageSVG:case ta.ImageWEBP:case ta.ImageHEIC:case ta.ImageICO:return na.Image;case ta.DocumentPDF:case ta.DocumentDOC:case ta.DocumentDOCX:case ta.DocumentXLS:case ta.DocumentXLSX:case ta.DocumentPPT:case ta.DocumentPPTX:case ta.DocumentTXT:case ta.DocumentRTF:case ta.DocumentODT:return na.Document;case ta.AudioMP3:case ta.AudioWAV:case ta.AudioAAC:case ta.AudioFLAC:case ta.AudioOGG:case ta.AudioM4A:return na.Audio;case ta.VideoMP4:case ta.VideoAVI:case ta.VideoMKV:case ta.VideoMOV:case ta.VideoWMV:case ta.VideoFLV:case ta.VideoWEBM:return na.Video;case ta.CompressedZIP:case ta.CompressedRAR:case ta.Compressed7Z:case ta.CompressedTAR:case ta.CompressedGZ:return na.Compressed;case ta.CodeHTML:case ta.CodeCSS:case ta.CodeJS:case ta.CodeJSX:case ta.CodeTS:case ta.CodeTSX:case ta.CodeJSON:case ta.CodeXML:case ta.CodePY:case ta.CodeJAVA:case ta.CodeC:case ta.CodeCPP:case ta.CodeCS:case ta.CodeRB:case ta.CodePHP:case ta.CodeSQL:return na.Code;case ta.EbookEPUB:case ta.EbookMOBI:case ta.EbookAZW:return na.Ebook;case ta.FontTTF:case ta.FontOTF:return na.Font;case ta.ExecutableEXE:case ta.ExecutableDMG:case ta.ExecutableAPK:return na.Executable;default:return na.Unknown}})(i),u=r[o].messages[s].fromPeerId===n.peerId?100:Math.floor(r[o].messages[s].savedSize/r[o].messages[s].totalSize*100),m=100===u?await((e,t)=>ca("getDBAllChunks",e,t))(r[o].messages[s].merkleRootHex,r[o].messages[s].sha512Hex):[],f=m.map(e=>e.data);try{const e=new Blob(f,{type:c});return i===ta.Text?{message:f.length>0?await e.text():r[o].messages[s].fromPeerId===n.peerId?"Outgoing message...":"Incoming message...",percentage:u,size:r[o].messages[s].totalSize,filename:"",mimeType:c,extension:l,category:d}:{message:e,percentage:u,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}catch{return{message:"Invalid message",percentage:0,size:r[o].messages[s].totalSize,filename:r[o].messages[s].filename,mimeType:c,extension:l,category:d}}}catch(e){return console.error(e),{message:"Irretrievable message",percentage:0,size:0,filename:"",mimeType:"text/plain",extension:"",category:na.Text}}},cancelMessage:async(e,t,n)=>{if(!t&&!n)throw new Error("Need to provide either merkle root or hash");if(t&&"string"==typeof t&&t.length!==2*jt)throw new Error("Invalid Merkle root length");if(t&&"string"!=typeof t&&t.length!==jt)throw new Error("Invalid Merkle root length");if(n&&"string"==typeof n&&n.length!==2*jt)throw new Error("Invalid hash length");if(n&&"string"!=typeof n&&n.length!==jt)throw new Error("Invalid hash length");const r=new CustomEvent(Ua);window.dispatchEvent(r);const a=t&&"string"==typeof t?t:t&&"string"!=typeof t?Sr(t):"";let o=-1,s=-1;const{rooms:i}=ro.getState(),c=i.length;for(let e=0;e<c;e++)if(s=t?i[e].messages.findIndex(e=>e.merkleRootHex===a):-1,s>-1){o=e;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*jt){const t=await ka(e,i[o].messages[s].merkleRootHex);await ro.dispatch(Wa.endpoints.disconnectFromChannelLabel.initiate({label:t,alsoDeleteData:!0})),ro.dispatch(fn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},deleteMessage:async(e,t)=>{if(!e&&!t)throw new Error("Need to provide either merkle root or hash");if(e&&"string"==typeof e&&e.length!==2*jt)throw new Error("Invalid Merkle root length");if(e&&"string"!=typeof e&&e.length!==jt)throw new Error("Invalid Merkle root length");if(t&&"string"==typeof t&&t.length!==2*jt)throw new Error("Invalid hash length");if(t&&"string"!=typeof t&&t.length!==jt)throw new Error("Invalid hash length");const n=new CustomEvent(Ua);window.dispatchEvent(n);const r=e&&"string"==typeof e?e:e&&"string"!=typeof e?Sr(e):"",a=t&&"string"==typeof t?t:t&&"string"!=typeof t?Sr(t):"";let o=-1,s=-1;const{rooms:i}=ro.getState(),c=i.length;for(let n=0;n<c;n++)if(s=e?i[n].messages.findIndex(e=>e.merkleRootHex===r):t?i[n].messages.findIndex(e=>e.sha512Hex===a):-1,s>-1){o=n;break}if(o>-1&&s>-1&&i[o].messages[s].merkleRootHex.length===2*jt){const e=await ka(i[o].messages[s].channelLabel,i[o].messages[s].merkleRootHex);await ro.dispatch(Wa.endpoints.disconnectFromChannelLabel.initiate({label:e,alsoDeleteData:!0})),ro.dispatch(fn({merkleRootHex:i[o].messages[s].merkleRootHex}))}},purgeIdentity:async()=>{const e=new CustomEvent(Ua);window.dispatchEvent(e),ao(Bt());const{rooms:t}=ro.getState(),n=t.length;for(let e=0;e<n;e++)await ao(Wa.endpoints.disconnectFromRoom.initiate({roomId:t[e].id}));await ao(eo.endpoints.disconnectWebSocket.initiate())},purgeRoom:async e=>{const t=new CustomEvent(Ua);window.dispatchEvent(t);const{rooms:n}=ro.getState(),r=n.findIndex(t=>t.url===e);r>-1&&ao(pn(n[r].id)),await ao(eo.endpoints.disconnectWebSocket.initiate())},purge:async()=>{const e=new CustomEvent(Ua);window.dispatchEvent(e),ao(Bt()),await ao(eo.endpoints.disconnectWebSocket.initiate());const t=await ua(),n=t.length;for(let e=0;e<n;e++)ao(pn(t[e].roomId))},generateRandomRoomUrl:async()=>{const e=await Ea(256),t=(new TextEncoder).encode(e),n=await window.crypto.subtle.digest("SHA-512",t),r=await window.crypto.subtle.digest("SHA-256",n),a=new Uint8Array(r);return Sr(a)},encrypt:async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??Kr(o,s),c=a??await Xr(i),l=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),d=new Uint8Array(i.buffer,l,o*Uint8Array.BYTES_PER_ELEMENT);d.set(e);const u=c._malloc(Lt),m=new Uint8Array(i.buffer,u,Lt);m.set(t);const f=c._malloc(Ft),p=new Uint8Array(i.buffer,f,Ft);p.set(n);const h=c._malloc($t),y=new Uint8Array(i.buffer,h,$t),g=window.crypto.getRandomValues(new Uint8Array($t));y.set(g);const w=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,s*Uint8Array.BYTES_PER_ELEMENT);b.set(r);const I=Xt(o),v=c._malloc(I*Uint8Array.BYTES_PER_ELEMENT),k=new Uint8Array(i.buffer,v,I*Uint8Array.BYTES_PER_ELEMENT),S=c._encrypt_chachapoly_asymmetric(o,d.byteOffset,m.byteOffset,p.byteOffset,y.byteOffset,s,b.byteOffset,k.byteOffset);switch(c._free(l),c._free(u),c._free(f),c._free(h),c._free(w),S){case 0:{const e=Uint8Array.from([...k]);return c._free(v),e}case-1:throw c._free(v),new Error("Could not allocate memory for the ephemeral x25519 public key array.");case-2:throw c._free(v),new Error("Could not allocate memory for the ephemeral x25519 secret key array.");case-3:throw c._free(v),new Error("Could not convert Ed25519 secret key to X25519.");case-4:throw c._free(v),new Error("Could not calculate x25519 public key from x25519 secret key.");case-5:throw c._free(v),new Error("Could not allocate memory for the receiver's ed25519 converted to x25519 public key array.");case-6:throw c._free(v),new Error("Could not convert Ed25519 public key to X25519.");case-7:throw c._free(v),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(v),new Error("Could not calculate the shared secret.");case-9:throw c._free(v),new Error("Could not encrypt.");default:throw c._free(v),new Error("An unexpected error occured.")}},decrypt:async(e,t,n,r,a)=>{const o=e.length,s=r.length,i=a?.wasmMemory??jr(o,s),c=a??await Xr(i),l=Yt(o),d=c._malloc(o*Uint8Array.BYTES_PER_ELEMENT),u=new Uint8Array(i.buffer,d,o*Uint8Array.BYTES_PER_ELEMENT);u.set(e);const m=c._malloc(Lt),f=new Uint8Array(i.buffer,m,Lt);f.set(t);const p=c._malloc(Ft),h=new Uint8Array(i.buffer,p,Ft);h.set(n);const y=c._malloc(s*Uint8Array.BYTES_PER_ELEMENT),g=new Uint8Array(i.buffer,y,s*Uint8Array.BYTES_PER_ELEMENT);g.set(r);const w=c._malloc(l*Uint8Array.BYTES_PER_ELEMENT),b=new Uint8Array(i.buffer,w,l*Uint8Array.BYTES_PER_ELEMENT),I=c._decrypt_chachapoly_asymmetric(o,u.byteOffset,f.byteOffset,h.byteOffset,s,g.byteOffset,b.byteOffset);switch(c._free(d),c._free(m),c._free(p),c._free(y),I){case 0:{const e=Uint8Array.from([...b]);return c._free(w),e}case-1:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 public key array.");case-2:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 secret key array.");case-3:throw c._free(w),new Error("Could not convert receiver ed25519 secret key to x25519.");case-4:throw c._free(w),new Error("Could not generate x25519 public key from x25519 secret key.");case-5:throw c._free(w),new Error("Could not allocate memory for the ed25519 converted to x25519 receiver public key.");case-6:throw c._free(w),new Error("Could not convert receiver ed25519 public key to x25519.");case-7:throw c._free(w),new Error("Could not allocate memory for the shared secret.");case-8:throw c._free(w),new Error("Could not calculate the shared secret.");case-9:throw c._free(w),new Error("Could not decrypt");default:throw c._free(w),new Error("Unsuccessful decryption attempt")}},sign:Jr,verify:async(e,t,n,r)=>{const a=e.length,o=r?r.wasmMemory:Br(a),s=r??await Xr(o),i=s._malloc(a*Uint8Array.BYTES_PER_ELEMENT),c=new Uint8Array(o.buffer,i,a*Uint8Array.BYTES_PER_ELEMENT);c.set(e);const l=s._malloc(Nt),d=new Uint8Array(o.buffer,l,Nt);d.set(t);const u=s._malloc(Lt),m=new Uint8Array(o.buffer,u,Lt);m.set(n);const f=s._verify(a,c.byteOffset,m.byteOffset,d.byteOffset);return s._free(i),s._free(l),s._free(u),0===f},newKeyPair:Yr,generateMnemonic:async(e=128)=>{if(!oo)throw new Error("English wordlist could not be loaded.");if(e%32!=0)throw new TypeError("Mnemonic strength needs to be multiple of 32.");if(![128,160,192,224,256,288,320,352,384,416,448,480,512].includes(e))throw new Error("Wrong mnemonic strength");const t=window.crypto.getRandomValues(new Uint8Array(e/8)),n=t.reduce((e,t)=>e+t.toString(2).padStart(8,"0"),""),r=e/32,a=Uint8Array.from(t),o=await window.crypto.subtle.digest("SHA-512",a);return(n+new Uint8Array(o).reduce((e,t)=>e+t.toString(2).padStart(8,"0"),"").slice(0,r)).match(/(.{1,11})/g).map(e=>{const t=parseInt(e,2);return oo[t]}).join(" ")},keyPairFromMnemonic:async(e,t)=>{if(!await io(e))throw new Error("Invalid mnemonic.");const n=new Uint8Array(Gt),r=new TextEncoder;r.encodeInto("password12345678",n);const a=new Uint8Array(Gt);if(t){const e=r.encode(t),n=await window.crypto.subtle.digest("SHA-512",e);a.set(new Uint8Array(n).slice(jt-Gt,jt))}else a.set(n);const o=await(async(e,t,n)=>{const r=so(e),a=(new TextEncoder).encode(r).buffer,o=new Int8Array(a),s=o.length;t=t??window.crypto.getRandomValues(new Uint8Array(Gt));const i=n?.wasmMemory??Fr(s),c=(n=n??await Xr(i))._malloc(zt),l=new Uint8Array(i.buffer,c,zt),d=window.crypto.getRandomValues(new Uint8Array(zt));l.set(d);const u=n._malloc(s*Uint8Array.BYTES_PER_ELEMENT),m=new Int8Array(i.buffer,u,s*Uint8Array.BYTES_PER_ELEMENT);m.set(o);const f=n._malloc(Gt),p=new Uint8Array(i.buffer,f,Gt);p.set(t);const h=n._argon2(s,l.byteOffset,m.byteOffset,p.byteOffset),y=Uint8Array.from(l);if(n._free(c),n._free(u),n._free(f),0===h)return y;throw new Error("Could not generate argon2id for mnemonic.")})(e,a);return await(async e=>{const t=Or(),n=await Xr(t),r=n._malloc(Lt),a=new Uint8Array(t.buffer,r,Lt),o=n._malloc(Ft),s=new Uint8Array(t.buffer,o,Ft),i=n._malloc(zt),c=new Uint8Array(t.buffer,i,zt);c.set(e);const l=n._keypair_from_seed(a.byteOffset,s.byteOffset,c.byteOffset);if(n._free(i),0===l){const e={publicKey:Uint8Array.from(a),secretKey:Uint8Array.from(s)};return n._free(r),n._free(o),e}throw n._free(r),n._free(o),new Error("An unexpected error occured.")})(o)},MIN_CHUNKS:1,MIN_CHUNK_SIZE:Ar+1,MAX_CHUNK_SIZE:Tr,MIN_PERCENTAGE_FILLED_CHUNK:.1,MAX_PERCENTAGE_FILLED_CHUNK:1,ROOM_URL_LENGTH:64,MessageType:ta,MessageCategory:na,VERSION:t};"undefined"!=typeof window&&(window.p2party=co),exports.default=co,exports.p2party=co;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|