From 49ef0d7464a05be1f67bc3e74327be054a286716 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 13 Nov 2025 10:59:01 -0500 Subject: [PATCH 01/26] added _framework JS files to application template to resolve issue in .NET 10 --- Oqtane.Application/Server/wwwroot/_framework/blazor.server.js | 2 ++ Oqtane.Application/Server/wwwroot/_framework/blazor.web.js | 1 + 2 files changed, 3 insertions(+) create mode 100644 Oqtane.Application/Server/wwwroot/_framework/blazor.server.js create mode 100644 Oqtane.Application/Server/wwwroot/_framework/blazor.web.js diff --git a/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js b/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js new file mode 100644 index 00000000..b35f13bb --- /dev/null +++ b/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js @@ -0,0 +1,2 @@ +!function(){"use strict";var e,t,n;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c,l;class h{constructor(e){this._jsObject=e,this._cachedHandlers=new Map}resolveInvocationHandler(e,t){var n;const r=null===(n=this._cachedHandlers.get(e))||void 0===n?void 0:n[t];if(r)return r;const[o,i]=E(this._jsObject,e),s=function(e,t,n,r){switch(n){case l.FunctionCall:const n=e[t];if(n instanceof Function)return n.bind(e);throw new Error(`The value '${r}' is not a function.`);case l.ConstructorCall:const o=e[t];if(o instanceof Function){const t=o.bind(e);return(...e)=>new t(...e)}throw new Error(`The value '${r}' is not a function.`);case l.GetValue:if(!function(e,t){if(!(t in e))return!1;for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!!n.hasOwnProperty("value")||n.hasOwnProperty("get")&&"function"==typeof n.get;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${r}' is not defined or is not readable.`);return()=>e[t];case l.SetValue:if(!function(e,t){if(!(t in e))return Object.isExtensible(e);for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!(!n.hasOwnProperty("value")||!n.writable)||n.hasOwnProperty("set")&&"function"==typeof n.set;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${r}' is not writable.`);return(...n)=>e[t]=n[0]}}(o,i,t,e);return this.addHandlerToCache(e,s,t),s}getWrappedObject(){return this._jsObject}addHandlerToCache(e,t,n){const r=this._cachedHandlers.get(e);r?r[n]=t:this._cachedHandlers.set(e,{[n]:t})}}!function(e){e[e.FunctionCall=1]="FunctionCall",e[e.ConstructorCall=2]="ConstructorCall",e[e.GetValue=3]="GetValue",e[e.SetValue=4]="SetValue"}(l=e.JSCallType||(e.JSCallType={}));const u=0,d={[u]:new h(window)};d[0]._cachedHandlers.set("import",{[l.FunctionCall]:e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substring(2),document.baseURI).toString()),import(e))});let p,f=1;function g(e){t.push(e)}function m(e){if(null==e)return{[n]:-1};if(e&&("object"==typeof e||e instanceof Function)){d[f]=new h(e);const t={[n]:f};return f++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function y(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[s]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function v(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function _(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new w(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=g,e.invokeMethod=function(e,t,...n){return _().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return _().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=y,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&-1!==t&&C(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(p=e.JSCallResultType||(e.JSCallResultType={}));class w{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r,o){const i=R(this.processJSCall(r,e,o,t),n);return null==i?null:x(this,i)}async beginInvokeJSFromDotNet(e,t,n,r,o,i){try{const s=this.processJSCall(o,t,i,n);if(e){const t=x(this,[e,!0,R(await s,r)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)}}catch(t){if(e){const n=JSON.stringify([e,!1,b(t)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,n)}}}processJSCall(e,t,n,r){var o;const i=null!==(o=v(this,r))&&void 0!==o?o:[];return S(t,e,n)(...i)}endInvokeDotNetFromJS(e,t,n){const r=t?v(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=x(this,r),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return i?v(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const i=x(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,i)}catch(e){this.completePendingCall(o,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new T;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new T;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function b(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function S(e,t,n){const r=d[t];if(r)return r.resolveInvocationHandler(e,null!=n?n:l.FunctionCall);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function C(e){delete d[e]}function E(e,t){const n=t.split(".");let r=e;for(let e=0;econsole.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=I,g((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new I(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=d[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new k(n)}}return t}));class k{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class T{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function R(e,t){switch(t){case p.Default:return e;case p.JSObjectReference:return m(e);case p.JSStreamReference:return y(e);case p.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let D=0;function x(e,t){D=0,c=e;const n=JSON.stringify(t,A);return c=void 0,n}function A(e,t){if(t instanceof I)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(D,t);const e={[o]:D};return D++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const o=new Map,i=new Map,s=[];function a(e){return o.get(e)}function c(e){const t=o.get(e);return t?.browserEventName||e}function l(e,t){e.forEach((e=>o.set(e,t)))}function h(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),l(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),l(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),l(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),l(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type,isComposing:t.isComposing};var t}}),l(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),l(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),l(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),l(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:h(t.touches),targetTouches:h(t.targetTouches),changedTouches:h(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),l(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),l(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),l(["cancel","close","toggle"],{createEventArgs:()=>({})});const d=["date","datetime-local","month","time","week"],p=new Map;let f,g,m=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++m).toString();p.set(r,e);const o=await w().invokeMethodAsync("AddRootComponent",t,r),i=new _(o,g[t]);return await i.setParameters(n),i}};class v{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new v)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return w().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await w().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function w(){if(!f)throw new Error("Dynamic root components have not been enabled in this application.");return f}const b=new Map,S=[],C=new Map;function E(t,n,r,o){if(b.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);b.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(f)throw new Error("Dynamic root components have already been enabled.");f=t,g=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),C.get(t)?.[0]?.(),function(e){for(const t of S)t(e)}(t)}function I(e){return b.has(e)}function k(e,t,n){return R(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=b.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let R=(e,t,n)=>n();const D=U(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=U(["click","dblclick","mousedown","mousemove","mouseup"]);class P{static{this.nextEventDelegatorId=0}constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),i=o.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(i),o.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}removeListenersForElement(e){const t=this.getEventHandlerInfosForElement(e,!1);if(t){for(const e of t.enumerateHandlers())this.eventInfoStore.remove(e.eventHandlerId);delete e[this.eventsCollectionKey]}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){const r=this.getEventHandlerInfosForElement(e,!0),o=r.stopPropagation(t);r.stopPropagation(t,n),!o&&n?this.eventInfoStore.addGlobalListener(t):o&&!n&&this.eventInfoStore.decrementCountByEventName(t)}setPreventDefault(e,t,n){const r=this.getEventHandlerInfosForElement(e,!0),o=r.preventDefault(t);r.preventDefault(t,n),!o&&n?this.eventInfoStore.addActiveGlobalListener(t):o&&!n&&this.eventInfoStore.decrementCountByEventName(t)}onGlobalEvent(e){if(!(e.target instanceof Element))return;if(!I(this.browserRendererId))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const c=Object.prototype.hasOwnProperty.call(D,e);let l=!1;for(;o;){const d=o,p=this.getEventHandlerInfosForElement(d,!1);if(p){const n=p.getHandler(e);if(n&&(h=d,u=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,u)&&h.disabled))){if(!s){const n=a(e);i=n?.createEventArgs?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=c||l?void 0:n.shift()}var h,u}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new M:null}}class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=c(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(D,e);document.addEventListener(e,this.globalListener,t)}}addActiveGlobalListener(e){e=c(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e)?(this.countByEventName[e]++,document.removeEventListener(e,this.globalListener)):this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(D,e);document.addEventListener(e,this.globalListener,{capture:t,passive:!1})}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=c(t.eventName);this.decrementCountByEventName(n)}return t}decrementCountByEventName(e){0==--this.countByEventName[e]&&(delete this.countByEventName[e],document.removeEventListener(e,this.globalListener))}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class M{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}*enumerateHandlers(){for(const e in this.handlers)Object.prototype.hasOwnProperty.call(this.handlers,e)&&(yield this.handlers[e])}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function U(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function H(e){const t=V(e);for(;t.length;)W(e,0)}function F(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=V(r);if(t?.length>0){const t=Z(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const i=z(r);if(i){const e=V(i),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const s=V(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return V(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function V(e){return e[B]}function K(e){const t=V(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function*X(e){const t=V(e);for(const e of t)yield*X(e);yield e}function G(e,t){const n=V(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Z(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Q(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let i=r;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Q(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Q(e,z(t))}}}function Z(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Z(t)}}function ee(e){return`_bl_${e}`}const te="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,te)&&"string"==typeof t[te]?function(e){const t=`[${ee(e)}]`;return document.querySelector(t)}(t[te]):t));const ne="_blazorDeferredValue";function re(e){return"select-multiple"===e.type}function oe(e,t){e.value=t||""}function ie(e,t){e instanceof HTMLSelectElement?re(e)?function(e,t){t||=[];for(let n=0;n{Ce()&&function(e){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const t=function(e){const t=e.composedPath&&e.composedPath();if(t)for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ae.content));var s;let a=0;for(;i.firstChild;)j(i.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,i=o.attributeName(r),s=o.attributeEventHandlerId(r);if(s){const e=ge(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,r,o,i,s){const a=r;for(let a=i;adocument.baseURI,getLocationHref:()=>location.href,scrollToElement:be};function Pe(e,t,n=!1){const r=Se(e);!t.forceLoad&&we(r)?Ne(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Ne(e,t,n,r=void 0,o=!1){if(Be(),function(e,t){const n=new URL(e),r=new URL(t);return n.origin===r.origin&&n.pathname===r.pathname&&n.search===r.search&&""!==r.hash}(location.href,e))return Me(e,n,r),void function(e){const t=e.indexOf("#");t!==e.length-1&&be(e.substring(t+1))}(e);const i=He();(o||!i?.hasLocationChangingEventListeners||await Le(e,r,t,i))&&(function(e,t){const n=new URL(e),r=new URL(t);return n.protocol===r.protocol&&n.host===r.host&&n.port===r.port&&n.pathname===r.pathname}(e,location.href)||(_e=!0),Me(e,n,r),await $e(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:ke},"",e):(ke++,history.pushState({userState:n,_index:ke},"",e))}function Ue(e){return new Promise((t=>{const n=De;De=()=>{De=n,t()},history.go(e)}))}function Be(){xe&&(xe(!1),xe=null)}function Le(e,t,n,r){return new Promise((o=>{Be(),Te++,xe=o,r.locationChanging(Te,e,t,n)}))}async function $e(e,t){const n=location.href;await Promise.all(Array.from(Re,(async([t,r])=>{I(t)&&await r.locationChanged(n,history.state?.userState,e)})))}async function Oe(e){De&&(Ce(),1)&&await De(e),ke=history.state?._index??0}function He(){const e=Ee();if(void 0!==e)return Re.get(e)}const Fe={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus({preventScroll:!0}))}},je={init:function(e,t,n,r=50){const o=ze(t);(o||document.documentElement).style.overflowAnchor="none";const i=document.createRange();d(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(r){r.forEach((r=>{if(!r.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const o=i.getBoundingClientRect().height,s=r.rootBounds?.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,o,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,o,s)}))}),{root:o,rootMargin:`${r}px`});s.observe(t),s.observe(n);const a=u(t),c=u(n),{observersByDotNetObjectId:l,id:h}=qe(e);function u(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{d(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function d(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=qe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},We=Symbol();function ze(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:ze(e.parentElement):null}function qe(e){const t=e._callDispatcher,n=e._id;return t[We]??={},{observersByDotNetObjectId:t[We],id:n}}const Je={getAndRemoveExistingTitle:function(){const e=document.head?document.head.getElementsByTagName("title"):[];if(0===e.length)return null;let t=null;for(let n=e.length-1;n>=0;n--){const r=e[n],o=r.previousSibling;o instanceof Comment&&null!==z(o)||(null===t&&(t=r.textContent),r.parentNode?.removeChild(r))}return t}},Ve={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const i=Ke(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){const t=Math.min(1,r/s.width),i=Math.min(1,o/s.height),a=Math.min(t,i),c=document.createElement("canvas");c.width=Math.round(s.width*a),c.height=Math.round(s.height*a),c.getContext("2d")?.drawImage(s,0,0,c.width,c.height),c.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:a?.size||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ke(e,t).blob}};function Ke(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Xe=new Set;function Ge(e){e.preventDefault(),e.returnValue=!0}async function Ye(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const Qe={navigateTo:function(e,t,n=!1){Pe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(o.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}o.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ae,domWrapper:Fe,Virtualize:je,PageTitle:Je,InputFile:Ve,NavigationLock:{enableNavigationPrompt:function(e){0===Xe.size&&window.addEventListener("beforeunload",Ge),Xe.add(e)},disableNavigationPrompt:function(e){Xe.delete(e),0===Xe.size&&window.removeEventListener("beforeunload",Ge)}},getJSDataStreamChunk:Ye,attachWebRendererInterop:E}};var Ze;function et(e){const t={...tt,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...tt.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=Qe,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(Ze||(Ze={}));const tt={configureSignalR:e=>{},logLevel:Ze.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:30,retryIntervalMilliseconds:function(e,t){return t&&e>=t?null:e<10?0:e<20?5e3:3e4},dialogId:"components-reconnect-modal"}};(class e{static{this.instance=new e}log(e,t){}});let nt=class{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${Ze[e]}: ${t}`;switch(e){case Ze.Critical:case Ze.Error:console.error(n);break;case Ze.Warning:console.warn(n);break;case Ze.Information:console.info(n);break;default:console.log(n)}}}};const rt=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function ot(e){return it(e,rt)}function it(e,t,n="state"){if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",o=t.exec(r),i=o&&o.groups&&o.groups[n];return i&&e.parentNode?.removeChild(e),i}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function ct(e,t){const n=e.currentElement;var r,o,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=at.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=at.exec(e.textContent),o=t&&t[1];if(o)return dt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return o=n,i=c,ut(r=s),{...r,uniqueId:lt++,start:o,end:i};case"server":return function(e,t,n){return ht(e),{...e,uniqueId:lt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return ht(e),ut(e),{...e,uniqueId:lt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let lt=0;function ht(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function ut(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function dt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class pt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substring(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function At(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Pt(e,t,n,r,o,i){const s={},[a,c]=Ut();s[a]=c,e.log(Et.Trace,`(${t} transport) sending data. ${xt(o,i.logMessageContent)}.`);const l=At(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Et.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Nt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Mt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Et[e]}: ${t}`;switch(e){case Et.Critical:case Et.Error:this.out.error(n);break;case Et.Warning:this.out.warn(n);break;case Et.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Ut(){return["X-SignalR-User-Agent",Bt("10.0.0","","Browser",void 0)]}function Bt(e,t,n,r){let o="Microsoft SignalR/";const i=e.split(".");return o+=`${i[0]}.${i[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Lt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class $t extends Ct{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._jar=new(e("tough-cookie").CookieJar),"undefined"==typeof fetch?this._fetchType=e("node-fetch"):this._fetchType=fetch,this._fetchType=e("fetch-cookie")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new mt;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new mt});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(Et.Warning,"Timeout from HTTP request."),n=new gt}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},At(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Et.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await Ot(r,"text");throw new ft(e||r.statusText,r.status)}const i=Ot(r,e.responseType),s=await i;return new St(r.status,r.statusText,s)}getCookieString(e){return""}}function Ot(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Ht extends Ct{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new mt):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(At(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new mt)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new St(r.status,r.statusText,r.response||r.responseText)):n(new ft(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(Et.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new ft(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(Et.Warning,"Timeout from HTTP request."),n(new gt)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class Ft extends Ct{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new $t(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Ht(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new mt):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}class jt{static write(e){return`${e}${jt.RecordSeparator}`}static parse(e){if(e[e.length-1]!==jt.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(jt.RecordSeparator);return t.pop(),t}}jt.RecordSeparatorCode=30,jt.RecordSeparator=String.fromCharCode(jt.RecordSeparatorCode);class Wt{writeHandshakeRequest(e){return jt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(At(e)){const r=new Uint8Array(e),o=r.indexOf(jt.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const i=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,i))),n=r.byteLength>i?r.slice(i).buffer:null}else{const r=e,o=r.indexOf(jt.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const i=o+1;t=r.substring(0,i),n=r.length>i?r.substring(i):null}const r=jt.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(It||(It={}));class zt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Nt(this,e)}}class qt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};At(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Jt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:It.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case It.Invocation:case It.StreamItem:case It.Completion:case It.StreamInvocation:case It.CancelInvocation:return!0;case It.Close:case It.Sequence:case It.Ping:case It.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:It.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Jt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(kt||(kt={}));class Vt{static create(e,t,n,r,o,i,s){return new Vt(e,t,n,r,o,i,s)}constructor(e,t,n,r,o,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Et.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Rt.isRequired(e,"connection"),Rt.isRequired(t,"logger"),Rt.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Wt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=kt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:It.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==kt.Disconnected&&this._connectionState!==kt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==kt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=kt.Connecting,this._logger.log(Et.Debug,"Starting HubConnection.");try{await this._startInternal(),Dt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=kt.Connected,this._connectionStarted=!0,this._logger.log(Et.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=kt.Disconnected,this._logger.log(Et.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Et.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Et.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new qt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Et.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===kt.Disconnected)return this._logger.log(Et.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===kt.Disconnecting)return this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=kt.Disconnecting,this._logger.log(Et.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Et.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===kt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new mt("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let i;const s=new zt;return s.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===It.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(o).catch((e=>{s.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===It.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case It.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(Et.Error,`Invoke client method threw error: ${Lt(e)}`)}));break;case It.StreamItem:case It.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===It.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Et.Error,`Stream callback threw error: ${Lt(e)}`)}}break}case It.Ping:break;case It.Close:{this._logger.log(Et.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case It.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case It.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Et.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Et.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Et.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Et.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!this.connection.features||!this.connection.features.inherentKeepAlive){this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds);let e=this._nextKeepAlive-(new Date).getTime();if(e<0)return void(this._connectionState===kt.Connected&&this._trySendPingMessage());void 0===this._pingServerHandle&&(e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{this._connectionState===kt.Connected&&await this._trySendPingMessage()}),e))}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Et.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Et.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let i,s,a;for(const n of r)try{const r=i;i=await n.apply(this,e.arguments),o&&i&&r&&(this._logger.log(Et.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Et.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Et.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Et.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Et.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new mt("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===kt.Disconnecting?this._completeClose(e):this._connectionState===kt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===kt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=kt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Dt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Et.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n,0,r);if(null===o)return this._logger.log(Et.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=kt.Reconnecting,e?this._logger.log(Et.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Et.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Et.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==kt.Reconnecting)return void this._logger.log(Et.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(Et.Information,`Reconnect attempt number ${n+1} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==kt.Reconnecting)return void this._logger.log(Et.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=kt.Connected,this._logger.log(Et.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Et.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Et.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==kt.Reconnecting)return this._logger.log(Et.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===kt.Disconnecting&&this._completeClose());n++,r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n,Date.now()-t,r)}}this._logger.log(Et.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Et.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(Et.Error,`Stream 'error' callback called with '${e}' threw error: ${Lt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{target:e,arguments:t,streamIds:r,type:It.Invocation}:{target:e,arguments:t,type:It.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{target:e,arguments:t,invocationId:n.toString(),streamIds:r,type:It.Invocation}:{target:e,arguments:t,invocationId:n.toString(),type:It.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Gt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Gt.Authorization]&&delete e.headers[Gt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}var Qt,Zt;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(Qt||(Qt={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(Zt||(Zt={}));let en=class{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}};class tn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new en,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._url=e,this._logger.log(Et.Trace,"(LongPolling transport) Connecting."),t===Zt.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=Ut(),o={[n]:r,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===Zt.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Et.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Et.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new ft(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Et.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(Et.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(Et.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new ft(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(Et.Trace,`(LongPolling transport) data received. ${xt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(Et.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof gt?this._logger.log(Et.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Et.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Et.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Pt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Et.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Et.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Ut();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof ft&&(404===o.statusCode?this._logger.log(Et.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Et.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(Et.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Et.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Et.Trace,e),this.onclose(this._closeError)}}}class nn{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._logger.log(Et.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,i=!1;if(t===Zt.Text){if(Dt.isBrowser||Dt.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,i]=Ut();n[r]=i,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(Et.Trace,`(SSE transport) data received. ${xt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{i?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(Et.Information,`SSE connected to ${this._url}`),this._eventSource=o,i=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Pt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class rn{constructor(e,t,n,r,o,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._logger.log(Et.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Dt.isReactNative){const t={},[r,o]=Ut();t[r]=o,n&&(t[Gt.Authorization]=`Bearer ${n}`),s&&(t[Gt.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===Zt.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Et.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,r()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Et.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Et.Trace,`(WebSockets transport) data received. ${xt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Et.Trace,`(WebSockets transport) sending data. ${xt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Et.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class on{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Rt.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Mt(Et.Information):null===e?Tt.instance:void 0!==e.log?e:new Mt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new Yt(t.httpClient||new Ft(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||Zt.Binary,Rt.isIn(e,Zt,"transferFormat"),this._logger.log(Et.Debug,`Starting connection with transfer format '${Zt[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Et.Error,e),await this._stopPromise,Promise.reject(new mt(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Et.Error,e),Promise.reject(new mt(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new sn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Et.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Et.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==Qt.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(Qt.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new mt("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof tn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Et.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Et.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=Ut();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(Et.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof ft&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Et.Error,t),Promise.reject(new wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Et.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Et.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new _t(`${n.transport} failed: ${e}`,Qt[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Et.Debug,e),Promise.reject(new mt(e))}}}}return i.length>0?Promise.reject(new bt(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case Qt.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new rn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case Qt.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new nn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case Qt.LongPolling:return new tn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=Qt[e.transport];if(null==o)return this._logger.log(Et.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||!!(t&e)}(t,o))return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it was disabled by the client.`),new vt(`'${Qt[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>Zt[e])).indexOf(n)>=0))return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it does not support the requested transfer format '${Zt[n]}'.`),new Error(`'${Qt[o]}' does not support ${Zt[n]}.`);if(o===Qt.WebSockets&&!this._options.WebSocket||o===Qt.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it is not supported in your environment.'`),new yt(`'${Qt[o]}' is not supported in your environment.`,o);this._logger.log(Et.Debug,`Selecting transport '${Qt[o]}'.`);try{return this.features.reconnect=o===Qt.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Et.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Et.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Et.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Et.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Et.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Et.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Et.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Dt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Et.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class sn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new an,this._transportResult=new an,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new an),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new an;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):sn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class an{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class cn{constructor(){this.name="json",this.version=2,this.transferFormat=Zt.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Tt.instance);const n=jt.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case It.Invocation:this._isInvocationMessage(n);break;case It.StreamItem:this._isStreamItemMessage(n);break;case It.Completion:this._isCompletionMessage(n);break;case It.Ping:case It.Close:break;case It.Ack:this._isAckMessage(n);break;case It.Sequence:this._isSequenceMessage(n);break;default:t.log(Et.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return jt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const ln={trace:Et.Trace,debug:Et.Debug,info:Et.Information,information:Et.Information,warn:Et.Warning,warning:Et.Warning,error:Et.Error,critical:Et.Critical,none:Et.None};class hn{configureLogging(e){if(Rt.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=ln[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Mt(t)}else this.logger=new Mt(e);return this}withUrl(e,t){return Rt.isRequired(e,"url"),Rt.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Rt.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Xt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Xt,this}withServerTimeout(e){return Rt.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Rt.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new on(this.url,e);return Vt.create(t,this.logger||Tt.instance,this.protocol||new cn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var un;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(un||(un={}));var dn,pn,fn,gn=4294967295;function mn(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function yn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var vn=("undefined"==typeof process||"never"!==(null===(dn=null===process||void 0===process?void 0:process.env)||void 0===dn?void 0:dn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function _n(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var En,In=vn?new TextDecoder:null,kn=vn?"undefined"!=typeof process&&"force"!==(null===(fn=null===process||void 0===process?void 0:process.env)||void 0===fn?void 0:fn.TEXT_DECODER)?200:0:gn,Tn=function(e,t){this.type=e,this.data=t},Rn=(En=function(e,t){return En=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},En(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}En(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),Dn=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Rn(t,e),t}(Error),xn={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var i=n/4294967296,s=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&i),t.setUint32(4,s),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),mn(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:yn(t,4),nsec:t.getUint32(0)};default:throw new Dn("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},An=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(xn)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>bn){var t=_n(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Sn(e,this.bytes,this.pos),this.pos+=t}else t=_n(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,i=0;i=55296&&s<=56319&&i>18&7|240,t[o++]=s>>12&63|128,t[o++]=s>>6&63|128):(t[o++]=s>>12&15|224,t[o++]=s>>6&63|128)}else t[o++]=s>>6&31|192;t[o++]=63&s|128}else t[o++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Pn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Cn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,o),o},e}(),Bn=function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return Bn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,i,s,a;return i=this,a=function(){var i,s,a,c,l,h,u,d;return Bn(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Ln(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof Fn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,u=l.pos,d=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Mn(h)," at ").concat(d," (").concat(u," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof s?o:new s((function(e){e(o)}))).then(n,r)}o((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=function(){var n,r,o,i,s,a,c,l,h;return Bn(this,(function(u){switch(u.label){case 0:n=t,r=-1,u.label=1;case 1:u.trys.push([1,13,14,19]),o=Ln(e),u.label=2;case 2:return[4,$n(o.next())];case 3:if((i=u.sent()).done)return[3,12];if(s=i.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(r=this.readArraySize(),n=!1,this.complete()),u.label=4;case 4:u.trys.push([4,9,,10]),u.label=5;case 5:return[4,$n(this.doDecodeSync())];case 6:return[4,u.sent()];case 7:return u.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=u.sent())instanceof Fn))throw a;return[3,10];case 10:this.totalPos+=this.pos,u.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=u.sent(),l={error:c},[3,19];case 14:return u.trys.push([14,,17,18]),i&&!i.done&&(h=o.return)?[4,$n(h.call(o))]:[3,16];case 15:u.sent(),u.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),s=[];return o={},a("next"),a("throw"),a("return"),o[Symbol.asyncIterator]=function(){return this},o;function a(e){i[e]&&(o[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||c(e,t)}))})}function c(e,t){try{(n=i[e](t)).value instanceof $n?Promise.resolve(n.value.v).then(l,h):u(s[0][2],n)}catch(e){u(s[0][3],e)}var n}function l(e){c("next",e)}function h(e){c("throw",e)}function u(e,t){e(t),s.shift(),s.length&&c(s[0][0],s[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new Dn("Unrecognized type byte: ".concat(Mn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var i=o[o.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;o.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new Dn("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new Dn("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}o.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new Dn("Unrecognized array type byte: ".concat(Mn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new Dn("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new Dn("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new Dn("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthkn?function(e,t,n){var r=e.subarray(t,t+n);return In.decode(r)}(this.bytes,o,e):Cn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new Dn("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw jn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new Dn("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=yn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class qn{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+s,o+s+a):n.subarray(o+s,o+s+a)),o=o+s+a}return t}}const Jn=new Uint8Array([145,It.Ping]);class Vn{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=Zt.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new Nn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Tt.instance);const r=qn.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case It.Invocation:return this._writeInvocation(e);case It.StreamInvocation:return this._writeStreamInvocation(e);case It.StreamItem:return this._writeStreamItem(e);case It.Completion:return this._writeCompletion(e);case It.Ping:return qn.write(Jn);case It.CancelInvocation:return this._writeCancelInvocation(e);case It.Close:return this._writeClose();case It.Ack:return this._writeAck(e);case It.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case It.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case It.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case It.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case It.Ping:return this._createPingMessage(n);case It.Close:return this._createCloseMessage(n);case It.Ack:return this._createAckMessage(n);case It.Sequence:return this._createSequenceMessage(n);default:return t.log(Et.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:It.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:It.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:It.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:It.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:It.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:It.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:It.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:It.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([It.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([It.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),qn.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([It.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([It.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),qn.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([It.StreamItem,e.headers||{},e.invocationId,e.item]);return qn.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t,e.result])}return qn.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([It.CancelInvocation,e.headers||{},e.invocationId]);return qn.write(t.slice())}_writeClose(){const e=this._encoder.encode([It.Close,null]);return qn.write(e.slice())}_writeAck(e){const t=this._encoder.encode([It.Ack,e.sequenceId]);return qn.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([It.Sequence,e.sequenceId]);return qn.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const Kn="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,Xn=Kn?Kn.decode.bind(Kn):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}}else r.push(n);r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},Gn=Math.pow(2,32),Yn=Math.pow(2,21)-1;function Qn(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Zn(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function er(e,t){const n=Zn(e,t+4);if(n>Yn)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Gn+Zn(e,t)}class tr{constructor(e){this.batchData=e;const t=new ir(e);this.arrayRangeReader=new sr(e),this.arrayBuilderSegmentReader=new ar(e),this.diffReader=new nr(e),this.editReader=new rr(e,t),this.frameReader=new or(e,t)}updatedComponents(){return Qn(this.batchData,this.batchData.length-20)}referenceFrames(){return Qn(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Qn(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Qn(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Qn(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Qn(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return er(this.batchData,n)}}class nr{constructor(e){this.batchDataUint8=e}componentId(e){return Qn(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class rr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Qn(this.batchDataUint8,e)}siblingIndex(e){return Qn(this.batchDataUint8,e+4)}newTreeIndex(e){return Qn(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Qn(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Qn(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class or{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Qn(this.batchDataUint8,e)}subtreeLength(e){return Qn(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Qn(this.batchDataUint8,e+8)}elementName(e){const t=Qn(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Qn(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return er(this.batchDataUint8,e+12)}}class ir{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Qn(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Qn(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const i=e[t+o];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(Ze.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(Ze.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(Ze.Debug,`Applying batch ${e}.`),function(e,t){const n=me[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),i=r.values(o),s=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class yr{constructor(t,n,r,o){this._renderingFailed=!1,this._disposed=!1,this._pausingState=new vr("pausing",!1,!1),this._resumingState=new vr("resuming",!1,!1),this._disconnectingState=new vr("disconnecting"),this._isFirstRender=!0,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new cr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e,t){return this._isFirstRender?(this._isFirstRender=!1,this._connection?.send("UpdateRootComponents",e,this._applicationState)):this._connection?.send("UpdateRootComponents",e,t)}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==kt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ae.getBaseURI(),Ae.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){const e=new Vn;e.name="blazorpack";const t=(new hn).withUrl("_blazor").withHubProtocol(e);this._options.configureSignalR(t);const n=t.build();n.on("JS.AttachComponent",((e,t)=>function(e,t,n){let r=me[e];r||(r=new de(e),me[e]=r),r.attachRootComponentToLogicalElement(n,t,!1)}(un.Server,this.resolveElement(t),e))),n.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),n.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),n.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),n.on("JS.SavePersistedState",((e,t,n)=>{if(!this._circuitId)throw new Error("Circuit host not initialized.");if(e!==this._circuitId)throw new Error(`Received persisted state for circuit ID '${e}', but the current circuit ID is '${this._circuitId}'.`);return this._persistedCircuitState={components:t,applicationState:n},!0})),n.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{n.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),n.on("JS.RenderBatch",(async(e,t)=>{this._logger.log(Et.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),this._componentManager.onAfterRenderBatch?.(un.Server)})),n.on("JS.EndUpdateRootComponents",(e=>{this._componentManager.onAfterUpdateRootComponents?.(e)})),n.on("JS.EndLocationChanging",Qe._internal.navigationManager.endLocationChanging),n.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=b.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return b.delete(e),t}(un.Server);const t=this._pausingState.isInprogress();t||this._pausingState.transitionTo(!0),this._disposed||this._renderingFailed||t||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),n.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),mr()}));try{await n.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;mr(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===Qt.WebSockets))?this._logger.log(Et.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===Qt.WebSockets))?this._logger.log(Et.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===Qt.LongPolling))&&this._logger.log(Et.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return n.connection?.features?.inherentKeepAlive&&this._logger.log(Et.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),n}async disconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish disconnecting..."),this._disconnectingState.currentProgress();try{this._disconnectingState.reset();const e=this._disconnectingState.currentProgress();return this._logger.log(Et.Trace,"Disconnecting the circuit..."),await this._connection.stop(),this._disconnectingState.complete(),e}catch(e){throw this._logger.log(Et.Error,`Failed to disconnect the circuit: ${e}`),this._disconnectingState.fail(e),e}}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===kt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(E(un.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}async pause(e){if(!this._circuitId)return this._logger.log(Et.Error,"Circuit host not initialized."),!1;if(this._connection.state!==kt.Connected)return this._logger.log(Et.Trace,"Pause can only be triggered on connected circuits."),!1;if(this._resumingState.isInprogress())return this._logger.log(Et.Trace,"Circuit is currently resuming..."),!1;if(this._pausingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish pausing..."),this._pausingState.currentProgress();if(!0===this._pausingState.lastValue())return this._logger.log(Et.Trace,"Circuit is already paused."),!0;this._pausingState.reset();const t=this._pausingState.currentProgress();try{this._logger.log(Et.Trace,"Pausing the circuit..."),this._options.reconnectionHandler?.onConnectionDown(this._options.reconnectionOptions,void 0,!0,e);const t=await this._connection.invoke("PauseCircuit");this._pausingState.complete(t)}catch(e){this._logger.log(Et.Error,`Failed to pause the circuit: ${e}`),this._pausingState.fail(e)}return await this.disconnect(),t}async resume(){if(!this._circuitId)throw this._logger.log(Et.Error,"Circuit host not initialized."),new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress()&&(this._logger.log(Et.Trace,"Circuit is disconnecting, cannot resume."),await this._disconnectingState.currentProgress()),this._pausingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish pausing..."),!1;if(!this._pausingState.lastValue())return this._logger.log(Et.Trace,"Circuit is not paused."),!1;if(this._connection.state!==kt.Connected&&(this._logger.log(Et.Trace,"Reestablishing SignalR connection..."),this._connection=await this.startConnection()),this._resumingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish resuming..."),this._resumingState.currentProgress();this._resumingState.reset();const e=this._resumingState.currentProgress();try{for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed();const t=this._persistedCircuitState;this._persistedCircuitState=void 0;const n=await this._connection.invoke("ResumeCircuit",this._circuitId,Ae.getBaseURI(),Ae.getLocationHref(),t?.components??"[]",t?.applicationState??"");if(!n)return this._resumingState.complete(!1),e;this._pausingState.transitionTo(!1),this._resumingState.complete(!0),this._circuitId=n,this._renderQueue=new cr(this._logger);for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return this._options.reconnectionHandler.onConnectionUp(),this._componentManager.onComponentReload?.(un.Server),e}catch(t){return this._logger.log(Et.Error,`Failed to resume the circuit: ${t}`),this._resumingState.fail(t),e}}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-i;i=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=p.get(e);if(t)return p.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=O(o,!0),s=V(i);t[L]=i,t[$]=e;const a=O(t);if(n){const e=V(a),r=Array.prototype.indexOf.call(s,a)+1;let o=null;for(;o!==n;){const n=s.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Et.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,this._connection?.stop();const e=this.getDisconnectFormData();fetch("_blazor/disconnect",{method:"POST",body:e});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class vr{constructor(e,t,n){this._stateName=e,this._resetValue=n,this._lastValue=t}reset(){if(this._promise)throw new Error(`Circuit state ${this._stateName} is already in progress`);const{promise:e,resolve:t,reject:n}=Promise.withResolvers();this._promise=e,this._resolve=t,this._reject=n,this._lastValue=this._resetValue}complete(e){if(!this._resolve)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._resolve;this._lastValue=e,this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}fail(e){if(!this._reject)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._reject;this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}isInprogress(){return!!this._promise}currentProgress(){if(!this.isInprogress())throw new Error(`Circuit state ${this._stateName} is not in progress`);return this._promise}transitionTo(e){if(this._promise)throw new Error(`Circuit state ${this._stateName} is in progress`);this._lastValue=e}lastValue(){return this._lastValue}}class _r{static{this.ReconnectOverlayClassName="components-reconnect-overlay"}static{this.ReconnectDialogClassName="components-reconnect-dialog"}static{this.ReconnectVisibleClassName="components-reconnect-visible"}static{this.RejoiningAnimationClassName="components-rejoining-animation"}static{this.AnimationRippleCount=2}constructor(e,t,n){this.document=t,this.logger=n,this.reconnect=!0,this.remote=!1,this.style=this.document.createElement("style"),this.style.innerHTML=_r.Css,this.overlay=this.document.createElement("div"),this.overlay.className=_r.ReconnectOverlayClassName,this.host=this.document.createElement("div"),this.host.id=e;const r=this.host.attachShadow({mode:"open"});this.dialog=t.createElement("div"),this.dialog.className=_r.ReconnectDialogClassName,r.appendChild(this.style),r.appendChild(this.overlay),this.rejoiningAnimation=t.createElement("div"),this.rejoiningAnimation.className=_r.RejoiningAnimationClassName;for(let e=0;e<_r.AnimationRippleCount;e++){const e=t.createElement("div");this.rejoiningAnimation.appendChild(e)}this.status=t.createElement("p"),this.status.innerHTML="",this.reloadButton=t.createElement("button"),this.reloadButton.style.display="none",this.reloadButton.innerHTML="Retry",this.reloadButton.addEventListener("click",this.retry.bind(this)),this.resumeButton=t.createElement("button"),this.resumeButton.style.display="none",this.resumeButton.innerHTML="Resume",this.resumeButton.addEventListener("click",this.resume.bind(this)),this.dialog.appendChild(this.rejoiningAnimation),this.dialog.appendChild(this.status),this.dialog.appendChild(this.reloadButton),this.dialog.appendChild(this.resumeButton),this.overlay.appendChild(this.dialog),this.retryWhenDocumentBecomesVisible=()=>{"visible"===this.document.visibilityState&&this.retry()}}show(e){this.document.contains(this.host)||this.document.body.appendChild(this.host),this.reconnect="reconnect"===e?.type,this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="block",this.status.innerHTML="Rejoining the server...",this.host.style.display="block",this.overlay.classList.add(_r.ReconnectVisibleClassName)}update(e){if(this.reconnect="reconnect"===e.type,this.reconnect){const{currentAttempt:t,secondsToNextAttempt:n}=e;if(1===t||0===n)this.status.innerHTML="Rejoining the server...";else{const e=1===n?"second":"seconds";this.status.innerHTML=`Rejoin failed... trying again in ${n} ${e}`}}else this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="none",this.status.innerHTML="The session has been paused by the server.",this.resumeButton.style.display="block"}hide(){this.host.style.display="none",this.overlay.classList.remove(_r.ReconnectVisibleClassName)}failed(){this.rejoiningAnimation.style.display="none",this.reconnect?(this.reloadButton.style.display="block",this.status.innerHTML="Failed to rejoin.
Please retry or reload the page.",this.document.addEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible)):(this.status.innerHTML="Failed to resume the session.
Please reload the page.",this.resumeButton.style.display="none",this.reloadButton.style.display="none")}rejected(){location.reload()}async retry(){this.document.removeEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible),this.show();try{await Qe.reconnect()||(this.update({type:"pause",remote:this.remote}),await Qe.resumeCircuit()||this.rejected())}catch(e){this.logger.log(Ze.Error,e),this.failed()}}async resume(){try{await Qe.resumeCircuit()||this.failed()}catch(e){this.logger.log(Ze.Error,e),this.failed()}}static{this.Css=`\n .${this.ReconnectOverlayClassName} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n display: none;\n overflow: hidden;\n animation: components-reconnect-fade-in;\n }\n\n .${this.ReconnectOverlayClassName}.${this.ReconnectVisibleClassName} {\n display: block;\n }\n\n .${this.ReconnectOverlayClassName}::before {\n content: '';\n background-color: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n animation: components-reconnect-fadeInOpacity 0.5s ease-in-out;\n opacity: 1;\n }\n\n .${this.ReconnectOverlayClassName} p {\n margin: 0;\n text-align: center;\n }\n\n .${this.ReconnectOverlayClassName} button {\n border: 0;\n background-color: #6b9ed2;\n color: white;\n padding: 4px 24px;\n border-radius: 4px;\n }\n\n .${this.ReconnectOverlayClassName} button:hover {\n background-color: #3b6ea2;\n }\n\n .${this.ReconnectOverlayClassName} button:active {\n background-color: #6b9ed2;\n }\n\n .${this.ReconnectDialogClassName} {\n position: relative;\n background-color: white;\n width: 20rem;\n margin: 20vh auto;\n padding: 2rem;\n border-radius: 0.5rem;\n box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n opacity: 0;\n animation: components-reconnect-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-fadeInOpacity 0.5s ease-out 0.3s;\n animation-fill-mode: forwards;\n z-index: 10001;\n }\n\n .${this.RejoiningAnimationClassName} {\n display: block;\n position: relative;\n width: 80px;\n height: 80px;\n }\n\n .${this.RejoiningAnimationClassName} div {\n position: absolute;\n border: 3px solid #0087ff;\n opacity: 1;\n border-radius: 50%;\n animation: ${this.RejoiningAnimationClassName} 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n }\n\n .${this.RejoiningAnimationClassName} div:nth-child(2) {\n animation-delay: -0.5s;\n }\n\n @keyframes ${this.RejoiningAnimationClassName} {\n 0% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 4.9% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 5% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n\n 100% {\n top: 0px;\n left: 0px;\n width: 80px;\n height: 80px;\n opacity: 0;\n }\n }\n\n @keyframes components-reconnect-fadeInOpacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes components-reconnect-slideUp {\n 0% {\n transform: translateY(30px) scale(0.95);\n }\n\n 100% {\n transform: translateY(0);\n }\n }\n `}}class wr{static{this.ShowClassName="components-reconnect-show"}static{this.HideClassName="components-reconnect-hide"}static{this.RetryingClassName="components-reconnect-retrying"}static{this.FailedClassName="components-reconnect-failed"}static{this.PausedClassName="components-reconnect-paused"}static{this.ResumeFailedClassName="components-reconnect-resume-failed"}static{this.RejectedClassName="components-reconnect-rejected"}static{this.MaxRetriesId="components-reconnect-max-retries"}static{this.CurrentAttemptId="components-reconnect-current-attempt"}static{this.SecondsToNextAttemptId="components-seconds-to-next-attempt"}static{this.ReconnectStateChangedEventName="components-reconnect-state-changed"}constructor(e,t,n){if(this.dialog=e,this.document=t,this.reconnect=!1,this.document=t,void 0!==n){const e=this.document.getElementById(wr.MaxRetriesId);e&&(e.innerText=n.toString())}}show(){this.removeClasses(),this.dialog.classList.add(wr.ShowClassName),this.dispatchReconnectStateChangedEvent({state:"show"})}update(e){if(this.reconnect="reconnect"===e.type,"reconnect"===e.type){const{currentAttempt:t,secondsToNextAttempt:n}=e,r=this.document.getElementById(wr.CurrentAttemptId);r&&(r.innerText=t.toString());const o=this.document.getElementById(wr.SecondsToNextAttemptId);o&&(o.innerText=n.toString()),t>1&&n>0&&this.dialog.classList.add(wr.RetryingClassName),this.dispatchReconnectStateChangedEvent({state:"retrying",currentAttempt:t,secondsToNextAttempt:n})}if("pause"===e.type){const t=e.remote;this.dialog.classList.remove(wr.ShowClassName,wr.RetryingClassName),this.dialog.classList.add(wr.PausedClassName),this.dispatchReconnectStateChangedEvent({state:"paused",remote:t})}}hide(){this.removeClasses(),this.dialog.classList.add(wr.HideClassName),this.dispatchReconnectStateChangedEvent({state:"hide"})}failed(){this.removeClasses(),this.reconnect?(this.dialog.classList.add(wr.FailedClassName),this.dispatchReconnectStateChangedEvent({state:"failed"})):(this.dialog.classList.add(wr.ResumeFailedClassName),this.dispatchReconnectStateChangedEvent({state:"resume-failed"}))}rejected(){this.removeClasses(),this.dialog.classList.add(wr.RejectedClassName),this.dispatchReconnectStateChangedEvent({state:"rejected"})}removeClasses(){this.dialog.classList.remove(wr.ShowClassName,wr.HideClassName,wr.RetryingClassName,wr.FailedClassName,wr.RejectedClassName,wr.PausedClassName,wr.ResumeFailedClassName)}dispatchReconnectStateChangedEvent(e){const t=new CustomEvent(wr.ReconnectStateChangedEventName,{detail:e});this.dialog.dispatchEvent(t)}}class br{constructor(e,t,n,r){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||Qe.reconnect,this._resumeCallback=r||Qe.resumeCircuit}onConnectionDown(e,t,n,r){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new wr(t,document,e.maxRetries):new _r(e.dialogId,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new Sr(e,this._logger,this._reconnectCallback,this._resumeCallback,this._reconnectionDisplay,n,r))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class Sr{static{this.MaximumFirstRetryInterval=3e3}constructor(e,t,n,r,o,i,s=!1){this.logger=t,this.reconnectCallback=n,this.resumeCallback=r,this.isGracefulPause=i,this.isRemote=s,this.isDisposed=!1,this.reconnectDisplay=o;const a={type:i?"pause":"reconnect",remote:this.isRemote,currentAttempt:0,secondsToNextAttempt:0};this.reconnectDisplay.show(a),this.isGracefulPause?this.reconnectDisplay.update({type:"pause",remote:this.isRemote}):this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;void 0===e.maxRetries||tSr.MaximumFirstRetryInterval?Sr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.runTimer(n,1e3,(e=>{this.reconnectDisplay.update({type:"reconnect",currentAttempt:t+1,secondsToNextAttempt:Math.round(e/1e3)})})),this.isDisposed)break;try{if(!await this.reconnectCallback()){if(this.reconnectDisplay.update({type:"pause",remote:!0}),await this.resumeCallback())return;return void this.reconnectDisplay.failed()}return}catch(e){this.logger.log(Ze.Error,e)}}this.reconnectDisplay.failed()}async runTimer(e,t,n){if(e<=0)return void n(0);let r,o,i=Date.now();n(e);const s=()=>{if(this.isDisposed)return void o();const a=Date.now(),c=a-i;i=a;const l=Math.max(1,Math.floor(c/t)),h=t*l;if((e-=h){"visible"===document.visibilityState&&(clearTimeout(r),n(0),o())};r=setTimeout(s,t),document.addEventListener("visibilitychange",a),await new Promise((e=>o=e)),document.removeEventListener("visibilitychange",a)}}class Cr{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){let r;var o;n.moduleExports||(o=n.name,r=new URL(o,document.baseURI).toString(),n.moduleExports=await import(r));const i=n.moduleExports;if(void 0!==i){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:o,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=i;let h=n;e.webRendererId===un.Server&&c&&(h=c),e.webRendererId===un.WebAssembly&&o&&(h=o);let u=r;return e.webRendererId===un.Server&&l&&(u=l),e.webRendererId===un.WebAssembly&&a&&(u=a),s(e,h,u,t)}return function(e,t,n){const o=n[0],{beforeStart:i,afterStarted:a,beforeWebStart:c,afterWebStarted:l,beforeWebAssemblyStart:h,afterWebAssemblyStarted:u,beforeServerStart:d,afterServerStarted:p}=t,f=!(c||l||h||u||d||p||!i&&!a),g=f&&o.enableClassicInitializers;if(f&&!o.enableClassicInitializers)e.logger?.log(Ze.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. Use 'before(Web|WebAssembly|Server)Start' and 'after(Web|WebAssembly|Server)Started' instead.`);else if(g)return s(e,i,a,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(o),h&&o.webAssembly.initializers.beforeStart.push(h),u&&o.webAssembly.initializers.afterStarted.push(u),d&&o.circuit.initializers.beforeStart.push(d),p&&o.circuit.initializers.afterStarted.push(p),l&&e.afterStartedCallbacks.push(l),c)return c(o)}(e,i,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,C.get(n)?.[1]);var n;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Er(e){if(void 0!==fr)throw new Error("Blazor Server has already started.");return fr=new Promise(Ir.bind(null,e)),fr}async function Ir(e,t,n){await lr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Cr(!1,void 0,e.initializers.afterStarted,un.Server);const t=await fetch("_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=(await t.json()).map((e=>({name:e}))),r=new Cr(!0,void 0,void 0,un.Server);return await r.importInitializersAsync(n,[e]),r}(dr);if(hr=ot(document)||"",pr=new nt(dr.logLevel),ur=new yr(e,hr,dr,pr),pr.log(Ze.Information,"Starting up Blazor server-side application."),Qe.reconnect=async()=>!(ur.didRenderingFail()||!await ur.reconnect()&&(pr.log(Ze.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.pauseCircuit=async()=>!(ur.didRenderingFail()||!await ur.pause()&&(pr.log(Ze.Information,"Pause attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.resumeCircuit=async()=>!(ur.didRenderingFail()||!await ur.resume()&&(pr.log(Ze.Information,"Resume attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.defaultReconnectionHandler=new br(pr),dr.reconnectionHandler=dr.reconnectionHandler||Qe.defaultReconnectionHandler,Qe._internal.navigationManager.listenForNavigationEvents(un.Server,((e,t,n)=>ur.sendLocationChanged(e,t,n)),((e,t,n,r)=>ur.sendLocationChanging(e,t,n,r))),Qe._internal.forceCloseConnection=()=>ur.disconnect(),Qe._internal.sendJSDataStream=(e,t,n)=>ur.sendJsDataStream(e,t,n),!await ur.start())return pr.log(Ze.Error,"Failed to start the circuit."),void t();const o=()=>{ur.sendDisconnectBeacon()};Qe.disconnect=o,window.addEventListener("pagehide",o,{capture:!1,once:!0}),pr.log(Ze.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(Qe),t()}class kr{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Tr{constructor(){this._eventListeners=new Map}static create(e){const t=new Tr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){this._eventListeners.get(e)?.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Rr=!1;function Dr(e){if(Rr)throw new Error("Blazor has already started.");Rr=!0;const t=et(e);!function(e){if(dr)throw new Error("Circuit options have already been configured.");lr=async function(e){const t=await e;dr=et(t)}(e)}(Promise.resolve(t||{})),Tr.create(Qe);const n=function(e){return st(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Er(new kr(n))}Qe.start=Dr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Dr()}(); +//# sourceMappingURL=blazor.server.js.map diff --git a/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js b/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js new file mode 100644 index 00000000..cc7ba3db --- /dev/null +++ b/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js @@ -0,0 +1 @@ +!function(){"use strict";var e;let t;var n,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c,l;class h{constructor(e){this._jsObject=e,this._cachedHandlers=new Map}resolveInvocationHandler(e,t){var n;const o=null===(n=this._cachedHandlers.get(e))||void 0===n?void 0:n[t];if(o)return o;const[r,i]=E(this._jsObject,e),s=function(e,t,n,o){switch(n){case l.FunctionCall:const n=e[t];if(n instanceof Function)return n.bind(e);throw new Error(`The value '${o}' is not a function.`);case l.ConstructorCall:const r=e[t];if(r instanceof Function){const t=r.bind(e);return(...e)=>new t(...e)}throw new Error(`The value '${o}' is not a function.`);case l.GetValue:if(!function(e,t){if(!(t in e))return!1;for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!!n.hasOwnProperty("value")||n.hasOwnProperty("get")&&"function"==typeof n.get;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${o}' is not defined or is not readable.`);return()=>e[t];case l.SetValue:if(!function(e,t){if(!(t in e))return Object.isExtensible(e);for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!(!n.hasOwnProperty("value")||!n.writable)||n.hasOwnProperty("set")&&"function"==typeof n.set;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${o}' is not writable.`);return(...n)=>e[t]=n[0]}}(r,i,t,e);return this.addHandlerToCache(e,s,t),s}getWrappedObject(){return this._jsObject}addHandlerToCache(e,t,n){const o=this._cachedHandlers.get(e);o?o[n]=t:this._cachedHandlers.set(e,{[n]:t})}}!function(e){e[e.FunctionCall=1]="FunctionCall",e[e.ConstructorCall=2]="ConstructorCall",e[e.GetValue=3]="GetValue",e[e.SetValue=4]="SetValue"}(l=e.JSCallType||(e.JSCallType={}));const d=0,u={[d]:new h(window)};u[0]._cachedHandlers.set("import",{[l.FunctionCall]:e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substring(2),document.baseURI).toString()),import(e))});let p,f=1;function g(e){t.push(e)}function m(e){if(null==e)return{[n]:-1};if(e&&("object"==typeof e||e instanceof Function)){u[f]=new h(e);const t={[n]:f};return f++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function y(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=m(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function v(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function w(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new b(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=g,e.invokeMethod=function(e,t,...n){return w().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return w().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=y,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&-1!==t&&C(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(p=e.JSCallResultType||(e.JSCallResultType={}));class b{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o,r){const i=T(this.processJSCall(o,e,r,t),n);return null==i?null:D(this,i)}async beginInvokeJSFromDotNet(e,t,n,o,r,i){try{const s=this.processJSCall(r,t,i,n);if(e){const t=D(this,[e,!0,T(await s,o)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)}}catch(t){if(e){const n=JSON.stringify([e,!1,_(t)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,n)}}}processJSCall(e,t,n,o){var r;const i=null!==(r=v(this,o))&&void 0!==r?r:[];return S(t,e,n)(...i)}endInvokeDotNetFromJS(e,t,n){const o=t?v(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=D(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?v(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=D(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new R;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new R;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function _(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function S(e,t,n){const o=u[t];if(o)return o.resolveInvocationHandler(e,null!=n?n:l.FunctionCall);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function C(e){delete u[e]}function E(e,t){const n=t.split(".");let o=e;for(let e=0;econsole.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=I,g((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new I(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=u[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new k(n)}}return t}));class k{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class R{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function T(e,t){switch(t){case p.Default:return e;case p.JSObjectReference:return m(e);case p.JSStreamReference:return y(e);case p.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function D(e,t){A=0,c=e;const n=JSON.stringify(t,N);return c=void 0,n}function N(e,t){if(t instanceof I)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[r]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(n||(n={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return t?.browserEventName||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type,isComposing:t.isComposing};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,y=0;const v={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++y).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),I.get(t)?.[0]?.(),function(e){for(const t of E)t(e)}(t)}function R(e){return C.has(e)}function T(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const N=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{static{this.nextEventDelegatorId=0}constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new L(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}removeListenersForElement(e){const t=this.getEventHandlerInfosForElement(e,!1);if(t){for(const e of t.enumerateHandlers())this.eventInfoStore.remove(e.eventHandlerId);delete e[this.eventsCollectionKey]}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){const o=this.getEventHandlerInfosForElement(e,!0),r=o.stopPropagation(t);o.stopPropagation(t,n),!r&&n?this.eventInfoStore.addGlobalListener(t):r&&!n&&this.eventInfoStore.decrementCountByEventName(t)}setPreventDefault(e,t,n){const o=this.getEventHandlerInfosForElement(e,!0),r=o.preventDefault(t);o.preventDefault(t,n),!r&&n?this.eventInfoStore.addActiveGlobalListener(t):r&&!n&&this.eventInfoStore.decrementCountByEventName(t)}onGlobalEvent(e){if(!(e.target instanceof Element))return;if(!R(this.browserRendererId))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(N,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=n?.createEventArgs?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),T(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}class L{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(N,e);document.addEventListener(e,this.globalListener,t)}}addActiveGlobalListener(e){e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e)?(this.countByEventName[e]++,document.removeEventListener(e,this.globalListener)):this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(N,e);document.addEventListener(e,this.globalListener,{capture:t,passive:!1})}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);this.decrementCountByEventName(n)}return t}decrementCountByEventName(e){0==--this.countByEventName[e]&&(delete this.countByEventName[e],document.removeEventListener(e,this.globalListener))}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}*enumerateHandlers(){for(const e in this.handlers)Object.prototype.hasOwnProperty.call(this.handlers,e)&&(yield this.handlers[e])}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=j(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=j(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function j(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=j(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function W(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if(t?.length>0){const t=re(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=V(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function V(e){return e[F]||null}function K(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=ne(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(V(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function*ee(e){const t=Y(e);for(const e of t)yield*ee(e);yield e}function te(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=re(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):oe(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function ne(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function oe(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):oe(e,V(t))}}}function re(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=V(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:re(t)}}function ie(e){return`_bl_${e}`}const se="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,se)&&"string"==typeof t[se]?function(e){const t=`[${ie(e)}]`;return document.querySelector(t)}(t[se]):t));const ae="_blazorDeferredValue";function ce(e){e instanceof HTMLOptionElement?ue(e):ae in e&&de(e,e[ae])}function le(e){return"select-multiple"===e.type}function he(e,t){e.value=t||""}function de(e,t){e instanceof HTMLSelectElement?le(e)?function(e,t){t||=[];for(let n=0;n{ze()&&Le(e,(e=>{et(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(be(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),we(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),ge.add(t)}updateComponent(e,t,n,o){const r=this.childComponentLocations[t];if(!r)throw new Error(`No element is currently associated with component ${t}`);ge.delete(r)&&(this.detachEventHandlersFromElement(r),W(r),r instanceof Comment&&(r.textContent="!"));const i=ne(r)?.getRootNode(),s=i&&i.activeElement;this.applyEdits(e,t,r,0,n,o),s instanceof HTMLElement&&i&&i.activeElement!==s&&s.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];we(t,!1),!0===t[ye]?ge.add(t):W(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}detachEventHandlersFromElement(e){for(const t of ee(e))t instanceof Element&&this.eventDelegator.removeListenersForElement(t)}applyEdits(e,t,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),pe.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Ce(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{it(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ie&&Ie!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ie=e},setHasLocationChangingListeners:function(e,t){const n=Xe.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ye&&e===Ke&&(Ye(t),Ye=null)},navigateTo:function(e,t){Ze(e,t,!0)},refresh:function(e){!e&&He()?je(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:$e};function Ze(e,t,n=!1){const o=We(e);!t.forceLoad&&Ue(o)?ct()?et(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):je(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function et(e,t,n,o=void 0,r=!1){if(ot(),Be(location.href,e))return tt(e,n,o),void Fe(e);const i=at();(r||!i?.hasLocationChangingEventListeners||await rt(e,o,t,i))&&(Oe(e,location.href)||Pe(),tt(e,n,o),await it(t))}function tt(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ve},"",e):(Ve++,history.pushState({userState:n,_index:Ve},"",e))}function nt(e){return new Promise((t=>{const n=Ge;Ge=()=>{Ge=n,t()},history.go(e)}))}function ot(){Ye&&(Ye(!1),Ye=null)}function rt(e,t,n,o){return new Promise((r=>{ot(),Ke++,Ye=r,o.locationChanging(Ke,e,t,n)}))}async function it(e,t){const n=t??location.href;await Promise.all(Array.from(Xe,(async([t,o])=>{R(t)&&await o.locationChanged(n,history.state?.userState,e)})))}async function st(e){Ge&&ct()&&await Ge(e),Ve=history.state?._index??0}function at(){const e=qe();if(void 0!==e)return Xe.get(e)}function ct(){return ze()||!He()}const lt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus({preventScroll:!0}))}},ht={init:function(e,t,n,o=50){const r=ut(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const r=i.getBoundingClientRect().height,s=o.rootBounds?.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,r,s):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,r,s)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=pt(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=pt(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},dt=Symbol();function ut(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:ut(e.parentElement):null}function pt(e){const t=e._callDispatcher,n=e._id;return t[dt]??={},{observersByDotNetObjectId:t[dt],id:n}}const ft={getAndRemoveExistingTitle:function(){const e=document.head?document.head.getElementsByTagName("title"):[];if(0===e.length)return null;let t=null;for(let n=e.length-1;n>=0;n--){const o=e[n],r=o.previousSibling;r instanceof Comment&&null!==V(r)||(null===t&&(t=o.textContent),o.parentNode?.removeChild(o))}return t}},gt={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=mt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){const t=Math.min(1,o/s.width),i=Math.min(1,r/s.height),a=Math.min(t,i),c=document.createElement("canvas");c.width=Math.round(s.width*a),c.height=Math.round(s.height*a),c.getContext("2d")?.drawImage(s,0,0,c.width,c.height),c.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:a?.size||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return mt(e,t).blob}};function mt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const yt=new Set,vt={enableNavigationPrompt:function(e){0===yt.size&&window.addEventListener("beforeunload",wt),yt.add(e)},disableNavigationPrompt:function(e){yt.delete(e),0===yt.size&&window.removeEventListener("beforeunload",wt)}};function wt(e){e.preventDefault(),e.returnValue=!0}async function bt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const _t=new Map,St={navigateTo:function(e,t,n=!1){Ze(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:v,runtime:{},_internal:{navigationManager:Qe,domWrapper:lt,Virtualize:ht,PageTitle:ft,InputFile:gt,NavigationLock:vt,getJSDataStreamChunk:bt,attachWebRendererInterop:k}};var Ct;window.Blazor=St,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(Ct||(Ct={})),class e{static{this.instance=new e}log(e,t){}};let Et=class{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${Ct[e]}: ${t}`;switch(e){case Ct.Critical:case Ct.Error:console.error(n);break;case Ct.Warning:console.warn(n);break;case Ct.Information:console.info(n);break;default:console.log(n)}}}};function It(e,t){switch(t){case"webassembly":return Pt(e,"webassembly");case"server":return function(e){return Pt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Pt(e,"auto")}}const kt=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Rt=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Tt=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/,At=/^\s*Blazor-WebAssembly:[^{]*(?.*)$/;function Dt(e){return xt(e,kt)}function Nt(e){return xt(e,Rt)}function xt(e,t,n="state"){if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",r=t.exec(o),i=r&&r.groups&&r.groups[n];return i&&e.parentNode?.removeChild(e),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function Lt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Mt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Mt.exec(e.textContent),r=t&&t[1];if(r)return Ft(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Ot(o=s),{...o,uniqueId:Ut++,start:r,end:i};case"server":return function(e,t,n){return Bt(e),{...e,uniqueId:Ut++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return Bt(e),Ot(e),{...e,uniqueId:Ut++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Ut=0;function Bt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Ot(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Ft(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class $t{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substring(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function an(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function cn(e,t,n,o,r,i){const s={},[a,c]=dn();s[a]=c,e.log(Zt.Trace,`(${t} transport) sending data. ${sn(r,i.logMessageContent)}.`);const l=an(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Zt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class ln{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class hn{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Zt[e]}: ${t}`;switch(e){case Zt.Critical:case Zt.Error:this.out.error(n);break;case Zt.Warning:this.out.warn(n);break;case Zt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function dn(){return["X-SignalR-User-Agent",un("10.0.0","","Browser",void 0)]}function un(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function pn(e){return e.stack?e.stack:e.message?e.message:`${e}`}class fn extends Qt{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._jar=new(e("tough-cookie").CookieJar),"undefined"==typeof fetch?this._fetchType=e("node-fetch"):this._fetchType=fetch,this._fetchType=e("fetch-cookie")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new qt;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new qt});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Zt.Warning,"Timeout from HTTP request."),n=new zt}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},an(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Zt.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await gn(o,"text");throw new Wt(e||o.statusText,o.status)}const i=gn(o,e.responseType),s=await i;return new Yt(o.status,o.statusText,s)}getCookieString(e){return""}}function gn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class mn extends Qt{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new qt):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(an(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new qt)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new Yt(o.status,o.statusText,o.response||o.responseText)):n(new Wt(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Zt.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new Wt(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Zt.Warning,"Timeout from HTTP request."),n(new zt)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class yn extends Qt{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new fn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new mn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new qt):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}class vn{static write(e){return`${e}${vn.RecordSeparator}`}static parse(e){if(e[e.length-1]!==vn.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(vn.RecordSeparator);return t.pop(),t}}vn.RecordSeparatorCode=30,vn.RecordSeparator=String.fromCharCode(vn.RecordSeparatorCode);class wn{writeHandshakeRequest(e){return vn.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(an(e)){const o=new Uint8Array(e),r=o.indexOf(vn.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(vn.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=vn.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(en||(en={}));class bn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new ln(this,e)}}class _n{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};an(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new Sn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:en.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case en.Invocation:case en.StreamItem:case en.Completion:case en.StreamInvocation:case en.CancelInvocation:return!0;case en.Close:case en.Sequence:case en.Ping:case en.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:en.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Sn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(tn||(tn={}));class Cn{static create(e,t,n,o,r,i,s){return new Cn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Zt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},on.isRequired(e,"connection"),on.isRequired(t,"logger"),on.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new wn,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=tn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:en.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==tn.Disconnected&&this._connectionState!==tn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==tn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=tn.Connecting,this._logger.log(Zt.Debug,"Starting HubConnection.");try{await this._startInternal(),rn.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=tn.Connected,this._connectionStarted=!0,this._logger.log(Zt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=tn.Disconnected,this._logger.log(Zt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Zt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Zt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new _n(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Zt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===tn.Disconnected)return this._logger.log(Zt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===tn.Disconnecting)return this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=tn.Disconnecting,this._logger.log(Zt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Zt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===tn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new qt("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new bn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===en.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===en.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case en.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(Zt.Error,`Invoke client method threw error: ${pn(e)}`)}));break;case en.StreamItem:case en.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===en.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Zt.Error,`Stream callback threw error: ${pn(e)}`)}}break}case en.Ping:break;case en.Close:{this._logger.log(Zt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case en.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case en.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Zt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Zt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Zt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Zt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!this.connection.features||!this.connection.features.inherentKeepAlive){this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds);let e=this._nextKeepAlive-(new Date).getTime();if(e<0)return void(this._connectionState===tn.Connected&&this._trySendPingMessage());void 0===this._pingServerHandle&&(e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{this._connectionState===tn.Connected&&await this._trySendPingMessage()}),e))}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Zt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Zt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Zt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Zt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Zt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Zt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Zt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new qt("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===tn.Disconnecting?this._completeClose(e):this._connectionState===tn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===tn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=tn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),rn.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Zt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n,0,o);if(null===r)return this._logger.log(Zt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=tn.Reconnecting,e?this._logger.log(Zt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Zt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Zt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==tn.Reconnecting)return void this._logger.log(Zt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Zt.Information,`Reconnect attempt number ${n+1} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==tn.Reconnecting)return void this._logger.log(Zt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=tn.Connected,this._logger.log(Zt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Zt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Zt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==tn.Reconnecting)return this._logger.log(Zt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===tn.Disconnecting&&this._completeClose());n++,o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n,Date.now()-t,o)}}this._logger.log(Zt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Zt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Zt.Error,`Stream 'error' callback called with '${e}' threw error: ${pn(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{target:e,arguments:t,streamIds:o,type:en.Invocation}:{target:e,arguments:t,type:en.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{target:e,arguments:t,invocationId:n.toString(),streamIds:o,type:en.Invocation}:{target:e,arguments:t,invocationId:n.toString(),type:en.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[kn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[kn.Authorization]&&delete e.headers[kn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}var Tn,An;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(Tn||(Tn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(An||(An={}));let Dn=class{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}};class Nn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Dn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._url=e,this._logger.log(Zt.Trace,"(LongPolling transport) Connecting."),t===An.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=dn(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===An.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Zt.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Zt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Wt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Zt.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Zt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Zt.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new Wt(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Zt.Trace,`(LongPolling transport) data received. ${sn(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Zt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof zt?this._logger.log(Zt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Zt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Zt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?cn(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Zt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Zt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=dn();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof Wt&&(404===r.statusCode?this._logger.log(Zt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Zt.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Zt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Zt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Zt.Trace,e),this.onclose(this._closeError)}}}class xn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._logger.log(Zt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===An.Text){if(rn.isBrowser||rn.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=dn();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Zt.Trace,`(SSE transport) data received. ${sn(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Zt.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?cn(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Pn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._logger.log(Zt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(rn.isReactNative){const t={},[o,r]=dn();t[o]=r,n&&(t[kn.Authorization]=`Bearer ${n}`),s&&(t[kn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===An.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Zt.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Zt.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Zt.Trace,`(WebSockets transport) data received. ${sn(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Zt.Trace,`(WebSockets transport) sending data. ${sn(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Zt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class Mn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,on.isRequired(e,"url"),this._logger=function(e){return void 0===e?new hn(Zt.Information):null===e?nn.instance:void 0!==e.log?e:new hn(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new Rn(t.httpClient||new yn(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||An.Binary,on.isIn(e,An,"transferFormat"),this._logger.log(Zt.Debug,`Starting connection with transfer format '${An[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Zt.Error,e),await this._stopPromise,Promise.reject(new qt(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Zt.Error,e),Promise.reject(new qt(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Ln(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Zt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Zt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==Tn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(Tn.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new qt("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Nn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Zt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Zt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=dn();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Zt.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Xt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Wt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Zt.Error,t),Promise.reject(new Xt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Zt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Zt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new Kt(`${n.transport} failed: ${e}`,Tn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Zt.Debug,e),Promise.reject(new qt(e))}}}}return i.length>0?Promise.reject(new Gt(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case Tn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case Tn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new xn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case Tn.LongPolling:return new Nn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=Tn[e.transport];if(null==r)return this._logger.log(Zt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||!!(t&e)}(t,r))return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it was disabled by the client.`),new Vt(`'${Tn[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>An[e])).indexOf(n)>=0))return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it does not support the requested transfer format '${An[n]}'.`),new Error(`'${Tn[r]}' does not support ${An[n]}.`);if(r===Tn.WebSockets&&!this._options.WebSocket||r===Tn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it is not supported in your environment.'`),new Jt(`'${Tn[r]}' is not supported in your environment.`,r);this._logger.log(Zt.Debug,`Selecting transport '${Tn[r]}'.`);try{return this.features.reconnect=r===Tn.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Zt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Zt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Zt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Zt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Zt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Zt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Zt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!rn.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Zt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Ln{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Un,this._transportResult=new Un,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Un),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Un;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Ln._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Un{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Bn{constructor(){this.name="json",this.version=2,this.transferFormat=An.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=nn.instance);const n=vn.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case en.Invocation:this._isInvocationMessage(n);break;case en.StreamItem:this._isStreamItemMessage(n);break;case en.Completion:this._isCompletionMessage(n);break;case en.Ping:case en.Close:break;case en.Ack:this._isAckMessage(n);break;case en.Sequence:this._isSequenceMessage(n);break;default:t.log(Zt.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return vn.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const On={trace:Zt.Trace,debug:Zt.Debug,info:Zt.Information,information:Zt.Information,warn:Zt.Warning,warning:Zt.Warning,error:Zt.Error,critical:Zt.Critical,none:Zt.None};class Fn{configureLogging(e){if(on.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=On[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new hn(t)}else this.logger=new hn(e);return this}withUrl(e,t){return on.isRequired(e,"url"),on.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return on.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new In(e):this.reconnectPolicy=e:this.reconnectPolicy=new In,this}withServerTimeout(e){return on.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return on.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new Mn(this.url,e);return Cn.create(t,this.logger||nn.instance,this.protocol||new Bn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var $n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}($n||($n={}));var Hn,jn,Wn,zn=4294967295;function qn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function Jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Vn=("undefined"==typeof process||"never"!==(null===(Hn=null===process||void 0===process?void 0:process.env)||void 0===Hn?void 0:Hn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Kn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Zn,eo=Vn?new TextDecoder:null,to=Vn?"undefined"!=typeof process&&"force"!==(null===(Wn=null===process||void 0===process?void 0:process.env)||void 0===Wn?void 0:Wn.TEXT_DECODER)?200:0:zn,no=function(e,t){this.type=e,this.data=t},oo=(Zn=function(e,t){return Zn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Zn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Zn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),ro=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return oo(t,e),t}(Error),io={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),qn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:Jn(t,4),nsec:t.getUint32(0)};default:throw new ro("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},so=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(io)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Gn){var t=Kn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Yn(e,this.bytes,this.pos),this.pos+=t}else t=Kn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i=55296&&s<=56319&&i>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128):(t[r++]=s>>12&15|224,t[r++]=s>>6&63|128)}else t[r++]=s>>6&31|192;t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ao(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Qn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),uo=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return uo(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,a=function(){var i,s,a,c,l,h,d,u;return uo(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=po(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof yo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(lo(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=function(){var n,o,r,i,s,a,c,l,h;return uo(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=po(e),d.label=2;case 2:return[4,fo(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,fo(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof yo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,fo(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),s=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(e){i[e]&&(r[e]=function(t){return new Promise((function(n,o){s.push([e,t,n,o])>1||c(e,t)}))})}function c(e,t){try{(n=i[e](t)).value instanceof fo?Promise.resolve(n.value.v).then(l,h):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function l(e){c("next",e)}function h(e){c("throw",e)}function d(e,t){e(t),s.shift(),s.length&&c(s[0][0],s[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new ro("Unrecognized type byte: ".concat(lo(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new ro("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new ro("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new ro("Unrecognized array type byte: ".concat(lo(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new ro("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new ro("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new ro("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthto?function(e,t,n){var o=e.subarray(t,t+n);return eo.decode(o)}(this.bytes,r,e):Qn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new ro("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw vo;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new ro("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=Jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class _o{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const So=new Uint8Array([145,en.Ping]);class Co{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=An.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new co(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new bo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=nn.instance);const o=_o.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case en.Invocation:return this._writeInvocation(e);case en.StreamInvocation:return this._writeStreamInvocation(e);case en.StreamItem:return this._writeStreamItem(e);case en.Completion:return this._writeCompletion(e);case en.Ping:return _o.write(So);case en.CancelInvocation:return this._writeCancelInvocation(e);case en.Close:return this._writeClose();case en.Ack:return this._writeAck(e);case en.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case en.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case en.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case en.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case en.Ping:return this._createPingMessage(n);case en.Close:return this._createCloseMessage(n);case en.Ack:return this._createAckMessage(n);case en.Sequence:return this._createSequenceMessage(n);default:return t.log(Zt.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:en.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:en.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:en.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:en.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:en.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:en.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:en.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:en.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([en.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([en.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),_o.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([en.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([en.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),_o.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([en.StreamItem,e.headers||{},e.invocationId,e.item]);return _o.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t,e.result])}return _o.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([en.CancelInvocation,e.headers||{},e.invocationId]);return _o.write(t.slice())}_writeClose(){const e=this._encoder.encode([en.Close,null]);return _o.write(e.slice())}_writeAck(e){const t=this._encoder.encode([en.Ack,e.sequenceId]);return _o.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([en.Sequence,e.sequenceId]);return _o.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const Eo="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,Io=Eo?Eo.decode.bind(Eo):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}}else o.push(n);o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},ko=Math.pow(2,32),Ro=Math.pow(2,21)-1;function To(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Ao(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function Do(e,t){const n=Ao(e,t+4);if(n>Ro)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*ko+Ao(e,t)}class No{constructor(e){this.batchData=e;const t=new Lo(e);this.arrayRangeReader=new Uo(e),this.arrayBuilderSegmentReader=new Bo(e),this.diffReader=new xo(e),this.editReader=new Po(e,t),this.frameReader=new Mo(e,t)}updatedComponents(){return To(this.batchData,this.batchData.length-20)}referenceFrames(){return To(this.batchData,this.batchData.length-16)}disposedComponentIds(){return To(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return To(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return To(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return To(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return Do(this.batchData,n)}}class xo{constructor(e){this.batchDataUint8=e}componentId(e){return To(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Po{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return To(this.batchDataUint8,e)}siblingIndex(e){return To(this.batchDataUint8,e+4)}newTreeIndex(e){return To(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return To(this.batchDataUint8,e+8)}removedAttributeName(e){const t=To(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class Mo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return To(this.batchDataUint8,e)}subtreeLength(e){return To(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return To(this.batchDataUint8,e+8)}elementName(e){const t=To(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=To(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return Do(this.batchDataUint8,e+12)}}class Lo{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=To(e,e.length-4)}readString(e){if(-1===e)return null;{const n=To(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(Ct.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(Ct.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(Ct.Debug,`Applying batch ${e}.`),xe($n.Server,new No(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(Ct.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(Ct.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Fo=!1;function $o(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Fo||(Fo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Ho{constructor(t,n,o,r){this._renderingFailed=!1,this._disposed=!1,this._pausingState=new jo("pausing",!1,!1),this._resumingState=new jo("resuming",!1,!1),this._disconnectingState=new jo("disconnecting"),this._isFirstRender=!0,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Oo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e,t){return this._isFirstRender?(this._isFirstRender=!1,this._connection?.send("UpdateRootComponents",e,this._applicationState)):this._connection?.send("UpdateRootComponents",e,t)}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==tn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ht(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Qe.getBaseURI(),Qe.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){const e=new Co;e.name="blazorpack";const t=(new Fn).withUrl("_blazor").withHubProtocol(e);this._options.configureSignalR(t);const n=t.build();n.on("JS.AttachComponent",((e,t)=>De($n.Server,this.resolveElement(t),e,!1))),n.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),n.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),n.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),n.on("JS.SavePersistedState",((e,t,n)=>{if(!this._circuitId)throw new Error("Circuit host not initialized.");if(e!==this._circuitId)throw new Error(`Received persisted state for circuit ID '${e}', but the current circuit ID is '${this._circuitId}'.`);return this._persistedCircuitState={components:t,applicationState:n},!0})),n.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{n.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),n.on("JS.RenderBatch",(async(e,t)=>{this._logger.log(Zt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),this._componentManager.onAfterRenderBatch?.($n.Server)})),n.on("JS.EndUpdateRootComponents",(e=>{this._componentManager.onAfterUpdateRootComponents?.(e)})),n.on("JS.EndLocationChanging",St._internal.navigationManager.endLocationChanging),n.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}($n.Server);const t=this._pausingState.isInprogress();t||this._pausingState.transitionTo(!0),this._disposed||this._renderingFailed||t||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),n.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),$o()}));try{await n.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;$o(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===Tn.WebSockets))?this._logger.log(Zt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===Tn.WebSockets))?this._logger.log(Zt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===Tn.LongPolling))&&this._logger.log(Zt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return n.connection?.features?.inherentKeepAlive&&this._logger.log(Zt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),n}async disconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish disconnecting..."),this._disconnectingState.currentProgress();try{this._disconnectingState.reset();const e=this._disconnectingState.currentProgress();return this._logger.log(Zt.Trace,"Disconnecting the circuit..."),await this._connection.stop(),this._disconnectingState.complete(),e}catch(e){throw this._logger.log(Zt.Error,`Failed to disconnect the circuit: ${e}`),this._disconnectingState.fail(e),e}}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===tn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k($n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}async pause(e){if(!this._circuitId)return this._logger.log(Zt.Error,"Circuit host not initialized."),!1;if(this._connection.state!==tn.Connected)return this._logger.log(Zt.Trace,"Pause can only be triggered on connected circuits."),!1;if(this._resumingState.isInprogress())return this._logger.log(Zt.Trace,"Circuit is currently resuming..."),!1;if(this._pausingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish pausing..."),this._pausingState.currentProgress();if(!0===this._pausingState.lastValue())return this._logger.log(Zt.Trace,"Circuit is already paused."),!0;this._pausingState.reset();const t=this._pausingState.currentProgress();try{this._logger.log(Zt.Trace,"Pausing the circuit..."),this._options.reconnectionHandler?.onConnectionDown(this._options.reconnectionOptions,void 0,!0,e);const t=await this._connection.invoke("PauseCircuit");this._pausingState.complete(t)}catch(e){this._logger.log(Zt.Error,`Failed to pause the circuit: ${e}`),this._pausingState.fail(e)}return await this.disconnect(),t}async resume(){if(!this._circuitId)throw this._logger.log(Zt.Error,"Circuit host not initialized."),new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress()&&(this._logger.log(Zt.Trace,"Circuit is disconnecting, cannot resume."),await this._disconnectingState.currentProgress()),this._pausingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish pausing..."),!1;if(!this._pausingState.lastValue())return this._logger.log(Zt.Trace,"Circuit is not paused."),!1;if(this._connection.state!==tn.Connected&&(this._logger.log(Zt.Trace,"Reestablishing SignalR connection..."),this._connection=await this.startConnection()),this._resumingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish resuming..."),this._resumingState.currentProgress();this._resumingState.reset();const e=this._resumingState.currentProgress();try{for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed();const t=this._persistedCircuitState;this._persistedCircuitState=void 0;const n=await this._connection.invoke("ResumeCircuit",this._circuitId,Qe.getBaseURI(),Qe.getLocationHref(),t?.components??"[]",t?.applicationState??"");if(!n)return this._resumingState.complete(!1),e;this._pausingState.transitionTo(!1),this._resumingState.complete(!0),this._circuitId=n,this._renderQueue=new Oo(this._logger);for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return this._options.reconnectionHandler.onConnectionUp(),this._componentManager.onComponentReload?.($n.Server),e}catch(t){return this._logger.log(Zt.Error,`Failed to resume the circuit: ${t}`),this._resumingState.fail(t),e}}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return j(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Zt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,this._connection?.stop();const e=this.getDisconnectFormData();fetch("_blazor/disconnect",{method:"POST",body:e});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class jo{constructor(e,t,n){this._stateName=e,this._resetValue=n,this._lastValue=t}reset(){if(this._promise)throw new Error(`Circuit state ${this._stateName} is already in progress`);const{promise:e,resolve:t,reject:n}=Promise.withResolvers();this._promise=e,this._resolve=t,this._reject=n,this._lastValue=this._resetValue}complete(e){if(!this._resolve)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._resolve;this._lastValue=e,this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}fail(e){if(!this._reject)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._reject;this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}isInprogress(){return!!this._promise}currentProgress(){if(!this.isInprogress())throw new Error(`Circuit state ${this._stateName} is not in progress`);return this._promise}transitionTo(e){if(this._promise)throw new Error(`Circuit state ${this._stateName} is in progress`);this._lastValue=e}lastValue(){return this._lastValue}}function Wo(e){const t={...zo,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...zo.reconnectionOptions,...e.reconnectionOptions}),t}const zo={configureSignalR:e=>{},logLevel:Ct.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:30,retryIntervalMilliseconds:function(e,t){return t&&e>=t?null:e<10?0:e<20?5e3:3e4},dialogId:"components-reconnect-modal"}};class qo{static{this.ReconnectOverlayClassName="components-reconnect-overlay"}static{this.ReconnectDialogClassName="components-reconnect-dialog"}static{this.ReconnectVisibleClassName="components-reconnect-visible"}static{this.RejoiningAnimationClassName="components-rejoining-animation"}static{this.AnimationRippleCount=2}constructor(e,t,n){this.document=t,this.logger=n,this.reconnect=!0,this.remote=!1,this.style=this.document.createElement("style"),this.style.innerHTML=qo.Css,this.overlay=this.document.createElement("div"),this.overlay.className=qo.ReconnectOverlayClassName,this.host=this.document.createElement("div"),this.host.id=e;const o=this.host.attachShadow({mode:"open"});this.dialog=t.createElement("div"),this.dialog.className=qo.ReconnectDialogClassName,o.appendChild(this.style),o.appendChild(this.overlay),this.rejoiningAnimation=t.createElement("div"),this.rejoiningAnimation.className=qo.RejoiningAnimationClassName;for(let e=0;e{"visible"===this.document.visibilityState&&this.retry()}}show(e){this.document.contains(this.host)||this.document.body.appendChild(this.host),this.reconnect="reconnect"===e?.type,this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="block",this.status.innerHTML="Rejoining the server...",this.host.style.display="block",this.overlay.classList.add(qo.ReconnectVisibleClassName)}update(e){if(this.reconnect="reconnect"===e.type,this.reconnect){const{currentAttempt:t,secondsToNextAttempt:n}=e;if(1===t||0===n)this.status.innerHTML="Rejoining the server...";else{const e=1===n?"second":"seconds";this.status.innerHTML=`Rejoin failed... trying again in ${n} ${e}`}}else this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="none",this.status.innerHTML="The session has been paused by the server.",this.resumeButton.style.display="block"}hide(){this.host.style.display="none",this.overlay.classList.remove(qo.ReconnectVisibleClassName)}failed(){this.rejoiningAnimation.style.display="none",this.reconnect?(this.reloadButton.style.display="block",this.status.innerHTML="Failed to rejoin.
Please retry or reload the page.",this.document.addEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible)):(this.status.innerHTML="Failed to resume the session.
Please reload the page.",this.resumeButton.style.display="none",this.reloadButton.style.display="none")}rejected(){location.reload()}async retry(){this.document.removeEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible),this.show();try{await St.reconnect()||(this.update({type:"pause",remote:this.remote}),await St.resumeCircuit()||this.rejected())}catch(e){this.logger.log(Ct.Error,e),this.failed()}}async resume(){try{await St.resumeCircuit()||this.failed()}catch(e){this.logger.log(Ct.Error,e),this.failed()}}static{this.Css=`\n .${this.ReconnectOverlayClassName} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n display: none;\n overflow: hidden;\n animation: components-reconnect-fade-in;\n }\n\n .${this.ReconnectOverlayClassName}.${this.ReconnectVisibleClassName} {\n display: block;\n }\n\n .${this.ReconnectOverlayClassName}::before {\n content: '';\n background-color: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n animation: components-reconnect-fadeInOpacity 0.5s ease-in-out;\n opacity: 1;\n }\n\n .${this.ReconnectOverlayClassName} p {\n margin: 0;\n text-align: center;\n }\n\n .${this.ReconnectOverlayClassName} button {\n border: 0;\n background-color: #6b9ed2;\n color: white;\n padding: 4px 24px;\n border-radius: 4px;\n }\n\n .${this.ReconnectOverlayClassName} button:hover {\n background-color: #3b6ea2;\n }\n\n .${this.ReconnectOverlayClassName} button:active {\n background-color: #6b9ed2;\n }\n\n .${this.ReconnectDialogClassName} {\n position: relative;\n background-color: white;\n width: 20rem;\n margin: 20vh auto;\n padding: 2rem;\n border-radius: 0.5rem;\n box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n opacity: 0;\n animation: components-reconnect-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-fadeInOpacity 0.5s ease-out 0.3s;\n animation-fill-mode: forwards;\n z-index: 10001;\n }\n\n .${this.RejoiningAnimationClassName} {\n display: block;\n position: relative;\n width: 80px;\n height: 80px;\n }\n\n .${this.RejoiningAnimationClassName} div {\n position: absolute;\n border: 3px solid #0087ff;\n opacity: 1;\n border-radius: 50%;\n animation: ${this.RejoiningAnimationClassName} 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n }\n\n .${this.RejoiningAnimationClassName} div:nth-child(2) {\n animation-delay: -0.5s;\n }\n\n @keyframes ${this.RejoiningAnimationClassName} {\n 0% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 4.9% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 5% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n\n 100% {\n top: 0px;\n left: 0px;\n width: 80px;\n height: 80px;\n opacity: 0;\n }\n }\n\n @keyframes components-reconnect-fadeInOpacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes components-reconnect-slideUp {\n 0% {\n transform: translateY(30px) scale(0.95);\n }\n\n 100% {\n transform: translateY(0);\n }\n }\n `}}class Jo{static{this.ShowClassName="components-reconnect-show"}static{this.HideClassName="components-reconnect-hide"}static{this.RetryingClassName="components-reconnect-retrying"}static{this.FailedClassName="components-reconnect-failed"}static{this.PausedClassName="components-reconnect-paused"}static{this.ResumeFailedClassName="components-reconnect-resume-failed"}static{this.RejectedClassName="components-reconnect-rejected"}static{this.MaxRetriesId="components-reconnect-max-retries"}static{this.CurrentAttemptId="components-reconnect-current-attempt"}static{this.SecondsToNextAttemptId="components-seconds-to-next-attempt"}static{this.ReconnectStateChangedEventName="components-reconnect-state-changed"}constructor(e,t,n){if(this.dialog=e,this.document=t,this.reconnect=!1,this.document=t,void 0!==n){const e=this.document.getElementById(Jo.MaxRetriesId);e&&(e.innerText=n.toString())}}show(){this.removeClasses(),this.dialog.classList.add(Jo.ShowClassName),this.dispatchReconnectStateChangedEvent({state:"show"})}update(e){if(this.reconnect="reconnect"===e.type,"reconnect"===e.type){const{currentAttempt:t,secondsToNextAttempt:n}=e,o=this.document.getElementById(Jo.CurrentAttemptId);o&&(o.innerText=t.toString());const r=this.document.getElementById(Jo.SecondsToNextAttemptId);r&&(r.innerText=n.toString()),t>1&&n>0&&this.dialog.classList.add(Jo.RetryingClassName),this.dispatchReconnectStateChangedEvent({state:"retrying",currentAttempt:t,secondsToNextAttempt:n})}if("pause"===e.type){const t=e.remote;this.dialog.classList.remove(Jo.ShowClassName,Jo.RetryingClassName),this.dialog.classList.add(Jo.PausedClassName),this.dispatchReconnectStateChangedEvent({state:"paused",remote:t})}}hide(){this.removeClasses(),this.dialog.classList.add(Jo.HideClassName),this.dispatchReconnectStateChangedEvent({state:"hide"})}failed(){this.removeClasses(),this.reconnect?(this.dialog.classList.add(Jo.FailedClassName),this.dispatchReconnectStateChangedEvent({state:"failed"})):(this.dialog.classList.add(Jo.ResumeFailedClassName),this.dispatchReconnectStateChangedEvent({state:"resume-failed"}))}rejected(){this.removeClasses(),this.dialog.classList.add(Jo.RejectedClassName),this.dispatchReconnectStateChangedEvent({state:"rejected"})}removeClasses(){this.dialog.classList.remove(Jo.ShowClassName,Jo.HideClassName,Jo.RetryingClassName,Jo.FailedClassName,Jo.RejectedClassName,Jo.PausedClassName,Jo.ResumeFailedClassName)}dispatchReconnectStateChangedEvent(e){const t=new CustomEvent(Jo.ReconnectStateChangedEventName,{detail:e});this.dialog.dispatchEvent(t)}}class Vo{constructor(e,t,n,o){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||St.reconnect,this._resumeCallback=o||St.resumeCircuit}onConnectionDown(e,t,n,o){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Jo(t,document,e.maxRetries):new qo(e.dialogId,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new Ko(e,this._logger,this._reconnectCallback,this._resumeCallback,this._reconnectionDisplay,n,o))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class Ko{static{this.MaximumFirstRetryInterval=3e3}constructor(e,t,n,o,r,i,s=!1){this.logger=t,this.reconnectCallback=n,this.resumeCallback=o,this.isGracefulPause=i,this.isRemote=s,this.isDisposed=!1,this.reconnectDisplay=r;const a={type:i?"pause":"reconnect",remote:this.isRemote,currentAttempt:0,secondsToNextAttempt:0};this.reconnectDisplay.show(a),this.isGracefulPause?this.reconnectDisplay.update({type:"pause",remote:this.isRemote}):this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;void 0===e.maxRetries||tKo.MaximumFirstRetryInterval?Ko.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.runTimer(n,1e3,(e=>{this.reconnectDisplay.update({type:"reconnect",currentAttempt:t+1,secondsToNextAttempt:Math.round(e/1e3)})})),this.isDisposed)break;try{if(!await this.reconnectCallback()){if(this.reconnectDisplay.update({type:"pause",remote:!0}),await this.resumeCallback())return;return void this.reconnectDisplay.failed()}return}catch(e){this.logger.log(Ct.Error,e)}}this.reconnectDisplay.failed()}async runTimer(e,t,n){if(e<=0)return void n(0);let o,r,i=Date.now();n(e);const s=()=>{if(this.isDisposed)return void r();const a=Date.now(),c=a-i;i=a;const l=Math.max(1,Math.floor(c/t)),h=t*l;if((e-=h){"visible"===document.visibilityState&&(clearTimeout(o),n(0),r())};o=setTimeout(s,t),document.addEventListener("visibilitychange",a),await new Promise((e=>r=e)),document.removeEventListener("visibilitychange",a)}}class Xo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){let o;var r;n.moduleExports||(r=n.name,o=new URL(r,document.baseURI).toString(),n.moduleExports=await import(o));const i=n.moduleExports;if(void 0!==i){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:r,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=i;let h=n;e.webRendererId===$n.Server&&c&&(h=c),e.webRendererId===$n.WebAssembly&&r&&(h=r);let d=o;return e.webRendererId===$n.Server&&l&&(d=l),e.webRendererId===$n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){const r=n[0],{beforeStart:i,afterStarted:a,beforeWebStart:c,afterWebStarted:l,beforeWebAssemblyStart:h,afterWebAssemblyStarted:d,beforeServerStart:u,afterServerStarted:p}=t,f=!(c||l||h||d||u||p||!i&&!a),g=f&&r.enableClassicInitializers;if(f&&!r.enableClassicInitializers)e.logger?.log(Ct.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. Use 'before(Web|WebAssembly|Server)Start' and 'after(Web|WebAssembly|Server)Started' instead.`);else if(g)return s(e,i,a,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(r),h&&r.webAssembly.initializers.beforeStart.push(h),d&&r.webAssembly.initializers.afterStarted.push(d),u&&r.circuit.initializers.beforeStart.push(u),p&&r.circuit.initializers.afterStarted.push(p),l&&e.afterStartedCallbacks.push(l),c)return c(r)}(e,i,t)}function s(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,I.get(n)?.[1]);var n;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Go,Yo,Qo,Zo,er,tr,nr;function or(e){if(void 0!==tr)throw new Error("Blazor Server has already started.");return tr=new Promise(rr.bind(null,e)),tr}async function rr(e,t,n){await Go;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Xo(!1,void 0,e.initializers.afterStarted,$n.Server);const t=await fetch("_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=(await t.json()).map((e=>({name:e}))),o=new Xo(!0,void 0,void 0,$n.Server);return await o.importInitializersAsync(n,[e]),o}(Zo);if(Yo=Dt(document)||"",er=new Et(Zo.logLevel),Qo=new Ho(e,Yo,Zo,er),er.log(Ct.Information,"Starting up Blazor server-side application."),St.reconnect=async()=>!(Qo.didRenderingFail()||!await Qo.reconnect()&&(er.log(Ct.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.pauseCircuit=async()=>!(Qo.didRenderingFail()||!await Qo.pause()&&(er.log(Ct.Information,"Pause attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.resumeCircuit=async()=>!(Qo.didRenderingFail()||!await Qo.resume()&&(er.log(Ct.Information,"Resume attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.defaultReconnectionHandler=new Vo(er),Zo.reconnectionHandler=Zo.reconnectionHandler||St.defaultReconnectionHandler,St._internal.navigationManager.listenForNavigationEvents($n.Server,((e,t,n)=>Qo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Qo.sendLocationChanging(e,t,n,o))),St._internal.forceCloseConnection=()=>Qo.disconnect(),St._internal.sendJSDataStream=(e,t,n)=>Qo.sendJsDataStream(e,t,n),!await Qo.start())return er.log(Ct.Error,"Failed to start the circuit."),void t();const r=()=>{Qo.sendDisconnectBeacon()};St.disconnect=r,window.addEventListener("pagehide",r,{capture:!1,once:!0}),er.log(Ct.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(St),t()}async function ir(){if(!tr)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Qo||Qo.isDisposedOrDisposing())||(nr?await nr:(await tr,(!Qo||!Qo.didRenderingFail())&&(Qo&&Qo.isDisposedOrDisposing()&&(Yo=Dt(document)||"",Qo=new Ho(Qo.getRootComponentManager(),Yo,Zo,er)),nr=Qo.start(),async function(e){await e,nr===e&&(nr=void 0)}(nr),nr)))}function sr(e,t){if(Qo&&!Qo.isDisposedOrDisposing())return Qo.updateRootComponents(e,t);!async function(e,t){await tr,await ir()&&Qo.updateRootComponents(e,t)}(e,t)}const ar=navigator,cr=ar.userAgentData&&ar.userAgentData.brands,lr=cr&&cr.length>0?cr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,hr=ar.userAgentData?.platform??navigator.platform;function dr(e){return 0!==e.debugLevel&&(lr||navigator.userAgent.includes("Firefox"))}let ur,pr,fr,gr,mr=null;const yr={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");if(e.loadBootResource){const t="dotnetjs",n=e.loadBootResource(t,"dotnet.js","_framework/dotnet.js","","js-module-dotnet");if("string"==typeof n){const e=new URL(n,document.baseURI).toString();return await import(e)}if(n)throw new Error(`For a ${t} resource, custom loaders must supply a URI string.`)}return await import("./dotnet.js")}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1};e.environment&&(n.applicationEnvironment=e.environment);const o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),St._internal.getApplicationEnvironment=()=>n.applicationEnvironment,t?.(n),gr=await async function(e,t){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Xo(!1,void 0,e.initializers.afterStarted,$n.WebAssembly);{const n=[e,t.resources?.extensions??{}],o=new Xo(!0,void 0,void 0,$n.WebAssembly),r=t?.resources?.libraryInitializers;let i;return i=r?"length"in r?r:Object.keys(r).map((e=>({name:e}))):[],await o.importInitializersAsync(i,n),o}}(e,n)},onDownloadResourceProgress:vr,config:n,out:br,err:_r};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),fr=await n.create()}(e,t)},start:function(){return async function(){if(!fr)throw new Error("The runtime must be loaded it gets configured.");const{setModuleImports:t,INTERNAL:n,getConfig:o,invokeLibraryInitializers:r}=fr;pr=n,function(e){const t=hr.match(/^Mac/i)?"Cmd":"Alt";dr(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(dr(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():lr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(o()),St.runtime=fr,St._internal.dotNetCriticalError=_r,t("blazor-internal",{Blazor:{_internal:St._internal}});const i=await fr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(St._internal,{dotNetExports:{...i.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),ur=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Sr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;St._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{St._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{St._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Sr(),St._internal.dotNetExports.InvokeDotNet(e||null,t,n??0,o))}),{invokeLibraryInitializers:r}}()},callEntryPoint:async function(){try{await fr.runMain(fr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),$o()}},getArrayEntryPtr:function(e,t,n){const o=function(e){return e+12}(e)+4+t*n;return o},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return fr.getHeapI16(e+(t||0))},readInt32Field:function(e,t){return fr.getHeapI32(e+(t||0))},readUint64Field:function(e,t){return fr.getHeapU52(e+(t||0))},readObjectField:function(e,t){return fr.getHeapU32(e+(t||0))},readStringField:function(e,t,n){const o=fr.getHeapU32(e+(t||0));if(0===o)return null;if(n){const e=pr.monoObjectAsBoolOrNullUnsafe(o);if("boolean"==typeof e)return e?"":null}return pr.monoStringToStringUnsafe(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Sr(),mr=Cr.create(),mr},invokeWhenHeapUnlocked:function(e){mr?mr.enqueuePostReleaseAction(e):e()}};function vr(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const wr=["DEBUGGING ENABLED"],br=e=>wr.indexOf(e)<0&&console.log(e),_r=e=>{console.error(e||"(null)"),$o()};function Sr(){if(mr)throw new Error("Assertion failed - heap is currently locked")}class Cr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){if(mr!==this)throw new Error("Trying to release a lock which isn't current");for(pr.mono_wasm_gc_unlock(),mr=null;this.postReleaseActions?.length;)this.postReleaseActions.shift()(),Sr()}static create(){return pr.mono_wasm_gc_lock(),new Cr}}class Er{constructor(e){this.batchAddress=e,this.arrayRangeReader=Ir,this.arrayBuilderSegmentReader=kr,this.diffReader=Rr,this.editReader=Tr,this.frameReader=Ar}updatedComponents(){return t.readStructField(this.batchAddress,0)}referenceFrames(){return t.readStructField(this.batchAddress,Ir.structLength)}disposedComponentIds(){return t.readStructField(this.batchAddress,2*Ir.structLength)}disposedEventHandlerIds(){return t.readStructField(this.batchAddress,3*Ir.structLength)}updatedComponentsEntry(e,t){return Dr(e,t,Rr.structLength)}referenceFramesEntry(e,t){return Dr(e,t,Ar.structLength)}disposedComponentIdsEntry(e,n){const o=Dr(e,n,4);return t.readInt32Field(o)}disposedEventHandlerIdsEntry(e,n){const o=Dr(e,n,8);return t.readUint64Field(o)}}const Ir={structLength:8,values:e=>t.readObjectField(e,0),count:e=>t.readInt32Field(e,4)},kr={structLength:12,values:e=>{const n=t.readObjectField(e,0),o=t.getObjectFieldsBaseAddress(n);return t.readObjectField(o,0)},offset:e=>t.readInt32Field(e,4),count:e=>t.readInt32Field(e,8)},Rr={structLength:4+kr.structLength,componentId:e=>t.readInt32Field(e,0),edits:e=>t.readStructField(e,4),editsEntry:(e,t)=>Dr(e,t,Tr.structLength)},Tr={structLength:20,editType:e=>t.readInt32Field(e,0),siblingIndex:e=>t.readInt32Field(e,4),newTreeIndex:e=>t.readInt32Field(e,8),moveToSiblingIndex:e=>t.readInt32Field(e,8),removedAttributeName:e=>t.readStringField(e,16)},Ar={structLength:36,frameType:e=>t.readInt16Field(e,4),subtreeLength:e=>t.readInt32Field(e,8),elementReferenceCaptureId:e=>t.readStringField(e,16),componentId:e=>t.readInt32Field(e,12),elementName:e=>t.readStringField(e,16),textContent:e=>t.readStringField(e,16),markupContent:e=>t.readStringField(e,16),attributeName:e=>t.readStringField(e,16),attributeValue:e=>t.readStringField(e,24,!0),attributeEventHandlerId:e=>t.readUint64Field(e,8)};function Dr(e,n,o){return t.getArrayEntryPtr(e,n,o)}class Nr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let xr,Pr,Mr,Lr,Ur=!1,Br=!1,Or=!0,Fr=!1;const $r=new Promise((e=>{Lr=e}));let Hr;const jr=new Promise((e=>{Hr=e}));let Wr;const zr=new Promise((e=>{Wr=e}));function qr(e){if(xr)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;xr=t,Wr()}(e)}function Jr(e,t){if(void 0!==Mr)throw new Error("Blazor WebAssembly has already started.");return Mr=new Promise(Vr.bind(null,e,t)),Mr}async function Vr(e,n,o,r){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const i=Kr(n);!function(){const e=D;D=(t,n,o)=>{((e,t,n)=>{const o=Ne(e);o?.eventDelegator.getHandler(t)&&yr.invokeWhenHeapUnlocked(n)})(t,n,(()=>e(t,n,o)))}}(),St._internal.invokeJSJson=Xr,St._internal.endInvokeDotNetFromJS=Gr,St._internal.receiveWebAssemblyDotNetDataStream=Yr,St._internal.receiveByteArray=Qr;const s=(t=yr,t);St.platform=s,St._internal.renderBatch=(e,t)=>{const n=yr.beginHeapLock();try{xe(e,new Er(t))}finally{n.release()}},St._internal.navigationManager.listenForNavigationEvents($n.WebAssembly,(async(e,t,n)=>{await ur.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await ur.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);St._internal.navigationManager.endLocationChanging(e,r)}));const a=new Nr(e);St._internal.registeredComponents={getRegisteredComponentsCount:()=>a.getCount(),getAssembly:e=>a.getAssembly(e),getTypeName:e=>a.getTypeName(e),getParameterDefinitions:e=>a.getParameterDefinitions(e)||"",getParameterValues:e=>a.getParameterValues(e)||""},St._internal.getPersistedState=()=>Nt(document)||"",St._internal.getInitialComponentsUpdate=()=>jr,St._internal.updateRootComponents=(e,t)=>{St._internal.dotNetExports?.UpdateRootComponentsCore(e,t)},St._internal.endUpdateRootComponents=t=>e.onAfterUpdateRootComponents?.(t),St._internal.attachRootComponentToElement=(e,t,n)=>{const o=a.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,j(i,!0),t,r)}(e,t,n)};try{await i,await s.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}s.callEntryPoint(),gr.invokeAfterStartedCallbacks(St),Br=!0,o()}function Kr(e){return Pr??=(async()=>{await zr;const t=xr??{};t.environment||(t.environment=e?.environmentName??void 0);const n=xr?.configureRuntime;t.configureRuntime=t=>{n?.(t),e?.environmentVariables&&t.withEnvironmentVariables(e.environmentVariables),Fr&&t.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await yr.load(t,Lr),Ur=!0})(),Pr}function Xr(e,t,n,o,r,i){return 0!==r?(ur.beginInvokeJSFromDotNet(r,e,o,n,t,i),null):ur.invokeJSFromDotNet(e,o,n,t,i)}function Gr(e,t,n){ur.endInvokeDotNetFromJS(e,t,n)}function Yr(e,t,n,o){!function(e,t,n,o,r){let i=_t.get(t);if(!i){const n=new ReadableStream({start(e){_t.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),_t.delete(t)):0===o?(i.close(),_t.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(ur,e,t,n,o)}function Qr(e,t){ur.receiveByteArray(e,t)}function Zr(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}const ei="data-permanent";var ti,ni;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(ti||(ti={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(ni||(ni={}));class oi{static create(e,t,n){return 0===t&&n===e.length?e:new oi(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===ti.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){const t=[];let n=e.length-1,o=e[n]?.length-1;for(;n>0||o>0;){const r=0===n?ni.Insert:0===o?ni.Delete:e[n][o];switch(t.unshift(r),r){case ni.Keep:case ni.Update:n--,o--;break;case ni.Insert:o--;break;case ni.Delete:n--}}return t}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case ti.None:h=o[a-1][i-1];break;case ti.Some:h=o[a-1][i-1]+1;break;case ti.Infinite:h=Number.MAX_VALUE}h{const t=location.href,n=Be(t,e);if(history.pushState(null,"",e),n)Fe(e);else{let n=Oe(e,t);Ii(e,!0),n||(Pe(),Me())}}))}function Ci(e){ze()||(null==e.state&&Be(bi,location.href)?bi=location.href:Ii(location.href,!1))}function Ei(e){if(ze()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===t?.toLowerCase()}(t))return;const n=e.submitter?.getAttribute("formmethod")||t.method;if("dialog"===n)return void console.warn('A form cannot be enhanced when its method is "dialog".');const o=e.submitter?.getAttribute("formtarget")||t.target;if(""!==o&&"_self"!==o)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const r=new URL(e.submitter?.getAttribute("formaction")||t.action,document.baseURI),i={method:n},s=new FormData(t),a=e.submitter?.getAttribute("name"),c=e.submitter?.getAttribute("value");a&&c&&s.append(a,c);const l=new URLSearchParams(s).toString();if("get"===i.method)r.search=l,history.pushState(null,"",r.toString());else{const n=e.submitter?.getAttribute("formenctype")||t.enctype;"multipart/form-data"===n?i.body=s:(i.body=l,i.headers={"content-type":n,accept:mi})}Ii(r.toString(),!1,i)}}async function Ii(e,t,n,o,r=!0){wi=!0,yi?.abort(),function(e,t){Re?.(e,t)}(e,t),vi.enhancedNavigationStarted(),yi=new AbortController;const i=yi.signal,s=fetch(e,Object.assign({signal:i,mode:"no-cors",headers:{accept:mi}},n));let a=null;if(await async function(e,t,n){let o;try{if(o=await e,!o.body)return void n(o,"");const t=o.headers.get("ssr-framing");if(!t){const e=await o.text();return void n(o,e)}let r=!0;await o.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){r?(r=!1,n(o,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(s,i,((t,i)=>{const s=!n?.method||"get"===n.method,c=t.status>=200&&t.status<300;if("opaque"===t.type){if(s)return void Ri(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(c&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(s)return void Ri(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}r&&(t.redirected||o)&&((o?"get"===o:s)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const l=t.headers.get("blazor-enhanced-nav-redirect-location");if(r&&l)return void location.replace(l);r&&!t.redirected&&!s&&c&&(Oe(t.url,bi)?location.href!==bi&&history.pushState(null,"",bi):a=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),r&&(bi=t.url);const h=t.headers.get("content-type");if(h?.startsWith("text/html")&&i){const e=(new DOMParser).parseFromString(i,"text/html");ii(document,e),vi.documentUpdated()}else h?.startsWith("text/")&&i?ki(i):c||i?s?Ri(e):ki(`Error: ${n.method} request to ${e} returned non-HTML content of type ${h||"unspecified"}.`):ki(`Error: ${t.status} ${t.statusText}`)})),!i.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);o?.scrollIntoView()}if(wi=!1,vi.enhancedNavigationCompleted(),a)throw new Error(a)}}function ki(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Ri(e){console.warn(`Enhanced navigation failed for destination ${e}. Falling back to full page load.`),history.replaceState(null,"",e+"?"),location.replace(e)}let Ti,Ai=!0;function Di(e,t){Ti=t,e?.disableDomPreservation&&(Ai=!1),customElements.define("blazor-ssr-end",Ni)}class Ni extends HTMLElement{connectedCallback(){const e=this.parentNode;e.parentNode?.removeChild(e),e.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&yi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Ai)ii({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Ti.documentUpdated()}}(t,e.content);else{const t="true"===e.getAttribute("enhanced");switch(e.getAttribute("type")){case"redirection":xi(e,!0,t);break;case"not-found":xi(e,!1,t&&Ai);break;case"error":ki(e.content.textContent||"Error")}}}}))}}function xi(e,t,n){const o=We(e.content.textContent),r="form-post"===e.getAttribute("from");n&&Ue(o)?Ii(o,!1,void 0,r?"post":"get",t):r?o!==location.href&&location.assign(o):location.replace(o)}class Pi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===$n.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh(!0)}setWebAssemblyOptions(e){this._webAssemblyOptions=e}registerComponent(e){if(this._seenDescriptors.has(e))return;"webassembly"===e.type?this.startLoadingWebAssemblyIfNotStarted():"auto"===e.type&&this.startLoadingWebAssemblyIfNotStarted(1);const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(e){if(void 0!==Pr)return;Fr=!0;const t=Kr(this._webAssemblyOptions),n=await $r;void 0!==e&&(n.maxParallelDownloads=e),function(e){const t=Mi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n}(n)||this.onWebAssemblyFailedToLoadQuickly(),await t,function(e){const t=Mi(e);t&&window.localStorage.setItem(t.key,t.value)}(n),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===tr?or(this):!Qo||Qo.isDisposedOrDisposing()?ir():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===Mr&&await Jr(this,this._webAssemblyOptions)}rootComponentsMayRequireRefresh(e=!1){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,queueMicrotask((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values(),e)})))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents($n.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents($n.Server,"server","auto")||(async function(){await(Qo?.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ne(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e,t=!1){const n=new Map,o=new Set;for(const r of e){t&&void 0!==r.assignedRendererId&&o.add(r.assignedRendererId);const e=this.determinePendingOperation(r);if(!e)continue;const i=r.assignedRendererId;if(!i)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let s=n.get(i);s||(s=[],n.set(i,s)),s.push(e)}let r="",i="";if(t)for(const e of o)if(e===$n.Server)r=Dt(document)||"",r&&""!==r&&(n.get($n.Server)||n.set($n.Server,[]));else{if(e!==$n.WebAssembly)throw new Error(`Unexpected renderer ID '${e}' encountered while discovering new state.`);i=Nt(document)||"",i&&""!==i&&(n.get($n.WebAssembly)||n.set($n.WebAssembly,[]))}for(const[e,t]of n){const n={batchId:this._nextOperationBatchId++,operations:t};this._pendingOperationBatches[n.batchId]=n;const o=JSON.stringify(n);e===$n.Server?sr(o,r):this.updateWebAssemblyRootComponents(o,i)}this.circuitMayHaveNoRootComponents()}updateWebAssemblyRootComponents(e,t){Or?(Hr(e),Or=!1):function(e,t){if(!Mr)throw new Error("Blazor WebAssembly has not started.");if(!St._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Br?St._internal.updateRootComponents(e,t):async function(e,t){if(await Mr,!St._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");St._internal.updateRootComponents(e,t)}(e,t)}(e,t)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),$n.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),$n.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents($n.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents($n.Server,"server")?"server":Ur?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(wi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:R(t)?(_e(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ht(e.descriptor)}):null}return R(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ht(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):R(e.assignedRendererId)?(_e(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}onComponentReload(e){for(const[n,o]of this._rootComponentsBySsrComponentId.entries())o.assignedRendererId===e&&(o.assignedRendererId=void 0,we(o.descriptor.start,!1),t=o.descriptor.start,ge.add(t));var t;this.rootComponentsMayRequireRefresh()}}function Mi(e){const t=e.resources?.hash,n=e.mainAssemblyName;return t&&n?{key:`blazor-resource-hash:${n}`,value:t}:null}class Li{constructor(){this._eventListeners=new Map}static create(e){const t=new Li;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){this._eventListeners.get(e)?.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let Ui=null,Bi=location.href,Oi=!1;function Fi(){null!==document.activeElement&&document.activeElement!==document.body||document.querySelector("[autofocus]")||Wi()}function $i(){Oe(Bi,location.href)||(Oi=!0),Bi=location.href}function Hi(){Oi&&Wi()}function ji(){Oi=!1}function Wi(){const e=Ui?.getAttribute("selector");e&<.focusBySelector(e)}class zi extends HTMLElement{connectedCallback(){Ui=this}disconnectedCallback(){Ui===this&&(Ui=null)}}let qi,Ji=!1;function Vi(e){if(Ji)throw new Error("Blazor has already started.");Ji=!0,e=e||{},e.logLevel??=Ct.Error,St._internal.hotReloadApplied=()=>{He()&&je(location.href,!0)},qi=new Pi(e?.ssr?.circuitInactivityTimeoutMs??2e3);const t=Li.create(St),n={enhancedNavigationStarted:()=>{t.dispatchEvent("enhancednavigationstart",{})},documentUpdated:()=>{qi.onDocumentUpdated(),t.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){qi.onEnhancedNavigationCompleted(),t.dispatchEvent("enhancednavigationend",{})}};return ri=qi,Di(e?.ssr,n),e?.ssr?.disableDomPreservation||(vi=n,document.addEventListener("click",Si),document.addEventListener("submit",Ei),window.addEventListener("popstate",Ci),ke=_i),function(e){customElements.define("blazor-focus-on-navigate",zi),e.addEventListener("enhancednavigationstart",$i),e.addEventListener("enhancednavigationend",Hi),document.addEventListener("focusin",ji),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Fi,{once:!0}):Fi()}(t),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Wo(e?.circuit||{});e.circuit=t,e.webAssembly=e.webAssembly||{};const n=async function(e,t){const n=xt(document,Tt,"initializers");if(!n)return new Xo(!1,t);const o=(JSON.parse(atob(n))??[]).map((e=>({name:e}))),r=new Xo(!1,t);return await r.importInitializersAsync(o,[e]),r}(e,new Et(t.logLevel));!function(e){if(Zo)throw new Error("Circuit options have already been configured.");Go=async function(e){const t=await e;Zo=Wo(t)}(e)}(Xi(n,t)),qr(Xi(n,e.webAssembly)),function(e){const t=di(e),n=function(e){const t=xt(e,At,"options");if(t)return JSON.parse(t)}(e);ri?.setWebAssemblyOptions(n);for(const e of t)ri?.registerComponent(e)}(document),qi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(St)}(n)}async function Xi(e,t){return await e,t}St.start=Vi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Vi()}(); From c5fbb5b61b65bf96b1d83178d3fe1d35eeb937c9 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Thu, 13 Nov 2025 11:13:56 -0500 Subject: [PATCH 02/26] rolling back change to include _framework assets as it resolves the run-time issue but creates a build issue --- Oqtane.Application/Server/wwwroot/_framework/blazor.server.js | 2 -- Oqtane.Application/Server/wwwroot/_framework/blazor.web.js | 1 - 2 files changed, 3 deletions(-) delete mode 100644 Oqtane.Application/Server/wwwroot/_framework/blazor.server.js delete mode 100644 Oqtane.Application/Server/wwwroot/_framework/blazor.web.js diff --git a/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js b/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js deleted file mode 100644 index b35f13bb..00000000 --- a/Oqtane.Application/Server/wwwroot/_framework/blazor.server.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(){"use strict";var e,t,n;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c,l;class h{constructor(e){this._jsObject=e,this._cachedHandlers=new Map}resolveInvocationHandler(e,t){var n;const r=null===(n=this._cachedHandlers.get(e))||void 0===n?void 0:n[t];if(r)return r;const[o,i]=E(this._jsObject,e),s=function(e,t,n,r){switch(n){case l.FunctionCall:const n=e[t];if(n instanceof Function)return n.bind(e);throw new Error(`The value '${r}' is not a function.`);case l.ConstructorCall:const o=e[t];if(o instanceof Function){const t=o.bind(e);return(...e)=>new t(...e)}throw new Error(`The value '${r}' is not a function.`);case l.GetValue:if(!function(e,t){if(!(t in e))return!1;for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!!n.hasOwnProperty("value")||n.hasOwnProperty("get")&&"function"==typeof n.get;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${r}' is not defined or is not readable.`);return()=>e[t];case l.SetValue:if(!function(e,t){if(!(t in e))return Object.isExtensible(e);for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!(!n.hasOwnProperty("value")||!n.writable)||n.hasOwnProperty("set")&&"function"==typeof n.set;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${r}' is not writable.`);return(...n)=>e[t]=n[0]}}(o,i,t,e);return this.addHandlerToCache(e,s,t),s}getWrappedObject(){return this._jsObject}addHandlerToCache(e,t,n){const r=this._cachedHandlers.get(e);r?r[n]=t:this._cachedHandlers.set(e,{[n]:t})}}!function(e){e[e.FunctionCall=1]="FunctionCall",e[e.ConstructorCall=2]="ConstructorCall",e[e.GetValue=3]="GetValue",e[e.SetValue=4]="SetValue"}(l=e.JSCallType||(e.JSCallType={}));const u=0,d={[u]:new h(window)};d[0]._cachedHandlers.set("import",{[l.FunctionCall]:e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substring(2),document.baseURI).toString()),import(e))});let p,f=1;function g(e){t.push(e)}function m(e){if(null==e)return{[n]:-1};if(e&&("object"==typeof e||e instanceof Function)){d[f]=new h(e);const t={[n]:f};return f++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function y(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[s]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function v(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function _(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new w(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=g,e.invokeMethod=function(e,t,...n){return _().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return _().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=y,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&-1!==t&&C(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(p=e.JSCallResultType||(e.JSCallResultType={}));class w{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r,o){const i=R(this.processJSCall(r,e,o,t),n);return null==i?null:x(this,i)}async beginInvokeJSFromDotNet(e,t,n,r,o,i){try{const s=this.processJSCall(o,t,i,n);if(e){const t=x(this,[e,!0,R(await s,r)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)}}catch(t){if(e){const n=JSON.stringify([e,!1,b(t)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,n)}}}processJSCall(e,t,n,r){var o;const i=null!==(o=v(this,r))&&void 0!==o?o:[];return S(t,e,n)(...i)}endInvokeDotNetFromJS(e,t,n){const r=t?v(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=x(this,r),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return i?v(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const i=x(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,i)}catch(e){this.completePendingCall(o,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new T;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new T;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function b(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function S(e,t,n){const r=d[t];if(r)return r.resolveInvocationHandler(e,null!=n?n:l.FunctionCall);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function C(e){delete d[e]}function E(e,t){const n=t.split(".");let r=e;for(let e=0;econsole.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=I,g((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new I(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=d[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new k(n)}}return t}));class k{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class T{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function R(e,t){switch(t){case p.Default:return e;case p.JSObjectReference:return m(e);case p.JSStreamReference:return y(e);case p.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let D=0;function x(e,t){D=0,c=e;const n=JSON.stringify(t,A);return c=void 0,n}function A(e,t){if(t instanceof I)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(D,t);const e={[o]:D};return D++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const o=new Map,i=new Map,s=[];function a(e){return o.get(e)}function c(e){const t=o.get(e);return t?.browserEventName||e}function l(e,t){e.forEach((e=>o.set(e,t)))}function h(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),l(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),l(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),l(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),l(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type,isComposing:t.isComposing};var t}}),l(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),l(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),l(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),l(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:h(t.touches),targetTouches:h(t.targetTouches),changedTouches:h(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),l(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),l(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),l(["cancel","close","toggle"],{createEventArgs:()=>({})});const d=["date","datetime-local","month","time","week"],p=new Map;let f,g,m=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++m).toString();p.set(r,e);const o=await w().invokeMethodAsync("AddRootComponent",t,r),i=new _(o,g[t]);return await i.setParameters(n),i}};class v{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new v)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return w().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await w().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function w(){if(!f)throw new Error("Dynamic root components have not been enabled in this application.");return f}const b=new Map,S=[],C=new Map;function E(t,n,r,o){if(b.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);b.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(f)throw new Error("Dynamic root components have already been enabled.");f=t,g=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),C.get(t)?.[0]?.(),function(e){for(const t of S)t(e)}(t)}function I(e){return b.has(e)}function k(e,t,n){return R(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=b.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let R=(e,t,n)=>n();const D=U(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=U(["click","dblclick","mousedown","mousemove","mouseup"]);class P{static{this.nextEventDelegatorId=0}constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),i=o.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(i),o.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}removeListenersForElement(e){const t=this.getEventHandlerInfosForElement(e,!1);if(t){for(const e of t.enumerateHandlers())this.eventInfoStore.remove(e.eventHandlerId);delete e[this.eventsCollectionKey]}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){const r=this.getEventHandlerInfosForElement(e,!0),o=r.stopPropagation(t);r.stopPropagation(t,n),!o&&n?this.eventInfoStore.addGlobalListener(t):o&&!n&&this.eventInfoStore.decrementCountByEventName(t)}setPreventDefault(e,t,n){const r=this.getEventHandlerInfosForElement(e,!0),o=r.preventDefault(t);r.preventDefault(t,n),!o&&n?this.eventInfoStore.addActiveGlobalListener(t):o&&!n&&this.eventInfoStore.decrementCountByEventName(t)}onGlobalEvent(e){if(!(e.target instanceof Element))return;if(!I(this.browserRendererId))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const c=Object.prototype.hasOwnProperty.call(D,e);let l=!1;for(;o;){const d=o,p=this.getEventHandlerInfosForElement(d,!1);if(p){const n=p.getHandler(e);if(n&&(h=d,u=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,u)&&h.disabled))){if(!s){const n=a(e);i=n?.createEventArgs?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=c||l?void 0:n.shift()}var h,u}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new M:null}}class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=c(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(D,e);document.addEventListener(e,this.globalListener,t)}}addActiveGlobalListener(e){e=c(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e)?(this.countByEventName[e]++,document.removeEventListener(e,this.globalListener)):this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(D,e);document.addEventListener(e,this.globalListener,{capture:t,passive:!1})}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=c(t.eventName);this.decrementCountByEventName(n)}return t}decrementCountByEventName(e){0==--this.countByEventName[e]&&(delete this.countByEventName[e],document.removeEventListener(e,this.globalListener))}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class M{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}*enumerateHandlers(){for(const e in this.handlers)Object.prototype.hasOwnProperty.call(this.handlers,e)&&(yield this.handlers[e])}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function U(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function H(e){const t=V(e);for(;t.length;)W(e,0)}function F(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=V(r);if(t?.length>0){const t=Z(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const i=z(r);if(i){const e=V(i),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const s=V(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return V(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function V(e){return e[B]}function K(e){const t=V(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function*X(e){const t=V(e);for(const e of t)yield*X(e);yield e}function G(e,t){const n=V(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Z(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Q(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let i=r;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===o)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Q(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Q(e,z(t))}}}function Z(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Z(t)}}function ee(e){return`_bl_${e}`}const te="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,te)&&"string"==typeof t[te]?function(e){const t=`[${ee(e)}]`;return document.querySelector(t)}(t[te]):t));const ne="_blazorDeferredValue";function re(e){return"select-multiple"===e.type}function oe(e,t){e.value=t||""}function ie(e,t){e instanceof HTMLSelectElement?re(e)?function(e,t){t||=[];for(let n=0;n{Ce()&&function(e){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const t=function(e){const t=e.composedPath&&e.composedPath();if(t)for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ae.content));var s;let a=0;for(;i.firstChild;)j(i.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,i=o.attributeName(r),s=o.attributeEventHandlerId(r);if(s){const e=ge(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,r,o,i,s){const a=r;for(let a=i;adocument.baseURI,getLocationHref:()=>location.href,scrollToElement:be};function Pe(e,t,n=!1){const r=Se(e);!t.forceLoad&&we(r)?Ne(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Ne(e,t,n,r=void 0,o=!1){if(Be(),function(e,t){const n=new URL(e),r=new URL(t);return n.origin===r.origin&&n.pathname===r.pathname&&n.search===r.search&&""!==r.hash}(location.href,e))return Me(e,n,r),void function(e){const t=e.indexOf("#");t!==e.length-1&&be(e.substring(t+1))}(e);const i=He();(o||!i?.hasLocationChangingEventListeners||await Le(e,r,t,i))&&(function(e,t){const n=new URL(e),r=new URL(t);return n.protocol===r.protocol&&n.host===r.host&&n.port===r.port&&n.pathname===r.pathname}(e,location.href)||(_e=!0),Me(e,n,r),await $e(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:ke},"",e):(ke++,history.pushState({userState:n,_index:ke},"",e))}function Ue(e){return new Promise((t=>{const n=De;De=()=>{De=n,t()},history.go(e)}))}function Be(){xe&&(xe(!1),xe=null)}function Le(e,t,n,r){return new Promise((o=>{Be(),Te++,xe=o,r.locationChanging(Te,e,t,n)}))}async function $e(e,t){const n=location.href;await Promise.all(Array.from(Re,(async([t,r])=>{I(t)&&await r.locationChanged(n,history.state?.userState,e)})))}async function Oe(e){De&&(Ce(),1)&&await De(e),ke=history.state?._index??0}function He(){const e=Ee();if(void 0!==e)return Re.get(e)}const Fe={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus({preventScroll:!0}))}},je={init:function(e,t,n,r=50){const o=ze(t);(o||document.documentElement).style.overflowAnchor="none";const i=document.createRange();d(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(r){r.forEach((r=>{if(!r.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const o=i.getBoundingClientRect().height,s=r.rootBounds?.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,o,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,o,s)}))}),{root:o,rootMargin:`${r}px`});s.observe(t),s.observe(n);const a=u(t),c=u(n),{observersByDotNetObjectId:l,id:h}=qe(e);function u(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{d(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function d(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=qe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},We=Symbol();function ze(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:ze(e.parentElement):null}function qe(e){const t=e._callDispatcher,n=e._id;return t[We]??={},{observersByDotNetObjectId:t[We],id:n}}const Je={getAndRemoveExistingTitle:function(){const e=document.head?document.head.getElementsByTagName("title"):[];if(0===e.length)return null;let t=null;for(let n=e.length-1;n>=0;n--){const r=e[n],o=r.previousSibling;o instanceof Comment&&null!==z(o)||(null===t&&(t=r.textContent),r.parentNode?.removeChild(r))}return t}},Ve={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const i=Ke(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){const t=Math.min(1,r/s.width),i=Math.min(1,o/s.height),a=Math.min(t,i),c=document.createElement("canvas");c.width=Math.round(s.width*a),c.height=Math.round(s.height*a),c.getContext("2d")?.drawImage(s,0,0,c.width,c.height),c.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:a?.size||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ke(e,t).blob}};function Ke(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Xe=new Set;function Ge(e){e.preventDefault(),e.returnValue=!0}async function Ye(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const Qe={navigateTo:function(e,t,n=!1){Pe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(o.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}o.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ae,domWrapper:Fe,Virtualize:je,PageTitle:Je,InputFile:Ve,NavigationLock:{enableNavigationPrompt:function(e){0===Xe.size&&window.addEventListener("beforeunload",Ge),Xe.add(e)},disableNavigationPrompt:function(e){Xe.delete(e),0===Xe.size&&window.removeEventListener("beforeunload",Ge)}},getJSDataStreamChunk:Ye,attachWebRendererInterop:E}};var Ze;function et(e){const t={...tt,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...tt.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=Qe,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(Ze||(Ze={}));const tt={configureSignalR:e=>{},logLevel:Ze.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:30,retryIntervalMilliseconds:function(e,t){return t&&e>=t?null:e<10?0:e<20?5e3:3e4},dialogId:"components-reconnect-modal"}};(class e{static{this.instance=new e}log(e,t){}});let nt=class{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${Ze[e]}: ${t}`;switch(e){case Ze.Critical:case Ze.Error:console.error(n);break;case Ze.Warning:console.warn(n);break;case Ze.Information:console.info(n);break;default:console.log(n)}}}};const rt=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function ot(e){return it(e,rt)}function it(e,t,n="state"){if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",o=t.exec(r),i=o&&o.groups&&o.groups[n];return i&&e.parentNode?.removeChild(e),i}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function ct(e,t){const n=e.currentElement;var r,o,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=at.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=at.exec(e.textContent),o=t&&t[1];if(o)return dt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return o=n,i=c,ut(r=s),{...r,uniqueId:lt++,start:o,end:i};case"server":return function(e,t,n){return ht(e),{...e,uniqueId:lt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return ht(e),ut(e),{...e,uniqueId:lt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let lt=0;function ht(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function ut(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function dt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class pt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substring(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function At(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Pt(e,t,n,r,o,i){const s={},[a,c]=Ut();s[a]=c,e.log(Et.Trace,`(${t} transport) sending data. ${xt(o,i.logMessageContent)}.`);const l=At(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Et.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Nt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Mt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Et[e]}: ${t}`;switch(e){case Et.Critical:case Et.Error:this.out.error(n);break;case Et.Warning:this.out.warn(n);break;case Et.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Ut(){return["X-SignalR-User-Agent",Bt("10.0.0","","Browser",void 0)]}function Bt(e,t,n,r){let o="Microsoft SignalR/";const i=e.split(".");return o+=`${i[0]}.${i[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Lt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class $t extends Ct{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._jar=new(e("tough-cookie").CookieJar),"undefined"==typeof fetch?this._fetchType=e("node-fetch"):this._fetchType=fetch,this._fetchType=e("fetch-cookie")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new mt;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new mt});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(Et.Warning,"Timeout from HTTP request."),n=new gt}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},At(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Et.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await Ot(r,"text");throw new ft(e||r.statusText,r.status)}const i=Ot(r,e.responseType),s=await i;return new St(r.status,r.statusText,s)}getCookieString(e){return""}}function Ot(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Ht extends Ct{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new mt):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(At(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new mt)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new St(r.status,r.statusText,r.response||r.responseText)):n(new ft(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(Et.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new ft(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(Et.Warning,"Timeout from HTTP request."),n(new gt)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class Ft extends Ct{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new $t(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Ht(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new mt):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}class jt{static write(e){return`${e}${jt.RecordSeparator}`}static parse(e){if(e[e.length-1]!==jt.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(jt.RecordSeparator);return t.pop(),t}}jt.RecordSeparatorCode=30,jt.RecordSeparator=String.fromCharCode(jt.RecordSeparatorCode);class Wt{writeHandshakeRequest(e){return jt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(At(e)){const r=new Uint8Array(e),o=r.indexOf(jt.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const i=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,i))),n=r.byteLength>i?r.slice(i).buffer:null}else{const r=e,o=r.indexOf(jt.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const i=o+1;t=r.substring(0,i),n=r.length>i?r.substring(i):null}const r=jt.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(It||(It={}));class zt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Nt(this,e)}}class qt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};At(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Jt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:It.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case It.Invocation:case It.StreamItem:case It.Completion:case It.StreamInvocation:case It.CancelInvocation:return!0;case It.Close:case It.Sequence:case It.Ping:case It.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:It.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Jt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(kt||(kt={}));class Vt{static create(e,t,n,r,o,i,s){return new Vt(e,t,n,r,o,i,s)}constructor(e,t,n,r,o,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Et.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Rt.isRequired(e,"connection"),Rt.isRequired(t,"logger"),Rt.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Wt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=kt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:It.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==kt.Disconnected&&this._connectionState!==kt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==kt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=kt.Connecting,this._logger.log(Et.Debug,"Starting HubConnection.");try{await this._startInternal(),Dt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=kt.Connected,this._connectionStarted=!0,this._logger.log(Et.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=kt.Disconnected,this._logger.log(Et.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Et.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Et.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new qt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Et.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===kt.Disconnected)return this._logger.log(Et.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===kt.Disconnecting)return this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=kt.Disconnecting,this._logger.log(Et.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Et.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===kt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new mt("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let i;const s=new zt;return s.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===It.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(o).catch((e=>{s.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===It.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case It.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(Et.Error,`Invoke client method threw error: ${Lt(e)}`)}));break;case It.StreamItem:case It.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===It.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Et.Error,`Stream callback threw error: ${Lt(e)}`)}}break}case It.Ping:break;case It.Close:{this._logger.log(Et.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case It.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case It.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Et.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Et.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Et.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Et.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!this.connection.features||!this.connection.features.inherentKeepAlive){this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds);let e=this._nextKeepAlive-(new Date).getTime();if(e<0)return void(this._connectionState===kt.Connected&&this._trySendPingMessage());void 0===this._pingServerHandle&&(e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{this._connectionState===kt.Connected&&await this._trySendPingMessage()}),e))}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Et.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Et.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let i,s,a;for(const n of r)try{const r=i;i=await n.apply(this,e.arguments),o&&i&&r&&(this._logger.log(Et.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Et.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Et.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Et.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Et.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new mt("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===kt.Disconnecting?this._completeClose(e):this._connectionState===kt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===kt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=kt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Dt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Et.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n,0,r);if(null===o)return this._logger.log(Et.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=kt.Reconnecting,e?this._logger.log(Et.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Et.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Et.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==kt.Reconnecting)return void this._logger.log(Et.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(Et.Information,`Reconnect attempt number ${n+1} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==kt.Reconnecting)return void this._logger.log(Et.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=kt.Connected,this._logger.log(Et.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Et.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Et.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==kt.Reconnecting)return this._logger.log(Et.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===kt.Disconnecting&&this._completeClose());n++,r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n,Date.now()-t,r)}}this._logger.log(Et.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Et.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(Et.Error,`Stream 'error' callback called with '${e}' threw error: ${Lt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{target:e,arguments:t,streamIds:r,type:It.Invocation}:{target:e,arguments:t,type:It.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{target:e,arguments:t,invocationId:n.toString(),streamIds:r,type:It.Invocation}:{target:e,arguments:t,invocationId:n.toString(),type:It.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Gt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Gt.Authorization]&&delete e.headers[Gt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}var Qt,Zt;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(Qt||(Qt={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(Zt||(Zt={}));let en=class{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}};class tn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new en,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._url=e,this._logger.log(Et.Trace,"(LongPolling transport) Connecting."),t===Zt.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=Ut(),o={[n]:r,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===Zt.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Et.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Et.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new ft(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Et.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(Et.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(Et.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new ft(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(Et.Trace,`(LongPolling transport) data received. ${xt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(Et.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof gt?this._logger.log(Et.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Et.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Et.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Pt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Et.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Et.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Ut();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof ft&&(404===o.statusCode?this._logger.log(Et.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Et.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(Et.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Et.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Et.Trace,e),this.onclose(this._closeError)}}}class nn{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._logger.log(Et.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,i=!1;if(t===Zt.Text){if(Dt.isBrowser||Dt.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,i]=Ut();n[r]=i,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(Et.Trace,`(SSE transport) data received. ${xt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{i?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(Et.Information,`SSE connected to ${this._url}`),this._eventSource=o,i=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Pt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class rn{constructor(e,t,n,r,o,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Rt.isRequired(e,"url"),Rt.isRequired(t,"transferFormat"),Rt.isIn(t,Zt,"transferFormat"),this._logger.log(Et.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Dt.isReactNative){const t={},[r,o]=Ut();t[r]=o,n&&(t[Gt.Authorization]=`Bearer ${n}`),s&&(t[Gt.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===Zt.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Et.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,r()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Et.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Et.Trace,`(WebSockets transport) data received. ${xt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Et.Trace,`(WebSockets transport) sending data. ${xt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Et.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class on{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Rt.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Mt(Et.Information):null===e?Tt.instance:void 0!==e.log?e:new Mt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new Yt(t.httpClient||new Ft(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||Zt.Binary,Rt.isIn(e,Zt,"transferFormat"),this._logger.log(Et.Debug,`Starting connection with transfer format '${Zt[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Et.Error,e),await this._stopPromise,Promise.reject(new mt(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Et.Error,e),Promise.reject(new mt(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new sn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Et.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Et.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Et.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==Qt.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(Qt.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new mt("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof tn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Et.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Et.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=Ut();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(Et.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof ft&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Et.Error,t),Promise.reject(new wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Et.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Et.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new _t(`${n.transport} failed: ${e}`,Qt[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Et.Debug,e),Promise.reject(new mt(e))}}}}return i.length>0?Promise.reject(new bt(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case Qt.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new rn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case Qt.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new nn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case Qt.LongPolling:return new tn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=Qt[e.transport];if(null==o)return this._logger.log(Et.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||!!(t&e)}(t,o))return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it was disabled by the client.`),new vt(`'${Qt[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>Zt[e])).indexOf(n)>=0))return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it does not support the requested transfer format '${Zt[n]}'.`),new Error(`'${Qt[o]}' does not support ${Zt[n]}.`);if(o===Qt.WebSockets&&!this._options.WebSocket||o===Qt.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Et.Debug,`Skipping transport '${Qt[o]}' because it is not supported in your environment.'`),new yt(`'${Qt[o]}' is not supported in your environment.`,o);this._logger.log(Et.Debug,`Selecting transport '${Qt[o]}'.`);try{return this.features.reconnect=o===Qt.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Et.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Et.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Et.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Et.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Et.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Et.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Et.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Dt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Et.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class sn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new an,this._transportResult=new an,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new an),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new an;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):sn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class an{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class cn{constructor(){this.name="json",this.version=2,this.transferFormat=Zt.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Tt.instance);const n=jt.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case It.Invocation:this._isInvocationMessage(n);break;case It.StreamItem:this._isStreamItemMessage(n);break;case It.Completion:this._isCompletionMessage(n);break;case It.Ping:case It.Close:break;case It.Ack:this._isAckMessage(n);break;case It.Sequence:this._isSequenceMessage(n);break;default:t.log(Et.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return jt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const ln={trace:Et.Trace,debug:Et.Debug,info:Et.Information,information:Et.Information,warn:Et.Warning,warning:Et.Warning,error:Et.Error,critical:Et.Critical,none:Et.None};class hn{configureLogging(e){if(Rt.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=ln[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Mt(t)}else this.logger=new Mt(e);return this}withUrl(e,t){return Rt.isRequired(e,"url"),Rt.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Rt.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Xt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Xt,this}withServerTimeout(e){return Rt.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Rt.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new on(this.url,e);return Vt.create(t,this.logger||Tt.instance,this.protocol||new cn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var un;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(un||(un={}));var dn,pn,fn,gn=4294967295;function mn(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function yn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var vn=("undefined"==typeof process||"never"!==(null===(dn=null===process||void 0===process?void 0:process.env)||void 0===dn?void 0:dn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function _n(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var En,In=vn?new TextDecoder:null,kn=vn?"undefined"!=typeof process&&"force"!==(null===(fn=null===process||void 0===process?void 0:process.env)||void 0===fn?void 0:fn.TEXT_DECODER)?200:0:gn,Tn=function(e,t){this.type=e,this.data=t},Rn=(En=function(e,t){return En=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},En(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}En(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),Dn=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Rn(t,e),t}(Error),xn={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var i=n/4294967296,s=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&i),t.setUint32(4,s),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),mn(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:yn(t,4),nsec:t.getUint32(0)};default:throw new Dn("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},An=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(xn)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>bn){var t=_n(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Sn(e,this.bytes,this.pos),this.pos+=t}else t=_n(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,i=0;i=55296&&s<=56319&&i>18&7|240,t[o++]=s>>12&63|128,t[o++]=s>>6&63|128):(t[o++]=s>>12&15|224,t[o++]=s>>6&63|128)}else t[o++]=s>>6&31|192;t[o++]=63&s|128}else t[o++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Pn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Cn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,o),o},e}(),Bn=function(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((o=(o=s.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return Bn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,i,s,a;return i=this,a=function(){var i,s,a,c,l,h,u,d;return Bn(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Ln(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof Fn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,u=l.pos,d=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Mn(h)," at ").concat(d," (").concat(u," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof s?o:new s((function(e){e(o)}))).then(n,r)}o((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var o,i=function(){var n,r,o,i,s,a,c,l,h;return Bn(this,(function(u){switch(u.label){case 0:n=t,r=-1,u.label=1;case 1:u.trys.push([1,13,14,19]),o=Ln(e),u.label=2;case 2:return[4,$n(o.next())];case 3:if((i=u.sent()).done)return[3,12];if(s=i.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(r=this.readArraySize(),n=!1,this.complete()),u.label=4;case 4:u.trys.push([4,9,,10]),u.label=5;case 5:return[4,$n(this.doDecodeSync())];case 6:return[4,u.sent()];case 7:return u.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=u.sent())instanceof Fn))throw a;return[3,10];case 10:this.totalPos+=this.pos,u.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=u.sent(),l={error:c},[3,19];case 14:return u.trys.push([14,,17,18]),i&&!i.done&&(h=o.return)?[4,$n(h.call(o))]:[3,16];case 15:u.sent(),u.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),s=[];return o={},a("next"),a("throw"),a("return"),o[Symbol.asyncIterator]=function(){return this},o;function a(e){i[e]&&(o[e]=function(t){return new Promise((function(n,r){s.push([e,t,n,r])>1||c(e,t)}))})}function c(e,t){try{(n=i[e](t)).value instanceof $n?Promise.resolve(n.value.v).then(l,h):u(s[0][2],n)}catch(e){u(s[0][3],e)}var n}function l(e){c("next",e)}function h(e){c("throw",e)}function u(e,t){e(t),s.shift(),s.length&&c(s[0][0],s[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new Dn("Unrecognized type byte: ".concat(Mn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var i=o[o.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;o.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new Dn("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new Dn("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}o.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new Dn("Unrecognized array type byte: ".concat(Mn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new Dn("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new Dn("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new Dn("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthkn?function(e,t,n){var r=e.subarray(t,t+n);return In.decode(r)}(this.bytes,o,e):Cn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new Dn("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw jn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new Dn("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=yn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class qn{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+s,o+s+a):n.subarray(o+s,o+s+a)),o=o+s+a}return t}}const Jn=new Uint8Array([145,It.Ping]);class Vn{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=Zt.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new Nn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Tt.instance);const r=qn.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case It.Invocation:return this._writeInvocation(e);case It.StreamInvocation:return this._writeStreamInvocation(e);case It.StreamItem:return this._writeStreamItem(e);case It.Completion:return this._writeCompletion(e);case It.Ping:return qn.write(Jn);case It.CancelInvocation:return this._writeCancelInvocation(e);case It.Close:return this._writeClose();case It.Ack:return this._writeAck(e);case It.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case It.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case It.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case It.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case It.Ping:return this._createPingMessage(n);case It.Close:return this._createCloseMessage(n);case It.Ack:return this._createAckMessage(n);case It.Sequence:return this._createSequenceMessage(n);default:return t.log(Et.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:It.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:It.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:It.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:It.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:It.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:It.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:It.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:It.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([It.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([It.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),qn.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([It.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([It.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),qn.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([It.StreamItem,e.headers||{},e.invocationId,e.item]);return qn.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([It.Completion,e.headers||{},e.invocationId,t,e.result])}return qn.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([It.CancelInvocation,e.headers||{},e.invocationId]);return qn.write(t.slice())}_writeClose(){const e=this._encoder.encode([It.Close,null]);return qn.write(e.slice())}_writeAck(e){const t=this._encoder.encode([It.Ack,e.sequenceId]);return qn.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([It.Sequence,e.sequenceId]);return qn.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const Kn="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,Xn=Kn?Kn.decode.bind(Kn):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}}else r.push(n);r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},Gn=Math.pow(2,32),Yn=Math.pow(2,21)-1;function Qn(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Zn(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function er(e,t){const n=Zn(e,t+4);if(n>Yn)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Gn+Zn(e,t)}class tr{constructor(e){this.batchData=e;const t=new ir(e);this.arrayRangeReader=new sr(e),this.arrayBuilderSegmentReader=new ar(e),this.diffReader=new nr(e),this.editReader=new rr(e,t),this.frameReader=new or(e,t)}updatedComponents(){return Qn(this.batchData,this.batchData.length-20)}referenceFrames(){return Qn(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Qn(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Qn(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Qn(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Qn(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return er(this.batchData,n)}}class nr{constructor(e){this.batchDataUint8=e}componentId(e){return Qn(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class rr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Qn(this.batchDataUint8,e)}siblingIndex(e){return Qn(this.batchDataUint8,e+4)}newTreeIndex(e){return Qn(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Qn(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Qn(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class or{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Qn(this.batchDataUint8,e)}subtreeLength(e){return Qn(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Qn(this.batchDataUint8,e+8)}elementName(e){const t=Qn(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Qn(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Qn(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return er(this.batchDataUint8,e+12)}}class ir{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Qn(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Qn(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const i=e[t+o];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(Ze.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(Ze.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(Ze.Debug,`Applying batch ${e}.`),function(e,t){const n=me[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),i=r.values(o),s=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class yr{constructor(t,n,r,o){this._renderingFailed=!1,this._disposed=!1,this._pausingState=new vr("pausing",!1,!1),this._resumingState=new vr("resuming",!1,!1),this._disconnectingState=new vr("disconnecting"),this._isFirstRender=!0,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new cr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e,t){return this._isFirstRender?(this._isFirstRender=!1,this._connection?.send("UpdateRootComponents",e,this._applicationState)):this._connection?.send("UpdateRootComponents",e,t)}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==kt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ae.getBaseURI(),Ae.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){const e=new Vn;e.name="blazorpack";const t=(new hn).withUrl("_blazor").withHubProtocol(e);this._options.configureSignalR(t);const n=t.build();n.on("JS.AttachComponent",((e,t)=>function(e,t,n){let r=me[e];r||(r=new de(e),me[e]=r),r.attachRootComponentToLogicalElement(n,t,!1)}(un.Server,this.resolveElement(t),e))),n.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),n.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),n.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),n.on("JS.SavePersistedState",((e,t,n)=>{if(!this._circuitId)throw new Error("Circuit host not initialized.");if(e!==this._circuitId)throw new Error(`Received persisted state for circuit ID '${e}', but the current circuit ID is '${this._circuitId}'.`);return this._persistedCircuitState={components:t,applicationState:n},!0})),n.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{n.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),n.on("JS.RenderBatch",(async(e,t)=>{this._logger.log(Et.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),this._componentManager.onAfterRenderBatch?.(un.Server)})),n.on("JS.EndUpdateRootComponents",(e=>{this._componentManager.onAfterUpdateRootComponents?.(e)})),n.on("JS.EndLocationChanging",Qe._internal.navigationManager.endLocationChanging),n.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=b.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return b.delete(e),t}(un.Server);const t=this._pausingState.isInprogress();t||this._pausingState.transitionTo(!0),this._disposed||this._renderingFailed||t||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),n.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),mr()}));try{await n.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;mr(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===Qt.WebSockets))?this._logger.log(Et.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===Qt.WebSockets))?this._logger.log(Et.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===Qt.LongPolling))&&this._logger.log(Et.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return n.connection?.features?.inherentKeepAlive&&this._logger.log(Et.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),n}async disconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish disconnecting..."),this._disconnectingState.currentProgress();try{this._disconnectingState.reset();const e=this._disconnectingState.currentProgress();return this._logger.log(Et.Trace,"Disconnecting the circuit..."),await this._connection.stop(),this._disconnectingState.complete(),e}catch(e){throw this._logger.log(Et.Error,`Failed to disconnect the circuit: ${e}`),this._disconnectingState.fail(e),e}}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===kt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(E(un.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}async pause(e){if(!this._circuitId)return this._logger.log(Et.Error,"Circuit host not initialized."),!1;if(this._connection.state!==kt.Connected)return this._logger.log(Et.Trace,"Pause can only be triggered on connected circuits."),!1;if(this._resumingState.isInprogress())return this._logger.log(Et.Trace,"Circuit is currently resuming..."),!1;if(this._pausingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish pausing..."),this._pausingState.currentProgress();if(!0===this._pausingState.lastValue())return this._logger.log(Et.Trace,"Circuit is already paused."),!0;this._pausingState.reset();const t=this._pausingState.currentProgress();try{this._logger.log(Et.Trace,"Pausing the circuit..."),this._options.reconnectionHandler?.onConnectionDown(this._options.reconnectionOptions,void 0,!0,e);const t=await this._connection.invoke("PauseCircuit");this._pausingState.complete(t)}catch(e){this._logger.log(Et.Error,`Failed to pause the circuit: ${e}`),this._pausingState.fail(e)}return await this.disconnect(),t}async resume(){if(!this._circuitId)throw this._logger.log(Et.Error,"Circuit host not initialized."),new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress()&&(this._logger.log(Et.Trace,"Circuit is disconnecting, cannot resume."),await this._disconnectingState.currentProgress()),this._pausingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish pausing..."),!1;if(!this._pausingState.lastValue())return this._logger.log(Et.Trace,"Circuit is not paused."),!1;if(this._connection.state!==kt.Connected&&(this._logger.log(Et.Trace,"Reestablishing SignalR connection..."),this._connection=await this.startConnection()),this._resumingState.isInprogress())return this._logger.log(Et.Trace,"Waiting for the circuit to finish resuming..."),this._resumingState.currentProgress();this._resumingState.reset();const e=this._resumingState.currentProgress();try{for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed();const t=this._persistedCircuitState;this._persistedCircuitState=void 0;const n=await this._connection.invoke("ResumeCircuit",this._circuitId,Ae.getBaseURI(),Ae.getLocationHref(),t?.components??"[]",t?.applicationState??"");if(!n)return this._resumingState.complete(!1),e;this._pausingState.transitionTo(!1),this._resumingState.complete(!0),this._circuitId=n,this._renderQueue=new cr(this._logger);for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return this._options.reconnectionHandler.onConnectionUp(),this._componentManager.onComponentReload?.(un.Server),e}catch(t){return this._logger.log(Et.Error,`Failed to resume the circuit: ${t}`),this._resumingState.fail(t),e}}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-i;i=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=p.get(e);if(t)return p.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=O(o,!0),s=V(i);t[L]=i,t[$]=e;const a=O(t);if(n){const e=V(a),r=Array.prototype.indexOf.call(s,a)+1;let o=null;for(;o!==n;){const n=s.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Et.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,this._connection?.stop();const e=this.getDisconnectFormData();fetch("_blazor/disconnect",{method:"POST",body:e});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class vr{constructor(e,t,n){this._stateName=e,this._resetValue=n,this._lastValue=t}reset(){if(this._promise)throw new Error(`Circuit state ${this._stateName} is already in progress`);const{promise:e,resolve:t,reject:n}=Promise.withResolvers();this._promise=e,this._resolve=t,this._reject=n,this._lastValue=this._resetValue}complete(e){if(!this._resolve)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._resolve;this._lastValue=e,this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}fail(e){if(!this._reject)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._reject;this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}isInprogress(){return!!this._promise}currentProgress(){if(!this.isInprogress())throw new Error(`Circuit state ${this._stateName} is not in progress`);return this._promise}transitionTo(e){if(this._promise)throw new Error(`Circuit state ${this._stateName} is in progress`);this._lastValue=e}lastValue(){return this._lastValue}}class _r{static{this.ReconnectOverlayClassName="components-reconnect-overlay"}static{this.ReconnectDialogClassName="components-reconnect-dialog"}static{this.ReconnectVisibleClassName="components-reconnect-visible"}static{this.RejoiningAnimationClassName="components-rejoining-animation"}static{this.AnimationRippleCount=2}constructor(e,t,n){this.document=t,this.logger=n,this.reconnect=!0,this.remote=!1,this.style=this.document.createElement("style"),this.style.innerHTML=_r.Css,this.overlay=this.document.createElement("div"),this.overlay.className=_r.ReconnectOverlayClassName,this.host=this.document.createElement("div"),this.host.id=e;const r=this.host.attachShadow({mode:"open"});this.dialog=t.createElement("div"),this.dialog.className=_r.ReconnectDialogClassName,r.appendChild(this.style),r.appendChild(this.overlay),this.rejoiningAnimation=t.createElement("div"),this.rejoiningAnimation.className=_r.RejoiningAnimationClassName;for(let e=0;e<_r.AnimationRippleCount;e++){const e=t.createElement("div");this.rejoiningAnimation.appendChild(e)}this.status=t.createElement("p"),this.status.innerHTML="",this.reloadButton=t.createElement("button"),this.reloadButton.style.display="none",this.reloadButton.innerHTML="Retry",this.reloadButton.addEventListener("click",this.retry.bind(this)),this.resumeButton=t.createElement("button"),this.resumeButton.style.display="none",this.resumeButton.innerHTML="Resume",this.resumeButton.addEventListener("click",this.resume.bind(this)),this.dialog.appendChild(this.rejoiningAnimation),this.dialog.appendChild(this.status),this.dialog.appendChild(this.reloadButton),this.dialog.appendChild(this.resumeButton),this.overlay.appendChild(this.dialog),this.retryWhenDocumentBecomesVisible=()=>{"visible"===this.document.visibilityState&&this.retry()}}show(e){this.document.contains(this.host)||this.document.body.appendChild(this.host),this.reconnect="reconnect"===e?.type,this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="block",this.status.innerHTML="Rejoining the server...",this.host.style.display="block",this.overlay.classList.add(_r.ReconnectVisibleClassName)}update(e){if(this.reconnect="reconnect"===e.type,this.reconnect){const{currentAttempt:t,secondsToNextAttempt:n}=e;if(1===t||0===n)this.status.innerHTML="Rejoining the server...";else{const e=1===n?"second":"seconds";this.status.innerHTML=`Rejoin failed... trying again in ${n} ${e}`}}else this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="none",this.status.innerHTML="The session has been paused by the server.",this.resumeButton.style.display="block"}hide(){this.host.style.display="none",this.overlay.classList.remove(_r.ReconnectVisibleClassName)}failed(){this.rejoiningAnimation.style.display="none",this.reconnect?(this.reloadButton.style.display="block",this.status.innerHTML="Failed to rejoin.
Please retry or reload the page.",this.document.addEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible)):(this.status.innerHTML="Failed to resume the session.
Please reload the page.",this.resumeButton.style.display="none",this.reloadButton.style.display="none")}rejected(){location.reload()}async retry(){this.document.removeEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible),this.show();try{await Qe.reconnect()||(this.update({type:"pause",remote:this.remote}),await Qe.resumeCircuit()||this.rejected())}catch(e){this.logger.log(Ze.Error,e),this.failed()}}async resume(){try{await Qe.resumeCircuit()||this.failed()}catch(e){this.logger.log(Ze.Error,e),this.failed()}}static{this.Css=`\n .${this.ReconnectOverlayClassName} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n display: none;\n overflow: hidden;\n animation: components-reconnect-fade-in;\n }\n\n .${this.ReconnectOverlayClassName}.${this.ReconnectVisibleClassName} {\n display: block;\n }\n\n .${this.ReconnectOverlayClassName}::before {\n content: '';\n background-color: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n animation: components-reconnect-fadeInOpacity 0.5s ease-in-out;\n opacity: 1;\n }\n\n .${this.ReconnectOverlayClassName} p {\n margin: 0;\n text-align: center;\n }\n\n .${this.ReconnectOverlayClassName} button {\n border: 0;\n background-color: #6b9ed2;\n color: white;\n padding: 4px 24px;\n border-radius: 4px;\n }\n\n .${this.ReconnectOverlayClassName} button:hover {\n background-color: #3b6ea2;\n }\n\n .${this.ReconnectOverlayClassName} button:active {\n background-color: #6b9ed2;\n }\n\n .${this.ReconnectDialogClassName} {\n position: relative;\n background-color: white;\n width: 20rem;\n margin: 20vh auto;\n padding: 2rem;\n border-radius: 0.5rem;\n box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n opacity: 0;\n animation: components-reconnect-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-fadeInOpacity 0.5s ease-out 0.3s;\n animation-fill-mode: forwards;\n z-index: 10001;\n }\n\n .${this.RejoiningAnimationClassName} {\n display: block;\n position: relative;\n width: 80px;\n height: 80px;\n }\n\n .${this.RejoiningAnimationClassName} div {\n position: absolute;\n border: 3px solid #0087ff;\n opacity: 1;\n border-radius: 50%;\n animation: ${this.RejoiningAnimationClassName} 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n }\n\n .${this.RejoiningAnimationClassName} div:nth-child(2) {\n animation-delay: -0.5s;\n }\n\n @keyframes ${this.RejoiningAnimationClassName} {\n 0% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 4.9% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 5% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n\n 100% {\n top: 0px;\n left: 0px;\n width: 80px;\n height: 80px;\n opacity: 0;\n }\n }\n\n @keyframes components-reconnect-fadeInOpacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes components-reconnect-slideUp {\n 0% {\n transform: translateY(30px) scale(0.95);\n }\n\n 100% {\n transform: translateY(0);\n }\n }\n `}}class wr{static{this.ShowClassName="components-reconnect-show"}static{this.HideClassName="components-reconnect-hide"}static{this.RetryingClassName="components-reconnect-retrying"}static{this.FailedClassName="components-reconnect-failed"}static{this.PausedClassName="components-reconnect-paused"}static{this.ResumeFailedClassName="components-reconnect-resume-failed"}static{this.RejectedClassName="components-reconnect-rejected"}static{this.MaxRetriesId="components-reconnect-max-retries"}static{this.CurrentAttemptId="components-reconnect-current-attempt"}static{this.SecondsToNextAttemptId="components-seconds-to-next-attempt"}static{this.ReconnectStateChangedEventName="components-reconnect-state-changed"}constructor(e,t,n){if(this.dialog=e,this.document=t,this.reconnect=!1,this.document=t,void 0!==n){const e=this.document.getElementById(wr.MaxRetriesId);e&&(e.innerText=n.toString())}}show(){this.removeClasses(),this.dialog.classList.add(wr.ShowClassName),this.dispatchReconnectStateChangedEvent({state:"show"})}update(e){if(this.reconnect="reconnect"===e.type,"reconnect"===e.type){const{currentAttempt:t,secondsToNextAttempt:n}=e,r=this.document.getElementById(wr.CurrentAttemptId);r&&(r.innerText=t.toString());const o=this.document.getElementById(wr.SecondsToNextAttemptId);o&&(o.innerText=n.toString()),t>1&&n>0&&this.dialog.classList.add(wr.RetryingClassName),this.dispatchReconnectStateChangedEvent({state:"retrying",currentAttempt:t,secondsToNextAttempt:n})}if("pause"===e.type){const t=e.remote;this.dialog.classList.remove(wr.ShowClassName,wr.RetryingClassName),this.dialog.classList.add(wr.PausedClassName),this.dispatchReconnectStateChangedEvent({state:"paused",remote:t})}}hide(){this.removeClasses(),this.dialog.classList.add(wr.HideClassName),this.dispatchReconnectStateChangedEvent({state:"hide"})}failed(){this.removeClasses(),this.reconnect?(this.dialog.classList.add(wr.FailedClassName),this.dispatchReconnectStateChangedEvent({state:"failed"})):(this.dialog.classList.add(wr.ResumeFailedClassName),this.dispatchReconnectStateChangedEvent({state:"resume-failed"}))}rejected(){this.removeClasses(),this.dialog.classList.add(wr.RejectedClassName),this.dispatchReconnectStateChangedEvent({state:"rejected"})}removeClasses(){this.dialog.classList.remove(wr.ShowClassName,wr.HideClassName,wr.RetryingClassName,wr.FailedClassName,wr.RejectedClassName,wr.PausedClassName,wr.ResumeFailedClassName)}dispatchReconnectStateChangedEvent(e){const t=new CustomEvent(wr.ReconnectStateChangedEventName,{detail:e});this.dialog.dispatchEvent(t)}}class br{constructor(e,t,n,r){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||Qe.reconnect,this._resumeCallback=r||Qe.resumeCircuit}onConnectionDown(e,t,n,r){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new wr(t,document,e.maxRetries):new _r(e.dialogId,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new Sr(e,this._logger,this._reconnectCallback,this._resumeCallback,this._reconnectionDisplay,n,r))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class Sr{static{this.MaximumFirstRetryInterval=3e3}constructor(e,t,n,r,o,i,s=!1){this.logger=t,this.reconnectCallback=n,this.resumeCallback=r,this.isGracefulPause=i,this.isRemote=s,this.isDisposed=!1,this.reconnectDisplay=o;const a={type:i?"pause":"reconnect",remote:this.isRemote,currentAttempt:0,secondsToNextAttempt:0};this.reconnectDisplay.show(a),this.isGracefulPause?this.reconnectDisplay.update({type:"pause",remote:this.isRemote}):this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;void 0===e.maxRetries||tSr.MaximumFirstRetryInterval?Sr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.runTimer(n,1e3,(e=>{this.reconnectDisplay.update({type:"reconnect",currentAttempt:t+1,secondsToNextAttempt:Math.round(e/1e3)})})),this.isDisposed)break;try{if(!await this.reconnectCallback()){if(this.reconnectDisplay.update({type:"pause",remote:!0}),await this.resumeCallback())return;return void this.reconnectDisplay.failed()}return}catch(e){this.logger.log(Ze.Error,e)}}this.reconnectDisplay.failed()}async runTimer(e,t,n){if(e<=0)return void n(0);let r,o,i=Date.now();n(e);const s=()=>{if(this.isDisposed)return void o();const a=Date.now(),c=a-i;i=a;const l=Math.max(1,Math.floor(c/t)),h=t*l;if((e-=h){"visible"===document.visibilityState&&(clearTimeout(r),n(0),o())};r=setTimeout(s,t),document.addEventListener("visibilitychange",a),await new Promise((e=>o=e)),document.removeEventListener("visibilitychange",a)}}class Cr{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){let r;var o;n.moduleExports||(o=n.name,r=new URL(o,document.baseURI).toString(),n.moduleExports=await import(r));const i=n.moduleExports;if(void 0!==i){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:o,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=i;let h=n;e.webRendererId===un.Server&&c&&(h=c),e.webRendererId===un.WebAssembly&&o&&(h=o);let u=r;return e.webRendererId===un.Server&&l&&(u=l),e.webRendererId===un.WebAssembly&&a&&(u=a),s(e,h,u,t)}return function(e,t,n){const o=n[0],{beforeStart:i,afterStarted:a,beforeWebStart:c,afterWebStarted:l,beforeWebAssemblyStart:h,afterWebAssemblyStarted:u,beforeServerStart:d,afterServerStarted:p}=t,f=!(c||l||h||u||d||p||!i&&!a),g=f&&o.enableClassicInitializers;if(f&&!o.enableClassicInitializers)e.logger?.log(Ze.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. Use 'before(Web|WebAssembly|Server)Start' and 'after(Web|WebAssembly|Server)Started' instead.`);else if(g)return s(e,i,a,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(o),h&&o.webAssembly.initializers.beforeStart.push(h),u&&o.webAssembly.initializers.afterStarted.push(u),d&&o.circuit.initializers.beforeStart.push(d),p&&o.circuit.initializers.afterStarted.push(p),l&&e.afterStartedCallbacks.push(l),c)return c(o)}(e,i,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,C.get(n)?.[1]);var n;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Er(e){if(void 0!==fr)throw new Error("Blazor Server has already started.");return fr=new Promise(Ir.bind(null,e)),fr}async function Ir(e,t,n){await lr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Cr(!1,void 0,e.initializers.afterStarted,un.Server);const t=await fetch("_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=(await t.json()).map((e=>({name:e}))),r=new Cr(!0,void 0,void 0,un.Server);return await r.importInitializersAsync(n,[e]),r}(dr);if(hr=ot(document)||"",pr=new nt(dr.logLevel),ur=new yr(e,hr,dr,pr),pr.log(Ze.Information,"Starting up Blazor server-side application."),Qe.reconnect=async()=>!(ur.didRenderingFail()||!await ur.reconnect()&&(pr.log(Ze.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.pauseCircuit=async()=>!(ur.didRenderingFail()||!await ur.pause()&&(pr.log(Ze.Information,"Pause attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.resumeCircuit=async()=>!(ur.didRenderingFail()||!await ur.resume()&&(pr.log(Ze.Information,"Resume attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),Qe.defaultReconnectionHandler=new br(pr),dr.reconnectionHandler=dr.reconnectionHandler||Qe.defaultReconnectionHandler,Qe._internal.navigationManager.listenForNavigationEvents(un.Server,((e,t,n)=>ur.sendLocationChanged(e,t,n)),((e,t,n,r)=>ur.sendLocationChanging(e,t,n,r))),Qe._internal.forceCloseConnection=()=>ur.disconnect(),Qe._internal.sendJSDataStream=(e,t,n)=>ur.sendJsDataStream(e,t,n),!await ur.start())return pr.log(Ze.Error,"Failed to start the circuit."),void t();const o=()=>{ur.sendDisconnectBeacon()};Qe.disconnect=o,window.addEventListener("pagehide",o,{capture:!1,once:!0}),pr.log(Ze.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(Qe),t()}class kr{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Tr{constructor(){this._eventListeners=new Map}static create(e){const t=new Tr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){this._eventListeners.get(e)?.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Rr=!1;function Dr(e){if(Rr)throw new Error("Blazor has already started.");Rr=!0;const t=et(e);!function(e){if(dr)throw new Error("Circuit options have already been configured.");lr=async function(e){const t=await e;dr=et(t)}(e)}(Promise.resolve(t||{})),Tr.create(Qe);const n=function(e){return st(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Er(new kr(n))}Qe.start=Dr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Dr()}(); -//# sourceMappingURL=blazor.server.js.map diff --git a/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js b/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js deleted file mode 100644 index cc7ba3db..00000000 --- a/Oqtane.Application/Server/wwwroot/_framework/blazor.web.js +++ /dev/null @@ -1 +0,0 @@ -!function(){"use strict";var e;let t;var n,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c,l;class h{constructor(e){this._jsObject=e,this._cachedHandlers=new Map}resolveInvocationHandler(e,t){var n;const o=null===(n=this._cachedHandlers.get(e))||void 0===n?void 0:n[t];if(o)return o;const[r,i]=E(this._jsObject,e),s=function(e,t,n,o){switch(n){case l.FunctionCall:const n=e[t];if(n instanceof Function)return n.bind(e);throw new Error(`The value '${o}' is not a function.`);case l.ConstructorCall:const r=e[t];if(r instanceof Function){const t=r.bind(e);return(...e)=>new t(...e)}throw new Error(`The value '${o}' is not a function.`);case l.GetValue:if(!function(e,t){if(!(t in e))return!1;for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!!n.hasOwnProperty("value")||n.hasOwnProperty("get")&&"function"==typeof n.get;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${o}' is not defined or is not readable.`);return()=>e[t];case l.SetValue:if(!function(e,t){if(!(t in e))return Object.isExtensible(e);for(;void 0!==e;){const n=Object.getOwnPropertyDescriptor(e,t);if(n)return!(!n.hasOwnProperty("value")||!n.writable)||n.hasOwnProperty("set")&&"function"==typeof n.set;e=Object.getPrototypeOf(e)}return!1}(e,t))throw new Error(`The property '${o}' is not writable.`);return(...n)=>e[t]=n[0]}}(r,i,t,e);return this.addHandlerToCache(e,s,t),s}getWrappedObject(){return this._jsObject}addHandlerToCache(e,t,n){const o=this._cachedHandlers.get(e);o?o[n]=t:this._cachedHandlers.set(e,{[n]:t})}}!function(e){e[e.FunctionCall=1]="FunctionCall",e[e.ConstructorCall=2]="ConstructorCall",e[e.GetValue=3]="GetValue",e[e.SetValue=4]="SetValue"}(l=e.JSCallType||(e.JSCallType={}));const d=0,u={[d]:new h(window)};u[0]._cachedHandlers.set("import",{[l.FunctionCall]:e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substring(2),document.baseURI).toString()),import(e))});let p,f=1;function g(e){t.push(e)}function m(e){if(null==e)return{[n]:-1};if(e&&("object"==typeof e||e instanceof Function)){u[f]=new h(e);const t={[n]:f};return f++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function y(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=m(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function v(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function w(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new b(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=g,e.invokeMethod=function(e,t,...n){return w().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return w().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=y,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&-1!==t&&C(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(p=e.JSCallResultType||(e.JSCallResultType={}));class b{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o,r){const i=T(this.processJSCall(o,e,r,t),n);return null==i?null:D(this,i)}async beginInvokeJSFromDotNet(e,t,n,o,r,i){try{const s=this.processJSCall(r,t,i,n);if(e){const t=D(this,[e,!0,T(await s,o)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)}}catch(t){if(e){const n=JSON.stringify([e,!1,_(t)]);this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,n)}}}processJSCall(e,t,n,o){var r;const i=null!==(r=v(this,o))&&void 0!==r?r:[];return S(t,e,n)(...i)}endInvokeDotNetFromJS(e,t,n){const o=t?v(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=D(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?v(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=D(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new R;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new R;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function _(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function S(e,t,n){const o=u[t];if(o)return o.resolveInvocationHandler(e,null!=n?n:l.FunctionCall);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function C(e){delete u[e]}function E(e,t){const n=t.split(".");let o=e;for(let e=0;econsole.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=I,g((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new I(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=u[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new k(n)}}return t}));class k{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class R{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function T(e,t){switch(t){case p.Default:return e;case p.JSObjectReference:return m(e);case p.JSStreamReference:return y(e);case p.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function D(e,t){A=0,c=e;const n=JSON.stringify(t,N);return c=void 0,n}function N(e,t){if(t instanceof I)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[r]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(n||(n={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return t?.browserEventName||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type,isComposing:t.isComposing};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,y=0;const v={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++y).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),I.get(t)?.[0]?.(),function(e){for(const t of E)t(e)}(t)}function R(e){return C.has(e)}function T(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const N=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{static{this.nextEventDelegatorId=0}constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new L(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}removeListenersForElement(e){const t=this.getEventHandlerInfosForElement(e,!1);if(t){for(const e of t.enumerateHandlers())this.eventInfoStore.remove(e.eventHandlerId);delete e[this.eventsCollectionKey]}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){const o=this.getEventHandlerInfosForElement(e,!0),r=o.stopPropagation(t);o.stopPropagation(t,n),!r&&n?this.eventInfoStore.addGlobalListener(t):r&&!n&&this.eventInfoStore.decrementCountByEventName(t)}setPreventDefault(e,t,n){const o=this.getEventHandlerInfosForElement(e,!0),r=o.preventDefault(t);o.preventDefault(t,n),!r&&n?this.eventInfoStore.addActiveGlobalListener(t):r&&!n&&this.eventInfoStore.decrementCountByEventName(t)}onGlobalEvent(e){if(!(e.target instanceof Element))return;if(!R(this.browserRendererId))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(N,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=n?.createEventArgs?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),T(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}class L{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(N,e);document.addEventListener(e,this.globalListener,t)}}addActiveGlobalListener(e){e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e)?(this.countByEventName[e]++,document.removeEventListener(e,this.globalListener)):this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(N,e);document.addEventListener(e,this.globalListener,{capture:t,passive:!1})}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);this.decrementCountByEventName(n)}return t}decrementCountByEventName(e){0==--this.countByEventName[e]&&(delete this.countByEventName[e],document.removeEventListener(e,this.globalListener))}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}*enumerateHandlers(){for(const e in this.handlers)Object.prototype.hasOwnProperty.call(this.handlers,e)&&(yield this.handlers[e])}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=j(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=j(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function j(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=j(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function W(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if(t?.length>0){const t=re(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=V(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function V(e){return e[F]||null}function K(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=ne(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(V(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function*ee(e){const t=Y(e);for(const e of t)yield*ee(e);yield e}function te(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=re(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):oe(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function ne(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function oe(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):oe(e,V(t))}}}function re(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=V(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:re(t)}}function ie(e){return`_bl_${e}`}const se="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,se)&&"string"==typeof t[se]?function(e){const t=`[${ie(e)}]`;return document.querySelector(t)}(t[se]):t));const ae="_blazorDeferredValue";function ce(e){e instanceof HTMLOptionElement?ue(e):ae in e&&de(e,e[ae])}function le(e){return"select-multiple"===e.type}function he(e,t){e.value=t||""}function de(e,t){e instanceof HTMLSelectElement?le(e)?function(e,t){t||=[];for(let n=0;n{ze()&&Le(e,(e=>{et(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(be(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),we(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),ge.add(t)}updateComponent(e,t,n,o){const r=this.childComponentLocations[t];if(!r)throw new Error(`No element is currently associated with component ${t}`);ge.delete(r)&&(this.detachEventHandlersFromElement(r),W(r),r instanceof Comment&&(r.textContent="!"));const i=ne(r)?.getRootNode(),s=i&&i.activeElement;this.applyEdits(e,t,r,0,n,o),s instanceof HTMLElement&&i&&i.activeElement!==s&&s.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];we(t,!1),!0===t[ye]?ge.add(t):W(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}detachEventHandlersFromElement(e){for(const t of ee(e))t instanceof Element&&this.eventDelegator.removeListenersForElement(t)}applyEdits(e,t,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),pe.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Ce(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{it(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ie&&Ie!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ie=e},setHasLocationChangingListeners:function(e,t){const n=Xe.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ye&&e===Ke&&(Ye(t),Ye=null)},navigateTo:function(e,t){Ze(e,t,!0)},refresh:function(e){!e&&He()?je(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:$e};function Ze(e,t,n=!1){const o=We(e);!t.forceLoad&&Ue(o)?ct()?et(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):je(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function et(e,t,n,o=void 0,r=!1){if(ot(),Be(location.href,e))return tt(e,n,o),void Fe(e);const i=at();(r||!i?.hasLocationChangingEventListeners||await rt(e,o,t,i))&&(Oe(e,location.href)||Pe(),tt(e,n,o),await it(t))}function tt(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ve},"",e):(Ve++,history.pushState({userState:n,_index:Ve},"",e))}function nt(e){return new Promise((t=>{const n=Ge;Ge=()=>{Ge=n,t()},history.go(e)}))}function ot(){Ye&&(Ye(!1),Ye=null)}function rt(e,t,n,o){return new Promise((r=>{ot(),Ke++,Ye=r,o.locationChanging(Ke,e,t,n)}))}async function it(e,t){const n=t??location.href;await Promise.all(Array.from(Xe,(async([t,o])=>{R(t)&&await o.locationChanged(n,history.state?.userState,e)})))}async function st(e){Ge&&ct()&&await Ge(e),Ve=history.state?._index??0}function at(){const e=qe();if(void 0!==e)return Xe.get(e)}function ct(){return ze()||!He()}const lt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus({preventScroll:!0}))}},ht={init:function(e,t,n,o=50){const r=ut(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const r=i.getBoundingClientRect().height,s=o.rootBounds?.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,r,s):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,r,s)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=pt(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=pt(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},dt=Symbol();function ut(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:ut(e.parentElement):null}function pt(e){const t=e._callDispatcher,n=e._id;return t[dt]??={},{observersByDotNetObjectId:t[dt],id:n}}const ft={getAndRemoveExistingTitle:function(){const e=document.head?document.head.getElementsByTagName("title"):[];if(0===e.length)return null;let t=null;for(let n=e.length-1;n>=0;n--){const o=e[n],r=o.previousSibling;r instanceof Comment&&null!==V(r)||(null===t&&(t=o.textContent),o.parentNode?.removeChild(o))}return t}},gt={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=mt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){const t=Math.min(1,o/s.width),i=Math.min(1,r/s.height),a=Math.min(t,i),c=document.createElement("canvas");c.width=Math.round(s.width*a),c.height=Math.round(s.height*a),c.getContext("2d")?.drawImage(s,0,0,c.width,c.height),c.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:a?.size||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return mt(e,t).blob}};function mt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const yt=new Set,vt={enableNavigationPrompt:function(e){0===yt.size&&window.addEventListener("beforeunload",wt),yt.add(e)},disableNavigationPrompt:function(e){yt.delete(e),0===yt.size&&window.removeEventListener("beforeunload",wt)}};function wt(e){e.preventDefault(),e.returnValue=!0}async function bt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const _t=new Map,St={navigateTo:function(e,t,n=!1){Ze(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:v,runtime:{},_internal:{navigationManager:Qe,domWrapper:lt,Virtualize:ht,PageTitle:ft,InputFile:gt,NavigationLock:vt,getJSDataStreamChunk:bt,attachWebRendererInterop:k}};var Ct;window.Blazor=St,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(Ct||(Ct={})),class e{static{this.instance=new e}log(e,t){}};let Et=class{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${Ct[e]}: ${t}`;switch(e){case Ct.Critical:case Ct.Error:console.error(n);break;case Ct.Warning:console.warn(n);break;case Ct.Information:console.info(n);break;default:console.log(n)}}}};function It(e,t){switch(t){case"webassembly":return Pt(e,"webassembly");case"server":return function(e){return Pt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Pt(e,"auto")}}const kt=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Rt=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Tt=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/,At=/^\s*Blazor-WebAssembly:[^{]*(?.*)$/;function Dt(e){return xt(e,kt)}function Nt(e){return xt(e,Rt)}function xt(e,t,n="state"){if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",r=t.exec(o),i=r&&r.groups&&r.groups[n];return i&&e.parentNode?.removeChild(e),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function Lt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Mt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Mt.exec(e.textContent),r=t&&t[1];if(r)return Ft(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Ot(o=s),{...o,uniqueId:Ut++,start:r,end:i};case"server":return function(e,t,n){return Bt(e),{...e,uniqueId:Ut++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return Bt(e),Ot(e),{...e,uniqueId:Ut++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Ut=0;function Bt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Ot(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Ft(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class $t{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substring(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function an(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function cn(e,t,n,o,r,i){const s={},[a,c]=dn();s[a]=c,e.log(Zt.Trace,`(${t} transport) sending data. ${sn(r,i.logMessageContent)}.`);const l=an(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Zt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class ln{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class hn{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Zt[e]}: ${t}`;switch(e){case Zt.Critical:case Zt.Error:this.out.error(n);break;case Zt.Warning:this.out.warn(n);break;case Zt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function dn(){return["X-SignalR-User-Agent",un("10.0.0","","Browser",void 0)]}function un(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function pn(e){return e.stack?e.stack:e.message?e.message:`${e}`}class fn extends Qt{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._jar=new(e("tough-cookie").CookieJar),"undefined"==typeof fetch?this._fetchType=e("node-fetch"):this._fetchType=fetch,this._fetchType=e("fetch-cookie")(this._fetchType,this._jar)}else this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e="function"==typeof __webpack_require__?__non_webpack_require__:require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new qt;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new qt});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Zt.Warning,"Timeout from HTTP request."),n=new zt}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},an(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Zt.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await gn(o,"text");throw new Wt(e||o.statusText,o.status)}const i=gn(o,e.responseType),s=await i;return new Yt(o.status,o.statusText,s)}getCookieString(e){return""}}function gn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class mn extends Qt{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new qt):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(an(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new qt)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new Yt(o.status,o.statusText,o.response||o.responseText)):n(new Wt(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Zt.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new Wt(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Zt.Warning,"Timeout from HTTP request."),n(new zt)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class yn extends Qt{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new fn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new mn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new qt):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}class vn{static write(e){return`${e}${vn.RecordSeparator}`}static parse(e){if(e[e.length-1]!==vn.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(vn.RecordSeparator);return t.pop(),t}}vn.RecordSeparatorCode=30,vn.RecordSeparator=String.fromCharCode(vn.RecordSeparatorCode);class wn{writeHandshakeRequest(e){return vn.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(an(e)){const o=new Uint8Array(e),r=o.indexOf(vn.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(vn.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=vn.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(en||(en={}));class bn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new ln(this,e)}}class _n{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};an(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new Sn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:en.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case en.Invocation:case en.StreamItem:case en.Completion:case en.StreamInvocation:case en.CancelInvocation:return!0;case en.Close:case en.Sequence:case en.Ping:case en.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:en.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Sn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(tn||(tn={}));class Cn{static create(e,t,n,o,r,i,s){return new Cn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Zt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},on.isRequired(e,"connection"),on.isRequired(t,"logger"),on.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new wn,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=tn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:en.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==tn.Disconnected&&this._connectionState!==tn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==tn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=tn.Connecting,this._logger.log(Zt.Debug,"Starting HubConnection.");try{await this._startInternal(),rn.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=tn.Connected,this._connectionStarted=!0,this._logger.log(Zt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=tn.Disconnected,this._logger.log(Zt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Zt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Zt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new _n(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Zt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===tn.Disconnected)return this._logger.log(Zt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===tn.Disconnecting)return this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=tn.Disconnecting,this._logger.log(Zt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Zt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===tn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new qt("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new bn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===en.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===en.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case en.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(Zt.Error,`Invoke client method threw error: ${pn(e)}`)}));break;case en.StreamItem:case en.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===en.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Zt.Error,`Stream callback threw error: ${pn(e)}`)}}break}case en.Ping:break;case en.Close:{this._logger.log(Zt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case en.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case en.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Zt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Zt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Zt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Zt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!this.connection.features||!this.connection.features.inherentKeepAlive){this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds);let e=this._nextKeepAlive-(new Date).getTime();if(e<0)return void(this._connectionState===tn.Connected&&this._trySendPingMessage());void 0===this._pingServerHandle&&(e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{this._connectionState===tn.Connected&&await this._trySendPingMessage()}),e))}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Zt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Zt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Zt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Zt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Zt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Zt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Zt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new qt("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===tn.Disconnecting?this._completeClose(e):this._connectionState===tn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===tn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=tn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),rn.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Zt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n,0,o);if(null===r)return this._logger.log(Zt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=tn.Reconnecting,e?this._logger.log(Zt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Zt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Zt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==tn.Reconnecting)return void this._logger.log(Zt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Zt.Information,`Reconnect attempt number ${n+1} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==tn.Reconnecting)return void this._logger.log(Zt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=tn.Connected,this._logger.log(Zt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Zt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Zt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==tn.Reconnecting)return this._logger.log(Zt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===tn.Disconnecting&&this._completeClose());n++,o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n,Date.now()-t,o)}}this._logger.log(Zt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Zt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Zt.Error,`Stream 'error' callback called with '${e}' threw error: ${pn(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{target:e,arguments:t,streamIds:o,type:en.Invocation}:{target:e,arguments:t,type:en.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{target:e,arguments:t,invocationId:n.toString(),streamIds:o,type:en.Invocation}:{target:e,arguments:t,invocationId:n.toString(),type:en.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[kn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[kn.Authorization]&&delete e.headers[kn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}var Tn,An;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(Tn||(Tn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(An||(An={}));let Dn=class{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}};class Nn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Dn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._url=e,this._logger.log(Zt.Trace,"(LongPolling transport) Connecting."),t===An.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=dn(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===An.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Zt.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Zt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Wt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Zt.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Zt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Zt.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new Wt(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Zt.Trace,`(LongPolling transport) data received. ${sn(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Zt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof zt?this._logger.log(Zt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Zt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Zt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?cn(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Zt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Zt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=dn();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof Wt&&(404===r.statusCode?this._logger.log(Zt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Zt.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Zt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Zt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Zt.Trace,e),this.onclose(this._closeError)}}}class xn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._logger.log(Zt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===An.Text){if(rn.isBrowser||rn.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=dn();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Zt.Trace,`(SSE transport) data received. ${sn(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Zt.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?cn(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Pn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return on.isRequired(e,"url"),on.isRequired(t,"transferFormat"),on.isIn(t,An,"transferFormat"),this._logger.log(Zt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(rn.isReactNative){const t={},[o,r]=dn();t[o]=r,n&&(t[kn.Authorization]=`Bearer ${n}`),s&&(t[kn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===An.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Zt.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Zt.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Zt.Trace,`(WebSockets transport) data received. ${sn(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Zt.Trace,`(WebSockets transport) sending data. ${sn(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Zt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class Mn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,on.isRequired(e,"url"),this._logger=function(e){return void 0===e?new hn(Zt.Information):null===e?nn.instance:void 0!==e.log?e:new hn(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new Rn(t.httpClient||new yn(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||An.Binary,on.isIn(e,An,"transferFormat"),this._logger.log(Zt.Debug,`Starting connection with transfer format '${An[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Zt.Error,e),await this._stopPromise,Promise.reject(new qt(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Zt.Error,e),Promise.reject(new qt(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Ln(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Zt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Zt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Zt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==Tn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(Tn.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new qt("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Nn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Zt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Zt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=dn();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Zt.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Xt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Wt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Zt.Error,t),Promise.reject(new Xt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Zt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Zt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new Kt(`${n.transport} failed: ${e}`,Tn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Zt.Debug,e),Promise.reject(new qt(e))}}}}return i.length>0?Promise.reject(new Gt(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case Tn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case Tn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new xn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case Tn.LongPolling:return new Nn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=Tn[e.transport];if(null==r)return this._logger.log(Zt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||!!(t&e)}(t,r))return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it was disabled by the client.`),new Vt(`'${Tn[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>An[e])).indexOf(n)>=0))return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it does not support the requested transfer format '${An[n]}'.`),new Error(`'${Tn[r]}' does not support ${An[n]}.`);if(r===Tn.WebSockets&&!this._options.WebSocket||r===Tn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Zt.Debug,`Skipping transport '${Tn[r]}' because it is not supported in your environment.'`),new Jt(`'${Tn[r]}' is not supported in your environment.`,r);this._logger.log(Zt.Debug,`Selecting transport '${Tn[r]}'.`);try{return this.features.reconnect=r===Tn.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Zt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Zt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Zt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Zt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Zt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Zt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Zt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!rn.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Zt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Ln{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Un,this._transportResult=new Un,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Un),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Un;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Ln._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Un{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Bn{constructor(){this.name="json",this.version=2,this.transferFormat=An.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=nn.instance);const n=vn.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case en.Invocation:this._isInvocationMessage(n);break;case en.StreamItem:this._isStreamItemMessage(n);break;case en.Completion:this._isCompletionMessage(n);break;case en.Ping:case en.Close:break;case en.Ack:this._isAckMessage(n);break;case en.Sequence:this._isSequenceMessage(n);break;default:t.log(Zt.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return vn.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const On={trace:Zt.Trace,debug:Zt.Debug,info:Zt.Information,information:Zt.Information,warn:Zt.Warning,warning:Zt.Warning,error:Zt.Error,critical:Zt.Critical,none:Zt.None};class Fn{configureLogging(e){if(on.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=On[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new hn(t)}else this.logger=new hn(e);return this}withUrl(e,t){return on.isRequired(e,"url"),on.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return on.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new In(e):this.reconnectPolicy=e:this.reconnectPolicy=new In,this}withServerTimeout(e){return on.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return on.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new Mn(this.url,e);return Cn.create(t,this.logger||nn.instance,this.protocol||new Bn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var $n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}($n||($n={}));var Hn,jn,Wn,zn=4294967295;function qn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function Jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Vn=("undefined"==typeof process||"never"!==(null===(Hn=null===process||void 0===process?void 0:process.env)||void 0===Hn?void 0:Hn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Kn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Zn,eo=Vn?new TextDecoder:null,to=Vn?"undefined"!=typeof process&&"force"!==(null===(Wn=null===process||void 0===process?void 0:process.env)||void 0===Wn?void 0:Wn.TEXT_DECODER)?200:0:zn,no=function(e,t){this.type=e,this.data=t},oo=(Zn=function(e,t){return Zn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Zn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Zn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),ro=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return oo(t,e),t}(Error),io={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),qn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:Jn(t,4),nsec:t.getUint32(0)};default:throw new ro("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},so=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(io)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Gn){var t=Kn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Yn(e,this.bytes,this.pos),this.pos+=t}else t=Kn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i=55296&&s<=56319&&i>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128):(t[r++]=s>>12&15|224,t[r++]=s>>6&63|128)}else t[r++]=s>>6&31|192;t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ao(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Qn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),uo=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return uo(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,a=function(){var i,s,a,c,l,h,d,u;return uo(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=po(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof yo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(lo(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=function(){var n,o,r,i,s,a,c,l,h;return uo(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=po(e),d.label=2;case 2:return[4,fo(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,fo(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof yo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,fo(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),s=[];return r={},a("next"),a("throw"),a("return"),r[Symbol.asyncIterator]=function(){return this},r;function a(e){i[e]&&(r[e]=function(t){return new Promise((function(n,o){s.push([e,t,n,o])>1||c(e,t)}))})}function c(e,t){try{(n=i[e](t)).value instanceof fo?Promise.resolve(n.value.v).then(l,h):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function l(e){c("next",e)}function h(e){c("throw",e)}function d(e,t){e(t),s.shift(),s.length&&c(s[0][0],s[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new ro("Unrecognized type byte: ".concat(lo(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new ro("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new ro("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new ro("Unrecognized array type byte: ".concat(lo(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new ro("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new ro("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new ro("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthto?function(e,t,n){var o=e.subarray(t,t+n);return eo.decode(o)}(this.bytes,r,e):Qn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new ro("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw vo;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new ro("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=Jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class _o{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const So=new Uint8Array([145,en.Ping]);class Co{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=An.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new co(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new bo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=nn.instance);const o=_o.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case en.Invocation:return this._writeInvocation(e);case en.StreamInvocation:return this._writeStreamInvocation(e);case en.StreamItem:return this._writeStreamItem(e);case en.Completion:return this._writeCompletion(e);case en.Ping:return _o.write(So);case en.CancelInvocation:return this._writeCancelInvocation(e);case en.Close:return this._writeClose();case en.Ack:return this._writeAck(e);case en.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case en.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case en.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case en.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case en.Ping:return this._createPingMessage(n);case en.Close:return this._createCloseMessage(n);case en.Ack:return this._createAckMessage(n);case en.Sequence:return this._createSequenceMessage(n);default:return t.log(Zt.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:en.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:en.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:en.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:en.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:en.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:en.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:en.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:en.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([en.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([en.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),_o.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([en.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([en.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),_o.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([en.StreamItem,e.headers||{},e.invocationId,e.item]);return _o.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([en.Completion,e.headers||{},e.invocationId,t,e.result])}return _o.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([en.CancelInvocation,e.headers||{},e.invocationId]);return _o.write(t.slice())}_writeClose(){const e=this._encoder.encode([en.Close,null]);return _o.write(e.slice())}_writeAck(e){const t=this._encoder.encode([en.Ack,e.sequenceId]);return _o.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([en.Sequence,e.sequenceId]);return _o.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const Eo="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,Io=Eo?Eo.decode.bind(Eo):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}}else o.push(n);o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},ko=Math.pow(2,32),Ro=Math.pow(2,21)-1;function To(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Ao(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function Do(e,t){const n=Ao(e,t+4);if(n>Ro)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*ko+Ao(e,t)}class No{constructor(e){this.batchData=e;const t=new Lo(e);this.arrayRangeReader=new Uo(e),this.arrayBuilderSegmentReader=new Bo(e),this.diffReader=new xo(e),this.editReader=new Po(e,t),this.frameReader=new Mo(e,t)}updatedComponents(){return To(this.batchData,this.batchData.length-20)}referenceFrames(){return To(this.batchData,this.batchData.length-16)}disposedComponentIds(){return To(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return To(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return To(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return To(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return Do(this.batchData,n)}}class xo{constructor(e){this.batchDataUint8=e}componentId(e){return To(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Po{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return To(this.batchDataUint8,e)}siblingIndex(e){return To(this.batchDataUint8,e+4)}newTreeIndex(e){return To(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return To(this.batchDataUint8,e+8)}removedAttributeName(e){const t=To(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class Mo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return To(this.batchDataUint8,e)}subtreeLength(e){return To(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return To(this.batchDataUint8,e+8)}elementName(e){const t=To(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=To(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=To(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return Do(this.batchDataUint8,e+12)}}class Lo{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=To(e,e.length-4)}readString(e){if(-1===e)return null;{const n=To(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(Ct.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(Ct.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(Ct.Debug,`Applying batch ${e}.`),xe($n.Server,new No(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(Ct.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(Ct.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Fo=!1;function $o(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Fo||(Fo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Ho{constructor(t,n,o,r){this._renderingFailed=!1,this._disposed=!1,this._pausingState=new jo("pausing",!1,!1),this._resumingState=new jo("resuming",!1,!1),this._disconnectingState=new jo("disconnecting"),this._isFirstRender=!0,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Oo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e,t){return this._isFirstRender?(this._isFirstRender=!1,this._connection?.send("UpdateRootComponents",e,this._applicationState)):this._connection?.send("UpdateRootComponents",e,t)}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==tn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ht(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Qe.getBaseURI(),Qe.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){const e=new Co;e.name="blazorpack";const t=(new Fn).withUrl("_blazor").withHubProtocol(e);this._options.configureSignalR(t);const n=t.build();n.on("JS.AttachComponent",((e,t)=>De($n.Server,this.resolveElement(t),e,!1))),n.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),n.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),n.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),n.on("JS.SavePersistedState",((e,t,n)=>{if(!this._circuitId)throw new Error("Circuit host not initialized.");if(e!==this._circuitId)throw new Error(`Received persisted state for circuit ID '${e}', but the current circuit ID is '${this._circuitId}'.`);return this._persistedCircuitState={components:t,applicationState:n},!0})),n.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{n.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),n.on("JS.RenderBatch",(async(e,t)=>{this._logger.log(Zt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),this._componentManager.onAfterRenderBatch?.($n.Server)})),n.on("JS.EndUpdateRootComponents",(e=>{this._componentManager.onAfterUpdateRootComponents?.(e)})),n.on("JS.EndLocationChanging",St._internal.navigationManager.endLocationChanging),n.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}($n.Server);const t=this._pausingState.isInprogress();t||this._pausingState.transitionTo(!0),this._disposed||this._renderingFailed||t||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),n.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),$o()}));try{await n.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;$o(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===Tn.WebSockets))?this._logger.log(Zt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===Tn.WebSockets))?this._logger.log(Zt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===Tn.LongPolling))&&this._logger.log(Zt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return n.connection?.features?.inherentKeepAlive&&this._logger.log(Zt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),n}async disconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish disconnecting..."),this._disconnectingState.currentProgress();try{this._disconnectingState.reset();const e=this._disconnectingState.currentProgress();return this._logger.log(Zt.Trace,"Disconnecting the circuit..."),await this._connection.stop(),this._disconnectingState.complete(),e}catch(e){throw this._logger.log(Zt.Error,`Failed to disconnect the circuit: ${e}`),this._disconnectingState.fail(e),e}}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===tn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k($n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}async pause(e){if(!this._circuitId)return this._logger.log(Zt.Error,"Circuit host not initialized."),!1;if(this._connection.state!==tn.Connected)return this._logger.log(Zt.Trace,"Pause can only be triggered on connected circuits."),!1;if(this._resumingState.isInprogress())return this._logger.log(Zt.Trace,"Circuit is currently resuming..."),!1;if(this._pausingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish pausing..."),this._pausingState.currentProgress();if(!0===this._pausingState.lastValue())return this._logger.log(Zt.Trace,"Circuit is already paused."),!0;this._pausingState.reset();const t=this._pausingState.currentProgress();try{this._logger.log(Zt.Trace,"Pausing the circuit..."),this._options.reconnectionHandler?.onConnectionDown(this._options.reconnectionOptions,void 0,!0,e);const t=await this._connection.invoke("PauseCircuit");this._pausingState.complete(t)}catch(e){this._logger.log(Zt.Error,`Failed to pause the circuit: ${e}`),this._pausingState.fail(e)}return await this.disconnect(),t}async resume(){if(!this._circuitId)throw this._logger.log(Zt.Error,"Circuit host not initialized."),new Error("Circuit host not initialized.");if(this._disconnectingState.isInprogress()&&(this._logger.log(Zt.Trace,"Circuit is disconnecting, cannot resume."),await this._disconnectingState.currentProgress()),this._pausingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish pausing..."),!1;if(!this._pausingState.lastValue())return this._logger.log(Zt.Trace,"Circuit is not paused."),!1;if(this._connection.state!==tn.Connected&&(this._logger.log(Zt.Trace,"Reestablishing SignalR connection..."),this._connection=await this.startConnection()),this._resumingState.isInprogress())return this._logger.log(Zt.Trace,"Waiting for the circuit to finish resuming..."),this._resumingState.currentProgress();this._resumingState.reset();const e=this._resumingState.currentProgress();try{for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed();const t=this._persistedCircuitState;this._persistedCircuitState=void 0;const n=await this._connection.invoke("ResumeCircuit",this._circuitId,Qe.getBaseURI(),Qe.getLocationHref(),t?.components??"[]",t?.applicationState??"");if(!n)return this._resumingState.complete(!1),e;this._pausingState.transitionTo(!1),this._resumingState.complete(!0),this._circuitId=n,this._renderQueue=new Oo(this._logger);for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return this._options.reconnectionHandler.onConnectionUp(),this._componentManager.onComponentReload?.($n.Server),e}catch(t){return this._logger.log(Zt.Error,`Failed to resume the circuit: ${t}`),this._resumingState.fail(t),e}}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return j(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Zt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,this._connection?.stop();const e=this.getDisconnectFormData();fetch("_blazor/disconnect",{method:"POST",body:e});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class jo{constructor(e,t,n){this._stateName=e,this._resetValue=n,this._lastValue=t}reset(){if(this._promise)throw new Error(`Circuit state ${this._stateName} is already in progress`);const{promise:e,resolve:t,reject:n}=Promise.withResolvers();this._promise=e,this._resolve=t,this._reject=n,this._lastValue=this._resetValue}complete(e){if(!this._resolve)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._resolve;this._lastValue=e,this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}fail(e){if(!this._reject)throw new Error(`Circuit state ${this._stateName} not initialized`);const t=this._reject;this._promise=void 0,this._resolve=void 0,this._reject=void 0,t(e)}isInprogress(){return!!this._promise}currentProgress(){if(!this.isInprogress())throw new Error(`Circuit state ${this._stateName} is not in progress`);return this._promise}transitionTo(e){if(this._promise)throw new Error(`Circuit state ${this._stateName} is in progress`);this._lastValue=e}lastValue(){return this._lastValue}}function Wo(e){const t={...zo,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...zo.reconnectionOptions,...e.reconnectionOptions}),t}const zo={configureSignalR:e=>{},logLevel:Ct.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:30,retryIntervalMilliseconds:function(e,t){return t&&e>=t?null:e<10?0:e<20?5e3:3e4},dialogId:"components-reconnect-modal"}};class qo{static{this.ReconnectOverlayClassName="components-reconnect-overlay"}static{this.ReconnectDialogClassName="components-reconnect-dialog"}static{this.ReconnectVisibleClassName="components-reconnect-visible"}static{this.RejoiningAnimationClassName="components-rejoining-animation"}static{this.AnimationRippleCount=2}constructor(e,t,n){this.document=t,this.logger=n,this.reconnect=!0,this.remote=!1,this.style=this.document.createElement("style"),this.style.innerHTML=qo.Css,this.overlay=this.document.createElement("div"),this.overlay.className=qo.ReconnectOverlayClassName,this.host=this.document.createElement("div"),this.host.id=e;const o=this.host.attachShadow({mode:"open"});this.dialog=t.createElement("div"),this.dialog.className=qo.ReconnectDialogClassName,o.appendChild(this.style),o.appendChild(this.overlay),this.rejoiningAnimation=t.createElement("div"),this.rejoiningAnimation.className=qo.RejoiningAnimationClassName;for(let e=0;e{"visible"===this.document.visibilityState&&this.retry()}}show(e){this.document.contains(this.host)||this.document.body.appendChild(this.host),this.reconnect="reconnect"===e?.type,this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="block",this.status.innerHTML="Rejoining the server...",this.host.style.display="block",this.overlay.classList.add(qo.ReconnectVisibleClassName)}update(e){if(this.reconnect="reconnect"===e.type,this.reconnect){const{currentAttempt:t,secondsToNextAttempt:n}=e;if(1===t||0===n)this.status.innerHTML="Rejoining the server...";else{const e=1===n?"second":"seconds";this.status.innerHTML=`Rejoin failed... trying again in ${n} ${e}`}}else this.reloadButton.style.display="none",this.rejoiningAnimation.style.display="none",this.status.innerHTML="The session has been paused by the server.",this.resumeButton.style.display="block"}hide(){this.host.style.display="none",this.overlay.classList.remove(qo.ReconnectVisibleClassName)}failed(){this.rejoiningAnimation.style.display="none",this.reconnect?(this.reloadButton.style.display="block",this.status.innerHTML="Failed to rejoin.
Please retry or reload the page.",this.document.addEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible)):(this.status.innerHTML="Failed to resume the session.
Please reload the page.",this.resumeButton.style.display="none",this.reloadButton.style.display="none")}rejected(){location.reload()}async retry(){this.document.removeEventListener("visibilitychange",this.retryWhenDocumentBecomesVisible),this.show();try{await St.reconnect()||(this.update({type:"pause",remote:this.remote}),await St.resumeCircuit()||this.rejected())}catch(e){this.logger.log(Ct.Error,e),this.failed()}}async resume(){try{await St.resumeCircuit()||this.failed()}catch(e){this.logger.log(Ct.Error,e),this.failed()}}static{this.Css=`\n .${this.ReconnectOverlayClassName} {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n display: none;\n overflow: hidden;\n animation: components-reconnect-fade-in;\n }\n\n .${this.ReconnectOverlayClassName}.${this.ReconnectVisibleClassName} {\n display: block;\n }\n\n .${this.ReconnectOverlayClassName}::before {\n content: '';\n background-color: rgba(0, 0, 0, 0.4);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n animation: components-reconnect-fadeInOpacity 0.5s ease-in-out;\n opacity: 1;\n }\n\n .${this.ReconnectOverlayClassName} p {\n margin: 0;\n text-align: center;\n }\n\n .${this.ReconnectOverlayClassName} button {\n border: 0;\n background-color: #6b9ed2;\n color: white;\n padding: 4px 24px;\n border-radius: 4px;\n }\n\n .${this.ReconnectOverlayClassName} button:hover {\n background-color: #3b6ea2;\n }\n\n .${this.ReconnectOverlayClassName} button:active {\n background-color: #6b9ed2;\n }\n\n .${this.ReconnectDialogClassName} {\n position: relative;\n background-color: white;\n width: 20rem;\n margin: 20vh auto;\n padding: 2rem;\n border-radius: 0.5rem;\n box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n opacity: 0;\n animation: components-reconnect-slideUp 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-fadeInOpacity 0.5s ease-out 0.3s;\n animation-fill-mode: forwards;\n z-index: 10001;\n }\n\n .${this.RejoiningAnimationClassName} {\n display: block;\n position: relative;\n width: 80px;\n height: 80px;\n }\n\n .${this.RejoiningAnimationClassName} div {\n position: absolute;\n border: 3px solid #0087ff;\n opacity: 1;\n border-radius: 50%;\n animation: ${this.RejoiningAnimationClassName} 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n }\n\n .${this.RejoiningAnimationClassName} div:nth-child(2) {\n animation-delay: -0.5s;\n }\n\n @keyframes ${this.RejoiningAnimationClassName} {\n 0% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 4.9% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 0;\n }\n\n 5% {\n top: 40px;\n left: 40px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n\n 100% {\n top: 0px;\n left: 0px;\n width: 80px;\n height: 80px;\n opacity: 0;\n }\n }\n\n @keyframes components-reconnect-fadeInOpacity {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes components-reconnect-slideUp {\n 0% {\n transform: translateY(30px) scale(0.95);\n }\n\n 100% {\n transform: translateY(0);\n }\n }\n `}}class Jo{static{this.ShowClassName="components-reconnect-show"}static{this.HideClassName="components-reconnect-hide"}static{this.RetryingClassName="components-reconnect-retrying"}static{this.FailedClassName="components-reconnect-failed"}static{this.PausedClassName="components-reconnect-paused"}static{this.ResumeFailedClassName="components-reconnect-resume-failed"}static{this.RejectedClassName="components-reconnect-rejected"}static{this.MaxRetriesId="components-reconnect-max-retries"}static{this.CurrentAttemptId="components-reconnect-current-attempt"}static{this.SecondsToNextAttemptId="components-seconds-to-next-attempt"}static{this.ReconnectStateChangedEventName="components-reconnect-state-changed"}constructor(e,t,n){if(this.dialog=e,this.document=t,this.reconnect=!1,this.document=t,void 0!==n){const e=this.document.getElementById(Jo.MaxRetriesId);e&&(e.innerText=n.toString())}}show(){this.removeClasses(),this.dialog.classList.add(Jo.ShowClassName),this.dispatchReconnectStateChangedEvent({state:"show"})}update(e){if(this.reconnect="reconnect"===e.type,"reconnect"===e.type){const{currentAttempt:t,secondsToNextAttempt:n}=e,o=this.document.getElementById(Jo.CurrentAttemptId);o&&(o.innerText=t.toString());const r=this.document.getElementById(Jo.SecondsToNextAttemptId);r&&(r.innerText=n.toString()),t>1&&n>0&&this.dialog.classList.add(Jo.RetryingClassName),this.dispatchReconnectStateChangedEvent({state:"retrying",currentAttempt:t,secondsToNextAttempt:n})}if("pause"===e.type){const t=e.remote;this.dialog.classList.remove(Jo.ShowClassName,Jo.RetryingClassName),this.dialog.classList.add(Jo.PausedClassName),this.dispatchReconnectStateChangedEvent({state:"paused",remote:t})}}hide(){this.removeClasses(),this.dialog.classList.add(Jo.HideClassName),this.dispatchReconnectStateChangedEvent({state:"hide"})}failed(){this.removeClasses(),this.reconnect?(this.dialog.classList.add(Jo.FailedClassName),this.dispatchReconnectStateChangedEvent({state:"failed"})):(this.dialog.classList.add(Jo.ResumeFailedClassName),this.dispatchReconnectStateChangedEvent({state:"resume-failed"}))}rejected(){this.removeClasses(),this.dialog.classList.add(Jo.RejectedClassName),this.dispatchReconnectStateChangedEvent({state:"rejected"})}removeClasses(){this.dialog.classList.remove(Jo.ShowClassName,Jo.HideClassName,Jo.RetryingClassName,Jo.FailedClassName,Jo.RejectedClassName,Jo.PausedClassName,Jo.ResumeFailedClassName)}dispatchReconnectStateChangedEvent(e){const t=new CustomEvent(Jo.ReconnectStateChangedEventName,{detail:e});this.dialog.dispatchEvent(t)}}class Vo{constructor(e,t,n,o){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||St.reconnect,this._resumeCallback=o||St.resumeCircuit}onConnectionDown(e,t,n,o){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Jo(t,document,e.maxRetries):new qo(e.dialogId,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new Ko(e,this._logger,this._reconnectCallback,this._resumeCallback,this._reconnectionDisplay,n,o))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class Ko{static{this.MaximumFirstRetryInterval=3e3}constructor(e,t,n,o,r,i,s=!1){this.logger=t,this.reconnectCallback=n,this.resumeCallback=o,this.isGracefulPause=i,this.isRemote=s,this.isDisposed=!1,this.reconnectDisplay=r;const a={type:i?"pause":"reconnect",remote:this.isRemote,currentAttempt:0,secondsToNextAttempt:0};this.reconnectDisplay.show(a),this.isGracefulPause?this.reconnectDisplay.update({type:"pause",remote:this.isRemote}):this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;void 0===e.maxRetries||tKo.MaximumFirstRetryInterval?Ko.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.runTimer(n,1e3,(e=>{this.reconnectDisplay.update({type:"reconnect",currentAttempt:t+1,secondsToNextAttempt:Math.round(e/1e3)})})),this.isDisposed)break;try{if(!await this.reconnectCallback()){if(this.reconnectDisplay.update({type:"pause",remote:!0}),await this.resumeCallback())return;return void this.reconnectDisplay.failed()}return}catch(e){this.logger.log(Ct.Error,e)}}this.reconnectDisplay.failed()}async runTimer(e,t,n){if(e<=0)return void n(0);let o,r,i=Date.now();n(e);const s=()=>{if(this.isDisposed)return void r();const a=Date.now(),c=a-i;i=a;const l=Math.max(1,Math.floor(c/t)),h=t*l;if((e-=h){"visible"===document.visibilityState&&(clearTimeout(o),n(0),r())};o=setTimeout(s,t),document.addEventListener("visibilitychange",a),await new Promise((e=>r=e)),document.removeEventListener("visibilitychange",a)}}class Xo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){let o;var r;n.moduleExports||(r=n.name,o=new URL(r,document.baseURI).toString(),n.moduleExports=await import(o));const i=n.moduleExports;if(void 0!==i){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:r,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=i;let h=n;e.webRendererId===$n.Server&&c&&(h=c),e.webRendererId===$n.WebAssembly&&r&&(h=r);let d=o;return e.webRendererId===$n.Server&&l&&(d=l),e.webRendererId===$n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){const r=n[0],{beforeStart:i,afterStarted:a,beforeWebStart:c,afterWebStarted:l,beforeWebAssemblyStart:h,afterWebAssemblyStarted:d,beforeServerStart:u,afterServerStarted:p}=t,f=!(c||l||h||d||u||p||!i&&!a),g=f&&r.enableClassicInitializers;if(f&&!r.enableClassicInitializers)e.logger?.log(Ct.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. Use 'before(Web|WebAssembly|Server)Start' and 'after(Web|WebAssembly|Server)Started' instead.`);else if(g)return s(e,i,a,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(r),h&&r.webAssembly.initializers.beforeStart.push(h),d&&r.webAssembly.initializers.afterStarted.push(d),u&&r.circuit.initializers.beforeStart.push(u),p&&r.circuit.initializers.afterStarted.push(p),l&&e.afterStartedCallbacks.push(l),c)return c(r)}(e,i,t)}function s(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,I.get(n)?.[1]);var n;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Go,Yo,Qo,Zo,er,tr,nr;function or(e){if(void 0!==tr)throw new Error("Blazor Server has already started.");return tr=new Promise(rr.bind(null,e)),tr}async function rr(e,t,n){await Go;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Xo(!1,void 0,e.initializers.afterStarted,$n.Server);const t=await fetch("_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=(await t.json()).map((e=>({name:e}))),o=new Xo(!0,void 0,void 0,$n.Server);return await o.importInitializersAsync(n,[e]),o}(Zo);if(Yo=Dt(document)||"",er=new Et(Zo.logLevel),Qo=new Ho(e,Yo,Zo,er),er.log(Ct.Information,"Starting up Blazor server-side application."),St.reconnect=async()=>!(Qo.didRenderingFail()||!await Qo.reconnect()&&(er.log(Ct.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.pauseCircuit=async()=>!(Qo.didRenderingFail()||!await Qo.pause()&&(er.log(Ct.Information,"Pause attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.resumeCircuit=async()=>!(Qo.didRenderingFail()||!await Qo.resume()&&(er.log(Ct.Information,"Resume attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),St.defaultReconnectionHandler=new Vo(er),Zo.reconnectionHandler=Zo.reconnectionHandler||St.defaultReconnectionHandler,St._internal.navigationManager.listenForNavigationEvents($n.Server,((e,t,n)=>Qo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Qo.sendLocationChanging(e,t,n,o))),St._internal.forceCloseConnection=()=>Qo.disconnect(),St._internal.sendJSDataStream=(e,t,n)=>Qo.sendJsDataStream(e,t,n),!await Qo.start())return er.log(Ct.Error,"Failed to start the circuit."),void t();const r=()=>{Qo.sendDisconnectBeacon()};St.disconnect=r,window.addEventListener("pagehide",r,{capture:!1,once:!0}),er.log(Ct.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(St),t()}async function ir(){if(!tr)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Qo||Qo.isDisposedOrDisposing())||(nr?await nr:(await tr,(!Qo||!Qo.didRenderingFail())&&(Qo&&Qo.isDisposedOrDisposing()&&(Yo=Dt(document)||"",Qo=new Ho(Qo.getRootComponentManager(),Yo,Zo,er)),nr=Qo.start(),async function(e){await e,nr===e&&(nr=void 0)}(nr),nr)))}function sr(e,t){if(Qo&&!Qo.isDisposedOrDisposing())return Qo.updateRootComponents(e,t);!async function(e,t){await tr,await ir()&&Qo.updateRootComponents(e,t)}(e,t)}const ar=navigator,cr=ar.userAgentData&&ar.userAgentData.brands,lr=cr&&cr.length>0?cr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,hr=ar.userAgentData?.platform??navigator.platform;function dr(e){return 0!==e.debugLevel&&(lr||navigator.userAgent.includes("Firefox"))}let ur,pr,fr,gr,mr=null;const yr={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");if(e.loadBootResource){const t="dotnetjs",n=e.loadBootResource(t,"dotnet.js","_framework/dotnet.js","","js-module-dotnet");if("string"==typeof n){const e=new URL(n,document.baseURI).toString();return await import(e)}if(n)throw new Error(`For a ${t} resource, custom loaders must supply a URI string.`)}return await import("./dotnet.js")}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1};e.environment&&(n.applicationEnvironment=e.environment);const o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),St._internal.getApplicationEnvironment=()=>n.applicationEnvironment,t?.(n),gr=await async function(e,t){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Xo(!1,void 0,e.initializers.afterStarted,$n.WebAssembly);{const n=[e,t.resources?.extensions??{}],o=new Xo(!0,void 0,void 0,$n.WebAssembly),r=t?.resources?.libraryInitializers;let i;return i=r?"length"in r?r:Object.keys(r).map((e=>({name:e}))):[],await o.importInitializersAsync(i,n),o}}(e,n)},onDownloadResourceProgress:vr,config:n,out:br,err:_r};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),fr=await n.create()}(e,t)},start:function(){return async function(){if(!fr)throw new Error("The runtime must be loaded it gets configured.");const{setModuleImports:t,INTERNAL:n,getConfig:o,invokeLibraryInitializers:r}=fr;pr=n,function(e){const t=hr.match(/^Mac/i)?"Cmd":"Alt";dr(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(dr(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():lr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(o()),St.runtime=fr,St._internal.dotNetCriticalError=_r,t("blazor-internal",{Blazor:{_internal:St._internal}});const i=await fr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(St._internal,{dotNetExports:{...i.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),ur=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Sr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;St._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{St._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{St._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Sr(),St._internal.dotNetExports.InvokeDotNet(e||null,t,n??0,o))}),{invokeLibraryInitializers:r}}()},callEntryPoint:async function(){try{await fr.runMain(fr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),$o()}},getArrayEntryPtr:function(e,t,n){const o=function(e){return e+12}(e)+4+t*n;return o},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return fr.getHeapI16(e+(t||0))},readInt32Field:function(e,t){return fr.getHeapI32(e+(t||0))},readUint64Field:function(e,t){return fr.getHeapU52(e+(t||0))},readObjectField:function(e,t){return fr.getHeapU32(e+(t||0))},readStringField:function(e,t,n){const o=fr.getHeapU32(e+(t||0));if(0===o)return null;if(n){const e=pr.monoObjectAsBoolOrNullUnsafe(o);if("boolean"==typeof e)return e?"":null}return pr.monoStringToStringUnsafe(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Sr(),mr=Cr.create(),mr},invokeWhenHeapUnlocked:function(e){mr?mr.enqueuePostReleaseAction(e):e()}};function vr(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const wr=["DEBUGGING ENABLED"],br=e=>wr.indexOf(e)<0&&console.log(e),_r=e=>{console.error(e||"(null)"),$o()};function Sr(){if(mr)throw new Error("Assertion failed - heap is currently locked")}class Cr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){if(mr!==this)throw new Error("Trying to release a lock which isn't current");for(pr.mono_wasm_gc_unlock(),mr=null;this.postReleaseActions?.length;)this.postReleaseActions.shift()(),Sr()}static create(){return pr.mono_wasm_gc_lock(),new Cr}}class Er{constructor(e){this.batchAddress=e,this.arrayRangeReader=Ir,this.arrayBuilderSegmentReader=kr,this.diffReader=Rr,this.editReader=Tr,this.frameReader=Ar}updatedComponents(){return t.readStructField(this.batchAddress,0)}referenceFrames(){return t.readStructField(this.batchAddress,Ir.structLength)}disposedComponentIds(){return t.readStructField(this.batchAddress,2*Ir.structLength)}disposedEventHandlerIds(){return t.readStructField(this.batchAddress,3*Ir.structLength)}updatedComponentsEntry(e,t){return Dr(e,t,Rr.structLength)}referenceFramesEntry(e,t){return Dr(e,t,Ar.structLength)}disposedComponentIdsEntry(e,n){const o=Dr(e,n,4);return t.readInt32Field(o)}disposedEventHandlerIdsEntry(e,n){const o=Dr(e,n,8);return t.readUint64Field(o)}}const Ir={structLength:8,values:e=>t.readObjectField(e,0),count:e=>t.readInt32Field(e,4)},kr={structLength:12,values:e=>{const n=t.readObjectField(e,0),o=t.getObjectFieldsBaseAddress(n);return t.readObjectField(o,0)},offset:e=>t.readInt32Field(e,4),count:e=>t.readInt32Field(e,8)},Rr={structLength:4+kr.structLength,componentId:e=>t.readInt32Field(e,0),edits:e=>t.readStructField(e,4),editsEntry:(e,t)=>Dr(e,t,Tr.structLength)},Tr={structLength:20,editType:e=>t.readInt32Field(e,0),siblingIndex:e=>t.readInt32Field(e,4),newTreeIndex:e=>t.readInt32Field(e,8),moveToSiblingIndex:e=>t.readInt32Field(e,8),removedAttributeName:e=>t.readStringField(e,16)},Ar={structLength:36,frameType:e=>t.readInt16Field(e,4),subtreeLength:e=>t.readInt32Field(e,8),elementReferenceCaptureId:e=>t.readStringField(e,16),componentId:e=>t.readInt32Field(e,12),elementName:e=>t.readStringField(e,16),textContent:e=>t.readStringField(e,16),markupContent:e=>t.readStringField(e,16),attributeName:e=>t.readStringField(e,16),attributeValue:e=>t.readStringField(e,24,!0),attributeEventHandlerId:e=>t.readUint64Field(e,8)};function Dr(e,n,o){return t.getArrayEntryPtr(e,n,o)}class Nr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let xr,Pr,Mr,Lr,Ur=!1,Br=!1,Or=!0,Fr=!1;const $r=new Promise((e=>{Lr=e}));let Hr;const jr=new Promise((e=>{Hr=e}));let Wr;const zr=new Promise((e=>{Wr=e}));function qr(e){if(xr)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;xr=t,Wr()}(e)}function Jr(e,t){if(void 0!==Mr)throw new Error("Blazor WebAssembly has already started.");return Mr=new Promise(Vr.bind(null,e,t)),Mr}async function Vr(e,n,o,r){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const i=Kr(n);!function(){const e=D;D=(t,n,o)=>{((e,t,n)=>{const o=Ne(e);o?.eventDelegator.getHandler(t)&&yr.invokeWhenHeapUnlocked(n)})(t,n,(()=>e(t,n,o)))}}(),St._internal.invokeJSJson=Xr,St._internal.endInvokeDotNetFromJS=Gr,St._internal.receiveWebAssemblyDotNetDataStream=Yr,St._internal.receiveByteArray=Qr;const s=(t=yr,t);St.platform=s,St._internal.renderBatch=(e,t)=>{const n=yr.beginHeapLock();try{xe(e,new Er(t))}finally{n.release()}},St._internal.navigationManager.listenForNavigationEvents($n.WebAssembly,(async(e,t,n)=>{await ur.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await ur.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);St._internal.navigationManager.endLocationChanging(e,r)}));const a=new Nr(e);St._internal.registeredComponents={getRegisteredComponentsCount:()=>a.getCount(),getAssembly:e=>a.getAssembly(e),getTypeName:e=>a.getTypeName(e),getParameterDefinitions:e=>a.getParameterDefinitions(e)||"",getParameterValues:e=>a.getParameterValues(e)||""},St._internal.getPersistedState=()=>Nt(document)||"",St._internal.getInitialComponentsUpdate=()=>jr,St._internal.updateRootComponents=(e,t)=>{St._internal.dotNetExports?.UpdateRootComponentsCore(e,t)},St._internal.endUpdateRootComponents=t=>e.onAfterUpdateRootComponents?.(t),St._internal.attachRootComponentToElement=(e,t,n)=>{const o=a.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,j(i,!0),t,r)}(e,t,n)};try{await i,await s.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}s.callEntryPoint(),gr.invokeAfterStartedCallbacks(St),Br=!0,o()}function Kr(e){return Pr??=(async()=>{await zr;const t=xr??{};t.environment||(t.environment=e?.environmentName??void 0);const n=xr?.configureRuntime;t.configureRuntime=t=>{n?.(t),e?.environmentVariables&&t.withEnvironmentVariables(e.environmentVariables),Fr&&t.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await yr.load(t,Lr),Ur=!0})(),Pr}function Xr(e,t,n,o,r,i){return 0!==r?(ur.beginInvokeJSFromDotNet(r,e,o,n,t,i),null):ur.invokeJSFromDotNet(e,o,n,t,i)}function Gr(e,t,n){ur.endInvokeDotNetFromJS(e,t,n)}function Yr(e,t,n,o){!function(e,t,n,o,r){let i=_t.get(t);if(!i){const n=new ReadableStream({start(e){_t.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),_t.delete(t)):0===o?(i.close(),_t.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(ur,e,t,n,o)}function Qr(e,t){ur.receiveByteArray(e,t)}function Zr(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}const ei="data-permanent";var ti,ni;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(ti||(ti={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(ni||(ni={}));class oi{static create(e,t,n){return 0===t&&n===e.length?e:new oi(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===ti.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){const t=[];let n=e.length-1,o=e[n]?.length-1;for(;n>0||o>0;){const r=0===n?ni.Insert:0===o?ni.Delete:e[n][o];switch(t.unshift(r),r){case ni.Keep:case ni.Update:n--,o--;break;case ni.Insert:o--;break;case ni.Delete:n--}}return t}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case ti.None:h=o[a-1][i-1];break;case ti.Some:h=o[a-1][i-1]+1;break;case ti.Infinite:h=Number.MAX_VALUE}h{const t=location.href,n=Be(t,e);if(history.pushState(null,"",e),n)Fe(e);else{let n=Oe(e,t);Ii(e,!0),n||(Pe(),Me())}}))}function Ci(e){ze()||(null==e.state&&Be(bi,location.href)?bi=location.href:Ii(location.href,!1))}function Ei(e){if(ze()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===t?.toLowerCase()}(t))return;const n=e.submitter?.getAttribute("formmethod")||t.method;if("dialog"===n)return void console.warn('A form cannot be enhanced when its method is "dialog".');const o=e.submitter?.getAttribute("formtarget")||t.target;if(""!==o&&"_self"!==o)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const r=new URL(e.submitter?.getAttribute("formaction")||t.action,document.baseURI),i={method:n},s=new FormData(t),a=e.submitter?.getAttribute("name"),c=e.submitter?.getAttribute("value");a&&c&&s.append(a,c);const l=new URLSearchParams(s).toString();if("get"===i.method)r.search=l,history.pushState(null,"",r.toString());else{const n=e.submitter?.getAttribute("formenctype")||t.enctype;"multipart/form-data"===n?i.body=s:(i.body=l,i.headers={"content-type":n,accept:mi})}Ii(r.toString(),!1,i)}}async function Ii(e,t,n,o,r=!0){wi=!0,yi?.abort(),function(e,t){Re?.(e,t)}(e,t),vi.enhancedNavigationStarted(),yi=new AbortController;const i=yi.signal,s=fetch(e,Object.assign({signal:i,mode:"no-cors",headers:{accept:mi}},n));let a=null;if(await async function(e,t,n){let o;try{if(o=await e,!o.body)return void n(o,"");const t=o.headers.get("ssr-framing");if(!t){const e=await o.text();return void n(o,e)}let r=!0;await o.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){r?(r=!1,n(o,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(s,i,((t,i)=>{const s=!n?.method||"get"===n.method,c=t.status>=200&&t.status<300;if("opaque"===t.type){if(s)return void Ri(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(c&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(s)return void Ri(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}r&&(t.redirected||o)&&((o?"get"===o:s)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const l=t.headers.get("blazor-enhanced-nav-redirect-location");if(r&&l)return void location.replace(l);r&&!t.redirected&&!s&&c&&(Oe(t.url,bi)?location.href!==bi&&history.pushState(null,"",bi):a=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),r&&(bi=t.url);const h=t.headers.get("content-type");if(h?.startsWith("text/html")&&i){const e=(new DOMParser).parseFromString(i,"text/html");ii(document,e),vi.documentUpdated()}else h?.startsWith("text/")&&i?ki(i):c||i?s?Ri(e):ki(`Error: ${n.method} request to ${e} returned non-HTML content of type ${h||"unspecified"}.`):ki(`Error: ${t.status} ${t.statusText}`)})),!i.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);o?.scrollIntoView()}if(wi=!1,vi.enhancedNavigationCompleted(),a)throw new Error(a)}}function ki(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Ri(e){console.warn(`Enhanced navigation failed for destination ${e}. Falling back to full page load.`),history.replaceState(null,"",e+"?"),location.replace(e)}let Ti,Ai=!0;function Di(e,t){Ti=t,e?.disableDomPreservation&&(Ai=!1),customElements.define("blazor-ssr-end",Ni)}class Ni extends HTMLElement{connectedCallback(){const e=this.parentNode;e.parentNode?.removeChild(e),e.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&yi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Ai)ii({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Ti.documentUpdated()}}(t,e.content);else{const t="true"===e.getAttribute("enhanced");switch(e.getAttribute("type")){case"redirection":xi(e,!0,t);break;case"not-found":xi(e,!1,t&&Ai);break;case"error":ki(e.content.textContent||"Error")}}}}))}}function xi(e,t,n){const o=We(e.content.textContent),r="form-post"===e.getAttribute("from");n&&Ue(o)?Ii(o,!1,void 0,r?"post":"get",t):r?o!==location.href&&location.assign(o):location.replace(o)}class Pi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===$n.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh(!0)}setWebAssemblyOptions(e){this._webAssemblyOptions=e}registerComponent(e){if(this._seenDescriptors.has(e))return;"webassembly"===e.type?this.startLoadingWebAssemblyIfNotStarted():"auto"===e.type&&this.startLoadingWebAssemblyIfNotStarted(1);const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(e){if(void 0!==Pr)return;Fr=!0;const t=Kr(this._webAssemblyOptions),n=await $r;void 0!==e&&(n.maxParallelDownloads=e),function(e){const t=Mi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n}(n)||this.onWebAssemblyFailedToLoadQuickly(),await t,function(e){const t=Mi(e);t&&window.localStorage.setItem(t.key,t.value)}(n),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===tr?or(this):!Qo||Qo.isDisposedOrDisposing()?ir():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===Mr&&await Jr(this,this._webAssemblyOptions)}rootComponentsMayRequireRefresh(e=!1){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,queueMicrotask((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values(),e)})))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents($n.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents($n.Server,"server","auto")||(async function(){await(Qo?.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ne(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e,t=!1){const n=new Map,o=new Set;for(const r of e){t&&void 0!==r.assignedRendererId&&o.add(r.assignedRendererId);const e=this.determinePendingOperation(r);if(!e)continue;const i=r.assignedRendererId;if(!i)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let s=n.get(i);s||(s=[],n.set(i,s)),s.push(e)}let r="",i="";if(t)for(const e of o)if(e===$n.Server)r=Dt(document)||"",r&&""!==r&&(n.get($n.Server)||n.set($n.Server,[]));else{if(e!==$n.WebAssembly)throw new Error(`Unexpected renderer ID '${e}' encountered while discovering new state.`);i=Nt(document)||"",i&&""!==i&&(n.get($n.WebAssembly)||n.set($n.WebAssembly,[]))}for(const[e,t]of n){const n={batchId:this._nextOperationBatchId++,operations:t};this._pendingOperationBatches[n.batchId]=n;const o=JSON.stringify(n);e===$n.Server?sr(o,r):this.updateWebAssemblyRootComponents(o,i)}this.circuitMayHaveNoRootComponents()}updateWebAssemblyRootComponents(e,t){Or?(Hr(e),Or=!1):function(e,t){if(!Mr)throw new Error("Blazor WebAssembly has not started.");if(!St._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Br?St._internal.updateRootComponents(e,t):async function(e,t){if(await Mr,!St._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");St._internal.updateRootComponents(e,t)}(e,t)}(e,t)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),$n.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),$n.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents($n.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents($n.Server,"server")?"server":Ur?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(wi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:R(t)?(_e(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ht(e.descriptor)}):null}return R(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ht(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):R(e.assignedRendererId)?(_e(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}onComponentReload(e){for(const[n,o]of this._rootComponentsBySsrComponentId.entries())o.assignedRendererId===e&&(o.assignedRendererId=void 0,we(o.descriptor.start,!1),t=o.descriptor.start,ge.add(t));var t;this.rootComponentsMayRequireRefresh()}}function Mi(e){const t=e.resources?.hash,n=e.mainAssemblyName;return t&&n?{key:`blazor-resource-hash:${n}`,value:t}:null}class Li{constructor(){this._eventListeners=new Map}static create(e){const t=new Li;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){this._eventListeners.get(e)?.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let Ui=null,Bi=location.href,Oi=!1;function Fi(){null!==document.activeElement&&document.activeElement!==document.body||document.querySelector("[autofocus]")||Wi()}function $i(){Oe(Bi,location.href)||(Oi=!0),Bi=location.href}function Hi(){Oi&&Wi()}function ji(){Oi=!1}function Wi(){const e=Ui?.getAttribute("selector");e&<.focusBySelector(e)}class zi extends HTMLElement{connectedCallback(){Ui=this}disconnectedCallback(){Ui===this&&(Ui=null)}}let qi,Ji=!1;function Vi(e){if(Ji)throw new Error("Blazor has already started.");Ji=!0,e=e||{},e.logLevel??=Ct.Error,St._internal.hotReloadApplied=()=>{He()&&je(location.href,!0)},qi=new Pi(e?.ssr?.circuitInactivityTimeoutMs??2e3);const t=Li.create(St),n={enhancedNavigationStarted:()=>{t.dispatchEvent("enhancednavigationstart",{})},documentUpdated:()=>{qi.onDocumentUpdated(),t.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){qi.onEnhancedNavigationCompleted(),t.dispatchEvent("enhancednavigationend",{})}};return ri=qi,Di(e?.ssr,n),e?.ssr?.disableDomPreservation||(vi=n,document.addEventListener("click",Si),document.addEventListener("submit",Ei),window.addEventListener("popstate",Ci),ke=_i),function(e){customElements.define("blazor-focus-on-navigate",zi),e.addEventListener("enhancednavigationstart",$i),e.addEventListener("enhancednavigationend",Hi),document.addEventListener("focusin",ji),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Fi,{once:!0}):Fi()}(t),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Wo(e?.circuit||{});e.circuit=t,e.webAssembly=e.webAssembly||{};const n=async function(e,t){const n=xt(document,Tt,"initializers");if(!n)return new Xo(!1,t);const o=(JSON.parse(atob(n))??[]).map((e=>({name:e}))),r=new Xo(!1,t);return await r.importInitializersAsync(o,[e]),r}(e,new Et(t.logLevel));!function(e){if(Zo)throw new Error("Circuit options have already been configured.");Go=async function(e){const t=await e;Zo=Wo(t)}(e)}(Xi(n,t)),qr(Xi(n,e.webAssembly)),function(e){const t=di(e),n=function(e){const t=xt(e,At,"options");if(t)return JSON.parse(t)}(e);ri?.setWebAssemblyOptions(n);for(const e of t)ri?.registerComponent(e)}(document),qi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(St)}(n)}async function Xi(e,t){return await e,t}St.start=Vi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Vi()}(); From bff00832fce3926683054b78e82c14b5de0a207b Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 14 Nov 2025 12:22:02 -0500 Subject: [PATCH 03/26] resolved issues in Oqtane Application Template in .NET 10 --- .../Server/Oqtane.Application.Server.csproj | 1 + Oqtane.Package/FixProps.exe | Bin 162816 -> 144886 bytes Oqtane.Package/release.cmd | 1 + 3 files changed, 2 insertions(+) diff --git a/Oqtane.Application/Server/Oqtane.Application.Server.csproj b/Oqtane.Application/Server/Oqtane.Application.Server.csproj index 9baec673..4d6ad43b 100644 --- a/Oqtane.Application/Server/Oqtane.Application.Server.csproj +++ b/Oqtane.Application/Server/Oqtane.Application.Server.csproj @@ -9,6 +9,7 @@ false false true + true diff --git a/Oqtane.Package/FixProps.exe b/Oqtane.Package/FixProps.exe index e4a9ef004ff0cd3cbad0cfc47906424df5d4316f..e2c449ec36a2b7afc80417639fa6f1df44bb8d09 100644 GIT binary patch literal 144886 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

d_6smgfHfBYxZcuoA5eqKD(>C+v&DN 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 literal 162816 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

mjtJZBaE z=&K5NfEK-Ge{_)l(IUcZbIi(@$1$t@v0cRC_BSE%>PTm;6d;e*PCsC!H+o*P@bj^S z>rja4@kr%9*kE4fqez}cILZ-2&V(%*O_X*w3kM`EyK+|5< zk+s#blLEN*)u-{rV?Wi*Xg}pbfh$^7=~n6qn|`yS&8#VowoCOy+=SQ%saMTL;{D0k zD>6Z4X8BLVp@7LPIM1706V>h{qJD5ksPT3v560j2Pfd>L#~HR0v1Nqq&PcN25FBMn z{db@k2M3ID0;=$WbJtf4#{shys`)f}^m6cV(ryBxmfEeWiw%^|`ReZAoFn-fdqaL% zk=sFG!&m%jV;!eT~xWv{t?0F9`c>WB zVhVJY3P!H`b|5Iy1Y_{BSKlwZp#ku{Y;klC+V2L5c{nL z`Yp+^<%||xROy_mm_E)CF$ zQ;rHqJ2V&&uRCx<$GQWH>dLih=bX>$nK$2WlE+@C-z~d#u6_NMQD2`9NK?h@UVdr) zx{u~O=UeyLyqDL$9y@F6x|d&VTl@NTlRDPzd}-slPwQLYP;RD{X{N%tt?@UCqPOT& zmlQZGXs&B@zI;huo+`agt@{S5na^H&dfoG{`gZ)9=gwVQ*L^ha^>sVvJny6Gv#uy# z`}$Rr+U<=i>2Kb%JJx;l(sQ)5HQjz(NA#Ev{ZFh}g=m~t*>1O_hEYE$?e+$%lHf%X zMx^?C2*n5g$iGyGPWVSYUa^>8mf;G1rgy*bS^OIQ4ss37Xu;5kWhm%RCg)O6*3l1Q)`x_3H)|(R1BIodLxFYJzBTygIdl zI#fe<`q%jhQhiQRrw!ki`~DJ42JZ$BWhrs*0UxyoE+{N6XoD`ME5aVy$jS?hK0W4} znK&&)dbF|I*h;;6wa%zZ;n~lx__*LI>LBULCx%prU!qV*k=7 z$b(sAfW0RE+PIb-eeEs5bn}1?vc^;Sv5w?zd4wDon?_abza2{kahMZ>xKO+Er>5@y z#v(=eg7|AiR*O^c?Cay3E-D=;bs_gh7MUxnQVUGqQ$Ewfpxr-Wx9Vh$`n$Rxf6S4d zTB*v{#LOYvN=}zg=$_H!2^#J&m^{CjIHM+O>~P2b0m{KVZ0&jR_H=5X{}JLjC-Mzp z6bc6vsmNkyBb;SsZsc(TN3wr++BXY(t!&Xpy($J4-;Y!25vW*tKCkiCk;Gn!IjSc| z9bjaw@&q0^+_oJnay|*e^bL=HT+9he9U~vOm-l zWE1R(iyAcKQ1MUU_@^jjiO*@@jYQGL3{wbp@yx|F>Mx!!>E^|w^J4f)Vy2x96@JD! ziWaRzkzxWI0uy9(;O)*|rjnWg5zrn@+ftk4=qHlCwiU2R9~*&tyTc(2N=zB)c3_g} zz=V;e2T9*8}ku7maHDFZZR)YG%qeStn%u2=Yd&RCAr>NJViM=)H!$p-}eQL zL?0`0DIU^g%k*Zz=o|yW;H&9dN|K5BVwP!n;LiQp7~!g%BU#7GE&HfO6@tIFIBqi6 zba@+&j?Ok7+a{EcQ_qqNB3ag#E<4|m^k(C$i+aKM2h8Jp;-~{K&&&B;&u^e99R+O) z_-@$&usBE_bX{unXj9yfdk=tyU+{2sd!}!TBx~9?4^36eE5l0T)HQIQ;E2JPISQ1f z%id#Y$oB?748fz>tWiF~n5D})_@>ZLYvh&XJS}y-X?=yM77NwEb0>TOG{B%@vI;k& z-bi%tUy?@#hIkRR}2HOXkXI;Xqz)8Msz zz7E(#izxksO1tQrgG0>EDj|d8166?r?#$TNOw8cXZ2?(X+}TJF$1CY;P@{{%zOn1BjBt>F9xh#f$NNSQODhI*-zpeOW-$MSw;ko`F1H z$|BDn=IV31ii4@8+<9j3Ctdb^KCIS4QzcIb3NBUhXiSEtTJ~2)rw*&NC(wx(M{N+2 zrpqohl^&_J^cL2oDm95=ec0-u8p>={#){x;il_)xr13s=boX47yXO)rkSl{rhPHEl z=sxbLE{+aG!e#Jf{eM9o1l{+*h(~^#$8u-Ywa&za7{%{kNr&-JU*X?9Jh z?fJUvEpN4$?${6#=K7PtCvlw^HvjCI@s{$`Y3}Z(9LU*B~h*aLHAj0HlK|964v^`?)Cz?yBy#_&mNTb03w#DD;;)sS0J=?jOX#>O`ku!(SGpk45as+#py*bpf zPwWa@%SA&6`hWLSa2dbpHcppGFG9R+hOw|iA!C_Dk2tWa2^U;r0I1UtR20F8y=5jY zx`F7SE16_wxnuqX%LWcQt&f`Oq{W_XZIOA8#6QBS)MxU^YLtT9(V&3 zhdN8?TJOjv9x8qOe!8gNYW?C?zj}qAlIi2$_tJm*P51j2^Xr~ND3rb?dP2JFIWlpu z;G=UOp~9Wg|obW|? z!O)W-qux%?CEr^$B?&+hE45l$N@wnEK{K1*YPD=A?Ys?UsEgijPx(cY+s7NU!ToHb z6XjWp9YeQRM^rHBXkX_95NVV1Fk;H4&O7?6if;eB{Uho7AUi-X6O;zCVBd zH=GRsgr1CK3#nk!JBP2%UxP{mddZUUdVkQoM^B-JQL^Fw{(E#7P8@5yuOAthk-_}v zRlmF*$tj3ah9+>qK{S-X4 zq`DsR6Pvzr0E=s8b#Q3xqHyIJ|D)$4Bdr;Vg5LjVu&+4yaB|>NR$@p+sAfxas6Bb0 zIU9_nvY;hg(>#X_Yt6{itB?+44g;n5O%-{!=&3(&?aQxhtnsx&z5VLW?arTz#VG-o z0ZlK(imW@z2200eFv6Yd#bb*|$-8rVv=Ar6fzIs%c-iRu?r^!5W)aiFi}={r(X4<2 z+mU&$3otF9ox&h(BH6i^1hoa12aCs*scz_1gC~y(b@pyMvU%?|^dBzM0v@>anvK*s zmEz7W@QH=|6+PcKM((K2e4b5?#84*>4jCQ(T<18tNxPTxQy~Xxs zn#ox)W^B_bY8ElqT4+tADd)Uiqq;TH&WET`I4@gtmrlSP^oO6i#*4F<100eA%TSFw zKO^zZZFb3(&_$3Nk1@WoTqd{qCXvL8NXp7@7!Z7iALnp0>?qFDeCyoqX1Kx4P^=8Q z&qZMI^`kT>n3pQXKiRa!RCmCFJFTFzSn2p^u5Ofsb1bRAV=$CGn5^$3Hm)FDcF#4` zbze?iC@(-agV4c=0nVc| zBFCt$f6RAg(k`<9Fmg1yIcgRYXhs1IE+&t=8wYYEdUsylU{Nl2AGh%c{p(Ne<@^@w zH#22seqN$pGcn%)n_OBHv4iaNPbthz3Gi`M2OgFNF08X*Q~nl=zkv>CLvT+X7sPIf zqEZhOM;hx3_ihVgVry&1c%-fL*yg@Oju<(1M&CYp(PPHW z*3S{XhxUJ(j_)g(>;aIJ9` znnJZUPLIAzWaNzRIMC)hpC@5;n{NtF!ca)>XdeBm-xd6Sm&X}CZBsVbCtrK0bczW${46BObf@ZIcH7mcrx8Ya=c^_e*omZF_f30uAmq2Z0E!l8l9+t|zTddU zmCw(Z{CTJ{Uwe|*4^DF{ESrn8MF(kU$Dwok@pI-2e4-bZSB!*u!RuCORZ03Ub@gO6 zw%i6N)-14dHl15g&iPE#W+CJ|B0War^VlgBur99JA5OxBcR&g3y26T?d$t*5tvhl< zaPRiog7(^_QwpPl!o;4J&gccpe%d*MmFDS;44*CjTIZHUZr#&}nN^#^53x4FY>;8m z(#WWn!bogG!<8KzUwHPaus!^Ei5rocXXhR^Gq~jSyxo!H|K+jjg6j*E8pAkASw_rO zy0#P^+S}Lc?TU@F_p9m>eFQ~x10Eq>6L!Pu~XN3qgSzC zQsx(YXR|Fb=VG5ek$vY*6nxHaH19xvG&B4y%^PwZfNlo3zI?sgzDxC!@NFEgHzW1= zHdD0C_e)aLg*M-PJmphUo9{Q?lQH~R-)z=a_*0c^E6msG=}NatLRG3bTv(n-M35?p zW)dkl^gbx|hmgYMjFMCQfeX!f!~nZ|x~zZ!S@xgzQRyhW+ndc{SSCDO_Sy`-Fjf=@ za!EyIoh63a@YZ2=J|I&i1tA}1>t!Tc2(wn6F1wGC={BzXTlgR?26XLx=fuAoy}3ae z=4Dhfp0@N6@AB3*-(YMG`se8riO2LnML^0A?z9!L-|j*GOH@pc3hj+gpSVg3+G&Oe zN}m$h9bDNV9`koWdd+LP>_jqK_KzL1S;_Bh<0Es=2-9Un`a(V9EZa>_CU@xb!J|Vf znsoF@<5RVIC>Jh0HeK~CZP!PM^HyT1T2fz3VsPcXYS^H_(q%k4gVZyx1k%V1TB|RE zDd6`a4L@BrjymmafD!DWLLo`AjwTT>(`DzVL0Sr=%g*KzzNIAoNq)3AX%#rDjb8Cb z6&(NzyQE-7u%ga!qYTWoC#uUGSMZf#pR>y4W{YE0R--j$$(Ve@y&kvP9eL7@b2~R=}&6LM|8l7{p1dFo7!Jl23yJ8FvV9K9kB}H!WPDk zwl6GS@^QKEyThX8$=hE2_}aJSh+Rgc^1u(#0~=Za2C@{nyX9A602A!X(~F%4-Dl@Q zLTI>r7UorRat@N_vrc9KJa+oeUOoATm6WMzjm>AOIB!@dVgX#Qri+$cS85R|AH3iV z&FN`+z6Fr*oQw>0-_O*yx}j#KTXvLNqj(<06pU)g+=WU_$MG_%t2Mac78drJljsGM zr{3Dz!Rv>5#UjBxtjr4twdLYCRzx6u{CPCHX%mh&@>{DW&E+e{;S+Dgiz}SB#Ye=8 zi5w>dzt+lMs1B6}_~_fh_N(6(^D8>(!aI4?=6}$;mKUf^0zS(zl%Q_qpZo?NNU5zbbF9RZJ4aCQ*zM#VWZFe47DnX$x!<_(^j3yxaMs zwgbp{z4YhOVUMIhlq4=7@#Q5Sp zt))4y14nI*B*zzyzNlhk?5pydzC4JIIaob7IyuzX2Y!wQ`t{mCd!2p$r@?36twXVW zO3=;^+M&WoGE_|Dr+(=*!J4ge-c21AOiU?Fl^X8#=@U~$^diXlXnA8-P;s$a@jcyp zz9wkbfBNjZ^aB>0N#fQi?ct@mXNYZ_g#p*xiXBkbMi_Y;#ud`v&k*Kl3EV3M2eJb} zr-Shgo)KWmmxK(i-AKlSEulod3PukJ+7<=yq8*qYO7si4K9jx7MfUpm8HNLcah9J5 zoPu7fMx}9nfK=AE%iW|Lk~`DCXf{yVJ!+409(z}Dd%C)VN26N8#sL6uWf?}j~=zQ1UgN2Hh z6T{jb(C13eoA0W5L#TVD<_)6mm6|uC&!~BWsC%X64WaH`wwRhpnnBWR%U-h6Y=PUZJLtFdl+I8pZp;_BbP`>*|v)GgwddwZ;*98W0^6-+LU z6yS#4Sa&t)?}Y5}0c~asZ~Vw`BJu+rKTAX&4M7kR)1D03gQ@LBH#|Jq$|2yJwOMd4 zWCJbR5x+c{o_bGw!P*`43EJw(+zTs8byFO~@8(Ai5LrK13^=-$R#UZ06sldK(9GIk zB3Xk&BPfyobw1@Vd53>NzGQu&n>T(_aUOMpA$buHi^mFo6RdcieW}_4AGddi1QL zK2hbr)1zm(`Nw3=?UA~JuUNi+sfjOdIC%)2Sotnq9y6cO9auFD4RZ%L4HEZlt05&N zMq)~_Gf4@FhK4Rxri&*YU$WoPu{^70K|}0J=SWkyzCnh`6D(#(?wkFk^ul&_SZb&9 zF*2Q7S=J8aoO!b0L!=9ONuTY&j0{axTAQ0T%S+43AkKqsUCNBYsVn{aZn_GP?$TWL z(pl`OvyHxB1|k`=h40<&^=zvmwrzpGvjkvT18?fLE%2UsP1G~~Of&Wsqn&fSx*Z+q zGbT4trZAx+!uF(MT(QgZ*fR>O8Fh9)XURSYn0S1#pn)#^IYnl(RgY8?$arG=%?d@z zyBOuIA#1L$);C4hM8G)JD&9nT4~D{qWuU*H1|C(Pf;&msA_(^-|7v6vi&HgXLol@7mwz zv99w2I09hkY>u97p(g@^23ZB?(}~bX=LD)xm8Xv0lUGV4JUckjBJLQK!{stgu|FqX zY&t+_+VtyPxb562iNdaLNcFR-kBGv?T|l|5u@92tJ#Fo%=G2}|R%0KWm*O`S<}Exd z+&H<=YPbzk4+uw zl+kE>K~>(Z#ZG@7(-zwpq^3lR z_ozL6N-+w9Q}LF42FMKzB7nHmd=bdg>>@0S`dDqvj08QvBj;;aEP*`*#W7-DHOG8U zN)|EZaCvcJpq1c9n^mg>EOh}HpS4k&9FMy6I#mFqW()BaFwXAQBX2w=LaNFYU(}DDk8WvZHV=EQhau9=acurgG=r@%f=Ro zzZW3FP();-J!BII;$3GqB_sCL#S#1LkUf2Lr1GD8CKk>N+KVjz()YC@G*qqG(Vfrm zYH#NLLVK58yRlFQhi_Y{wAziu<`nVoc!@9ESeoZ=TH!tp%#R+)=YhB}hYE=63OkbS z;M~))yZL_WtxL`|>j``qJ4GodqOsfXp(Wilp0WYW%kmlset{ zR~pAf?{R)Y_6_Bs%J(|&!cewB|)i?LyA~JFyX} zKXyXuaDvG))?i|i#j)Fs1OJ#GDOej!cMufHE(mfn#%;@paRq%|2lAOzP zHk71%v+#2);BGmrN?H{CI_G@JtfLIA)35MKSUCv(u9;}&vg`SrA7Th}5!9^5LxF?V zqtB!{XM5H3M&ILOhY@}=Z9E{wHlnwPfHEb8q+%~ffPP%pNK95-Hn=X{RBG=|U168J zeiVANKk}Wl^HwjWY;y7v=l92}^m@Kowj=umUyqSD(j9J2f7^rwC_j)LULiPRs>Ck& zU-EM5<7%}8>-`MDNELDLF}k66zP)c1IkYl9_7ZAH#|ojdmFcpZ!|FgCNf<1i0*$co z+IWO~llnv+Y1&^4y+Jt3@&_5XCQE)y-<(29C47CTLIG%w$Fg%V>U+E0Y2^dsIRrg4 z2^t1gz9OfXv3u53Ge3-jiE_epr7zHLsW^5c98v)Nk%K}6|i-%USNSJOJ@mn<`X z?eq4UR3H33fNiNZc<8$kDxu7-2HC?w{BVuaeb;5l=3vq`wAdV18I_JSE-2PPjRDRi z{CjZ|E=s{yyvV-cZ<+&V9&WtZ`+kD?KG1yM92k9LslN#~(Y)%L2gdqU-(2WVqO;|# zaA7}t!a%E_FTBd035AQJrw8}+EsdUJ*}iW{P0zGKdnTU8j4+O-FH?wX0R2tJ=pjL= z_S6i@6-T+?FQOIbZyJ!v)5qjFBsGpI^HD(9)5t(acWHiA$=f_c8Yd#HKjR$9VhqM_ z9fD)=FZI3pTz}J#^k5$nN?u&-Jj*d{8tjw`GSqnGP$qAHbMZ$cCI=P>2%Bj=IEs0oqa0` z_iQ_I!`|)b7JI++r*<2xdb1{#O`Hg)Qf15llg-WGL4x2ue+)FcLw`2v&wBl7;m>mC zG5yv0a(T<_ynA+w_X#O7>ZM?HL*XqxE+mwyWdXBvj`JK=$GDRp9fQU(b~SR;n0?R#OW0U|~ zAjJq}_i*->dt-3ds&r=uT}Ith(aaR+K5zToaMFTT=bYVhY;?{<{5iw+T@|kK1j_S3 zMZ2;>#PQc~ha`!*@@^z>sA^k`Hj< z0NIzkw=AFBw(o}uBxy7lv%~fiyQu==6t;g~%x4oMhJ*8BSvG5qXJdW}C$3w;az-wh zk>?zWSpa;u^6cHwq0SZinbrjh4)~X@gl!Gl^Q`zk`lLoUbzXXOh;t5)_Ur}D>HM|@ z%x0l*1b5w`0`Wz~2rs^gzdDePo)l`F3RYZPEPo9n5Q|3Tdqgl_M9`}2FzQ61FYFKo zvAjH&i}o*lgMkofrO>}r)_Hr9CoCM25f=P+v>0eDs><^(eS}A61;Q4NT;=dj-!0&M zx!&ys<<1@EVd`j&7-69SRt88oo8ITU^k$pL?KT@bUQNbEWSi@fO|TEDDHERGIn!+l z+y6M{L{odiXs6sf2)_{`N7JJ`ry7F<%qNz_jZWENdiFQf&|2qU{s^6CN9>6>*hcno zGqzJXFw+nJ(nO!k@E7rv?N83|uU3v*_HoEyymFXBq(n*BCw`3@A0lqM3F4yrPL`%P zt5OANw6@H8LS3M}20amPxNgIb>k!X@{g}9p){DVV|dH zm10YZ)*cx>g_RVtTuFanao6(dma&_{N}0<;DCNV_650JN^l*tO6}2^2wfk=y3V93e zDGEf-2M{^_`GHunIY)EJ@Jyt5WRAz-oEv>&?gFgS*ALzD(!0N?x^#0}AWvkQ%z z$msOb<``eVv52eDIhxBrF5X7clC>gWU8IhKe}7_iZg$#54HZw_~ybL5h0 z*5YE6LCo<=I;6U;2r2R#wuviP9iMag;ty>jf`H{tidYx>@k>$>J-Z5)_dCxUZIF=gj z@`yhHBrG}HP+=%-gYuWJ6h1e*(|m9~*I^pR1&ayd^Z2d|t&YrLWZUaG>`1F2#&jUM5p z^mpELQ?yAe2F$UG_S9_(#LnvmMuE?swhRj2kjI~T0_L)4rFB~%00lA&w!KRSM+Ohj ztuSMNVflSBgH2=4;`q1Ous&yvN-aALwQOCNQu$vkQZf!#fq!q6lG`lPh?=nb2NRJB zuzN z!|*m_jXR@7SnCD$EzJ*SaN#RUN zK?hh;>hxzE2mq2Gs~_qUZ0Z~J?de;Lt#40Jz8>?V!+0#zVVstc*kXic{2mmtbq zjGBSe^g`!llhOsL9q=0-qzLGAWuc%|6diy%E?UL;_ChuAVQ^1jh2U0zc1h0yTtQ*f zA8abD_;(8)6i{v&tbRQT_`$_mjb^JP1Li;E1JnLYG?4T(qsi! zo(Lrlu0jM`Tsm;TtTxZK~giayd{ z45B@;+`HpI{70?bu5fjC{jb|F(rV)+7|JFVhYQv~L1c&SMJ#U)+Os}=c4uwP)BfZP zN{TbLU%=bb(UH;4FOj4nPpY-2j1KDB@w?6;N#ptV22#u2+sPso;k01t7sieB1sZWi zzJ{u1^>c`feE}MTY z%*DADVv{R;nH^9SkfPj_*Oo|uJDZH;1xE(&PFcs{K%!aJI@!M1;iW#p$S_S_~@)@;0N$_un5Xj@^kN7v~bC)e6-j)jHPlXQ$Pe;^xo zh+{Sic;p@)O9V@o1<|JmVab9O7=Wv=n+9qVA**`)z-S#7g@K`h4y2=zKLjTe=jZGP zy$VGPn?OM@Yy4m8NTNygNx&dwjuYU=;a^^VL zo`Ygcz44~#qOV~AIG+<+iKJ;t>K?=Dbdw7>dNHhWMC%N>$^=v`ujRsVgPO*4A=%xj zVQ&iCv)~-qNt~0lQ(>An7-ZQ*D2A77(5;i(z%hKS0!DrTo9e^%d~j=$rK~e}n5BnV z_M`>e*CAxLCynN**%aI8+&cgoxmjBY7E5QndB8&SgdXhra;#YJd@#Mv*{`cVJ5*U9 zT)n6vI;_oIPAuy@Cu#C?>P#!sjb35Y5~wGfEl5Su08CWxZi+LZz)pdLTDKZ$XK;! z134{zD{^}!^tq=^k!Y?crrx7fHpc#vFrIN{^5%R?d#5CbSv-Ujvqn18d8kdG+qjqq zZ^di9Em^ymQRMJetxg<(NN+Z(8OHIF?;S|9^xf4soZ~GS0)U;exb{vs<@)^EW#>a1 zSYkRJbVAqC=_asc_M%`S0LNIb%zdJV;6sFum3dDD%1JBycPgk*0lQB)`Tw!^?(tDo z=id05oylYpLNdVs2?7oZ7*H^TfLz2TkZ7X8#t;Q9nwcaMG8!`DWCEd83E~Be^rRkp zN^R{+J=UZB^pbi!E%o)BH;A@a+rFu_t+lp|t$hhq+Z=0K?L~gy@4C#s5Wt@HoIie_ zu4L_JKkM?WXFcm#&${e2dtZj{v{aQ<-~H6w^7S}QhWx?w>Wf0Xq58JmdVDRnes5K< zes5j*;fpYu{wpe4-{z~|ccm;4aadum#p6))%&OqAK|~{KIrp7)-*;7@;k+X_3sR>x zp0l1}c_abSy_=Z_XRvV0TAG#<^KpNhIrimSOC&9+vp44|3+vdk*%|!_}*y3T7i|dk9~PD63ytUDg};dKOihnO4h8y?9G&J(3?u zPug`zKBdM_r^5BSca-DTf@2q86olq8iyVtoZn+nWtx5SHT<)vNC-wLk&-#HwV;ivV zAYU0D9OL?KZ(ko23>uH=8K1IaF6!Lu+x0qk9dI7(Al9ryU`}rI-9C2|Mb-}BEcuIa zNB$M|?>=54{26TB*q44n-G+UUvz6z@7GW*OZ!~VJOkZ5rh9S&s0b=-DaPPavGh+)h9tX|jW}rG)s7;`z^;!;YhFQWs6Tt}q4#r{k z#SVelI}?Jc z;rrRK<=l=XwzAer8IJuE)}~`;z{Khk5JB9^6A<@Ez2%bis;^;h0xy6X2fr|{RC1Sj zor~fI*>_+w8}LD4#~_V`t6HzhXE>ai*H*l`^o^AZ3qQ=ws=9$ouwU4hKlap*P$>2g z>$2XKVQ8{WxsmuNB5DRMD#7q^>$P=l&ot~izrU{S!m*DaoXgL;tZ^-#zVfk71gaS{ zUU~OOUDk7BU%=iZ4mOnVAxmd9-X*ac-{K*0(A)VHd>-;~3^8de*q^Chy}0lmycZqA z9X5Ka?|wS7Xu7VNA2vBWwg!!ndG?Z7pW_*En7_<^XXS!h8}Vef4GX=|mp~@#YrAhQ z@e91FgF)X?L3M4LOZ;QQ62UuT@f-+m-o&n11(pC~^%y2G?9Dm;47zLa>I-gu3=cx3 zwLyzPgEOal@SyZ4o_S(0yZgi3vHT9+2IW}7c#JicFg);wJ%YW~?pLx7jX~osE3V$V zHiTc_rO$*yrKjzFC#x4f$+7r(K(xYMCMkh^a|hH7OgYV1SdW+I>|HzaFyu7wR6X8R za(ooyE>7*@*()B-)Z&v5IPcRi@N)g$58(LWOc1e@ZRxi{O%9my3DS{ukL2h44~UQ zH})N8`|!R++g{+b(C%#UvZ2vB##%jU!C?jvuaDd1-L_tFPfjQa>yV<*4K< z8-v^MWtvR#F)V?ImK}etZsiq7j-MK4;RnEEy^8u%2j20TAT>|NmoxWGy>cpl{RTD6 z{{;Lus4Zie}VA{HIbz82AVQ_>%Osqf0C^Vk7YPv_-;spt&Mszj>S@a3!QEGB%X~OE{Jdresd2 zoy!r&P|WYbp{lcekPZ%BoD-|V7aYr_`PsXlV0B$66~HyPE$6F~5%8@A`uv#V{9fjf z9{M|f4z{Ln;N9c(yT48Kte3}&>IZH=-iRkbgM6|1?Oz~aZU}RYzJB!~^%k*#UfA_d z{(c3M@r>o9`qe)vyyFm(ymsUIfhT|8|0|x~!1^E4f0!GblRJ-Ak|#fUZ#_QswS}0U zzrC?{QO&+}IoyiC?__tt;J^7V(sE2gOUm5Gr~W5W>U@{rGkM^*a<)ZU%q=Ru^fX=5Cod-$h z9quT&>7*QVu8<7bb4I>AW#8m}oxpB z-k^x{Sp?=FV(bdCDj#NoHa;`= zwc}I2j=o3oU&)Y1oAURMstmiMy!Za6^4RI+`6&$fm?2^M#6DStAp(o_u_pXd^7zQu zhX9}k{0$w(uPN0BDdn+c4Bd^Bk|)nUMde>@QmT^O={;0``bSOGu9-VM9}HoK2QzLA zLuB&v%mH&*1x~*s?-i$-%?}%b$LD<)GCV%-$MTwx*RRU!Kg;V!<@GLkt(Vs<^xEU| zw#xe-KuwO%dsbdI$m<*OdV!2xDeupd*IDvfD6c+w{f$i1E3ZG5*YC*dVR`*GdHrAV z`Vo2EEw77YUd3lrhHQ}6T6z6_8Tt9Ry#8E<%#+tkk;@jHylZHyz6dkg2E3qwPg%ZF zRa{&6l}&hKz;Fr9*zzdU?14tS#^L!?9!9mSZ#1m_PO6~#_#q@Ht6lwE>Ss8A=OpRu zD;Uk!eDekVAp>iz$4) zv+LTfya>ydU904e`3jc~e{~X6tz+e7CH&nO*_i0Lfjl>}et?ITy}$RZ9+**g=;!|W zEc7`1^7s4rspUYe{mb7opa1EWJl;b zNBq1u(QMuXcD#zQaeUFK9`Dafo&CE*IqBk#!MlB{{6)Rz*WvNh@goT9{S|&lR*(0p z_MU|oH>L|!e7=guQ$EP;%;DWH9zQ&YL>8U`;q>-uQ1}3+XmzV=ih}qE8-IC%+feTs z+?MdRq!*u+KNPM%{%r5J>UWQxr3*=a!sI^_(LqN43eh>Q?IxP>1NnJ%h4|PaKI?c$ zmF}sqT|aMqH(pJ(iPgoj1w}f2(nIQ{tNbu#$ z@(|a7$eKNMd4~(XlGm{}czAFi4|&)686Viod{utL2bj;$b&zB>BwcGEZ_S=6%P#-R zcsGhH8oBdLsk%Uke)%#?PQ{+OpeC(SAJ*mTq9yv}wSGw*$7~01iXeCx6ZkzrM3G-e zCA@t)-V&Pko3(|BW@{XWOmcC%v)MO(_zLXo;1F#?;U&-3uYR`hw)bJ6*}Z1Zn|Mt? z;cY)d@2cPRwg?M>RV!{piP%2*ciG?b;{^wWcl2Nc#tTlZr$2pbqRSd(0*Jow&chHo z_P_DoQoJ4gSh)VYXYs=yp4c}D9z+67uJEoky16p#1(JF2O<`QFt-_@>^30!i;+3mA zuf!{CcV2@R@$QU95Po+*=m6e(K*9Tm6?|}%@XtH<_AB_20}6h8Siw(^0@m$1L~iSL zJw;HzYfJ%Eh24FeG3~1Z|F4YV-MjUNUdz68;FI_FOEr3_`uNXT=X>&aLKSyA@5$A7 z2n%Pz^c}*gGGY1-VUbLjzDqRZ^^;gbE&;Fu3L^kEtS||>e4}_LHQyC|81JK_0WX!y5;DJ@?uz6NhBjLhI!@1Fqgb;IqH-b zFP;ZW>9`J`gsk2wMQi^cxZWsM_2KQyNB&JW|N6uS_L z9dar*6KuOlzF%MVw8BJF2shV;acSia6kgi9^Ga;)?7Sw7OO)?CzYHItO*Az!S%k@w zh^Vh(x<;mpFkKRQO4`s<0_dp%lB1scprc^rm2st`e(LCvjLgYCbc$UaGE&%}!U(8g z3L^kEq%Z>No5BcyjVO!&*r>uJ=UWQYes`!a zT>{}@uX(&MggAc@KAW41o%x3IhSk`SlfJ2Nf$z0xs(EaB3-BCmL9V2R&leSq*6lh* zArvmCP8Kex$8S1oitroHhN3DAHVAA)U=;(g6WCA`Mo2kA!VC!&hVqMgzknd{G`h2} z?2szipPpgs17FhzrpX~kuW_U-OlK7$bCLWVvUfc4;v4yHMI7!t@|(}%ahV#Q2CxpA zdiZ7>%KY;4_5a(aT|?m)U%~;OZoJ}|1J`a=>MQ}tamX6a3|S3(uldiKz1O^hq2`)D z*X+6G_+f;+3FHq9dH1kKUWoh+!v82!f*$a#}!N!+7nihVj~29l>Q6o1E}~hQk_;0%~LKw&Fcs zp1^{a&*4NsTkxH?8@r7=ZGCX3Z4U0VrP)~{O)>y&3xG5#H4Y=p8rb|F1^-9M|55UP zl>8sn{2$f)AKj(+Kf3ELp{?Rla z`K7Xlum4H5=|ZeKRclUc_b!(WX!65s;eF>7+`2Y3!=Yd7)vereUk5VXHQV&12D? zn!uve$I=hs=q8-TWqtd9F6+a1;3dbBF1+km#D%Xo*670Pj#atvO~=X= zUd8gBw(GZv`0cuW8GZ+9%Xg3Bz2NwwU#$FH987H-iy#eGRrncv#)02)=6A>^go*00 zN?Tryl-FDvA0%FE<3q&#HZJ9P`;Rm7Ofvq}f6UeIl?^`;m04{@0FbLBAphguKJYhF(KN1}`}leqG|7lK!tU{Dg@&zvIT=`jf`x zZoAe2y#9yE#Ft*Q)%p1g0&WC1tgI=jt1he^o`f-R_vjhBkNEfE?v9$G;&h&TM|RIM ze3#NeB$v+F21b7>zmzFow&&ajGx{XuS&Vn&IrQt;3t2ke!(Ts2_>1}b?$amd&qe>l zDnP!HKR+INYW~W>!m-LZ8U7Cte>^{fj}w2$#$|uJ&&K;?db~MZ(|cQ{xA7N=-)H0d ziQjJHE2vLt8{b5{-Ns9ZH{19@=C85w1H>zByr1}78;=k#ws9H%_~oj84t))0`d^s( zS~fO1=ulMM1JV9cUTK}*;O!evpy%n&E5-&-LGK|fy0rYHe2Q)Qb>!b~<5k4dCjEfq z2mL2>tQ_LNIZ+&DeG;#To{#*Z$X}>bkf7QnK5Pw1A4*DxH@>=mOj>XoE4Iz!Q zuju+b!u&#GtimQoJkzVPu30mJ8L7~Ib|_?@1_V2gxB%6 z`*N3)~FsBj=XR#dCT8Et^ET3yk48 z8#c*ts(PTdY}X3;<7&vHwhV8F_V?l`8bbTR@&M`#jm+U`RJ?;g#_*(M@7%ExvcO*< z;zdq~0ntstu`E^9vaz4y$k^c5Ys27(zmNe-Ws)N@R0W2{et0-@)`I*x8=wKdW~sp| z&yW?imK}ZU6F+t}g{c+38#=b>Nj!qT1#bd{ydPj<{qnGtINIs&U5cZfvMN(>Bdd|C z4}0?2_T^<`U;PjH1ZWbEOg%TY6xiU{8t{gyVRybRJXWrdIv{0Z=KvYlH;hu)g3d~z z{=Xa>W_ASg{asR@WazJ+${Z5-Ic|AKKqb+=pTFTijUdGn^b!fFeTc(qTmA(7pG z$l10Y@9OI$lKC+BA$%-PgoH>f;#cW$k_um?$9D17TJH;hbK$?tyFdxbUXHD=gPA9;y*ZDe)c=Me4MP9Jo>hyd|fz1 zTCEE|f(0K6f9I_2^YI{K?BUO-a_-HPGlcvo=i?-^8|6&EVoV=tHRV4e)1v+?|G-~V z{(N2jluY?aRsJ=nDE}9DS)FVnUH_P~{HnjG{D&XX^}ol+Ii$*e=l7?mzo-1q$h5lt z{X|UrpH}|!b@@{=;oo+B+jQ}QeVqnn~#&U|0>zaKZMsO)a}iF;AK3)nYz7zROLJFUPcA+ocj)h zqo3rZzGd?7n;b{ZW1ai?jfVez_ts|2w&Cv6@F5Lf)$j!kpVZKBbfit?3tgvRSi=ep z*J{|L;SCzztl^-BpVDwh!>2WTS;KJ+#r3M3Vh!hNxJtuD4LdcwO~Vgs_>hKAX!uPH zU)As}4gD>uoS7O{Xjr4+wHiL5>;E|o4`|q@VW);yYq(a!N)2agn5W^dT2;9(Y51gu z2Q<7#!<2^CYxrPP<$GMiuW9(QhJVm7Pp6-u;X(~-G&Jqn=V|9#b$w0z>l(i^qRKVl z^E(uNS-XO7>3ZF-@y~kb+@SMcuj4B4S%BHQyM<3;T{e5d*t$# z#+MtuH9oB2V$IJNbb0q{{9z4;Gz@8I z^bHJ|atvJN=EJ0WukddCPE=fgpF4_s4PB zpTOn158}dElRyQ80QW+Gbs@mF5F@;d^MdLk2`>-`eznER0bYjq0DhR4&@x;iD|lIn zOOluJRk)1v5?)P|m#Q_mBzYO+Mc}tVBFRfXFC)B+@=}hUfQWux!d1NErMw!K(Y3gQ z*Wog}0hg)-F3BV=p%gCtyo~Y!6#zY6MtK?MCA5uqyo_weCEQ1pm+*&h8R8}U54e=` zQpHOnFXQ|ve7GE!k!83X;71A2f(D5qVXK)Pzx`kEyOZoe=mHZ`S`%8JV z;VEB(Ye-<~FXPeRGQEZby8bd8?XPeR0YE~xzihuOonJw;zp1~GT=` z=y(~g=+|4%2)B0j@J-C$E$Fk!8P5l&Rat8n&ziE9XuDPPiOhbKJ^31oV9e1sE7TtfhpU&W)t%Xkd|bi4{j|5vz% z*#SrWSwEnv2hFNxgnGgM6#cOC~;#IiM;2H)dYJVkve>U3>)J*+}v;XV*O9)hz$A)J-fUduU zKy|zdNBb*WLw~j{f0aK==T{Kzuk$M$?XPeRv+VpbAMC%1*U-wut8kyeHO!u%{#yQi zLU3owmpJOL%U3YVpW$D{TRL7tD-*B6eFoPMpT*Gh6$GmJSJ28b@e21DT*Isr^6T`L zf|fVlgDblq$O-1a_yqzm;n2eDY`=lL&-VMXytoNxoIfkeI$gXsy~)SCS(fGdYxAFu zzPCJ6F3YxXKqw=J+`LKolM4!!^nw~IC=_zyV&l{egE2kx+ab(vV=CT_+n6d(m2W7j z@(rf)`?H<6joJB~@m7|>OuQR6n1QDLDz&M3=Xc`RS(c3( z%;t|8=ge;~L*I=X%$eUwpY6}m?07e>uoLUgJoHNcZGM&h+c@h_%%;y8+wlgo~DruP}FhXFS{AU4J)DY@+%*%MawZ%Xi|;>!!~d+vyeN zi^xZfyZ+>TbE6W@2#*Kw@wx5%p(FV4@yZ$FlxziJysQxzpjJ3;C z_TR=;tdl-#Y{x6i8P8Z7Cw5}_&iowV?er|)i4*hYcgA!4cgMT&{K?K9?reY6-gd0J z{qrU%+|V}dsq~+i$**{~E*f=p$2c_St z#?JEDM-4sI{x;6MPI{*QoAhjdcf1=Xc4GN9eRAW@@5YIF^E=bC|GVSec-|ztg`M@c z`B%9OuIeAmHMokkSy+ut4U#)G-< zrT*^nxj$|ABW*W**4U0G=8kvcdS@|1PuV|bezjj@%47YV^vu4I9q+D>**7^^ytlki zK|y{&etsT(eqLVCK;GvCg8?sY!WkC~1pKFq_og@bm^a|}TYqi-)6w^qXUb*Se#<&x z|HCP3(?5(XiJN-^jXW7g&-~7GjCbNDjW@r+P5B0Ae%>3L(4-+PQ@)93+^OQd=|lPX z!Tey*PaovVf%HC^27iAZhVI4wEdgZ9=Yhl}AWjsJfO3cYR6GH34GC1d3jh1_u)jYK zllt)Y=V9{s4P=3tkL*8qv?ZTM{r!2Ev>$(e9!9oG#v*-sCg$kiRzn>F9gQGv#{cKW0AVg=T(a!o7GX z7|a|kk~exHrCN{njoPf{0><8{`GuJuC}`FRhCcJF^a`4FfE{o2!wthFC83f~C`eD< z@FR#*IydtZV8?~)&r8gk<17T6%9Ei}`GflW77p{tb7eTy=7Pa<)%h-*l#}5&?K1mX`pW56^Roq`L$DZg`$JB%R&x%*Vr@opvYS&e@M zkmY@%{{YF)Zva`}w>0DjNr`_Cf~Gtk2g3Z(Tvcwn zh6_*_=@p|8wn-@2p!HGn+eSqpdr;3a@v zfR_UDq-P!AO@Q@)w*oc*vfk?fZv=clAmw@`AluBi{_iP$CJ%IbG)`XV9?>{?qC2Q@ zmPI$B@f?MUF^$jBxcI)JPg&BHXq>X9E7N$VLPeFv!y0eYIO|Lo(fAgHiaw3Aj&%Dq zPT9~6X`FqA?uf?OMs%YZr%p=u1I6zGjh1Mf{gbX-$a#>*5c z`ZaFaV86!Mf9QrZzEGj!h{oBk=|(k9ouv!DsQ9Ih(v@hO{hzK}@qor78mCR8>(@AK65XK2VK$^2(m3rZ-LS^{B?kUA zev8IOHO@XqH?DEoa_L@D{O{6eiN@m^FVi?}30;-OVeX{cq;c8`x}?TwgXs2X{0@bR z0~)6dqZ`uroeC94G=7)HU(`6q3A%BO&sC@h{z&mpTS`}^@v{{w>NLJn;}MPT)p(!A z2Q1d%6e`9we!Ip)FDrg&bLqkw@9Ax8i}mz~ zXnT7KFx(N{8t>W>?oOn`J-x|fB9)FwlV{@N-QnII7(IhCVRTzG-W6@_qAiSerDD?~zEFI}mi5p|x;bc6iaLotKx`(5!nc4{94A(59 zYROb$3&r4yPsKV=Whn(ucu&lj1JRaBKzi-5ZSl4k>ey}UF4#@SyX9efQ=f1uc2jRW zr6}qgi4;P661^$pZtd;aA=;6k4V6?)5!;$fD@zgUi?#KpDeQ1ZBDFP|4#!d{$U@2{ z)(7D#izRU>W=I&KAl@C_8gqzV%B!QdyN$mD@V0no0?pLhjmB*2)J-eX$J^0}@s4l5l2OzQcw1+@tDPz%JCH6P;j;A!6KyxT z`UaCA+_2>AHjZ#b2 zvsX!e9Pu_T^#`dPqLc+0dZya4|2tACya!cReM94tHN}70Wg8eD>rV7;>4aRiLf=(& zAP=_z%BV}YEeg%*GJ0o+ySlHi!$}Fcwl$unZn?v46K98SPxPW$TiJTx1!{seZ--4& zj7ds8J?t^)330=Q$TXJL#tiPM2(2U94klJgxMxRCI>tFyruVZbsX2;|L|a=gEnOzQ zw>zUZ;WW%cbc?i?i0|!!1yxow746pcuqVxaMGWw+i_e%crKqSV6bco>6(~1ZI?%f`mfj$3MKd~P zBl>c@Csy5a2}X4WAc0>0n01bsuM0hIHS^`5o)?yB$n_o9NSx<$ZcZJT3qJ{-E_}X{ z8-DsILYte}?~)hJP%bQaTCVuOas``X}gCg8Mggd_#%4`=7nyCz`T8 z`%V2kc7yZESYKN#X%D@U!QrDSpIP^gXgo)=|DwioH9n?sv+jG_g9pbHJ<6W0MB_$2 zWg0j1Dm8A_aaEr9Mh_nG;7N@ee)}|T_}im#)BgKC`8OR`{3>pRcu2?lb-<9u4gG@} zH#+d7#x0$G*n>aqNq@u>|4k1*;=y0kxM`nPJ@KR8Qv4f!#ys(_d+`3BxYLj8c$5Dv z5B|2s&ARzdo_KN0P0#PagBmyT$@j#EJn_Yz_!3Y2Oiz5+gU|KgWuE-!d+>4(Ug^PC zc<_rnc$EjQ(YTRUod<95q;K@#%^rM{#!Y|e^x%COH~QJHaicGT8aMkKk9gt_YTWFb zjcDBLyNqkx>@$UasoLAbmuuX_H+tfe8b3$(kNp~-q49$n4{Ll><7OW~yr#-C`)p+z zH~H%{ZtTk@jT`xI)_At2-|0!;r*XsICpB*D(IXl+@;|6?v(I@%+lAjW=q1p~m|)ZuT(`Xx!NA zA&r}T&m$T)_S0)GU-YCO*SMh{`jz6x=vSG>jeP1fZU#*+eXo7<+9z-S_SyrX_1D-p zul{%H^36VJOG|4MnHRSS&}J7;T0ZyX$DWGQ_Cws59HIS zc$;3}w6tJh)fL~;tygp=mK6(k$ILdaz^bn+mX3)v2*3DZd@S)I_3UU30_MPf;5t>1 zT2HD?szpe59u#yDCY#h#_RU2XFBBI5QqMs`T!g$xCN2g%AFynJdR}oo?r(;lk4!h? zW+CFwgI@%H0sK7pi;?Lf5SWkqo8hmAk8JCZyF}+AFI{9?s|Tkr&&6vgu%b$Im}DZt zS3`7#xopJRY)fx6)h^>A6jt{ZJKZ+6JEVc|UT#$Bn22gdB_?F>rifr}9py?D`#>gZ zxUDPE)0>KsM1(pL<%%0(o+!Vj@5~;@)=^ZmV3(hv?u>>Uq?&~l`zND9dBs!dUPz)n z-jnRYj*r~D+!{@qdd51#r(s3O-A-rADr~b9vExt4Qlu@Bl)I{#YB_{Px%IYliJ$IG zb<1Xo)YgeeQ*(2@b=ot)gUp0ib!H>cRWlT>WNb;BDRoJ4{1w+0u8VGxGPy*_j&Y+jn3a64_rUIRe@|?1`OuF~P9P53898W{v)!);da(~M1_Ikez z^*j6QFv#0@TcRbpJsLOrL&n}+w1!p;HnSOaC0vu)tk>cZ;k7gy>$;-YEw^LC*vD2w zh%>%Am5T1r8FiLAY&=I(ZJj$DnPrOby2REbEpzz&tv8^Hha32cn~Yf!ktl|d9a|H< zJz;Kx%RN+P+^@&87d0&TwHkk;c#0hti}1|42iNVm?*?oW36a8c=tX!o9T%;*OUd{y zu>@ht%j%2M-T>*am2fq8*;FDse1kKb<3H)vXViRM3JQ-7zX8(4_GhhnGKp6w$#pbd zmn0!x(j*~Xq$DBUr6l2apMvK7Tn6HeO)|b;L%g?1;&`W%gm_((%D+vAYls&=$#A>{ zNi5!6VQ4JFJ8>6> zR)&!-0Ug_dR4HJLi2_%5q`4J%A7B(InRYu;wgc}1WIjc!40Durc_xMY{Wbh_ql`4@ z$51l+PCNd1T};B-{nzNTU-p7;a&Jmu31KO(G_G-AlowNU08fAiTM{wIA%@=A3;v?u zjS`>~DIv!X?OidvX9$F#5vut>A$5AQe^4cHk_p17-K3F723GvrM+Ls%aEqwC!7f z$7QIk9g0Q=XvDz}IpK3k{rpk&(`2FtRuL~!Te7mFV`*$<+tTIb717v=*ow*}D=U_@ zwpK1*5-pFmw;GPimsduYbSzm}zI6HW3!}?okW=6tkw4&<&6KnPVTwnR`;s3wSwi$j;B|Q~q+ZeC(qiBo!i&W2ZTaW(^{a_7Gv{OqkH(9JbN1--g71A%m8Od^a z&omcOhz@s+)K6!RXK!QQSECNC3rDA3*qC;NrDbhxE2U(XlD${iYt;grUnQlLaM~){ zP8$~3hx71PEz>L8#gJ-Q2lf<}*oJE_LSovwsT3?BjNYUyTv(1DobM^SXw$N}o;YKSN{OiX zqtimMt~JQB9eKzN?VCN$*_ZB} zjy)*5OV3b@b$8BC60pfOUmST;QvThjCuax~jmHy>0X0%Gss)v0+yH)P&uOt2fj`Ba z8K;%?=SaYKyZ=nAPo_pre%Kq?Dy*YD+h7W6X4=(vPSnSG@U{)PZ`53JY~mcuEi?8A zQ(IdD)fn3%?F;MJB1bY)mljz%$3N;aS1;Xi+*7SphceZOYi5bmO;ZNW(IVdHncYtA zG^C{Z(aBS+m3pb98y0nt5;aiGK;I93I=}^W*-+-F-!ANN-HdmX2WJ9tDH-bU#3THP zEzu)upG18qi7?7@>I3H#YnUMIJf6~kL}I$Y2BV~J7#ma2sU96 z(%bb_wA5Vh10H*4?DuuZ!BJgtv<4W@-7*i|E%K@^7golWt*mIP=!h;|v9!H1x^(68 z@(Y(#wnbwd5%Go1GlkDkc1Th8D9`~S)xZ<)`4U}Uwyq)`G_SQL;EzXo`><(>!cYIYPn{@_D zqFXQdz`0gAV>Y2!Z$U%e+i2_D?J?Ziqwf1;DFUU1r9S7HtSqKlTm%xvsYVxoD< zd!M~={y@hyAN!ZrU5d~&e(l1ZK-;?=tz83*R);;4R+s(J-Hu`GP;h)#b3OKOjtQ!F zsg*-Xu*`M6SdnoGd^>d!<|m03ZvE4o{3rG+IuIQDbe1wz#G?u_H)kD zjHNYp#62HmueRrd+>f)@Q(|%xtl|cqc+l>aHT^Fb0hBEwncF=A9PQ>axv+) z$XVqY(4}PUky6Fe@=){HYTOedhsJJkWzJP=LdH-ooTr2tku;B;iTlWfaS1O z^W++U^AfIux?F1rm7Dfb&563ukCf%)?Bitp=Wp9@*qR$rU$e)$L*A=7IiFM*T~#B3 zbLHu@CLA-VFO;JhFHV#*S5?Zga8*c~q4sLGBad3GbDz<;{rYB)hGw3GC)n~dyz9pS zNW=1-dwwTdeK~nlW7-1@c5%2?^6u!^blCH$tI9r`dGLujY+Yr^6P3rl;9jx)?Mii)$NAhg zNQ3&;EyoDz6Wf*}Fm0Q8@-YuJv)lMDsj0I(?!hELlQvVef;|H`QBMCg$xf_4)NhUw z)D6~<8gS~exvJ>KpL!yqbcnp0btwA=Thi=|87)%%!(jG)65I4|rNNvzZU8;D(tCSG zLs^<}MeVIzp=)OM3&pbc-JD^mQqtsd+czpHk)!L);{hqy0y=w zcWMvk9jYGZUy}gXRna@B;m-|Mx#M%0*Bx8Aq;aZk+ z4ex4{R@)xg)TqH3C3EnP&Y6Frr@3C9CeB|AO?@vt*_&H{3+`TAl+kpx8+WmXOO6Z9 z`7h_V#7~yn&^7gIg6y_H7VL9Mo@xiryF2cd4drw45*TafbJTM7@6$<5<>mD+nV+Ay zzB&D~hsC|=juj}!dw#>aF2f;=X8fwNF`DkI*ogG=(6hr>SFDGWo$eB7yV|j&1QkcD zt=iW&V;XyfS~G6I2-5%>>;cLGY;uxAsOs_5AnueZT{q({HQMIvImdUl&DDst*Oomx7tS-eQc??? z`-vixj(m^%2Z>& zw?{34eyLq?bzY(kdPJ==)>rMuxt}C+Hf+|W?%An5UYrzSnw8Brh-j?lS*&HF)n_8ttdN?Gq4A>DZ(G>80w_ z#qM-_SJz^AT|`s5i{}+%DgNXdVQOc_K4qYAj=0Jh+&r05xQU%uKghQlPbZ$EPP9TY zW6SAAUZ?i595WhFD%@Y1=-IfTO|IF8)J_4;{^Oqe4c-;6Js&vtr1Oq*WuKXcyvo)0 zY)oulUfHPLUSL0#S|`V2jz(&(Q4fx}^Rr!!+G>9A(4R?iQJnt0$F~^Y=D+ z&)sMNYMk4(VOFi;dvNM@rJO-2I%d|QMqi_ci!d6i^zKo(2_pwbt$K_Y+%K+&rB|*7 zud>*al4yM&7T1D7vV@)Ol%JB@g0=!n@6wY#-zF7gT>Ad`?`Fl$y-^B6W*~Q7| z2*{rDGEY=mAU~e3GrJ%s?yk zP8d)cZIDR^WD|v?D64iz>q1;BWUpU=+1G_qZWV})Nh!AD?n1OZbF?CV8&bC+CJN?O z%uv63uF|kk!-$4`8t&0>zlM)!IHV!xKGop2R#&(g@`$1oV;5+N%zg~@rAqcKdoF6{ zzXaOFrxMC>zPee?S{LKWJqz}LEi#h)+xc2BN8&7GEoLbjK%*J6F78j+nXu7y{>>Lf3m?Xezo>kz`3k~d~EYWY5gJs`f= zgEOA}aGefknv=O49Z}^wS&IKsc+lh;PAa`IxPf&KsoxuH((vZbD4cB}U2ipiqW?eU ziWh19)_mmak{dOD5e+*vOlsJtA(Maom7mD7>=y2Kz<+MBB|bNem>oyD#qebpSfXsY zJ8m+7CR4+Fn*r%&vJzX`q#{wnxt_(kxg@Y(QR?)Ql=!hah6AK~wSzX|?2_e~}|9YoSd=CCI@SlSJ82ljoUijPKKLr0j;X0Qpee2V(>~4jZX#G<>R0$_H2m371 zcsBF~{$!5nJ00>9%xb7L#=ZGI9 z9~09o^&!1F63pz5jX0%XBtC~_ot%glxGAyl%I?G zz)$3umSbR@BR+}y)5(CeNSm^wbMnLToX*M5D0Ffd@p#9UGl}b-G+%VYzm5Bo**<0@ zO+(Ge2g`9fCm(~*k-9S2Klqb5#zY+PeYl@U&q>SBc9u{2UT5Te&=EI^`}ZR6!IQ}Q zfP`Os z(@=Br!E&6=$ww#h1Q)_qc+xo2Q?J8FV_Y5XPsa<>lJ-P;&GMYi$z*+~j`$a-JpdZZv0-%sta)!5NyEZC-DA# zG5eqpUwi_;DSk?btN(!aq{H8fneJ|I@EQ1T!=K^9`UU=a_%B&L@jdvqEQI?J4u3uT z9{5M$zXtEm#v0;0pO}2UPyBI_PyBE>)*$dZSNOz@YkcB^@Grxkf3Z*80{_SN`NZ}r zpSTD9jcT7bYpqX|*ZM@+`+eg6xKG@d_KAOie;0mUFVaRs41W-Q82$(FKY{0q_S+`=MBgl* zcm%?31plKL@CU)`0mzR$&4e)-+2IorBp=3F=w&Qen>N&JDEi^}?yG-P_5Mfy@90h0 z^EN)hwyasTIl8%pua(`rWOL8vo>bfBR4?9=yEV2MKje*fMBCCmn-i@!Y~CL4Uevd| za&Z%0Zi3e!Y;H@WV*CN`X1pU;Li~WYyB&vhyOC1`El#$#8ol6tCp{hErR$m-SQm&^ zEanS5=eEnY;#A>fMB|XH3fszUb5Z^w$Pv(l%`Gn%NrW}xMMasgiY2nHkz5moUnULu z#LbX}O0%P#w8R0Qs6*#n9B+@NqjQ%r2>TdPM;Diuw{>8a_!HP79&u9|7~ zc)}Psh%oBAPPdNf9zhs4J#<(D!ww>>%nrMXVWVz(*D`F(6;?0H9ruJW@NG|+Eci1{ zp6g{$&>ber2)V)O2H8Y57>DO`iS*Mf7 zv#}Q>_S<>4CA!jEsQ}#1`6Sz4<^SLZKiJ;N9mYEB$;dWOrQ7D#S67p6qbuxMS&vQ5 zux6Dm;tEsgus5LSrRA$(Mbd%K1#RpZWa8&utMc?CtnV!F)~D+Kc9SJ4$*aWY_K~Oa zH)6~M)cPwQe$3ot$^9rD21|-QgD{7l!!n@E&6WsIPD=OHV}>MTj19!asz|v`hS(K8 zHzn6c=tc%dD+%;HON~ zB9Qd?VdrmCWaa%@djOM-ZPe1X60oEgVk1Ee^9781VvsG>cDz6pJW^qqU=iCY+{-`3aLL(C%#~P6YVBtz5+5|JfY0@ zFh7*2>?64OKkx-If3>xWWK=Wm@=Ij2V(3gE4q2;`=YZGjZ8I^1&ls}${9noney2F^ z(LjD(!TEXL%E|8sSmqDbXItM8rE`K}O7j_F3V5FK7}`8JDRSRxpV$PROXuZ^>Aq=V z(s=G@&Tw|pAIU1W8kH`Dms{dN)@uQ7mc#q=m0s~WoVV8!ODyXx{|alDUlh&A6*Jmr ziy4)(#0+1FkfneQW!H|ZWm|E10Delr0cued<}OvsM{v7%l$UW{#2#Eiyo7Q2yv5oD z)8ft0m#2Kx3JKj$8hyn^oAo+5@8hVj(^X|1^q~y5+>F ze@HWmu-`h;IB{RlFM{{_lUWg~e9p9hnD$ms6ug=%vYQJ;|NDgaC-{;JHEjo8Iu&}K zvdSsra>}?gTjbpq7*&)ox6$EqiXb=83^s>Ee-+j^@DW4LftSwmi-OJ^k^81qPJKIw zG*aIV;pPauCHs4S;DD&GUPgHiJ3{%tiX@$H;PM-$Eud7b3Jdxp`%=E$mnf50Cy6jd z-9_+kBe|3%`VR3M;DakveZ9CdPia{m^k9aV@uu6tkoPq5e-JV$y9GD5!>hhBRQ0NbkF;fX;O1U_1IWt0?ZOMtU()EOuo0myR2hDg9$#FzBi#X{`IaM{6E8X^Pn?4>;hc)I z#%GP5IZ`@2Jvl8hwUN44wHmrtk4p!9K|vTxrLuwuuN{rJE@o$IF2|H-B>1RhP0h+H z&gYav_?BjgrR@+I420@qS)wW-#8LP(NU=^%+_ySgtWLwORAz}l1o@}uiRsYI>CnyT zO=pZ3jTVkf9-fqxw4ke_m=K(W+3Dk&mJ|2oXN&x`!EsomVOjp{pqQOTpK8t%1uys^ zw@D&|k0>pHAJ_R^_yp<4k+ukL=rrk_cq!*HYt>kgyh!WI4%}EXEni_k6rxQF(WZqJ zlagNjI$+X2%JlOrsb3!Z_OwaE{ts6=BPeD(KW)5tbjnC*xF9(>l3&iYdL8Ljyo1Z+ zHI|qSpO-gyC&avJ^fp|}SKKNsqu(Exia4vNpX=UuAT%V3tw#cjEdTX^X8#L$pY{9l zkhLPv=*xp$Z-o>iS&dSTX9dMsZw15|FJS)g^kmFO@fYMH`8JoI`@&PnxvZm|GFQ7XA@kju&_35$ILOBRsU^ z7>bY3aqgz{C@3PkuvY;eyjb(^zZ0`v2$+0Jn8|z}r zHz`|8YRwtX9^t48-9I}h&VDr@N}nzeMQO;aIbVc!<9({|UAjy+4w)gnKzf1n!joRp zAI;D|Cn(N=jHe-efu=utJHDTHhY;V?^xe2_69;`~yt8f>y$^H3YFw;~g)bBkA;>g@ zIc}&ae_Yxs&J{3!9fpz}gReo-Ig~xZIj?nxbC1JLS2R6{zFj1ySBAv&$IcinN`@lT z;UUl{`zkJ9gAWAdU|vy$ji##LA4IXgGXOg$=Sh!QN{5=4tKeEj>kya=DPxD3|g>7Y_PZktGTZL~1 z=5)~S8PM+;Si{YL{?2HcHtH+%!*=J2!X`cTV9Xu;yb!;Jzi6$p8Ezb{=1C*%PC5&H z#S(Jv{JfewM_6t#=lXe=>*qorao>cw{`71yz4eUblt@uy2sT8GA>aY=+YA+3WF5NR}xl3dH|e3sY@;$1_iq`p%lL?e9Ud zpOLqZ;${dwD0$Nw*DqVvr<#6v%9Enc-w}8q$N$T~U~s(^@C8H#>Cb{~#k$_CGpJLq zg4DgF`vz|Q0I%j*YEd~FtjCibYmfiWoRXsclywng9fGV2Me$=HxxOu{anxrC5dY)W zIMbg$Nz86POU%Z8!fed%ri_P13r4WIY*cgX2$DX?vg5ef&U~^?!xjBMK%-fCFIw*e z{J*mnWQny_=>n`n+n2%SRl?>i#hSESgp!KRBgmR!zxWbv{+)CRMh5gwL?o~e(<;kf zg0?7{jrD1|2t0+v?B+u7RUl^HJ7c_LblNcO!|TXe_FG*31drVca1jYSV~G!24~o)? zNn%cWM9isd5p#T-R9%Mcx}0BYiN{ce)SYEO^7n}PEDJjUaliG895EAdrR9@gXF6eL zuAk7(B$4fBq_G1x_rM3FJXBjmWD}1T+$`#ItdIKr@tnW|mj4yMsIt^p>=z^7$F@0` zK7cKrIRb>RspbsR`z@|{a^nwiP8QzGlbyKicTItDYz;Na^)2Qf1(^F~V=S-w5!QR~ zZ-dP_XhSDnR0=(=oGMBmn>vn>X{2y?axy#k z)|_FiIm1|UhCOS}ab$Ur`QO3K6qvqXLHHhRM|@T*N7w#)c^wXY!HQ@5ueNIZ-wfPm zwFdvqPo`8q42Z~Yg}4*m^eHEcSoAMv+GN z>~v1N=$u?}&QtEScrj!_`!fQ%Wk1B_|H1pEjUSY}_XoddJun+Cil#TFB5k;e_E!r=~9u9SGD{gkeE1N$o zCE34x5c-$*xM;8{{j&p8F$$NS$v!(paBal4e8`#q^FZ?MMCw&Kwdp6YDbL&Uj~9^) zVi#qv;N}f@zpdx}d9BvxFj`)xhD_|YXtjUtt2>b+mKS)x4+&IPuIYz*SbNz%QpQ}8Gxfv?sM>uJxNtXN3w=hqGrRMkrn0HRbyfa@E-^-aF^1|mb z-`N;a8hsM~!G$<$fO8IA5H+FC!e%e(lPmX;>@@(>TgX3e71|1NxSeeVcs+d5fy?~m zC`+z0@I0XzYv0OjQ9K3f49;_~k64QJN-3T-l)`?MR!kk0b((@awB;!^+xAV(#=7AN zG1Yfa+F{>hKb}+NVQ(G#M63)Pq3?{KI3tZUQ+t+})NF|yw7**aXkEaehXUVBStqv9 z2=go`5DU=8v(jgXS?yEAEbI%+!oI+)$4bYik4_y{yu0V^x#&|Rj}@02xy`8ciB<3q zLJou(-k~YElW~^hHe1Hx3ZE#1--vS>gua|Ck+W9qajCUdA=X+2qVQhs&Z~M6T9#jA zO%nkt;*;SP421=pnA%GZiJ6#}&qUstsm#ce^i73sV|U9!@$vp+6pYfP$ueMRGlg~Y2oy>e?%qO4A;CT%89cQ9`Gb?OeqU>^|EmP0Y4d08P z7uRufWl%#Vgd4{>9lDYY)Ec*ANb)M2zkv5Tldo}td|XT?5x$>(g1n@~bNqDX{8WO7*+GXq{`NT=ulV<|Ge2GrCoLRp*!(>d!G!C2vRAt3y{ z37s?D0Z%%{o8QPd)A4MX*O_{kO`vZqY0pXI#WTBfhCWs%VrYd7a$OAl(Fy1?p^1MH z+XDJDJx^&_kt>4byc^&L1H#jpw7TbkZ|8a|}qs~Wzb;gcE~5=Yup9YT~5Tv)>j z4cBVeq~Q%3-mKxEhM&@KNW-T!d|AVB4aN1UoMH{OS+jFR%lqG;k6n*q3i!S4G(D8r(vgtS8KRd!%7WjYnZ3uuUb{PFKPIs zh6gmfN5hnc*K7D7+MDii4Zo)0%NqVcLo5|#x)~ZS)UZZF8Ho$e<2l`}y1pjtb&cN% zy>+_z&@sBp+7*0D*Xw?bf7V0i2A%(U9bc*83=Q)%3~9RWYI@HbsOkMo(JxJYhA(l8IEhc3Z4Fy%Eo~fp3ZT z;HyhAWJ97i)rKtM4N((IofsoN#PsGXYe;t|@%JZV-IvF9)b?$}GywQIeDgAf08w3Y zb#-ICE?RtDtiyXt)3NHd^tv?CS^{_RZJ7`u?y*3+0k3|qO{MsK(SP?{67OzriuGu= zHfJGzBZ3m!durnNQarwbw*y?f%zS*`M|FEUzHW+Brw=h?eWJa$D^`bd=UuGRcYXX^ zTtmDSpV`|Xew)>hh_-8ttcwR_X_v%PJ!yV?UWQ%mtL=txJRgV?;&#%%q_?Y!Z#laH zZ>2~6f0g;Kz+rV}-zch>W?gS81ySplkqC=5*pO~lObPMNUOr{12kcOi()53w)ewtr zi=Dtr8&lVIS!t+Z6ybvlpM+C5DBItwdyp!@6-y-=mF1X``6=(rSY{p z(y`{m#&~;dU1u~U<}&R%e8n`;6@w6Ccy@4NZprCyoKmdDvw*-xe#1-W-6$6OYUD>{ zy-Z&oFoiWIG8~A*S?+hYz=rwX-;9kPKoG{9}>j-pSNt~j~kX(w(#h3 zOG~sZm2QbAT3b4LyW8+4!4@WLQC}m#gKNx18Lnj!*r?G-qzDW7IB7Kv?yLhu4rkK zT`R-ceu0#!-tL)f@R)LVnW|n)Q74hVAimTW52kS$;1RZ}D~LnhJxe ziGRvE)z>4NU^Uv%ZyFP5d9=Z~=mk#vXITyF)<=^{pYgTHe*cxdvDA*nSPGw8-5Tv~ zLkGgIY>=~5a<~HqdTTReSlz=O%sUax#`~kzMU(g}F1s6lBO^i#Ye*z+>`h(*eU;y` z>`uejiRp~FT7CETs%|ta>hOo`tGYX-acr+OpKt_u7AwAzjZbEtH2MeG&9T(hcsES9 zF>K;1=(`$8q%MJ-2Vada#xO|Yi-?mwcuOp0!anYh;D!baL3OccyO>5k6@!q=6k?5S z%?Z|;@nG#^{-$WW2iCbQmXx2T6WhtFW7PPlgR;l&RCl*;z{dxrbj7jk=FFExU*kQD zp89&|8^l0VVZS6Mzce~ou!G&Gds&Yt6!^5ZE2LCx#dm}Gt?J$%#Tjo-kTIzq_MTNrLC7=SnSjJ z@8nlD*~P^G@9^) z0-q9B(*qMjJ1E6In>HuiqP_(zrU7G4A*w`6Ppq@0Ln=~BtS=_kG6X4;$rg%$)`|hW z_yqb^jGnM;*!%wf+B+BExT^b%UmHU;JX!@iR1MB>BU}){ve$1JY_xvh$iI2eUM zwX(F*ib!~oWLpkNBOaw9c<3g05~VSnyDzP5R=b;&3`^rQ+oTW;F=d-jP})!y%1{9g z-g->pv_Sg%?!9ZTjhsi*PMeP9`TYBI^uOnxbMD!@ulv7;?YG_5(bdVUY1zs1P)loX zC)YkMIjME_9|9+y=?v}_+0sefZV#L-D+87~+cT$oxbKl2C*Km_?m13-FXh~-hI3~g zwX&nfe!iQbBgO#J3XY|H{P=CB-Kh7{R%e@)731TqFYFvrb=w^od!V?a^sh@h3+h4Bv)W6?<;q=FDZ8aNu?|5+ftmmwSGv9pdmBZ;pHE |95l#^42t0 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 diff --git a/Oqtane.Package/release.cmd b/Oqtane.Package/release.cmd index f957ed98..cc12b123 100644 --- a/Oqtane.Package/release.cmd +++ b/Oqtane.Package/release.cmd @@ -1,4 +1,5 @@ dotnet build -c Release ..\Oqtane.slnx +FixProps.exe nuget.exe pack Oqtane.Client.nuspec nuget.exe pack Oqtane.Server.nuspec nuget.exe pack Oqtane.Shared.nuspec From 545096a753680835b74d846d0e4220f134132a47 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 14 Nov 2025 12:29:24 -0500 Subject: [PATCH 04/26] remove upgrade logic which removes Internal module/theme templates --- Oqtane.Server/Infrastructure/UpgradeManager.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Oqtane.Server/Infrastructure/UpgradeManager.cs b/Oqtane.Server/Infrastructure/UpgradeManager.cs index f77edd50..d57e2eb7 100644 --- a/Oqtane.Server/Infrastructure/UpgradeManager.cs +++ b/Oqtane.Server/Infrastructure/UpgradeManager.cs @@ -99,24 +99,6 @@ namespace Oqtane.Infrastructure private void Upgrade_2_0_2(Tenant tenant, IServiceScope scope) { - if (tenant.Name == TenantNames.Master) - { - // remove Internal module template files as they are no longer supported - var internalTemplatePath = Utilities.PathCombine(_environment.WebRootPath, "Modules", "Templates", "Internal", Path.DirectorySeparatorChar.ToString()); - if (Directory.Exists(internalTemplatePath)) - { - try - { - Directory.Delete(internalTemplatePath, true); - } - catch (Exception ex) - { - // error deleting directory - _filelogger.LogError(Utilities.LogMessage(this, $"Oqtane Error: Error In 2.0.2 Upgrade Logic - {ex}")); - } - } - } - // initialize SiteGuid try { From b9497cbb5685f5145fd1cf63ad1368387a7abcba Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 14 Nov 2025 12:43:40 -0500 Subject: [PATCH 05/26] allow module/theme template manifests to have custom names so that they do not conflict with .NET template.json --- .../Controllers/ModuleDefinitionController.cs | 24 ++++++++++--------- Oqtane.Server/Controllers/ThemeController.cs | 5 ++-- ...te.json => exteneral.module.template.json} | 0 ...ate.json => exteneral.theme.template.json} | 0 4 files changed, 16 insertions(+), 13 deletions(-) rename Oqtane.Server/wwwroot/Modules/Templates/External/{template.json => exteneral.module.template.json} (100%) rename Oqtane.Server/wwwroot/Themes/Templates/External/{template.json => exteneral.theme.template.json} (100%) diff --git a/Oqtane.Server/Controllers/ModuleDefinitionController.cs b/Oqtane.Server/Controllers/ModuleDefinitionController.cs index df876829..29195bbe 100644 --- a/Oqtane.Server/Controllers/ModuleDefinitionController.cs +++ b/Oqtane.Server/Controllers/ModuleDefinitionController.cs @@ -1,20 +1,21 @@ +using System; using System.Collections.Generic; -using Microsoft.AspNetCore.Mvc; -using Oqtane.Models; -using Oqtane.Shared; -using Microsoft.AspNetCore.Authorization; +using System.Diagnostics; using System.IO; -using System.Reflection; using System.Linq; +using System.Net; +using System.Reflection; +using System.Text.Json; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.DependencyInjection; using Oqtane.Enums; using Oqtane.Infrastructure; +using Oqtane.Models; using Oqtane.Repository; using Oqtane.Security; -using System; -using Microsoft.Extensions.DependencyInjection; -using System.Text.Json; -using System.Net; +using Oqtane.Shared; namespace Oqtane.Controllers { @@ -271,9 +272,10 @@ namespace Oqtane.Controllers foreach (string directory in Directory.GetDirectories(templatePath)) { string name = directory.Replace(templatePath, ""); - if (System.IO.File.Exists(Path.Combine(directory, "template.json"))) + var manifest = Directory.GetFiles(directory, "*.json"); + if (manifest.Any()) { - var template = JsonSerializer.Deserialize