UNPKG

lavva.exalushome.extalife

Version:

Library implementing communication and abstraction layers for ExtaLife API in ExalusHome system

2 lines 502 kB
"use strict";(self.webpackChunklavva_exalushome_extalife=self.webpackChunklavva_exalushome_extalife||[]).push([[443],{38:(e,t,n)=>{n.d(t,{i:()=>d});var r=n(5443);class s{constructor(){this._promise=Promise.resolve(),this._disable=()=>{}}Lock(){this._promise=new Promise((e=>this._disable=e))}Unlock(){this._disable()}WaitForLockAsync(){return this._promise}}var o=n(161),i=n(8517),a=n(5973),c=n(6282),u=n(8070),l=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class d{constructor(){this._isConnectedAndAuthorized=!1,this._syncLock=new s,this._isInFouces=!0,this._canHibernate=!0,this._session=null,this._connection=null,this._currentAppState=c.t.Disconnected,this._returnedFromSuspension=!1,this._onReturnedFromSuspensionEvent=new i.J,this._onSuspendedEvent=new i.J,this._onEnterLowPowerModeEvent=new i.J,this._onExitLowPowerModeEvent=new i.J,this._onBackButtonPressedEvent=new i.J,this._onForwardButtonPressedEvent=new i.J,this._onAppStateChanged=new a.r,this.MonitorAppState(),this._onAppStateChanged.Subscribe((e=>this._currentAppState=e)),null==navigator.userAgent.match(/Safari/i)||navigator.mediaDevices?window.addEventListener("visibilitychange",(()=>l(this,void 0,void 0,(function*(){yield this._syncLock.WaitForLockAsync(),this._syncLock.Lock(),this.IsHidden()?this.Suspend():this.ReturnFromSuspension(),this._syncLock.Unlock()})))):(window.addEventListener("onblur",(()=>{this._isInFouces&&(this._isInFouces=!1,this.Suspend())})),window.addEventListener("onfocus",(()=>{this._isInFouces||(this._isInFouces=!0,this.ReturnFromSuspension())}))),window.addEventListener("popstate",(e=>{var t,n,r,s;document.location,e.state&&("forward"==e.state.direction?(null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"Forward button pressed"),null===(n=this._onForwardButtonPressedEvent)||void 0===n||n.Invoke()):(null===(r=o.h.Log)||void 0===r||r.Warning(d.ServiceName,"Back button pressed"),null===(s=this._onBackButtonPressedEvent)||void 0===s||s.Invoke()))}))}MonitorAppState(){return l(this,void 0,void 0,(function*(){this._session=yield r.j.GetAsync("SessionService"),this._connection=yield r.j.GetAsync("ExalusConnectionService"),this._session.OnUserLoggedInEvent().Subscribe((e=>{var t;null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: logged in"),this._onAppStateChanged.Invoke(c.t.LoggedIn)})),this._session.OnUserLoggedOutEvent().Subscribe((e=>{var t;null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: logged out"),this._onAppStateChanged.Invoke(c.t.LoggedOut)})),this._connection.OnConnectionStateChangedEvent().Subscribe((e=>{var t,n,r,s,i,a;switch(e){case u.KN.ConnectedAndAuthorized:null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"App state changed to: connected"),this._isConnectedAndAuthorized=!0,this._onAppStateChanged.Invoke(c.t.Connected);break;case u.KN.Disconnected:null===(n=o.h.Log)||void 0===n||n.Warning(d.ServiceName,"App state changed to: disconnected"),this._isConnectedAndAuthorized&&this._onAppStateChanged.Invoke(c.t.Disconnected),this._isConnectedAndAuthorized=!1;break;case u.KN.Connecting:null===(r=o.h.Log)||void 0===r||r.Warning(d.ServiceName,"App state changed to: connecting"),this._onAppStateChanged.Invoke(c.t.Connecting);break;case u.KN.Disconnecting:null===(s=o.h.Log)||void 0===s||s.Warning(d.ServiceName,"App state changed to: disconnecting"),this._onAppStateChanged.Invoke(c.t.Disconnecting);break;case u.KN.Reconnecting:null===(i=o.h.Log)||void 0===i||i.Warning(d.ServiceName,"App state changed to: reconnecting"),this._onAppStateChanged.Invoke(c.t.Reconnecting);break;case u.KN.Failed:null===(a=o.h.Log)||void 0===a||a.Warning(d.ServiceName,"App state changed to: failed"),this._onAppStateChanged.Invoke(c.t.FailedToConnect)}}))}))}get CurrentAppState(){return this._currentAppState}OnAppStateChanged(){return this._onAppStateChanged}Suspend(){var e,t;this.IsHibernationAllowed()&&(this._returnedFromSuspension=!1,this._onSuspendedEvent.Invoke(),this._onAppStateChanged.Invoke(c.t.Suspended),null===(e=o.h.Log)||void 0===e||e.Warning(d.ServiceName,"App state changed to: suspended"),null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"App switched to background"))}ReturnFromSuspension(){var e,t;this.IsHibernationAllowed()&&(this._returnedFromSuspension=!0,this._onReturnedFromSuspensionEvent.Invoke(),this._onAppStateChanged.Invoke(c.t.ReturnedFromSuspension),null===(e=o.h.Log)||void 0===e||e.Warning(d.ServiceName,"App state changed to: returned from suspension"),null===(t=o.h.Log)||void 0===t||t.Warning(d.ServiceName,"App switched to foreground"))}EnterLowPowerMode(){this._onEnterLowPowerModeEvent.Invoke(),this._onAppStateChanged.Invoke(c.t.EnteredLowPowerMode)}ExitLowPowerMode(){this._onExitLowPowerModeEvent.Invoke(),this._onAppStateChanged.Invoke(c.t.ExitedLowPowerMode)}IsWorkingInWebView(){return"file:"===window.location.protocol||null!=navigator.userAgent.match(/Safari/i)&&!navigator.mediaDevices}IsHidden(){return document.hidden}IsActive(){return!this.IsHidden()}IsInBackground(){return this.IsHidden()}ReturnedFromSuspension(){return this._returnedFromSuspension}IsHibernationAllowed(){return this._canHibernate}DisallowHibernation(){this._canHibernate=!1}AllowHibernation(){this._canHibernate=!0}OnReturnedFromSuspension(){return this._onReturnedFromSuspensionEvent}OnSuspended(){return this._onSuspendedEvent}OnEnterLowPowerMode(){return this._onEnterLowPowerModeEvent}OnExitLowPowerMode(){return this._onExitLowPowerModeEvent}OnBackButtonPressed(){return this._onBackButtonPressedEvent}OnForwardButtonPressed(){return this._onForwardButtonPressedEvent}GetServiceName(){return d.ServiceName}}d.ServiceName="AppStateService"},161:(e,t,n)=>{n.d(t,{h:()=>o});var r=n(4907),s=n(5973);class o{constructor(){this._services=new Map,this._serviceRegistrationEvent=new s.r}static get Instance(){const e=globalThis;if(e.__dc_instance)return e.__dc_instance;const t=new o;return e.__dc_instance=t,"undefined"==typeof window||window.LavvaDI||(window.appservices=t),this.Log=new r.g,this.Log.Warning("Initializing DependencyContainer"),t.RegisterService(this.Log),this.IsInitialized=!0,t}RegisterService(e){this._services.set(e.GetServiceName(),e),this._serviceRegistrationEvent.Invoke(e)}GetService(e){return this._services.get(e)}GetServiceAsync(e,t){return this._services.has(e)?Promise.resolve(this._services.get(e)):new Promise(((n,r)=>{const s=r=>{r.GetServiceName()===e&&(this._serviceRegistrationEvent.Unsubscribe(s),null==t||t.CancellationEvent.Unsubscribe(o),n(r))},o=()=>{this._serviceRegistrationEvent.Unsubscribe(s),r(new Error("cancelled"))};null==t||t.CancellationEvent.Subscribe(o),this._serviceRegistrationEvent.Subscribe(s)}))}GetServiceWithTimeoutAsync(e,t){return this._services.has(e)?Promise.resolve(this._services.get(e)):new Promise(((n,r)=>{const s=t=>{t.GetServiceName()===e&&(window.clearTimeout(o),this._serviceRegistrationEvent.Unsubscribe(s),n(t))},o=window.setTimeout((()=>{this._serviceRegistrationEvent.Unsubscribe(s),r(new Error(`timeout waiting for "${e}"`))}),t);this._serviceRegistrationEvent.Subscribe(s)}))}}o.IsInitialized=!1},333:(e,t,n)=>{var r;n.d(t,{y:()=>r}),function(e){e[e.Device=1]="Device",e[e.Person=2]="Person",e[e.DevicesGroups=3]="DevicesGroups"}(r||(r={}))},934:(e,t,n)=>{n.d(t,{N:()=>c});var r=n(5443),s=n(161),o=n(3386),i=n(2734),a=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class c{constructor(){this._manualDeviceProtocolServices=new Map}GetServiceName(){return c.ServiceName}RegisterManuallyPairedDevicesProtocol(e){var t;null===(t=s.h.Log)||void 0===t||t.Debug(c.ServiceName,`Registering new manual device protocol service: ${e.GetServiceName()}`),this._manualDeviceProtocolServices.set(e.GetServiceName(),e)}GetDevicesForManualPairingAsync(e){return a(this,void 0,void 0,(function*(){const t=[...this._manualDeviceProtocolServices.values()],n=[];if(null!=e)if(Array.isArray(e))for(let r=0;r<t.length;r++)e.any((e=>e==t[r].ProtocolExtensionGuid))&&n.push(...yield t[r].GetDevicesForManualPairingAsync());else{const r=t.find((t=>t.ProtocolExtensionGuid==e));null!=r&&n.push(...yield r.GetDevicesForManualPairingAsync())}else for(let e=0;e<t.length;e++)n.push(...yield t[e].GetDevicesForManualPairingAsync());return n}))}AddManuallyPairedDeviceAsync(e){return a(this,void 0,void 0,(function*(){var t;const n=[...this._manualDeviceProtocolServices.values()].find((t=>t.ProtocolExtensionGuid==e.ProtocolExtensionGuid));return null!=n?n.AddManuallyPairedDeviceAsync(e):(null===(t=s.h.Log)||void 0===t||t.Error(c.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddManuallyPairedDeviceAsync()"),r.j.Get(o.u.ServiceName).ExitConfigurationModeAsync(),i.T.Failed)}))}GetRegisteredProtocolGuids(){return[...this._manualDeviceProtocolServices.values()].map((e=>e.ProtocolExtensionGuid))}}c.ServiceName="ManualDeviceService"},1966:(e,t,n)=>{n.d(t,{MU:()=>s,Y3:()=>a,YW:()=>u,az:()=>c,j$:()=>r,lc:()=>o,tJ:()=>l,zN:()=>i});class r extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class s extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class o extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class i extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class a extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class c extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class u extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class l extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}},2348:(e,t,n)=>{var r,s,o;n.d(t,{AM:()=>r,zA:()=>s}),function(e){e[e.NoTasksExecuting=0]="NoTasksExecuting",e[e.ExecutingTasks=1]="ExecutingTasks"}(r||(r={})),function(e){e[e.Default=0]="Default",e[e.Monostable=1]="Monostable",e[e.Bistable=2]="Bistable",e[e.Gate=3]="Gate",e[e.Gateway=4]="Gateway"}(s||(s={})),function(e){e[e.None=0]="None",e[e.OnOff=1]="OnOff",e[e.OnOffLights=2]="OnOffLights",e[e.OnOffWithDelay=3]="OnOffWithDelay",e[e.GateSwitchState=4]="GateSwitchState",e[e.GatePulse=5]="GatePulse",e[e.GateOpenClose=6]="GateOpenClose",e[e.GatewayOpenClose=7]="GatewayOpenClose",e[e.GatewayPulse=8]="GatewayPulse",e[e.Monostable=9]="Monostable",e[e.Dimmer=10]="Dimmer",e[e.Blind=11]="Blind",e[e.Roller=12]="Roller",e[e.TemperatureSensor=13]="TemperatureSensor",e[e.BrightnessSensor=14]="BrightnessSensor",e[e.HumiditySensor=15]="HumiditySensor",e[e.PowerMeter=16]="PowerMeter",e[e.RGBLight=17]="RGBLight",e[e.RGBWLight=18]="RGBWLight",e[e.LightsWarmth=19]="LightsWarmth",e[e.TemperatureControl=20]="TemperatureControl",e[e.BlindsWithPrecisePosition=21]="BlindsWithPrecisePosition",e[e.MovementSensor=21]="MovementSensor",e[e.SimpleRemote=22]="SimpleRemote",e[e.BlindsRemote=23]="BlindsRemote",e[e.DistanceSensor=24]="DistanceSensor",e[e.Multisensor=25]="Multisensor",e[e.IOTransmitter=26]="IOTransmitter",e[e.DoorOpenClose=27]="DoorOpenClose",e[e.WindSensor=28]="WindSensor",e[e.BatterySensor=29]="BatterySensor",e[e.PressureSensor=30]="PressureSensor"}(o||(o={}))},2558:(e,t,n)=>{n.d(t,{V:()=>s});var r=n(333);class s{constructor(){this._guid="",this._ownerGuid="",this._ownerIdentity="",this._base64Image="",this._imageType=r.y.Device,this._dateTime=""}get Guid(){return this._guid}get OwnerGuid(){return this._ownerGuid}get OwnerIdentity(){return this._ownerIdentity}get Base64Image(){return this._base64Image}get ImageType(){return this._imageType}get DateTime(){return this._dateTime}set Base64Image(e){this._base64Image=e}set Guid(e){this._guid=e}set OwnerGuid(e){this._ownerGuid=e}set OwnerIdentity(e){this._ownerIdentity=e}set ImageType(e){this._imageType=e}}},2734:(e,t,n)=>{var r;n.d(t,{T:()=>r}),function(e){e[e.ControllerResponseTimeout=-4]="ControllerResponseTimeout",e[e.DeviceNotFound=-3]="DeviceNotFound",e[e.DeviceResponseTimeout=-2]="DeviceResponseTimeout",e[e.Failed=-1]="Failed",e[e.Unknown=0]="Unknown",e[e.Executed=1]="Executed"}(r||(r={}))},2824:(e,t,n)=>{n.d(t,{M0:()=>r,YZ:()=>s,gf:()=>i,ku:()=>o});class r{static GenerateUUID(){var e=(new Date).getTime(),t="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(n){var r=16*Math.random();return e>0?(r=(e+r)%16|0,e=Math.floor(e/16)):(r=(t+r)%16|0,t=Math.floor(t/16)),("x"===n?r:3&r|8).toString(16)}))}static GenerateMd5(e){let t="0123456789abcdef";function n(e){let n,r="";for(n=0;n<=3;n++)r+=t.charAt(e>>8*n+4&15)+t.charAt(e>>8*n&15);return r}function r(e,t){let n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function s(e,t,n,s,o,i){return r(function(e,t){return e<<t|e>>>32-t}(r(r(t,e),r(s,i)),o),n)}function o(e,t,n,r,o,i,a){return s(t&n|~t&r,e,t,o,i,a)}function i(e,t,n,r,o,i,a){return s(t&r|n&~r,e,t,o,i,a)}function a(e,t,n,r,o,i,a){return s(t^n^r,e,t,o,i,a)}function c(e,t,n,r,o,i,a){return s(n^(t|~r),e,t,o,i,a)}let u,l,d,h,g,p=function(e){let t,n=1+(e.length+8>>6),r=new Array(16*n);for(t=0;t<16*n;t++)r[t]=0;for(t=0;t<e.length;t++)r[t>>2]|=e.charCodeAt(t)<<t%4*8;return r[t>>2]|=128<<t%4*8,r[16*n-2]=8*e.length,r}(""+e),f=1732584193,v=-271733879,m=-1732584194,y=271733878;for(u=0;u<p.length;u+=16)l=f,d=v,h=m,g=y,f=o(f,v,m,y,p[u+0],7,-680876936),y=o(y,f,v,m,p[u+1],12,-389564586),m=o(m,y,f,v,p[u+2],17,606105819),v=o(v,m,y,f,p[u+3],22,-1044525330),f=o(f,v,m,y,p[u+4],7,-176418897),y=o(y,f,v,m,p[u+5],12,1200080426),m=o(m,y,f,v,p[u+6],17,-1473231341),v=o(v,m,y,f,p[u+7],22,-45705983),f=o(f,v,m,y,p[u+8],7,1770035416),y=o(y,f,v,m,p[u+9],12,-1958414417),m=o(m,y,f,v,p[u+10],17,-42063),v=o(v,m,y,f,p[u+11],22,-1990404162),f=o(f,v,m,y,p[u+12],7,1804603682),y=o(y,f,v,m,p[u+13],12,-40341101),m=o(m,y,f,v,p[u+14],17,-1502002290),v=o(v,m,y,f,p[u+15],22,1236535329),f=i(f,v,m,y,p[u+1],5,-165796510),y=i(y,f,v,m,p[u+6],9,-1069501632),m=i(m,y,f,v,p[u+11],14,643717713),v=i(v,m,y,f,p[u+0],20,-373897302),f=i(f,v,m,y,p[u+5],5,-701558691),y=i(y,f,v,m,p[u+10],9,38016083),m=i(m,y,f,v,p[u+15],14,-660478335),v=i(v,m,y,f,p[u+4],20,-405537848),f=i(f,v,m,y,p[u+9],5,568446438),y=i(y,f,v,m,p[u+14],9,-1019803690),m=i(m,y,f,v,p[u+3],14,-187363961),v=i(v,m,y,f,p[u+8],20,1163531501),f=i(f,v,m,y,p[u+13],5,-1444681467),y=i(y,f,v,m,p[u+2],9,-51403784),m=i(m,y,f,v,p[u+7],14,1735328473),v=i(v,m,y,f,p[u+12],20,-1926607734),f=a(f,v,m,y,p[u+5],4,-378558),y=a(y,f,v,m,p[u+8],11,-2022574463),m=a(m,y,f,v,p[u+11],16,1839030562),v=a(v,m,y,f,p[u+14],23,-35309556),f=a(f,v,m,y,p[u+1],4,-1530992060),y=a(y,f,v,m,p[u+4],11,1272893353),m=a(m,y,f,v,p[u+7],16,-155497632),v=a(v,m,y,f,p[u+10],23,-1094730640),f=a(f,v,m,y,p[u+13],4,681279174),y=a(y,f,v,m,p[u+0],11,-358537222),m=a(m,y,f,v,p[u+3],16,-722521979),v=a(v,m,y,f,p[u+6],23,76029189),f=a(f,v,m,y,p[u+9],4,-640364487),y=a(y,f,v,m,p[u+12],11,-421815835),m=a(m,y,f,v,p[u+15],16,530742520),v=a(v,m,y,f,p[u+2],23,-995338651),f=c(f,v,m,y,p[u+0],6,-198630844),y=c(y,f,v,m,p[u+7],10,1126891415),m=c(m,y,f,v,p[u+14],15,-1416354905),v=c(v,m,y,f,p[u+5],21,-57434055),f=c(f,v,m,y,p[u+12],6,1700485571),y=c(y,f,v,m,p[u+3],10,-1894986606),m=c(m,y,f,v,p[u+10],15,-1051523),v=c(v,m,y,f,p[u+1],21,-2054922799),f=c(f,v,m,y,p[u+8],6,1873313359),y=c(y,f,v,m,p[u+15],10,-30611744),m=c(m,y,f,v,p[u+6],15,-1560198380),v=c(v,m,y,f,p[u+13],21,1309151649),f=c(f,v,m,y,p[u+4],6,-145523070),y=c(y,f,v,m,p[u+11],10,-1120210379),m=c(m,y,f,v,p[u+2],15,718787259),v=c(v,m,y,f,p[u+9],21,-343485551),f=r(f,l),v=r(v,d),m=r(m,h),y=r(y,g);return n(f)+n(v)+n(m)+n(y)}static IsIosNative(){var e;const t=null!=window.webkit&&null!=window.webkit.messageHandlers,n=void 0!==(null===(e=window.nativeEvent)||void 0===e?void 0:e.exalusFindController);return t&&n}}class s{static Delay(e){return new Promise((t=>setTimeout(t,e)))}}function o(e){return new Map(Object.entries(e))}function i(e,t="export.csv"){const n=new Blob(["\ufeff",e],{type:"text/csv;charset=utf-8;"}),r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download=t,s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(r)}},2990:(e,t,n)=>{n.d(t,{Wn:()=>u});var r=n(5443),s=n(9315),o=n(4756),i=n(161),a=n(9595),c=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class u{constructor(){this._extensionInfoCache=new Map,this._protocolInfoCache=new Map,this._isExtensionInfoInitialized=!1,this._semaphore=new s.z(1)}GetServiceName(){return u.ServiceName}GetExtensionsInfoAsync(e){return c(this,arguments,void 0,(function*(e,t=!1){var n;null===(n=i.h.Log)||void 0===n||n.Debug(u.ServiceName,`Getting ExtensionsInfo, data loaded from cache: ${!t}`);let r=yield this._semaphore.AcquireAsync();try{this._isExtensionInfoInitialized&&!t||(yield this.GetExtensionInfoFromControllerAsync())}finally{r.Release()}if(0==[...this._extensionInfoCache.values()].length)return[];if(null!=e){const t=this._extensionInfoCache.get(e);if(null==t)throw new h("Cannot get ExtensionsInfo, extension not found.");return[t]}return[...this._extensionInfoCache.values()]}))}GetProtocolInfoAsync(e){return c(this,arguments,void 0,(function*(e,t=!1,n=!1){var r;if(null===(r=i.h.Log)||void 0===r||r.Debug(u.ServiceName,`Getting ProtocolInfo, data loaded from cache: ${!t}`),t&&(yield this.GetProtocolExtensionInfoFromControllerAsync()),0!=[...this._protocolInfoCache.values()].length||n){if(0==[...this._protocolInfoCache.values()].length)throw new h("Cannot get ProtocolInfo, controler may return empty list of Extensions or other unknown error occurs!")}else yield this.GetProtocolInfoAsync(e,!0,!0);if(null!=e){const t=this._protocolInfoCache.get(e);if(null==t)throw new h("Cannot get ProtocolInfo, extension not found.");return[t]}return[...this._protocolInfoCache.values()]}))}GetExtensionInfoFromControllerAsync(){return c(this,void 0,void 0,(function*(){const e=new l,t=yield r.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(e,16e3,!1);if(null==t||null==t.Status)throw new h("Cannot get ExtensionsInfo from controller, controller response does not contain data!");if(t.Status!=o.nW.OK)throw new h(`Cannot get ExtensionsInfo from controller! Response status: ${t.Status}`);if(null==t.Data)throw new h("Cannot get ExtensionsInfo from controller, controller response does not contain data!");this._extensionInfoCache.clear(),t.Data.forEach((e=>{this._extensionInfoCache.set(e.ExtensionGuid,e)})),0!=[...this._extensionInfoCache.values()].length&&(this._isExtensionInfoInitialized=!0)}))}GetProtocolExtensionInfoFromControllerAsync(){return c(this,void 0,void 0,(function*(){var e;const t=new d,n=yield r.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(t,16e3,!1);if(null==n||null==n.Status)throw new h("Cannot get ProtocolInfo from controller, controller response does not contain data!");switch(n.Status){case o.nW.OK:if(null==n.Data)throw new h("Cannot get ProtocolInfo from controller, controller response does not contain data!");this._protocolInfoCache.clear(),n.Data.forEach((e=>{this._protocolInfoCache.set(e.PublicGuid,e)}));break;case o.nW.ResourceDoesNotExists:null===(e=i.h.Log)||void 0===e||e.Debug(u.ServiceName,"Cannot get ProtocolInfo from controller, controller software does not implement this yet, update controller to the newest software!");break;default:throw new h(`Cannot get ProtocolInfo from controller! Response status: ${n.Status}`)}}))}}u.ServiceName="StatisticsInfoService";class l extends o.CP{constructor(){super(),this.Resource="/controller/extensions/",this.Method=o.IT.Get}}class d extends o.CP{constructor(){super(),this.Resource="/controller/protocols/",this.Method=o.IT.Get}}class h extends Error{constructor(e){super(e),this.message=e,this.name="CannotGetExtensions"}}},3386:(e,t,n)=>{n.d(t,{u:()=>y});var r,s=n(8517);!function(e){e.CannotExportConfiguration="CannotExportConfiguration"}(r||(r={}));var o=n(5973),i=n(5443),a=n(9595),c=n(5329),u=n(4756),l=n(4665),d=n(4506),h=n(2824),g=n(2990),p=n(8069),f=n(6823),v=n(161),m=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class y{OnConfigurationChangedEvent(){return this._onConfigurationChangedEvent}GetServiceName(){return y.ServiceName}constructor(){this._connection=null,this._session=null,this._localStorage=null,this._onEnteredConfigurationEvent=new s.J,this._onExitedConfigurationEvent=new s.J,this._onConfigurationTimeCheckedEvent=new o.r,this._configurationTime=new Date,this._appEnteredConfigurationMode=!1,this._didConfigurationChange=!0,this._didSynchronization=!1,this._onSynchronized=new s.J,this._onConfigurationChangedEvent=new s.J,this._connection=i.j.Get(a.G.ServiceName),this._session=i.j.Get(c.Q.ServiceName),this._localStorage=i.j.Get(l.s.ServiceName),this._connection.SubscribeTo("/info/configuration/mode/entry",(e=>{i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode||this._onEnteredConfigurationEvent.Invoke()})),this._connection.SubscribeTo("/info/configuration/mode/exit",(e=>{var t;i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode||this._onExitedConfigurationEvent.Invoke(),null===(t=this.OnConfigurationChangedEvent())||void 0===t||t.Invoke()}))}CheckIfControllerSoftwareVersionIsEnough(e,t){var n,r,s;const o=null!==(s=null===(r=null===(n=this._session)||void 0===n?void 0:n.User)||void 0===r?void 0:r.SoftwareVersion)&&void 0!==s?s:null;if(!o||!o.includes("."))return!1;const i=o.split(".");if(2!==i.length)return!1;const a=i.map((e=>parseInt(e,10)));if(a.some((e=>Number.isNaN(e)||e<0)))return!1;const[c,u]=a;return c>e||c===e&&u>=t}ImportControllerConfigurationAsync(e){return m(this,void 0,void 0,(function*(){var t,n,r;let s=yield e.text(),o=this.SplitStringBySize(s),i=new w("");i.Status=u.nW.MultiDataResponseStart;let a=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(i,6e3,!1);if(void 0===a||(null==a?void 0:a.Status)!=u.nW.OK)return u.nW.Error;for(const e of o){let t=new w(e);t.Status=u.nW.MultiDataResponse;let r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(t,6e3,!1);if(void 0===r||(null==r?void 0:r.Status)!=u.nW.OK)return u.nW.Error}i.Status=u.nW.MultiDataResponseStop;let c=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(i,12e4,!1);return void 0===c||(null==c?void 0:c.Status)!=u.nW.OK?u.nW.Error:u.nW.OK}))}SplitStringBySize(e,t=1e5){const n=Math.floor(t/2),r=[];let s=0;for(;s<e.length;){let o=e.slice(s,s+n);for(;new Blob([o]).size>t;)o=o.slice(0,-1);r.push(o),s+=o.length}return r}GetControllerSystemTimeAsync(){return m(this,void 0,void 0,(function*(){var e,t;try{let t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new I,8e3,!1);return null==t||null==t.Status?u.nW.Error:t.Status!=u.nW.OK?t.Status:null==t.Data?u.nW.ResourceIsNotAvailable:new Date(t.Data)}catch(e){return null===(t=v.h.Log)||void 0===t||t.Error(y.ServiceName,`Cannot get current controller time! ${e}`),u.nW.FatalError}}))}SetControllerSystemTimeAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{let n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new R(e.toISOString()),8e3,!1);return null==n||null==n.Status?u.nW.Error:n.Status}catch(e){return null===(n=v.h.Log)||void 0===n||n.Error(y.ServiceName,`Cannot set current controller time! ${e}`),u.nW.FatalError}}))}StartNtpTimeSynchronizationAsync(){return m(this,void 0,void 0,(function*(){var e,t;try{let t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new E,8e3,!1);return null==t||null==t.Status?u.nW.Error:t.Status}catch(e){return null===(t=v.h.Log)||void 0===t||t.Error(y.ServiceName,`Cannot set current controller time! ${e}`),u.nW.FatalError}}))}FactoryResetAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();let r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=300,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}RollbackLastUpdateAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();let r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new C,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=420,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}RestartControllerAsync(e){return m(this,void 0,void 0,(function*(){var t,n;try{i.j.Get(d.C.ServiceName).ClearCache();let r=null===(n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new A,2e3,!1))||void 0===n?void 0:n.Status;if(r==u.nW.OK){let t=240,n=0,r=100/t,s=setInterval((()=>{n+=r,e(parseFloat(n.toPrecision(1)))}),1e3);return yield h.YZ.Delay(1e3*t),i.j.Get(d.C.ServiceName).ClearCache(),clearInterval(s),u.nW.OK}return r}catch(e){return u.nW.FatalError}}))}DidCofigurationChangeAsync(){return m(this,void 0,void 0,(function*(){return new Promise((e=>{var t;this._didSynchronization?e(this._didConfigurationChange):null===(t=this._onSynchronized)||void 0===t||t.Subscribe((()=>{e(this._didConfigurationChange)}))}))}))}GetLastKnownConfigurationChangeTime(){var e;const t=null===(e=this._localStorage)||void 0===e?void 0:e.Read(this.GetServiceName(),"last_configuration_time");return null!=t?new Date(t):new Date}SaveLastConfigurationChangeTime(e){var t;null===(t=this._localStorage)||void 0===t||t.Save(this.GetServiceName(),"last_configuration_time",e.toString())}EnterConfigurationModeAsync(){return m(this,void 0,void 0,(function*(){var e;this._appEnteredConfigurationMode=!0,i.j.Get(d.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new T,2e4,!1)}))}ExitConfigurationModeAsync(){return m(this,void 0,void 0,(function*(){var e;this._appEnteredConfigurationMode=!0,i.j.Get(d.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new D,2e4,!1),this._didConfigurationChange=!0,i.j.Get(d.C.ServiceName).ClearCache(),this._appEnteredConfigurationMode=!1}))}OnEnteredConfigurationEvent(){return this._onEnteredConfigurationEvent}OnExitedConfigurationEvent(){return this._didConfigurationChange=!0,this._onExitedConfigurationEvent}OnConfigurationTimeCheckedEvent(){return this._onConfigurationTimeCheckedEvent}GetLastConfigurationChangeTimeAsync(){return m(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new k,2e4,!1);if(null==t||(null==t?void 0:t.Status)!=u.nW.OK)throw new Error("Failed to get last configuration change time");return this._configurationTime=new Date(t.Data),this._configurationTime}))}CheckIfConfigurationHasChangedAsync(){return m(this,void 0,void 0,(function*(){var e,t,n,r;const s=yield this.GetLastConfigurationChangeTimeAsync();return null===(e=v.h.Log)||void 0===e||e.Info(y.ServiceName,`Checking if configuration time has changed. Current: ${s.toString()}, Last known: ${this.GetLastKnownConfigurationChangeTime().toString()}`),this.GetLastKnownConfigurationChangeTime().toString()!=s.toString()?(this.SaveLastConfigurationChangeTime(s),i.j.Get(d.C.ServiceName).ClearCache(),this._didSynchronization=!0,this._didConfigurationChange=!0,null===(t=this.OnConfigurationChangedEvent())||void 0===t||t.Invoke(),this._onConfigurationTimeCheckedEvent.Invoke(s),null===(n=this._onSynchronized)||void 0===n||n.Invoke(),!0):(this._didSynchronization=!0,this._didConfigurationChange=!1,null===(r=this._onSynchronized)||void 0===r||r.Invoke(),!1)}))}CheckIfConfigurationTimeHasChangedAsync(e){return m(this,void 0,void 0,(function*(){var t,n,r,s;return null===(t=v.h.Log)||void 0===t||t.Info(y.ServiceName,`Checking if configuration time has changed. Current: ${e.toString()}, Last known: ${this.GetLastKnownConfigurationChangeTime().toString()}`),this.GetLastKnownConfigurationChangeTime().toString()!=e.toString()?(this.SaveLastConfigurationChangeTime(e),i.j.Get(d.C.ServiceName).ClearCache(),this._didSynchronization=!0,this._didConfigurationChange=!0,null===(n=this.OnConfigurationChangedEvent())||void 0===n||n.Invoke(),this._onConfigurationTimeCheckedEvent.Invoke(e),null===(r=this._onSynchronized)||void 0===r||r.Invoke(),!0):(this._didSynchronization=!0,this._didConfigurationChange=!1,null===(s=this._onSynchronized)||void 0===s||s.Invoke(),!1)}))}CanExportOrImportControllerConfigurationAsync(){return m(this,void 0,void 0,(function*(){try{let e=yield i.j.Get(g.Wn.ServiceName).GetExtensionsInfoAsync(),t=i.j.Get(c.Q.ServiceName).User;return null!=t&&null!=t.AccessLevel&&t.AccessLevel>=p.hx.Admin&&e.any((e=>"f4f0f066-7c43-46c6-a0bd-aedf93903dc0"==e.ExtensionGuid))}catch(e){return!1}}))}ExportControllerConfigurationAsync(){return m(this,void 0,void 0,(function*(){var e;let t=[],n=null;yield null===(e=this._connection)||void 0===e?void 0:e.SendAndHandleResponseAsync(new S,3e4,(e=>{switch(e.Status){case u.nW.MultiDataResponseStart:break;case u.nW.MultiDataResponse:null!=e.Data&&void 0!==e.Data&&t.push(e.Data);break;case u.nW.MultiDataResponseStop:break;case u.nW.Error:case u.nW.FatalError:n=new f.ZR(r.CannotExportConfiguration,"Cannot export configuration! Controller returned error!")}}),!0);let s=JSON.stringify(JSON.parse(t.join("")),null,2);return console.log(s),null!=n?n:i.j.ExportStringAsFileToDownload(this.GetCurrentTimestampedFilename(),s)}))}GetCurrentTimestampedFilename(){var e,t;const n=new Date,r=n.getHours().toString().padStart(2,"0"),s=n.getMinutes().toString().padStart(2,"0"),o=n.getDate().toString().padStart(2,"0"),i=(n.getMonth()+1).toString().padStart(2,"0"),a=n.getFullYear().toString();return`${null===(t=null===(e=this._connection)||void 0===e?void 0:e.GetAuthorizationInfo())||void 0===t?void 0:t.SerialNumber}_${r}-${s}-${o}-${i}-${a}-config.cexp`}}y.ServiceName="ControllerConfigurationService",y.ConfigurationTimeRetrieved=null;class w extends u.CP{constructor(e){super(),this.Resource="/configuration/backup/import",this.Method=u.IT.Put,this.Data=e}}class S extends u.CP{constructor(){super(),this.Resource="/configuration/backup/export",this.Method=u.IT.Get}}class A extends u.CP{constructor(){super(),this.Resource="/controller/restart",this.Method=u.IT.Post}}class _ extends u.CP{constructor(){super(),this.Resource="/controller/factory_reset",this.Method=u.IT.Post}}class C extends u.CP{constructor(){super(),this.Resource="/controller/backups/restore/previous",this.Method=u.IT.Post}}class T extends u.CP{constructor(){super(),this.Resource="/system/configuration/mode/entry",this.Method=u.IT.Put}}class D extends u.CP{constructor(){super(),this.Resource="/system/configuration/mode/exit",this.Method=u.IT.Put}}class k extends u.CP{constructor(){super(),this.Resource="/system/configuration/change/time",this.Method=u.IT.Get}}class I extends u.CP{constructor(){super(),this.Resource="/system/time",this.Method=u.IT.Get}}class R extends u.CP{constructor(e){super(),this.Resource="/system/time",this.Method=u.IT.Put,this.Data=e}}class E extends u.CP{constructor(){super(),this.Resource="/system/time/ntp/update",this.Method=u.IT.Put}}},3648:(e,t,n)=>{var r;n.d(t,{$:()=>r}),function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error",e[e.None=4]="None"}(r||(r={}))},3826:(e,t,n)=>{n.d(t,{B6:()=>le,BD:()=>Te,BJ:()=>Ae,Bo:()=>Ce,CV:()=>ce,Cv:()=>ke,H1:()=>W,IP:()=>Me,IR:()=>Ue,If:()=>ae,JA:()=>ue,K7:()=>Ve,KJ:()=>ne,L5:()=>$e,M0:()=>d,My:()=>q,Nl:()=>Be,ON:()=>fe,OQ:()=>Q,Py:()=>S,QI:()=>r,Qj:()=>Ee,R6:()=>oe,Ro:()=>Y,Rq:()=>V,Rv:()=>se,Sd:()=>qe,UF:()=>Re,UY:()=>x,Uj:()=>me,VH:()=>M,VM:()=>he,Vk:()=>je,Vm:()=>Ne,Xp:()=>We,b8:()=>ve,bt:()=>F,cK:()=>De,dQ:()=>K,f3:()=>_e,fX:()=>$,fp:()=>we,gX:()=>O,l3:()=>Ie,l4:()=>U,lD:()=>z,lo:()=>H,mH:()=>Le,mL:()=>j,mV:()=>Z,nA:()=>B,nQ:()=>J,nu:()=>Ge,q1:()=>L,qV:()=>ye,qr:()=>be,rW:()=>de,r_:()=>xe,re:()=>X,sk:()=>Pe,tC:()=>ee,uk:()=>te,v3:()=>re,vY:()=>ie,wb:()=>pe,wr:()=>Fe,x5:()=>Se,xb:()=>ge,yv:()=>Oe});var r,s,o,i,a,c,u,l,d,h,g,p,f,v,m,y,w,S,A,_,C,T,D,k,I,R,E,b,N,G,P=n(6203);class O{constructor(){this._type="",this._data=null,this._typeAsEnum=P.mQ.Unknown,this._serializedDataWithoutTime=""}get Data(){return this._data}set Data(e){this._data=e;let{Time:t}=e,n=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(n[r[s]]=e[r[s]])}return n}(e,["Time"]);this._serializedDataWithoutTime=JSON.stringify(n)}get Type(){return this._type}set Type(e){this._type=e}get TypeAsEnum(){return this._typeAsEnum}set TypeAsEnum(e){this._typeAsEnum=e}get StatesComparisonData(){return this._serializedDataWithoutTime}}!function(e){e[e.Confident=0]="Confident",e[e.Unconfident=1]="Unconfident"}(r||(r={}));class U extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ChannelOnOffState,this.Type="ChannelOnOffState",this.Data=e.state}}class M{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=s.Unknown,this.Time=""}}!function(e){e[e.On=0]="On",e[e.Off=1]="Off",e[e.Unknown=2]="Unknown"}(s||(s={}));class W extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.HallState,this.Type="IHallState",this.Data=e.state}}class x extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.SceneExecuted,this.Type="ISceneExecuted",this.Data=e.state}}class F extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.IntercomState,this.Type="IntercomState",this.Data=e.state}}!function(e){e[e.Idle=0]="Idle",e[e.IncomingCall=1]="IncomingCall",e[e.AnsweringCall=2]="AnsweringCall",e[e.Busy=3]="Busy",e[e.NoAnswerToCall=4]="NoAnswerToCall",e[e.Unknown=5]="Unknown"}(o||(o={}));class L extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OnlineCamera,this.Type="OnlineCameraState",this.Data=e.state}}class B extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.DoorBellState,this.Type="DoorBellState",this.Data=e.state}}class ${constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=i.Relased,this.Time=""}}!function(e){e[e.Pressed=0]="Pressed",e[e.Relased=1]="Relased",e[e.PressedAndRelased=2]="PressedAndRelased"}(i||(i={}));class V extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ReedState,this.Type="ReedState",this.Data=e.state}}class q{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=!1,this.Time=""}}class j extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindPosition,this.Type="BlindPostionState",this.Data=e.state}GetBlindStatus(){switch(this.Data.Position){case 200:return a.UnableToMove;case 201:return a.MotorOverheatedPleaseWait;default:return a.Working}}}!function(e){e[e.Unknown=0]="Unknown",e[e.Working=1]="Working",e[e.UnableToMove=200]="UnableToMove",e[e.MotorOverheatedPleaseWait=201]="MotorOverheatedPleaseWait"}(a||(a={}));class H{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Position=0,this.RawPosition=0,this.Time=""}}class Z extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.RemoteButtonState,this.Type="RemoteButtonState",this.Data=e.state}}class Q{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=c.Relased,this.Time=""}}!function(e){e[e.Pressed=1]="Pressed",e[e.Relased=2]="Relased",e[e.PressedAndRelased=3]="PressedAndRelased"}(c||(c={}));class K extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightColor,this.Type="LightColorState",this.Data=e.state}}class z{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.R=0,this.G=0,this.B=0,this.Time=""}}class Y extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightWarmth,this.Type="LightWarmthState",this.Data=e.state}}class J{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Temperature=0,this.Time=""}}class X extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightBrightness,this.Type="LightBrightnessState",this.Data=e.state}}class ee{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Brightness=0,this.Time=""}}class te extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredTemperature,this.Type="MeasuredTemperatureState",this.Data=e.state}}class ne{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Temperature=0,this.Type=u.InsideTemperature,this.Time=""}}!function(e){e[e.AirTemperature=0]="AirTemperature",e[e.InsideTemperature=1]="InsideTemperature",e[e.OutsideTemperature=2]="OutsideTemperature",e[e.FloorTemperature=3]="FloorTemperature",e[e.SafetyTemperature=4]="SafetyTemperature",e[e.SetTemperature=5]="SetTemperature"}(u||(u={}));class re extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BatteryState,this.Type="BatteryState",this.Data=e.state}}class se{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=l.Half,this.Percentage=-1,this.Time=""}}!function(e){e[e.Unknown=-1]="Unknown",e[e.Full=0]="Full",e[e.Empty=1]="Empty",e[e.Half=2]="Half",e[e.Percentage=3]="Percentage",e[e.Low=4]="Low",e[e.ExternalPower=5]="ExternalPower"}(l||(l={}));class oe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredBrightness,this.Type="MeasuredBrightnessState",this.Data=e.state}}class ie{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Brightness=0,this.Time=""}}class ae extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredEnergy,this.Type="MeasuredEnergyState",this.Data=e.state,this.Data.MeasurementParameters=new Map(Object.entries(e.state.MeasurementParameters))}}class ce{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Time="",this.MeasurementParameters=new Map}}!function(e){e.Voltage="Voltage",e.Current="Current",e.PhaseShift="PhaseShift",e.ActivePower="ActivePower",e.ReactivePower="ReactivePower",e.ApparentPower="ApparentPower",e.PowerFactor="PowerFactor",e.ActiveForwardEnergy="ActiveForwardEnergy",e.ActiveReverseEnergy="ActiveReverseEnergy",e.ApparentEnergy="ApparentEnergy",e.ReactiveForwardEnergy="ReactiveForwardEnergy",e.ReactiveReverseEnergy="ReactiveReverseEnergy",e.Frequency="Frequency",e.SPIErrorRate="SPIErrorRate",e.CRCErrorRate="CRCErrorRate",e.Timestamp="Timestamp",e.FailedMeasurementsRate="FailedMeasurementsRate",e.FundamentalActivePower="FundamentalActivePower",e.HarmonicActivePower="HarmonicActivePower"}(d||(d={}));class ue extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MeasuredDistance,this.Type="MeasuredDistanceState",this.Data=e.state}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(h||(h={}));class le extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.MovementSensorState,this.Type="MovementSensorState",this.Data=e.state}}class de{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Intensity=0,this.Movement=g.No,this.Time=""}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(g||(g={}));class he extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindRemoteButtonState,this.Type="BlindRemoteButtonState",this.Data=e.state}}class ge{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=p.StopReleased,this.Time=""}}!function(e){e[e.OpenPressed=1]="OpenPressed",e[e.OpenReleased=2]="OpenReleased",e[e.StopPressed=3]="StopPressed",e[e.StopReleased=4]="StopReleased",e[e.ClosePressed=5]="ClosePressed",e[e.CloseReleased=6]="CloseReleased"}(p||(p={}));class pe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadeRemoteButtonState,this.Type="FacadeRemoteButtonState",this.Data=e.state}}class fe{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=f.StopReleased,this.Time=""}}!function(e){e[e.OpenPressed=1]="OpenPressed",e[e.OpenReleased=2]="OpenReleased",e[e.StopPressed=3]="StopPressed",e[e.StopReleased=4]="StopReleased",e[e.ClosePressed=5]="ClosePressed",e[e.CloseReleased=6]="CloseReleased"}(f||(f={}));class ve extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.SignalStrength,this.Type="SignalStrenghtState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Excellent=1]="Excellent",e[e.Good=2]="Good",e[e.Acceptable=3]="Acceptable",e[e.Low=4]="Low",e[e.Terrible=5]="Terrible",e[e.NoLink=6]="NoLink"}(v||(v={}));class me extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GatePosition,this.Type="GatePositionState",this.Data=e.state}}class ye{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.PositionType=m.Unknown,this.Position=0,this.Time=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Open=1]="Open",e[e.PartiallyOpen=2]="PartiallyOpen",e[e.Close=3]="Close",e[e.On=4]="On",e[e.Off=5]="Off",e[e.Percentage=6]="Percentage"}(m||(m={}));class we extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GatewayPosition,this.Type="GatewayPositionState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Open=1]="Open",e[e.PartiallyOpen=2]="PartiallyOpen",e[e.Close=3]="Close",e[e.On=4]="On",e[e.Off=5]="Off"}(y||(y={}));class Se extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.GateControllerHealth,this.Type="GateControllerHealthState",this.Data=e.state}}!function(e){e[e.Unknown=-1]="Unknown",e[e.Inactive=0]="Inactive",e[e.Active=1]="Active",e[e.UnconnectedOrMalfunction=2]="UnconnectedOrMalfunction"}(w||(w={}));class Ae extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindCalibration,this.Type="BlindCalibrationState",this.Data=e.state}}class _e{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.CalibrationStatus=S.AutoLernIdle,this.Time=""}}!function(e){e[e.AutoLernIdle=0]="AutoLernIdle",e[e.AutoLernInProgress=1]="AutoLernInProgress",e[e.AutoLernSuccessfull=2]="AutoLernSuccessfull",e[e.AutoLernCancelled=4]="AutoLernCancelled"}(S||(S={}));class Ce extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.HumiditySensorState,this.Type="HumiditySensorState",this.Data=e.state}}class Te{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Type=A.AirHumidity,this.Humidity=0,this.Time=""}}!function(e){e[e.AirHumidity=0]="AirHumidity",e[e.InsideHumidity=1]="InsideHumidity",e[e.OutsideHumidity=2]="OutsideHumidity",e[e.SafetyHumidity=3]="SafetyHumidity",e[e.SetHumidity=4]="SetHumidity"}(A||(A={}));class De extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.VibrationSensorState,this.Type="VibrationSensorState",this.Data=e.state}}!function(e){e[e.No=0]="No",e[e.Yes=1]="Yes"}(_||(_={}));class ke extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BinarySensorState,this.Type="BinarySensorState",this.Data=e.state}}class Ie{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=C.Low,this.Time=""}}!function(e){e[e.High=1]="High",e[e.Low=0]="Low"}(C||(C={}));class Re extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.ConfigurationState,this.Type="ConfigurationState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.OngoingConfiguration=1]="OngoingConfiguration",e[e.NotConfigured=2]="NotConfigured",e[e.Configured=3]="Configured",e[e.PartiallyConfigured=4]="PartiallyConfigured"}(T||(T={}));class Ee extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindOpenCloseTime,this.Type="BlindOpenCloseTimeState",this.Data=e.state}}class be extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OvercurrentProtectionState,this.Type="OvercurrentProtectionState",this.Data=e.state}}class Ne extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.OvercurrentProtectionThreshold,this.Type="OvercurrentProtectionThresholdState",this.Data=e.state}}class Ge extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadePosition,this.Type="FacadePositionState",this.Data=e.state}}class Pe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FacadeType,this.Type="FacadeTypeState",this.Data=e.state}}class Oe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.CurrentWindThreshold,this.Type="CurrentWindThresholdState",this.Data=e.state}}class Ue{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.WindThreshold=D.Unknown,this.Time=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Below=1]="Below",e[e.Exceeded=2]="Exceeded",e[e.Inactive=3]="Inactive"}(D||(D={}));class Me extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.CurrentLightThreshold,this.Type="CurrentLightThresholdState",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.Below=1]="Below",e[e.Exceeded=2]="Exceeded"}(k||(k={}));class We extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.WindSpeedState,this.Type="WindSpeedState",this.Data=e.state}}class xe{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Value=0,this.Time=""}}class Fe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.FloodSensorState,this.Type="FloodSensorState",this.Data=e.state}}class Le{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.State=I.NoFloodDetected,this.Time=""}}!function(e){e[e.FloodDetected=1]="FloodDetected",e[e.NoFloodDetected=0]="NoFloodDetected"}(I||(I={})),function(e){e[e.AirHumidity=0]="AirHumidity",e[e.InsideHumidity=1]="InsideHumidity",e[e.OutsideHumidity=2]="OutsideHumidity",e[e.SafetyHumidity=3]="SafetyHumidity",e[e.SetHumidity=4]="SetHumidity"}(R||(R={}));class Be extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.PressureSensorState,this.Type="PressureSensorState",this.Data=e.state}}class $e{constructor(){this.Channel=0,this.StateReliability=r.Unconfident,this.Pressure=0,this.Time="",this.PressureType=E.OutsidePressure}}!function(e){e[e.InsidePressure=0]="InsidePressure",e[e.OutsidePressure=1]="OutsidePressure",e[e.SetPressure=2]="SetPressure"}(E||(E={})),function(e){e[e.Facade90=0]="Facade90",e[e.Facade180=1]="Facade180"}(b||(b={}));class Ve extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.TamperProtectionState,this.Type="TamperProtection",this.Data=e.state}}!function(e){e[e.OK=0]="OK",e[e.Breach=1]="Breach"}(N||(N={}));class qe extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.LightRGBWState,this.Type="LightRGBW",this.Data=e.state}}class je extends O{constructor(e){super(),this.TypeAsEnum=P.mQ.BlindErrorState,this.Type="BlindError",this.Data=e.state}}!function(e){e[e.Unknown=0]="Unknown",e[e.ObstacleDetected=1]="ObstacleDetected",e[e.MotorFailure=2]="MotorFailure"}(G||(G={}))},4071:(e,t,n)=>{n.d(t,{M:()=>r});class r{constructor(){this.ResourceGuid="",this.Data=null,this.IsGlobal=!1,this.InsertTime=new Date}}},4506:(e,t,n)=>{n.d(t,{C:()=>a});var r=n(5443),s=n(4756),o=n(4665),i=n(4907);class a{constructor(){this._log=r.j.Get(i.g.ServiceName),a._localStorageService=r.j.Get(o.s.ServiceName)}GetServiceName(){return a.ServiceName}NormalizeCacheKey(e){if(null==e)return e;if(Array.isArray(e))return e.map((e=>this.NormalizeCacheKey(e)));if("object"!=typeof e)return e;const t={};return Object.keys(e).sort().forEach((n=>{"TransactionId"!==n&&"Status"!==n&&(t[n]=this.NormalizeCacheKey(e[n]))})),t}GetResourceName(e){return JSON.stringify(this.NormalizeCacheKey(e))}Cache(e){var t;e.Status===s.nW.OK&&(this._log.Debug(a.ServiceName,`Caching request: ${e.Resource} ${e.Method}`),null===(t=a._localStorageService)||void 0===t||t.Save(this.GetServiceName(),this.GetResourceName(e),e))}GetCache(e){var t;let n=null===(t=a._localStorageService)||void 0===t?void 0:t.Read(this.GetServiceName(),this.GetResourceName(e));return null!=n&&this._log.Debug(a.ServiceName,`Got request response from cache: ${e.Resource} ${e.Method}`),null==n?null:Object.assign(Object.assign({},n),{TransactionId:e.TransactionId})}ClearCache(){var e;null===(e=a._localStorageService)||void 0===e||e.DropStorage(this.GetServiceName()),this._log.Debug(a.ServiceName,`Clearing cache for ${this.GetServiceName()}`)}Remove(e){var t;null===(t=a._localStorageService)||void 0===t||t.Remove(this.GetServiceName(),this.GetResourceName(e)),this._log.Debug(a.ServiceName,`Clearing cache for cache: ${e.Resource} ${e.Method}`)}}a._localStorageService=null,a.ServiceName="WebApiCacheService"},4637:(e,t,n)=>{n.d(t,{OW:()=>r,Z:()=>s,eS:()=>o,kD:()=>a,lb:()=>i});class r{constructor(){this.DeviceGuid="",this.CurrentVersion="",this.NewVersion=""}}class s{constructor(){this.UpdatesAvailable=[],this.UpdatesNotAvailable=[]}}class o{constructor(){this.UpdatedResourceName=new Map,this.UpdateDescription=new Map,this.UpdateCreationTime=null,this.Version="",this.UpdateChannel=""}}class i{constructor(){this.Resource="",this.Version="",this.Type=null}}var a;!function(e){e[e.RadioUpdate=0]="RadioUpdate",e[e.SoftwareUpdate=1]="SoftwareUpdate"}(a||(a={}))},4665:(e,t,n)=>{n.d(t,{s:()=>o});var r=n(161),s=n(5443);class o{GetServiceName(){return o.ServiceName}GetResourceName(e,t){return`_exalus_${s.j.WorksInContextOf}_${e}_${t}`}Remove(e,t){localStorage.removeItem(this.GetResourceName(e,t))}DropStorage(e){const t=`_exalus_${s.j.WorksInContextOf}_${e}`;Object.keys(localStorage).filter((e=>e.startsWith(t))).forEach((e=>{var t;null===(t=r.h.Log)||void 0===t||t.Warning(o.ServiceName,`Clearing API cache for key: ${e}`),localStorage.removeItem(e)}))}Save(e,t,n){localStorage.setItem(this.GetResourceName(e,t),JSON.stringify(n))}Read(e,t){var n;try{let n=this.GetResourceName(e,t),r=localStorage.getItem(n);return null==r?null:JSON.parse(r)}catch(s){return null===(n=r.h.Log)||void 0===n||n.Error(o.ServiceName,`Exception has occurred while reading ${this.GetResourceName(e,t)}`),null}}}o.ServiceName="LocalStorageService"},4740:(e,t,n)=>{n.d(t,{q:()=>r});class r{static NewGuid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}},4756:(e,t,n)=>{n.d(t,{CP:()=>i,IT:()=>s,nW:()=>r});var r,s,o=n(2824);class i{constructor(){this.TransactionId=o.M0.GenerateUUID()}}!function(e){e[e.OK=0]="OK",e[e.UnknownError=1]="UnknownError",e[e.FatalError=2]="FatalError",e[e.WrongData=3]="WrongData",e[e.ResourceDoesNotExists=4]="ResourceDoesNotExists",e[e.NoPermissionToPerformThisOperation=5]="NoPermissionToPerformThisOperation",e[e.SessionHasAlreadyLoggedOnUser=6]="SessionHasAlreadyLoggedOnUser",e[e.OperationNotPermitted=7]="OperationNotPermitted",e[e.NoPermissionsToCallGivenResource=8]="NoPermissionsToCallGivenResource",e[e.ResourceIsNotAvailable=9]="ResourceIsNotAvailable",e[e.Error=10]="Error",e[e.NoData=11]="NoData",e[e.NotSupportedMethod=12]="NotSupportedMethod",e[e.UserIsNotLoggedIn=13]="UserIsNotLoggedIn",e[e.MultiDataResponseStart=14]="MultiDataResponseStart",e[e.MultiDataResponse=15]="MultiDataResponse",e[e.MultiDataResponseStop=16]="MultiDataResponseStop"}(r||(r={})),function(e){e[e.Get=0]="Get",e[e.Post=1]="Post",e[e.Delete=2]="Delete",e[e.Put=3]="Put",e[e.Options=4]="Options",e[e.Head=5]="Head"}(s||(s={}))},4824:(e,t,n)=>{n.d(t,{KH:()=>m,OA:()=>h,tg:()=>r});var r,s=n(1966),o=n(5443),i=n(9315),a=n(4756),c=n(9595),u=n(6053),l=n(161),d=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class h{constructor(){this._services=new Map,this._runtimeInfo=new g,this._hardwareInfo=new f,this._semaphore=new i.z(1),this._isRuntimeInfoInitialized=!1,this._isHardwareInfoInitialized=!1}GetServiceName(){return h.ServiceName}RegisterUpdatesProvider(e){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Registering new update provider: ${e.GetUpdateProviderName()}`),this._services.set(e.GetUpdateProviderName(),e)}GetUpdatesProviderAsync(e){return d(this,void 0,void 0,(function*(){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Getting update provider [${e}] by GetUpdateProviderAsync<T>()`);const n=this._services.get(e);if(null==n)throw new u.Zt("Cannot get update provider! Requested update provider has not been registered.");return n}))}GetUpdatesProvidersAsync(e){return d(this,void 0,void 0,(function*(){var t;null===(t=l.h.Log)||void 0===t||t.Debug(h.ServiceName,`Getting update providers with type ${e} by GetUpdateProvidersAsync<T>()`);let n=[];if(n=[...this._services.values()].filter((t=>t.ProviderType==e)),0==n.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return n}))}GetUpdatesProvidersByProtocolAsync(e,t,n){return d(this,void 0,void 0,(function*(){var r;if(new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$").test(e)){null===(r=l.h.Log)||void 0===r||r.Debug(h.ServiceName,`Getting update providers with protocol guid: [${e}] by GetUpdateProvidersByProtocolAsync<T>()`);let s=[];if(s=null!=n?[...this._services.values()].filter((r=>r.ProtocolGuid==e&&r.ProviderType==t&&r.AvailableExtensionVersion==n)):[...this._services.values()].filter((n=>n.ProtocolGuid==e&&n.ProviderType==t)),0==s.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return s}throw new u.Zt("Cannot get update providers! Bad parameters.")}))}GetUpdatesProvidersByExtensionAsync(e,t,n){return d(this,void 0,void 0,(function*(){var r;if(new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$").test(e)){null===(r=l.h.Log)||void 0===r||r.Debug(h.ServiceName,`Getting update providers with extension guid: [${e}] by GetUpdateProvidersByExtensionAsync<T>()`);let s=[];if(s=null!=n?[...this._services.values()].filter((r=>r.ExtensionGuid==e&&r.ProviderType==t&&r.AvailableExtensionVersion==n)):[...this._services.values()].filter((n=>n.ExtensionGuid==e&&n.ProviderType==t)),0==s.length)throw new u.Zt("Cannot get update providers! Requested update providers has not been registered.");return s}throw new u.Zt("Cannot get update providers! Bad parameters.")}))}GetSoftwareRuntimeInfoAsync(){return d(this,arguments,void 0,(function*(e=!1){var t=yield this._semaphore.AcquireAsync();try{return this._isRuntimeInfoInitialized&&!e||(yield this.GetRuntimeControllerInfoAsync()),this._runtimeInfo}finally{t.Release()}}))}GetRuntimeControllerInfoAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=l.h.Log)||void 0===e||e.Debug(h.ServiceName,"Getting runtime version info from controller.");try{const e=yield o.j.Get(c.G.ServiceName).SendAndWaitForResponseAsync(new p,16e3,!1);if(null==e||null==e.Status)throw new m('Cannot get runtime info, controller response result is empty."',r.EmptyResponse);if(e.Status!=a.nW.OK)throw new m(`Cannot get runtime info, controller responded with status ${e.Status}.`,r.WrongResponseStatus);if(null==e.Data)throw new m("Cannot get runtime info, controller responded with status OK but response does not contains data.",r.NoDataInResponse);this._runtimeInfo=e.Data,this._isRuntimeInfoInitialized=!0}catch(e){throw e instanceof s.MU?new m("Cannot get runtime info, controller response timeout.",r.Timeout):e}}))}GetHardwareInfoAsync(){return d(this,arguments,void 0,(function*(e=!1){return!this._isHardwareInfoInitialized||e?(yield this.GetHardwareControllerInfoAsync(),this._hardwareInfo):this._hardwareInfo}))}GetHardwareControllerInfoAsync(){return d(this,void 0,void 0,(function*(){var e;null===(e=l.h.Log)||void 0===e||e.Debug(h.ServiceName,"Getting hardware info from controller.");const t=yield o.j.Get(c.G.ServiceName).SendAndWaitForResponseAsync(new v,8e3,!1);if(null==t||null==t.Status)throw new m('Cannot get hardware info, controller response result is empty."',r.EmptyResponse);if(t.Status!=a.nW.OK)throw new m(`Cannot get hardware info, controller responded with status ${t.Status}.`,r.WrongResponseStatus);if(null==t.Data)throw new m("Cannot get hardware info, controller responded with status OK but response does not contains data.",r.NoDataInResponse);this._hardwareInfo=t.Data,this._isHardwareInfoInitialized=!0}))}}h.ServiceName="UpdateProvider";class g{constructor(){this.BaseLinuxVersion="",this.BaseMonoVersion="",this.RuntimeVersion="",this.UpdateChannel="",this.SoftwareVersion=""}}class p extends a.CP{constructor(){super(),this.Resource="/controller/software/info",this.Method=a.IT.Get}}class f{constructor(){this.GetControllerHardwareVersion=0,this.DevicePIN="",this.GetControllerSerialNumber="",this.HostnamePrefix="",this.DefaultStaticIpAddress="",this.GetAvailableHardware=[],this.ControllerSecret=""}}class v extends a.CP{constructor(){super(),this.Resource="/controller/hardware/info",this.Method=a.IT.Get}}class m extends Error{constructor(e,t){super(e),this.message=e,this.code=0,this.name="CannotGetRuntimeInfo",this.code=t}}!function(e){e[e.Unknown=0]="Unknown",e[e.EmptyResponse=1]="EmptyResponse",e[e.NoDataInResponse=2]="NoDataInResponse",e[e.WrongResponseStatus=3]="WrongResponseStatus",e[e.Timeout=4]="Timeout"}(r||(r={}))},4907:(e,t,n)=>{n.d(t,{g:()=>s});var r=n(3648);class s{constructor(){this._blockedServices=[],this._logLevel=r.$.Debug,void 0!==window.loglevel&&null!==window.loglevel&&(this._logLevel=window.loglevel),window.logger=this}EnableStackTrace(){s.DoesThrowStackTrace=!0}DisableStackTrace(){s.DoesThrowStackTrace=!1}IsBlocked(e){return void 0!==e&&this._blockedServices.any((t=>t==e))}DisableLogsFrom(e){this._blockedServices.all((t=>t!=e))&&this._blockedServices.push(e),this.Debug(s.ServiceName,`Disabling logs from ${e}`)}EnableLogsFrom(e){this._blockedServices.any((t=>t==e))&&(this._blockedServices=this._blockedServices.where((t=>t!=e)).toArray()),this.Debug(s.ServiceName,`Enaabling logs from ${e}`)}get LogLevel(){return this._logLevel}set LogLevel(e){this._logLevel=e}GetServiceName(){return s.ServiceName}GetTimeStamp(){const e=new Date;return`${e.getHours()}:${e.getMinutes()}:${e.getSeconds()}.${e.getMilliseconds()} | `}Warning(e,t){switch(this._logLevel){case r.$.Warning:case r.$.Info:case r.$.Debug:break;case r.$.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.warn(`${this.GetTimeStamp()}[WARN] ${e}`):console.warn(`${this.GetTimeStamp()}[WARN] [${e}] ${t}`))}Error(e,t){switch(this._logLevel){case r.$.Warning:case r.$.Info:case r.$.Debug:case r.$.Error:break;case r.$.None:default:return}null!=e&&(null==t?console.error(`${this.GetTimeStamp()}[ERROR] ${e}`):console.error(`${this.GetTimeStamp()}[ERROR] [${e}] ${t}`))}Info(e,t){switch(this._logLevel){case r.$.Info:case r.$.Debug:break;case r.$.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.info(`${this.GetTimeStamp()}[INFO] ${e}`):console.info(`${this.GetTimeStamp()}[INFO] [${e}] ${t}`))}Debug(e,t){switch(this._logLevel){case r.$.Debug:break;case r.$.None:default:return}void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.debug(`${this.GetTimeStamp()}[DEBUG] ${e}`):s.DoesThrowStackTrace||!0===window.stacktrace?console.debug(`${this.GetTimeStamp()}[DEBUG] [${e}] ${t} \nstack:\n${(new Error).stack}}`):console.debug(`${this.GetTimeStamp()}[DEBUG] [${e}] ${t}`))}Log(e,t){this._logLevel!==r.$.None&&(void 0===e||this.IsBlocked(e)||null!=e&&(null==t?console.log(`${this.GetTimeStamp()}[LOG] ${e}`):console.log(`${this.GetTimeStamp()}[LOG] [${e}] ${t}`)))}}s.ServiceName="LoggerService",s.DoesThrowStackTrace=!1},5186:(e,t,n)=>{n.d(t,{K:()=>i});var r=n(5443),s=n(8069),o=n(6094);class i{constructor(){this._guid="",this._cloudGuid="",this._name="",this._surname="",this._phone="",this._email="",this._isAccountOnline=!0,this._isAccountActive=!0,this._isAccountBanned=!0,this._notificationChannels=[],this._gender=s.YT.Unknown,this._accessLevel=s.hx.Any,this._localization=s.G4.En_Us,this._softwareVersion=""}get Guid(){return this._guid}set Guid(e){this._guid=e}get CloudGuid(){return this._cloudGuid}set CloudGuid(e){this._cloudGuid=e}get Name(){return this._name}set Name(e){this._name=e}get Surname(){return this._surname}set Surname(e){this._surname=e}get Phone(){return this._phone}set Phone(e){this._phone=e}get AccessLevel(){return this._accessLevel}set AccessLevel(e){this._accessLevel=e}get Email(){return this._email}set Email(e){this._email=e}get IsAccountOnline(){return this._isAccountOnline}set IsAccountOnline(e){this._isAccountOnline=e}get IsActive(){return this._isAccountActive}set IsActive(e){this._isAccountActive=e}get IsBanned(){return this._isAccountBanned}set IsBanned(e){this._isAccountBanned=e}get NotificationChannels(){return this._notificationChannels}set NotificationChannels(e){this._notificationChannels=e}get Gender(){return this._gender}set Gender(e){this._gender=e}get Localization(){return this._localization}set Localization(e){this._localization=e}get SoftwareVersion(){return this._softwareVersion}set SoftwareVersion(e){this._softwareVersion=e}GetUserProfilePictureAsync(){return r.j.Get(o.g.ServiceName).GetUserProfilePictureAsync({Guid:this._guid})}SetUserProfilePictureAsync(e){return r.j.Get(o.g.ServiceName).SetUserProfilePictureAsync({Guid:this._guid},e)}}},5329:(e,t,n)=>{n.d(t,{Q:()=>g});var r,s=n(5443),o=n(9595),i=n(5973);n(8069),function(e){e[e.Unknown=0]="Unknown",e[e.WrongAuthData=1]="WrongAuthData",e[e.NoResponseFromController=2]="NoResponseFromController",e[e.AuthDisabled=3]="AuthDisabled",e[e.MethodNotSupported=4]="MethodNotSupported"}(r||(r={}));var a=n(4756),c=n(161),u=n(5186),l=n(3386),d=n(4506),h=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class g{constructor(){this._onUserLoggedInEvent=new i.r,this._onUserLoggedOutEvent=new i.r,this._email="",this._password="",this._authToken="",this._alreadySubsribedToNetworkEvents=!1,this._isLoggedIn=!1,this._user=null}isLoginError(e){return"number"==typeof e&&void 0!==r[e]}RestoreSessionAsync(){return h(this,void 0,void 0,(function*(){var e,t,n;if(null===(e=c.h.Log)||void 0===e||e.Debug(g.ServiceName,`Creating RestoreSessionAsync ${this._email} ${this._password}`),void 0===this._user||null===this._user||!this._isLoggedIn)return!1;let s=yield this.UserLogInAsync(this._email,this._password);if(this.isLoginError(s)){if(null===(t=c.h.Log)||void 0===t||t.Error(g.ServiceName,"RestoreSessionAsync failed, user login failed"),s==r.WrongAuthData)throw new Error("Wrong authentication data!");return!1}return null===(n=c.h.Log)||void 0===n||n.Debug(g.ServiceName,"RestoreSessionAsync completed successfully"),!0}))}WaitForSessionCreationAsync(){return h(this,void 0,void 0,(function*(){return new Promise((e=>{if(this._isLoggedIn&&null!=this._user)return e();const t=n=>{this._onUserLoggedInEvent.Unsubscribe(t),e()};this._onUserLoggedInEvent.Subscribe(t)}))}))}OnUserLoggedInEvent(){return this._onUserLoggedInEvent}OnUserLoggedOutEvent(){return this._onUserLoggedOutEvent}get User(){return this._user}UserLogOutAsync(){return h(this,void 0,void 0,(function*(){var e,t;let n=new a.CP;n.Resource="/users/user/logout",n.Method=a.IT.Put,this._email="",this._password="",(yield s.j.Get(o.G.ServiceName).SendAndWaitForResponseAsync(n,2e4,!1)).Status==a.nW.OK?(this._onUserLoggedOutEvent.Invoke(this._user),null===(e=c.h.Log)||void 0===e||e.Debug(g.ServiceName,"User has been logged out."),this._user=null,s.j.Get(d.C.ServiceName).ClearCache()):null===(t=c.h.Log)||void 0===t||t.Debug(g.ServiceName,"Failed to logout user!")}))}AuthorizeAppAsync(e){return h(this,void 0,void 0,(function*(){var t,n,i,p,v;let m=s.j.Get(o.G.ServiceName);const y=yield m.SendAndWaitForResponseAsync(new f(e),2e4,!1);if(y.Status==a.nW.OK&&null!=y.Data){const r=!this._isLoggedIn||(null===(t=this._user)||void 0===t?void 0:t.Guid)!==y.Data.Guid;this._authToken=e;let i=new u.K;this._user=i,i.AccessLevel=y.Data.AccessLevel,i.Email=y.Data.Email,this._email=y.Data.Email,i.Gender=y.Data.Gender,i.Guid=y.Data.Guid,i.IsAccountOnline=y.Data.IsAccountOnline,i.Name=y.Data.Name,i.IsActive=y.Data.IsActive,i.IsBanned=y.Data.IsBanned,i.Phone=y.Data.Phone,i.Surname=y.Data.Surname,i.SoftwareVersion=y.Data.SoftwareVersion;let p=s.j.Get(l.u.ServiceName);return void 0!==y.Data.ConfigurationTime&&null!=y.Data.ConfigurationTime?(l.u.ConfigurationTimeRetrieved=new Date(y.Data.ConfigurationTime),yield p.CheckIfConfigurationTimeHasChangedAsync(new Date(y.Data.ConfigurationTime))):yield p.CheckIfConfigurationHasChangedAsync(),r&&s.j.Get(d.C.ServiceName).ClearCache(),this._alreadySubsribedToNetworkEvents||(this._alreadySubsribedToNetworkEvents=!0,s.j.Get(o.G.ServiceName).SubscribeTo("/info/users/user/loggedOut",(e=>h(this,void 0,void 0,(function*(){var t,n;null===(t=c.h.Log)||void 0===t||t.Debug(g.ServiceName,`User logged out: ${JSON.stringify(e.Data)}`),this._isLoggedIn=!1,null===(n=this._onUserLoggedOutEvent)||void 0===n||n.Invoke(this._user),this._user=null,s.j.Get(d.C.ServiceName).ClearCache()}))))),null===(n=c.h.Log)||void 0===n||n.Debug(g.ServiceName,`Did logging in succeded?: ${y.Status==a.nW.OK}`),this._isLoggedIn=!0,this._onUserLoggedInEvent.Invoke(this._user),i}return y.Status===a.nW.OperationNotPermitted?(null===(i=c.h.Log)||void 0===i||i.Debug(g.ServiceName,`App login response: ${y.Data}`),r.AuthDisabled):y.Status===a.nW.ResourceDoesNotExists?(null===(p=c.h.Log)||void 0===p||p.Debug(g.ServiceName,`App login response: ${y.Data}`),r.MethodNotSupported):(null===(v=c.h.Log)||void 0===v||v.Debug(g.ServiceName,`App login response: ${y.Data}`),r.WrongAuthData)}))}UserLogInAsync(e,t){return h(this,void 0,void 0,(function*(){var n,i,p;let f=s.j.Get(o.G.ServiceName);const m=yield f.SendAndWaitForResponseAsync(new v(e,t),2e4,!1);if(m.Status==a.nW.OK&&null!=m.Data){const r=!this._isLoggedIn||(null===(n=this._user)||void 0===n?void 0:n.Guid)!==m.Data.Guid;this._email=e,this._password=t;let p=new u.K;this._user=p,p.AccessLevel=m.Data.AccessLevel,p.Email=m.Data.Email,p.Gender=m.Data.Gender,p.Guid=m.Data.Guid,p.IsAccountOnline=m.Data.IsAccountOnline,p.Name=m.Data.Name,p.IsActive=m.Data.IsActive,p.IsBanned=m.Data.IsBanned,p.Phone=m.Data.Phone,p.Surname=m.Data.Surname,p.SoftwareVersion=m.Data.SoftwareVersion;let f=s.j.Get(l.u.ServiceName);return void 0!==m.Data.ConfigurationTime&&null!=m.Data.ConfigurationTime?(l.u.ConfigurationTimeRetrieved=new Date(m.Data.ConfigurationTime),yield f.CheckIfConfigurationTimeHasChangedAsync(new Date(m.Data.ConfigurationTime))):yield f.CheckIfConfigurationHasChangedAsync(),r&&s.j.Get(d.C.ServiceName).ClearCache(),this._alreadySubsribedToNetworkEvents||(this._alreadySubsribedToNetworkEvents=!0,s.j.Get(o.G.ServiceName).SubscribeTo("/info/users/user/loggedOut",(e=>h(this,void 0,void 0,(function*(){var t,n;null===(t=c.h.Log)||void 0===t||t.Debug(g.ServiceName,`User logged out: ${JSON.stringify(e.Data)}`),this._isLoggedIn=!1,null===(n=this._onUserLoggedOutEvent)||void 0===n||n.Invoke(this._user),this._user=null,s.j.Get(d.C.ServiceName).ClearCache()}))))),null===(i=c.h.Log)||void 0===i||i.Debug(g.ServiceName,`Did logging in succeded?: ${m.Status==a.nW.OK}`),this._isLoggedIn=!0,this._onUserLoggedInEvent.Invoke(this._user),p}return null===(p=c.h.Log)||void 0===p||p.Debug(g.ServiceName,`User login response: ${m.Data}`),r.WrongAuthData}))}GetServiceName(){return g.ServiceName}}g.ServiceName="SessionService";class p{constructor(e,t){this.Email="",this.Password="",this.Email=e,this.Password=t}}class f extends a.CP{constructor(e){super(),this.Data=e,this.Resource="/applications/app/auth",this.Method=a.IT.Put}}class v extends a.CP{constructor(e,t){super(),this.Data=new p(e,t),this.Resource="/users/user/login",this.Method=a.IT.Put}}},5410:(e,t,n)=>{n.d(t,{V:()=>p});var r=n(5443),s=n(4756),o=n(161),i=n(2824),a=n(3386),c=n(9595),u=n(6823),l=n(4907),d=n(333),h=n(2558),g=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class p{constructor(){this._imageExistsCaseNumber=0,this._connection=r.j.Get(c.G.ServiceName),this._logger=r.j.Get(l.g.ServiceName)}GetServiceName(){return p.ServiceName}AddPictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n;try{if(e.Base64Image.length*(3/4)>=512e3)return this._logger.Error(p.ServiceName,"Cannot add picture - Base64Imgae size exceeded."),s.nW.WrongData;let r=new Image;const o=new Promise(((t,n)=>{r.src=e.Base64Image,r.onload=function(){t(!0)},setTimeout((()=>t(!1)),5e3)}));if(!(yield o))return this._logger.Error(p.ServiceName,"Cannot add picture - cannot load image - ensure that given base64 string is an image!"),s.nW.WrongData;if(0===r.height||0===r.width)return this._logger.Error(p.ServiceName,"Cannot add picture - cannot read width/height of image - ensure that given base64 string is an image!"),s.nW.WrongData;if(null!=e.Guid&&""!=e.Guid)return this._logger.Error(p.ServiceName,"Cannot add picture - Guid must be empty."),s.nW.WrongData;const a=new v;a.Guid=i.M0.GenerateUUID(),a.DateTime=(new Date).toISOString(),a.ImageType=e.ImageType,a.OwnerGuid=`${e.OwnerGuid}_${e.OwnerIdentity}`,a.Base64Image=e.Base64Image;const c=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(a.Guid),8e3,!1);if(null==c||null==c.Status)return this._logger.Error(p.ServiceName,"Cannot add picture - unknown error!"),s.nW.UnknownError;if(c.Status==s.nW.ResourceDoesNotExists){const e=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new A(a),8e3,!1);return null==e||null==e.Status?(this._logger.Error(p.ServiceName,"Cannot add picture - unknown error!"),s.nW.UnknownError):e.Status}return c.Status==s.nW.OK?(this._logger.Warning(p.ServiceName,"Cannot add picture - picture already exists, trying to add with regenerated GUID."),this._imageExistsCaseNumber<2?(this._imageExistsCaseNumber++,this.AddPictureAsync(e)):s.nW.UnknownError):(this._logger.Error(p.ServiceName,"Cannot add picture - cannot get current picture status."),s.nW.Error)}catch(e){return this._logger.Error(p.ServiceName,`Cannot add picture! ${e}`),s.nW.FatalError}}))}EditPictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n,i,c;try{if(""==e.Guid||null==e.Guid)return this._logger.Error(p.ServiceName,"Cannot edit picture - guid is empty."),s.nW.WrongData;if(e.Base64Image.length*(3/4)>=512e3)return this._logger.Error(p.ServiceName,"Cannot edit picture - Base64Imgae size exceeded."),s.nW.WrongData;let u=new Image;const l=new Promise(((t,n)=>{u.src=e.Base64Image,u.onload=function(){t(!0)},setTimeout((()=>t(!1)),5e3)}));if(!(yield l))return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot load image - ensure that given base64 string is an image!"),s.nW.WrongData;if(0===u.height||0===u.width)return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot read width/height of image - ensure that given base64 string is an image!"),s.nW.WrongData;const d=new v;d.DateTime=(new Date).toISOString(),d.ImageType=e.ImageType,d.Base64Image=e.Base64Image,d.Guid=e.Guid,e.Guid.includes("profilePicture")||e.Guid.includes("devices_group")?d.OwnerGuid=e.OwnerGuid:d.OwnerGuid=`${e.OwnerGuid}_${e.OwnerIdentity}`;const h=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(d.Guid),8e3,!1);if(null===(n=o.h.Log)||void 0===n||n.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EditPictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==h||null==h.Status)return this._logger.Error(p.ServiceName,"Cannot edit picture - unknown error!"),s.nW.UnknownError;if(h.Status==s.nW.ResourceDoesNotExists)return this._logger.Error(p.ServiceName,"Cannot edit picture - picture not exists."),s.nW.OperationNotPermitted;if(h.Status==s.nW.OK){const e=yield null===(i=this._connection)||void 0===i?void 0:i.SendAndWaitForResponseAsync(new A(d),8e3,!1);return null===(c=o.h.Log)||void 0===c||c.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EditPictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==e||null==e.Status?(this._logger.Error(p.ServiceName,"Cannot edit picture - unknown error!"),s.nW.UnknownError):e.Status}return this._logger.Error(p.ServiceName,"Cannot edit picture - cannot get current picture status."),s.nW.Error}catch(e){return this._logger.Error(p.ServiceName,`Cannot edit picture! ${e}`),s.nW.FatalError}}))}DeletePictureAsync(e){return g(this,void 0,void 0,(function*(){var t,n;try{if(""==e.Guid||null==e.Guid)return this._logger.Error(p.ServiceName,"Cannot delete picture - guid is empty."),s.nW.WrongData;const i=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _(e.Guid),8e3,!1);return null===(n=o.h.Log)||void 0===n||n.Error(p.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! DeletePictureAsync()"),r.j.Get(a.u.ServiceName).ExitConfigurationModeAsync(),null==i||null==i.Status?(this._logger.Error(p.ServiceName,"Cannot delete picture - unknown error!"),s.nW.UnknownError):i.Status}catch(e){return this._logger.Error(p.ServiceName,`Cannot delete picture! ${e}`),s.nW.FatalError}}))}GetPicturesInfoAsync(){return g(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new w,8e3,!1);return null==t||null==t.Status?(this._logger.Error(p.ServiceName,"Cannot get pictures info - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Status!=s.nW.OK?(this._logger.Error(p.ServiceName,`Cannot get pictures info - controler responded with status ${t.Status}.`),new u.ZR(t.Status,"UnknownReason")):null==t.Data?(this._logger.Error(p.ServiceName,"Cannot get pictures info - controler responded with OK, but no data in result.}."),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Data.map((e=>{const t=new m;return t.DateTime=e.DateTime,t.Guid=e.Guid,t.OwnerGuid=e.OwnerGuid,-1!=e.OwnerGuid.indexOf("_")?(t.OwnerGuid=e.OwnerGuid.substring(0,e.OwnerGuid.indexOf("_")),t.OwnerIdentity=e.OwnerGuid.substring(e.OwnerGuid.indexOf("_")+1)):e.Guid.includes("profilePicture")?(t.OwnerIdentity=e.Guid.substring(e.Guid.indexOf("_")+1),t.OwnerGuid=e.OwnerGuid):e.Guid.includes("devices_group")?(t.OwnerIdentity=e.Guid.substring(0,e.Guid.lastIndexOf("_")),t.OwnerGuid=e.OwnerGuid):(t.OwnerGuid=e.OwnerGuid,t.OwnerIdentity=""),t}))}catch(e){return this._logger.Error(p.ServiceName,`Cannot get picture info! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}GetPictureAsync(e){return g(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new y(e),8e3,!1);if(null==n||null==n.Status)return this._logger.Error(p.ServiceName,"Cannot get picture - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult");switch(n.Status){case s.nW.ResourceDoesNotExists:return new u.ZR(s.nW.ResourceDoesNotExists,"PictureNotFound");case s.nW.OK:if(null==n.Data)return new u.ZR(s.nW.Error,"RespondedWithOKButNoData");const e=new f;return e.Base64Image=n.Data.Base64Image,e.DateTime=n.Data.DateTime,e.ImageType=n.Data.ImageType,e.Guid=n.Data.Guid,-1!=n.Data.OwnerGuid.indexOf("_")?(e.OwnerGuid=n.Data.OwnerGuid.substring(0,n.Data.OwnerGuid.indexOf("_")),e.OwnerIdentity=n.Data.OwnerGuid.substring(n.Data.OwnerGuid.indexOf("_")+1)):n.Data.Guid.includes("profilePicture")?(e.OwnerIdentity=n.Data.Guid.substring(n.Data.Guid.indexOf("_")+1),e.OwnerGuid=n.Data.OwnerGuid):n.Data.Guid.includes("devices_group")?(e.OwnerIdentity=n.Data.Guid.substring(0,n.Data.Guid.lastIndexOf("_")),e.OwnerGuid=n.Data.OwnerGuid):(e.OwnerGuid=n.Data.OwnerGuid,e.OwnerIdentity=""),e;default:return new u.ZR(n.Status,"UnknownReason")}}catch(e){return this._logger.Error(p.ServiceName,`Cannot get picture! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}GetPicturesListAsync(){return g(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new S,8e3,!1);return null==t||null==t.Status?(this._logger.Error(p.ServiceName,"Cannot get pictures - unknown error!"),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Status!=s.nW.OK?(this._logger.Error(p.ServiceName,`Cannot get pictures - controler responded with status ${t.Status}.`),new u.ZR(t.Status,"UnknownReason")):null==t.Data?(this._logger.Error(p.ServiceName,"Cannot get pictures - controler responded with OK, but no data in result.}."),new u.ZR(s.nW.UnknownError,"NoDataInResult")):t.Data.map((e=>{const t=new f;return t.Base64Image=e.Base64Image,t.DateTime=e.DateTime,t.Guid=e.Guid,t.ImageType=e.ImageType,-1!=e.OwnerGuid.indexOf("_")?(t.OwnerGuid=e.OwnerGuid.substring(0,e.OwnerGuid.indexOf("_")),t.OwnerIdentity=e.OwnerGuid.substring(e.OwnerGuid.indexOf("_")+1)):e.Guid.includes("profilePicture")?(t.OwnerIdentity=e.Guid.substring(e.Guid.indexOf("_")+1),t.OwnerGuid=e.OwnerGuid):e.Guid.includes("devices_group")?(t.OwnerIdentity=e.Guid.substring(0,e.Guid.lastIndexOf("_")),t.OwnerGuid=e.OwnerGuid):(t.OwnerGuid=e.OwnerGuid,t.OwnerIdentity=""),t}))}catch(e){return this._logger.Error(p.ServiceName,`Cannot get pictures! ${e}`),new u.ZR(s.nW.FatalError,"ExceptionOccurred")}}))}}p.ServiceName="PictureService";class f extends h.V{set DateTime(e){this._dateTime=e}}class v{constructor(){this.Guid="",this.OwnerGuid="",this.Base64Image="",this.ImageType=d.y.Device,this.DateTime=""}}class m{constructor(){this._guid="",this._dateTime="",this._ownerGuid="",this._ownerIdentity=""}get Guid(){return this._guid}get DateTime(){return this._dateTime}get OwnerGuid(){return this._ownerGuid}get OwnerIdentity(){return this._ownerIdentity}set Guid(e){this._guid=e}set DateTime(e){this._dateTime=e}set OwnerGuid(e){this._ownerGuid=e}set OwnerIdentity(e){this._ownerIdentity=e}}class y extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Get,this.Data=e}}class w extends s.CP{constructor(){super(),this.Resource="/pictures/info",this.Method=s.IT.Get}}class S extends s.CP{constructor(){super(),this.Resource="/pictures/list",this.Method=s.IT.Get}}class A extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Put,this.Data=e}}class _ extends s.CP{constructor(e){super(),this.Resource="/pictures/picture",this.Method=s.IT.Delete,this.Data=e}}},5443:(e,t,n)=>{n.d(t,{j:()=>Wu});var r=n(161),s=n(4665),o=n(9595),i=n(4506),a=n(6094),c=n(8883),u=n(5329),l=n(8914),d=n(3386);class h extends RangeError{paramName;constructor(e){super(`${e} was out of range. Must be non-negative and less than the size of the collection.`),this.paramName=e,this.name="ArgumentOutOfRangeException",this.stack=this.stack||(new Error).stack}}const g=Object.freeze({MoreThanOneElement:"Sequence contains more than one element",MoreThanOneMatchingElement:"Sequence contains more than one matching element",NoElements:"Sequence contains no elements",NoMatch:"Sequence contains no matching element"});class p extends Error{constructor(e){super(e),this.name="InvalidOperationException",this.stack=this.stack||(new Error).stack}}const f=(e,t)=>e===t;class v{iterator;constructor(e){this.iterator=e}[Symbol.asyncIterator](){return this.iterator()}}class m{dataFunc;constructor(e){this.dataFunc=e}[Symbol.asyncIterator](){const{dataFunc:e}=this;return async function*(){if(1===e.type)for(const t of e.generator())yield t;else for(const t of await e.generator())yield t}()}}class y{iterator;constructor(e){this.iterator=e}[Symbol.iterator](){return this.iterator()}}class w extends Array{}const S=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return C(e,t,n,r)}return n?_(e,t,n):A(e,t)},A=(e,t)=>{let n;for(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},_=(e,t,n)=>{let r=t;for(const t of e)r=n(r,t);return r},C=(e,t,n,r)=>{let s=t;for(const t of e)s=n(s,t);return r(s)},T=(e,t)=>{for(const n of e)if(!1===t(n))return!1;return!0},D=async(e,t)=>{for(const n of e)if(!1===await t(n))return!1;return!0},k=(e,t)=>t?R(e,t):I(e),I=e=>{for(const t of e)return!0;return!1},R=(e,t)=>{for(const n of e)if(!0===t(n))return!0;return!1},E=async(e,t)=>{for(const n of e)if(!0===await t(n))return!0;return!1},b=(e,t)=>new y((function*(){yield*e,yield t})),N=e=>{if(Array.isArray(e)){if(0===e.length)throw new p(g.NoElements);return new v((async function*(){for await(const t of e)yield t}))}return new v(e)},G=e=>N((async function*(){for(const t of e)yield t})),P=(e,t)=>new m({generator:t,type:e}),O=e=>P(0,(async()=>{const t=[];for(const n of e)t.push(n);return t})),U=(e,t)=>{let n=0,r=0;if(t)for(const s of e)n+=t(s),r+=1;else for(const t of e)n+=t,r+=1;if(0===r)throw new p(g.NoElements);return n/r},M=async(e,t)=>{let n=0,r=0;for(const s of e)n+=await t(s),r+=1;if(0===r)throw new p(g.NoElements);return n/r},W=(e,t)=>{if(t<1)throw new h("size");return new y((function*(){let n=[];for(const r of e)n.push(r),n.length===t&&(yield n,n=[]);n.length&&(yield n)}))},x=(e,t)=>new y((function*(){yield*e,yield*t})),F=(e,t,n=f)=>{for(const r of e)if(n(t,r))return!0;return!1},L=async(e,t,n)=>{for(const r of e)if(await n(t,r))return!0;return!1},B=(e,t)=>t?V(e,t):$(e),$=e=>{let t=0;for(const n of e)t++;return t},V=(e,t)=>{let n=0;for(const r of e)!0===t(r)&&n++;return n},q=async(e,t)=>{let n=0;for(const r of e)!0===await t(r)&&n++;return n},j=(e,t)=>new y((function*(){let n=!1;for(const t of e)n=!0,yield t;n||(yield t)})),H=(e,t=f)=>new y((function*(){const n=[];for(const r of e)n.find((e=>t(e,r)))||(n.push(r),yield r)})),Z=(e,t)=>N((async function*(){const n=[];e:for(const r of e){for(const e of n)if(await t(e,r))continue e;n.push(r),yield r}})),Q=(e,t)=>new y((function*(){for(const n of e)t(n),yield n})),K=(e,t)=>N((async function*(){for(const n of e)await t(n),yield n})),z=(e,t)=>{if(t<0)throw new h("index");let n=0;for(const r of e)if(t===n++)return r;throw new h("index")},Y=(e,t)=>{let n=0;for(const r of e)if(t===n++)return r;return null},J=(e,t,n=f)=>new y((function*(){const r=[...t];for(const t of e){let e=!1;for(let s=0;s<r.length;s++)if(!0===n(t,r[s])){e=!0;break}!1===e&&(yield t)}})),X=(e,t,n)=>N((async function*(){const r=[...t];for(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===await n(t,o)){e=!0;break}}!1===e&&(yield t)}})),ee=(e,t)=>t?ne(e,t):te(e),te=e=>{const t=e[Symbol.iterator]().next();if(!0===t.done)throw new p(g.NoElements);return t.value},ne=(e,t)=>{for(const n of e)if(!0===t(n))return n;throw new p(g.NoMatch)},re=async(e,t)=>{for(const n of e)if(!0===await t(n))return n;throw new p(g.NoMatch)},se=(e,t)=>t?ie(e,t):oe(e),oe=e=>e[Symbol.iterator]().next().value??null,ie=(e,t)=>{for(const n of e)if(!0===t(n))return n;return null},ae=async(e,t)=>{for(const n of e)if(!0===await t(n))return n;return null};class ce extends w{key;constructor(e,t){super(1),this.key=e,this[0]=t}}const ue=(e,t,n)=>{let r;return r=n?((e,t,n)=>function*(){const r=new Array;for(const s of e){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})(e,t,n):((e,t)=>function*(){const n={};for(const r of e){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})(e,t),new y(r)},le=(e,t,n)=>n?he(e,t,n):de(e,t),de=(e,t)=>N((async function*(){const n={};for(const r of e){const e=await t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),he=(e,t,n)=>N((async function*(){const r=new Array;for(const s of e){const e=await t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(!0===await n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),ge=(e,t,n,r)=>r?((e,t,n,r)=>new y((function*(){const s=new Array;for(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}for(const e of s)yield e})))(e,t,n,r):((e,t,n)=>new y((function*(){const r={};for(const s of e){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}for(const e in r)yield r[e]})))(e,t,n),pe=(e,t,n,r,s,o)=>{const i=o?fe(e,t,n,r,s,o):ve(e,t,n,r,s);return new y(i)},fe=(e,t,n,r,s,o)=>function*(){const i=[];for(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for(const t of e){const e=n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},ve=(e,t,n,r,s)=>function*(){const o=new Map;for(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for(const t of e){const e=n(t),r=o.get(e)??[];yield s(t,r)}},me=(e,t,n,r,s,o)=>{const i=o?ye(e,t,n,r,s,o):we(e,t,n,r,s);return N(i)},ye=(e,t,n,r,s,o)=>async function*(){const i=[];for(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for(const t of e){const e=await n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},we=(e,t,n,r,s)=>async function*(){const o=new Map;for(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for(const t of e){const e=await n(t),r=o.get(e)??[];yield s(t,r)}},Se=(e,t,n=f)=>new y((function*(){const r=[...e.distinct(n)];if(0===r.length)return;const s=[...t];for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++)if(!0===n(t,s[e])){yield t;break}}})),Ae=(e,t,n)=>N((async function*(){const r=[];for await(const t of e.distinctAsync(n))r.push(t);if(0===r.length)return;const s=[...t];for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){yield t;break}}}})),_e=(e,t,n,r,s,o=f)=>new y((function*(){const i=[...t];for(const t of e){const e=n(t);for(const n of i){const i=r(n);!0===o(e,i)&&(yield s(t,n))}}})),Ce=(e,t)=>t?De(e,t):Te(e),Te=e=>{let t;for(const n of e)t=n;if(!t)throw new p(g.NoElements);return t},De=(e,t)=>{let n;for(const r of e)!0===t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},ke=async(e,t)=>{let n;for(const r of e)!0===await t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},Ie=(e,t)=>t?Ee(e,t):Re(e),Re=e=>{let t=null;for(const n of e)t=n;return t},Ee=(e,t)=>{let n=null;for(const r of e)!0===t(r)&&(n=r);return n},be=async(e,t)=>{let n=null;for(const r of e)!0===await t(r)&&(n=r);return n},Ne=(e,t)=>t?Pe(e,t):Ge(e),Ge=e=>{let t=null;for(const n of e)t=Math.max(t??Number.NEGATIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},Pe=(e,t)=>{let n=null;for(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Oe=async(e,t)=>{let n=null;for(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Ue=(e,t)=>t?We(e,t):Me(e),Me=e=>{let t=null;for(const n of e)t=Math.min(t??Number.POSITIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},We=(e,t)=>{let n=null;for(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},xe=async(e,t)=>{let n=null;for(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Fe=(e,t)=>{const n="string"==typeof t?e=>typeof e===t:e=>e instanceof t;return new y((function*(){for(const t of e)n(t)&&(yield t)}))};async function*Le(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}function*Be(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class $e extends v{orderedPairs;constructor(e){super((async function*(){for await(const t of e())yield*t})),this.orderedPairs=e}static generateAsync(e,t,n,r){let s;return s=e instanceof $e?async function*(){for await(const s of e.orderedPairs())yield*Le(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new $e(s)}static generate(e,t,n,r){let s;return s=e instanceof $e?async function*(){for await(const s of e.orderedPairs())yield*Be(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new $e(s)}thenBy(e,t){return $e.generate(this,e,!0,t)}thenByAsync(e,t){return $e.generateAsync(this,e,!0,t)}thenByDescending(e,t){return $e.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return $e.generateAsync(this,e,!1,t)}}function*Ve(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}async function*qe(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class je extends y{orderedPairs;constructor(e){super((function*(){for(const t of e())yield*t})),this.orderedPairs=e}static generate(e,t,n,r){let s;return s=e instanceof je?function*(){for(const s of e.orderedPairs())yield*Ve(s,t,n,r)}:()=>Ve(e,t,n,r),new je(s)}static generateAsync(e,t,n,r){let s;return s=e instanceof je?async function*(){for(const s of e.orderedPairs())yield*qe(s,t,n,r)}:()=>qe(e,t,n,r),new $e(s)}thenBy(e,t){return je.generate(this,e,!0,t)}thenByAsync(e,t){return je.generateAsync(this,e,!0,t)}thenByDescending(e,t){return je.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return je.generateAsync(this,e,!1,t)}}const He=(e,t)=>je.generate(e,(e=>e),!0,t),Ze=(e,t,n)=>je.generate(e,t,!0,n),Qe=(e,t,n)=>je.generateAsync(e,t,!0,n),Ke=(e,t,n)=>je.generate(e,t,!1,n),ze=(e,t,n)=>je.generateAsync(e,t,!1,n),Ye=(e,t)=>je.generate(e,(e=>e),!1,t),Je=(e,t)=>{const n=[],r=[];for(const s of e)!0===t(s)?r.push(s):n.push(s);return[r,n]},Xe=async(e,t)=>{const n=[],r=[];for(const s of e)!0===await t(s)?r.push(s):n.push(s);return[r,n]},et=(e,t)=>new y((function*(){yield t,yield*e})),tt=e=>new y((function*(){const t=[...e];for(let e=t.length-1;e>=0;e--)yield t[e]})),nt=(e,t)=>{if("function"==typeof t){const{length:n}=t;return 1===n?rt(e,t):st(e,t)}return ot(e,t)},rt=(e,t)=>new y((function*(){for(const n of e)yield t(n)})),st=(e,t)=>new y((function*(){let n=0;for(const r of e)yield t(r,n),n++})),ot=(e,t)=>new y((function*(){for(const n of e)yield n[t]})),it=(e,t)=>"function"==typeof t?1===t.length?at(e,t):ct(e,t):ut(e,t),at=(e,t)=>N((async function*(){for(const n of e)yield t(n)})),ct=(e,t)=>N((async function*(){let n=0;for(const r of e)yield t(r,n),n++})),ut=(e,t)=>N((async function*(){for(const n of e)yield n[t]})),lt=(e,t)=>"function"==typeof t?1===t.length?dt(e,t):ht(e,t):gt(e,t),dt=(e,t)=>new y((function*(){for(const n of e)for(const e of t(n))yield e})),ht=(e,t)=>new y((function*(){let n=0;for(const r of e){for(const e of t(r,n))yield e;n++}})),gt=(e,t)=>new y((function*(){for(const n of e)for(const e of n[t])yield e})),pt=(e,t)=>1===t.length?ft(e,t):vt(e,t),ft=(e,t)=>N((async function*(){for(const n of e){const e=await t(n);for(const t of e)yield t}})),vt=(e,t)=>N((async function*(){let n=0;for(const r of e){const e=await t(r,n);for(const t of e)yield t;n++}})),mt=(e,t,n=f)=>{const r=e[Symbol.iterator](),s=t[Symbol.iterator]();let o=r.next(),i=s.next();for(;!o.done&&!i.done;){if(!n(o.value,i.value))return!1;o=r.next(),i=s.next()}return!0===o.done&&!0===i.done},yt=async(e,t,n)=>{const r=e[Symbol.iterator](),s=t[Symbol.iterator]();let o=r.next(),i=s.next();for(;!o.done&&!i.done;){if(!1===await n(o.value,i.value))return!1;o=r.next(),i=s.next()}return!0===o.done&&!0===i.done},wt=(e,t)=>t?At(e,t):St(e),St=e=>{let t=!1,n=null;for(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}if(!1===t)throw new p(g.NoElements);return n},At=(e,t)=>{let n=!1,r=null;for(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},_t=async(e,t)=>{let n=!1,r=null;for(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},Ct=(e,t)=>t?Dt(e,t):Tt(e),Tt=e=>{let t=!1,n=null;for(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}return n},Dt=(e,t)=>{let n=!1,r=null;for(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},kt=async(e,t)=>{let n=!1,r=null;for(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneElement);n=!0,r=s}return r},It=(e,t)=>new y((function*(){let n=0;for(const r of e)n++>=t&&(yield r)})),Rt=(e,t)=>1===t.length?Et(e,t):bt(e,t),Et=(e,t)=>new y((function*(){let n=!0;for(const r of e)!1===n?yield r:!1===t(r)&&(n=!1,yield r)})),bt=(e,t)=>new y((function*(){let n=0,r=!0;for(const s of e)!1===r?yield s:!1===t(s,n)&&(r=!1,yield s),n++})),Nt=(e,t)=>1===t.length?Gt(e,t):Pt(e,t),Gt=(e,t)=>N((async function*(){let n=!0;for(const r of e)!1===n?yield r:!1===await t(r)&&(n=!1,yield r)})),Pt=(e,t)=>N((async function*(){let n=0,r=!0;for(const s of e)!1===r?yield s:!1===await t(s,n)&&(r=!1,yield s),n++})),Ot=(e,t)=>t?Mt(e,t):Ut(e),Ut=e=>{let t=0;for(const n of e)t+=n;return t},Mt=(e,t)=>{let n=0;for(const r of e)n+=t(r);return n},Wt=async(e,t)=>{let n=0;for(const r of e)n+=await t(r);return n},xt=(e,t)=>new y((function*(){let n=t>0?t:0;for(const t of e){if(0==n--)break;yield t}})),Ft=(e,t)=>1===t.length?Lt(e,t):Bt(e,t),Lt=(e,t)=>new y((function*(){for(const n of e){if(!t(n))break;yield n}})),Bt=(e,t)=>new y((function*(){let n=0;for(const r of e){if(!t(r,n++))break;yield r}})),$t=(e,t)=>1===t.length?Vt(e,t):qt(e,t),Vt=(e,t)=>N((async function*(){for(const n of e){if(!await t(n))break;yield n}})),qt=(e,t)=>N((async function*(){let n=0;for(const r of e){if(!await t(r,n++))break;yield r}})),jt=e=>[...e],Ht=(e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Zt=async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Qt=(e,t)=>{const n={};for(const r of e)n[t(r)]=r;return n},Kt=async(e,t)=>{const n={};for(const r of e)n[await t(r)]=r;return n},zt=e=>new Set(e),Yt=(e,t,n)=>n?Xt(e,t,n):Jt(e,t),Jt=(e,t)=>new y((function*(){const n=new Set;for(const t of e)!1===n.has(t)&&(yield t,n.add(t));for(const e of t)!1===n.has(e)&&(yield e,n.add(e))})),Xt=(e,t,n)=>new y((function*(){const r=[];for(const s of[e,t])for(const e of s){let t=!1;for(const s of r)if(!0===n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),en=(e,t,n)=>N((async function*(){const r=[];for(const s of[e,t])for(const e of s){let t=!1;for(const s of r)if(!0===await n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),tn=(e,t)=>1===t.length?nn(e,t):rn(e,t),nn=(e,t)=>new y((function*(){for(const n of e)!0===t(n)&&(yield n)})),rn=(e,t)=>new y((function*(){let n=0;for(const r of e)!0===t(r,n++)&&(yield r)})),sn=(e,t)=>1===t.length?on(e,t):an(e,t),on=(e,t)=>N((async function*(){for(const n of e)!0===await t(n)&&(yield n)})),an=(e,t)=>N((async function*(){let n=0;for(const r of e)!0===await t(r,n++)&&(yield r)})),cn=(e,t,n)=>n?ln(e,t,n):un(e,t),un=(e,t)=>new y((function*(){const n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){const e=n.next(),t=r.next();if(e.done||t.done)break;yield[e.value,t.value]}})),ln=(e,t,n)=>new y((function*(){const r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(;;){const e=r.next(),t=s.next();if(e.done||t.done)break;yield n(e.value,t.value)}})),dn=(e,t,n)=>N((async function*(){const r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(;;){const e=r.next(),t=s.next();if(e.done||t.done)break;yield n(e.value,t.value)}})),hn=e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(S,"aggregate"),n(T,"all"),n(D,"allAsync"),n(k,"any"),n(E,"anyAsync"),n(b,"append"),n(G,"asAsync"),n(O,"asParallel"),n(U,"average"),n(M,"averageAsync"),n(W,"chunk"),n(x,"concatenate"),n(F,"contains"),n(L,"containsAsync"),n(B,"count"),n(q,"countAsync"),n(j,"defaultIfEmpty"),n(H,"distinct"),n(Z,"distinctAsync"),n(Q,"each"),n(K,"eachAsync"),n(z,"elementAt"),n(Y,"elementAtOrDefault"),n(J,"except"),n(X,"exceptAsync"),n(ee,"first"),n(re,"firstAsync"),n(se,"firstOrDefault"),n(ae,"firstOrDefaultAsync"),n(ue,"groupBy"),n(le,"groupByAsync"),n(ge,"groupByWithSel"),n(pe,"groupJoin"),n(me,"groupJoinAsync"),n(Se,"intersect"),n(Ae,"intersectAsync"),n(_e,"joinByKey"),n(Ce,"last"),n(ke,"lastAsync"),n(Ie,"lastOrDefault"),n(be,"lastOrDefaultAsync"),n(Ne,"max"),n(Oe,"maxAsync"),n(Ue,"min"),n(xe,"minAsync"),n(Fe,"ofType"),n(He,"order"),n(Ze,"orderBy"),n(Qe,"orderByAsync"),n(Ke,"orderByDescending"),n(ze,"orderByDescendingAsync"),n(Ye,"orderDescending"),n(et,"prepend"),n(tt,"reverse"),n(nt,"select"),n(it,"selectAsync"),n(lt,"selectMany"),n(pt,"selectManyAsync"),n(mt,"sequenceEquals"),n(yt,"sequenceEqualsAsync"),n(wt,"single"),n(_t,"singleAsync"),n(Ct,"singleOrDefault"),n(kt,"singleOrDefaultAsync"),n(It,"skip"),n(Rt,"skipWhile"),n(Nt,"skipWhileAsync"),n(Ot,"sum"),n(Wt,"sumAsync"),n(xt,"take"),n(Ft,"takeWhile"),n($t,"takeWhileAsync"),n(jt,"toArray"),n(Ht,"toMap"),n(Zt,"toMapAsync"),n(Qt,"toObject"),n(Kt,"toObjectAsync"),n(Je,"partition"),n(Xe,"partitionAsync"),n(zt,"toSet"),n(Yt,"union"),n(en,"unionAsync"),n(tn,"where"),n(sn,"whereAsync"),n(cn,"zip"),n(dn,"zipAsync")},gn=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return vn(e,t,n,r)}return n?fn(e,t,n):pn(e,t)},pn=async(e,t)=>{let n;for await(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},fn=async(e,t,n)=>{let r=t;for await(const t of e)r=n(r,t);return r},vn=async(e,t,n,r)=>{let s=t;for await(const t of e)s=n(s,t);return r(s)},mn=async(e,t)=>{for await(const n of e)if(!1===t(n))return!1;return!0},yn=async(e,t)=>{for await(const n of e)if(!1===await t(n))return!1;return!0},wn=(e,t)=>new v((async function*(){yield*e,yield t})),Sn=(e,t)=>t?_n(e,t):An(e),An=async e=>{for await(const t of e)return!0;return!1},_n=async(e,t)=>{for await(const n of e)if(!0===t(n))return!0;return!1},Cn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return!0;return!1},Tn=e=>P(0,(async()=>{const t=[];for await(const n of e)t.push(n);return t})),Dn=async(e,t)=>{let n=0,r=0;if(t)for await(const s of e)n+=t(s),r+=1;else for await(const t of e)n+=t,r+=1;if(0===r)throw new p(g.NoElements);return n/r},kn=async(e,t)=>{let n=0,r=0;for await(const s of e)n+=await t(s),r+=1;if(0===r)throw new p(g.NoElements);return n/r},In=(e,t)=>{if(t<1)throw new h("size");return new v((async function*(){let n=[];for await(const r of e)n.push(r),n.length===t&&(yield n,n=[]);n.length&&(yield n)}))},Rn=(e,t)=>new v((async function*(){yield*e,yield*t})),En=async(e,t,n=f)=>{for await(const r of e)if(n(t,r))return!0;return!1},bn=async(e,t,n)=>{for await(const r of e)if(await n(t,r))return!0;return!1},Nn=(e,t)=>t?Pn(e,t):Gn(e),Gn=async e=>{let t=0;for await(const n of e)t++;return t},Pn=async(e,t)=>{let n=0;for await(const r of e)!0===t(r)&&n++;return n},On=async(e,t)=>{let n=0;for await(const r of e)!0===await t(r)&&n++;return n},Un=(e,t)=>new v((async function*(){let n=!1;for await(const t of e)n=!0,yield t;n||(yield t)})),Mn=(e,t=f)=>new v((async function*(){const n=[];for await(const r of e)n.find((e=>t(e,r)))||(n.push(r),yield r)})),Wn=(e,t)=>new v((async function*(){const n=[];e:for await(const r of e){for(const e of n)if(await t(e,r))continue e;n.push(r),yield r}})),xn=(e,t)=>new v((async function*(){for await(const n of e)t(n),yield n})),Fn=(e,t)=>new v((async function*(){for await(const n of e)await t(n),yield n})),Ln=async(e,t)=>{if(t<0)throw new h("index");let n=0;for await(const r of e)if(t===n++)return r;throw new h("index")},Bn=async(e,t)=>{let n=0;for await(const r of e)if(t===n++)return r;return null},$n=(e,t,n=f)=>new v((async function*(){const r=[];for await(const e of t)r.push(e);for await(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===n(t,o)){e=!0;break}}!1===e&&(yield t)}})),Vn=(e,t,n)=>new v((async function*(){const r=[];for await(const e of t)r.push(e);for await(const t of e){let e=!1;for(let s=0;s<r.length;s++){const o=r[s];if(!0===await n(t,o)){e=!0;break}}!1===e&&(yield t)}})),qn=(e,t)=>t?Hn(e,t):jn(e),jn=async e=>{const t=await e[Symbol.asyncIterator]().next();if(!0===t.done)throw new p(g.NoElements);return t.value},Hn=async(e,t)=>{for await(const n of e)if(!0===t(n))return n;throw new p(g.NoMatch)},Zn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return n;throw new p(g.NoMatch)},Qn=(e,t)=>t?zn(e,t):Kn(e),Kn=async e=>(await e[Symbol.asyncIterator]().next()).value??null,zn=async(e,t)=>{for await(const n of e)if(!0===t(n))return n;return null},Yn=async(e,t)=>{for await(const n of e)if(!0===await t(n))return n;return null},Jn=(e,t,n)=>n?Xn(e,t,n):er(e,t),Xn=(e,t,n)=>new v((async function*(){const r=new Array;for await(const s of e){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),er=(e,t)=>new v((async function*(){const n={};for await(const r of e){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),tr=(e,t,n)=>n?rr(e,t,n):nr(e,t),nr=(e,t)=>new v((async function*(){const n={};for await(const r of e){const e=await t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}for(const e in n)yield n[e]})),rr=(e,t,n)=>new v((async function*(){const r=new Array;for await(const s of e){const e=await t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(!0===await n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}for(const e of r)yield e})),sr=(e,t,n,r)=>r?ir(e,t,n,r):or(e,t,n),or=(e,t,n)=>new v((async function*(){const r={};for await(const s of e){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}for(const e in r)yield r[e]})),ir=(e,t,n,r)=>new v((async function*(){const s=new Array;for await(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}for(const e of s)yield e})),ar=(e,t,n,r,s,o)=>{const i=o?cr(e,t,n,r,s,o):ur(e,t,n,r,s);return new v(i)},cr=(e,t,n,r,s,o)=>async function*(){const i=[];for await(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for await(const t of e){const e=n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},ur=(e,t,n,r,s)=>async function*(){const o=new Map;for await(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for await(const t of e){const e=n(t),r=o.get(e)??[];yield s(t,r)}},lr=(e,t,n,r,s,o)=>{const i=o?dr(e,t,n,r,s,o):hr(e,t,n,r,s);return new v(i)},dr=(e,t,n,r,s,o)=>async function*(){const i=[];for await(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}for await(const t of e){const e=await n(t),r=i.find((t=>o(t.key,e)))??{key:e,values:[]};yield s(t,r.values)}},hr=(e,t,n,r,s)=>async function*(){const o=new Map;for await(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}for await(const t of e){const e=await n(t),r=o.get(e)??[];yield s(t,r)}},gr=(e,t,n=f)=>new v((async function*(){const r=await e.distinct(n).toArray();if(0===r.length)return;const s=await t.toArray();for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===n(t,r)){yield t;break}}}})),pr=(e,t,n)=>new v((async function*(){const r=await e.distinctAsync(n).toArray();if(0===r.length)return;const s=await t.toArray();for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){yield t;break}}}})),fr=(e,t,n,r,s,o=f)=>new v((async function*(){const i=[];for await(const e of t)i.push(e);for await(const t of e){const e=n(t);for(const n of i){const i=r(n);!0===o(e,i)&&(yield s(t,n))}}})),vr=(e,t)=>t?yr(e,t):mr(e),mr=async e=>{let t=null;for await(const n of e)t=n;if(!t)throw new p(g.NoElements);return t},yr=async(e,t)=>{let n=null;for await(const r of e)!0===t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},wr=async(e,t)=>{let n=null;for await(const r of e)!0===await t(r)&&(n=r);if(!n)throw new p(g.NoMatch);return n},Sr=(e,t)=>t?_r(e,t):Ar(e),Ar=async e=>{let t=null;for await(const n of e)t=n;return t},_r=async(e,t)=>{let n=null;for await(const r of e)!0===t(r)&&(n=r);return n},Cr=async(e,t)=>{let n=null;for await(const r of e)!0===await t(r)&&(n=r);return n},Tr=(e,t)=>t?kr(e,t):Dr(e),Dr=async e=>{let t=null;for await(const n of e)t=Math.max(t??Number.NEGATIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},kr=async(e,t)=>{let n=null;for await(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Ir=async(e,t)=>{let n=null;for await(const r of e)n=Math.max(n??Number.NEGATIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Rr=(e,t)=>t?br(e,t):Er(e),Er=async e=>{let t=null;for await(const n of e)t=Math.min(t??Number.POSITIVE_INFINITY,n);if(null===t)throw new p(g.NoElements);return t},br=async(e,t)=>{let n=null;for await(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,t(r));if(null===n)throw new p(g.NoElements);return n},Nr=async(e,t)=>{let n=null;for await(const r of e)n=Math.min(n??Number.POSITIVE_INFINITY,await t(r));if(null===n)throw new p(g.NoElements);return n},Gr=(e,t)=>{const n="string"==typeof t?e=>typeof e===t:e=>e instanceof t;return new v((async function*(){for await(const t of e)n(t)&&(yield t)}))},Pr=(e,t)=>$e.generate(e,(e=>e),!0,t),Or=(e,t,n)=>$e.generate(e,t,!0,n),Ur=(e,t,n)=>$e.generateAsync(e,t,!0,n),Mr=(e,t,n)=>$e.generate(e,t,!1,n),Wr=(e,t,n)=>$e.generateAsync(e,t,!1,n),xr=(e,t)=>$e.generate(e,(e=>e),!1,t),Fr=async(e,t)=>{const n=[],r=[];for await(const s of e)!0===t(s)?r.push(s):n.push(s);return[r,n]},Lr=async(e,t)=>{const n=[],r=[];for await(const s of e)!0===await t(s)?r.push(s):n.push(s);return[r,n]},Br=(e,t)=>new v((async function*(){yield t,yield*e})),$r=e=>new v((async function*(){const t=[];for await(const n of e)t.push(n);for(let e=t.length-1;e>=0;e--)yield t[e]})),Vr=(e,t)=>"function"==typeof t?1===t.length?qr(e,t):jr(e,t):Hr(e,t),qr=(e,t)=>new v((async function*(){for await(const n of e)yield t(n)})),jr=(e,t)=>new v((async function*(){let n=0;for await(const r of e)yield t(r,n),n++})),Hr=(e,t)=>new v((async function*(){for await(const n of e)yield n[t]})),Zr=(e,t)=>"string"==typeof t?Kr(e,t):Qr(e,t),Qr=(e,t)=>new v((async function*(){for await(const n of e)yield t(n)})),Kr=(e,t)=>new v((async function*(){for await(const n of e)yield n[t]})),zr=(e,t)=>"function"==typeof t?1===t.length?Yr(e,t):Jr(e,t):Xr(e,t),Yr=(e,t)=>new v((async function*(){for await(const n of e)for(const e of t(n))yield e})),Jr=(e,t)=>new v((async function*(){let n=0;for await(const r of e){for(const e of t(r,n))yield e;n++}})),Xr=(e,t)=>new v((async function*(){for await(const n of e)for(const e of n[t])yield e})),es=(e,t)=>1===t.length?new v((async function*(){for await(const n of e){const e=await t(n);for(const t of e)yield t}})):new v((async function*(){let n=0;for await(const r of e){const e=await t(r,n);for(const t of e)yield t;n++}})),ts=async(e,t,n=f)=>{const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();let o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1];for(;!i.done&&!a.done;){if(!n(i.value,a.value))return!1;o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1]}return!0===i.done&&!0===a.done},ns=async(e,t,n)=>{const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();let o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1];for(;!i.done&&!a.done;){if(!1===await n(i.value,a.value))return!1;o=await Promise.all([r.next(),s.next()]),i=o[0],a=o[1]}return!0===i.done&&!0===a.done},rs=(e,t)=>t?os(e,t):ss(e),ss=async e=>{let t=!1,n=null;for await(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}if(!1===t)throw new p(g.NoElements);return n},os=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},is=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}if(!1===n)throw new p(g.NoMatch);return r},as=(e,t)=>t?us(e,t):cs(e),cs=async e=>{let t=!1,n=null;for await(const r of e){if(!0===t)throw new p(g.MoreThanOneElement);t=!0,n=r}return n},us=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},ls=async(e,t)=>{let n=!1,r=null;for await(const s of e)if(await t(s)){if(!0===n)throw new p(g.MoreThanOneMatchingElement);n=!0,r=s}return r},ds=(e,t)=>new v((async function*(){let n=0;for await(const r of e)n++>=t&&(yield r)})),hs=(e,t)=>1===t.length?gs(e,t):ps(e,t),gs=(e,t)=>new v((async function*(){let n=!0;for await(const r of e)!1===n?yield r:!1===t(r)&&(n=!1,yield r)})),ps=(e,t)=>new v((async function*(){let n=0,r=!0;for await(const s of e)!1===r?yield s:!1===t(s,n)&&(r=!1,yield s),n++})),fs=(e,t)=>1===t.length?vs(e,t):ms(e,t),vs=(e,t)=>new v((async function*(){let n=!0;for await(const r of e)!1===n?yield r:!1===await t(r)&&(n=!1,yield r)})),ms=(e,t)=>new v((async function*(){let n=0,r=!0;for await(const s of e)!1===r?yield s:!1===await t(s,n)&&(r=!1,yield s),n++})),ys=(e,t)=>t?Ss(e,t):ws(e),ws=async e=>{let t=0;for await(const n of e)t+=n;return t},Ss=async(e,t)=>{let n=0;for await(const r of e)n+=t(r);return n},As=async(e,t)=>{let n=0;for await(const r of e)n+=await t(r);return n},_s=(e,t)=>new v((async function*(){let n=t>0?t:0;for await(const t of e){if(0==n--)break;yield t}})),Cs=(e,t)=>1===t.length?Ts(e,t):Ds(e,t),Ts=(e,t)=>new v((async function*(){for await(const n of e){if(!t(n))break;yield n}})),Ds=(e,t)=>new v((async function*(){let n=0;for await(const r of e){if(!t(r,n++))break;yield r}})),ks=(e,t)=>1===t.length?Is(e,t):Rs(e,t),Is=(e,t)=>new v((async function*(){for await(const n of e){if(!await t(n))break;yield n}})),Rs=(e,t)=>new v((async function*(){let n=0;for await(const r of e){if(!await t(r,n++))break;yield r}})),Es=async e=>{const t=[];for await(const n of e)t.push(n);return t},bs=async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Ns=async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);void 0===s?n.set(e,[r]):s.push(r)}return n},Gs=async(e,t)=>{const n={};for await(const r of e)n[t(r)]=r;return n},Ps=async(e,t)=>{const n={};for await(const r of e)n[await t(r)]=r;return n},Os=async e=>{const t=new Set;for await(const n of e)t.add(n);return t},Us=(e,t,n)=>n?Ws(e,t,n):Ms(e,t),Ms=(e,t)=>new v((async function*(){const n=new Set;for await(const t of e)!1===n.has(t)&&(yield t,n.add(t));for await(const e of t)!1===n.has(e)&&(yield e,n.add(e))})),Ws=(e,t,n)=>new v((async function*(){const r=[];for(const s of[e,t])for await(const e of s){let t=!1;for(const s of r)if(!0===n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),xs=(e,t,n)=>new v((async function*(){const r=[];for(const s of[e,t])for await(const e of s){let t=!1;for(const s of r)if(!0===await n(e,s)){t=!0;break}!1===t&&(yield e,r.push(e))}})),Fs=(e,t)=>1===t.length?Ls(e,t):Bs(e,t),Ls=(e,t)=>new v((async function*(){for await(const n of e)!0===t(n)&&(yield n)})),Bs=(e,t)=>new v((async function*(){let n=0;for await(const r of e)!0===t(r,n++)&&(yield r)})),$s=(e,t)=>1===t.length?Vs(e,t):qs(e,t),Vs=(e,t)=>new v((async function*(){for await(const n of e)!0===await t(n)&&(yield n)})),qs=(e,t)=>new v((async function*(){let n=0;for await(const r of e)!0===await t(r,n++)&&(yield r)})),js=(e,t,n)=>n?Zs(e,t,n):Hs(e,t),Hs=(e,t)=>new v((async function*(){const n=e[Symbol.asyncIterator](),r=t[Symbol.asyncIterator]();for(;;){const[e,t]=await Promise.all([n.next(),r.next()]);if(e.done||t.done)break;yield[e.value,t.value]}})),Zs=(e,t,n)=>new v((async function*(){const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();for(;;){const[e,t]=await Promise.all([r.next(),s.next()]);if(e.done||t.done)break;yield n(e.value,t.value)}})),Qs=(e,t,n)=>new v((async function*(){const r=e[Symbol.asyncIterator](),s=t[Symbol.asyncIterator]();for(;;){const e=await Promise.all([r.next(),s.next()]),t=e[0],o=e[1];if(t.done||o.done)break;yield n(t.value,o.value)}})),Ks=(e,t,n,r)=>{if(r){if(!n)throw new ReferenceError("TAccumulate function is undefined");return Js(e,t,n,r)}return n?Ys(e,t,n):zs(e,t)},zs=async(e,t)=>{let n;for await(const r of e)n=n?t(n,r):r;if(void 0===n)throw new p(g.NoElements);return n},Ys=async(e,t,n)=>{let r=t;for await(const t of e)r=n(r,t);return r},Js=async(e,t,n,r)=>{let s=t;for await(const t of e)s=n(s,t);return r(s)},Xs=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:()=>n.generator().then((e=>{const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=t(e[r]);return n})),type:0};case 1:return{generator:()=>{const e=n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then(t);return r},type:1};case 2:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then(t);return r},type:2}}},eo=(e,t)=>{const n=Xs(e,(e=>{if(!t(e))throw new Error(String(!1));return!0}));switch(n.type){case 0:return n.generator().then((()=>!0),(()=>!1));case 1:return Promise.all(n.generator()).then((()=>!0),(()=>!1));case 2:return n.generator().then(Promise.all.bind(Promise)).then((()=>!0),(()=>!1))}},to=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=t(e[n]);return r},type:2};case 1:return{generator:()=>n.generator().map((async e=>{const n=await e;return await t(n)})),type:1};case 2:return{generator:async()=>(await n.generator()).map((e=>e.then(t))),type:2}}},no=(e,t)=>{const n=to(e,(async e=>{if(!1===await t(e))throw new Error(String(!1));return!0}));switch(n.type){case 1:return Promise.all(n.generator()).then((()=>!0),(()=>!1));case 2:return n.generator().then(Promise.all.bind(Promise)).then((()=>!0),(()=>!1))}},ro=(e,t)=>{const n=e.dataFunc;switch(n.type){case 1:return new m({generator:()=>{const e=n.generator();return e.push(Promise.resolve(t)),e},type:n.type});case 2:return new m({generator:async()=>{const e=await n.generator();return e.push(Promise.resolve(t)),e},type:n.type});case 0:return new m({generator:async()=>{const e=await n.generator();return e.push(t),e},type:n.type})}},so=(e,t)=>t?io(e,t):oo(e),oo=async e=>{const t=e.dataFunc;let n;switch(t.type){case 1:return n=t.generator(),0!==n.length;case 0:case 2:return n=await t.generator(),0!==n.length}},io=async(e,t)=>{const n=Xs(e,t);let r;switch(n.type){case 0:return r=await n.generator(),r.includes(!0);case 1:return r=await Promise.all(n.generator()),r.includes(!0);case 2:return r=await Promise.all(await n.generator()),r.includes(!0)}},ao=async(e,t)=>{const n=to(e,t);let r;switch(n.type){case 1:return r=n.generator(),0!==r.length&&new Promise(((e,t)=>{let n=0;for(const s of r)s.then((t=>{n++,t?e(!0):n===r.length&&e(!1)}),t)}));case 2:return r=await n.generator(),0===Promise.length?!1:(await Promise.all(r)).includes(!0)}},co=e=>N((async function*(){for await(const t of e)yield t})),uo=async e=>{switch(e.type){case 0:return await e.generator();case 1:return await Promise.all(e.generator());case 2:const t=await e.generator();return await Promise.all(t)}},lo=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);let s=0;for(const e of r)s+=e;return s/r.length},ho=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);let s=0;for(const e of r)s+=e;return s/r.length},go=(e,t)=>{if(t<1)throw new h("size");let n;switch(e.dataFunc.type){case 1:const r=e.dataFunc.generator;n={type:1,generator:()=>{const e=[];let n=[];for(const s of r())n.push(s),n.length===t&&(e.push(Promise.all(n)),n=[]);return n.length&&e.push(Promise.all(n)),e}};break;case 2:const s=e.dataFunc.generator;n={type:2,generator:async()=>{const e=[];let n=[];for(const r of await s())n.push(r),n.length===t&&(e.push(Promise.all(n)),n=[]);return n.length&&e.push(Promise.all(n)),e}};break;case 0:const o=e.dataFunc.generator;n={type:0,generator:async()=>{const e=[];let n=[];for(const r of await o())n.push(r),n.length===t&&(e.push(n),n=[]);return n.length&&e.push(n),e}}}return new m(n)},po=(e,t)=>new m({generator:async()=>{const[n,r]=await Promise.all([e.toArray(),t.toArray()]);return[...n,...r]},type:0}),fo=async(e,t,n=f)=>{let r;switch(r=Xs(e,n?e=>n(t,e):e=>e===t),r.type){case 0:return(await r.generator()).some((e=>e));case 1:return(await Promise.all(r.generator())).some((e=>e));case 2:return(await Promise.all(await r.generator())).some((e=>e))}},vo=async(e,t,n)=>{const r=to(e,(e=>n(t,e)));switch(r.type){case 1:return(await Promise.all(r.generator())).some((e=>e));case 2:return(await Promise.all(await r.generator())).some((e=>e))}},mo=(e,t)=>t?wo(e,t):yo(e),yo=async e=>{const t=e.dataFunc;switch(t.type){case 0:case 2:return(await e.toArray()).length;case 1:return t.generator().length}},wo=async(e,t)=>{const n=await e.toArray();let r=0;for(let e=0;e<n.length;e++)!0===t(n[e])&&r++;return r},So=async(e,t)=>{const n=to(e,t);let r;switch(n.type){case 1:r=Promise.all(n.generator());break;case 2:r=Promise.all(await n.generator())}let s=0;for(const e of await r)e&&s++;return s},Ao=(e,t)=>{const n=e.dataFunc,r=t instanceof Promise;let s;switch(n.type){case 0:s={generator:()=>n.generator().then((e=>e.length?e:r?t.then((e=>[e])):[t])),type:n.type};break;case 1:s={generator:()=>{const e=n.generator();return e.length?e:r?[t]:[Promise.resolve(t)]},type:n.type};break;case 2:s={generator:async()=>{const e=await n.generator();return e.length?e:r?[t]:[Promise.resolve(t)]},type:n.type}}return new m(s)},_o=(e,t=f)=>new m({generator:async()=>{const n=[];for(const r of await e.toArray())n.find((e=>t(e,r)))||n.push(r);return n},type:0}),Co=(e,t)=>new m({generator:async()=>{const n=[];e:for(const r of await e.toArray()){for(const e of n)if(await t(e,r))continue e;n.push(r)}return n},type:0}),To=(e,t)=>new m(Xs(e,(e=>(t(e),e)))),Do=(e,t)=>{const n=to(e,(async e=>(await t(e),e)));return new m(n)},ko=async(e,t)=>{if(t<0)throw new h("index");const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();if(t>=e.length)throw new h("index");return e[t]}case 1:{const e=n.generator();if(t>=e.length)throw new h("index");return await e[t]}case 2:{const e=await n.generator();if(t>=e.length)throw new h("index");return await e[t]}}},Io=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();return t>=e.length?null:e[t]}case 1:{const e=n.generator();return t>=e.length?null:await e[t]}case 2:{const e=await n.generator();return t>=e.length?null:await e[t]}}},Ro=(e,t,n=f)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=[];for(const e of r){let t=!1;for(let r=0;r<s.length;r++){const o=s[r];if(!0===n(e,o)){t=!0;break}}!1===t&&o.push(e)}return o},type:0}),Eo=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=[];for(const e of r){let t=!1;for(let r=0;r<s.length;r++){const o=s[r];if(!0===await n(e,o)){t=!0;break}}!1===t&&o.push(e)}return o},type:0}),bo=e=>uo(e.dataFunc),No=(e,t)=>t?Po(e,t):Go(e),Go=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return e[0]}case 1:{const e=t.generator();if(0===e.length)throw new p(g.NoElements);return await e[0]}case 2:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return await e[0]}}},Po=async(e,t)=>{const n=await bo(e);for(const e of n)if(!0===t(e))return e;throw new p(g.NoMatch)},Oo=async(e,t)=>{const n=await bo(e);for(const e of n)if(!0===await t(e))return e;throw new p(g.NoMatch)},Uo=(e,t)=>t?Wo(e,t):Mo(e),Mo=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();return 0===e.length?null:e[0]}case 1:{const e=t.generator();return 0===e.length?null:await e[0]}case 2:{const e=await t.generator();return 0===e.length?null:await e[0]}}},Wo=async(e,t)=>{const n=await bo(e);for(const e of n)if(!0===t(e))return e;return null},xo=async(e,t)=>{const n=await bo(e);for(const e of n)if(!0===await t(e))return e;return null},Fo=(e,t,n)=>n?Bo(e,t,n):Lo(e,t),Lo=(e,t)=>new m({generator:async()=>{const n={};for(const r of await e.toArray()){const e=t(r),s=n[e];s?s.push(r):n[e]=new ce(e,r)}const r=new Array;for(const e in n)r.push(n[e]);return r},type:0}),Bo=(e,t,n)=>new m({generator:async()=>{const r=new Array;for(const s of await e.toArray()){const e=t(s);let o=!1;for(let t=0;t<r.length;t++){const i=r[t];if(n(i.key,e)){i.push(s),o=!0;break}}!1===o&&r.push(new ce(e,s))}const s=new Array;for(const e of r)s.push(e);return s},type:0}),$o=(e,t,n)=>n?Vo(e,t,n):qo(e,t),Vo=(e,t,n)=>new m({generator:async()=>{const r=to(e,(async e=>[await t(e),e]));let s;switch(r.type){case 1:s=await Promise.all(r.generator());break;case 2:s=await Promise.all(await r.generator())}const o=new Array;for(const[e,t]of s){let r=!1;for(let s=0;s<o.length;s++){const i=o[s];if(!0===await n(i.key,e)){i.push(t),r=!0;break}}!1===r&&o.push(new ce(e,t))}const i=new Array;for(const e of o)i.push(e);return i},type:0}),qo=(e,t)=>new m({generator:async()=>{const n=to(e,(async e=>[await t(e),e]));let r;switch(n.type){case 1:r=await Promise.all(n.generator());break;case 2:r=await Promise.all(await n.generator())}const s={};for(const[e,t]of r){const n=s[e];n?n.push(t):s[e]=new ce(e,t)}const o=new Array;for(const e in s)o.push(s[e]);return o},type:0}),jo=(e,t,n,r)=>r?Ho(e,t,n,r):Zo(e,t,n),Ho=(e,t,n,r)=>new m({generator:async()=>{const s=new Array;for await(const o of e){const e=t(o);let i=!1;for(let t=0;t<s.length;t++){const a=s[t];if(r(a.key,e)){a.push(n(o)),i=!0;break}}if(!1===i){const t=n(o);s.push(new ce(e,t))}}const o=new Array;for(const e of s)o.push(e);return o},type:0}),Zo=(e,t,n)=>new m({generator:async()=>{const r={};for(const s of await e.toArray()){const e=t(s),o=r[e],i=n(s);o?o.push(i):r[e]=new ce(e,i)}const s=new Array;for(const e in r)s.push(r[e]);return s},type:0}),Qo=(e,t,n,r,s,o)=>{const i=o?Ko(e,t,n,r,s,o):zo(e,t,n,r,s);return new m({generator:i,type:0})},Ko=(e,t,n,r,s,o)=>async()=>{const i=[];for await(const e of t){const t=r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}return(await e.toArray()).map((e=>{const t=n(e),r=i.find((e=>o(e.key,t)))??{key:t,values:[]};return s(e,r.values)}))},zo=(e,t,n,r,s)=>async()=>{const o=new Map;for await(const e of t){const t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}return(await e.toArray()).map((e=>{const t=n(e),r=o.get(t)??[];return s(e,r)}))},Yo=(e,t,n,r,s,o)=>{const i=o?Jo(e,t,n,r,s,o):Xo(e,t,n,r,s);return new m({generator:i,type:0})},Jo=(e,t,n,r,s,o)=>async()=>{const i=[];for await(const e of t){const t=await r(e),n=i.find((e=>o(e.key,t)));n?n.values.push(e):i.push({key:t,values:[e]})}const a=(await e.toArray()).map((async e=>{const t=await n(e),r=i.find((e=>o(e.key,t)))??{key:t,values:[]};return s(e,r.values)}));return await Promise.all(a)},Xo=(e,t,n,r,s)=>async()=>{const o=new Map;for await(const e of t){const t=await r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}const i=(await e.toArray()).map((async e=>{const t=await n(e),r=o.get(t)??[];return s(e,r)}));return await Promise.all(i)},ei=(e,t,n=f)=>new m({generator:async()=>{const r=await e.distinct(n).toArray();if(0===r.length)return[];const s=await t.toArray(),o=new Array;for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===n(t,r)){o.push(t);break}}}return o},type:0}),ti=(e,t,n)=>new m({generator:async()=>{const r=await e.distinctAsync(n).toArray();if(0===r.length)return[];const s=await t.toArray(),o=new Array;for(let e=0;e<r.length;e++){const t=r[e];for(let e=0;e<s.length;e++){const r=s[e];if(!0===await n(t,r)){o.push(t);break}}}return o},type:0}),ni=(e,t,n,r,s,o=f)=>new m({generator:async()=>{const[i,a]=await Promise.all([t.toArray(),e.toArray()]),c=new Array;for(const e of a){const t=n(e);for(const n of i){const i=r(n);!0===o(t,i)&&c.push(s(e,n))}}return c},type:0}),ri=(e,t)=>t?oi(e,t):si(e),si=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return e[e.length-1]}case 1:{const e=t.generator();if(0===e.length)throw new p(g.NoElements);return await e[e.length-1]}case 2:{const e=await t.generator();if(0===e.length)throw new p(g.NoElements);return await e[e.length-1]}}},oi=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}}throw new p(g.NoMatch)},ii=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(!0===await t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}}throw new p(g.NoMatch)},ai=(e,t)=>t?ui(e,t):ci(e),ci=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();return 0===e.length?null:e[e.length-1]}case 1:{const e=t.generator();return 0===e.length?null:await e[e.length-1]}case 2:{const e=await t.generator();return 0===e.length?null:await e[e.length-1]}}},ui=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(t(r))return r}break}}return null},li=async(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=e[n];if(!0===await t(r))return r}break}case 1:{const e=n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}case 2:{const e=await n.generator();for(let n=e.length-1;n>=0;n--){const r=await e[n];if(!0===await t(r))return r}break}}return null},di=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.max.apply(null,r)},hi=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.max.apply(null,r)},gi=async(e,t)=>{let n;n=t?Xs(e,t):e.dataFunc;const r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.min.apply(null,r)},pi=async(e,t)=>{const n=to(e,t),r=await uo(n);if(0===r.length)throw new p(g.NoElements);return Math.min.apply(null,r)},fi=(e,t)=>{const n="string"==typeof t?e=>[typeof e===t,e]:e=>[e instanceof t,e];return new m({generator:async()=>{const t=Xs(e,n),r=await uo(t),s=[];for(const[e,t]of r)e&&s.push(t);return s},type:0})};async function*vi(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}async function*mi(e,t,n,r){const s=((e,t)=>{const n=new Map;for(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}class yi extends m{orderedPairs;constructor(e){super({generator:async()=>{const t=e(),n=[];for await(const e of t)n.push(...e);return n},type:0}),this.orderedPairs=e}static generateAsync(e,t,n,r){let s;return s=e instanceof yi?async function*(){for await(const s of e.orderedPairs())yield*vi(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=await t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new yi(s)}static generate(e,t,n,r){let s;return s=e instanceof yi?async function*(){for await(const s of e.orderedPairs())yield*mi(s,t,n,r)}:()=>async function*(e,t,n,r){const s=await(async(e,t)=>{const n=new Map;for await(const r of e){const e=t(r),s=n.get(e);s?s.push(r):n.set(e,[r])}return n})(e,t),o=[...s.keys()].sort(r||void 0);if(n)for(let e=0;e<o.length;e++)yield s.get(o[e]);else for(let e=o.length-1;e>=0;e--)yield s.get(o[e])}(e,t,n,r),new yi(s)}thenBy(e,t){return yi.generate(this,e,!0,t)}thenByAsync(e,t){return yi.generateAsync(this,e,!0,t)}thenByDescending(e,t){return yi.generate(this,e,!1,t)}thenByDescendingAsync(e,t){return yi.generateAsync(this,e,!1,t)}}const wi=(e,t)=>yi.generate(e,(e=>e),!0,t),Si=(e,t,n)=>yi.generate(e,t,!0,n),Ai=(e,t,n)=>yi.generateAsync(e,t,!0,n),_i=(e,t,n)=>yi.generate(e,t,!1,n),Ci=(e,t,n)=>yi.generateAsync(e,t,!1,n),Ti=(e,t)=>yi.generate(e,(e=>e),!1,t),Di=async(e,t)=>{const n=Xs(e,(e=>[t(e),e])),r=await uo(n),s=[],o=[];for(const[e,t]of r)e?o.push(t):s.push(t);return[o,s]},ki=async(e,t)=>{const n=to(e,(async e=>[await t(e),e])),r=await uo(n),s=[],o=[];for(const[e,t]of r)e?o.push(t):s.push(t);return[o,s]},Ii=(e,t)=>{const n=e.dataFunc;switch(n.type){case 1:return new m({generator:()=>{const e=n.generator();return e.unshift(Promise.resolve(t)),e},type:n.type});case 2:return new m({generator:async()=>{const e=await n.generator();return e.unshift(Promise.resolve(t)),e},type:n.type});case 0:return new m({generator:async()=>{const e=await n.generator();return e.unshift(t),e},type:n.type})}},Ri=e=>{const t=e.dataFunc;switch(t.type){case 1:return new m({generator:()=>t.generator().reverse(),type:t.type});case 2:case 0:return new m({generator:async()=>(await t.generator()).reverse(),type:t.type})}},Ei=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:()=>n.generator().then((e=>{const n=new Array(e.length);for(let r=0;r<e.length;r++)n[r]=t(e[r],r);return n})),type:0};case 1:return{generator:()=>{const e=n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then((e=>t(e,n)));return r},type:1};case 2:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n].then((e=>t(e,n)));return r},type:2}}},bi=(e,t)=>"function"==typeof t?1===t.length?new m(Xs(e,t)):new m(Ei(e,t)):new m(Xs(e,(e=>e[t]))),Ni=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return{generator:async()=>{const e=await n.generator(),r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=t(e[n],n);return r},type:2};case 1:return{generator:()=>n.generator().map(((e,n)=>e.then((e=>t(e,n))))),type:1};case 2:return{generator:async()=>(await n.generator()).map(((e,n)=>e.then((e=>t(e,n))))),type:2}}},Gi=(e,t)=>{let n;return n="function"==typeof t?1===t.length?to(e,t):Ni(e,t):to(e,(e=>e[t])),new m(n)},Pi=(e,t)=>new m({generator:async()=>{let n;n="function"==typeof t?1===t.length?Xs(e,t):Ei(e,t):Xs(e,(e=>e[t]));const r=[];switch(n.type){case 0:for(const e of await n.generator())for(const t of e)r.push(t);break;case 1:for(const e of n.generator())for(const t of await e)r.push(t);break;case 2:for(const e of await n.generator())for(const t of await e)r.push(t)}return r},type:0}),Oi=(e,t)=>new m({generator:async()=>{let n;n=1===t.length?to(e,t):Ni(e,t);const r=[];switch(n.type){case 1:for(const e of n.generator())for(const t of await e)r.push(t);break;case 2:for(const e of await n.generator())for(const t of await e)r.push(t)}return r},type:0}),Ui=async(e,t,n=f)=>{const r=await e.toArray(),s=await t.toArray();if(r.length!==s.length)return!1;for(let e=0;e<r.length;e++)if(!1===n(r[e],s[e]))return!1;return!0},Mi=async(e,t,n)=>{const r=await e.toArray(),s=await t.toArray();if(r.length!==s.length)return!1;for(let e=0;e<r.length;e++){const t=r[e],o=s[e];if(!1===await n(t,o))return!1}return!0},Wi=(e,t)=>t?Fi(e,t):xi(e),xi=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return e[0]}case 1:{const e=t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return e[0]}case 2:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);if(0===e.length)throw new p(g.NoElements);return await e[0]}}},Fi=async(e,t)=>{const n=await bo(e);let r=!1,s=null;for(const e of n)if(t(e)){if(!0===r)throw new p(g.MoreThanOneMatchingElement);r=!0,s=e}if(!1===r)throw new p(g.NoMatch);return s},Li=async(e,t)=>{const n=await bo(e);let r=!1,s=null;for(const e of n)if(!0===await t(e)){if(!0===r)throw new p(g.MoreThanOneMatchingElement);r=!0,s=e}if(!1===r)throw new p(g.NoMatch);return s},Bi=(e,t)=>t?Vi(e,t):$i(e),$i=async e=>{const t=e.dataFunc;switch(t.type){case 0:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:e[0]}case 1:{const e=t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:e[0]}case 2:{const e=await t.generator();if(e.length>1)throw new p(g.MoreThanOneElement);return 0===e.length?null:await e[0]}}},Vi=async(e,t)=>{const n=await bo(e);let r=!1,s=null;for(const e of n)if(t(e)){if(!0===r)throw new p(g.MoreThanOneElement);r=!0,s=e}return s},qi=async(e,t)=>{const n=await bo(e);let r=!1,s=null;for(const e of n)if(!0===await t(e)){if(!0===r)throw new p(g.MoreThanOneElement);r=!0,s=e}return s},ji=(e,t)=>{const n=e.dataFunc;switch(n.type){case 0:return new m({generator:async()=>(await n.generator()).slice(t),type:0});case 1:return new m({generator:()=>n.generator().slice(t),type:1});case 2:return new m({generator:async()=>(await n.generator()).slice(t),type:2})}},Hi=(e,t)=>new m({generator:async()=>{const n=await e.toArray();let r=0;for(;r<n.length;r++){const e=n[r];if(!1===t(e,r))break}const s=[];for(;r<n.length;r++)s.push(n[r]);return s},type:0}),Zi=(e,t)=>new m({generator:async()=>{const n=await e.toArray();let r=0;for(;r<n.length;r++){const e=n[r];if(!1===await t(e,r))break}const s=[];for(;r<n.length;r++)s.push(n[r]);return s},type:0}),Qi=(e,t)=>t?zi(e,t):Ki(e),Ki=async e=>{let t=0;for(const n of await e.toArray())t+=n;return t},zi=async(e,t)=>{let n=0;for(const r of await e.toArray())n+=t(r);return n},Yi=async(e,t)=>{const n=to(e,t),r=await uo(n);let s=0;for(const e of r)s+=e;return s},Ji=(e,t)=>{const n=t>0?t:0,r=e.dataFunc;switch(r.type){case 1:return new m({generator:()=>r.generator().splice(0,n),type:1});case 2:return new m({generator:()=>r.generator().then((e=>e.splice(0,n))),type:2});default:return new m({generator:()=>r.generator().then((e=>e.splice(0,n))),type:0})}},Xi=(e,t)=>new m({generator:async()=>{const n=await e.toArray(),r=new Array;if(1===t.length)for(const e of n){if(!0!==t(e))break;r.push(e)}else for(let e=0;e<n.length;e++){const s=n[e];if(!0!==t(s,e))break;r.push(s)}return r},type:0}),ea=(e,t)=>new m({generator:async()=>{const n=await e.toArray(),r=new Array;if(1===t.length){const e=t;for(const t of n){if(!0!==await e(t))break;r.push(t)}}else for(let e=0;e<n.length;e++){const s=n[e];if(!0!==await t(s,e))break;r.push(s)}return r},type:0}),ta=async(e,t)=>{const n=new Map,r=Xs(e,(e=>[t(e),e])),s=await uo(r);for(const[e,t]of s){const r=n.get(e);void 0===r?n.set(e,[t]):r.push(t)}return n},na=async(e,t)=>{const n=new Map,r=to(e,(async e=>[await t(e),e])),s=await uo(r);for(const[e,t]of s){const r=n.get(e);void 0===r?n.set(e,[t]):r.push(t)}return n},ra=async(e,t)=>{const n=e.dataFunc,r=await uo(n),s={};for(const e of r)s[t(e)]=e;return s},sa=async(e,t)=>{const n=to(e,(async e=>[await t(e),e])),r=await uo(n),s={};for(const[e,t]of r)s[e]=t;return s},oa=async e=>{const t=e.dataFunc,n=await uo(t);return new Set(n)},ia=(e,t,n)=>n?ca(e,t,n):aa(e,t),aa=(e,t)=>new m({generator:async()=>{const n=new Set,r=t.toArray();for await(const t of e)!1===n.has(t)&&n.add(t);const s=await r;for(const e of s)!1===n.has(e)&&n.add(e);return[...n.keys()]},type:0}),ca=(e,t,n)=>new m({generator:async()=>{const r=[],s=await Promise.all([e.toArray(),t.toArray()]);for(const e of s)for(const t of e){let e=!1;for(const s of r)if(!0===n(t,s)){e=!0;break}!1===e&&r.push(t)}return r},type:0}),ua=(e,t,n)=>new m({generator:async()=>{const r=[],s=await Promise.all([e.toArray(),t.toArray()]);for(const e of s)for(const t of e){let e=!1;for(const s of r)if(!0===await n(t,s)){e=!0;break}!1===e&&r.push(t)}return r},type:0}),la=(e,t)=>new m({generator:async()=>(await e.toArray()).filter(t),type:0}),da=(e,t)=>new m({generator:async()=>{const n=Ni(e,(async(e,n)=>[await t(e,n),e])),r=await uo(n),s=[];for(const[e,t]of r)e&&s.push(t);return s},type:0}),ha=(e,t,n)=>n?pa(e,t,n):ga(e,t),ga=(e,t)=>new m({generator:async()=>{const[n,r]=await Promise.all([e.toArray(),t.toArray()]),s=n.length<r.length?n.length:r.length,o=new Array(s);for(let e=0;e<s;e++){const t=n[e],s=r[e];o[e]=[t,s]}return o},type:0}),pa=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=r.length<s.length?r.length:s.length,i=new Array(o);for(let e=0;e<o;e++){const t=r[e],o=s[e];i[e]=n(t,o)}return i},type:0}),fa=(e,t,n)=>new m({generator:async()=>{const[r,s]=await Promise.all([e.toArray(),t.toArray()]),o=r.length<s.length?r.length:s.length,i=new Array(o);for(let e=0;e<o;e++){const t=r[e],o=s[e];i[e]=n(t,o)}return Promise.all(i)},type:0}),va=e=>{const t=w.prototype,n=e.prototype,r=Object.getOwnPropertyNames(t);for(const e of r)n[e]=n[e]??t[e]};hn(y),(e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(gn,"aggregate"),n(mn,"all"),n(yn,"allAsync"),n(wn,"append"),n(Sn,"any"),n(Cn,"anyAsync"),n(Tn,"asParallel"),n(Dn,"average"),n(kn,"averageAsync"),n(In,"chunk"),n(Rn,"concatenate"),n(En,"contains"),n(bn,"containsAsync"),n(Nn,"count"),n(On,"countAsync"),n(Un,"defaultIfEmpty"),n(Mn,"distinct"),n(Wn,"distinctAsync"),n(xn,"each"),n(Fn,"eachAsync"),n(Ln,"elementAt"),n(Bn,"elementAtOrDefault"),n($n,"except"),n(Vn,"exceptAsync"),n(qn,"first"),n(Zn,"firstAsync"),n(Qn,"firstOrDefault"),n(Yn,"firstOrDefaultAsync"),n(Jn,"groupBy"),n(tr,"groupByAsync"),n(sr,"groupByWithSel"),n(ar,"groupJoin"),n(lr,"groupJoinAsync"),n(gr,"intersect"),n(pr,"intersectAsync"),n(fr,"joinByKey"),n(vr,"last"),n(wr,"lastAsync"),n(Sr,"lastOrDefault"),n(Cr,"lastOrDefaultAsync"),n(Tr,"max"),n(Ir,"maxAsync"),n(Rr,"min"),n(Nr,"minAsync"),n(Gr,"ofType"),n(Pr,"order"),n(Or,"orderBy"),n(Ur,"orderByAsync"),n(Mr,"orderByDescending"),n(Wr,"orderByDescendingAsync"),n(xr,"orderDescending"),n(Fr,"partition"),n(Lr,"partitionAsync"),n(Br,"prepend"),n($r,"reverse"),n(Vr,"select"),n(Zr,"selectAsync"),n(zr,"selectMany"),n(es,"selectManyAsync"),n(ts,"sequenceEquals"),n(ns,"sequenceEqualsAsync"),n(rs,"single"),n(is,"singleAsync"),n(as,"singleOrDefault"),n(ls,"singleOrDefaultAsync"),n(ds,"skip"),n(hs,"skipWhile"),n(fs,"skipWhileAsync"),n(ys,"sum"),n(As,"sumAsync"),n(_s,"take"),n(Cs,"takeWhile"),n(ks,"takeWhileAsync"),n(Es,"toArray"),n(bs,"toMap"),n(Ns,"toMapAsync"),n(Gs,"toObject"),n(Ps,"toObjectAsync"),n(Os,"toSet"),n(Us,"union"),n(xs,"unionAsync"),n(Fs,"where"),n($s,"whereAsync"),n(js,"zip"),n(Qs,"zipAsync")})(v),(e=>{const t=e.prototype,n=(e,n)=>{const r=function(...t){return e(this,...t)};Object.defineProperty(r,"length",{value:e.length-1}),t[n]=r};n(Ks,"aggregate"),n(eo,"all"),n(no,"allAsync"),n(ro,"append"),n(so,"any"),n(ao,"anyAsync"),n(co,"asAsync"),n(lo,"average"),n(ho,"averageAsync"),n(go,"chunk"),n(po,"concatenate"),n(fo,"contains"),n(vo,"containsAsync"),n(mo,"count"),n(So,"countAsync"),n(Ao,"defaultIfEmpty"),n(_o,"distinct"),n(Co,"distinctAsync"),n(To,"each"),n(Do,"eachAsync"),n(ko,"elementAt"),n(Io,"elementAtOrDefault"),n(Ro,"except"),n(Eo,"exceptAsync"),n(No,"first"),n(Oo,"firstAsync"),n(Uo,"firstOrDefault"),n(xo,"firstOrDefaultAsync"),n(Fo,"groupBy"),n($o,"groupByAsync"),n(jo,"groupByWithSel"),n(Qo,"groupJoin"),n(Yo,"groupJoinAsync"),n(Qo,"groupJoin"),n(Yo,"groupJoinAsync"),n(ei,"intersect"),n(ti,"intersectAsync"),n(ni,"joinByKey"),n(ri,"last"),n(ii,"lastAsync"),n(ai,"lastOrDefault"),n(li,"lastOrDefaultAsync"),n(di,"max"),n(hi,"maxAsync"),n(gi,"min"),n(pi,"minAsync"),n(fi,"ofType"),n(wi,"order"),n(Si,"orderBy"),n(Ai,"orderByAsync"),n(_i,"orderByDescending"),n(Ci,"orderByDescendingAsync"),n(Ti,"orderDescending"),n(Di,"partition"),n(ki,"partitionAsync"),n(Ii,"prepend"),n(Ri,"reverse"),n(bi,"select"),n(Gi,"selectAsync"),n(Pi,"selectMany"),n(Oi,"selectManyAsync"),n(Ui,"sequenceEquals"),n(Mi,"sequenceEqualsAsync"),n(Wi,"single"),n(Li,"singleAsync"),n(Bi,"singleOrDefault"),n(qi,"singleOrDefaultAsync"),n(ji,"skip"),n(Hi,"skipWhile"),n(Zi,"skipWhileAsync"),n(Qi,"sum"),n(Yi,"sumAsync"),n(Ji,"take"),n(Xi,"takeWhile"),n(ea,"takeWhileAsync"),n(bo,"toArray"),n(ta,"toMap"),n(na,"toMapAsync"),n(ra,"toObject"),n(sa,"toObjectAsync"),n(oa,"toSet"),n(ia,"union"),n(ua,"unionAsync"),n(la,"where"),n(da,"whereAsync"),n(ha,"zip"),n(fa,"zipAsync")})(m),(()=>{const{prototype:e}=w,t=Object.getOwnPropertyNames(y.prototype);for(const n of t)e[n]=e[n]??y.prototype[n];e.all=function(e){return this.every(e)},e.any=function(e){return e?this.some(e):0!==this.length},e.count=function(e){if(e){let t=0;for(let n=0;n<this.length;n++)!0===e(this[n])&&t++;return t}return this.length},e.elementAt=function(e){if(e<0||e>=this.length)throw new h("index");return this[e]},e.elementAtOrDefault=function(e){return this[e]??null},e.first=function(e){if(e){const t=this.find(e);if(void 0===t)throw new p(g.NoMatch);return t}if(0===this.length)throw new p(g.NoElements);return this[0]},e.firstOrDefault=function(e){if(e){const t=this.find(e);return void 0===t?null:t}return 0===this.length?null:this[0]},e.last=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[this.length-1]},e.lastOrDefault=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[this.length-1]},e.max=function(e){if(0===this.length)throw new p(g.NoElements);if(e){let t=Number.NEGATIVE_INFINITY;for(let n=0;n<this.length;n++)t=Math.max(e(this[n]),t);return t}return Math.max.apply(null,this)},e.min=function(e){if(0===this.length)throw new p(g.NoElements);if(e){let t=Number.POSITIVE_INFINITY;for(let n=0;n<this.length;n++)t=Math.min(e(this[n]),t);return t}return Math.min.apply(null,this)},e.reverse=function(){return Array.prototype.reverse.apply(this),this}})();var ma,ya,wa=n(4756),Sa=n(6823),Aa=n(4907);!function(e){e.Success="Success",e.GroupDoesNotExists="GroupDoesNotExists",e.ObjectDoesNotExists="ObjectDoesNotExists",e.FatalError="FatalError",e.FunctionNotSupported="FunctionNotSupported"}(ma||(ma={})),function(e){e.Success="Success",e.NoPermissions="NoPermissions",e.NameToShort="NameToShort",e.NameAlreadyExists="NameAlreadyExists",e.OtherError="OtherError",e.UnknownError="UnknownError"}(ya||(ya={}));class _a{constructor(){this._guid="",this._name="",this._iconName="",this._position=0,this._objectsOrder={},null==_a._devicesService&&(_a._devicesService=Wu.Get(c.N7.ServiceName))}GetDevicesChannelsInGroupAsync(){return e=this,t=arguments,r=function*(e=!1){let t=[],n=[];const r=yield _a._devicesService.GetDevicesAsync(e);if(void 0===this._objectsOrder||null===this._objectsOrder||0==Object.entries(this._objectsOrder).length){Wu.Get(Aa.g.ServiceName).Error("Old controller API fallback to old groups API.");for(let e of r)for(let t of e.Channels.where((e=>e.ChannelGroups.any((e=>e===this._guid)))))n.push(t);return n}const s=Object.keys(this._objectsOrder).map(Number).sort(((e,t)=>e-t));Object.values(this._objectsOrder).forEach((e=>{const n=r.select((t=>t.Channels.where((t=>t.ChannelId===e))));if(null!==n)for(let e of n)for(let n of e)t.push(n)}));for(let e of s){const r=t.firstOrDefault((t=>t.ChannelId===this._objectsOrder[e]));null!==r&&n.push(r)}return n},new((n=void 0)||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}));var e,t,n,r}get Guid(){return this._guid}set Guid(e){this._guid=e}get Name(){return this._name}set Name(e){this._name=e}get IconName(){return this._iconName}set IconName(e){this._iconName=e}get OrderPosition(){return this._position}set OrderPosition(e){this._position=e}get ObjectsOrder(){return this._objectsOrder}set ObjectsOrder(e){this._objectsOrder=e}ChangeNameAsync(e){return Wu.Get(ka.ServiceName).ChangeGroupNameAsync(this,e)}ChangeIconNameAsync(e){return Wu.Get(ka.ServiceName).ChangeGroupIconNameAsync(this,e)}}var Ca=n(8517),Ta=n(9315),Da=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class ka{constructor(){this._connection=null,this._synchronized=!1,this._onSynchronized=new Ca.J,this._groups=[],this._objectsGroupingSupported=!1,this._configurationService=Wu.Get(d.u.ServiceName),this._syncSemaphore=new Ta.z(1),this._connection=Wu.Get(o.G.ServiceName),Wu.Get(u.Q.ServiceName).OnUserLoggedInEvent().Subscribe((e=>Da(this,void 0,void 0,(function*(){yield this.ResyncGroupsAsync()}))))}ResyncGroupsAsync(){return Da(this,void 0,void 0,(function*(){var e;const t=yield this._syncSemaphore.AcquireAsync();try{this._synchronized=!1,yield this.GetGroupsAsync(!0),this._synchronized=!0,this._onSynchronized.Invoke()}catch(t){null===(e=r.h.Log)||void 0===e||e.Error(ka.ServiceName,`Failed to sync groups: ${t}`)}finally{t.Release()}}))}WaitForSynchronizationAsync(){return this._synchronized?Promise.resolve():new Promise((e=>{const t=window.setTimeout((()=>{this._onSynchronized.Unsubscribe(n),e()}),3e4),n=()=>{window.clearTimeout(t),this._onSynchronized.Unsubscribe(n),e()};this._onSynchronized.Subscribe(n)}))}SetObjectsInGroupAndOrderAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s;let o=[],i=[];for(let e of t)if(this.IsDevice(e)){for(let t of e.Channels)o.push(`${t.ChannelId}`);i.push(`${e.Guid}`)}else{if(!this.IsDeviceChannel(e))throw new Error("Passed object is not a device or device channel!");o.push(`${e.ChannelId}`),i.push(`${e.ChannelId}`)}const a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Ea(e,i),15e3,!1);switch(null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! SetObjectsInGroupAndOrderAsync()"),this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync(),null==a?void 0:a.Status){case wa.nW.OK:return new Sa.ZR(ma.Success,"");case wa.nW.NotSupportedMethod:case wa.nW.ResourceDoesNotExists:case wa.nW.ResourceIsNotAvailable:return new Sa.ZR(ma.FunctionNotSupported,"");case wa.nW.WrongData:return"GroupDoesNotExists"===a.Data?new Sa.ZR(ma.GroupDoesNotExists,a.Data):new Sa.ZR(ma.FatalError,a.Data);case wa.nW.Error:case wa.nW.FatalError:default:return new Sa.ZR(ma.FatalError,"")}}))}IsDevice(e){return void 0!==e.Channels}IsDeviceChannel(e){return void 0!==e.GetDevice}LogGroupsOrder(e){const t=Wu.Get(Aa.g.ServiceName);e.forEach(((e,n)=>{t.Debug(ka.ServiceName,`Group ${e.Name} order position [on array]: ${n} set position: ${e.OrderPosition}`)}))}LogObjectsInGroupOrder(e,t){const n=Wu.Get(Aa.g.ServiceName);n.Debug(ka.ServiceName,`Group ${e.Name} objects order:`),t.forEach(((e,t)=>{n.Debug(ka.ServiceName,`Channel ${e.Name} order position [on array]: ${t} channelId: ${e.ChannelId}`)}));for(const[t,r]of Object.entries(e.ObjectsOrder))n.Debug(`new order [GROUP ${e.Name}] Order: [${t}] = ${r}`)}ChangeGroupsOrderAsync(e){return Da(this,void 0,void 0,(function*(){var t,n;const s=e.select((e=>e.Guid)).toArray(),o=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Ra(s),15e3,!1);return null===(n=r.h.Log)||void 0===n||n.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeGroupsOrderAsync()"),this._configurationService.ExitConfigurationModeAsync(),(null==o?void 0:o.Status)===wa.nW.OK?(yield this.GetGroupsAsync(!1),wa.nW.OK):(Wu.Get(Aa.g.ServiceName).Error(ka.ServiceName,`Failed to change groups order, controller responded with error ${null==o?void 0:o.Status} data: ${null==o?void 0:o.Data}`),this.LogGroupsOrder(e),null==o?void 0:o.Status)}))}ChangeObjectsPositionsInGroupAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s,o;const i=t.select((e=>e.ChannelId)).toArray(),a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Pa(e.Guid,i),15e3,!1);return null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! ChangeObjectsPositionsInGroupAsync()"),this._configurationService.ExitConfigurationModeAsync(),(null==a?void 0:a.Status)===wa.nW.OK?(yield this.GetGroupsAsync(!1),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync(),wa.nW.OK):(null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,`Failed to change objects positions in group, controller responded with error ${null==a?void 0:a.Status} data: ${null==a?void 0:a.Data}`),this.LogObjectsInGroupOrder(e,t),null==a?void 0:a.Status)}))}IsGroupsAndObjectsOrderingAvailable(){return this._objectsGroupingSupported}MoveGroupPositionAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s,o;const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new Ia(e.Guid,t),15e3,!1);return null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! MoveGroupPositionAsync()"),this._configurationService.ExitConfigurationModeAsync(),(null==i?void 0:i.Status)===wa.nW.OK?(yield this.GetGroupsAsync(!1),wa.nW.OK):(null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,`Failed to move group position, controller responded with error ${null==i?void 0:i.Status} data: ${null==i?void 0:i.Data}`),null==i?void 0:i.Status)}))}MoveObjectInGroupPositionAsync(e,t,n){return Da(this,void 0,void 0,(function*(){var s,o,i;const a=`${t.GetDevice().Guid}_${t.Number}`,u=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(new Ga(e.Guid,a,n),15e3,!1);return null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! MoveObjectInGroupPositionAsync()"),this._configurationService.ExitConfigurationModeAsync(),(null==u?void 0:u.Status)===wa.nW.OK?(yield this.GetGroupsAsync(!1),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync(),wa.nW.OK):(null===(i=r.h.Log)||void 0===i||i.Error(ka.ServiceName,`Failed to move object in group position, controller responded with error ${null==u?void 0:u.Status} data: ${null==u?void 0:u.Data}`),null==u?void 0:u.Status)}))}AddDeviceChannelToGroupByGuidAsync(e,t){return Da(this,arguments,void 0,(function*(e,t,n=!1){var s,o,i,a;const u=new Fa;if(u.Data.Channel=e.Number,null==e.GetDevice())throw new Error("Device is not set on this channel!");u.Data.DeviceGuid=null===(s=e.GetDevice())||void 0===s?void 0:s.Guid,u.Data.GroupGuid=t;const l=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(u,15e3,!1);return null===(i=r.h.Log)||void 0===i||i.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddDeviceChannelToGroupByGuidAsync()"),this._configurationService.ExitConfigurationModeAsync(),null!=l&&null!=l.Status?(l.Status==wa.nW.OK?e.ChannelGroups.push(t):null===(a=r.h.Log)||void 0===a||a.Error(ka.ServiceName,`Failed to add device channel ${e.Name} to group ${t}, controller responded with error ${l.Status} data: ${l.Data}`),n||(yield this.GetGroupsAsync(!1),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync()),l.Status):(n||(yield this.GetGroupsAsync(!1),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync()),wa.nW.Error)}))}RemoveDeviceChannelFromGroupByGuidAsync(e,t){return Da(this,arguments,void 0,(function*(e,t,n=!1){var s,o,i;const a=new La;if(null==e.GetDevice())throw new Error("Device is not set on this channel!");a.Data.DeviceGuid=null===(s=e.GetDevice())||void 0===s?void 0:s.Guid,a.Data.Channel=e.Number,a.Data.GroupGuid=t;const u=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(a,15e3,!1);return n||this._configurationService.ExitConfigurationModeAsync(),null!=u&&null!=u.Status?(u.Status==wa.nW.OK?e.ChannelGroups=e.ChannelGroups.where((e=>e!=t)).toArray():null===(i=r.h.Log)||void 0===i||i.Error(ka.ServiceName,`Failed to remove device channel ${e.Name} from group ${t}, controller responded with error ${u.Status} data: ${u.Data}`),n||(yield this.GetGroupsAsync(!1)),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync(),u.Status):(n||(yield this.GetGroupsAsync(!1)),yield Wu.Get(c.N7.ServiceName).GetDevicesAsync(),wa.nW.Error)}))}UpsertGroupWithDevicesChannelsAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s,o;if(this._groups.all((t=>t.Guid!=e.Guid))){let t=yield this.AddNewGroupWithIconAsync(e.Name,e.IconName);if(!(t instanceof _a))return t instanceof Sa.ZR?t:new Sa.ZR(ya.UnknownError,"");e=t}for(let s of t.where((t=>t.ChannelGroups.all((t=>t!==e.Guid))))){let t=yield this.AddDeviceChannelToGroupAsync(s,e,!0);if(t!==wa.nW.OK)return null===(n=r.h.Log)||void 0===n||n.Error(ka.ServiceName,`Failed to add device channel ${s.Name} to group ${e.Name}, controller responded with error ${t}`),new Sa.ZR(ya.UnknownError,`Failed to add device channel ${s.Name} to group ${e.Name}, controller responded with error ${t}`)}let i=yield Wu.Get(c.N7.ServiceName).GetDevicesAsync();for(let n of i)for(let i of n.Channels.except(t,((e,t)=>e.GetDevice().Guid==t.GetDevice().Guid&&e.Number==t.Number)))for(let t of i.ChannelGroups.where((t=>e.Guid==t))){let t=yield this.RemoveDeviceChannelFromGroupAsync(i,e,!0);if(t!==wa.nW.OK)return null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,`Failed to remove device channel ${i.Name} from group ${e.Name}, controller responded with error ${t}`),null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpsertGroupWithDevicesChannelsAsync()"),this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),new Sa.ZR(ya.UnknownError,`Failed to remove device channel ${i.Name} from group ${e.Name}, controller responded with error ${t}`)}return this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),e}))}UpdateGroupWithDevicesChannelsAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s,o,i;for(let o of t.where((t=>t.ChannelGroups.all((t=>t!==e))))){let t=yield this.AddDeviceChannelToGroupByGuidAsync(o,e,!0);if(t!==wa.nW.OK)return null===(n=r.h.Log)||void 0===n||n.Error(ka.ServiceName,`Failed to add device channel ${o.Name} to group ${e}, controller responded with error ${t}`),null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpdateGroupWithDevicesChannelsAsync()"),this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),wa.nW.FatalError}let a=yield Wu.Get(c.N7.ServiceName).GetDevicesAsync();for(let n of a)for(let s of n.Channels.except(t,((e,t)=>e.GetDevice().Guid==t.GetDevice().Guid&&e.Number==t.Number)))for(let t of s.ChannelGroups.where((t=>e==t))){let t=yield this.RemoveDeviceChannelFromGroupByGuidAsync(s,e,!0);if(t!==wa.nW.OK)return null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,`Failed to remove device channel ${s.Name} from group ${e}, controller responded with error ${t}`),null===(i=r.h.Log)||void 0===i||i.Error(ka.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! UpdateGroupWithDevicesChannelsAsync()"),this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),wa.nW.FatalError}return this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),wa.nW.OK}))}ChangeGroupNameByGuidAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,r;let s=new xa,o=new Ba,i=this._groups.first((t=>t.Guid===e));o.Guid=e,o.Name=t,o.IconName=i.IconName,null===(n=s.Data)||void 0===n||n.push(o);const a=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(s,15e3,!1);if(this._configurationService.ExitConfigurationModeAsync(),this._groups=yield this.GetGroupsAsync(!1),null!=a&&null!=a.Status)switch(a.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(a.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}ChangeGroupNameAndIconAsync(e,t,n){return this.ChangeGroupNameAndIconByGuidAsync(e.Guid,t,n)}ChangeGroupNameAndIconByGuidAsync(e,t,n){return Da(this,void 0,void 0,(function*(){var r,s;let o=new xa,i=new Ba,a=this._groups.first((t=>t.Guid===e));i.Guid=e,i.Name=t,i.IconName=n,i.ObjectsOrder=a.ObjectsOrder,null===(r=o.Data)||void 0===r||r.push(i);const c=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(o,15e3,!1);if(this._configurationService.ExitConfigurationModeAsync(),this._groups=yield this.GetGroupsAsync(!1),null!=c&&null!=c.Status)switch(c.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(c.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${c.Status} data: ${c.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${c.Status} data: ${c.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}ChangeGroupIconNameByGuidAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,r;let s=new xa,o=new Ba,i=this._groups.first((t=>t.Guid===e));o.Guid=e,o.Name=i.Name,o.IconName=t,null===(n=s.Data)||void 0===n||n.push(o);const a=yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(s,15e3,!1);if(this._configurationService.ExitConfigurationModeAsync(),this._groups=yield this.GetGroupsAsync(!1),null!=a&&null!=a.Status)switch(a.Status){case wa.nW.OK:return new Sa.ZR(ya.Success,"");case wa.nW.WrongData:switch(a.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}GetServiceName(){return ka.ServiceName}GetGroupByGuid(e){return this._groups.first((t=>t.Guid===e))}ChangeGroupNameAsync(e,t){return this.ChangeGroupNameByGuidAsync(e.Guid,t)}ChangeGroupIconNameAsync(e,t){return this.ChangeGroupIconNameByGuidAsync(e.Guid,t)}RemoveGroupAsync(e){return this.RemoveGroupByGuidAsync(e.Guid)}RemoveGroupByGuidAsync(e){return Da(this,void 0,void 0,(function*(){var t;let n=new Ma;n.Data=e;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(n,15e3,!1);return this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),null!=r&&null!=r.Status?null==r?void 0:r.Status:wa.nW.Error}))}GetGroupsAsync(){return Da(this,arguments,void 0,(function*(e=!0){var t,n;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Wa,15e3,e);let s=[];if((null==r?void 0:r.Status)===wa.nW.OK){let t=0,o=Wu.Get(Aa.g.ServiceName),i=yield Wu.Get(c.N7.ServiceName).GetDevicesAsync();return null===(n=r.Data)||void 0===n||n.forEach((n=>{t++;let r=new _a;if(r.Guid=n.Guid,r.Name=n.Name,r.IconName=n.IconName,r.ObjectsOrder=n.ObjectsOrder,r.OrderPosition=n.OrderPosition,null==r.OrderPosition&&(r.OrderPosition=t),null==r.ObjectsOrder){this._objectsGroupingSupported=!1,r.ObjectsOrder={};let e=i.selectMany((e=>e.Channels.where((e=>e.ChannelGroups.any((e=>e==r.Guid)))))),t=0;for(let n of e)t++,r.ObjectsOrder[t]=n.ChannelId}else this._objectsGroupingSupported=!0;e||o.Info(ka.ServiceName,`Got group: ${r.Name} ${r.Guid} order: ${r.OrderPosition} objects order: ${JSON.stringify(r.ObjectsOrder)}`),s.push(r)})),this._groups=s,s}throw new Error(`Failed to get groups, API responded with status ${null==r?void 0:r.Status} data: ${null==r?void 0:r.Data}`)}))}AddDeviceChannelToGroupAsync(e,t,n=!1){return this.AddDeviceChannelToGroupByGuidAsync(e,t.Guid,n)}RemoveDeviceChannelFromGroupAsync(e,t,n=!1){return this.RemoveDeviceChannelFromGroupByGuidAsync(e,t.Guid,n)}AddNewGroupAsync(e){return Da(this,void 0,void 0,(function*(){var t,n,s;let o=new xa,i=new Ba;i.Name=e,null===(t=o.Data)||void 0===t||t.push(i);const a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(o,15e3,!1);if(this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),null!=a&&null!=a.Status)switch(a.Status){case wa.nW.OK:return this._groups.first((t=>t.Name===e));case wa.nW.WrongData:switch(null===(s=r.h.Log)||void 0===s||s.Error(ka.ServiceName,`Failed to add new group, controller responded with error ${a.Status} data: ${a.Data}`),a.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${a.Status} data: ${a.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}AddNewGroupWithIconAsync(e,t){return Da(this,void 0,void 0,(function*(){var n,s,o;let i=new xa,a=new Ba;a.Name=e,a.IconName=t,null===(n=i.Data)||void 0===n||n.push(a);const c=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(i,15e3,!1);if(this._configurationService.ExitConfigurationModeAsync(),yield this.GetGroupsAsync(!1),null!=c&&null!=c.Status)switch(c.Status){case wa.nW.OK:return this._groups.first((t=>t.Name===e));case wa.nW.WrongData:switch(null===(o=r.h.Log)||void 0===o||o.Error(ka.ServiceName,`Failed to add new group, controller responded with error ${c.Status} data: ${c.Data}`),c.Data){case"NameToShort":return new Sa.ZR(ya.NameToShort,"At least 3 characters required");case"NameAlreadyExists":return new Sa.ZR(ya.NameAlreadyExists,"Group with this name already exists");default:return new Sa.ZR(ya.OtherError,`Response error: ${c.Status} data: ${c.Data}`)}default:return new Sa.ZR(ya.OtherError,`Response error: ${c.Status} data: ${c.Data}`)}return new Sa.ZR(ya.UnknownError,"")}))}}ka.ServiceName="ChannelsGroupsService";class Ia extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/move",this.Method=wa.IT.Post,this.Data=new Na,this.Data.GroupGuid=e,this.Data.NewPosition=t}}class Ra extends wa.CP{constructor(e){super(),this.Resource="/devices/groups/move",this.Method=wa.IT.Post,this.Data=e}}class Ea extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/objects/set",this.Method=wa.IT.Post,this.Data=new ba,this.Data.GroupGuid=e.Guid,this.Data.ObjectsIds=t}}class ba{constructor(){this.GroupGuid="",this.ObjectsIds=[]}}class Na{constructor(){this.GroupGuid="",this.NewPosition=0}}class Ga extends wa.CP{constructor(e,t,n){super(),this.Resource="/devices/groups/group/object/move",this.Method=wa.IT.Post,this.Data=new Oa,this.Data.GroupGuid=e,this.Data.NewPosition=n,this.Data.ObjectId=t}}class Pa extends wa.CP{constructor(e,t){super(),this.Resource="/devices/groups/group/objects/move",this.Method=wa.IT.Post,this.Data=new Ua,this.Data.GroupGuid=e,this.Data.OrderedObjectsIds=t}}class Oa{constructor(){this.GroupGuid="",this.ObjectId="",this.NewPosition=0}}class Ua{constructor(){this.GroupGuid="",this.OrderedObjectsIds=[]}}class Ma extends wa.CP{constructor(){super(),this.Resource="/devices/groups/group",this.Method=wa.IT.Delete}}class Wa extends wa.CP{constructor(){super(),this.Resource="/devices/groups/",this.Method=wa.IT.Get}}class xa extends wa.CP{constructor(){super(),this.Resource="/devices/groups/group",this.Method=wa.IT.Put,this.Data=[]}}class Fa extends wa.CP{constructor(){super(),this.Resource="/devices/device/channel/groups/group/",this.Method=wa.IT.Put,this.Data=new $a}}class La extends wa.CP{constructor(){super(),this.Resource="/devices/device/channel/groups/group/",this.Method=wa.IT.Delete,this.Data=new $a}}class Ba{constructor(){this.Id=0,this.Guid="",this.Name="",this.IconName="",this.OrderPosition=0,this.ObjectsOrder={}}}class $a{constructor(){this.GroupGuid="",this.DeviceGuid="",this.Channel=0}}var Va,qa,ja,Ha,Za,Qa=n(38),Ka=n(5410),za=n(9054),Ya=n(934),Ja=n(2990),Xa=n(4824),ec=n(7198),tc=n(2824),nc=n(6203);!function(e){e.CannotFindDevice="CannotFindDevice",e.ResponseTypeNotSupported="ResponseTypeNotSupported",e.InvalidChannelNumber="InvalidChannelNumber",e.IncorrectLimitValue="IncorrectLimitValue",e.IncorrectOffsetValue="IncorrectOffsetValue",e.OtherError="OtherError",e.FatalError="FatalError",e.NoData="NoData",e.FunctionalityNotSupported="FunctionalityNotSupported"}(Va||(Va={})),function(e){e[e.None=0]="None",e[e.DataRange=1]="DataRange",e[e.Hour=2]="Hour",e[e.Day=3]="Day",e[e.Week=4]="Week",e[e.Month=5]="Month",e[e.Year=6]="Year",e[e.ThisHour=7]="ThisHour",e[e.ThisDay=8]="ThisDay",e[e.ThisWeek=9]="ThisWeek",e[e.ThisMonth=10]="ThisMonth",e[e.ThisYear=11]="ThisYear"}(qa||(qa={})),function(e){e[e.Day=0]="Day",e[e.Week=1]="Week",e[e.Month=2]="Month",e[e.Year=3]="Year",e[e.Hour=4]="Hour"}(ja||(ja={})),function(e){e.Min="Min",e.Max="Max",e.Avg="Avg"}(Ha||(Ha={}));class rc{constructor(){this._objectType="Unknown",this._stateInterfaceType="Unknown"}get StateObjectType(){return this._objectType}get StateInterfaceType(){return this._stateInterfaceType}get StateResponseType(){return this._stateInterfaceType}set StateObjectType(e){this._objectType=e}set StateInterfaceType(e){this._stateInterfaceType=e}}!function(e){e[e.Unknown=-1]="Unknown",e[e.PitchBlack=0]="PitchBlack",e[e.VeryDark=1]="VeryDark",e[e.DarkIndoors=2]="DarkIndoors",e[e.DimIndoors=3]="DimIndoors",e[e.NormalIndoors=4]="NormalIndoors",e[e.BrightIndoors=5]="BrightIndoors",e[e.DimOutdoors=6]="DimOutdoors",e[e.CloudyOutdoors=7]="CloudyOutdoors",e[e.DirectSunlight=8]="DirectSunlight"}(Za||(Za={}));var sc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class oc{constructor(){this.DELIM=";",this._connection=null,this._connection=Wu.Get(o.G.ServiceName)}numToCsv(e){const t="string"==typeof e?Number(e.replace(",",".")):e;return Number.isFinite(t)?t.toLocaleString("en-US",{useGrouping:!1}):""}quoteIfNeeded(e){return e.includes(this.DELIM)||e.includes('"')?`"${e.replace(/"/g,'""')}"`:e}ExportPressureToCsv(e,t,n){(0,tc.gf)(this.ExportAveragingStateValuesToCsv(e,t,n),`PressureHistory_${e.Name}_${t}.csv`)}ExportBrightnessToCsv(e,t,n){var r;if(!(null===(r=null==n?void 0:n.Data)||void 0===r?void 0:r.length))return;const s=[],o=(n.Data[0],["Time","AggregatedBy"]);o.push("LuxValue","LuxToLinearScale","LightCondition"),s.push(o.join(this.DELIM)),n.Data.forEach((e=>{var t,n,r;const o=[this.quoteIfNeeded(e.Time),this.quoteIfNeeded(e.AggregatedBy)];null!==e.Values&&(o.push(this.numToCsv(null===(t=e.Values)||void 0===t?void 0:t.LuxValue)),o.push(this.numToCsv(null===(n=e.Values)||void 0===n?void 0:n.LuxToLinearScale)),o.push(this.numToCsv(null===(r=e.Values)||void 0===r?void 0:r.LightCondition))),s.push(o.join(this.DELIM))})),(0,tc.gf)(s.join("\n"),`BrightnessHistory_${e.Name}_${t}.csv`)}ExportHumidityToCsv(e,t,n){(0,tc.gf)(this.ExportAveragingStateValuesToCsv(e,t,n),`HumidityHistory_${e.Name}_${t}.csv`)}ExportWindSpeedToCsv(e,t,n){(0,tc.gf)(this.ExportAveragingStateValuesToCsv(e,t,n),`WindSpeedHistory_${e.Name}_${t}.csv`)}ExportTemperatureToCsv(e,t,n){(0,tc.gf)(this.ExportAveragingStateValuesToCsv(e,t,n),`TemperatureHistory_${e.Name}_${t}.csv`)}ExportAveragingStateValuesToCsv(e,t,n){var r;if(!(null===(r=null==n?void 0:n.Data)||void 0===r?void 0:r.length))return"";const s=[],o=(n.Data[0],["Time","AggregatedBy"]);return o.push("LastValue","Average","Mode","Min","Max"),s.push(o.join(this.DELIM)),n.Data.forEach((e=>{var t,n,r,o,i;const a=[this.quoteIfNeeded(e.Time),this.quoteIfNeeded(e.AggregatedBy)];null!==e.Values&&(a.push(this.numToCsv(null===(t=e.Values)||void 0===t?void 0:t.LastValue)),a.push(this.numToCsv(null===(n=e.Values)||void 0===n?void 0:n.Average)),a.push(this.numToCsv(null===(r=e.Values)||void 0===r?void 0:r.Mode)),a.push(this.numToCsv(null===(o=e.Values)||void 0===o?void 0:o.Min)),a.push(this.numToCsv(null===(i=e.Values)||void 0===i?void 0:i.Max))),s.push(a.join(this.DELIM))})),s.join("\n")}ExportEnergyToCsv(e,t,n){var r,s;let o=n.Data;if(!(null==o?void 0:o.length))return;const i=[],a=o[0],c=["Time","AggregatedBy"];null===(r=a.Values)||void 0===r||r.MeasurementAveragingParameters.forEach(((e,t)=>{c.push(`${t}:LastValue`,`${t}:Average`,`${t}:Mode`,`${t}:Min`,`${t}:Max`)})),null===(s=a.Values)||void 0===s||s.MeasurementNonAveragingParmeters.forEach(((e,t)=>c.push(`${t}`))),i.push(c.join(this.DELIM)),o.forEach((e=>{var t,n;const r=[this.quoteIfNeeded(e.Time),this.quoteIfNeeded(e.AggregatedBy)];null===(t=e.Values)||void 0===t||t.MeasurementAveragingParameters.forEach((e=>{r.push(this.numToCsv(e.LastValue),this.numToCsv(e.Average),this.numToCsv(e.Mode),this.numToCsv(e.Min),this.numToCsv(e.Max))})),null===(n=e.Values)||void 0===n||n.MeasurementNonAveragingParmeters.forEach((e=>r.push(this.numToCsv(e)))),i.push(r.join(this.DELIM))})),(0,tc.gf)(i.join("\n"),`EnergyHistory_${e.Name}_${t}.csv`)}GetStatesByTimeRangeAsync(e,t,n,r,s,o,i){return sc(this,arguments,void 0,(function*(e,t,n,r,s,o,i,a=!1){var u;try{if(!(yield this.DoesSupportPreciseTimeFramesAsync()))return new Sa.ZR(Va.FunctionalityNotSupported,"State history data in time range is not supported with this version of controller software, update software to get this functionality.");let l;if("string"==typeof e){const t=yield Wu.Get(c.N7.ServiceName).GetDevice(e);if(null==t)return new Sa.ZR(Va.CannotFindDevice,`Device with specified GUID ${e} does not exist.`);l=t}else l=e;if(!l.Channels.any((e=>e.Number===t)))return new Sa.ZR(Va.InvalidChannelNumber,`Given channel not found in device with guid: ${l.Guid}.`);if(!l.Channels.any((e=>e.Number===t&&e.AvailableResponseTypes.any((e=>e.Type===n)))))return new Sa.ZR(Va.ResponseTypeNotSupported,"Device or channel not supporting requested DeviceResponseType.");const d=new uc;d.DeviceGuid=l.Guid,d.DeviceChannel=t,d.StateInterfaceType=n,d.ReverseOrder=a,d.DataRange=r,d.Time=s,d.Limit=o,d.Offset=i;const h=yield null===(u=this._connection)||void 0===u?void 0:u.SendAndWaitForResponseAsync(new cc(d),3e4,!1);if(null==h)return new Sa.ZR(Va.OtherError,"Cannot get state history data - response is null.");switch(h.Status){case wa.nW.WrongData:switch(h.Data){case"IncorrectLimitValue":return new Sa.ZR(Va.IncorrectLimitValue,"Cannot get state history data - limit value is incorrect!");case"IncorrectOffsetValue":return new Sa.ZR(Va.IncorrectOffsetValue,"Cannot get state history data - offset value is incorrect!");case"IncorrectArguments":return new Sa.ZR(Va.OtherError,"Cannot get state history data - some parameters are incorrect!");case"UnsupportedRange":return new Sa.ZR(Va.OtherError,"Cannot get state history data - time range is incorrect!");default:return new Sa.ZR(Va.OtherError,"Cannot get state history data - unknown error!")}case wa.nW.FatalError:return new Sa.ZR(Va.FatalError,"Cannot get state history data - an exception occurred in the controller while reading data!");case wa.nW.ResourceDoesNotExists:return new Sa.ZR(Va.ResponseTypeNotSupported,`Device or channel not supporting requested DeviceResponseType or device/channel does not exist. ${h.Data}`);case wa.nW.OK:if(null==h.Data)return new Sa.ZR(Va.NoData,"Controller responded with status OK, but response does not contain data!");if(h.Data.AggregateDataList=h.Data.AggregateDataList.map((e=>(e.AggregateData=(0,tc.ku)(e.AggregateData),e))),n===nc.mQ.MeasuredEnergy){const e=h.Data.Data.map((e=>{const t=e;return t.Values.MeasurementAveragingParameters=(0,tc.ku)(e.Values.MeasurementAveragingParameters),t.Values.MeasurementNonAveragingParmeters=(0,tc.ku)(e.Values.MeasurementNonAveragingParmeters),t}));return h.Data.Data=e,h.Data}return h.Data;default:return new Sa.ZR(Va.OtherError,`Cannot get state history data - controller responded with response code ${h.Status}`)}}catch(e){return new Sa.ZR(Va.FatalError,`Cannot get state history data - exception occurs! ${e}`)}}))}GetServiceName(){return oc.ServiceName}DoesSupportPreciseTimeFramesAsync(){return sc(this,void 0,void 0,(function*(){let e=(yield Wu.Get(Xa.OA.ServiceName).GetSoftwareRuntimeInfoAsync()).SoftwareVersion.split(".");return Number(e[0])>6||6===Number(e[0])&&Number(e[1])>=101}))}GetStatesByIntervalAsync(e,t,n,r,s,o){return sc(this,arguments,void 0,(function*(e,t,n,r,s,o,i=!1){var a;try{if(!(yield this.IsFunctionalitySupportedAsync()))return new Sa.ZR(Va.FunctionalityNotSupported,"State history data is not supported with this version of controller software, update software to get this functionality.");let u;if("string"==typeof e){const t=yield Wu.Get(c.N7.ServiceName).GetDevice(e);if(null==t)return new Sa.ZR(Va.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);u=t}else u=e;if(!u.Channels.any((e=>e.Number==t)))return new Sa.ZR(Va.InvalidChannelNumber,`Given channel not found in device with guid: ${u.Guid}.`);if(!u.Channels.any((e=>e.Number==t&&e.AvailableResponseTypes.any((e=>e.Type==n)))))return new Sa.ZR(Va.ResponseTypeNotSupported,"Device or channel not supporting requested DeviceResponseType.");const l=new ac;l.DeviceGuid=u.Guid,l.DeviceChannel=t,l.StateInterfaceType=n,l.ReverseOrder=i,l.Limit=s,l.Offset=o;let d=(yield Wu.Get(Xa.OA.ServiceName).GetSoftwareRuntimeInfoAsync()).SoftwareVersion.split(".");if(Number(d[0])>6||6===Number(d[0])&&Number(d[1])>=101)switch(r){case qa.ThisHour:l.Range=qa.Hour;break;case qa.ThisDay:l.Range=qa.Day;break;case qa.ThisWeek:l.Range=qa.Week;break;case qa.ThisMonth:l.Range=qa.Month;break;case qa.ThisYear:l.Range=qa.Year}else l.Range=r;const h=yield null===(a=this._connection)||void 0===a?void 0:a.SendAndWaitForResponseAsync(new ic(l),3e4,!1);if(null==h)return new Sa.ZR(Va.OtherError,"Cannot get state history data - response is null.");switch(h.Status){case wa.nW.WrongData:switch(h.Data){case"IncorrectLimitValue":return new Sa.ZR(Va.IncorrectLimitValue,"Cannot get state history data - limit value is incorrect!");case"IncorrectOffsetValue":return new Sa.ZR(Va.IncorrectOffsetValue,"Cannot get state history data - offset value is incorrect!");case"IncorrectArguments":return new Sa.ZR(Va.OtherError,"Cannot get state history data - some parameters are incorrect!");default:return new Sa.ZR(Va.OtherError,"Cannot get state history data - unknown error!")}case wa.nW.FatalError:return new Sa.ZR(Va.FatalError,"Cannot get state history data - an exception occurred in the controller while reading data!");case wa.nW.ResourceDoesNotExists:return new Sa.ZR(Va.ResponseTypeNotSupported,"Device or channel not supporting requested DeviceResponseType.");case wa.nW.OK:if(null==h.Data)return new Sa.ZR(Va.NoData,"Controller responede with status OK, but response does not contain data!");if(h.Data.AggregateDataList=h.Data.AggregateDataList.map((e=>(e.AggregateData=(0,tc.ku)(e.AggregateData),e))),n===nc.mQ.MeasuredEnergy){const e=h.Data.Data.map((e=>{const t=e;return t.Values.MeasurementAveragingParameters=(0,tc.ku)(e.Values.MeasurementAveragingParameters),t.Values.MeasurementNonAveragingParmeters=(0,tc.ku)(e.Values.MeasurementNonAveragingParmeters),t}));return h.Data.Data=e,h.Data}return h.Data;default:return new Sa.ZR(Va.OtherError,`Cannot get state history data - controller responded with response code ${h.Status}`)}}catch(e){return new Sa.ZR(Va.FatalError,`Cannot get state history data - exeption occurs! ${e}`)}}))}GetAvailableStatesAsync(){return sc(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new lc,12e3,!1);return null==t?new Sa.ZR(Va.OtherError,"Cannot get available states - response is null."):t.Status!=wa.nW.OK?new Sa.ZR(Va.OtherError,`Cannot get available states - controller responded with response code ${t.Status}.`):null==t.Data?new Sa.ZR(Va.NoData,"Cannot get available states - controller responede with status OK, but response does not contain data!"):t.Data.map((e=>{const t=new rc;return t.StateInterfaceType=e.StateInterfaceType,t.StateObjectType=e.StateObjectType,t}))}catch(e){return new Sa.ZR(Va.FatalError,`Cannot get available states - exeption occurs! ${e}`)}}))}IsFunctionalitySupportedAsync(){return sc(this,void 0,void 0,(function*(){let e=(yield Wu.Get(Xa.OA.ServiceName).GetSoftwareRuntimeInfoAsync()).SoftwareVersion.split(".");return Number(e[0])>3||3===Number(e[0])&&Number(e[1])>=42}))}GetAvailableStatesPerChannelAsync(e,t){return sc(this,void 0,void 0,(function*(){var n;let r;if("string"==typeof e){const t=yield Wu.Get(c.N7.ServiceName).GetDevice(e);if(null==t)return new Sa.ZR(Va.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);r=t}else r=e;const s=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new dc(new hc(r.Guid,t)),8e3,!1);if(null==s)return new Sa.ZR(Va.OtherError,"Cannot get available states - response is null.");switch(s.Status){case wa.nW.ResourceDoesNotExists:switch(s.Data){case"DeviceNotFound":return new Sa.ZR(Va.CannotFindDevice,"Cannot get available states - device does not exists!");case"ChannelNotFound":return new Sa.ZR(Va.InvalidChannelNumber,"Cannot get available states - wrong channel!");default:return new Sa.ZR(Va.OtherError,"Cannot get available states - unknown error!")}case wa.nW.OK:{if(null==s.Data)return new Sa.ZR(Va.NoData,"Cannot get available states - controller responede with status OK, but response does not contain data!");const e=s.Data.AvailableStates.map((e=>{const t=new rc;return t.StateInterfaceType=e.StateInterfaceType,t.StateObjectType=e.StateObjectType,t}));return s.Data.AvailableStates=e,s.Data}default:return new Sa.ZR(Va.OtherError,`Cannot get available states - controller responded with response code ${s.Status}`)}}))}}oc.ServiceName="StatesHistoryService";class ic extends wa.CP{constructor(e){super(),this.Resource="/statehistory/states/get/last",this.Method=wa.IT.Get,this.Data=e}}class ac{constructor(){this.DeviceGuid="",this.DeviceChannel=0,this.StateInterfaceType="",this.Range=qa.Day,this.ReverseOrder=!1,this.Limit=0,this.Offset=0}}class cc extends wa.CP{constructor(e){super(),this.Resource="/statehistory/states/get/timerange",this.Method=wa.IT.Get,this.Data=e}}class uc{constructor(){this.DeviceGuid="",this.DeviceChannel=0,this.StateInterfaceType="",this.DataRange=ja.Day,this.Time=new Date,this.ReverseOrder=!1,this.Limit=0,this.Offset=0}}class lc extends wa.CP{constructor(){super(),this.Resource="/statehistory/states/available",this.Method=wa.IT.Get}}class dc extends wa.CP{constructor(e){super(),this.Resource="/statehistory/states/available/per/channel",this.Method=wa.IT.Get,this.Data=e}}class hc{constructor(e,t){this.DeviceGuid=e,this.Channel=t}}var gc,pc,fc,vc,mc,yc,wc,Sc=n(8679);(wc=gc||(gc={}))[wc.User=0]="User",wc[wc.Controller=1]="Controller",wc[wc.Marketing=2]="Marketing",(yc=pc||(pc={}))[yc.Notification=0]="Notification",yc[yc.Message=1]="Message",yc[yc.Alarm=2]="Alarm",yc[yc.Warning=3]="Warning",yc[yc.Info=4]="Info",(mc=fc||(fc={}))[mc.Other=0]="Other",mc[mc.UserLoggedIn=1]="UserLoggedIn",mc[mc.UserLoggedOut=2]="UserLoggedOut",mc[mc.FoundNewDevice=3]="FoundNewDevice",mc[mc.DoorBellPress=4]="DoorBellPress",mc[mc.AddedNewDevice=5]="AddedNewDevice",mc[mc.RemovedDevice=6]="RemovedDevice",mc[mc.RegisteredNewUser=7]="RegisteredNewUser",mc[mc.GotAccessToTheInternet=8]="GotAccessToTheInternet",mc[mc.LostAccessToTheInternet=9]="LostAccessToTheInternet",mc[mc.RemovedUser=10]="RemovedUser",mc[mc.NetworkChanged=11]="NetworkChanged",function(e){e.WeatherWidget="WeatherWidget"}(vc||(vc={}));var Ac=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class _c{constructor(){this._chatSubscriptions=[],this._connection=Wu.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/notify/message/new",(e=>{const t=e.Data;if(null==t.RecipientUserGuid&&t.MessageType==pc.Message)return;const n=new Cc;n.DateTime=t.DateTime,n.Guid=t.Guid,n.MessageSource=t.MessageSource,n.MessageText=t.MessageText,n.MessageType=t.MessageType,n.RecipientUserGuid=t.RecipientUserGuid?t.RecipientUserGuid:"n/a",n.Sender=t.Sender,n.SenderName=t.SenderName?t.SenderName:"n/a",n.SenderUserGuid=t.SenderUserGuid?t.SenderUserGuid:"n/a",n.TextToSpeechMessage=t.TextToSpeechMessage?t.TextToSpeechMessage:"";for(let[e,r]of Object.entries(t.MessageActions))n.MessageActions.set(vc[e],r);for(let[e,r]of Object.entries(t.MessageActionsData))n.MessageActionsData.set(e,r);this._chatSubscriptions.forEach((e=>{e(n)}))}))}GetCachedMessagesAsync(){return Ac(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new Tc,12e3,!1);if(null==e)return new Sa.ZR(Uc.OtherError,"Cannot get messages - response is null.");if(e.Status!=wa.nW.OK)return new Sa.ZR(Uc.OtherError,`Cannot get messages - controller responded with response code ${e.Status}.`);if(null==e.Data)return new Sa.ZR(Uc.NoData,"Cannot get messages - controller responded with status OK, but response does not contain data!");const t=[];return e.Data.forEach((e=>{if(null==e.RecipientUserGuid&&e.MessageType==pc.Message)return;const n=new Cc;n.DateTime=e.DateTime,n.Guid=e.Guid,n.MessageSource=e.MessageSource,n.MessageText=e.MessageText,n.MessageType=e.MessageType,n.RecipientUserGuid=e.RecipientUserGuid?e.RecipientUserGuid:"n/a",n.Sender=e.Sender,n.SenderName=e.SenderName?e.SenderName:"n/a",n.SenderUserGuid=e.SenderUserGuid?e.SenderUserGuid:"n/a",n.TextToSpeechMessage=e.TextToSpeechMessage?e.TextToSpeechMessage:"";for(let[t,r]of Object.entries(e.MessageActions))n.MessageActions.set(vc[t],r);for(let[t,r]of Object.entries(e.MessageActionsData))n.MessageActionsData.set(t,r);t.push(n)})),t}catch(e){return new Sa.ZR(Uc.FatalError,`Cannot get messages - exception occurred ${e}`)}}))}SendMessageAsync(e){return Ac(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Dc(`recipient:home ${e}`),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(Vc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){this._chatSubscriptions.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class Cc{constructor(){this._sender=gc.Controller,this._messageType=pc.Info,this._messageSource=fc.Other,this._senderUserGuid="",this._recipientUserGuid="",this._textToSpeechMessage="",this._messageActions=new Map,this._messageActionsData=new Map,this._guid="",this._senderName="",this._messageText="",this._dateTime=(new Date).toDateString()}get Sender(){return this._sender}get MessageType(){return this._messageType}get MessageSource(){return this._messageSource}get SenderUserGuid(){return this._senderUserGuid}get RecipientUserGuid(){return this._recipientUserGuid}get TextToSpeechMessage(){return this._textToSpeechMessage}get MessageActions(){return this._messageActions}get MessageActionsData(){return this._messageActionsData}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set Sender(e){this._sender=e}set MessageType(e){this._messageType=e}set MessageSource(e){this._messageSource=e}set SenderUserGuid(e){this._senderUserGuid=e}set RecipientUserGuid(e){this._recipientUserGuid=e}set TextToSpeechMessage(e){this._textToSpeechMessage=e}set MessageActions(e){this._messageActions=e}set MessageActionsData(e){this._messageActionsData=e}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}class Tc extends wa.CP{constructor(){super(),this.Resource="/homemessaging/messages",this.Method=wa.IT.Get}}class Dc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/message",this.Method=wa.IT.Put,this.Data=e}}var kc,Ic,Rc,Ec=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class bc{constructor(){this._chatSubscriptions=[],this._connection=Wu.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/notify/message/new",(e=>{if("/homemessaging/notify/message/new"===e.Resource){const t=e.Data;if(null==t.RecipientUserGuid&&t.MessageType==pc.Message){const e=new Nc;e.DateTime=t.DateTime,e.Guid=t.Guid,e.MessageText=t.MessageText,e.SenderName=t.SenderName?t.SenderName:"n/a",this._chatSubscriptions.forEach((t=>{t(e)}))}}}))}GetCachedMessagesAsync(){return Ec(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new Pc,12e3,!1);if(null==e)return new Sa.ZR(Uc.OtherError,"Cannot get messages - response is null.");if(e.Status!=wa.nW.OK)return new Sa.ZR(Uc.OtherError,`Cannot get messages - controller responded with response code ${e.Status}.`);if(null==e.Data)return new Sa.ZR(Uc.NoData,"Cannot get messages - controller responded with status OK, but response does not contain data!");const t=[];return e.Data.forEach((e=>{if(null==e.RecipientUserGuid&&e.MessageType==pc.Message){const n=new Nc;n.DateTime=e.DateTime,n.Guid=e.Guid,n.MessageText=e.MessageText,n.SenderName=e.SenderName?e.SenderName:"n/a",t.push(n)}})),t}catch(e){return new Sa.ZR(Uc.FatalError,`Cannot get messages - exception occurred ${e}`)}}))}SendMessageAsync(e){return Ec(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Gc(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(Vc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){this._chatSubscriptions.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class Nc{constructor(){this._guid="",this._senderName="",this._messageText="",this._dateTime=""}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}class Gc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/message",this.Method=wa.IT.Put,this.Data=e}}class Pc extends wa.CP{constructor(){super(),this.Resource="/homemessaging/messages",this.Method=wa.IT.Get}}!function(e){e[e.None=0]="None",e[e.ChangeDeviceState=1]="ChangeDeviceState"}(kc||(kc={})),function(e){e.GPT3_5_TURBO="gpt-3.5-turbo",e.GPT3_5_TURBO_16K="gpt-3.5-turbo-16k",e.GPT4="gpt-4"}(Ic||(Ic={})),function(e){e[e.UnknownError=0]="UnknownError",e[e.ChatNotConfigured=1]="ChatNotConfigured",e[e.MessageNotSend=2]="MessageNotSend",e[e.InvalidMessageResponseFormat=3]="InvalidMessageResponseFormat"}(Rc||(Rc={}));var Oc,Uc,Mc,Wc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class xc{constructor(){this._chatSubscriptions=[],this._connection=Wu.Get(o.G.ServiceName),this._connection.SubscribeTo("/homemessaging/gpt/notify/message/new",(e=>{const t=e.Data,n=new $c;if(n.DateTime=t.DateTime,n.Guid=t.Guid,n.MessageText=t.MessageText?t.MessageText:"",n.SenderName=t.SenderName?t.SenderName:"n/a",null!=t.ControllerActivities)for(let[e,r]of Object.entries(t.ControllerActivities)){const t=kc[e],s=new Map;for(let[e,t]of Object.entries(r))s.set(e,t);n.ControllerActivities.set(t,s)}if(null!=t.Errors)for(let[e,r]of Object.entries(t.Errors))n.Errors.set(Rc[e],r);this._chatSubscriptions.forEach((e=>{e(n)}))}))}IsGptChatAvailableAsync(){return Wc(this,void 0,void 0,(function*(){return(yield Wu.Get(Ja.Wn.ServiceName).GetExtensionsInfoAsync()).any((e=>"80daeab9-104f-4c1b-9464-61f5fc9bf2bf"==e.ExtensionGuid))}))}GetChatConfigurationAsync(){return Wc(this,void 0,void 0,(function*(){try{const e=yield this._connection.SendAndWaitForResponseAsync(new Lc,8e3,!1);return null==e||null==e.Status?new Sa.ZR(Uc.FatalError,"Cannot get chat configuration! No data in result"):e.Status!=wa.nW.OK?new Sa.ZR(Uc.Error,`Cannot get chat configuration! Controller responded with code: ${e.Status}`):null==e.Data?new Sa.ZR(Uc.NoData,"Cannot get chat configuration! Controller responded with success, but no data in response!"):e.Data}catch(e){return new Sa.ZR(Uc.FatalError,`Cannot get chat configuration! ${e}`)}}))}SetChatConfigurationAsync(e){return Wc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Bc(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(Vc.ServiceName,`Cannot set chat configuration! ${e}`),wa.nW.FatalError}}))}SendMessageAsync(e){return Wc(this,void 0,void 0,(function*(){var t;try{const t=yield this._connection.SendAndWaitForResponseAsync(new Fc(e),8e3,!1);return null==t||null==t.Status?wa.nW.FatalError:t.Status}catch(e){return null===(t=r.h.Log)||void 0===t||t.Error(Vc.ServiceName,`Cannot send message! ${e}`),wa.nW.FatalError}}))}SubscribeToMessages(e){var t;null===(t=this._chatSubscriptions)||void 0===t||t.push(e)}UnsubscribeFromMessages(e){this._chatSubscriptions&&(this._chatSubscriptions=this._chatSubscriptions.filter((t=>t!==e)))}}class Fc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/gpt/message",this.Method=wa.IT.Put,this.Data=e}}class Lc extends wa.CP{constructor(){super(),this.Resource="/homemessaging/gpt/configuration",this.Method=wa.IT.Get}}class Bc extends wa.CP{constructor(e){super(),this.Resource="/homemessaging/gpt/configuration",this.Method=wa.IT.Put,this.Data=e}}class $c{constructor(){this._messageActions=new Map,this._errors=new Map,this._guid="",this._senderName="",this._messageText="",this._dateTime=""}get ControllerActivities(){return this._messageActions}get Errors(){return this._errors}get Guid(){return this._guid}get SenderName(){return this._senderName}get MessageText(){return this._messageText}get DateTime(){return this._dateTime}set ControllerActivities(e){this._messageActions=e}set Errors(e){this._errors=e}set Guid(e){this._guid=e}set SenderName(e){this._senderName=e}set MessageText(e){this._messageText=e}set DateTime(e){this._dateTime=e}}!function(e){e[e.ControllerChat=0]="ControllerChat",e[e.FamilyChat=1]="FamilyChat",e[e.GptChat=2]="GptChat"}(Oc||(Oc={}));class Vc{constructor(){this._services={ControllerChat:new _c,GptChat:new xc,FamillyChat:new bc}}GetServiceName(){return Vc.ServiceName}GetChatImplementation(e){switch(e){case Oc.ControllerChat:return this._services.ControllerChat;case Oc.FamilyChat:return this._services.FamillyChat;case Oc.GptChat:return this._services.GptChat;default:throw new qc(`Chat with type ${e} not implemented!`)}}}Vc.ServiceName="ChatService",function(e){e.OtherError="OtherError",e.FatalError="FatalError",e.Error="Error",e.NoData="NoData"}(Uc||(Uc={}));class qc extends Error{constructor(e){super(e),this.message=e,this.name="ChatNotImplementedException"}}!function(e){e[e.ResourceIsNotAvailable=-11]="ResourceIsNotAvailable",e[e.AnotherAppWithGivenAccessTokenAlreadyExists=-10]="AnotherAppWithGivenAccessTokenAlreadyExists",e[e.AppGuidDoesNotExists=-7]="AppGuidDoesNotExists",e[e.AppUrlToShort=-6]="AppUrlToShort",e[e.AppUserNameToShort=-5]="AppUserNameToShort",e[e.AppUserIdToShort=-4]="AppUserIdToShort",e[e.AccessTokenToShort=-3]="AccessTokenToShort",e[e.AppNameToShort=-2]="AppNameToShort",e[e.UnkownError=0]="UnkownError",e[e.Changed=1]="Changed"}(Mc||(Mc={}));var jc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Hc{constructor(){this._connection=Wu.Get(o.G.ServiceName),this._log=Wu.Get(Aa.g.ServiceName),this._cache=Wu.Get(i.C.ServiceName)}GetServiceName(){return Hc.ServiceName}IsSupportedAsync(){return jc(this,void 0,void 0,(function*(){let e=yield this._connection.SendAndWaitForResponseAsync(new Zc,2e3,!1);return this._log.Debug(Hc.ServiceName,`IsSupportedAsync: ${null==e?void 0:e.Status} resp: ${JSON.stringify(e)}`),null!=e&&e.Status==wa.nW.WrongData}))}GetConnectedAppsAsync(){return jc(this,void 0,void 0,(function*(){let e=yield this._connection.SendAndWaitForResponseAsync(new Qc,2e3,!0);return(null==e?void 0:e.Status)===wa.nW.OK?null==e?void 0:e.Data:null==e?void 0:e.Status}))}UpsertConnectedAppAsync(e){return jc(this,void 0,void 0,(function*(){let t=yield this._connection.SendAndWaitForResponseAsync(new zc(e),2e3,!1);switch(null==t?void 0:t.Status){case wa.nW.OK:return this._cache.Remove(new Qc),new Sa.ZR(Mc.Changed,"");case wa.nW.WrongData:switch(t.Data){case"AccessTokenToShort":return new Sa.ZR(Mc.AccessTokenToShort,t.Data);case"AnotherAppWithGivenAccessTokenAlreadyExists":return new Sa.ZR(Mc.AnotherAppWithGivenAccessTokenAlreadyExists,t.Data);case"AppGuidDoesNotExists":return new Sa.ZR(Mc.AppGuidDoesNotExists,t.Data);case"AppNameToShort":return new Sa.ZR(Mc.AppNameToShort,t.Data);case"AppUrlToShort":return new Sa.ZR(Mc.AppUrlToShort,t.Data);case"AppUserIdToShort":return new Sa.ZR(Mc.AppUserIdToShort,t.Data);case"AppUserNameToShort":return new Sa.ZR(Mc.AppUserNameToShort,t.Data);default:return new Sa.ZR(Mc.UnkownError,t.Data)}case wa.nW.ResourceDoesNotExists:case wa.nW.ResourceIsNotAvailable:return new Sa.ZR(Mc.ResourceIsNotAvailable,t.Data);default:return new Sa.ZR(Mc.UnkownError,t.Data)}}))}RemoveConnectedAppAsync(e){return jc(this,void 0,void 0,(function*(){let t=yield this._connection.SendAndWaitForResponseAsync(new Kc(e.Guid),2e3,!1);return(null==t?void 0:t.Status)===wa.nW.OK&&this._cache.Remove(new Qc),null==t?void 0:t.Status}))}}Hc.ServiceName="ConnectedAppsService";class Zc extends wa.CP{constructor(){super(),this.Resource="/applications/app/auth",this.Method=wa.IT.Put,this.Data=""}}class Qc extends wa.CP{constructor(){super(),this.Resource="/applications/get",this.Method=wa.IT.Get}}class Kc extends wa.CP{constructor(e){super(),this.Resource="/applications/app/delete",this.Method=wa.IT.Delete,this.Data=e}}class zc extends wa.CP{constructor(e){super(),this.Resource="/applications/app/upsert",this.Method=wa.IT.Put,this.Data=e}}var Yc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Jc{constructor(){try{const e=window.location.href,t=new URL(e),n=new URLSearchParams(t.search),r=n.get("mig_c_enc"),s=n.get("mig_controllers"),o=n.get("mig_lang");if(null!==r){const e=decodeURIComponent(this.b64DecodeUnicode(decodeURIComponent(r)));localStorage.setItem(Jc.AppUserControllersKeyName,e)}null!==s&&localStorage.setItem(Jc.AppUserControllersKeyName,decodeURIComponent(s)),null!==o&&localStorage.setItem(Jc.AppSelectedLanguageKeyName,o)}catch(e){console.error(e)}}waitForNavigatorObject(e){return new Promise(((t,n)=>{setTimeout((()=>{n(new Error(`Timed out waiting for navigator.${e}`))}),1e4),function n(){navigator[e]?t(navigator[e]):requestAnimationFrame(n)}()}))}b64DecodeUnicode(e){return decodeURIComponent(Array.prototype.map.call(atob(e),(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""))}decodeUriJsonData(e){return JSON.parse(decodeURIComponent(e))}encodeUriJsonData(e){return encodeURIComponent(JSON.stringify(e))}IsExalusNativeMigrationAvailable(){return void 0!==navigator.exalusMigration}GetServiceName(){return Jc.ServiceName}IsMigrationDataAvailableAsync(){return Yc(this,void 0,void 0,(function*(){try{if(tc.M0.IsIosNative()){var e=yield Jc.GetIosMigrationStatus();return null!==e&&e}if(!navigator.userAgent.endsWith("LavvaAndroidNative")||void 0!==navigator.exalusMigration&&null!==navigator.exalusMigration||(yield this.waitForNavigatorObject("exalusMigration")),this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.IsMigrationDataAvailableAsync();return null!=e&&e.DataMigrated}return null!==localStorage.getItem(Jc.AppSelectedLanguageKeyName)||null!==localStorage.getItem(Jc.AppUserControllersKeyName)}catch(e){return console.error(e),!1}}))}GetControllersDataAsync(){return Yc(this,void 0,void 0,(function*(){try{if(tc.M0.IsIosNative()){let e=yield Jc.GetIosControllerList();return void 0===e?null:e}{if(this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.GetControllersDataAsync();return void 0===e?null:e}let e=localStorage.getItem(Jc.AppUserControllersKeyName);return null!==e?JSON.parse(e):null}}catch(e){return console.error(e),null}}))}GetLanguageCodeAsync(){return Yc(this,void 0,void 0,(function*(){try{if(tc.M0.IsIosNative()){let e=yield Jc.GetIosDefaultLanguage();return void 0===e?null:e}{if(this.IsExalusNativeMigrationAvailable()){let e=yield navigator.exalusMigration.GetLanguageCodeAsync();return void 0===e?null:e}let e=localStorage.getItem(Jc.AppSelectedLanguageKeyName);return null!=e?e:null}}catch(e){return console.error(e),null}}))}static GetIosMigrationStatus(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.isMigrationAvaliable=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("IsMigrationAvaliable")}catch(e){r(e)}}))}static GetIosControllerList(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.handleControllers=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("GetControllers")}catch(e){r(e)}}))}static GetIosDefaultLanguage(e=8e3){let t;return new Promise(((n,r)=>{t=setTimeout((()=>{r(null)}),e);try{window.nativeEvent.exalusControllerData.handleLanguage=e=>{clearTimeout(t),n(e)},window.webkit.messageHandlers.exalusControllerData.postMessage("GetDefaultLanguage")}catch(e){r(e)}}))}}Jc.AppSelectedLanguageKeyName="App___SelectedLanguage",Jc.AppUserControllersKeyName="App___UserControllersListDatabase",Jc.ServiceName="DataMigrationService";var Xc=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class eu{constructor(){this._localIpAddress=null,this._publicIpAddress=null,this._gatewayIpAddress=null,this._macAddress=null,this._isInLocalNetwork=!1,this.nativeFindControllerApi=null,void 0!==navigator.findEfcController&&(this.nativeFindControllerApi=navigator.findEfcController),this._connection=Wu.Get(o.G.ServiceName),this._logger=Wu.Get(Aa.g.ServiceName),this._storage=Wu.Get(s.s.ServiceName),Wu.Get(u.Q.ServiceName).OnUserLoggedInEvent().Subscribe((e=>Xc(this,void 0,void 0,(function*(){var e;try{yield tc.YZ.Delay(5e3);const t=yield this.GetControllerNetworkConfigurationAsync();if(null!=t){this._localIpAddress=t.LocalIPv4,this._publicIpAddress=t.PublicIPv4,this._gatewayIpAddress=t.GatewayIPv4,this._macAddress=t.MAC,this._storage.Save(eu.ServiceName,"LocalIpAddress",this._localIpAddress);const n=this.GetControllerHostName(this._connection.GetControllerSerialNumber());this._logger.Debug(`Looking for controller in local network with host name: ${n}`);let r=null;tc.M0.IsIosNative()?r=yield this.getIosControllerIpAsync(n):null!==this.nativeFindControllerApi&&(r=yield null===(e=this.nativeFindControllerApi)||void 0===e?void 0:e.FindControllerAsync(n)),null!=r&&""!=r?(this._isInLocalNetwork=!0,this._logger.Debug(eu.ServiceName,`Controller found in local network with ip address: ${r}`)):(this._isInLocalNetwork=!1,this._logger.Debug(eu.ServiceName,"Controller not found in local network."))}else this._logger.Error(eu.ServiceName,"Failed to get network configuration data.")}catch(e){this._logger.Error(eu.ServiceName,`Failed to get network configuration data - ${e}`)}}))))}FindControllerInLocalNetworkAsync(e){return Xc(this,void 0,void 0,(function*(){if(tc.M0.IsIosNative()){const t=yield this.getIosControllerIpAsync(e);return""==t?null:t}return null!==this.nativeFindControllerApi?this.nativeFindControllerApi.FindControllerAsync(e):Promise.resolve(null)}))}GetLastKnownControllerLocalIpAddress(){return null!==this._localIpAddress?this._localIpAddress:this._storage.Read(eu.ServiceName,"LocalIpAddress")}GetControllerHostName(e){return`ExalusTR7-${e}`}GetMdnsHostName(){return`ExalusTR7-${this.GetControllerHostName(this._connection.GetControllerSerialNumber())}.local`.toLowerCase()}GetControllerNetworkConfigurationAsync(){return Xc(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new tu,2e4,!1);return null==t||null==t.Status||null==t.Data?(this._logger.Error(eu.ServiceName,"Failed to get network configuration data - unknow error."),null):t.Data}))}GetServiceName(){return eu.ServiceName}getIosControllerIpAsync(e,t=2e4){let n;return new Promise(((r,s)=>{n=setTimeout((()=>{this._logger.Error("Cannot find controller in local network, timeout!"),r("")}),t);try{window.nativeEvent.exalusFindController.handleFindController=e=>{clearTimeout(n),r(e)},window.webkit.messageHandlers.exalusFindController.postMessage(e)}catch(e){this._logger.Error(`Cannot find controller in local network, error: ${e}`),r("")}}))}}eu.ServiceName="FindControllerService";class tu extends wa.CP{constructor(){super(),this.Resource="/network/lan/",this.Method=wa.IT.Get}}var nu,ru,su,ou=n(5973),iu=n(8070),au=n(6282),cu=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class uu{SendAndHandleStreamAsync(e,t,n){return Promise.reject(new Error("Streams are not supported over local network connection."))}constructor(){this._errorOccuredEvent=new ou.r,this._connectionStateChangedEvent=new ou.r,this._dataReceivedEvent=new ou.r,this._onMessageReceived=new ou.r,this._log=Wu.Get(Aa.g.ServiceName),this._controllerConfiguration=null,this._cache=null,this._session=null,this._logPackets=!0,this.socket=null,this._address=null,this._port="81",this._isOpen=!1,this._pin=void 0,this._serial=void 0,this._auth=null,this._initialized=!1,this._pingInterval=5e3,this._pingIntervalId=null,this._lastReceivedPacketTime=Date.now(),this._disconnectedOnPurpose=!1,this._restoreTask=null,Wu.Get(Qa.i.ServiceName).OnAppStateChanged().Subscribe((e=>cu(this,void 0,void 0,(function*(){var t;switch(e){case au.t.ExitedLowPowerMode:case au.t.ReturnedFromSuspension:(yield this.RestoreConnectionAsync())&&(null===(t=this._session)||void 0===t||t.RestoreSessionAsync())}}))))}Initialize(){this._initialized||(this._initialized=!0,this._controllerConfiguration=Wu.Get(d.u.ServiceName),this._cache=Wu.Get(i.C.ServiceName),this._session=Wu.Get(u.Q.ServiceName))}checkIfAuthInfoIsCorrectAsync(e){return cu(this,void 0,void 0,(function*(){const t=`http://${window.location.hostname}/controller_info`;let n=yield fetch(t,{method:"GET"});return!!n.ok&&(yield n.text())===`${e.SerialNumber}:${e.PIN}`}))}PingControllerAsync(){return cu(this,void 0,void 0,(function*(){var e;if((null===(e=this.socket)||void 0===e?void 0:e.readyState)!==WebSocket.OPEN)return!1;if(null!==this._lastReceivedPacketTime&&Date.now()-this._lastReceivedPacketTime<this._pingInterval)return!1;let t=new wa.CP;return t.Resource="/system/ping",t.Method=wa.IT.Get,yield this.SendAndWaitForResponseAsync(t,2e3,!1,!1).then((()=>!0)).catch((()=>!1))}))}SubscribeTo(e,t){let n=n=>{n.Resource===e&&t(n)};return this.OnDataReceivedEvent().Subscribe(n),()=>this.OnDataReceivedEvent().Unsubscribe(n)}GetControllerSerialNumber(){return this._serial}GetControllerPin(){return this._pin}SetServersBrokerAddress(e){}SetDefaultPacketsBrokerAddress(e){}GetServerAddressAsync(){return Wu.IsRunningFromLocalNetwork()&&(this._address=`${window.location.hostname}:${this._port}`),Promise.resolve(this._address)}ConnectAsync(e){return new Promise(((t,n)=>{this.Initialize(),this._disconnectedOnPurpose=!1,this._address=e;const r=this.socket,s=new WebSocket(`ws://${e}/api`);this.socket=s,null!==this._pingIntervalId&&(clearInterval(this._pingIntervalId),this._pingIntervalId=null),null==r||r.close(),this._log.Debug(uu.ServiceName,`Connecting to the WebSockets server ${e}`),s.onerror=t=>{if(this.socket===s)return this._log.Debug(uu.ServiceName,`Error occured in the WebSockets server ${e} info: \n${JSON.stringify(t)}`),this._isOpen=!1,this._errorOccuredEvent.Invoke(["WebSockets",t.toString()]),n(iu.IX.FailedToConnect)},s.onopen=n=>{if(this.socket===s)return this._log.Debug(uu.ServiceName,`Connected to the WebSockets server ${e} info: \n${JSON.stringify(n)}`),this._isOpen=!0,this._connectionStateChangedEvent.Invoke(iu.KN.Connected),this._pingIntervalId=setInterval((()=>cu(this,void 0,void 0,(function*(){yield this.PingControllerAsync()}))),this._pingInterval),t(iu.IX.Connected)},s.onclose=t=>{this.socket===s&&(this._log.Debug(uu.ServiceName,`Disconnected from the WebSockets server ${e} info: \n${JSON.stringify(t)}`),this._isOpen=!1,null!==this._pingIntervalId&&(clearInterval(this._pingIntervalId),this._pingIntervalId=null),this._connectionStateChangedEvent.Invoke(iu.KN.Disconnected))},s.onmessage=t=>{if(this.socket===s){this._log.Debug(uu.ServiceName,`Message received from the WebSockets server ${e}: ${t.data}`),this._onMessageReceived.Invoke(t.data);try{let e=JSON.parse(t.data);this._log.Debug(uu.ServiceName,`Received data frame: ${e.Status}`),this._dataReceivedEvent.Invoke(e)}catch(e){this._log.Error(uu.ServiceName,`Failed to parse message: ${t.data}`)}}},this._connectionStateChangedEvent.Invoke(iu.KN.Connecting)}))}AuthorizeAsync(e){return cu(this,void 0,void 0,(function*(){return Wu.WorksInContextOf=e.SerialNumber,!!(yield this.checkIfAuthInfoIsCorrectAsync(e))&&(this._log.Debug(uu.ServiceName,`Authorization successful for controller ${e.SerialNumber}`),this._pin=e.PIN,this._serial=e.SerialNumber,this._auth=e,this.IsConnected()&&this._connectionStateChangedEvent.Invoke(iu.KN.ConnectedAndAuthorized),!0)}))}ConnectAndAuthorizeAsync(e){return cu(this,void 0,void 0,(function*(){var t;Wu.WorksInContextOf=e.SerialNumber,this._log.Debug(uu.ServiceName,`Connecting and authorizing to the controller ${e.SerialNumber}`);let n=yield this.GetServerAddressAsync();if(null==n)return iu.IX.FailedToConnectToServer;const r=yield this.ConnectAsync(n);return r!==iu.IX.Connected?r:(yield this.AuthorizeAsync(e))?iu.IX.Connected:(null===(t=this.socket)||void 0===t||t.close(),iu.IX.AuthorizationFailed)}))}DisconnectAsync(){var e;return this._log.Debug(uu.ServiceName,`Disconnecting from the WebSockets server ${this._address}`),this._disconnectedOnPurpose=!0,this._connectionStateChangedEvent.Invoke(iu.KN.Disconnecting),null!==this._pingIntervalId&&clearInterval(this._pingIntervalId),null===(e=this.socket)||void 0===e||e.close(),Promise.resolve()}IsConnected(){return this._isOpen}EnablePacketsLogging(){this._log.Debug(uu.ServiceName,"Packets logging enabled"),this._logPackets=!0}DisablePacketsLogging(){this._log.Debug(uu.ServiceName,"Packets logging disabled"),this._logPackets=!1}SendData(e,t){var n;let r=JSON.stringify(e);return t&&this._log.Debug(uu.ServiceName,`Sending data frame: ${r}`),this._isOpen?null===(n=this.socket)||void 0===n||n.send(r):this._log.Error(uu.ServiceName,`Failed to send data frame: ${r}`),this._isOpen}SendAsync(e){return this._isOpen?Promise.resolve(this.SendData(e,this._logPackets)):Promise.resolve(!1)}SendAndWaitForResponseAsync(e,t,n,r=!0){return this.SendAndWaitForResponseWithRepeatAsync(e,t,n,!0,r)}SendAndHandleResponseAsync(e,t,n,r){return cu(this,void 0,void 0,(function*(){var s;let o=0;const i=Date.now();if(!this.IsConnected()&&!(yield this.RestoreConnectionAsync()))throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(s=this._session)||void 0===s?void 0:s.WaitForSessionCreationAsync()),new Promise(((s,a)=>cu(this,void 0,void 0,(function*(){const c=()=>window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(u);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(uu.ServiceName,t),a(new Error(t))}),t);let u=l=>cu(this,void 0,void 0,(function*(){var d,h,g;if((null==l?void 0:l.TransactionId)==e.TransactionId){window.clearTimeout(o);const p=Date.now()-i;if((r||!0===window.packets)&&this._log.Debug(uu.ServiceName,`Received response for: ${null==l?void 0:l.Resource} ${null==l?void 0:l.Method} id: ${null==l?void 0:l.TransactionId} in ${p}ms`),(null==l?void 0:l.Status)===wa.nW.UserIsNotLoggedIn){this._dataReceivedEvent.Unsubscribe(u),(null===(d=this._session)||void 0===d?void 0:d.OnUserLoggedOutEvent()).Invoke(null===(h=this._session)||void 0===h?void 0:h.User);try{yield null===(g=this._session)||void 0===g?void 0:g.RestoreSessionAsync(),s(yield this.SendAndHandleResponseAsync(e,t,n,r))}catch(e){a(e)}return}switch(null==l?void 0:l.Status){case wa.nW.MultiDataResponseStart:case wa.nW.MultiDataResponse:n(l),o=c();break;case wa.nW.MultiDataResponseStop:case wa.nW.FatalError:case wa.nW.Error:n(l),this._dataReceivedEvent.Unsubscribe(u),s();break;default:let t=`Failed to process MultiDataResponse - recived incorrect response status: ${null==l?void 0:l.Status} method: ${e.Method} transaction id: ${e.TransactionId}\n                             make sure that the requested endpoint uses MultiDataResponse, otherwise use SendAndWaitForResponseAsync<T> method.`;a(new Error(t))}}}));if(this._dataReceivedEvent.Subscribe(u),o=c(),!this.SendData(e,r)){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;a(new Error(t))}}))))}))}SendAndWaitForResponseWithRepeatAsync(e,t,n){return cu(this,arguments,void 0,(function*(e,t,n,r=!0,s=!0){var o,i,a;if(e.Method===wa.IT.Get&&n&&!(yield null===(o=this._controllerConfiguration)||void 0===o?void 0:o.DidCofigurationChangeAsync())){let t=null===(i=this._cache)||void 0===i?void 0:i.GetCache(e);if(null!=t)return Promise.resolve(t)}let c=0;const u=Date.now();if(!this.IsConnected()&&!(yield this.RestoreConnectionAsync()))throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(a=this._session)||void 0===a?void 0:a.WaitForSessionCreationAsync()),new Promise(((o,i)=>cu(this,void 0,void 0,(function*(){let a=l=>cu(this,void 0,void 0,(function*(){var d,h,g,p;if((null==l?void 0:l.TransactionId)==e.TransactionId){window.clearTimeout(c),this._dataReceivedEvent.Unsubscribe(a);const f=Date.now()-u;if(s&&this._log.Debug(uu.ServiceName,`Received response for: ${null==l?void 0:l.Resource} ${null==l?void 0:l.Method} id: ${null==l?void 0:l.TransactionId} in ${f}ms`),e.Method===wa.IT.Get&&n&&(null==l?void 0:l.Status)!==wa.nW.UserIsNotLoggedIn&&(null===(d=this._cache)||void 0===d||d.Cache(l)),(null==l?void 0:l.Status)===wa.nW.UserIsNotLoggedIn&&r){(null===(h=this._session)||void 0===h?void 0:h.OnUserLoggedOutEvent()).Invoke(null===(g=this._session)||void 0===g?void 0:g.User);try{yield null===(p=this._session)||void 0===p?void 0:p.RestoreSessionAsync(),o(yield this.SendAndWaitForResponseWithRepeatAsync(e,t,n,!1,s))}catch(e){i(e)}return}o(l)}}));if(this._dataReceivedEvent.Subscribe(a),c=window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(a);let t=`Response timeout, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;this._log.Error(uu.ServiceName,t),i(new Error(t))}),t),!this.SendData(e,s)){let t=`Failed to send request, resource: ${e.Resource} method: ${e.Method} transaction id: ${e.TransactionId}`;i(new Error(t))}}))))}))}OnDataReceivedEvent(){return this._dataReceivedEvent}OnErrorOccuredEvent(){return this._errorOccuredEvent}OnConnectionStateChangedEvent(){return this._connectionStateChangedEvent}GetAuthorizationInfo(){return this._auth}GetServiceName(){return uu.ServiceName}RestoreConnectionAsync(){return cu(this,void 0,void 0,(function*(){return!this._disconnectedOnPurpose&&(this._restoreTask||(this._restoreTask=(()=>cu(this,void 0,void 0,(function*(){const e=this._auth;if(null==e)return!1;if(this.IsConnected())return this.AuthorizeAsync(e);const t=yield this.GetServerAddressAsync();return null!=t&&((yield this.ConnectAsync(t))===iu.IX.Connected&&this.AuthorizeAsync(e))})))().finally((()=>{this._restoreTask=null}))),this._restoreTask)}))}}uu.ServiceName="ExalusConnectionService";class lu{constructor(){var e,t;this.OnEnteredPictureInPicture=new Ca.J,this.OnExitedPictureInPicture=new Ca.J,this._nativeApi=null,this.IsSupported()?(this._nativeApi=navigator.pip,null===(e=this._nativeApi)||void 0===e||e.OnEnteredPictureInPicture.Subscribe((()=>this.OnEnteredPictureInPicture.Invoke())),null===(t=this._nativeApi)||void 0===t||t.OnExitedPictureInPicture.Subscribe((()=>this.OnExitedPictureInPicture.Invoke()))):navigator.pip=null}IsSupported(){return void 0!==navigator.pip&&null!==navigator.pip}RequestPictureInPictureAsync(){return this.IsSupported()?this._nativeApi.RequestPictureInPictureAsync():Promise.resolve(!1)}GetServiceName(){return lu.ServiceName}}lu.ServiceName="PictureInPictureService",(su=nu||(nu={}))[su.Unknown=-1]="Unknown",su[su.Web=0]="Web",su[su.Android=1]="Android",su[su.iOS=2]="iOS";class du{constructor(){this.ClientName="",this.LavvaUserName="",this.ClientType=nu.Unknown,this.TokenGuid="",this.Token="",this.RegistrationDate=new Date}}!function(e){e.FeatureUnsupported="FeatureUnsupported",e.UnknownError="UnknownError",e.NoData="NoData",e.IncorrectGuid="IncorrectGuid",e.IdentityIsEmpty="IdentityIsEmpty",e.DeviceTokenIsEmpty="DeviceTokenIsEmpty",e.ClientNameIsEmpty="ClientNameIsEmpty",e.LavvaUserNameIsEmpty="LavvaUserNameIsEmpty",e.TokenNotFound="TokenNotFound",e.TokensNotFoundForLavvaUser="TokensNotFoundForLavvaUser"}(ru||(ru={}));var hu=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class gu{constructor(){this._connection=Wu.Get(o.G.ServiceName),this._logger=Wu.Get(Aa.g.ServiceName)}GetServiceName(){return gu.ServiceName}RegisterNotificationsClientAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=new pu({ClientName:e.ClientName,DeviceToken:e.DeviceToken,LavvaUserName:e.LavvaUserName,ClientType:this.getClientType(),NotificationsEnabledForToken:e.EnableNotifications}),r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(n,8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(ru.UnknownError,"Cannot register notifications client - unknown error!");switch(r.Status){case wa.nW.WrongData:{const e=this.isValidErrorCode(r.Data)?r.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot register notifications client - wrong data!")}case wa.nW.ResourceDoesNotExists:return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");case wa.nW.OK:return"string"==typeof r.Data?r.Data:new Sa.ZR(ru.NoData,"Cannot register notifications client - result status is OK, but no token guid presented in paylode, unknown error!");default:return new Sa.ZR(ru.UnknownError,"Cannot register notifications client - unknown error!")}}catch(e){return new Sa.ZR(ru.UnknownError,`Cannot register notifications client - error: ${e}`)}}))}UpdateNotificationsClientAsync(e,t){return hu(this,void 0,void 0,(function*(){var n;try{const r=new fu({ClientName:t.ClientName,DeviceToken:t.DeviceToken,LavvaUserName:t.LavvaUserName,ClientType:this.getClientType(),NotificationsEnabledForToken:t.EnableNotifications,Guid:e}),s=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(r,8e3,!1);if(null==s||null==s.Status)return new Sa.ZR(ru.UnknownError,"Cannot update notifications client - unknown error!");switch(s.Status){case wa.nW.WrongData:{const e=this.isValidErrorCode(s.Data)?s.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot update notifications client - wrong data!")}case wa.nW.ResourceDoesNotExists:return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");case wa.nW.OK:return"string"==typeof s.Data?s.Data==e?wa.nW.OK:new Sa.ZR(ru.UnknownError,`Cannot update notifications client - result status is OK, but token guid is different! request guid ${e}, response guid: ${s.Data}`):new Sa.ZR(ru.NoData,"Cannot update notifications client - result status is OK, but no token guid presented in paylode, unknown error!");default:return new Sa.ZR(ru.UnknownError,"Cannot update notifications client - unknown error!")}}catch(e){return this._logger.Error(`Cannot update notifications client - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot update notifications client - error: ${e}`)}}))}GetRegisteredNotificationsClientsMetadataAsync(e){return hu(this,void 0,void 0,(function*(){var e;try{const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new vu,8e3,!1);return null==t||null==t.Status?new Sa.ZR(ru.UnknownError,"Cannot get notifications clients metadata - unknown error!"):t.Status==wa.nW.ResourceDoesNotExists?new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!"):t.Status!=wa.nW.OK?new Sa.ZR(ru.UnknownError,`Cannot get notifications clients metadata - response status: ${t.Status}}`):null==t.Data?new Sa.ZR(ru.NoData,"Cannot get notifications clients metadata - response status is OK, but no data!"):t.Data.map((e=>{const t=new du;return t.ClientName=e.ClientName,t.LavvaUserName=e.LavvaUserName,t.ClientType=e.ClientType,t.TokenGuid=e.TokenGuid,t.Token=e.Token,t.RegistrationDate=new Date(e.RegistrationDate),t}))}catch(e){return this._logger.Error(`Cannot get notifications clients metadata - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot get notifications clients metadata - error: ${e}`)}}))}IsNotificationsEnabledForAllUserTokensAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new _u(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(ru.UnknownError,"Cannot get notifications status - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot get notifications status!")}case wa.nW.OK:return"boolean"==typeof n.Data?n.Data:new Sa.ZR(ru.NoData,"Cannot get notifications status - result status is OK, but no data, or data type is wrong!");default:return new Sa.ZR(ru.UnknownError,`Cannot get notifications - response code ${n.Status}}!`)}}catch(e){return this._logger.Error(`Cannot get notifications status - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot get notifications status - error: ${e}`)}}))}IsNotificationsEnabledAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new mu(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(ru.UnknownError,"Cannot get notifications status - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:if(null==n.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot get notifications status - resource not exists!")}case wa.nW.OK:return"boolean"==typeof n.Data?n.Data:new Sa.ZR(ru.NoData,"Cannot get notifications status - result status is OK, but no data, or data type is wrong!");default:return new Sa.ZR(ru.UnknownError,`Cannot get notifications - response code ${n.Status}}!`)}}catch(e){return this._logger.Error(`Cannot get notifications status - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot get notifications status - error: ${e}`)}}))}EnableNotificationsAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{let n=null;null!=e&&""!=e&&(n=e);const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new yu(n),8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(ru.UnknownError,"Cannot enable notifications - unknown error!");switch(r.Status){case wa.nW.ResourceDoesNotExists:if(null==r.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(r.Data)?r.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot enable notifications - resource not exists!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(ru.UnknownError,`Cannot enable notifications - response code ${r.Status}}!`)}}catch(e){return this._logger.Error(`Cannot enable notifications - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot enable notifications - error: ${e}`)}}))}EnableNotificationsForAllUserTokensAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Su(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(ru.UnknownError,"Cannot enable notifications - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot enable notifications!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(ru.UnknownError,`Cannot enable notifications - response code ${n.Status}!`)}}catch(t){return this._logger.Error(`Cannot enable notifications for lavva user ${e} - error: ${t}`),new Sa.ZR(ru.UnknownError,`Cannot disable notifications for lavva user ${e} - error: ${t}`)}}))}DisableNotificationsAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{let n=null;null!=e&&""!=e&&(n=e);const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new wu(n),8e3,!1);if(null==r||null==r.Status)return new Sa.ZR(ru.UnknownError,"Cannot disable notifications - unknown error!");switch(r.Status){case wa.nW.ResourceDoesNotExists:if(null==r.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(r.Data)?r.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot disable notifications - resource not exists!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(ru.UnknownError,`Cannot disable notifications - response code ${r.Status}!`)}}catch(e){return this._logger.Error(`Cannot disable notifications - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot disable notifications - error: ${e}`)}}))}DisableNotificationsForAllUserTokensAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Au(e),8e3,!1);if(null==n||null==n.Status)return new Sa.ZR(ru.UnknownError,"Cannot disable notifications - unknown error!");switch(n.Status){case wa.nW.ResourceDoesNotExists:case wa.nW.WrongData:if(null==n.Data)return new Sa.ZR(ru.FeatureUnsupported,"Notifications feature not supported in controller!");{const e=this.isValidErrorCode(n.Data)?n.Data:ru.UnknownError;return new Sa.ZR(e,"Cannot disable notifications!")}case wa.nW.OK:return wa.nW.OK;default:return new Sa.ZR(ru.UnknownError,`Cannot disable notifications - response code ${n.Status}!`)}}catch(t){return this._logger.Error(`Cannot disable notifications for lavva user ${e} - error: ${t}`),new Sa.ZR(ru.UnknownError,`Cannot disable notifications for lavva user ${e} - error: ${t}`)}}))}DeleteNotificationsTokenAsync(e){return hu(this,void 0,void 0,(function*(){var t;try{const n=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new Cu(e),8e3,!1);return null==n||null==n.Status?new Sa.ZR(ru.UnknownError,"Cannot delete notifications token - unknown error!"):n.Status==wa.nW.OK?wa.nW.OK:new Sa.ZR(ru.UnknownError,`Cannot delete notifications token - response code ${n.Status}!`)}catch(e){return this._logger.Error(`Cannot delete notifications token - error: ${e}`),new Sa.ZR(ru.UnknownError,`Cannot delete notifications token - error: ${e}`)}}))}getClientType(){return tc.M0.IsIosNative()?nu.iOS:navigator.userAgent.endsWith("LavvaAndroidNative")?nu.Android:nu.Web}isValidErrorCode(e){return Object.values(ru).includes(e)}}gu.ServiceName="NotificationsService";class pu extends wa.CP{constructor(e){super(),this.Resource="/notifications/token",this.Method=wa.IT.Post,this.Data=e}}class fu extends wa.CP{constructor(e){super(),this.Resource="/notifications/token",this.Method=wa.IT.Put,this.Data=e}}class vu extends wa.CP{constructor(){super(),this.Resource="/notifications/tokens/metadata",this.Method=wa.IT.Get}}class mu extends wa.CP{constructor(e){super(),this.Resource="/notifications/status",this.Method=wa.IT.Get,this.Data={TokenIdentity:e}}}class yu extends wa.CP{constructor(e){super(),this.Resource="/notifications/enable",this.Method=wa.IT.Post,this.Data=e}}class wu extends wa.CP{constructor(e){super(),this.Resource="/notifications/disable",this.Method=wa.IT.Post,this.Data=e}}class Su extends wa.CP{constructor(e){super(),this.Resource="/notifications/enable/for/lavva/user",this.Method=wa.IT.Post,this.Data=e}}class Au extends wa.CP{constructor(e){super(),this.Resource="/notifications/disable/for/lavva/user",this.Method=wa.IT.Post,this.Data=e}}class _u extends wa.CP{constructor(e){super(),this.Resource="/notifications/status/for/lavva/user",this.Method=wa.IT.Get,this.Data=e}}class Cu extends wa.CP{constructor(e){super(),this.Resource="/notifications/token",this.Method=wa.IT.Delete,this.Data=e}}class Tu{CheckLocationPermissionAsync(){return this.IsAndroidLocationAvailable()?navigator.AndroidLocation.CheckLocationPermissionAsync():Promise.resolve(!1)}RequestLocationPermissionAsync(){return this.IsAndroidLocationAvailable()?navigator.AndroidLocation.RequestLocationPermissionAsync():Promise.resolve(!1)}IsAndroidLocationAvailable(){return void 0!==navigator.AndroidLocation}GetServiceName(){return Tu.ServiceName}}Tu.ServiceName="AndroidLocationService";class Du{IsAndroidNotificationsAvailable(){return void 0!==navigator.AndroidNotifications}CheckNotificationPermissionAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.CheckNotificationPermissionAsync():Promise.resolve(!1)}RequestNotificationPermissionAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.RequestNotificationPermissionAsync():Promise.resolve(!1)}GetDeviceFirebaseTokenAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.GetDeviceFirebaseTokenAsync():Promise.resolve(null)}GetNotificationsQueueAsync(){return this.IsAndroidNotificationsAvailable()?navigator.AndroidNotifications.GetNotificationsQueueAsync():Promise.resolve(null)}GetServiceName(){return Du.ServiceName}}Du.ServiceName="AndroidNotificationsService";class ku{OpenRateDialogAsync(){if(tc.M0.IsIosNative())try{if(null!=window.webkit.messageHandlers.rateApp)return window.webkit.messageHandlers.rateApp.postMessage(!0),Promise.resolve()}catch(e){return Promise.reject(new Error(`Rate dialog is not available on this platform. Error: ${e}`))}else if(this.IsAvailable())return navigator.AndroidAppRate.OpenRateDialogAsync();return Promise.reject(new Error("AppRateService is not available on this platform."))}IsAvailable(){var e,t;return void 0!==navigator.AndroidAppRate||void 0!==(null===(t=null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===t?void 0:t.rateApp)}GetServiceName(){return ku.ServiceName}}ku.ServiceName="AppRateService";class Iu{GetCurrentLocalesAsync(){return this.IsAvailable()?navigator.AppLocales.GetCurrentLocalesAsync():Promise.resolve(void 0)}SetCurrentLocalesAsync(e){if(!this.IsAvailable())throw new Error("AppLocalesService is not available");return navigator.AppLocales.SetCurrentLocalesAsync(e)}IsAvailable(){var e,t;return void 0!==navigator.AppLocales||void 0!==(null===(t=null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===t?void 0:t.appLocales)}GetServiceName(){return Iu.ServiceName}}Iu.ServiceName="AppLocalesService";var Ru,Eu=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};!function(e){e[e.Lavva=0]="Lavva",e[e.Wisniowski=1]="Wisniowski",e[e.ExalusHome=2]="ExalusHome"}(Ru||(Ru={}));class bu{GetServiceName(){return bu.ServiceName}SetInstallation(e){return Eu(this,void 0,void 0,(function*(){if(void 0===e.BrokerUrl||void 0===e.InstallationId||void 0===e.InstallationType)return Promise.reject(new Error("Invalid installation info, all fields are required"));if(Wu.Get(Aa.g.ServiceName).Info(bu.ServiceName,`Setting Android Auto/CarPlay installation: ${e.InstallationType} (${e.InstallationId}) broker: ${e.BrokerUrl}`),!(this.IsAndroidAutoAvailable()||tc.M0.IsIosNative()&&null!=window.webkit.messageHandlers.carPlay))return Wu.Get(Aa.g.ServiceName).Warning(bu.ServiceName,"Android Auto/CarPlay is not available on this platform!"),Promise.resolve();if(e.InstallationType===Ru.ExalusHome){let t=Wu.Get(o.G.ServiceName);e.ControllerSerial=t.GetControllerSerialNumber(),e.ControllerPin=t.GetControllerPin();let n=yield t.GetServerAddressAsync();null!==n&&(n.includes("dev-")?e.BrokerUrl="dev-broker.tr7.pl:4431":e.BrokerUrl="services-broker.tr7.pl");try{let t=yield this.GetTokenFromController();t?e.AuthToken=t:Wu.Get(Aa.g.ServiceName).Warning(bu.ServiceName,"Failed to get auth token from controller, Android Auto/CarPlay integration might not work properly!")}catch(e){Wu.Get(Aa.g.ServiceName).Error(bu.ServiceName,"Error while getting auth token from controller, Android Auto/CarPlay integration might not work properly! \n"+e)}}if(this.IsAndroidAutoAvailable())navigator.AndroidAuto.SetInstallation(e);else{if(!tc.M0.IsIosNative()||null==window.webkit.messageHandlers.carPlay)return Promise.reject(new Error("Android Auto/CarPlay is not available"));window.webkit.messageHandlers.carPlay.postMessage(e)}return Promise.resolve()}))}GetTokenFromController(){return Eu(this,void 0,void 0,(function*(){var e;if(this.IsAndroidAutoAvailable()||tc.M0.IsIosNative()&&null!=window.webkit.messageHandlers.carPlay){let t=yield Wu.Get(o.G.ServiceName).SendAndWaitForResponseAsync(new Nu,12e3,!1);if((null==t?void 0:t.Status)===wa.nW.OK)return Promise.resolve((null===(e=null==t?void 0:t.Data)||void 0===e?void 0:e.Token)||null)}return Promise.resolve(null)}))}IsAndroidAutoAvailable(){return void 0!==navigator.AndroidAuto}ClearInstallation(){return this.IsAndroidAutoAvailable()&&navigator.AndroidAuto.SetInstallation(null),tc.M0.IsIosNative()&&null!=window.webkit.messageHandlers.carPlay?(window.webkit.messageHandlers.carPlay.postMessage(null),Promise.resolve()):Promise.reject(new Error("Android Auto/CarPlay is not available"))}}bu.ServiceName="AndroidAutoCarPlayService";class Nu extends wa.CP{constructor(){super(),this.Resource="/webapibridge/get-token",this.Method=wa.IT.Get}}var Gu=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class Pu{constructor(){this._connection=Wu.Get(o.G.ServiceName)}GetServiceName(){return Pu.ServiceName}isHomeKitPairingStatusResponse(e){return"object"==typeof e&&null!==e&&"Paired"in e&&"boolean"==typeof e.Paired}GetPairingStatusAsync(){return Gu(this,void 0,void 0,(function*(){const e=new Uu,t=yield this._connection.SendAndWaitForResponseAsync(e,5e3,!1);if(t.Status!==wa.nW.OK)return t.Status;const n=new Ou;return this.isHomeKitPairingStatusResponse(t.Data)&&(n.Paired=t.Data.Paired),n}))}IsPairedAsync(){return Gu(this,void 0,void 0,(function*(){const e=yield this.GetPairingStatusAsync();return this.isHomeKitPairingStatusResponse(e)?e.Paired:e}))}ResetPairingAsync(){return Gu(this,void 0,void 0,(function*(){const e=new Mu;return(yield this._connection.SendAndWaitForResponseAsync(e,5e3,!1)).Status}))}}Pu.ServiceName="HomeKitService";class Ou{constructor(){this.Paired=!1}}class Uu extends wa.CP{constructor(){super(),this.Resource="/homekit/pairing/status",this.Method=wa.IT.Get}}class Mu extends wa.CP{constructor(){super(),this.Resource="/homekit/pairing/reset",this.Method=wa.IT.Post}}hn(Map),hn(Set),(()=>{const e=String.prototype,t=Object.getOwnPropertyNames(y.prototype);for(const n of t)e[n]=e[n]??y.prototype[n];e.first=function(e){if(e){for(let t=0;t<this.length;t++){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[0]},e.firstOrDefault=function(e){if(e){for(let t=0;t<this.length;t++){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[0]},e.count=function(e){if(e){let t=0;for(let n=0;n<this.length;n++)!0===e(this[n])&&t++;return t}return this.length},e.elementAt=function(e){if(e<0||e>=this.length)throw new h("index");return this[e]},e.elementAtOrDefault=function(e){return this[e]||null},e.last=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}throw new p(g.NoMatch)}if(0===this.length)throw new p(g.NoElements);return this[this.length-1]},e.lastOrDefault=function(e){if(e){for(let t=this.length-1;t>=0;t--){const n=this[t];if(!0===e(n))return n}return null}return 0===this.length?null:this[this.length-1]},e.reverse=function(){const e=this;return new y((function*(){for(let t=e.length-1;t>=0;t--)yield e[t]}))}})(),va(Array),va(Int8Array),va(Int16Array),va(Int32Array),va(Uint8Array),va(Uint8ClampedArray),va(Uint16Array),va(Uint32Array),va(Float32Array),va(Float64Array);class Wu{static Init(){if(r.h.IsInitialized)return;console.log("Initializing DependencyContainer");let e=r.h.Instance;try{e.RegisterService(new Jc),e.RegisterService(new s.s),e.RegisterService(new Qa.i),e.RegisterService(new i.C),e.RegisterService(new u.Q),e.RegisterService(new lu),e.RegisterService(new ku),e.RegisterService(new Iu),Wu.IsRunningFromLocalNetwork()?(console.log("\n\nRunning from local network!\n\n"),e.RegisterService(new uu)):e.RegisterService(new o.G),e.RegisterService(new Tu),e.RegisterService(new bu),e.RegisterService(new Du),e.RegisterService(new ec.V),e.RegisterService(new l.O),e.RegisterService(new d.u),e.RegisterService(new eu),e.RegisterService(new Ya.N),e.RegisterService(new Ja.Wn),e.RegisterService(new Ka.V),e.RegisterService(new a.g),e.RegisterService(new c.N7),e.RegisterService(new ka),e.RegisterService(new Xa.OA),e.RegisterService(new za.K),e.RegisterService(new Hc),e.RegisterService(new oc),e.RegisterService(new Sc.N),e.RegisterService(new Vc),e.RegisterService(new gu),e.RegisterService(new Pu)}catch(e){console.error(e)}}static IsAppServedFromControllerAsync(){const e=`http://${window.location.hostname}/controller_info`;return fetch(e,{method:"GET"}).then((e=>!!e.ok)).catch((e=>!1))}static IsRunningFromLocalNetwork(e=window.location.hostname){return e.startsWith("192.168.")||e.startsWith("10.")||e.startsWith("172.16.")}static GetAsync(e,t){return r.h.Instance.GetServiceAsync(e,t)}static GetWithTimeoutAsync(e,t){return r.h.Instance.GetServiceWithTimeoutAsync(e,t)}static Get(e){return r.h.Instance.GetService(e)}static SleepForAsync(e){return new Promise((t=>setTimeout(t,e)))}static ExportStringAsFileToDownload(e,t){const n=new Blob([t],{type:"text/plain"}),r=document.createElement("a"),s=window.URL.createObjectURL(n);return r.href=s,r.download=e,r}}Wu.WorksInContextOf="",Wu.Version=1},5973:(e,t,n)=>{n.d(t,{r:()=>s});var r=n(161);class s{constructor(){this.handlers=[]}Subscribe(e){this.handlers.includes(e)||this.handlers.push(e)}Unsubscribe(e){this.handlers=this.handlers.filter((t=>t!==e))}Invoke(e){this.handlers.slice(0).forEach((t=>{var n;try{t(e)}catch(e){null===(n=r.h.Log)||void 0===n||n.Error(e)}}))}}},6053:(e,t,n)=>{var r,s;n.d(t,{Dx:()=>s,UT:()=>o,Zt:()=>a,cp:()=>r,u_:()=>i}),function(e){e[e.Device=0]="Device",e[e.Controller=1]="Controller"}(r||(r={}));class o{constructor(){this.UpdateGuid="",this.Channel="",this.Version="",this.CurrentVersion="",this.DownloadUri="",this.Download="",this.Name="",this.Description="",this.UpdateType=s.Unknown,this.ResourceGuid=""}}class i{constructor(){this.UpdateDescription=new Map,this.Update=new o,this.UpdatedResourceName="",this.CurrentResourceVersion=""}}!function(e){e[e.Unknown=0]="Unknown",e[e.Container=1]="Container",e[e.RadioFirmware=2]="RadioFirmware",e[e.DeviceFirmware=3]="DeviceFirmware",e[e.Configuration=4]="Configuration",e[e.ContainerScript=5]="ContainerScript",e[e.ContainerSoftware=6]="ContainerSoftware",e[e.RuntimeSoftware=7]="RuntimeSoftware",e[e.RuntimeScript=8]="RuntimeScript",e[e.RuntimeFixingScript=9]="RuntimeFixingScript"}(s||(s={}));class a extends Error{constructor(e){super(e),this.message=e,this.name="UpdateProviderNotFound"}}},6094:(e,t,n)=>{n.d(t,{g:()=>v});var r=n(8069),s=n(5443),o=n(9595),i=n(4756),a=n(5329),c=n(5186),u=n(161),l=n(6823),d=n(2558),h=n(5410),g=n(333),p=n(4506),f=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class v{constructor(){this._connection=null,this._connection=s.j.Get(o.G.ServiceName),this._pictureService=s.j.Get(h.V.ServiceName),this._sessionService=s.j.Get(a.Q.ServiceName)}CanEditUser(e){const t=this._sessionService.User;return e.Guid===(null==t?void 0:t.Guid)||this.CanEditUsersOfAccessLevel(e.AccessLevel)}CanEditUsersOfAccessLevel(e){var t;const n=null===(t=this._sessionService.User)||void 0===t?void 0:t.AccessLevel;if(void 0===n)return!1;switch(e){case r.hx.Support:return n===r.hx.Support;case r.hx.Installator:return n>=r.hx.Installator;case r.hx.Admin:default:return n>=r.hx.Admin}}GetServiceName(){return v.ServiceName}GetUsersAsync(){return f(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new S,2e4,!1);if(null==n)return Promise.resolve([]);if((null==n?void 0:n.Status)==i.nW.OK){if(null!=n.Data){const e=[];return n.Data.forEach((t=>{var n=new c.K;n.AccessLevel=t.AccessLevel,n.Email=t.Email,n.Gender=t.Gender,n.Guid=t.Guid,n.IsAccountOnline=t.IsAccountOnline,n.Name=t.Name,n.IsActive=t.IsActive,n.IsBanned=t.IsBanned,n.Phone=t.Phone,n.Surname=t.Surname,e.push(n)})),e}return Promise.resolve([])}if((null==n?void 0:n.Status)==i.nW.NoData)return Promise.resolve([]);throw null===(t=u.h.Log)||void 0===t||t.Debug(v.ServiceName,`Failed to retrieve users, error: ${n.Status}`),new Error(`Failed to retrieve users, error: ${n.Status}`)}))}GetUserAsync(e){return f(this,void 0,void 0,(function*(){var t,n;if(""===e)return Promise.resolve(null);null==e&&(e="");const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new m(e),2e4,!1);if(null==r||null==r.Data)return Promise.resolve(null);if(r.Status!=i.nW.OK)return null===(n=u.h.Log)||void 0===n||n.Debug(v.ServiceName,`Failed to retrieve user, error: ${r.Status}`),Promise.resolve(null);const s=new c.K;return s.AccessLevel=r.Data.AccessLevel,s.Email=r.Data.Email,s.Gender=r.Data.Gender,s.Guid=r.Data.Guid,s.IsAccountOnline=r.Data.IsAccountOnline,s.Name=r.Data.Name,s.IsActive=r.Data.IsActive,s.IsBanned=r.Data.IsBanned,s.Phone=r.Data.Phone,s.Surname=r.Data.Surname,s}))}CreateUserAsync(e,t){return f(this,void 0,void 0,(function*(){var n;if(null!=e.Guid&&""!=e.Guid)return new l.ZR(i.nW.WrongData,"GuidMustBeEmpty");const r=new y;r.Name=e.Name.trim(),r.Surname=e.Surname.trim(),r.Email=e.Email.trim(),r.Password=t.trim(),r.Phone=e.Phone.trim(),r.Gender=e.Gender,r.AccessLevel=e.AccessLevel;const o=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new w(r),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==o||null==o.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==o.Data&&(o.Data=""),new l.ZR(o.Status,o.Data))}))}UpdateUserAsync(e){return f(this,void 0,void 0,(function*(){var t;if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const n=new y;n.Guid=e.Guid,n.Name=e.Name.trim(),n.Surname=e.Surname.trim(),n.Email=e.Email.trim(),n.Phone=e.Phone.trim(),n.Gender=e.Gender,n.AccessLevel=e.AccessLevel;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new w(n),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==r||null==r.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==r.Data&&(r.Data=""),new l.ZR(r.Status,r.Data))}))}ChangePasswordAsync(e,t){return f(this,void 0,void 0,(function*(){var n;if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const r=yield this.GetUserAsync(e.Guid);if(null==r)return new l.ZR(i.nW.ResourceIsNotAvailable,"CannotGetUser");const s=new y;s.Guid=e.Guid,s.Password=t,s.AccessLevel=r.AccessLevel,s.Email=r.Email;const o=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new w(s),2e4,!1);return null==o||null==o.Status?new l.ZR(i.nW.FatalError,"UnknownError"):(null==o.Data&&(o.Data=""),new l.ZR(o.Status,o.Data))}))}DeleteUserAsync(e){return f(this,void 0,void 0,(function*(){var t,n,r;if(""===e)return i.nW.WrongData;null==e&&(e="");try{const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new A(e),2e4,!1);return s.j.Get(p.C.ServiceName).ClearCache(),null==r||null==r.Status?i.nW.FatalError:(r.Status!=i.nW.OK&&(null===(n=u.h.Log)||void 0===n||n.Debug(v.ServiceName,`Failed to delete user, error: ${r.Status}`)),r.Status)}catch(e){return null===(r=u.h.Log)||void 0===r||r.Error(v.ServiceName,`Failed to delete user: ${e}`),i.nW.FatalError}}))}GetUserProfilePictureAsync(e){return f(this,void 0,void 0,(function*(){if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");const t=yield this._pictureService.GetPicturesInfoAsync();if(null!=t.Type)return t;const n=t.find((t=>"profilePicture"==t.OwnerIdentity&&t.OwnerGuid==e.Guid));if(null!=n){const e=yield this._pictureService.GetPictureAsync(n.Guid);return s.j.Get(p.C.ServiceName).ClearCache(),e.Type,e}return new l.ZR(i.nW.ResourceDoesNotExists,"PictureNotFound")}))}SetUserProfilePictureAsync(e,t){return f(this,void 0,void 0,(function*(){if(null==e.Guid||""==e.Guid)return new l.ZR(i.nW.WrongData,"GuidCannotBeEmpty");let n=new d.V;n.ImageType=g.y.Person,n.OwnerGuid=e.Guid,n.OwnerIdentity="profilePicture",n.Base64Image=t;const r=yield this.GetUserProfilePictureAsync(e);if(s.j.Get(p.C.ServiceName).ClearCache(),r.Type==i.nW.ResourceDoesNotExists){const e=yield this._pictureService.AddPictureAsync(n);return e===i.nW.OK?new l.ZR(i.nW.OK,"PictureSet"):new l.ZR(e,"PictureServiceError")}if(null!=r.Type)return new l.ZR(i.nW.Error,"ErrorWhenTryingToCheckIfCurrentProfilePictureExists");{n.Guid=r.Guid,n.OwnerGuid=r.OwnerGuid;const e=yield this._pictureService.EditPictureAsync(n);return e===i.nW.OK?new l.ZR(i.nW.OK,"PictureSet"):new l.ZR(e,"PictureServiceError")}}))}}v.ServiceName="UsersService";class m extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Get,this.Data=e}}class y{constructor(){this.Guid="",this.Name="",this.Surname="",this.Email="",this.Password="",this.Phone="",this.Gender=r.YT.Unknown,this.AccessLevel=r.hx.Any}}class w extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Put,this.Data=e}}class S extends i.CP{constructor(){super(),this.Resource="/users/list",this.Method=i.IT.Get}}class A extends i.CP{constructor(e){super(),this.Resource="/users/user",this.Method=i.IT.Delete,this.Data=e}}},6203:(e,t,n)=>{n.d(t,{AT:()=>r,FX:()=>g,G9:()=>a,MO:()=>s,UT:()=>h,bq:()=>c,gX:()=>i,mQ:()=>o,q1:()=>d});var r,s,o,i,a,c,u,l=n(2348);class d{constructor(){this._type=s.Unknown,this._interfaceType=""}get Type(){return this._type}get InterfaceType(){return this._interfaceType}set InterfaceType(e){this._interfaceType=e,this._type=e}}!function(e){e[e.Unknown=0]="Unknown",e[e.BlindMotor=1]="BlindMotor",e[e.DinModule=2]="DinModule",e[e.DinModuleWithAntenna=3]="DinModuleWithAntenna",e[e.Remote=4]="Remote",e[e.RemoteForBlinds=5]="RemoteForBlinds",e[e.RemoteForFacadeBlinds=6]="RemoteForFacadeBlinds",e[e.MovementSensor=7]="MovementSensor",e[e.TemperatureSensor=8]="TemperatureSensor",e[e.HumiditySensor=9]="HumiditySensor",e[e.DinPowerMeter=10]="DinPowerMeter",e[e.Intercom=11]="Intercom",e[e.SecurityCamera=12]="SecurityCamera",e[e.Multisensor=13]="Multisensor",e[e.FloodSensor=14]="FloodSensor",e[e.FlushMountedReceiver=15]="FlushMountedReceiver",e[e.FlushMountedBlindController=16]="FlushMountedBlindController",e[e.FlushMountedDimmer=17]="FlushMountedDimmer",e[e.FlushMountedRelay=18]="FlushMountedRelay",e[e.FlushMountedGateController=19]="FlushMountedGateController",e[e.WindSensor=20]="WindSensor",e[e.FlushMountedGateAndGatewayController=21]="FlushMountedGateAndGatewayController",e[e.AirPressureSensor=22]="AirPressureSensor",e[e.LightBrightnessSensor=23]="LightBrightnessSensor",e[e.ReedSensor=24]="ReedSensor",e[e.FlushMountedTransceiver=25]="FlushMountedTransceiver",e[e.FlushMountedRGBLightController=26]="FlushMountedRGBLightController",e[e.WallMountedThermoregulator=27]="WallMountedThermoregulator",e[e.ImpulseCounter=28]="ImpulseCounter",e[e.FlushMountedFacadeController=29]="FlushMountedFacadeController",e[e.WallMountedGateController=30]="WallMountedGateController",e[e.WallMountedRGBLightController=31]="WallMountedRGBLightController",e[e.WallMountedDimmer=32]="WallMountedDimmer",e[e.WallMountedRemote=33]="WallMountedRemote",e[e.DinRelay=34]="DinRelay",e[e.DinReceiver=35]="DinReceiver",e[e.DinBlindController=36]="DinBlindController",e[e.DinTransceiver=37]="DinTransceiver",e[e.SocketPlugIn=38]="SocketPlugIn",e[e.WallMountedRelay=39]="WallMountedRelay",e[e.Retransmitter=40]="Retransmitter"}(r||(r={})),function(e){e.Unknown="Unknown",e.SetBlindPosition="IBlindPosition",e.SetBlindPositionSimple="IBlindPositionSimple",e.SetBlindMicroventilation="IMicroventilation",e.TurnOff="IChannelOff",e.TurnOn="IChannelOn",e.TurnOnWithTime="IChannelOnWithTime",e.TogleState="IChannelSwitchState",e.SetLightBrightnessDynamicly="IDynamicLightBrightness",e.SetLightBrightness="ILightBrightness",e.SetLightColor="ILightColor",e.SetLightTemperature="ILightTemperature",e.PairDevice="IPair",e.UnpairDevice="IUnpair",e.IdentifyDevice="IIdentifyDevice",e.GetChannelsState="IGetDeviceState",e.GetPowerMeasurements="IGetPowerMeasurements",e.GetAvailableData="IGetAvailableData",e.MultipleDataRequest="IMultipleDataRequest",e.SetBlindOpenCloseTime="ISetBlindOpenCloseTime",e.SetTemperature="IChangeTemperature",e.SetGatePosition="IGatePosition",e.SetGatewayPosition="IGatewayPosition",e.ChangeGatePositionPulse="IGatePulse",e.ChangeGatewayPositionPulse="IGatewayPulse",e.SetFacadePosition="IFacadePosition",e.GetFacadeType="IGetFacadeType",e.LightRGBW="ILightRGBW",e.PreciseGateControl="IPreciseGateControl",e.PreciseGateControlSecure="IPreciseGateControlSecure"}(s||(s={}));class h{constructor(){this._type=o.Unknown,this._interfaceType=""}get Type(){return this._type}get InterfaceType(){return this._interfaceType}set InterfaceType(e){this._interfaceType=e,this._type=e}}!function(e){e.Unknown="Unknown",e.BatteryState="IBatteryState",e.BinarySensorState="IBinarySensor",e.BlindOpenCloseTime="IBlindOpenCloseTime",e.BlindPosition="IBlindPosition",e.BlindRemoteButtonState="IBlindsControlButton",e.BlindErrorState="IBlindError",e.MeasuredBrightness="IBrightness",e.RemoteButtonState="IButtonState",e.ChannelOnOffState="IChannelOnOff",e.IntercomState="IIntercom",e.DoorBellState="IDoorBell",e.FacadeRemoteButtonState="IFacadeControlButton",e.FacadePosition="IFacadeState",e.FacadeType="IFacadeType",e.FloodSensorState="IFloodSensor",e.GatePosition="IGatePosition",e.GatewayPosition="IGatewayPosition",e.GateControllerHealth="IGateControllerHealth",e.HumiditySensorState="IHumiditySensor",e.LightBrightness="ILightBrightness",e.LightColor="ILightColor",e.LightWarmth="ILightTemperature",e.LightTreshold="ILightTreshold",e.MovementSensorState="IMovementSensor",e.OnlineCamera="IOnlineCamera",e.OvercurrentProtectionState="IOvercurrentProtection",e.OvercurrentProtectionThreshold="IOvercurrentProtectionThreshold",e.ReedState="IReedState",e.SignalStrength="ISignalStrength",e.SmokeSensorState="ISmokeSensor",e.MeasuredTemperature="ITemperature",e.VibrationSensorState="IVibrationSensor",e.MeasuredWindSpeed="IWindSpeed",e.WindThreshold="IWindThreshold",e.MeasuredEnergy="IEnergy",e.MeasuredDistance="DistanceSensor",e.BlindCalibration="BlindCalibration",e.ConfigurationState="ConfigurationState",e.CurrentWindThreshold="CurrentWindThreshold",e.CurrentLightThreshold="CurrentLightThreshold",e.WindSpeedState="WindSpeed",e.TamperProtectionState="ITamperProtection",e.PressureSensorState="IPressureSensor",e.LightRGBWState="ILightRGBW",e.SceneExecuted="ISceneExecuted",e.HallState="IHallState",e.Intercom="IIntercom"}(o||(o={})),function(e){e[e.NotResponding=0]="NotResponding",e[e.Working=1]="Working",e[e.Broken=2]="Broken",e[e.FirmareUpgradeMode=3]="FirmareUpgradeMode"}(i||(i={})),function(e){e[e.TwoWay=1]="TwoWay",e[e.OneWay=2]="OneWay",e[e.ConditionalTwoWay=3]="ConditionalTwoWay"}(a||(a={})),function(e){e[e.Unknown=-1]="Unknown",e[e.Multipurpose=0]="Multipurpose",e[e.Controller=1]="Controller",e[e.Driver=2]="Driver",e[e.Receiver=3]="Receiver",e[e.Remote=4]="Remote",e[e.Sensor=5]="Sensor",e[e.Scene=6]="Scene"}(c||(c={}));class g{constructor(){this.DeviceGuid="",this.Channel=0,this.Status=l.AM.NoTasksExecuting}}!function(e){e[e.Unknown=0]="Unknown",e[e.Executed=1]="Executed",e[e.ResponseTimeout=2]="ResponseTimeout",e[e.TaskRepeatedAndExecuted=3]="TaskRepeatedAndExecuted",e[e.TaskRepeatedResponseTimeout=4]="TaskRepeatedResponseTimeout",e[e.FlowControlNotAvailable=5]="FlowControlNotAvailable",e[e.ExecutionError=6]="ExecutionError"}(u||(u={}))},6276:(e,t,n)=>{n.d(t,{E:()=>i});var r=n(4740),s=n(6203),o=n(7714);class i{constructor(){this._taskType=s.MO.GetChannelsState,this._featureType=o.Y.GetState,this._channel=0,this._guid=r.q.NewGuid(),this._deviceGuid=""}get TaskType(){return this._taskType}set TaskType(e){this._taskType=e}get FeatureType(){return this._featureType}set FeatureType(e){this._featureType=e}get Guid(){return this._guid}set Guid(e){this._guid=e}get DeviceGuid(){return this._deviceGuid}set DeviceGuid(e){this._deviceGuid=e}get Channel(){return this._channel}set Channel(e){this._channel=e}}},6282:(e,t,n)=>{var r;n.d(t,{t:()=>r}),function(e){e[e.Suspended=1]="Suspended",e[e.ReturnedFromSuspension=2]="ReturnedFromSuspension",e[e.EnteredLowPowerMode=3]="EnteredLowPowerMode",e[e.ExitedLowPowerMode=4]="ExitedLowPowerMode",e[e.LoggedIn=5]="LoggedIn",e[e.LoggedOut=6]="LoggedOut",e[e.Connected=7]="Connected",e[e.Disconnected=8]="Disconnected",e[e.FailedToConnect=9]="FailedToConnect",e[e.Connecting=10]="Connecting",e[e.Disconnecting=11]="Disconnecting",e[e.Reconnecting=12]="Reconnecting"}(r||(r={}))},6823:(e,t,n)=>{n.d(t,{Ao:()=>o,ZR:()=>s,gm:()=>r});class r{constructor(e,t){this._type=o.Unknown,this._data="",this._type=e,this._data=t}get Type(){return this._type}set Type(e){this._type=e}get Data(){return this._data}set Data(e){this._data=e}}class s{constructor(e,t){this._type=null,this._data="",this._type=e,this._data=t}get Type(){return this._type}set Type(e){this._type=e}get Data(){return this._data}set Data(e){this._data=e}}var o;!function(e){e[e.ResourceDoesNotExists=-6]="ResourceDoesNotExists",e[e.UnknownError=-5]="UnknownError",e[e.NoPermissions=-4]="NoPermissions",e[e.WrongData=-3]="WrongData",e[e.ControllerResponseTimeout=-2]="ControllerResponseTimeout",e[e.Failed=-1]="Failed",e[e.Unknown=0]="Unknown",e[e.Changed=1]="Changed"}(o||(o={}))},6881:(e,t,n)=>{var r,s,o,i,a,c,u,l;n.d(t,{D9:()=>s,Hf:()=>g,II:()=>h,Y0:()=>r,Yy:()=>i,jK:()=>d,kL:()=>c,rQ:()=>u,yI:()=>l}),function(e){e[e.DownloadingFailure=-5]="DownloadingFailure",e[e.InstallationStopped=-4]="InstallationStopped",e[e.InstallationError=-3]="InstallationError",e[e.IncompatiblePackage=-2]="IncompatiblePackage",e[e.Error=-1]="Error",e[e.OK=0]="OK",e[e.DownloadingPackage=1]="DownloadingPackage",e[e.CheckingPackage=2]="CheckingPackage",e[e.PreparingForUpgrade=3]="PreparingForUpgrade",e[e.Upgrading=4]="Upgrading",e[e.MovingData=5]="MovingData",e[e.Reloading=6]="Reloading",e[e.Upgraded=7]="Upgraded"}(r||(r={})),function(e){e[e.WaitingForUser=1]="WaitingForUser",e[e.Downloading=2]="Downloading",e[e.Unpackaging=3]="Unpackaging",e[e.CheckingApplicability=4]="CheckingApplicability",e[e.MigratingData=5]="MigratingData",e[e.CreatingBackup=6]="CreatingBackup",e[e.Deploying=7]="Deploying",e[e.Installing=8]="Installing",e[e.Removing=9]="Removing",e[e.Error=10]="Error",e[e.ReadyToDownload=11]="ReadyToDownload",e[e.PreparingSystem=12]="PreparingSystem",e[e.CheckingPackageIntegrity=13]="CheckingPackageIntegrity",e[e.CheckingIntegrity=14]="CheckingIntegrity",e[e.UndoingInstallation=15]="UndoingInstallation",e[e.Installed=16]="Installed"}(s||(s={})),function(e){e[e.Ignore=0]="Ignore",e[e.Cancel=1]="Cancel",e[e.Install=2]="Install"}(o||(o={}));class d{constructor(){this.UpdatedResourceName=new Map,this.Percentage=0,this.PercentageTotal=0,this.Status=r.Error,this.UpdateNumber=1,this.AvailableUpdates=1}}class h{constructor(){this.UpdatedResourceName=new Map,this.Percentage=0,this.PercentageTotal=0,this.SpeedMbps=0,this.CurrentTask=c.Unknown,this.DownloadOnly=!1}}class g{constructor(){this.BulkUpdateStatus=i.Success,this.DevicesUpdateResults=new Map}}!function(e){e[e.Success=0]="Success",e[e.PartialSuccess=1]="PartialSuccess",e[e.UpdatesNotFound=2]="UpdatesNotFound",e[e.CannotUnpairRetransmitters=3]="CannotUnpairRetransmitters",e[e.CannotPairRetransmitters=4]="CannotPairRetransmitters"}(i||(i={})),function(e){e[e.Unknown=0]="Unknown",e[e.Updated=1]="Updated",e[e.InsufficientConnection=2]="InsufficientConnection",e[e.Error=3]="Error",e[e.UnknownError=4]="UnknownError",e[e.ControllerSoftwareTooOld=5]="ControllerSoftwareTooOld"}(a||(a={})),function(e){e[e.Unknown=0]="Unknown",e[e.DownloadingUpdate=1]="DownloadingUpdate",e[e.DownloadingInstaller=2]="DownloadingInstaller",e[e.CheckingUpdate=3]="CheckingUpdate",e[e.UpdateDownloadedAndChecked=4]="UpdateDownloadedAndChecked"}(c||(c={})),function(e){e[e.DeviceIsUpToDate=0]="DeviceIsUpToDate",e[e.CannotFindDevice=1]="CannotFindDevice",e[e.UnsupportedApiVersion=2]="UnsupportedApiVersion",e[e.UnsupportedDevice=3]="UnsupportedDevice",e[e.CannotGetFirmwareVersion=4]="CannotGetFirmwareVersion",e[e.CannotGetUpdates=5]="CannotGetUpdates",e[e.CannotProcessUpdate=6]="CannotProcessUpdate",e[e.UpdateActionsNotSupported=7]="UpdateActionsNotSupported",e[e.UnsupportedExtensionVersion=8]="UnsupportedExtensionVersion",e[e.UpdatesPartiallyInstalled=9]="UpdatesPartiallyInstalled",e[e.RetransmitterFound=10]="RetransmitterFound",e[e.ProtocolRadioUnsupported=11]="ProtocolRadioUnsupported",e[e.FeatureUnsupportedInCurrentVersion=12]="FeatureUnsupportedInCurrentVersion",e[e.CannotGetUpdatesBranch=13]="CannotGetUpdatesBranch",e[e.CannotSetUpdatesBranch=14]="CannotSetUpdatesBranch",e[e.UpdateAlreadyDownloaded=15]="UpdateAlreadyDownloaded",e[e.UpdateDownloadFailed=16]="UpdateDownloadFailed",e[e.UpdateAlreadyInstalled=17]="UpdateAlreadyInstalled",e[e.CannotGetCurrentControllerVersionTimeout=18]="CannotGetCurrentControllerVersionTimeout",e[e.CannotGetCurrentControllerVersion=19]="CannotGetCurrentControllerVersion",e[e.InstallerFileSignCheckFailed=20]="InstallerFileSignCheckFailed",e[e.UpdateFileSignCheckFailed=21]="UpdateFileSignCheckFailed",e[e.UpdateFileCheckFailed=22]="UpdateFileCheckFailed",e[e.UpdateInstallationFailed=23]="UpdateInstallationFailed"}(u||(u={})),function(e){e.Public="public",e.Beta="beta",e.Development="dev"}(l||(l={}))},7198:(e,t,n)=>{n.d(t,{V:()=>u});var r=n(5443),s=n(4756),o=n(9595),i=n(4071),a=n(4665),c=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class u{constructor(){this._connection=null,this._localDb=null,this._connection=r.j.Get(o.G.ServiceName),this._localDb=r.j.Get(a.s.ServiceName)}GetLocalDbName(e,t){return`${e}_${t}`}SaveAsync(e,t,n){return c(this,void 0,void 0,(function*(){try{let r=new l(e,t,n),o=yield this._connection.SendAndWaitForResponseAsync(r,35e3,!1);if(o.Status===s.nW.OK){const r=new g;r.ResourceGuid=e,r.Data=JSON.stringify(n),r.IsGlobal=t,this._localDb.Save(u.ServiceName,this.GetLocalDbName(e,t),r)}return o.Status}catch(e){return s.nW.FatalError}}))}ReadAsync(e,t,n){return c(this,void 0,void 0,(function*(){try{let r=new d(e,t);if(!n){const n=this._localDb.Read(u.ServiceName,this.GetLocalDbName(e,t));if(null!=n){const e=n,t=new i.M;return t.Data=JSON.parse(e.Data),t.IsGlobal=e.IsGlobal,t.ResourceGuid=e.ResourceGuid,t}}let o=yield this._connection.SendAndWaitForResponseAsync(r,35e3,!1);if(o.Status===s.nW.OK){const e=new i.M;return e.ResourceGuid=o.ResourceGuid,e.Data=JSON.parse(o.Data),e.IsGlobal=o.IsGlobal,e}return o.Status}catch(e){return s.nW.FatalError}}))}RemoveAsync(e,t){return c(this,void 0,void 0,(function*(){try{let n=new h(e,t);return(yield this._connection.SendAndWaitForResponseAsync(n,35e3,!1)).Status}catch(e){return s.nW.FatalError}}))}GetServiceName(){return u.ServiceName}}u.ServiceName="RemoteStorageService";class l extends s.CP{constructor(e,t,n){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Put,this.ResourceGuid=e,this.Global=t,this.Data=JSON.stringify(n)}}class d extends s.CP{constructor(e,t){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Get,this.ResourceGuid=e,this.Global=t}}class h extends s.CP{constructor(e,t){super(),this.ResourceGuid="",this.Global=!1,this.Resource="/sync/config/",this.Method=s.IT.Delete,this.ResourceGuid=e,this.Global=t}}class g extends s.CP{constructor(){super(...arguments),this.ResourceGuid="",this.Data="",this.IsGlobal=!1,this.InsertTime=new Date}}},7581:(e,t,n)=>{n.d(t,{Bv:()=>G,Ef:()=>w,F$:()=>C,F6:()=>k,Sz:()=>f,TM:()=>_,Tz:()=>y,VP:()=>r,VV:()=>S,Xk:()=>l,YU:()=>g,ZM:()=>s,_t:()=>p,ec:()=>v,fG:()=>R,fq:()=>d,gw:()=>D,h7:()=>h,jv:()=>m,ky:()=>I,ol:()=>A,uv:()=>E,wj:()=>i,zX:()=>b});var r,s,o,i,a=n(6203),c=n(7714),u=n(6276);class l extends u.E{constructor(){super(),this.Temperature=0,this.FeatureType=c.Y.SetTemperature,this.TaskType=a.MO.SetTemperature}}class d extends u.E{constructor(){super(),this.FeatureType=c.Y.TurnOff,this.TaskType=a.MO.TurnOff}}class h extends u.E{constructor(){super(),this.FeatureType=c.Y.TurnOn,this.TaskType=a.MO.TurnOn}}class g extends u.E{constructor(){super(),this.SwitchOffDelaySeconds=0,this.FeatureType=c.Y.TurnOnWithTimeout,this.TaskType=a.MO.TurnOnWithTime}}class p extends u.E{constructor(){super(),this.Brightness=0,this.FeatureType=c.Y.SetLightBrightness,this.TaskType=a.MO.SetLightBrightness}}class f extends u.E{constructor(){super(),this.FeatureType=c.Y.ToggleState,this.TaskType=a.MO.TogleState}}class v extends u.E{constructor(){super(),this.R=0,this.G=0,this.B=0,this.FeatureType=c.Y.SetLightColor,this.TaskType=a.MO.SetLightColor}}class m extends u.E{constructor(){super(),this.Temperature=0,this.FeatureType=c.Y.SetLightTemperature,this.TaskType=a.MO.SetLightTemperature}}class y extends u.E{constructor(){super(),this.Action=r.Stop,this.Position=0,this.FeatureType=c.Y.SetBlindPosition,this.TaskType=a.MO.SetBlindPosition}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage"}(r||(r={}));class w extends u.E{constructor(){super(),this.GateControlAction=s.Stop,this.Position=0,this.FeatureType=c.Y.SetGatePositionPrecise,this.TaskType=a.MO.PreciseGateControl}}u.E,function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage"}(s||(s={}));class S extends u.E{constructor(){super(),this.Action=o.Stop,this.Position=0,this.FeatureType=c.Y.SetBlindPosition,this.TaskType=a.MO.SetBlindPositionSimple}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop"}(o||(o={}));class A extends u.E{constructor(){super(),this.Brightness=0,this.FeatureType=c.Y.SetLightBrightnessDynamicly,this.TaskType=a.MO.SetLightBrightnessDynamicly}}class _ extends u.E{constructor(){super(),this.FeatureType=c.Y.IdentifyDevice,this.TaskType=a.MO.IdentifyDevice}}class C extends u.E{constructor(){super(),this.Data=new T,this.FeatureType=c.Y.SetBlindOpenCloseTime,this.TaskType=a.MO.SetBlindOpenCloseTime}}class T{constructor(){this.Channel=0,this.CloseTime=0,this.OpenTime=0}}class D extends u.E{constructor(){super(),this.FeatureType=c.Y.GetState,this.TaskType=a.MO.GetChannelsState}}class k extends u.E{constructor(){super(),this.Position=0,this.FeatureType=c.Y.SetBlindMicroventilation,this.TaskType=a.MO.SetBlindMicroventilation}}class I extends u.E{constructor(){super(),this.FeatureType=c.Y.GatePulse,this.TaskType=a.MO.ChangeGatewayPositionPulse}}class R extends u.E{constructor(){super(),this.FeatureType=c.Y.GatewayPulse,this.TaskType=a.MO.ChangeGatewayPositionPulse}}class E extends u.E{constructor(){super(),this.FacadeAction=i.Stop,this.Tilt=0,this.Position=0,this.FeatureType=c.Y.SetFacadePositionAndTilt,this.TaskType=a.MO.SetFacadePosition}}class b extends u.E{constructor(){super(),this.FeatureType=c.Y.GetFacadeType,this.TaskType=a.MO.GetFacadeType}}!function(e){e[e.Open=0]="Open",e[e.Close=1]="Close",e[e.Stop=2]="Stop",e[e.Percentage=3]="Percentage",e[e.Tilt=4]="Tilt",e[e.TiltAndPercentage=5]="TiltAndPercentage"}(i||(i={}));class N{constructor(){this.R=0,this.G=0,this.B=0,this.W=0,this.Brightness=0,this.Channel=0}}class G extends u.E{constructor(){super(),this.Data=new N,this.FeatureType=c.Y.LightRGBW,this.TaskType=a.MO.LightRGBW}}},7714:(e,t,n)=>{var r;n.d(t,{Y:()=>r}),function(e){e[e.TurnOn=0]="TurnOn",e[e.TurnOff=1]="TurnOff",e[e.ToggleState=2]="ToggleState",e[e.SetBlindPosition=3]="SetBlindPosition",e[e.SetLightColor=4]="SetLightColor",e[e.SetLightTemperature=5]="SetLightTemperature",e[e.SetLightBrightness=6]="SetLightBrightness",e[e.SetTemperature=7]="SetTemperature",e[e.GetState=8]="GetState",e[e.TurnOnWithTimeout=9]="TurnOnWithTimeout",e[e.SetLightBrightnessDynamicly=10]="SetLightBrightnessDynamicly",e[e.IdentifyDevice=11]="IdentifyDevice",e[e.SetBlindOpenCloseTime=12]="SetBlindOpenCloseTime",e[e.SetBlindMicroventilation=13]="SetBlindMicroventilation",e[e.GatewayPulse=25]="GatewayPulse",e[e.GatePulse=26]="GatePulse",e[e.SetFacadePositionAndTilt=29]="SetFacadePositionAndTilt",e[e.GetFacadeType=30]="GetFacadeType",e[e.LightRGBW=31]="LightRGBW",e[e.SetGatePositionPrecise=32]="SetGatePositionPrecise",e[e.SetGatePositionPreciseSecure=33]="SetGatePositionPreciseSecure"}(r||(r={}))},8069:(e,t,n)=>{var r,s,o;n.d(t,{G4:()=>o,YT:()=>s,hx:()=>r}),function(e){e[e.Any=0]="Any",e[e.Guest=10]="Guest",e[e.Standard=20]="Standard",e[e.Admin=30]="Admin",e[e.Installator=40]="Installator",e[e.Support=50]="Support"}(r||(r={})),function(e){e[e.Unknown=0]="Unknown",e[e.Men=1]="Men",e[e.Woman=2]="Woman",e[e.Other=3]="Other"}(s||(s={})),function(e){e[e.En_Us=0]="En_Us",e[e.Pl_Pl=1]="Pl_Pl"}(o||(o={}))},8070:(e,t,n)=>{n.d(t,{IX:()=>o,KN:()=>i,e5:()=>r,lm:()=>a});class r{constructor(e,t){this.serialNumber=e,this.pin=t,this.SerialNumber=e,this.PIN=t}}var s,o,i;!function(e){e[e.ByCloud=0]="ByCloud",e[e.LocalNetwork=1]="LocalNetwork",e[e.P2P=2]="P2P"}(s||(s={})),function(e){e[e.FailedToConnect=0]="FailedToConnect",e[e.AuthorizationFailed=1]="AuthorizationFailed",e[e.FailedToConnectToServer=2]="FailedToConnectToServer",e[e.Connected=3]="Connected",e[e.ControllerIsNotConnected=4]="ControllerIsNotConnected"}(o||(o={})),function(e){e[e.Disconnected=0]="Disconnected",e[e.Connecting=1]="Connecting",e[e.Connected=3]="Connected",e[e.Disconnecting=4]="Disconnecting",e[e.Failed=5]="Failed",e[e.Reconnecting=6]="Reconnecting",e[e.ConnectedAndAuthorized=7]="ConnectedAndAuthorized"}(i||(i={}));class a extends Error{constructor(e){super(e),this.name="StreamError"}}},8517:(e,t,n)=>{n.d(t,{J:()=>o});var r=n(5443),s=n(4907);class o{constructor(){this._log=r.j.Get(s.g.ServiceName),this.handlers=[]}Subscribe(e){this.handlers.includes(e)||this.handlers.push(e)}Unsubscribe(e){this.handlers=this.handlers.filter((t=>t!==e))}Invoke(){this.handlers.slice(0).forEach((e=>{try{e()}catch(e){this._log.Error(e)}}))}}},8637:(e,t,n)=>{n.d(t,{D7:()=>s,E$:()=>r,hy:()=>o});class r{constructor(){this.Longitude=0,this.Latitude=0}}class s{constructor(){this.Longitude=0,this.Latitude=0,this.IsNetworkBased=!1}}var o;!function(e){e[e.OK=0]="OK",e[e.NoPermissions=1]="NoPermissions",e[e.UserIsNotLoggedIn=2]="UserIsNotLoggedIn",e[e.UnknownError=3]="UnknownError"}(o||(o={}))},8679:(e,t,n)=>{n.d(t,{N:()=>ue});var r,s,o,i,a,c,u,l,d,h,g,p,f,v,m,y,w,S=n(5443),A=n(4756),_=n(161),C=n(4740),T=n(2824),D=n(3386),k=n(8914),I=n(8637),R=n(8883),E=n(6203),b=n(3826),N=n(7714),G=n(2734),P=n(6276),O=n(7581),U=n(9595),M=n(6823),W=n(4824);!function(e){e.OtherError="OtherError",e.FatalError="FatalError",e.NoData="NoData",e.InvalidSceneGuid="InvalidSceneGuid"}(r||(r={}));class x{constructor(){this._comparisonParams=new Map,this.Type=E.mQ.Unknown,this.DeviceGuid="",this.ComparisonMethod=s.Default}GetCheckDeviceState(){return this._checkDeviceState}SetCheckDeviceState(e){this._checkDeviceState=e,e instanceof b.Rv&&(this.Type=E.mQ.BatteryState),e instanceof b.l3&&(this.Type=E.mQ.BinarySensorState),e instanceof b.lo&&(this.Type=E.mQ.BlindPosition),e instanceof b.tC&&(this.Type=E.mQ.LightBrightness),e instanceof b.vY&&(this.Type=E.mQ.MeasuredBrightness),e instanceof b.OQ&&(this.Type=E.mQ.RemoteButtonState),e instanceof b.VH&&(this.Type=E.mQ.ChannelOnOffState),e instanceof b.fX&&(this.Type=E.mQ.DoorBellState),e instanceof b.CV&&(this.Type=E.mQ.MeasuredEnergy),e instanceof b.mH&&(this.Type=E.mQ.FloodSensorState),e instanceof b.qV&&(this.Type=E.mQ.GatePosition),e instanceof b.lD&&(this.Type=E.mQ.LightColor),e instanceof b.nQ&&(this.Type=E.mQ.LightWarmth),e instanceof b.My&&(this.Type=E.mQ.ReedState),e instanceof b.KJ&&(this.Type=E.mQ.MeasuredTemperature),e instanceof b.BD&&(this.Type=E.mQ.HumiditySensorState),e instanceof b.xb&&(this.Type=E.mQ.BlindRemoteButtonState),e instanceof b.ON&&(this.Type=E.mQ.FacadeRemoteButtonState),e instanceof b.rW&&(this.Type=E.mQ.MovementSensorState),e instanceof b.CV&&(this.Type=E.mQ.MeasuredEnergy),e instanceof b.L5&&(this.Type=E.mQ.PressureSensorState),e instanceof b.r_&&(this.Type=E.mQ.WindSpeedState),e instanceof b.IR&&(this.Type=E.mQ.CurrentWindThreshold)}GetComparisonParam(e){return this._comparisonParams.get(e)}GetComparisonParams(){return this._comparisonParams}SetComparisonParam(e,t){this._comparisonParams.set(e,t)}}class F{constructor(e){this._value=e}get Value(){return this._value}set Value(e){this._value=e}}class L{constructor(...e){this._value="00:00:00",e.length>1?this.SetTimeSpan(e[0],e[1],e[2],e[3]):this._value=e[0]}SetTimeSpan(e,t,n,r){this._value=r<=0?`${n.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`:`${r}.${n.toString().padStart(2,"0")}:${t.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`}get Value(){return this._value}}!function(e){e[e.Default=0]="Default",e[e.Delta=1]="Delta",e[e.StateRepeat=2]="StateRepeat"}(s||(s={})),function(e){e[e.DeltaValue=0]="DeltaValue",e[e.DeltaCalculationTimeRange=1]="DeltaCalculationTimeRange",e[e.StateRepeatCount=2]="StateRepeatCount",e[e.StateRepeatTimeRange=3]="StateRepeatTimeRange"}(o||(o={})),function(e){e[e.SunRise=1]="SunRise",e[e.SunSet=2]="SunSet"}(i||(i={}));class B{constructor(){this.DeviceGuid=""}}!function(e){e[e.Unknown=-1]="Unknown",e[e.DeviceTask=0]="DeviceTask",e[e.DelayTask=1]="DelayTask",e[e.NotifyTask=2]="NotifyTask",e[e.LockExecution=3]="LockExecution"}(a||(a={})),function(e){e.Unknown="Unknown",e.DeviceTask="DeviceTask",e.DelayTask="DelayTask",e.NotifyTask="NotifyTask",e.LockExecution="LockExecution"}(c||(c={})),(w=u||(u={}))[w.Unknown=0]="Unknown",w[w.Second=1]="Second",w[w.Minute=2]="Minute",w[w.Hour=3]="Hour",w[w.Day=4]="Day",w[w.DayOfWeek=5]="DayOfWeek",w[w.Month=6]="Month",w[w.Year=7]="Year",w[w.Date=8]="Date",w[w.Time=9]="Time",w[w.WeatherType=11]="WeatherType",w[w.CompareNumbers=12]="CompareNumbers",w[w.CompareBooleans=13]="CompareBooleans",w[w.DeviceState=14]="DeviceState",w[w.Timer=15]="Timer",w[w.Temperature=17]="Temperature",w[w.DaysOfWeek=18]="DaysOfWeek",w[w.AstronomicalClockWithOffset=19]="AstronomicalClockWithOffset",w[w.SceneExecuted=20]="SceneExecuted",(y=l||(l={}))[y.Unknown=0]="Unknown",y[y.Equal=1]="Equal",y[y.NotEqueal=2]="NotEqueal",y[y.BiggerThan=3]="BiggerThan",y[y.SmallerThan=4]="SmallerThan",y[y.BiggerThanOrEqual=5]="BiggerThanOrEqual",y[y.SmallerThanOrEqual=6]="SmallerThanOrEqual",y[y.OneOfBothIsTrue=7]="OneOfBothIsTrue",y[y.BothAreTrue=8]="BothAreTrue",function(e){e[e.Unknown=0]="Unknown",e[e.BatteryState=1]="BatteryState",e[e.BinarySensor=2]="BinarySensor",e[e.BlindPosition=3]="BlindPosition",e[e.Brightness=4]="Brightness",e[e.ButtonState=5]="ButtonState",e[e.ChannelOnOff=6]="ChannelOnOff",e[e.DoorBell=7]="DoorBell",e[e.Energy=8]="Energy",e[e.FloodSensor=9]="FloodSensor",e[e.GatePosition=10]="GatePosition",e[e.HeatSensor=11]="HeatSensor",e[e.LightBrightness=12]="LightBrightness",e[e.LightColor=13]="LightColor",e[e.LightTemperature=14]="LightTemperature",e[e.MeasuredCurrent=15]="MeasuredCurrent",e[e.MeasuredPower=16]="MeasuredPower",e[e.MeasuredVoltage=17]="MeasuredVoltage",e[e.ReedState=18]="ReedState",e[e.SmokeSensor=19]="SmokeSensor",e[e.Temperature=20]="Temperature",e[e.BlindsControlButton=21]="BlindsControlButton",e[e.Movement=22]="Movement",e[e.WindSpeed=24]="WindSpeed",e[e.Humidity=25]="Humidity",e[e.AirPressure=26]="AirPressure",e[e.WindThreshold=31]="WindThreshold",e[e.FacadeControlButton=36]="FacadeControlButton"}(d||(d={})),function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(h||(h={})),(m=g||(g={})).Null="Null",m.Condition="Condition",m.ConditionGroup="ConditionGroup",m.ArgumentAsInt="ArgumentAsInt",m.ArgumentAsTimeSpan="ArgumentAsTimeSpan",m.ArgumentAsBoolean="ArgumentAsBoolean",m.ArgumentAsTimeout="ArgumentAsTimeout",m.ArgumentAsDayOfWeek="ArgumentAsDayOfWeek",m.ArgumentAsDaysOfWeek="ArgumentAsDaysOfWeek",m.ArgumentAsAstronomicalClock="ArgumentAsAstronomicalClock",m.ArgumentAsTime="ArgumentAsTime",m.ArgumentAsDeviceState="ArgumentAsDeviceState",m.ArgumentAsNumber="ArgumentAsNumber",m.ArgumentAsAstronomicalClockWithOffset="ArgumentAsAstronomicalClockWithOffset",m.ArgumentAsConditionInfo="ArgumentAsConditionInfo",function(e){e.DeviceTask="DeviceTask",e.DelayTask="DelayTask",e.LockExecutionTask="LockExecutionTask",e.NotifyTaskAppNotify="NotifyTaskAppNotify",e.NotifyTaskEmailNotify="NotifyTaskEmailNotify"}(p||(p={}));class $ extends Error{constructor(e){super(e),this.message=e,this.name="UnsupportedScenesDeviceState"}}!function(e){e[e.None=0]="None",e[e.AppNotification=1]="AppNotification",e[e.Email=2]="Email"}(f||(f={})),function(e){e[e.Timeout=0]="Timeout",e[e.TimeRange=1]="TimeRange"}(v||(v={}));var V,q,j;class H{constructor(e,t="Cube"){this._result=null,this._tmp=new Z,this._tmpTask=null,this._prevSeqGuid="",this._currentSeqGuid="",this._editingExistingSequence=!1,this._rawExistingSequenceTasks=null,this._sequenceName="",this._sequenceIcon="",this._service=S.j.Get(ue.ServiceName),e&&(this._sequenceName=e,this._sequenceIcon=t,this._tmp.Guid=C.q.NewGuid())}SetSequenceName(e){const t=n=>{if(n.RightArgumentType!=j.Null)return t(n.RightArgument);n.Tasks.ControllerTasks.where((e=>e.TaskType==a.NotifyTask)).toArray().forEach((t=>{t.Title=e}))};this._sequenceName=e,this._editingExistingSequence&&null!=this._result&&(this._result.Name=e,t(this._result))}SetSequenceIcon(e){this._sequenceIcon=e,this._editingExistingSequence&&null!=this._result&&(this._result.Icon=e)}GetNext(){if(null==this._result)return null;if(""==this._currentSeqGuid)return this._currentSeqGuid=this._result.Guid,this._service.MapSequence(JSON.parse(JSON.stringify(this._result)),!0);{const e=this.FindArgumentWithGuid(this._result,this._currentSeqGuid);return null==e?null:e.RightArgumentType==j.Condition?(this._prevSeqGuid=this._currentSeqGuid,this._currentSeqGuid=e.RightArgument.Guid,this._service.MapSequence(JSON.parse(JSON.stringify(e.RightArgument)),!0)):null}}CloneCurrentBuilder(){var e=new H;return e._currentSeqGuid="",e._prevSeqGuid="",e._editingExistingSequence=structuredClone(this._editingExistingSequence),e._rawExistingSequenceTasks=structuredClone(this._rawExistingSequenceTasks),e._result=structuredClone(this._result),e._sequenceIcon=structuredClone(this._sequenceIcon),e._sequenceName=structuredClone(this._sequenceName),e._tmp=structuredClone(this._tmp),(e=>{const t=e=>{e.Guid=C.q.NewGuid(),e.RightArgumentType==j.Condition&&t(e.RightArgument)};null!=e._result&&t(e._result),null!=this._tmp&&(this._tmp.Guid=C.q.NewGuid())})(e),e}GetPrevious(){let e="";const t=(n,r)=>n.Guid==r?{sequence:n,prevGuid:e}:n.RightArgumentType==j.Condition?(e=n.Guid,t(n.RightArgument,r)):null;if(null==this._result)return null;if(""==this._currentSeqGuid||""==this._prevSeqGuid)return null;const n=t(this._result,this._prevSeqGuid);return null==n?null:(this._currentSeqGuid=n.sequence.Guid,this._prevSeqGuid=n.prevGuid,this._service.MapSequence(JSON.parse(JSON.stringify(n.sequence)),!0))}GetByGuid(e){if(null==this._result)return null;const t=this.FindArgumentWithGuid(this._result,e);return null==t?null:this._service.MapSequence(t)}EditCurrentSequence(e){const t=e=>{if(e.RightArgumentType!=j.Null)return t(e.RightArgument);this._rawExistingSequenceTasks=JSON.parse(JSON.stringify(e.Tasks))};return this._editingExistingSequence=!0,t(e._rawRequestData),Object.hasOwn(e._rawRequestData,"Condition")?this._result=e._rawRequestData.Condition:this._result=e._rawRequestData,{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequence:e=>this.RemoveSequenceByGuid(e),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),RemoveTask:e=>this.RemoveTask(e)}}ArgumentAsAstronomicalClockWithOffset(e,t,n){if(this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.AstronomicalClockWithOffset,this._tmp.LeftArgumentType=j.ArgumentAsAstronomicalClockWithOffset,this._tmp.AtMeetCondition=t,e.Offset<-3600||e.Offset>3600)throw new re("Offset must be in range between -3600 and 3600 seconds.");if(t)this._tmp.ConditionType=l.Equal;else{if(t||null==n)throw new re("Comparasion type must be provided if atMeetCondition is false!");this._tmp.ConditionType=n}return this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsAstronomicalClockWithOffset,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsActionWithEmptyCondition(){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Unknown,this._tmp.LeftArgumentType=j.Null,this._tmp.ConditionType=l.Equal,this._tmp.LeftArgument.Argument=null,this._tmp.LeftArgument.HandledType=j.Null,this._tmp.Name=this._sequenceName,this._tmp.Icon=this._sequenceIcon,this._tmp.AtMeetCondition=!1,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsDaysOfWeek(e,t,n=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.DaysOfWeek,this._tmp.LeftArgumentType=j.ArgumentAsDaysOfWeek,this._tmp.ConditionType=n,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsDaysOfWeek,this._tmp.AtMeetCondition=t,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsTimeSpan(e,t=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Timer,this._tmp.LeftArgumentType=j.ArgumentAsTimeSpan,this._tmp.ConditionType=t,this._tmp.AtMeetCondition=!0,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsTimeSpan,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsTime(e,t,n=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.Time,this._tmp.LeftArgumentType=j.ArgumentAsTime,this._tmp.ConditionType=n,this._tmp.AtMeetCondition=t,this._tmp.LeftArgument.Argument=e,this._tmp.LeftArgument.HandledType=j.ArgumentAsTime,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsDeviceState(e,t,n,r=l.Equal){return this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.DeviceState,this._tmp.LeftArgumentType=j.ArgumentAsDeviceState,this._tmp.ConditionType=r,this._tmp.AtMeetCondition=t,this._tmp.ConditionTimeout=n,this._tmp.LeftArgument.Argument=this.GenerateDeviceStateArgument(e),this._tmp.LeftArgument.HandledType=j.ArgumentAsDeviceState,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}ArgumentAsSceneExecuted(e){this._tmp.Guid=C.q.NewGuid(),this._tmp.HandledType=u.SceneExecuted,this._tmp.LeftArgumentType=j.ArgumentAsConditionInfo,this._tmp.ConditionType=l.Equal,this._tmp.AtMeetCondition=!0;const t=new B;return t.DeviceGuid=e.DeviceGuid,this._tmp.LeftArgument.Argument=t,this._tmp.LeftArgument.HandledType=j.ArgumentAsConditionInfo,{AddArgument:()=>this.AddSequence(),EditArgument:e=>this.EditSequence(e)}}GenerateDeviceStateArgument(e){const t=new z;t.Channel=e.GetCheckDeviceState().Channel,t.ComparisonMethod=e.ComparisonMethod;let n={},r=e.GetComparisonParams().entries();for(const[e,t]of r)n=Object.assign(Object.assign({},n),{[o[e]]:t.Value});switch(t.ComparisonParams=n,t.DeviceGuid=e.DeviceGuid,t.DeviceStateType=this.MapResponseTypeToDeviceStateType(e.Type),e.Type){case E.mQ.BatteryState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State,t.CheckedDeviceState.Percentage=e.GetCheckDeviceState().Percentage;break;case E.mQ.BinarySensorState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.BlindPosition:t.CheckedDeviceState.Position=e.GetCheckDeviceState().Position;break;case E.mQ.LightBrightness:case E.mQ.MeasuredBrightness:t.CheckedDeviceState.Brightness=e.GetCheckDeviceState().Brightness;break;case E.mQ.RemoteButtonState:case E.mQ.ChannelOnOffState:case E.mQ.DoorBellState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.MeasuredEnergy:{let n={},r=e.GetCheckDeviceState().MeasurementParameters.entries();for(const[e,t]of r)n=Object.assign(Object.assign({},n),{[b.M0[e]]:t});t.CheckedDeviceState.MeasurementParameters=n;break}case E.mQ.FloodSensorState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.GatePosition:t.CheckedDeviceState.Position=e.GetCheckDeviceState().Position,t.CheckedDeviceState.PositionType=e.GetCheckDeviceState().PositionType;break;case E.mQ.LightColor:{const n=e.GetCheckDeviceState();t.CheckedDeviceState.R=n.R,t.CheckedDeviceState.G=n.G,t.CheckedDeviceState.B=n.B;break}case E.mQ.LightWarmth:t.CheckedDeviceState.Temperature=e.GetCheckDeviceState().Temperature;break;case E.mQ.ReedState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.SmokeSensorState:throw new $("Unsupported device state!");case E.mQ.MeasuredTemperature:t.CheckedDeviceState.Temperature=e.GetCheckDeviceState().Temperature;break;case E.mQ.HumiditySensorState:t.CheckedDeviceState.Humidity=e.GetCheckDeviceState().Humidity;break;case E.mQ.BlindRemoteButtonState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.LightRGBWState:{let n=e.GetCheckDeviceState();t.CheckedDeviceState.R=n.R,t.CheckedDeviceState.G=n.G,t.CheckedDeviceState.B=n.B,t.CheckedDeviceState.W=n.W;break}case E.mQ.FacadeRemoteButtonState:t.CheckedDeviceState.State=e.GetCheckDeviceState().State;break;case E.mQ.MovementSensorState:{let n=e.GetCheckDeviceState();t.CheckedDeviceState.Movement=n.Movement,t.CheckedDeviceState.Intensity=n.Intensity;break}case E.mQ.PressureSensorState:t.CheckedDeviceState.Pressure=e.GetCheckDeviceState().Pressure,t.CheckedDeviceState.PressureType=e.GetCheckDeviceState().PressureType;break;case E.mQ.WindSpeedState:t.CheckedDeviceState.Value=e.GetCheckDeviceState().Value;break;case E.mQ.CurrentWindThreshold:t.CheckedDeviceState.WindThreshold=e.GetCheckDeviceState().WindThreshold;break;case E.mQ.Unknown:t.CheckedDeviceState={};break;default:throw new $("Unsupported device state!")}return t}MapResponseTypeToDeviceStateType(e){switch(e){case E.mQ.BatteryState:return d.BatteryState;case E.mQ.BinarySensorState:return d.BinarySensor;case E.mQ.BlindPosition:return d.BlindPosition;case E.mQ.LightBrightness:return d.LightBrightness;case E.mQ.RemoteButtonState:return d.ButtonState;case E.mQ.ChannelOnOffState:return d.ChannelOnOff;case E.mQ.DoorBellState:return d.DoorBell;case E.mQ.MeasuredEnergy:return d.Energy;case E.mQ.FloodSensorState:return d.FloodSensor;case E.mQ.GatePosition:return d.GatePosition;case E.mQ.MeasuredBrightness:return d.Brightness;case E.mQ.LightColor:return d.LightColor;case E.mQ.LightWarmth:return d.LightTemperature;case E.mQ.ReedState:return d.ReedState;case E.mQ.SmokeSensorState:return d.SmokeSensor;case E.mQ.MeasuredTemperature:return d.Temperature;case E.mQ.HumiditySensorState:return d.Humidity;case E.mQ.BlindRemoteButtonState:return d.BlindsControlButton;case E.mQ.FacadeRemoteButtonState:return d.FacadeControlButton;case E.mQ.MovementSensorState:return d.Movement;case E.mQ.PressureSensorState:return d.AirPressure;case E.mQ.WindSpeedState:return d.WindSpeed;case E.mQ.CurrentWindThreshold:return d.WindThreshold;default:return d.Unknown}}AddSequence(){const e=(t,n)=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument,n);t.RightArgumentType=j.Condition,t.RightArgument=n,this._editingExistingSequence&&null!=this._rawExistingSequenceTasks&&(n.Tasks=JSON.parse(JSON.stringify(this._rawExistingSequenceTasks)),t.Tasks=new Y)};null==this._result?(this._tmp.Name=this._sequenceName,this._tmp.Icon=this._sequenceIcon,this._result=this._tmp,this._result.AtMeetCondition=!0):e(this._result,this._tmp);const t=this._service.MapSequence(JSON.parse(JSON.stringify(this._tmp)));return this._tmp=new Z,{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:t}}EditSequence(e){const t=(n,r)=>{if(n.Guid!=e||n.ObjectType!=j.Condition){if(n.RightArgumentType==j.Condition)return t(n.RightArgument,r);throw new se(`Cannot edit sequence with given GUID ${e} - sequence not foud in chain`)}n.AtMeetCondition=r.AtMeetCondition,n.ConditionTimeout=r.ConditionTimeout,n.ConditionType=r.ConditionType,n.ExecuteOnce=r.ExecuteOnce,n.HandledType=r.HandledType,n.IsDisabled=r.IsDisabled,n.LeftArgument=r.LeftArgument,n.LeftArgumentType=r.LeftArgumentType,n.ObjectType=r.ObjectType,n.Tasks=r.Tasks,r.Guid=n.Guid,r.Icon=n.Icon,r.Name=n.Name};if(null==this._result)throw new se(`Cannot edit sequence with given GUID ${e} - sequence not initialized (no root element)`);t(this._result,this._tmp);const n=this._service.MapSequence(JSON.parse(JSON.stringify(this._tmp)));return this._tmp=new Z,console.log(`new tmp guid: ${this._tmp.Guid}`),this._result.AtMeetCondition||(this._result.AtMeetCondition=!0),{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:n}}RemoveSequenceByGuid(e){let t;const n=(e,n)=>{""==this._currentSeqGuid&&""==this._prevSeqGuid||(this._currentSeqGuid==n?(this._currentSeqGuid=e.RightArgumentType==j.Condition?e.RightArgument.Guid:"",this._prevSeqGuid=null!=t?t.Guid:""):this._prevSeqGuid==n&&(this._prevSeqGuid=null!=t?t.Guid:""))},r=(e,s)=>{if(e.Guid!=s){if(t=e,e.RightArgumentType==j.Null)throw new se(`Cannot remove sequence, sequence with given guid ${s} not found!`);return r(e.RightArgument,s)}null==t?this._result=null:(t.RightArgument=e.RightArgument,t.RightArgumentType=e.RightArgumentType),n(e,s)};if(null==this._result)throw new se("Cannot remove sequence, sequence not configured!");return this._result.Guid==e&&this._result.RightArgumentType!=j.Null?(this._result.RightArgument.Name=this._result.Name,this._result.RightArgument.Icon=this._result.Icon,this._result.RightArgument.Guid=this._result.Guid,this._result=this._result.RightArgument,this._result.AtMeetCondition=!0,n(this._result,e)):r(this._result,e),{GetNext:()=>this.GetNext(),GetPrevious:()=>this.GetPrevious(),GetByGuid:e=>this.GetByGuid(e),GetAllowedArguments:()=>this.GetAllowedArguments(),RemoveSequenceByGuid:e=>this.RemoveSequenceByGuid(e),Commit:()=>this.Commit(),ArgumentAsActionWithEmptyCondition:()=>this.ArgumentAsActionWithEmptyCondition(),ArgumentAsAstronomicalClockWithOffset:(e,t,n)=>this.ArgumentAsAstronomicalClockWithOffset(e,t,n),ArgumentAsDaysOfWeek:(e,t,n)=>this.ArgumentAsDaysOfWeek(e,t,n),ArgumentAsDeviceState:(e,t,n,r=l.Equal)=>this.ArgumentAsDeviceState(e,t,n,r),ArgumentAsTime:(e,t,n=l.Equal)=>this.ArgumentAsTime(e,t,n),ArgumentAsTimeSpan:(e,t)=>this.ArgumentAsTimeSpan(e,t),ArgumentAsSceneExecuted:e=>this.ArgumentAsSceneExecuted(e),SequenceData:null}}Commit(){const e=t=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument);null!=this._rawExistingSequenceTasks&&(t.Tasks=this._rawExistingSequenceTasks)};if(null==this._result)throw new se("Sequence are not initialized! Not found root sequence.");return this._editingExistingSequence&&e(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}DeviceTask(e){if(this._tmpTask=this.ParseDeviceTask(e),null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(this._tmpTask))}}ParseDeviceTask(e){const t=new X;return t.Channel=e.Channel,t.DeviceGuid=e.DeviceGuid,t.ControlFeature=this.MapTaskTypeToControlFeature(e.TaskType),t.Data={},t.Data.Channel=e.Channel,e.TaskType==E.MO.SetBlindPosition||e instanceof O.Tz?(t.Data.Position=e.Position,t.Data.Action=e.Action):e.TaskType==E.MO.SetBlindPositionSimple||e instanceof O.VV?(t.Data.Action=e.Action,t.Data.Position=0):e.TaskType==E.MO.SetLightColor||e instanceof O.ec?(t.Data.R=e.R,t.Data.G=e.G,t.Data.B=e.B):e.TaskType==E.MO.SetLightTemperature||e instanceof O.jv?t.Data.Temperature=e.Temperature:e.TaskType==E.MO.SetLightBrightness||e instanceof O._t?t.Data.Brightness=e.Brightness:e.TaskType==E.MO.SetTemperature||e instanceof O.Xk?t.Data.Temperature=e.Temperature:e.TaskType==E.MO.TurnOnWithTime||e instanceof O.YU?t.Data.SwitchOffDelaySeconds=e.SwitchOffDelaySeconds:e.TaskType==E.MO.SetLightBrightnessDynamicly||e instanceof O.ol?t.Data.Brightness=e.Brightness:e.TaskType==E.MO.SetBlindOpenCloseTime||e instanceof O.F$?(t.Data.CloseTime=e.Data.CloseTime,t.Data.OpenTime=e.Data.OpenTime):e.TaskType==E.MO.SetBlindMicroventilation||e instanceof O.F6?t.Data.Position=e.Position:e.TaskType==E.MO.SetFacadePosition||e instanceof O.uv?(t.Data.FacadeAction=e.FacadeAction,t.Data.Position=e.Position,t.Data.Tilt=e.Tilt):e.TaskType==E.MO.LightRGBW||e instanceof O.Bv?(t.Data.R=e.Data.R,t.Data.G=e.Data.G,t.Data.B=e.Data.B,t.Data.W=e.Data.W,t.Data.Brightness=e.Data.Brightness):(e.TaskType==E.MO.PreciseGateControl||e instanceof O.Ef)&&(t.Data.Position=e.Position,t.Data.GateControlAction=e.GateControlAction),t}DelayTask(e){const t=new ee;if("00:00:00"==e.Delay.Value)throw new re("Delay must be other than 00:00:00!");if(t.Delay=e.Delay.Value,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}NotifyTask(e){if(e.NotifyType==f.Email)throw new ie("NotifyType 'Email' is not supported!");if(e.NotifyType==f.None)throw new Error("NotifyType mus be set!");if(""==e.Message)throw new re("Message must be set!");if(e.Message.length>1e3)throw new re("Message is too long! Max length is 1000 characters.");const t=new ne;if(t.NotifyType=e.NotifyType,t.Message=e.Message,t.NotificationClients=e.NotificationClients,t.Title=this._sequenceName,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}LockExecutionTask(e){const t=new te;if(t.LockType=e.LockType,t.LockType==v.Timeout&&"00:00:00"!=t.LockEndHour)throw new ie("Parameter LockEndHour at lock type `Timeout` must be default!");if(t.LockStartHour=e.LockStartHour.Value,t.LockEndHour=e.LockEndHour.Value,t.ResetLockScenesGuids=e.ResetLockScenesGuids,this._tmpTask=t,null==this._result)throw new Error("No context!");return{AddTask:()=>this.AddTask(),EditTask:e=>this.EditTask(e),TaskId:T.M0.GenerateMd5(JSON.stringify(t))}}AddTask(){const e=t=>{var n;if(t.RightArgumentType!=j.Null)return e(t.RightArgument);if(null==this._tmpTask)throw Error("No task context!");void 0!==t.Tasks.DevicesTasks&&null!==t.Tasks.DevicesTasks||(t.Tasks.DevicesTasks=[]),this._tmpTask instanceof X&&t.Tasks.DevicesTasks.push(structuredClone(this._tmpTask)),t.Tasks.ControllerTasks.push(structuredClone(this._tmpTask)),this._tmpTask=null,null===(n=_.h.Log)||void 0===n||n.Debug(`Task added to sequence: \n${JSON.stringify(this._tmpTask)} \ntasks on a list: \n${JSON.stringify(t.Tasks)}`)};if(null==this._result)throw new Error("No context!");return e(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}EditTask(e){const t=n=>{var r;if(n.RightArgumentType!=j.Null)return t(n.RightArgument);if(null==this._tmpTask)throw Error("No task context!");if(null==n.Tasks.ControllerTasks||0==n.Tasks.ControllerTasks.length)throw new oe("Task not found, cannot edit!");this._tmpTask instanceof X&&null!=n.Tasks.DevicesTasks&&(n.Tasks.DevicesTasks=n.Tasks.DevicesTasks.map((t=>T.M0.GenerateMd5(JSON.stringify(t))==e?structuredClone(this._tmpTask):t))),n.Tasks.ControllerTasks=n.Tasks.ControllerTasks.map((t=>T.M0.GenerateMd5(JSON.stringify(t))==e?structuredClone(this._tmpTask):t)),this._tmpTask=null,null===(r=_.h.Log)||void 0===r||r.Debug(`Task edited in sequence: \n${JSON.stringify(this._tmpTask)} \ntasks on a list: \n${JSON.stringify(n.Tasks)}`)};if(null==this._result)throw new Error("No context!");return t(this._result),{GetSupportedTypesOfTasks:()=>this.GetSupportedTaskTypesAsync(),DeviceTask:e=>this.DeviceTask(e),DelayTask:e=>this.DelayTask(e),NotifyTask:e=>this.NotifyTask(e),LockExecutionTask:e=>this.LockExecutionTask(e),RemoveTask:e=>this.RemoveTask(e),Build:()=>this.Build(),BuildToISequence:()=>this._service.MapSequence(JSON.parse(JSON.stringify(this._result))),ValidateScene:()=>this.ValidateScene()}}RemoveTask(e){const t=(e,n)=>{var r,s;if(e.RightArgumentType!=j.Null)return t(e.RightArgument,n);{const t=e.Tasks.ControllerTasks.filter((e=>T.M0.GenerateMd5(JSON.stringify(e))!=n));if(e.Tasks.ControllerTasks=null==t?[]:t,null===(s=null===(r=e.Tasks)||void 0===r?void 0:r.DevicesTasks)||void 0===s?void 0:s.any()){const t=e.Tasks.DevicesTasks.filter((e=>T.M0.GenerateMd5(JSON.stringify(e))!=n));e.Tasks.DevicesTasks=null==t?[]:t}}};if(null==this._result)throw Error("Cannot remove task, sequence not configured!");t(this._result,e)}MapTaskTypeToControlFeature(e){switch(e){case E.MO.Unknown:throw new re("Unsupported task type!");case E.MO.SetBlindPosition:case E.MO.SetBlindPositionSimple:return N.Y.SetBlindPosition;case E.MO.SetBlindMicroventilation:return N.Y.SetBlindMicroventilation;case E.MO.TurnOff:return N.Y.TurnOff;case E.MO.TurnOn:return N.Y.TurnOn;case E.MO.TurnOnWithTime:return N.Y.TurnOnWithTimeout;case E.MO.TogleState:return N.Y.ToggleState;case E.MO.SetLightBrightnessDynamicly:return N.Y.SetLightBrightnessDynamicly;case E.MO.SetLightBrightness:return N.Y.SetLightBrightness;case E.MO.SetLightColor:return N.Y.SetLightColor;case E.MO.SetLightTemperature:return N.Y.SetLightTemperature;case E.MO.PairDevice:case E.MO.UnpairDevice:throw new re("Unsupported task type!");case E.MO.IdentifyDevice:return N.Y.IdentifyDevice;case E.MO.GetChannelsState:return N.Y.GetState;case E.MO.GetPowerMeasurements:case E.MO.GetAvailableData:case E.MO.MultipleDataRequest:throw new re("Unsupported task type!");case E.MO.SetBlindOpenCloseTime:return N.Y.SetBlindOpenCloseTime;case E.MO.SetTemperature:return N.Y.SetTemperature;case E.MO.ChangeGatePositionPulse:return N.Y.GatePulse;case E.MO.ChangeGatewayPositionPulse:return N.Y.GatewayPulse;case E.MO.SetFacadePosition:case E.MO.GetFacadeType:return N.Y.SetFacadePositionAndTilt;case E.MO.LightRGBW:return N.Y.LightRGBW;case E.MO.PreciseGateControl:return N.Y.SetGatePositionPrecise;default:throw new re("Unsupported task type!")}}GetSupportedTaskTypesAsync(){return e=this,t=void 0,r=function*(){const e=yield S.j.Get(W.OA.ServiceName).GetSoftwareRuntimeInfoAsync(),[t,n]=e.SoftwareVersion.split(".").map((e=>parseInt(e))),r=[p.DeviceTask];return(t>5||5==t&&n>=27)&&r.push(p.DelayTask),(t>5||5==t&&n>=37)&&r.push(p.LockExecutionTask),(t>6||6==t&&n>=3)&&r.push(p.NotifyTaskAppNotify),r},new((n=void 0)||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}));var e,t,n,r}Build(){const e=t=>{if(t.RightArgumentType!=j.Null)return e(t.RightArgument);t.Tasks.ControllerTasks=t.Tasks.ControllerTasks.map((e=>(Object.hasOwn(e,"_taskGuid")&&delete e._taskGuid,e)))};if(null!=this._result)return e(this._result),this._result;throw Error("Cannot build sequence, sequence not configured!")}FindArgumentWithGuid(e,t){return e.Guid==t?e:e.RightArgumentType==j.Condition?this.FindArgumentWithGuid(e.RightArgument,t):null}GetAllowedArguments(){const e=[];return null==this._result?(e.push({ArgumentType:q.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:q.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:q.ArgumentAsDeviceState,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:q.ArgumentAsSceneExecuted,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:q.ArgumentAsTime,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e.push({ArgumentType:q.ArgumentAsTimeSpan,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1})):null!=this._result&&(null==this._result.RightArgument||this._result.RightArgument instanceof Q)&&(this._result.LeftArgumentType==j.ArgumentAsDaysOfWeek&&(e.push({ArgumentType:q.ArgumentAsTime,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0}),e.push({ArgumentType:q.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0})),this._result.LeftArgumentType==j.ArgumentAsTime&&e.push({ArgumentType:q.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!1}),this._result.LeftArgumentType==j.ArgumentAsAstronomicalClockWithOffset&&e.push({ArgumentType:q.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!1})),0==e.any((e=>e.ArgumentType==q.ArgumentAsAstronomicalClockWithOffset))&&e.push({ArgumentType:q.ArgumentAsAstronomicalClockWithOffset,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==q.ArgumentAsDaysOfWeek))&&e.push({ArgumentType:q.ArgumentAsDaysOfWeek,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==q.ArgumentAsDeviceState))&&e.push({ArgumentType:q.ArgumentAsDeviceState,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==q.ArgumentAsSceneExecuted))&&e.push({ArgumentType:q.ArgumentAsSceneExecuted,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),0==e.any((e=>e.ArgumentType==q.ArgumentAsTime))&&e.push({ArgumentType:q.ArgumentAsTime,InitialAtMeetConditionValue:!1,ChangableAtMeetCondition:!0}),0==e.any((e=>e.ArgumentType==q.ArgumentAsTimeSpan))&&e.push({ArgumentType:q.ArgumentAsTimeSpan,InitialAtMeetConditionValue:!0,ChangableAtMeetCondition:!1}),e}ValidateScene(){var e,t,n,r;if(null==this._result)throw new Error("No context!");const s=[],o=(e,t,n)=>e.RightArgumentType==j.Null?e.LeftArgumentType==t&&e.AtMeetCondition==n?e:null:e.LeftArgumentType==t&&e.AtMeetCondition==n?e:o(e.RightArgument,t,n),i=o(this._result,j.ArgumentAsDaysOfWeek,!0);null!=i&&((null===(e=i.RightArgument)||void 0===e?void 0:e.LeftArgumentType)==j.ArgumentAsTime||(null===(t=i.RightArgument)||void 0===t?void 0:t.LeftArgumentType)==j.ArgumentAsAstronomicalClockWithOffset)&&s.push(V.OptimizeDayOfWeekArgument);const a=o(this._result,j.ArgumentAsTime,!0);return null!=a&&(null===(n=a.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsDaysOfWeek&&(null===(r=a.RightArgument)||void 0===r?void 0:r.AtMeetCondition)&&s.push(V.OptimizeAtInDayOfWeekArgument),{IsValid:0==s.length,Errors:s,TryFix:()=>this.TryFix(s),Ignore:()=>this.Commit()}}TryFix(e){if(null==this._result)throw new Error("No context!");if(e.includes(V.OptimizeDayOfWeekArgument)){const e=t=>{var n,r;return t.LeftArgumentType==j.ArgumentAsDaysOfWeek?(null===(n=t.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsTime||(null===(r=t.RightArgument)||void 0===r?void 0:r.LeftArgumentType)==j.ArgumentAsAstronomicalClockWithOffset?t:e(t.RightArgument):t.RightArgumentType==j.Null?null:e(t.RightArgument)},t=e(this._result);if(null==t)throw new Error("Something wrong! Cannot find 'days of week' argument! Cannot fix!");const n=structuredClone(t),r=t.RightArgument;t.LeftArgument=r.LeftArgument,t.LeftArgumentType=r.LeftArgumentType,t.HandledType=r.HandledType,r.LeftArgument=n.LeftArgument,r.LeftArgumentType=n.LeftArgumentType,r.HandledType=n.HandledType,r.AtMeetCondition=!1}if(this.ValidateScene().Errors.includes(V.OptimizeAtInDayOfWeekArgument)){const e=t=>{var n,r;return t.LeftArgumentType==j.ArgumentAsTime?(null===(n=t.RightArgument)||void 0===n?void 0:n.LeftArgumentType)==j.ArgumentAsDaysOfWeek&&(null===(r=t.RightArgument)||void 0===r?void 0:r.AtMeetCondition)?t:e(t.RightArgument):t.RightArgumentType==j.Null?null:e(t.RightArgument)},t=e(this._result);if(null==t)return this.Commit();t.RightArgument.AtMeetCondition=!1}return this.Commit()}}!function(e){e.OptimizeDayOfWeekArgument="OptimizeDayOfWeekArgument",e.OptimizeAtInDayOfWeekArgument="OptimizeAtInDayOfWeekArgument"}(V||(V={})),function(e){e.Unknown="Unknown",e.ArgumentAsAstronomicalClockWithOffset="ArgumentAsAstronomicalClockWithOffset",e.ArgumentAsDaysOfWeek="ArgumentAsDaysOfWeek",e.ArgumentAsTimeSpan="ArgumentAsTimeSpan",e.ArgumentAsTime="ArgumentAsTime",e.ArgumentAsDeviceState="ArgumentAsDeviceState",e.ArgumentAsSceneExecuted="ArgumentAsSceneExecuted"}(q||(q={}));class Z{constructor(){this.Tasks=new Y,this.Guid="",this.ObjectType=1,this.Name="",this.Icon="",this.AtMeetCondition=!1,this.ExecuteOnce=!1,this.IsDisabled=!1,this.HandledType=u.Unknown,this.ConditionType=l.Unknown,this.ConditionTimeout=0,this.LeftArgumentType=j.Null,this.RightArgumentType=j.Null,this.LeftArgument=new K({},j.Null),this.RightArgument=new Q}}class Q{constructor(){this.HandledType=0,this.Argument=null}}class K{constructor(e,t){this.Argument=e,this.HandledType=t}}class z{constructor(){this.DeviceStateType=d.Unknown,this.Channel=0,this.DeviceGuid="",this.ComparisonMethod=s.Default,this.ComparisonParams=null,this.CheckedDeviceState={}}}class Y{constructor(){this.ControllerTasks=[],this.DevicesTasks=[]}}class J{constructor(){this.Guid=C.q.NewGuid(),this.RunParallel=!1,this.TaskType=a.Unknown}}class X extends J{constructor(){super(...arguments),this.TaskType=a.DeviceTask,this.DeviceGuid="",this.Channel=0,this.ControlFeature=N.Y.TurnOn}}class ee extends J{constructor(){super(...arguments),this.TaskType=a.DelayTask,this.Delay="00:00:00"}}class te extends J{constructor(){super(...arguments),this.TaskType=a.LockExecution,this.LockType=v.Timeout,this.LockStartHour="00:00:00",this.LockEndHour="00:00:00",this.ResetLockScenesGuids=[]}}class ne extends J{constructor(){super(...arguments),this.TaskType=a.NotifyTask,this.Title="",this.Message="",this.NotifyType=f.None,this.NotificationClients=[]}}!function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(j||(j={}));class re extends Error{constructor(e){super(e),this.message=e,this.name="BadParametersScenesBuilderException"}}class se extends Error{constructor(e){super(e),this.message=e,this.name="SequenceNotFoundScenesBuilderException"}}class oe extends Error{constructor(e){super(e),this.message=e,this.name="TaskNotFoundScenesBuilderException"}}class ie extends Error{constructor(e){super(e),this.message=e,this.name="UnsupportedArgumentScenesBuilderException"}}var ae,ce=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class ue{constructor(){this._connection=S.j.Get(U.G.ServiceName),this._configurationService=S.j.Get(D.u.ServiceName)}GetServiceName(){return ue.ServiceName}GetSequencesListAsync(){return ce(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new le,12e3,!1);return null===(t=_.h.Log)||void 0===t||t.Debug(`GetSequencesListAsync result:\n ${JSON.stringify(n)}}`),null==n?new M.ZR(r.OtherError,"Cannot get sequences list - response is null."):n.Status!=A.nW.OK?new M.ZR(r.OtherError,`Cannot get sequences list - controller responded with response code ${n.Status}.`):null==n.Data?new M.ZR(r.NoData,"Cannot get sequences list - controller responded with status OK, but response does not contain data!"):n.Data}))}GetSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;let n="";n="string"==typeof e?e:e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new de(n),12e3,!1);if(null==s)return new M.ZR(r.OtherError,"Cannot get sequence - response is null.");if(s.Status!=A.nW.OK)return new M.ZR(r.OtherError,`Cannot get sequence - controller responded with response code ${s.Status}.`);if(null==s.Data)return new M.ZR(r.NoData,"Cannot get sequence - controller responded with status OK, but response does not contain data!");const o=s.Data;let i=this.MapSequence(o);if("string"==typeof e){let e=yield this.GetSequencesListAsync();if(e instanceof M.ZR){let t=e;console.warn(`Cannot get sequence - response is null. Error: ${t.Data} ${t.Type}`)}else{const t=e.find((e=>e.Guid==n));if(!t)return new M.ZR(r.NoData,"Cannot get sequence - controller responded with status OK, but response does not contain data!");i.IsDisabled=t.IsDisabled}}else{const e=o;i.IsDisabled=e.IsDisabled}return i}))}GetSequenceBuilder(e,t){return new H(e,t)}CreateSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t,n,r,s;try{yield this._configurationService.EnterConfigurationModeAsync(),null===(t=_.h.Log)||void 0===t||t.Debug(`Creating sequence ${e.Name} json: \n${JSON.stringify(e)}`);const r=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new fe(e),2e4,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(t){return null===(r=_.h.Log)||void 0===r||r.Error(`Creating sequence ${e.Name} error: ${t}`),A.nW.FatalError}finally{null===(s=_.h.Log)||void 0===s||s.Error(ue.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! CreateSequenceAsync()"),yield this._configurationService.ExitConfigurationModeAsync(),yield S.j.Get(R.N7.ServiceName).GetDevicesAsync(!0)}}))}CheckIfSequenceIsUsedInAnotherSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;try{let n="";n="string"==typeof e?e:e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new he(n),12e3,!1);if(null==s)return new M.ZR(r.OtherError,"Cannot get sequence - response is null.");switch(s.Status){case A.nW.WrongData:return new M.ZR(r.InvalidSceneGuid,"Cannot check if sequence is used in another sequence! Sequence not found, invalid sequence guid!");case A.nW.OK:return null==s.Data?new M.ZR(r.NoData,"Cannot get sequence - controller responded with status OK, but response does not contain data!"):s.Data;default:return new M.ZR(r.OtherError,`Cannot check if sequence is used in another sequence! Controller responded with code: ${s.Status}`)}}catch(e){return new M.ZR(r.FatalError,`Cannot check if sequence is used in another sequence! Fatal error! ${e}`)}}))}DeleteSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;try{let n="";n="string"==typeof e?e:e.Guid,yield this._configurationService.EnterConfigurationModeAsync();const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new me(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(e){return A.nW.FatalError}finally{yield this._configurationService.ExitConfigurationModeAsync(),yield S.j.Get(R.N7.ServiceName).GetDevicesAsync(!0)}}))}EditSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t,n;try{const n={Guid:e.Guid,Icon:e.Icon,Name:e.Name,Condition:e};var r=n.Condition.IsDisabled;n.Condition.IsDisabled=!1,yield this._configurationService.EnterConfigurationModeAsync();const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new ve(n),2e4,!1);return n.Condition.IsDisabled=r,null==s||null==s.Status?A.nW.Error:s.Status}catch(t){return null===(n=_.h.Log)||void 0===n||n.Error(`Editing sequence ${e.Name} error: ${t}`),A.nW.FatalError}finally{yield this._configurationService.ExitConfigurationModeAsync(),yield S.j.Get(R.N7.ServiceName).GetDevicesAsync(!0)}}))}EnableSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;try{let n="";n="string"==typeof e?e:e.Guid;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new ye(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(e){return A.nW.FatalError}finally{yield this._configurationService.ExitConfigurationModeAsync()}}))}DisableSequenceAsync(e){return ce(this,void 0,void 0,(function*(){var t;try{let n="";n="string"==typeof e?e:e.Guid;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new we(n),12e3,!1);return null==r||null==r.Status?A.nW.Error:r.Status}catch(e){return A.nW.FatalError}finally{yield this._configurationService.ExitConfigurationModeAsync()}}))}RunSequenceAsync(e){return ce(this,void 0,void 0,(function*(){let t="";if("string"==typeof e){const n=yield this.GetSequencesListAsync();if(null!=n.Type)return A.nW.Error;{const r=n.find((t=>t.Guid==e));if(!r)return A.nW.Error;t=r.DeviceGuid}}else t=e.DeviceGuid;const n=new O.h7;switch(n.Channel=1,n.DeviceGuid=t,yield S.j.Get(R.N7.ServiceName).ExecuteDeviceTaskAsync({Guid:t},n)){case G.T.Executed:return A.nW.OK;case G.T.DeviceNotFound:return A.nW.WrongData;default:return A.nW.Error}}))}GetUtilsAsync(){return ce(this,void 0,void 0,(function*(){const e=yield this.SunCalculatorAsync();return{GetSunRiseTime:e.GetSunRiseTime,GetSunSetTime:e.GetSunSetTime,ParseLinearScaleToLux:this._parseLinearScaleToLux,ParseLuxToLinearScale:this._parseLuxToLinearScale}}))}_parseLinearScaleToLux(e){if(!(e<0||e>1))return Math.round(Math.pow(10,5*e))}_parseLuxToLinearScale(e){if(e<=0)return 0;const t=Math.log10(e)/5;return t>1?1:t}SunCalculatorAsync(){return ce(this,void 0,void 0,(function*(){var e;const t=S.j.Get(k.O.ServiceName),n=new I.E$;let r=!1;n.Latitude=49.9958888026741,n.Longitude=18.9172596008914;try{if(!0===(yield t.IsControllerGeolocationSetAsync())){const e=yield t.GetControlllerGeolocationAsync();e instanceof I.D7&&(n.Latitude=e.Latitude,n.Longitude=e.Longitude)}}catch(t){null===(e=_.h.Log)||void 0===e||e.Warning(`Cannot get localization data, using default values: 49.9958888026741, 18.9172596008914. Error: ${t}`)}const s=e=>{let t=7.95204*Math.sin(.01768*e+3.03217)+9.98906*Math.sin(.03383*e+3.4687)+4*(n.Longitude-15*Math.round(n.Longitude/15));return((e=new Date)=>{const t=new Date(e.getFullYear(),0,1).getTimezoneOffset(),n=new Date(e.getFullYear(),6,1).getTimezoneOffset();return Math.max(t,n)!==e.getTimezoneOffset()})()&&(t-=60),t},o=e=>Math.asin(-.39795*Math.cos(2*Math.PI*(e+10)/365)),i=e=>{const t=n.Latitude*Math.PI/180;let r=Math.sin(t)*Math.sin(e)/(Math.cos(t)*Math.cos(e));return r=(e=>(e<-1&&(e=-1),e>1&&(e=1),e))(r),r},a=e=>{const t=Math.ceil(e/60),n=e-60*t,r=new Date;return new Date(r.getFullYear(),r.getMonth(),r.getDate(),t,n)},c=e=>{const t=new Date;t.setDate(t.getDate()+e);const n=(u=t,Math.floor((u.valueOf()-new Date(u.getFullYear(),0,0).valueOf())/1e3/60/60/24));var u;const l=s(n),d=o(n),h=((e,t)=>{let n=720-720/Math.PI*Math.acos(-e)-t;return n<0&&(n+=1440),n})(i(d),l),g=a(h);return new Date>g&&!r?(r=!0,c(1)):(r=!1,new Date(t.getFullYear(),t.getMonth(),t.getDate(),g.getHours(),g.getMinutes()))},u=e=>{const t=new Date;t.setDate(t.getDate()+e);const n=(c=t,Math.floor((c.valueOf()-new Date(c.getFullYear(),0,0).valueOf())/1e3/60/60/24));var c;const l=s(n),d=o(n),h=i(d),g=Math.floor(((e,t)=>{let n=720+720/Math.PI*Math.acos(-e)-t;return n>1439&&(n-=1439),n})(h,l)),p=a(g);return new Date>p&&!r?(r=!0,u(1)):(r=!1,new Date(t.getFullYear(),t.getMonth(),t.getDate(),p.getHours(),p.getMinutes()))};return{GetSunRiseTime:()=>c(0),GetSunSetTime:()=>u(0)}}))}MapSequence(e,t=!1){const n=Object.assign({},e),r=e=>{if(e.RightArgumentType!=ae.Null)return!Object.hasOwn(e.Tasks,"ControllerTasks")&&Object.hasOwn(e.Tasks,"DevicesTasks")&&delete Object.assign(e.Tasks,{ControllerTasks:e.Tasks.DevicesTasks}).DevicesTasks,r(e.RightArgument);!Object.hasOwn(e.Tasks,"ControllerTasks")&&Object.hasOwn(e.Tasks,"DevicesTasks")&&(delete Object.assign(e.Tasks,{ControllerTasks:e.Tasks.DevicesTasks}).DevicesTasks,e.Tasks.ControllerTasks.map((e=>{e.TaskType=a.DeviceTask,e.RunParallel=!1}))),null!=e.Tasks.ControllerTasks&&e.Tasks.ControllerTasks.map((e=>{null==(null==e?void 0:e.Guid)&&(e.Guid=C.q.NewGuid())}))};return r(e),n._rawRequestData=JSON.parse(JSON.stringify(e)),t?(n.RightArgument=null,n.RightArgumentType=g.Null):(n.RightArgumentType=this.MapArgumentType(e.RightArgumentType),n.RightArgument=this.MapRightArgument(e.RightArgument,n.RightArgumentType)),n.LeftArgumentType=this.MapArgumentType(e.LeftArgumentType),n.LeftArgument=this.MapLeftArgument(e.LeftArgument,n.LeftArgumentType),n.Tasks.ControllerTasks=this.MapControllerTasks(e.Tasks.ControllerTasks),void 0===n.DoesHaveTriggers&&(n.DoesHaveTriggers=n.LeftArgumentType==g.Null),n}MapRightArgument(e,t){return 0==e.HandledType||(e.LeftArgumentType=this.MapArgumentType(e.LeftArgumentType),e.LeftArgument=this.MapLeftArgument(e.LeftArgument,e.LeftArgumentType),e.Tasks.ControllerTasks=this.MapControllerTasks(e.Tasks.ControllerTasks),Object.hasOwn(e.Tasks,"DevicesTasks")&&delete e.Tasks.DevicesTasks,t===g.Condition&&(e.RightArgumentType=this.MapArgumentType(e.RightArgumentType),e.RightArgument=this.MapRightArgument(e.RightArgument,e.RightArgumentType))),e}MapLeftArgument(e,t){let n=new ge;switch(n.HandledType=e.HandledType,t){case g.ArgumentAsAstronomicalClock:n.Argument.ArgumentAsAstronomicalClock={Position:e.Argument};break;case g.ArgumentAsAstronomicalClockWithOffset:n.Argument.ArgumentAsAstronomicalClockWithOffset={Offset:e.Argument.Offset,Position:e.Argument.Position};break;case g.ArgumentAsBoolean:n.Argument.ArgumentAsBoolean=e.Argument;break;case g.ArgumentAsDayOfWeek:n.Argument.ArgumentAsDayOfWeek=e.Argument;break;case g.ArgumentAsDaysOfWeek:n.Argument.ArgumentAsDaysOfWeek=e.Argument;break;case g.ArgumentAsInt:n.Argument.ArgumentAsInt=e.Argument;break;case g.ArgumentAsTimeout:n.Argument.ArgumentAsTimeout=e.Argument;break;case g.ArgumentAsTimeSpan:n.Argument.ArgumentAsTimeSpan={days:e.Argument.days,hours:e.Argument.hours,minutes:e.Argument.minutes,seconds:e.Argument.seconds};break;case g.ArgumentAsTime:n.Argument.ArgumentAsTime={Hour:e.Argument.Hour,Minute:e.Argument.Minute,Second:e.Argument.Second};break;case g.ArgumentAsDeviceState:{const t=new x;t.Type=this.MapDeviceStateTypeToResponseType(e.Argument.DeviceStateType),t.SetCheckDeviceState(this.CreateDeviceState(e.Argument.CheckedDeviceState,e.Argument.Channel,t.Type)),t.DeviceGuid=e.Argument.DeviceGuid,t.ComparisonMethod=null==e.Argument.ComparisonMethod?s.Default:e.Argument.ComparisonMethod,null!=e.Argument.ComparisonParams&&Object.entries(e.Argument.ComparisonParams).forEach((e=>{switch(e[0]){case"DeltaValue":case"StateRepeatCount":t.SetComparisonParam(o[e[0]],new F(e[1]));break;case"DeltaCalculationTimeRange":case"StateRepeatTimeRange":t.SetComparisonParam(o[e[0]],new L(e[1]))}})),n.Argument.ArgumentAsDeviceState=t;break}case g.ArgumentAsConditionInfo:n.Argument.ArgumentAsConditionInfo={DeviceGuid:e.Argument.DeviceGuid}}return n}MapArgumentType(e){return g[ae[e]]}MapDeviceStateTypeToResponseType(e){switch(e){case d.BatteryState:return E.mQ.BatteryState;case d.BinarySensor:return E.mQ.BinarySensorState;case d.BlindPosition:return E.mQ.BlindPosition;case d.Brightness:return E.mQ.MeasuredBrightness;case d.ButtonState:return E.mQ.RemoteButtonState;case d.ChannelOnOff:return E.mQ.ChannelOnOffState;case d.DoorBell:return E.mQ.DoorBellState;case d.Energy:return E.mQ.MeasuredEnergy;case d.FloodSensor:return E.mQ.FloodSensorState;case d.GatePosition:return E.mQ.GatePosition;case d.LightBrightness:return E.mQ.LightBrightness;case d.LightColor:return E.mQ.LightColor;case d.LightTemperature:return E.mQ.LightWarmth;case d.ReedState:return E.mQ.ReedState;case d.SmokeSensor:return E.mQ.SmokeSensorState;case d.Temperature:return E.mQ.MeasuredTemperature;case d.Humidity:return E.mQ.HumiditySensorState;case d.BlindsControlButton:return E.mQ.BlindRemoteButtonState;case d.FacadeControlButton:return E.mQ.FacadeRemoteButtonState;case d.Movement:return E.mQ.MovementSensorState;case d.AirPressure:return E.mQ.PressureSensorState;case d.WindSpeed:return E.mQ.WindSpeedState;case d.WindThreshold:return E.mQ.CurrentWindThreshold;default:return E.mQ.Unknown}}CreateDeviceState(e,t,n){switch(n){case E.mQ.BatteryState:return{Channel:t,StateReliability:b.QI.Unconfident,Percentage:e.Percentage,State:e.State,Time:""};case E.mQ.BinarySensorState:return{Channel:t,StateReliability:b.QI.Unconfident,State:e.State,Time:""};case E.mQ.BlindPosition:return{Channel:t,StateReliability:b.QI.Unconfident,Position:e.Position,RawPosition:e.RawPosition,Time:""};case E.mQ.LightBrightness:case E.mQ.MeasuredBrightness:return{Channel:t,StateReliability:b.QI.Unconfident,Brightness:e.Brightness,Time:""};case E.mQ.RemoteButtonState:case E.mQ.ChannelOnOffState:case E.mQ.DoorBellState:return{Channel:t,StateReliability:b.QI.Unconfident,State:e.State,Time:""};case E.mQ.MeasuredEnergy:{const n=new Map;for(let[t,r]of Object.entries(e.MeasurementParameters))n.set(b.M0[t],r);return{Channel:t,StateReliability:b.QI.Unconfident,MeasurementParameters:n,Time:""}}case E.mQ.FloodSensorState:return{Channel:t,StateReliability:b.QI.Unconfident,State:e.State,Time:""};case E.mQ.GatePosition:return{Channel:t,StateReliability:b.QI.Unconfident,Position:e.Position,PositionType:e.PositionType,Time:""};case E.mQ.LightColor:return{Channel:t,StateReliability:b.QI.Unconfident,R:e.R,G:e.G,B:e.B,Time:""};case E.mQ.LightWarmth:return{Channel:t,StateReliability:b.QI.Unconfident,Temperature:e.Temperature,Time:""};case E.mQ.ReedState:return{Channel:t,StateReliability:b.QI.Unconfident,State:e.State,Time:""};case E.mQ.SmokeSensorState:throw new $("Unsupported device state!");case E.mQ.MeasuredTemperature:return{Channel:t,StateReliability:b.QI.Unconfident,Temperature:e.Temperature,Time:"",Type:e.Type};case E.mQ.HumiditySensorState:return{Channel:t,StateReliability:b.QI.Unconfident,Humidity:e.Humidity,Time:"",Type:e.Type};case E.mQ.BlindRemoteButtonState:return{Channel:t,StateReliability:b.QI.Unconfident,State:e.State,Time:""};case E.mQ.LightRGBWState:return{StateReliability:b.QI.Unconfident,Channel:t,Time:"",Brightness:100,R:e.R,G:e.G,B:e.B,W:e.W};case E.mQ.FacadeRemoteButtonState:return{Channel:t,Time:"",StateReliability:b.QI.Unconfident,State:e.State};case E.mQ.MovementSensorState:return{Channel:t,Time:"",StateReliability:b.QI.Unconfident,Movement:e.Movement,Intensity:e.Intensity};case E.mQ.PressureSensorState:return{Channel:t,Time:"",StateReliability:b.QI.Unconfident,Pressure:e.Pressure,PressureType:e.PressureType};case E.mQ.WindSpeedState:return{Channel:t,Time:"",StateReliability:b.QI.Unconfident,Value:e.Value};case E.mQ.CurrentWindThreshold:return{Channel:t,Time:"",StateReliability:b.QI.Unconfident,WindThreshold:e.WindThreshold};case E.mQ.Unknown:return new b.gX;default:throw new $("Unsupported device state!")}}MapDeviceTask(e){var t;let n=new P.E,r=e;switch(null===(t=_.h.Log)||void 0===t||t.Debug(`[TASK] object: ${JSON.stringify(r)}`),r.ControlFeature){case N.Y.TurnOn:n=new O.h7,n.TaskType=E.MO.TurnOn;break;case N.Y.TurnOff:n=new O.fq,n.TaskType=E.MO.TurnOff;break;case N.Y.ToggleState:n=new O.Sz,n.TaskType=E.MO.TogleState;break;case N.Y.SetBlindPosition:{const e=S.j.Get(R.N7.ServiceName).GetDevice(r.DeviceGuid);(null==e?void 0:e.AvailableTaskTypes.any((e=>"IBlindPositionSimple"==e.InterfaceType)))?(n=new O.VV,n.TaskType=E.MO.SetBlindPositionSimple,n.Action=r.Data.Action):(n=new O.Tz,n.TaskType=E.MO.SetBlindPosition,n.Action=r.Data.Action,n.Position=r.Data.Position);break}case N.Y.SetLightColor:n=new O.ec,n.TaskType=E.MO.SetLightColor,n.R=r.Data.R,n.G=r.Data.G,n.B=r.Data.B;break;case N.Y.SetLightTemperature:n=new O.jv,n.TaskType=E.MO.SetLightTemperature,n.Temperature=r.Data.Temperature;break;case N.Y.SetLightBrightness:n=new O._t,n.TaskType=E.MO.SetLightBrightness,n.Brightness=r.Data.Brightness;break;case N.Y.SetTemperature:n=new O.Xk,n.TaskType=E.MO.SetTemperature,n.Temperature=r.Data.Temperature;break;case N.Y.GetState:n=new O.gw,n.TaskType=E.MO.GetChannelsState;break;case N.Y.TurnOnWithTimeout:n=new O.YU,n.TaskType=E.MO.TurnOnWithTime,n.SwitchOffDelaySeconds=r.Data.SwitchOffDelaySeconds;break;case N.Y.SetLightBrightnessDynamicly:n=new O.ol,n.TaskType=E.MO.SetLightBrightnessDynamicly,n.Brightness=r.Data.Brightness;break;case N.Y.IdentifyDevice:n=new O.TM,n.TaskType=E.MO.IdentifyDevice;break;case N.Y.SetBlindOpenCloseTime:n=new O.F$,n.TaskType=E.MO.SetBlindOpenCloseTime,n.Data.CloseTime=r.Data;break;case N.Y.SetBlindMicroventilation:n=new O.F6,n.TaskType=E.MO.SetBlindMicroventilation,n.Position=r.Data.Position;break;case N.Y.GatewayPulse:n=new O.fG,n.TaskType=E.MO.ChangeGatewayPositionPulse;break;case N.Y.GatePulse:n=new O.ky,n.TaskType=E.MO.ChangeGatePositionPulse;break;case N.Y.SetFacadePositionAndTilt:n=new O.uv,n.TaskType=E.MO.SetFacadePosition,n.Position=r.Data.Position,n.Tilt=r.Data.Tilt,n.FacadeAction=O.wj.TiltAndPercentage;break;case N.Y.GetFacadeType:n=new O.zX,n.TaskType=E.MO.GetFacadeType;break;case N.Y.LightRGBW:n=new O.Bv,n.TaskType=E.MO.LightRGBW,n.Data=r.Data;break;case N.Y.SetGatePositionPrecise:n=new O.Ef,n.TaskType=E.MO.PreciseGateControl,n.Position=r.Data.Position,n.GateControlAction=r.Data.GateControlAction}return n.Channel=r.Channel,n.DeviceGuid=r.DeviceGuid,n.FeatureType=r.ControlFeature,n.Guid=C.q.NewGuid(),n}MapControllerTasks(e){var t,n;const r=[];null===(t=_.h.Log)||void 0===t||t.Debug(`[TASKS] received tasks object: ${JSON.stringify(e)}`);for(let t of e){const e=new pe;switch(e.Guid=t.Guid,e.TaskId=T.M0.GenerateMd5(JSON.stringify(t)),t.TaskType){case a.DeviceTask:e.TaskType=c.DeviceTask,e.Task.DeviceTask=this.MapDeviceTask(t);break;case a.DelayTask:e.TaskType=c.DelayTask,e.Task.DelayTask={Delay:new L(t.Delay)};break;case a.NotifyTask:e.TaskType=c.NotifyTask,e.Task.NotifyTask={Message:t.Message,NotifyType:t.NotifyType,NotificationClients:t.NotificationClients};break;case a.LockExecution:case a.LockExecution:e.TaskType=c.LockExecution,null===(n=_.h.Log)||void 0===n||n.Debug(`[TASKS] received task LockExecution object: ${JSON.stringify(t)}`),e.Task.LockExecution={LockStartHour:new L(t.LockStartHour),LockEndHour:new L(t.LockEndHour),LockType:t.LockType,ResetLockScenesGuids:t.ResetLockScenesGuids};case a.Unknown:}r.push(e)}return r}GetSupportedTaskTypesAsync(){return ce(this,void 0,void 0,(function*(){const e=yield S.j.Get(W.OA.ServiceName).GetSoftwareRuntimeInfoAsync(),[t,n]=e.SoftwareVersion.split(".").map((e=>parseInt(e))),r=[p.DeviceTask];return(t>5||5==t&&n>=27)&&r.push(p.DelayTask),(t>5||5==t&&n>=37)&&r.push(p.LockExecutionTask),(t>6||6==t&&n>=3)&&r.push(p.NotifyTaskAppNotify),r}))}}ue.ServiceName="ScenesService";class le extends A.CP{constructor(){super(),this.Resource="/logic/sequences/list",this.Method=A.IT.Get}}class de extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Get,this.Data=e}}class he extends A.CP{constructor(e){super(),this.Resource="/logic/sequences/used",this.Method=A.IT.Get,this.Data=e}}class ge{constructor(){this.HandledType=ae.Null,this.Argument={}}}!function(e){e[e.Null=0]="Null",e[e.Condition=1]="Condition",e[e.ConditionGroup=2]="ConditionGroup",e[e.ArgumentAsInt=3]="ArgumentAsInt",e[e.ArgumentAsTimeSpan=4]="ArgumentAsTimeSpan",e[e.ArgumentAsBoolean=5]="ArgumentAsBoolean",e[e.ArgumentAsTimeout=6]="ArgumentAsTimeout",e[e.ArgumentAsDayOfWeek=7]="ArgumentAsDayOfWeek",e[e.ArgumentAsDaysOfWeek=8]="ArgumentAsDaysOfWeek",e[e.ArgumentAsAstronomicalClock=9]="ArgumentAsAstronomicalClock",e[e.ArgumentAsTime=10]="ArgumentAsTime",e[e.ArgumentAsDeviceState=11]="ArgumentAsDeviceState",e[e.ArgumentAsNumber=12]="ArgumentAsNumber",e[e.ArgumentAsAstronomicalClockWithOffset=13]="ArgumentAsAstronomicalClockWithOffset",e[e.ArgumentAsConditionInfo=14]="ArgumentAsConditionInfo"}(ae||(ae={}));class pe{constructor(){this.TaskId="",this.Guid="",this.TaskType=c.Unknown,this.Task={}}}class fe extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Put,this.Data=e}}class ve extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/edit",this.Method=A.IT.Put,this.Data=e}}class me extends A.CP{constructor(e){super(),this.Resource="/logic/sequence",this.Method=A.IT.Delete,this.Data=e}}class ye extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/enable",this.Method=A.IT.Post,this.Data=e}}class we extends A.CP{constructor(e){super(),this.Resource="/logic/sequence/disable",this.Method=A.IT.Post,this.Data=e}}},8883:(e,t,n)=>{n.d(t,{N7:()=>M});var r=n(5973),s=n(6203),o=n(2734);class i{constructor(){this.Device=null,this.Channel=0,this.Task=null,this.Result=o.T.Unknown}}var a=n(3826),c=n(5443),u=n(6823),l=n(2348),d=n(9595),h=n(4756),g=n(161),p=n(3386),f=n(4907);class v{constructor(){this._onDeviceStateChangedEvent=new r.r,this._onDeviceStateRefreshedOrChangedEvent=new r.r,this._onDeviceTasksExecutionChangedOnChannelsEvent=new r.r,this._onDeviceFirmwareVersionChangedEvent=new r.r,this._iconType=s.AT.Unknown,this._serialNumber=null,this._model=null,this._modelGuid=null,this._manufacturerGuid=null,this._isVirtual=!1,this._isEnabled=!1,this._deviceState=s.gX.Working,this._deviceType=s.bq.Unknown,this._communicationWay=s.G9.OneWay,this._availableTasksTypes=[],this._availableResponseTypes=[],this._channels=[],this._protocolGuid=null,this._softwareVersion=null,null==v._devicesService&&(v._devicesService=c.j.Get(M.ServiceName));const e=this._onDeviceStateChangedEvent,t=this._onDeviceTasksExecutionChangedOnChannelsEvent;v._devicesService.OnDeviceStateChangedEvent().Subscribe((t=>{t.Device.Guid==this._guid&&e.Invoke(t.State)})),v._devicesService.OnDeviceStateRefreshedOrChangedEvent().Subscribe((e=>{e.Device.Guid==this._guid&&this._onDeviceStateRefreshedOrChangedEvent.Invoke(e.State)})),v._devicesService.OnDevicesTasksExecutionChangeEvent().Subscribe((e=>{t.Invoke(e.filter((e=>e.DeviceGuid==this._guid)).map((e=>e.Channel)))}))}OnDeviceFirmwareVersionChangedEvent(){return this._onDeviceFirmwareVersionChangedEvent}OnDeviceStateRefreshedOrChangedEvent(){return this._onDeviceStateRefreshedOrChangedEvent}get ShouldChannelsBeGrouped(){if(this._deviceType===s.bq.Remote)switch(this._modelGuid){case"afea26ac-d5de-4aa9-8e74-ff69679d097b":case"908a71ec-ca46-4431-9504-05b7801e77f8":case"d8fea502-541e-42d9-8ece-a1bcfaaa93f9":return!1;default:return this._availableTasksTypes.all((e=>e.Type!==s.MO.SetBlindPositionSimple))}return!1}get States(){return f.g.DoesThrowStackTrace?c.j.Get(M.ServiceName).GetDeviceStates(this).selectMany((e=>e.States)).toArray():v._devicesService.GetDeviceStates(this).selectMany((e=>e.States)).toArray()}RemoveDeviceAsync(){return v._devicesService.RemoveDeviceAsync(this)}ExecuteDeviceTaskAsync(e){return v._devicesService.ExecuteDeviceTaskAsync(this,e)}OnDeviceTasksExecutionChangedOnChannelsEvent(){return this._onDeviceTasksExecutionChangedOnChannelsEvent}OnDeviceStateChangedEvent(){return this._onDeviceStateChangedEvent}get Guid(){return null==this._guid?"":this._guid}set Guid(e){this._guid=e}get IconType(){return this._iconType}set IconType(e){this._iconType=e}get Name(){return null==this._name?"":this._name}set Name(e){this._name=e}set SoftwareVersion(e){this._softwareVersion=e}get SoftwareVersion(){return this._softwareVersion}get ChannelsAmount(){return null==this._channelsAmount?0:this._channelsAmount}set ChannelsAmount(e){this._channelsAmount=e}get SerialNumber(){return this._serialNumber}set SerialNumber(e){this._serialNumber=e}get Model(){return this._model}set Model(e){this._model=e}get ModelGuid(){return this._modelGuid}set ModelGuid(e){this._modelGuid=e}get ManufacturerGuid(){return this._manufacturerGuid}set ManufacturerGuid(e){this._manufacturerGuid=e}get IsVirtual(){return this._isVirtual}set IsVirtual(e){this._isVirtual=e}get IsEnabled(){return this._isEnabled}set IsEnabled(e){this._isEnabled=e}get DeviceState(){return this._deviceState}set DeviceState(e){this._deviceState=e}get DeviceType(){return this._deviceType}set DeviceType(e){this._deviceType=e}get CommunicationWay(){return this._communicationWay}set CommunicationWay(e){this._communicationWay=e}get AvailableTaskTypes(){return this._availableTasksTypes}set AvailableTaskTypes(e){this._availableTasksTypes=e}get AvailableResponseTypes(){return this._availableResponseTypes}set AvailableResponseTypes(e){this._availableResponseTypes=e}get Channels(){return this._channels}get ProtocolGuid(){return this._protocolGuid}set ProtocolGuid(e){this._protocolGuid=e}ChangeDeviceNameAsync(e){return t=this,n=void 0,s=function*(){var t;try{const n=yield c.j.Get(d.G.ServiceName).SendAndWaitForResponseAsync(new m(this,e),2e4,!1);switch(n.Status){case h.nW.OK:return this._name=e,null===(t=g.h.Log)||void 0===t||t.Error("Device","EXIT CONFIGURATION MODE WILL BE FIRED! ChangeDeviceNameAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),new u.gm(u.Ao.Changed,"");case h.nW.WrongData:if("DeviceNotFound"==n.Data)return new u.gm(u.Ao.Failed,"DeviceNotFound");break;case h.nW.NoPermissionsToCallGivenResource:return new u.gm(u.Ao.NoPermissions,"")}}catch(e){return e.message.includes("timeout")?new u.gm(u.Ao.ControllerResponseTimeout,""):new u.gm(u.Ao.UnknownError,"")}return new u.gm(u.Ao.Unknown,"")},new((r=void 0)||(r=Promise))((function(e,o){function i(e){try{c(s.next(e))}catch(e){o(e)}}function a(e){try{c(s.throw(e))}catch(e){o(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(i,a)}c((s=s.apply(t,n||[])).next())}));var t,n,r,s}ExecuteTaskAsync(e){return v._devicesService.ExecuteDeviceTaskAsync(this,e)}}class m extends h.CP{constructor(e,t){super(),this.Resource="/devices/device/name",this.Method=h.IT.Put;const n=new y;n.DeviceGuid=e.Guid,n.Name=t,this.Data=n}}class y{constructor(){this.DeviceGuid="",this.Name=""}}class w{constructor(){this._device=new v,this._number=0,this._name="",this._iconName="",this._channelId="",this._mode=l.zA.Default,this._channelGroups=[],this._isHidden=!1,this._availableTasksTypes=[],this._availableResponseTypes=[],this._customData={},this._roles=[],this._configurations={},this.CustomDataAndRolesSupported=!1,this._onTasksExecutionChangedEvent=new r.r,this._onChannelStateChangedEvent=new r.r,this._onChannelStateRefreshedOrChangedEvent=new r.r,null==w._devicesService&&(w._devicesService=c.j.Get(M.ServiceName))}SetCustomDataAsync(e,t){const n=this.GetChannelConfigurationData();if(Array.isArray(e))for(const t of e)n.CustomData[t.dataId]=t.data,this._customData[t.dataId]=t.data;else n.CustomData[e]=t,this._customData[e]=t;const r=new S;return r.DeviceGuid=this._device.Guid,r.ChannelConfiguration=n,this.ChangeConfigurationAsync(r)}OnChannelStateChangedEvent(){return this._onChannelStateChangedEvent}OnChannelStateRefreshedOrChangedEvent(){return this._onChannelStateRefreshedOrChangedEvent}get Configurations(){return this._configurations}set Configurations(e){this._configurations=e}IsCustomDataAndRolesSupported(){return this.CustomDataAndRolesSupported}get CustomData(){return this._customData}set CustomData(e){this._customData=e}get Roles(){return this._roles}set Roles(e){this._roles=e}get ChannelId(){return this._channelId}SetDevice(e){this._device=e,this._channelId=`${e.Guid}_${this.Number}`,this._device.OnDeviceStateChangedEvent().Subscribe((e=>{e.Data.Channel==this.Number&&this._onChannelStateChangedEvent.Invoke(e)})),this._device.OnDeviceStateRefreshedOrChangedEvent().Subscribe((e=>{e.Data.Channel==this.Number&&this._onChannelStateRefreshedOrChangedEvent.Invoke(e)}))}GetDevice(){return this._device}RemoveCustomDataAsync(e){const t=this.GetChannelConfigurationData();delete t.CustomData[e],delete this._customData[e];const n=new S;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this.ChangeConfigurationAsync(n)}GetChannelConfigurationData(){const e=new A;return e.Channel=this._number,e.ChannelName=this._name,e.Configuration=this._mode,e.CustomData=this._customData,e.GroupsGuids=this._channelGroups,e.Hidden=this._isHidden,e.IconName=this._iconName,e}HideAsync(){const e=this.GetChannelConfigurationData();this._isHidden=!0,e.Hidden=!0;const t=new S;return t.DeviceGuid=this._device.Guid,t.ChannelConfiguration=e,this.ChangeConfigurationAsync(t)}ShowAsync(){const e=this.GetChannelConfigurationData();e.Hidden=!1,this._isHidden=!1;const t=new S;return t.DeviceGuid=this._device.Guid,t.ChannelConfiguration=e,this.ChangeConfigurationAsync(t)}ChangeNameAsync(e){const t=this.GetChannelConfigurationData(),n=new S;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,t.ChannelName=e,this._name=e,this.ChangeConfigurationAsync(n)}ChangeIconNameAsync(e){const t=this.GetChannelConfigurationData();t.IconName=e;const n=new S;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this._iconName=e,this.ChangeConfigurationAsync(n)}ChangeGroupsAsync(e){const t=this.GetChannelConfigurationData();t.GroupsGuids=e;const n=new S;return n.DeviceGuid=this._device.Guid,n.ChannelConfiguration=t,this._channelGroups=e,this.ChangeConfigurationAsync(n)}ChangeConfigurationAsync(e){return t=this,n=void 0,s=function*(){var t,n;try{const r=yield c.j.Get(d.G.ServiceName).SendAndWaitForResponseAsync(new _(e),2e4,!1);switch(null===(t=g.h.Log)||void 0===t||t.Error("Device","EXIT CONFIGURATION MODE WILL BE FIRED! ChangeConfigurationAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),r.Status){case h.nW.OK:return this._name=e.ChannelConfiguration.ChannelName,this._iconName=e.ChannelConfiguration.IconName,this._channelGroups=e.ChannelConfiguration.GroupsGuids,this._isHidden=e.ChannelConfiguration.Hidden,this._mode=e.ChannelConfiguration.Configuration,this._customData=e.ChannelConfiguration.CustomData,this._roles=e.ChannelConfiguration.Roles,this._configurations=e.ChannelConfiguration.Configurations,new u.gm(u.Ao.Changed,"");case h.nW.WrongData:if("DeviceNotFound"===r.Data)return null===(n=g.h.Log)||void 0===n||n.Error("Failed to change channel configuration, referenced device does not exist!"),new u.gm(u.Ao.WrongData,"DeviceNotFound");break;case h.nW.FatalError:return new u.gm(u.Ao.UnknownError,"")}}catch(e){if(e.message.includes("timeout"))return new u.gm(u.Ao.ControllerResponseTimeout,"")}return new u.gm(u.Ao.Unknown,"")},new((r=void 0)||(r=Promise))((function(e,o){function i(e){try{c(s.next(e))}catch(e){o(e)}}function a(e){try{c(s.throw(e))}catch(e){o(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(i,a)}c((s=s.apply(t,n||[])).next())}));var t,n,r,s}get Number(){return this._number}set Number(e){this._number=e}get Name(){return this._name}set Name(e){this._name=e}get IconName(){return this._iconName}set IconName(e){this._iconName=e}get States(){return f.g.DoesThrowStackTrace?c.j.Get(M.ServiceName).GetDeviceStates(this.GetDevice()).where((e=>e.Channel==this.Number)).selectMany((e=>e.States)).toArray():w._devicesService.GetDeviceStates(this.GetDevice()).where((e=>e.Channel==this.Number)).selectMany((e=>e.States)).toArray()}get Mode(){return this._mode}set Mode(e){this._mode=e}get ChannelGroups(){return this._channelGroups}set ChannelGroups(e){this._channelGroups=e}get IsHidden(){return this._isHidden}set IsHidden(e){this._isHidden=e}get AvailableTaskTypes(){return this._availableTasksTypes}set AvailableTaskTypes(e){this._availableTasksTypes=e}get AvailableResponseTypes(){return this._availableResponseTypes}set AvailableResponseTypes(e){this._availableResponseTypes=e}OnTasksExecutionChangeEvent(){return this._onTasksExecutionChangedEvent}ExecuteTaskAsync(e){return null!=this._device?(e.Channel=this.Number,e.DeviceGuid=this._device.Guid,w._devicesService.ExecuteDeviceTaskAsync(this._device,e)):Promise.resolve(o.T.Failed)}}w._devicesService=null;class S{constructor(){this.DeviceGuid="",this.ChannelConfiguration=new A}}class A{constructor(){this.Channel=0,this.ChannelName="",this.Configuration=l.zA.Default,this.GroupsGuids=[],this.IconName="",this.Hidden=!1,this.Configurations={},this.CustomData={},this.Roles=[]}}class _ extends h.CP{constructor(e){super(),this.Resource="/devices/device/channel/configuration",this.Method=h.IT.Put,this.Data=e}}var C=n(7714),T=n(7581),D=n(5329),k=n(934),I=n(4071),R=n(7198),E=n(8069),b=n(4506),N=n(8679),G=n(2824),P=n(8517),O=n(9315),U=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class M{constructor(){var e;this._devices=[],this._onDevicesTasksChangedEvent=new r.r,this._onDeviceFoundEvent=new r.r,this._onDeviceRegisteredEvent=new r.r,this._onDeviceRemovedEvent=new r.r,this._onDeviceFirmwareVersionChangedEvent=new r.r,this._onDeviceStateChangedEvent=new r.r,this._onDeviceStateRefreshedOrChangedEvent=new r.r,this._connection=null,this._session=null,this._controllerConfiguration=null,this._synchronized=!1,this._synchronizedDevicesStates=!1,this._devicesChannelsStates=[],this._onDevicesSynchronized=new P.J,this._onDevicesStatesSynchronized=new P.J,this._syncSemaphore=new O.z(1),this._connection=c.j.Get(d.G.ServiceName),this._session=c.j.Get(D.Q.ServiceName),this._controllerConfiguration=c.j.Get(p.u.ServiceName),this._onDeviceStateChangedEvent.Subscribe((e=>U(this,void 0,void 0,(function*(){return this.PutDeviceStateOnList(e.Device,e.State)})))),null===(e=this._session)||void 0===e||e.OnUserLoggedInEvent().Subscribe((e=>U(this,void 0,void 0,(function*(){var t,n;try{null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`User logged in: ${e.Guid} syncing devices...`),yield this.ResyncDevicesAsync()}catch(e){null===(n=g.h.Log)||void 0===n||n.Error(M.ServiceName,`Failed to sync devices and states: ${e}`)}})))),this._connection.SubscribeTo("/info/devices/tasks",(e=>{this.ParseDeviceTaskInfo(e.Data)})),this._connection.SubscribeTo("/info/devices/device/found",(e=>{this.MapApiDevices(e.Data).forEach((e=>{var t;e.DeviceType!=s.bq.Scene&&(null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Found device: ${e.Name} guid: ${e.Guid}`),this._onDeviceFoundEvent.Invoke(e))}))})),this._connection.SubscribeTo("/info/devices/device/firmware/updated",(e=>{const t=e.Data.DeviceGuid,n=e.Data.Version,r=this._devices.find((e=>e.Guid==t));void 0!==r&&(this._onDeviceFirmwareVersionChangedEvent.Invoke({Device:r,FirmwareVersion:n}),r.SoftwareVersion=n,r.OnDeviceFirmwareVersionChangedEvent().Invoke({FirmwareVersion:n}))})),this._connection.SubscribeTo("/info/devices/device/state/changed",(e=>{var t;const n=e.Data,r=this._devices.filter((e=>e.Guid==n.DeviceGuid));if(r.length>0){const e=r[0],o=this.MapApiDeviceStateToDeviceState(e,n);if(null!=o){this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateRefreshedOrChangedEvent.Invoke({Device:e,State:r})}));let r=e.States.find((e=>e.TypeAsEnum===o.TypeAsEnum&&e.Data.Channel===o.Data.Channel));if(r){let i=r.StatesComparisonData;if(o.TypeAsEnum==s.mQ.BlindErrorState&&(null===(t=o.Data)||void 0===t?void 0:t.ErrorCode)!=r.Data.ErrorCode)return void this._onDeviceStateChangedEvent.Invoke({Device:e,State:o});r.Data=o.Data,i!==o.StatesComparisonData&&(this._onDeviceStateChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})))}else e.States.push(o),this._onDeviceStateChangedEvent.Invoke({Device:e,State:o}),o.TypeAsEnum==s.mQ.SignalStrength?e.Channels.forEach((t=>{let r=new a.b8(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})})):o.TypeAsEnum==s.mQ.BatteryState&&e.Channels.forEach((t=>{let r=new a.v3(Object.assign({},n));r.Data.Channel=t.Number,this._onDeviceStateChangedEvent.Invoke({Device:e,State:r})}))}}})),this._connection.SubscribeTo("/info/devices/devices/registered",(e=>{c.j.Get(b.C.ServiceName).ClearCache(),this.MapApiDevices(e.Data).forEach((e=>{var t;null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Registered device: ${e.Name} guid: ${e.Guid}`),this._devices.push(e),this._onDeviceRegisteredEvent.Invoke(e)}))})),this._connection.SubscribeTo("/info/devices/devices/removed",(e=>{c.j.Get(b.C.ServiceName).ClearCache(),this.MapApiDevices(e.Data).forEach((e=>{var t;null===(t=g.h.Log)||void 0===t||t.Debug(M.ServiceName,`Removed device: ${e.Name} guid: ${e.Guid}`),this._devices=this._devices.filter((t=>t.Guid!=e.Guid)),this._onDeviceRemovedEvent.Invoke(e)}))}))}ResyncDevicesAsync(){return U(this,void 0,void 0,(function*(){var e;const t=yield this._syncSemaphore.AcquireAsync();try{this._synchronized=!1,this._synchronizedDevicesStates=!1,this._devices=yield this.GetPairedDevicesAsync(!0),this._synchronized=!0,this._onDevicesSynchronized.Invoke(),yield this.SyncDevicesStatesAsync(),this._synchronizedDevicesStates=!0,this._onDevicesStatesSynchronized.Invoke()}catch(t){null===(e=g.h.Log)||void 0===e||e.Error(M.ServiceName,`Failed to sync devices and states: ${t}`)}finally{t.Release()}}))}WaitForSynchronizationAsync(){var e;return this._synchronized?(null===(e=g.h.Log)||void 0===e||e.Debug(M.ServiceName,"Already synchronized"),Promise.resolve()):new Promise((e=>{const t=window.setTimeout((()=>{this._onDevicesSynchronized.Unsubscribe(n),e()}),3e4),n=()=>{var r;null===(r=g.h.Log)||void 0===r||r.Debug(M.ServiceName,"Fired onDevicesSynchronized event – clearing timeout & resolving promise"),window.clearTimeout(t),this._onDevicesSynchronized.Unsubscribe(n),e()};this._onDevicesSynchronized.Subscribe(n)}))}WaitForDevicesStatesSynchronizationAsync(){var e;return this._synchronizedDevicesStates?(null===(e=g.h.Log)||void 0===e||e.Debug(M.ServiceName,"Already synchronized states"),Promise.resolve()):new Promise((e=>{const t=window.setTimeout((()=>{this._onDevicesStatesSynchronized.Unsubscribe(n),e()}),12e4),n=()=>{var r;null===(r=g.h.Log)||void 0===r||r.Debug(M.ServiceName,"Fired onDevicesStatesSynchronized event, CLEARING timeout AND resolving WaitForDevicesStatesSynchronizationAsync promise"),window.clearTimeout(t),this._onDevicesStatesSynchronized.Unsubscribe(n),e()};this._onDevicesStatesSynchronized.Subscribe(n)}))}ProtocolGuidToProtocolName(e){switch(e){case"1fca7e8a-a2dc-4883-bd94-4e9b2012f685":return"ExtaLife";case"cd25bdff-628c-4dbc-a16a-648c96a819d4":return"Portos 433MHz";case"634c2bb2-1a4f-4db6-8dd4-d5fbaf92678e":return"Supla";case"194aeb81-990c-4a02-9236-59e902958fda":return"RTSP";case"b3e4644e-ab5b-494e-b3c5-66fabe7fff64":return"Wekta";case"247198e1-e360-4355-9886-232ac1456eea":return"Lavva Wi-Fi";default:return null}}CanDisplaySceneDevices(){return this.CheckIfControllerSoftwareVersionIsEnough(6,56)}CheckIfControllerSoftwareVersionIsEnough(e,t){var n,r,s;const o=null!==(s=null===(r=null===(n=this._session)||void 0===n?void 0:n.User)||void 0===r?void 0:r.SoftwareVersion)&&void 0!==s?s:null;if(!o||!o.includes("."))return!1;const i=o.split(".");if(2!==i.length)return!1;const a=i.map((e=>parseInt(e,10)));if(a.some((e=>Number.isNaN(e)||e<0)))return!1;const[c,u]=a;return c>e||c===e&&u>=t}CheckIfDeviceUsedInScenesAsync(e){return U(this,void 0,void 0,(function*(){var t,n,r,s,o,i;try{let i;if("string"==typeof e){const n=this.GetDevice(e);if(null==n)return null===(t=g.h.Log)||void 0===t||t.Error("Cannot check if device is used in scenes! Device with given guid not exists"),h.nW.ResourceDoesNotExists;i=n}else i=e;const a=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new z(i.Guid),2e4,!1);if(null==a||null==a.Status)return null===(r=g.h.Log)||void 0===r||r.Error("Cannot check if device is used in scenes! Response or status is null!"),h.nW.FatalError;if(a.Status!=h.nW.OK)return a.Status;if(null==a.Data)return null===(s=g.h.Log)||void 0===s||s.Error("Cannot check if device is used in scenes! No data!"),h.nW.FatalError;let l=yield c.j.Get(N.N.ServiceName).GetSequencesListAsync();if(l instanceof u.ZR)return null===(o=g.h.Log)||void 0===o||o.Error(`Cannot check if device is used in scenes! Cannot get sequence list, ScenesServiceErrorCode: ${l.Type}`),h.nW.Error;const d=new ee;return d.DeviceGuid=i.Guid,a.Data.ConditionsAsCondition.forEach((e=>{const t=l.find((t=>t.Guid==e));t&&d.ConditionsAsCondition.push(t)})),a.Data.ConditionsAsTask.forEach((e=>{const t=l.find((t=>t.Guid==e));t&&d.ConditionsAsCondition.push(t)})),d}catch(e){return null===(i=g.h.Log)||void 0===i||i.Error(`Cannot check if device is used in scenes! ${e}`),h.nW.FatalError}}))}CanEditDevicesInfo(){var e,t;return null!==this._session&&void 0!==this._session&&null!==this._session.User&&void 0!==this._session.User&&(null===(t=null===(e=this._session)||void 0===e?void 0:e.User)||void 0===t?void 0:t.AccessLevel)>=E.hx.Admin}CanAddAndRemoveAndConfigureDevices(){var e,t;return null!==this._session&&void 0!==this._session&&null!==this._session.User&&void 0!==this._session.User&&(null===(t=null===(e=this._session)||void 0===e?void 0:e.User)||void 0===t?void 0:t.AccessLevel)>=E.hx.Installator}GetDeviceChannelByChannelId(e){return this._devices.firstOrDefault((t=>t.Channels.any((t=>t.ChannelId==e)))).Channels.firstOrDefault((t=>t.ChannelId==e))}EnableFastStatesSyncAsync(){return U(this,void 0,void 0,(function*(){var e;const t=c.j.Get(R.V.ServiceName).SaveAsync("FastDevicesSync",!1,!0);return null===(e=g.h.Log)||void 0===e||e.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! EnableFastStatesSyncAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),t}))}DisableFastStatesSyncAsync(){return U(this,void 0,void 0,(function*(){var e;const t=c.j.Get(R.V.ServiceName).SaveAsync("FastDevicesSync",!1,!1);return null===(e=g.h.Log)||void 0===e||e.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! DisableFastStatesSyncAsync()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),t}))}IsFastStatesSyncEnabledAsync(){return U(this,void 0,void 0,(function*(){const e=yield c.j.Get(R.V.ServiceName).ReadAsync("FastDevicesSync",!1,!1);return e instanceof I.M?e.Data:e!=h.nW.ResourceDoesNotExists&&e}))}GetDevicesForManualPairingAsync(e){return U(this,void 0,void 0,(function*(){let t=c.j.Get(k.N.ServiceName);const n=new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$");return Array.isArray(e)||n.test(e)?yield t.GetDevicesForManualPairingAsync(e):yield t.GetDevicesForManualPairingAsync()}))}AddManuallyPairedDevice(e){return U(this,void 0,void 0,(function*(){var t;let n=yield c.j.Get(k.N.ServiceName).AddManuallyPairedDeviceAsync(e);return null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! AddManuallyPairedDevice()"),yield c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),n}))}GetDeviceChannelStates(e,t){var n,r;return null!==(r=null===(n=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid)))||void 0===n?void 0:n.ChannelsStates.filter((e=>e.Channel==t)))&&void 0!==r?r:[]}GetDeviceStates(e){var t,n;return null!==(n=null===(t=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid)))||void 0===t?void 0:t.ChannelsStates)&&void 0!==n?n:[]}PutDeviceStateOnList(e,t){let n=this._devicesChannelsStates.firstOrDefault((t=>t.DeviceGuid==e.Guid));if(null==n){let r=new W;r.Channel=t.Data.Channel,r.States=[t],n={DeviceGuid:e.Guid,ChannelsStates:[r]},this._devicesChannelsStates.push(n)}else{let e=n.ChannelsStates.firstOrDefault((e=>e.Channel==t.Data.Channel));if(null==e)e=new W,e.Channel=t.Data.Channel,e.States=[t],n.ChannelsStates.push(e);else{let n=e.States.firstOrDefault((e=>e.Type==t.Type));null!=n&&(n.TypeAsEnum==s.mQ.BlindErrorState?e.States=e.States.where((e=>e.Data.ErrorCode!=t.Data.ErrorCode)).toArray():e.States=e.States.where((e=>e.Type!=t.Type)).toArray()),e.States.push(t)}}}GetCurrentlyRunningTaksAsync(){return U(this,void 0,void 0,(function*(){var e;const t=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new q,15e3,!1);(null==t?void 0:t.Status)==h.nW.OK&&null!=t.Data&&this.ParseDeviceTaskInfo(t.Data)}))}ParseDeviceTaskInfo(e){const t=[];e.forEach((e=>{const n=e.split(";"),r=new s.FX;if(r.DeviceGuid=n[0],r.Channel=Number(n[1]),r.Status=l.AM.ExecutingTasks,t.push(r),0===r.Channel){const e=this._devices.find((e=>e.Guid==r.DeviceGuid));void 0!==e&&e.Channels.forEach((n=>{const r=new s.FX;r.DeviceGuid=e.Guid,r.Channel=n.Number,r.Status=l.AM.ExecutingTasks,t.push(r)}))}})),this._onDevicesTasksChangedEvent.Invoke(t)}MapApiDeviceStateToDeviceState(e,t){var n;switch(t.state,t.DataType){case"ChannelOnOff":return new a.l4(t);case"DoorBell":return new a.nA(t);case"ReedPosition":return new a.Rq(t);case"BlindPosition":return new a.mL(t);case"ButtonState":return new a.mV(t);case"LightColor":return new a.dQ(t);case"LightTemperature":return new a.Ro(t);case"LightBrightness":return new a.re(t);case"TemperatureSensor":case"TemperatureState":case"MeasuredTemperature":return new a.uk(t);case"BatteryState":return new a.v3(t);case"MeasuredBrightness":case"DeviceBrightnessState":return new a.R6(t);case"EnergyMeasuredPower":case"EnergyMeasuredCurrent":case"EnergyMeasuredVoltage":break;case"IEnergy":case"Energy":case"IGetPowerMeasurements":return new a.If(t);case"DistanceSensor":return new a.JA(t);case"MovementSensor":return new a.B6(t);case"BlindsControlButton":return new a.VM(t);case"FacadeControlButton":return new a.wb(t);case"SignalStrength":return new a.b8(t);case"GatePosition":return new a.Uj(t);case"GatewayPosition":return new a.fp(t);case"GateControllerHealth":return new a.x5(t);case"IBlindCalibrationStatus":case"BlindCalibration":return new a.BJ(t);case"HumiditySensor":case"HumidityState":return new a.Bo(t);case"VibrationSensor":return new a.cK(t);case"DigitalInputSensor":return new a.Cv(t);case"ConfigurationState":return new a.UF(t);case"BlindOpenCloseTime":case"IBlindOpenCloseTime":return new a.Qj(t);case"IOvercurrentProtection":case"OvercurrentProtection":return new a.qr(t);case"IOvercurrentProtectionThreshold":case"OvercurrentProtectionThreshold":return new a.Vm(t);case"FacadePosition":case"FacadeState":return new a.nu(t);case"FacadeTypeState":return new a.sk(t);case"CurrentWindThreshold":return new a.yv(t);case"CurrentLightThreshold":return new a.IP(t);case"WindSpeed":return new a.Xp(t);case"FloodSensor":return new a.wr(t);case"PressureState":return new a.Nl(t);case"ITamperProtection":case"TamperProtection":return new a.K7(t);case"ILightRGBW":case"LightRGBW":return new a.Sd(t);case"OnlineCamera":case"IOnlineCamera":return new a.q1(t);case"BlindError":case"IBlindError":return t.state.ErrorData=(0,G.ku)(t.state.ErrorData),new a.Vk(t);case"HallState":return new a.H1(t);case"SceneExecuted":return new a.UY(t);case"Intercom":return new a.bt(t);default:null===(n=g.h.Log)||void 0===n||n.Debug(M.ServiceName,`Not supported device state ${t.DataType}`)}return null}GetServiceName(){return M.ServiceName}SyncDevicesStatesAsync(){return U(this,arguments,void 0,(function*(e=!1){var t,n;const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(new F,15e3,!1);if(!0!==(yield this.IsFastStatesSyncEnabledAsync())||e){let e=new L;e.Data=!0;const t=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(e,35e3,!1);return(null==t?void 0:t.Status)==h.nW.OK}return(null==r?void 0:r.Status)==h.nW.OK}))}OnDevicesTasksExecutionChangeEvent(){return this._onDevicesTasksChangedEvent}OnDeviceStateChangedEvent(){return this._onDeviceStateChangedEvent}OnDeviceStateRefreshedOrChangedEvent(){return this._onDeviceStateRefreshedOrChangedEvent}OnDeviceRegisteredEvent(){return this._onDeviceRegisteredEvent}OnDeviceRemovedEvent(){return this._onDeviceRemovedEvent}OnDeviceFoundEvent(){return this._onDeviceFoundEvent}MapApiDevices(e){const t=[];return null==e?[]:(e.forEach((e=>{var n,r,o,i;let a=new v;a.Guid=e.Guid,a.Name=e.DeviceName,a.ChannelsAmount=e.ChannelsNumber,a.DeviceType=e.DeviceType,a.CommunicationWay=e.CommunicationWay,a.DeviceState=e.DeviceState,a.IsEnabled=e.IsEnabled,a.IsVirtual=e.IsVirtual,a.SerialNumber=e.DeviceSerialNumber,a.ManufacturerGuid=e.ManufacturerGuid,a.ModelGuid=e.DeviceModelGuid,a.Model=e.DeviceModel,a.Name=e.DeviceName,a.ProtocolGuid=e.ProtocolGuid,void 0!==e.IconType&&null!==e.IconType?a.IconType=e.IconType:a.IconType=s.AT.Unknown;try{if(null===(n=e.AvailableTasks)||void 0===n||n.forEach((e=>{let t=new s.q1;if(a.CommunicationWay==s.G9.OneWay)"IBlindPosition"===e&&(t.InterfaceType="IBlindPositionSimple");else switch(e){case"IGatePosition":t.InterfaceType="IGatePulse";break;case"IGatewayPosition":t.InterfaceType="IGatewayPulse";break;default:t.InterfaceType=e}a.AvailableTaskTypes.push(t)})),null===(r=e.AvailableResponses)||void 0===r||r.forEach((e=>{let t=new s.UT;t.InterfaceType=e,a.AvailableResponseTypes.push(t)})),null===(o=e.ChannelsConfiguration)||void 0===o||o.forEach((e=>{var t,n,r;try{let r=new w;r.Number=e.Channel,a.Channels.push(r),r.SetDevice(a),r.Name=e.ChannelName,r.ChannelGroups=e.GroupsGuids,r.IconName=e.IconName,r.IsHidden=e.Hidden,r.Configurations=e.Configurations,r.CustomDataAndRolesSupported=void 0!==e.CustomData&&null!==e.CustomData,void 0!==e.CustomData&&null!==e.CustomData&&(r.CustomData=e.CustomData),void 0!==e.Roles&&null!==e.Roles&&(r.Roles=e.Roles),null===(t=e.AvailableResponses)||void 0===t||t.forEach((e=>{let t=new s.UT;t.InterfaceType=e,r.AvailableResponseTypes.push(t)})),null===(n=e.AvailableTasks)||void 0===n||n.forEach((e=>{let t=new s.q1;a.AvailableTaskTypes.any((e=>"IBlindPositionSimple"==e.InterfaceType))?"IBlindPosition"==e&&(t.InterfaceType="IBlindPositionSimple"):t.InterfaceType=e,r.AvailableTaskTypes.push(t)}))}catch(e){null===(r=g.h.Log)||void 0===r||r.Error(e)}})),"f4cc5043-2198-47df-9361-4cd130ed0323"===a.ModelGuid&&a.Channels.first().AvailableTaskTypes.all((e=>e.Type!=s.MO.GetPowerMeasurements))){let e=new s.q1;e.InterfaceType="IGetPowerMeasurements",a.Channels.first().AvailableTaskTypes.push(e)}}catch(e){null===(i=g.h.Log)||void 0===i||i.Error(e)}t.push(a)})),t)}GetPairedDevicesAsync(){return U(this,arguments,void 0,(function*(e=!1){var t,n,r;let o=yield null===(t=this._controllerConfiguration)||void 0===t?void 0:t.DidCofigurationChangeAsync();if(this._synchronized&&!o)return e?Promise.resolve(this._devices):Promise.resolve(this._devices.filter((e=>e.DeviceType!=s.bq.Scene)));const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(new x,15e3,!0);return null==i||void 0===i?[]:i.Status==h.nW.OK&&null!=i.Data?(this._devices=this.MapApiDevices(i.Data),e?this._devices:this._devices.filter((e=>e.DeviceType!=s.bq.Scene))):(null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to get devices. ${i.Status} ${i.Data}`),[])}))}GetDevicesAsync(){return U(this,arguments,void 0,(function*(e=!1){return yield this.WaitForSynchronizationAsync(),this.GetPairedDevicesAsync(e)}))}GetFoundDevicesAsync(){return U(this,void 0,void 0,(function*(){var e,t;const n=yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new V,15e3,!1);return null==n?[]:n.Status==h.nW.OK&&null!=n.Data?this.MapApiDevices(n.Data).where((e=>e.DeviceType!==s.bq.Scene)).toArray():(null===(t=g.h.Log)||void 0===t||t.Error(M.ServiceName,`Failed to get found devices. ${n.Status} ${n.Data}`),[])}))}GetDevice(e){return this._devices.find((t=>t.Guid===e))}FindDevicesAsync(){return U(this,void 0,void 0,(function*(){var e;c.j.Get(b.C.ServiceName).ClearCache(),yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new B,35e3,!1)}))}StopSearchingForDevices(){return U(this,void 0,void 0,(function*(){var e;yield null===(e=this._connection)||void 0===e?void 0:e.SendAndWaitForResponseAsync(new $,2e4,!1)}))}RegisterDeviceAsync(e){return U(this,void 0,void 0,(function*(){var t,n,r;try{const r=new j;r.Data=e.Guid;const s=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(r,2e4,!1);return null===(n=g.h.Log)||void 0===n||n.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RegisterDeviceAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),(null==s?void 0:s.Status)==h.nW.OK?(this._devices.any((t=>t.Guid==e.Guid))||this._devices.push(e),this._onDeviceRegisteredEvent.Invoke(e),o.T.Executed):o.T.Failed}catch(e){return null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to paired devices: ${e}`),o.T.ControllerResponseTimeout}}))}RemoveDeviceAsync(e){return U(this,arguments,void 0,(function*(e,t=!1){var n,r,s;try{let s=new H;t&&(s=new Z),s.Data=e.Guid;const i=yield null===(n=this._connection)||void 0===n?void 0:n.SendAndWaitForResponseAsync(s,35e3,!1);return null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! RemoveDeviceAsync()"),c.j.Get(p.u.ServiceName).ExitConfigurationModeAsync(),(null==i?void 0:i.Status)==h.nW.OK?(this._devices=this._devices.where((t=>t.Guid!=e.Guid)).toArray(),this._onDeviceRemovedEvent.Invoke(e),o.T.Executed):o.T.Failed}catch(e){return null===(s=g.h.Log)||void 0===s||s.Error(M.ServiceName,`Failed to unpair device: ${e}`),o.T.ControllerResponseTimeout}}))}MapDeviceTaskToDeviceTaskInfo(e,t){let n=new Y;const r=t;switch(r.FeatureType){case C.Y.SetTemperature:n.Data=r.Temperature;break;case C.Y.SetLightBrightness:n.Data=r.Brightness;break;case C.Y.SetLightColor:n=new J;const e=r;n.R=e.R,n.G=e.G,n.B=e.B;break;case C.Y.SetLightTemperature:n.Data=r.Temperature;break;case C.Y.SetGatePositionPrecise:switch(r.GateControlAction){case T.ZM.Open:n.Data=101;break;case T.ZM.Close:n.Data=102;break;case T.ZM.Stop:n.Data=103;break;case T.ZM.Percentage:n.Data=r.Position}break;case C.Y.SetGatePositionPreciseSecure:let t=0,s=r.Pin;switch(r.GateControlAction){case T.ZM.Open:t=101;break;case T.ZM.Close:t=102;break;case T.ZM.Stop:t=103;break;case T.ZM.Percentage:t=r.Position}n.Data={Position:t,Pin:s};break;case C.Y.SetBlindPosition:switch(r.Action){case T.VP.Open:n.Data=101;break;case T.VP.Close:n.Data=102;break;case T.VP.Stop:n.Data=103;break;case T.VP.Percentage:n.Data=r.Position}break;case C.Y.SetLightBrightnessDynamicly:n.Data=r.Brightness;break;case C.Y.SetBlindOpenCloseTime:n.Data=r.Data;break;case C.Y.SetBlindMicroventilation:n.Data=r.Position;break;case C.Y.SetFacadePositionAndTilt:n=new X;const o=r;n.FacadeAction=o.FacadeAction,n.Tilt=o.Tilt,n.Position=o.Position;break;case C.Y.LightRGBW:n.Data=r.Data;break;case C.Y.GatePulse:case C.Y.GatewayPulse:n.Data=0;break;case C.Y.TurnOnWithTimeout:n.Data=r.SwitchOffDelaySeconds}return n.Channel=r.Channel,n.DeviceGuid=e.Guid,n.ControlFeature=r.FeatureType,n}ExecuteDeviceTaskAsync(e,t){return U(this,void 0,void 0,(function*(){var n,r,s,i,a,c,u,l;try{null===(n=g.h.Log)||void 0===n||n.Debug(M.ServiceName,`Preparing device task execution, device: ${e.Guid} task: ${t.TaskType} channel: ${t.Channel}`);let l=this.MapDeviceTaskToDeviceTaskInfo(e,t);try{const e=new Q(l);null===(r=g.h.Log)||void 0===r||r.Debug(M.ServiceName,`Sending device task for execution, device: ${l.DeviceGuid} task: ${l.ControlFeature} channel: ${l.Channel} request: ${JSON.stringify(e)}`);const t=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(e,15e3,!1);switch(null==t?void 0:t.Status){case h.nW.OK:return o.T.Executed;case h.nW.FatalError:return null===(i=g.h.Log)||void 0===i||i.Error(M.ServiceName,`Fatal error occured when tried to execute task on device. Error code: ${t.Data}`),o.T.Failed;case h.nW.WrongData:if("DeviceNotFound"===t.Data)return o.T.DeviceNotFound;break;case h.nW.Error:return"DeviceResponseTimeout"===t.Data?o.T.DeviceResponseTimeout:(null===(a=g.h.Log)||void 0===a||a.Error(M.ServiceName,`Unknown error occured when trying to execute task on device. Error code: ${t.Data}`),o.T.Failed)}}catch(e){return e.message.includes("timeout")?(null===(c=g.h.Log)||void 0===c||c.Error(M.ServiceName,`Failed to get controller response in time.\n${e}`),o.T.ControllerResponseTimeout):(null===(u=g.h.Log)||void 0===u||u.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${e}`),o.T.Failed)}return o.T.Unknown}catch(e){return null===(l=g.h.Log)||void 0===l||l.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${e}`),o.T.Failed}}))}ExecuteDevicesTasksAsync(e){return U(this,void 0,void 0,(function*(){var t,n,r,s;let a=[],c=[],u=0;for(const[t,n]of e){const e=this.MapDeviceTaskToDeviceTaskInfo(t,n);e.SequnceExecutionOrder=u,u++,c.push(e)}const l=new K(c);try{const r=yield null===(t=this._connection)||void 0===t?void 0:t.SendAndWaitForResponseAsync(l,12e4,!1);let s=-1;null===(n=null==r?void 0:r.Data)||void 0===n||n.forEach((t=>{var n,c;s++;let u=o.T.Unknown;switch(t.Status){case h.nW.OK:u=o.T.Executed;break;case h.nW.FatalError:null===(n=g.h.Log)||void 0===n||n.Error(M.ServiceName,`Fatal error occured when tried to execute task on device. Error code: ${t.Data}`),u=o.T.Failed;break;case h.nW.WrongData:"DeviceNotFound"===t.Data&&(u=o.T.DeviceNotFound);break;case h.nW.Error:"DeviceResponseTimeout"===t.Data?u=o.T.DeviceResponseTimeout:(null===(c=g.h.Log)||void 0===c||c.Error(M.ServiceName,`Unknown error occured when trying to execute task on device. Error code: ${r.Data}`),u=o.T.Failed)}let l=0,d=new i;for(const[t,n]of e){if(l==s){d.Device=t,d.Task=n,d.Channel=n.Channel,d.Result=u,a.push(d);break}l++}}))}catch(t){if(t.message.includes("timeout")){null===(r=g.h.Log)||void 0===r||r.Error(M.ServiceName,`Failed to get controller response in time.\n${t}`);for(const[t,n]of e){let e=new i;a.push(e),e.Device=t,e.Task=n,e.Channel=n.Channel,e.Result=o.T.ControllerResponseTimeout}}else{null===(s=g.h.Log)||void 0===s||s.Error(M.ServiceName,`Unknown error occured when tried to execute task on device.\n${t}`);for(const[t,n]of e){let e=new i;a.push(e),e.Device=t,e.Task=n,e.Channel=n.Channel,e.Result=o.T.Failed}}}return a}))}}M.ServiceName="DevicesService";class W{constructor(){this.Channel=0,this.States=[]}}class x extends h.CP{constructor(){super(),this.Resource="/devices/list",this.Method=h.IT.Get}}class F extends h.CP{constructor(){super(),this.Data=!1,this.Resource="/devices/channels/states",this.Method=h.IT.Get}}class L extends h.CP{constructor(){super(),this.Data=!1,this.Resource="/devices/channels/states/sync",this.Method=h.IT.Get}}class B extends h.CP{constructor(){super(),this.Resource="/devices/search",this.Method=h.IT.Post}}class $ extends h.CP{constructor(){super(),this.Resource="/devices/search/stop",this.Method=h.IT.Post}}class V extends h.CP{constructor(){super(),this.Resource="/devices/found/list",this.Method=h.IT.Get}}class q extends h.CP{constructor(){super(),this.Resource="/devices/tasks",this.Method=h.IT.Get}}class j extends h.CP{constructor(){super(),this.Resource="/devices/device/pair",this.Method=h.IT.Put}}class H extends h.CP{constructor(){super(),this.Resource="/devices/device/unpair",this.Method=h.IT.Put}}class Z extends h.CP{constructor(){super(),this.Resource="/devices/device/unpair/force",this.Method=h.IT.Put}}class Q extends h.CP{constructor(e){super(),this.Resource="/devices/device/control",this.Method=h.IT.Post,this.Data=e}}class K extends h.CP{constructor(e){super(),this.Resource="/devices/devices/control",this.Method=h.IT.Post,this.Data=e}}class z extends h.CP{constructor(e){super(),this.Resource="/logic/device/used",this.Method=h.IT.Get,this.Data=e}}class Y{constructor(){this.DeviceGuid="",this.Channel=0,this.ControlFeature=C.Y.GetState,this.SequnceExecutionOrder=0}}class J extends Y{constructor(){super(...arguments),this.R=0,this.G=0,this.B=0}}class X extends Y{constructor(){super(...arguments),this.FacadeAction=T.wj.Stop,this.Tilt=0,this.Position=0}}class ee{constructor(){this.DeviceGuid="",this.ConditionsAsCondition=[],this.ConditionsAsTask=[]}}},8914:(e,t,n)=>{n.d(t,{O:()=>h});var r=n(6823),s=n(8637),o=n(4756),i=n(5443),a=n(9595),c=n(161),u=n(3386),l=n(4506),d=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class h{IsControllerGeolocationSetAsync(){return d(this,void 0,void 0,(function*(){let e=new g,t=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(e,15e3,!0);return(null==t?void 0:t.Status)===o.nW.OK?null==t?void 0:t.Data:null==t?void 0:t.Status}))}GetCurrentGeolocationAsync(){return d(this,void 0,void 0,(function*(){return new Promise(((e,t)=>d(this,void 0,void 0,(function*(){window.navigator.geolocation.getCurrentPosition((t=>{e(t)}),(t=>{e(t)}))}))))}))}SetControllerGeolocationAsync(e){return d(this,void 0,void 0,(function*(){var t,n,d;let v=new f;v.Data.Latitude=e.Latitude,v.Data.Longitude=e.Longitude,null===(t=c.h.Log)||void 0===t||t.Warning(h.ServiceName,`SetControllerGeolocationAsync() ${JSON.stringify(v)}`);let m=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(v,15e3,!1);switch(null===(n=c.h.Log)||void 0===n||n.Warning(h.ServiceName,`${JSON.stringify(m)}`),null===(d=c.h.Log)||void 0===d||d.Error(h.ServiceName,"EXIT CONFIGURATION MODE WILL BE FIRED! SetControllerGeolocationAsync()"),i.j.Get(u.u.ServiceName).ExitConfigurationModeAsync(),null==m?void 0:m.Status){case o.nW.OK:const e=i.j.Get(l.C.ServiceName);return e.Remove(new g),e.Remove(new p),new r.ZR(s.hy.OK,"");case o.nW.NoPermissionToPerformThisOperation:case o.nW.NoPermissionsToCallGivenResource:return new r.ZR(s.hy.NoPermissions,"");case o.nW.UserIsNotLoggedIn:return new r.ZR(s.hy.UserIsNotLoggedIn,"");default:return new r.ZR(s.hy.UnknownError,"")}}))}GetControlllerGeolocationAsync(){return d(this,void 0,void 0,(function*(){var e,t;let n=new p;null===(e=c.h.Log)||void 0===e||e.Warning(h.ServiceName,`GetControlllerGeolocationAsync(): ${JSON.stringify(n)}`);let r=yield i.j.Get(a.G.ServiceName).SendAndWaitForResponseAsync(n,15e3,!0);if(null===(t=c.h.Log)||void 0===t||t.Warning(h.ServiceName,`${JSON.stringify(r)}`),(null==r?void 0:r.Status)===o.nW.OK){let e=new s.D7;return e.IsNetworkBased=(null==r?void 0:r.Data).IsNetworkBased,e.Latitude=(null==r?void 0:r.Data).Latitude,e.Longitude=(null==r?void 0:r.Data).Longitude,e}return null==r?void 0:r.Status}))}GetServiceName(){return h.ServiceName}}h.ServiceName="GeolocationService";class g extends o.CP{constructor(){super(),this.Resource="/geolocation/isset",this.Method=o.IT.Get}}class p extends o.CP{constructor(){super(),this.Resource="/geolocation/get",this.Method=o.IT.Get}}class f extends o.CP{constructor(){super(),this.Data=new s.E$,this.Resource="/geolocation/save",this.Method=o.IT.Put}}},9054:(e,t,n)=>{n.d(t,{K:()=>T});var r,s,o,i,a=n(5443),c=n(4756),u=n(2990),l=n(8883),d=n(6823),h=n(4824),g=n(4637),p=n(6053),f=n(6881),v=n(6282),m=n(38),y=n(4907),w=n(9595),S=n(2824),A=n(5329),_=n(3386),C=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class T{constructor(){this._controllerUpdates=[],this._updateRequestTimeout=12e4,this._oldUpdateVersion=5,this._oldUpdateBuild=56,this._updateOfflineStageTime=15,this._updateProviders=a.j.Get(h.OA.ServiceName),this._logger=a.j.Get(y.g.ServiceName),this._connection=a.j.Get(w.G.ServiceName),this._appStateService=a.j.Get(m.i.ServiceName),this._extensionService=a.j.Get(u.Wn.ServiceName)}IsBranchAndAutomaticUpdatesSettingSupportedAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return!1;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);return!(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)}))}DownloadControllerUpdateAsync(e){return C(this,void 0,void 0,(function*(){try{const t=yield this.getRuntimeInfoAsync();if(t instanceof d.ZR)return t;const n=parseInt(t.SoftwareVersion.toString().split(".")[0]),r=parseInt(t.SoftwareVersion.toString().split(".")[1]);return n<this._oldUpdateVersion||n===this._oldUpdateVersion&&r<=this._oldUpdateBuild?new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot download update, feature unsupported in current version. Current version: ${t}`):yield this.DownloadControllerUpdateUsingApiAsync((()=>{}),e,!0)}catch(e){return new d.ZR(f.rQ.CannotProcessUpdate,`Failed to download controller update: ${e}`)}}))}InstallControllerOrRadioUpdateAsync(e,t,n){return C(this,void 0,void 0,(function*(){const r=new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$"),s=this._controllerUpdates.length,o=yield this.getRuntimeInfoAsync();if(o instanceof d.ZR)return o;const i=parseInt(o.SoftwareVersion.toString().split(".")[0]),a=parseInt(o.SoftwareVersion.toString().split(".")[1]);if(0==this._controllerUpdates.length)return new d.ZR(f.rQ.CannotGetUpdates,"Cannot find any updates, make sure you check for available updates by calling CheckControllerUpdateAsync().");if(void 0===n||"string"!=typeof n||!r.test(n)){const r=[1],o=t=>{t.UpdateNumber=r[0],t.AvailableUpdates=s,e(t)},u=e=>C(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}));let l=this._controllerUpdates.where((e=>e.UpdateType==g.kD.RadioUpdate)).toArray(),h=[];this._appStateService.DisallowHibernation();for(let e=0;e<l.length;e++){const t=yield(yield this._updateProviders.GetUpdatesProviderAsync(l[e].ProviderName)).InstallRadioUpdateAsync(l[e],o);yield u(5e3),t==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((t=>t.UpdateIdentifier!=l[e].UpdateIdentifier))),h.push(t),r[0]++}const p=this._controllerUpdates.find((e=>e.UpdateType==g.kD.SoftwareUpdate));if(null!=p)if(i<this._oldUpdateVersion||i===this._oldUpdateVersion&&a<=this._oldUpdateBuild){const e=yield this.UpdateControllerUsingScriptAsync(p.Update,o);e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=p.UpdateIdentifier))),h.push(e),r[0]++}else{const e=yield this.UpdateControllerUsingApiAsync(o,t,!1);this._appStateService.AllowHibernation(),e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),h.push(e),r[0]++}const v=h.where((e=>e instanceof d.ZR)).toArray();if(null!=v&&0!=v.length){let e="";return v.forEach((t=>e+=`${t.Type}, `)),this._appStateService.AllowHibernation(),v.any((e=>e.Type==f.rQ.UpdateDownloadFailed))?new d.ZR(f.rQ.UpdateDownloadFailed,`Update download failed - not all updates were successfully downloaded. Installation error codes: ${e}`):new d.ZR(f.rQ.UpdatesPartiallyInstalled,`Update installation finished - not all updates were successfully installed. Installation error codes: ${e}`)}return this._appStateService.AllowHibernation(),c.nW.OK}{let r;const s=this._controllerUpdates.find((e=>e.UpdateIdentifier==n));if(null==s)return new d.ZR(f.rQ.CannotGetUpdates,`Update with requested guid (${n}) not found.`);switch(this._logger.Debug(`Installing single update type: ${s.Update.UpdateType}, resource: ${s.UpdatedResourceName}, version: ${s.Update.Version}`),this._appStateService.DisallowHibernation(),s.UpdateType){case g.kD.RadioUpdate:return r=yield(yield this._updateProviders.GetUpdatesProviderAsync(s.ProviderName)).InstallRadioUpdateAsync(s,e),this._appStateService.AllowHibernation(),this._logger.Debug(`Radio update result: ${r}`),r==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),r;case g.kD.SoftwareUpdate:return i<this._oldUpdateVersion||i===this._oldUpdateVersion&&a<=this._oldUpdateBuild?(r=yield this.UpdateControllerUsingScriptAsync(s.Update,e),this._appStateService.AllowHibernation(),r==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)))):(yield this.CheckControllerUpdatesAsync(),r=yield this.UpdateControllerUsingApiAsync(e,t,!1),this._appStateService.AllowHibernation(),r==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)))),r;default:return new d.ZR(f.rQ.CannotProcessUpdate,`Update with type ${s.UpdateType} is not supported by UpdateService.`)}}}))}GetAutomaticControllerUpdateDownloadStatusAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot get update branch, feature unsupported in current version. Current version: ${e}`);let r=yield this._connection.SendAndWaitForResponseAsync(new L,1e4,!1);return!(r.Status!=c.nW.OK||!r.Data)}))}GetServiceName(){return T.ServiceName}CheckDeviceVersionAsync(e){return C(this,void 0,void 0,(function*(){var t;let n;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);n=t}else n=e;if(null==n.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const r=yield null===(t=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(n.ProtocolGuid,p.cp.Device)).first())||void 0===t?void 0:t.GetSoftwareVersionAsync(n);return r.Type,r}))}CheckDeviceUpdateAsync(e){return C(this,void 0,void 0,(function*(){var t;let n;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);n=t}else n=e;if(null==n.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const r=yield null===(t=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(n.ProtocolGuid,p.cp.Device)).first())||void 0===t?void 0:t.GetAvailableUpdateAsync(n);if(null!=r.Type)return r;const s=new I;s.CurrentResourceVersion=r.CurrentResourceVersion,s.NewResourceVersion=r.Update.Version,s.UpdatedResourceName=r.UpdatedResourceName,s.UpdateResourceGuid=r.Update.ResourceGuid,s.UpdateDescription=new Map([["pl-PL",r.Update.Description]]);let o="n/a";try{o=(yield this._extensionService.GetProtocolInfoAsync(n.ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}return s.Protocol=o,s.ProtocolGuid=n.ProtocolGuid,(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).any((e=>"952ddc14-76c4-4f47-b0bc-5d106c1f9b02"==e.ModelGuid))&&(s.IsUpdateSafe=!1),s}))}CheckDeviceUpdatesBulkAsync(e){return C(this,void 0,void 0,(function*(){const t=yield yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Device),n=[];for(var r of t){const t=yield r.CheckUpdateBulkAsync(e);if(t instanceof d.ZR)return t;for(const e of t){const t=new I;t.CurrentResourceVersion=e.CurrentResourceVersion,t.NewResourceVersion=e.Update.Version,t.UpdatedResourceName=e.UpdatedResourceName,t.UpdateDescription=e.UpdateDescription,t.IsUpdateSafe=!0;let s="n/a";try{s=(yield this._extensionService.GetProtocolInfoAsync(r.ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}t.Protocol=s,t.ProtocolGuid=r.ProtocolGuid,t.UpdateResourceGuid=e.Update.ResourceGuid,n.push(t)}}return n}))}InstallDeviceUpdateAsync(e,t,n){return C(this,arguments,void 0,(function*(e,t,n,r=!1){var s;let o;if("string"==typeof e){const t=yield a.j.Get(l.N7.ServiceName).GetDevice(e);if(null==t)return new d.ZR(f.rQ.CannotFindDevice,`Device with specified GUID ${e} does not exists.`);o=t}else o=e;if(null==o.ProtocolGuid)return new d.ZR(f.rQ.UnsupportedDevice,"Device does not contains data about protocol GUID.");const i=yield null===(s=(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(o.ProtocolGuid,p.cp.Device)).first())||void 0===s?void 0:s.GetAvailableUpdateAsync(o);if(null!=i.Type)return i;this._appStateService.DisallowHibernation();const u=yield(yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(o.ProtocolGuid,p.cp.Device)).first().InstallUpdateAsync(i,t,n,r);return null!=u.Type?(this._appStateService.AllowHibernation(),u):(this._appStateService.AllowHibernation(),c.nW.OK)}))}InstallDevicesUpdateBulkAsync(e,t,n){return C(this,void 0,void 0,(function*(){const r=(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).where((t=>e.includes(t.Guid))).groupBy((e=>e.ProtocolGuid)),s=[];this._appStateService.DisallowHibernation();const o=r.count();for(let e=0;e<o;e++){const i=r.elementAt(e),a=e*(100/o),c=(e+1)*(100/o),u=e=>{e.PercentageTotal=Math.floor(e.PercentageTotal/100*(c-a)+a),t(e)},l=yield yield this._updateProviders.GetUpdatesProvidersByProtocolAsync(i.key,p.cp.Device),h=yield l.first().InstalUpdateBulkAsync(i.select((e=>e.Guid)).toArray(),u,n);if(h instanceof d.ZR)return h;s.push(h)}if(this._appStateService.AllowHibernation(),1==s.length)return s[0];{const e=new f.Hf;s.some((e=>e.DevicesUpdateResults.count()>0))&&s.any((e=>e.BulkUpdateStatus!=f.Yy.Success))?e.BulkUpdateStatus=f.Yy.PartialSuccess:s.any((e=>e.BulkUpdateStatus!=f.Yy.Success))?e.BulkUpdateStatus=s.first().BulkUpdateStatus:e.BulkUpdateStatus=f.Yy.Success;for(const t of s)t.DevicesUpdateResults.forEach(((t,n)=>{e.DevicesUpdateResults.set(n,t)}));return e}}))}CheckControllerSoftwareUpdateAvailabilityAsync(){return C(this,void 0,void 0,(function*(){const e=a.j.Get(A.Q.ServiceName).User;if(null==e)return!1;if(""==e.SoftwareVersion||null==e.SoftwareVersion)return!0;const[t,n]=e.SoftwareVersion.split(".");if(parseFloat(t)<this._oldUpdateVersion||parseFloat(t)==this._oldUpdateVersion&&parseFloat(n)<=this._oldUpdateBuild)return!0;const r=yield this._connection.SendAndWaitForResponseAsync(new M,1e4,!1);if(null==r||r.Status!=c.nW.OK||null==r.Data)return!1;const[s,o]=r.Data.Update.Version.ContainerSoftwareVersion.toString().split(".");return parseInt(s)>parseInt(t)||parseInt(s)==parseInt(t)&&parseInt(o)>parseInt(n)}))}CanCancelFailedControllerUpdateOrGetPendingUpdateProgress(){return a.j.Get(_.u.ServiceName).CheckIfControllerSoftwareVersionIsEnough(6,66)}CancelFailedControllerUpdateAsync(){return C(this,void 0,void 0,(function*(){switch((yield this._connection.SendAndWaitForResponseAsync(new O,1e4,!1)).Status){case c.nW.OK:return c.nW.OK;case c.nW.OperationNotPermitted:return c.nW.OperationNotPermitted;case c.nW.Error:default:return c.nW.Error}}))}CheckControllerPendingUpdateProgressAsync(e,t){return C(this,void 0,void 0,(function*(){return new Promise(((n,r)=>C(this,void 0,void 0,(function*(){var s;const o=a.j.Get(A.Q.ServiceName).User;if(null==o)return n(new d.ZR(f.rQ.UpdateActionsNotSupported,"No user data found, cannot check pending update progress."));if(""==o.SoftwareVersion||null==o.SoftwareVersion)return n(new d.ZR(f.rQ.CannotGetCurrentControllerVersion,"No software version data found, cannot check pending update progress."));const[u,l]=o.SoftwareVersion.split(".");if(parseFloat(u)<this._oldUpdateVersion||parseFloat(u)==this._oldUpdateVersion&&parseFloat(l)<=this._oldUpdateBuild)return n(new d.ZR(f.rQ.UnsupportedApiVersion,"Not supported API version, cannot check pending update progress."));const h=yield this._connection.SendAndWaitForResponseAsync(new M,1e4,!1);if(h.Status!=c.nW.OK)return n(new d.ZR(f.rQ.CannotGetUpdates,"No pending updates found."));let g=null===(s=h.Data)||void 0===s?void 0:s.DownloadOnly,p=100;const y=60*this._updateOfflineStageTime*1e3;let w=0;const _=new f.jK;let T=50,D=new f.II,k=new f.jK,I=!1;g||(D.DownloadOnly=g,T=100);let R=100/T;const E=n=>{let r=n.Data;switch(this._logger.Debug(`Update progress: ${r.UpdateStep}, ${r.StepProgressInPercentage}%, ${r.UpdateProgressInPercentage}% data frame status: ${n.Status}`),_.Percentage=Math.round(r.StepProgressInPercentage),_.PercentageTotal=Math.round(r.UpdateProgressInPercentage),D.SpeedMbps=r.DownloadSpeedInMbs,D.Percentage=Math.round(r.StepProgressInPercentage),D.PercentageTotal=Math.round(r.UpdateProgressInPercentage),D.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),k.AvailableUpdates=1,k.Percentage=r.StepProgressInPercentage,k.PercentageTotal=r.UpdateProgressInPercentage,k.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),w=r.StepProgressInPercentage,r.UpdateStep){case i.DownloadingInstaller:D.CurrentTask=f.kL.DownloadingInstaller,k.Status=f.Y0.DownloadingPackage,t(D);break;case i.DownloadingUpdate:D.CurrentTask=f.kL.DownloadingUpdate,k.Status=f.Y0.DownloadingPackage,t(D);break;case i.CheckingUpdate:D.CurrentTask=f.kL.CheckingUpdate,k.Status=f.Y0.CheckingPackage,e(k);break;case i.PreparingUpdate:k.Status=f.Y0.PreparingForUpgrade,D.CurrentTask=f.kL.CheckingUpdate,e(k);break;case i.OfflineUpdateStep:case i.InstallingUpdate:k.Status=f.Y0.Upgrading,e(k);break;case i.InstallerFileSignCheckFailed:case i.UpdateFileSignCheckFailed:k.Status=f.Y0.InstallationError,e(k);break;case i.UpdateDownloadFailed:k.Status=f.Y0.InstallationStopped,e(k);break;case i.UpdateInstallationFailed:k.Status=f.Y0.InstallationError,e(k);break;case i.UpdateFileCheckFailed:k.Status=f.Y0.IncompatiblePackage,e(k);break;case i.UpdateDownloaded:D.Percentage=100,D.PercentageTotal=g?Math.round(r.UpdateProgressInPercentage*R):Math.round(r.UpdateProgressInPercentage),D.SpeedMbps=0,D.CurrentTask=f.kL.CheckingUpdate,t(D),D.CurrentTask=f.kL.UpdateDownloadedAndChecked,t(D)}};let b=null;const N=t=>C(this,void 0,void 0,(function*(){t==v.t.Connected&&(clearInterval(b),_.Status=f.Y0.Upgraded,_.Percentage=100,_.PercentageTotal=100,e(_),clearInterval(b),yield S.YZ.Delay(5e3),n(c.nW.OK),a.j.Get(m.i.ServiceName).OnAppStateChanged().Unsubscribe(N))}));yield this._connection.SendAndHandleResponseAsync(new U,1e5,(s=>{var o,u,l,h,v;switch(s.Status){case c.nW.MultiDataResponseStart:I||(p=(null===(o=s.Data)||void 0===o?void 0:o.UpdateStep)==i.UpdateDownloaded?100:50,I=!0),E(s);break;case c.nW.MultiDataResponse:E(s);break;case c.nW.MultiDataResponseStop:switch(null===(u=s.Data)||void 0===u?void 0:u.UpdateStep){case i.UpdateInstallationFailed:k.Status=f.Y0.InstallationError,e(k),_.Percentage=0,_.PercentageTotal=0,e(_),n(new d.ZR(f.rQ.CannotProcessUpdate,"Update installation failed!"));break;case i.InstallerFileSignCheckFailed:case i.UpdateFileSignCheckFailed:case i.UpdateDownloadFailed:case i.UpdateFileCheckFailed:k.Status=f.Y0.DownloadingFailure,e(k),_.Percentage=0,_.PercentageTotal=0,e(_),n(new d.ZR(f.rQ.UpdateDownloadFailed,"Update download failed!"));break;case i.OfflineUpdateStep:E(s),_.Percentage=Math.round(s.Data.StepProgressInPercentage),_.PercentageTotal=Math.round(s.Data.UpdateProgressInPercentage);let r=(100-_.PercentageTotal)/100,o=_.PercentageTotal;b=setInterval((()=>{w++,o+=r,o>100&&(o=100),w>=p?(_.Status=f.Y0.Upgraded,_.Percentage=100,_.PercentageTotal=100,e(_),clearInterval(b),n(c.nW.OK)):(_.Status=f.Y0.Upgrading,_.Percentage=Math.round(w),_.PercentageTotal=Math.round(o),e(_))}),y/(p-w)),a.j.Get(m.i.ServiceName).OnAppStateChanged().Subscribe(N);break;case i.UpdateDownloaded:D.Percentage=100,D.PercentageTotal=g?Math.round((null===(l=s.Data)||void 0===l?void 0:l.UpdateProgressInPercentage)*R):Math.round(null===(h=s.Data)||void 0===h?void 0:h.UpdateProgressInPercentage),D.SpeedMbps=0,D.CurrentTask=f.kL.CheckingUpdate,t(D),D.CurrentTask=f.kL.UpdateDownloadedAndChecked,t(D),g&&n(c.nW.OK);break;default:E(s),n(new d.ZR(f.rQ.CannotProcessUpdate,`Update installation failed, received UpdateStep code: ${null===(v=s.Data)||void 0===v?void 0:v.UpdateStep}!`))}break;default:r(new d.ZR(f.rQ.CannotGetUpdates,`Cannot get pending update progress, response is empty or status is not OK. Status: ${null==s?void 0:s.Status}`))}}),!0)}))))}))}CheckDevicesUpdatesAvailabilityAsync(){return C(this,void 0,void 0,(function*(){const e=a.j.Get(A.Q.ServiceName).User;if(null==e)return[];if(""==e.SoftwareVersion||null==e.SoftwareVersion)return[];const[t,n]=e.SoftwareVersion.split(".");if(parseFloat(t)<6||6==parseFloat(t)&&parseFloat(n)<=4)return[];const r=yield this._connection.SendAndWaitForResponseAsync(new q,1e4,!1),s=[];return null==r||(null==r?void 0:r.Status)!=c.nW.OK||null==(null==r?void 0:r.Data)?[]:(null==r||r.Data.forEach((e=>{if(!e.IsAvailable)return;const t=new g.OW;t.DeviceGuid=e.DeviceGuid,t.CurrentVersion=e.CurrentVersion,t.NewVersion=e.NewVersion,s.push(t)})),s)}))}CheckControllerUpdatesAsync(){return C(this,void 0,void 0,(function*(){this._controllerUpdates=[];let e=[];const t=new g.Z,n=yield this.getRuntimeInfoAsync();if(n instanceof d.ZR){const e=new D;return e.UpdateType=g.kD.SoftwareUpdate,e.ResponseResult=n,t.UpdatesNotAvailable.push(e),t}const r=parseInt(n.SoftwareVersion.toString().split(".")[0]),s=parseInt(n.SoftwareVersion.toString().split(".")[1]);try{e=yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Controller)}catch(e){if(!(e instanceof p.Zt))throw e;this._logger.Warning("Cannot get update providers for controller protocols! Avaliable only controller software updates!")}for(let n=0;n<e.length;n++){const r=yield e[n].GetAvailableRadioUpdateAsync();if(null!=r.Type){const s=new D;s.ResponseResult=r,s.UpdateType=g.kD.RadioUpdate;let o="n/a";try{o=(yield this._extensionService.GetProtocolInfoAsync(e[n].ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}s.UpdatedResourceName=new Map([["pl-PL",o],["en-US",o]]),s.CurrentResourceVersion=yield e[n].GetCurrentRadioVersionAsync(),t.UpdatesNotAvailable.push(s)}else{const s=r,o=new k;o.UpdatedResourceName=new Map([["pl-PL",s.UpdatedResourceName],["en-US",s.UpdatedResourceName]]),o.CurrentResourceVersion=s.CurrentResourceVersion,o.NewResourceVersion=s.Update.Version,o.UpdateDescription=new Map([["pl-PL",s.Update.Description]]),o.UpdateType=g.kD.RadioUpdate,o.UpdateIdentifier=S.M0.GenerateUUID(),o.UpdateIsDownloading=!1,o.DownloadProgress=100,o.UpdateCreationTime=null,t.UpdatesAvailable.push(o),this._controllerUpdates.push(Object.assign(Object.assign({},s),{UpdateIdentifier:o.UpdateIdentifier,ProviderName:e[n].GetUpdateProviderName(),UpdateType:g.kD.RadioUpdate}))}}let o=!0;if((r<this._oldUpdateVersion||r===this._oldUpdateVersion&&s<=this._oldUpdateBuild)&&(o=!1),o){const e=yield this._connection.SendAndWaitForResponseAsync(new M,15e3,!1);if(null==e||e.Status!=c.nW.OK&&e.Status!=c.nW.NoData)throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==e?void 0:e.Status}`);if(null!=e.Data){const r=new p.u_;r.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,r.UpdateDescription=(0,S.ku)(e.Data.Update.UpdateDescription),r.UpdatedResourceName=(0,S.ku)(e.Data.Update.UpdateName).get("en-US");const s=new k;s.UpdatedResourceName=(0,S.ku)(e.Data.Update.UpdateName),s.UpdateDescription=(0,S.ku)(e.Data.Update.UpdateDescription),s.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,s.NewResourceVersion=`${e.Data.Update.Version.BaseRuntime}.${e.Data.Update.Version.ContainerSoftwareVersion}`,s.UpdateType=g.kD.SoftwareUpdate,s.UpdateIdentifier=e.Data.Update.Guid,s.UpdateIsDownloading=e.Data.UpdateStep==i.DownloadingInstaller||e.Data.UpdateStep==i.DownloadingUpdate||e.Data.UpdateStep==i.CheckingUpdate,s.DownloadProgress=e.Data.DownloadProgress,s.UpdateCreationTime=e.Data.Update.Creationtime,s.IsDownloadOnly=e.Data.DownloadOnly,t.UpdatesAvailable.push(s),this._controllerUpdates.push(Object.assign(Object.assign({},r),{UpdateIdentifier:s.UpdateIdentifier,ProviderName:T.ServiceName,UpdateType:g.kD.SoftwareUpdate}))}else{const e=yield this._connection.SendAndWaitForResponseAsync(new W,15e3,!1);if(null==e)throw new Error("Cannot check updates! Response is empty.");switch(e.Status){case c.nW.NoData:const r=new D;r.UpdateType=g.kD.SoftwareUpdate,r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.ResponseResult=new d.ZR(f.rQ.DeviceIsUpToDate,"Updates not found, controller is already up-to-date."),t.UpdatesNotAvailable.push(r);break;case c.nW.OK:if(null==e.Data)throw new Error("Cannot check updates! Response data is empty.");const s=new p.u_;s.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,s.UpdateDescription=(0,S.ku)(e.Data.UpdateDescription),s.UpdatedResourceName=(0,S.ku)(e.Data.UpdateName).get("en-US");const o=new k;o.UpdatedResourceName=(0,S.ku)(e.Data.UpdateName),o.UpdateDescription=(0,S.ku)(e.Data.UpdateDescription),o.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,o.UpdateType=g.kD.SoftwareUpdate,o.UpdateIdentifier=e.Data.Guid,o.NewResourceVersion=`${e.Data.Version.BaseRuntime}.${e.Data.Version.ContainerSoftwareVersion}`,o.UpdateIsDownloading=!1,o.DownloadProgress=0,o.UpdateCreationTime=e.Data.Creationtime,t.UpdatesAvailable.push(o),this._controllerUpdates.push(Object.assign(Object.assign({},s),{UpdateIdentifier:o.UpdateIdentifier,ProviderName:T.ServiceName,UpdateType:g.kD.SoftwareUpdate}));break;default:throw new Error(`Cannot check updates! Response status is not OK. Status: ${e.Status}`)}}}else{const e=`https://exalus-updates.tr7.pl/software/${n.UpdateChannel}/${n.RuntimeVersion}/${n.SoftwareVersion}/update.json`;try{const r=yield fetch(e);let s,o=new p.u_;const i=new D;switch(i.UpdateType=g.kD.SoftwareUpdate,i.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.status){case 200:null!=r.body&&(s=yield r.json());break;case 404:i.ResponseResult=new d.ZR(f.rQ.DeviceIsUpToDate,"Updates not found, controller is already up-to-date."),t.UpdatesNotAvailable.push(i);break;default:i.ResponseResult=new d.ZR(f.rQ.CannotGetUpdates,`Response status code does not indicate success. Status: ${r.status}`),t.UpdatesNotAvailable.push(i)}if(null!=s){o.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,o.Update=s;const e=new k;e.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),e.CurrentResourceVersion=o.CurrentResourceVersion,e.NewResourceVersion=o.Update.Version,e.UpdateDescription=new Map([["pl-PL",o.Update.Description]]),e.UpdateType=g.kD.SoftwareUpdate,e.UpdateIdentifier=S.M0.GenerateUUID(),e.DownloadProgress=100,e.UpdateIsDownloading=!1,e.UpdateCreationTime=null,t.UpdatesAvailable.push(e),this._controllerUpdates.push(Object.assign(Object.assign({},o),{UpdateIdentifier:e.UpdateIdentifier,ProviderName:T.ServiceName,UpdateType:g.kD.SoftwareUpdate}))}else if(200==r.status)throw new Error(`Cannot get Update Data from response. Status: ${r.status}`)}catch(e){const n=yield this.getRuntimeInfoAsync();if(n instanceof d.ZR){const e=new D;e.UpdateType=g.kD.SoftwareUpdate,e.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),e.ResponseResult=n,t.UpdatesNotAvailable.push(e)}else{const r=new D;r.UpdateType=g.kD.SoftwareUpdate,r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.ResponseResult=new d.ZR(f.rQ.CannotGetUpdates,`Cannot get available updates! ${e}`),r.CurrentResourceVersion=`${n.RuntimeVersion}.${n.SoftwareVersion}`,t.UpdatesNotAvailable.push(r)}}}return t}))}CheckControllerVersionAsync(){return C(this,void 0,void 0,(function*(){const e=yield this._updateProviders.GetUpdatesProvidersAsync(p.cp.Controller),t=yield this.getRuntimeInfoAsync();if(t instanceof d.ZR)return t;const n=[];let r;r=new g.lb,r.Resource="Controller software",r.Type=g.kD.SoftwareUpdate,r.Version=`${t.RuntimeVersion}.${t.SoftwareVersion}`,n.push(r);for(let t=0;t<e.length;t++){r=new g.lb,r.Version=yield e[t].GetCurrentRadioVersionAsync(),r.Type=g.kD.RadioUpdate;let s="n/a";try{s=(yield this._extensionService.GetProtocolInfoAsync(e[t].ProtocolGuid)).first().Name}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}r.Resource=s,n.push(r)}return n}))}GetControllerUpdateBranchAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot get update branch, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new G,1e4,!1);if(null==r||(null==r?void 0:r.Status)!=c.nW.OK)return new d.ZR(f.rQ.CannotGetUpdatesBranch,`Cannot get update branch, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`);switch(r.Data){case 0:return f.yI.Public;case 1:return f.yI.Beta;case 2:return f.yI.Development;default:return new d.ZR(f.rQ.CannotGetUpdatesBranch,`Cannot get update branch, unknown branch number. Branch number: ${r.Data}`)}}))}SetControllerUpdateBranchAsync(e){return C(this,void 0,void 0,(function*(){const t=yield this.getRuntimeInfoAsync();if(t instanceof d.ZR)return t;const n=parseInt(t.SoftwareVersion.toString().split(".")[0]),r=parseInt(t.SoftwareVersion.toString().split(".")[1]);if(n<this._oldUpdateVersion||n===this._oldUpdateVersion&&r<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot set update branch, feature unsupported in current version. Current version: ${t}`);const s=yield this._connection.SendAndWaitForResponseAsync(new P(e),1e4,!1);return null==s||(null==s?void 0:s.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot set update branch, response is empty or status is not OK. Status: ${null==s?void 0:s.Status}`):c.nW.OK}))}EnableAutomaticControllerUpdateDownloadAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot enable automatic updates download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new B,1e4,!1);return null==r||(null==r?void 0:r.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot enable automatic updates download, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`):c.nW.OK}))}DisableAutomaticControllerUpdateDownloadAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot disable automatic update download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new $,1e4,!1);return null==r||(null==r?void 0:r.Status)!=c.nW.OK?new d.ZR(f.rQ.CannotSetUpdatesBranch,`Cannot disable automatic update download, response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`):c.nW.OK}))}GetControllerUpdatesHistoryAsync(){return C(this,void 0,void 0,(function*(){const e=yield this.getRuntimeInfoAsync();if(e instanceof d.ZR)return e;const t=parseInt(e.SoftwareVersion.toString().split(".")[0]),n=parseInt(e.SoftwareVersion.toString().split(".")[1]);if(t<this._oldUpdateVersion||t===this._oldUpdateVersion&&n<=this._oldUpdateBuild)return new d.ZR(f.rQ.FeatureUnsupportedInCurrentVersion,`Cannot disable automatic update download, feature unsupported in current version. Current version: ${e}`);const r=yield this._connection.SendAndWaitForResponseAsync(new V,1e4,!1);if(null==r)return new d.ZR(f.rQ.CannotGetUpdates,"Cannot get updates history, response is empty.");switch(r.Status){case c.nW.OK:return null!=r.Data?r.Data.map((e=>{const t=new g.eS;return t.UpdatedResourceName=(0,S.ku)(e.UpdateName),t.UpdateDescription=(0,S.ku)(e.UpdateDescription),t.UpdateCreationTime=e.Creationtime,t.UpdateChannel=e.UpdateChannel,t.Version=`${e.Version.BaseRuntime}.${e.Version.ContainerSoftwareVersion}`,t})):new d.ZR(f.rQ.CannotGetUpdates,"Cannot get updates history, response data is empty.");case c.nW.NoData:return[];default:return new d.ZR(f.rQ.CannotGetUpdates,`Cannot get updates history, response status is not OK. Status: ${r.Status}`)}}))}InstallControllerUpdateAsync(e,t,n,r,s){return C(this,void 0,void 0,(function*(){const o=new RegExp("^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$"),i=this._controllerUpdates.length,a=yield this.getRuntimeInfoAsync();if(a instanceof d.ZR)return a;const u=parseInt(a.SoftwareVersion.toString().split(".")[0]),l=parseInt(a.SoftwareVersion.toString().split(".")[1]);if(0==this._controllerUpdates.length)return new d.ZR(f.rQ.CannotGetUpdates,"Cannot find any updates, make sure you check for available updates by calling CheckControllerUpdateAsync().");if("string"!=typeof n||!o.test(n)){const s=[1],o=t=>{t.UpdateNumber=s[0],t.AvailableUpdates=i,e(t)},a=e=>C(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}));let h=this._controllerUpdates.where((e=>e.UpdateType==g.kD.RadioUpdate)).toArray(),p=[];this._appStateService.DisallowHibernation();for(let e=0;e<h.length;e++){const t=yield(yield this._updateProviders.GetUpdatesProviderAsync(h[e].ProviderName)).InstallRadioUpdateAsync(h[e],o,n);yield a(5e3),t==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((t=>t.UpdateIdentifier!=h[e].UpdateIdentifier))),p.push(t),s[0]++}const v=this._controllerUpdates.find((e=>e.UpdateType==g.kD.SoftwareUpdate));if(null!=v)if(u<this._oldUpdateVersion||u===this._oldUpdateVersion&&l<=this._oldUpdateBuild){const e=yield this.UpdateControllerUsingScriptAsync(v.Update,o);e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=v.UpdateIdentifier))),p.push(e),s[0]++}else{const e=yield this.UpdateControllerUsingApiAsync(o,t,r);this._appStateService.AllowHibernation(),e==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),p.push(e),s[0]++}const m=p.where((e=>e instanceof d.ZR)).toArray();if(null!=m&&0!=m.length){let e="";return m.forEach((t=>e+=`${t.Type}, `)),this._appStateService.AllowHibernation(),m.any((e=>e.Type==f.rQ.UpdateDownloadFailed))?new d.ZR(f.rQ.UpdateDownloadFailed,`Update download failed - not all updates were successfully downloaded. Installation error codes: ${e}`):new d.ZR(f.rQ.UpdatesPartiallyInstalled,`Update installation finished - not all updates were successfully installed. Installation error codes: ${e}`)}return this._appStateService.AllowHibernation(),c.nW.OK}{let o;const i=this._controllerUpdates.find((e=>e.UpdateIdentifier==n));if(null==i)return new d.ZR(f.rQ.CannotGetUpdates,`Update with requested guid (${n}) not found.`);switch(this._logger.Debug(`Installing single update type: ${i.Update.UpdateType}, resource: ${i.UpdatedResourceName}, version: ${i.Update.Version}`),this._appStateService.DisallowHibernation(),i.UpdateType){case g.kD.RadioUpdate:return r?new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded set flag downloadOnly to false to install it."):(o=yield(yield this._updateProviders.GetUpdatesProviderAsync(i.ProviderName)).InstallRadioUpdateAsync(i,e,s),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n))),o);case g.kD.SoftwareUpdate:if(u<this._oldUpdateVersion||u===this._oldUpdateVersion&&l<=this._oldUpdateBuild){if(r)return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded set flag downloadOnly to false to install it.");o=yield this.UpdateControllerUsingScriptAsync(i.Update,e),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)))}else{let s=(yield this.CheckControllerUpdatesAsync()).UpdatesAvailable.any((e=>e.IsDownloadOnly));o=yield this.UpdateControllerUsingApiAsync(e,t,!s&&r),this._appStateService.AllowHibernation(),o==c.nW.OK&&(this._controllerUpdates=this._controllerUpdates.filter((e=>e.UpdateIdentifier!=n)))}return o;default:return new d.ZR(f.rQ.CannotProcessUpdate,`Update with type ${i.UpdateType} is not supported by UpdateService.`)}}}))}UpdateControllerUsingScriptAsync(e,t){return C(this,void 0,void 0,(function*(){var n,r,s,o,i,u;switch(e.UpdateType){case p.Dx.Container:case p.Dx.ContainerSoftware:try{return yield null===(n=this._connection)||void 0===n?void 0:n.SendAndHandleResponseAsync(new R(e.DownloadUri),this._updateRequestTimeout,(n=>{const r=new f.jK;switch(r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),n.Status){case c.nW.MultiDataResponseStart:r.Status=f.Y0.PreparingForUpgrade;break;case c.nW.MultiDataResponse:if(null==n.Data)return void this._logger.Warning(T.ServiceName,`Recived update response without data! URI: ${e.DownloadUri}`);switch(r.Percentage=Math.round(n.Data.Progress),n.Data.State){case f.D9.CheckingApplicability:case f.D9.CheckingIntegrity:case f.D9.CheckingPackageIntegrity:r.Status=f.Y0.CheckingPackage;break;case f.D9.CreatingBackup:case f.D9.MigratingData:case f.D9.Removing:r.Status=f.Y0.MovingData;break;case f.D9.Deploying:case f.D9.Installing:r.Status=f.Y0.Upgrading;break;case f.D9.Downloading:r.Status=f.Y0.DownloadingPackage;break;case f.D9.Error:r.Status=f.Y0.Error;break;case f.D9.Installed:r.Status=f.Y0.Upgraded;break;case f.D9.PreparingSystem:case f.D9.ReadyToDownload:r.Status=f.Y0.PreparingForUpgrade;break;case f.D9.UndoingInstallation:r.Status=f.Y0.InstallationStopped;break;case f.D9.Unpackaging:r.Status=f.Y0.MovingData;break;case f.D9.WaitingForUser:r.Status=f.Y0.Upgrading}break;case c.nW.MultiDataResponseStop:r.Status=f.Y0.OK;break;case c.nW.Error:case c.nW.FatalError:r.Status=f.Y0.Error}t(r)}),!1),c.nW.OK}catch(e){return new d.ZR(f.rQ.CannotProcessUpdate,`Cannot process update, error: ${e}`)}case p.Dx.RuntimeFixingScript:var h=10;let m="n/a";try{m=(yield this._extensionService.GetExtensionsInfoAsync()).first((e=>"f4f45dac-beda-441a-8d29-efc6dc977cd1"==e.ExtensionGuid)).ExtensionVersion}catch(e){this._logger.Warning(`Cannot get protocol name! error: ${e}`)}var g=m;const y=yield this.getRuntimeInfoAsync();if(y instanceof d.ZR)return y;var v=parseFloat(y.RuntimeVersion)>=2||parseFloat(g)>=1.2201125;try{h=(yield a.j.Get(l.N7.ServiceName).GetDevicesAsync()).length}catch(e){this._logger.Warning(T.ServiceName,`Cannot get number of devices in system! Error: ${e}. Using default value of 10 devices.`)}if(v){let n,r=new f.jK;r.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),r.Percentage=1,r.Status=f.Y0.PreparingForUpgrade,t(r);let s=2;const o=Date.now(),i=900*h+16e5,a=i/100,u=o+i,l=new Promise(((o,l)=>C(this,void 0,void 0,(function*(){var l;try{const h=()=>{if(this._appStateService.OnReturnedFromSuspension().Unsubscribe(h),Date.now()>u)clearInterval(n),this._logger.Debug("Update already finished!"),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK);else{var e=u-Date.now();e<i?s=95-e/a:(clearInterval(n),n=setInterval((()=>{clearInterval(n),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK)}),e))}};this._appStateService.OnReturnedFromSuspension().Subscribe(h),n=setInterval((()=>{if(s>99)clearInterval(n),r.Percentage=100,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgraded,t(r),o(c.nW.OK);else{var e=s;e<99&&(r.Percentage=Math.round(e),r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Upgrading,t(r))}s++}),a);const g=yield null===(l=this._connection)||void 0===l?void 0:l.SendAndWaitForResponseAsync(new E(e.DownloadUri),this._updateRequestTimeout,!1);g.Status!=c.nW.OK&&(clearInterval(n),r.Percentage=0,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.InstallationError,t(r),this._logger.Debug(T.ServiceName,`Update failed with error. Update response status: ${g.Status}`),o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. Update response status: ${g.Status}`)))}catch(e){this._logger.Debug(T.ServiceName,`Update failed with error. ${e}`),r.Percentage=0,r.PercentageTotal=Math.round(r.Percentage),r.Status=f.Y0.Error,t(r),clearInterval(n),o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. ${e}`))}}))));return yield l}{let n=new f.jK;n.UpdatedResourceName=new Map([["pl-PL","Oprogramowanie kontrolera"],["en-US","Controller software"]]),n.Percentage=1,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);const a=this._connection.GetAuthorizationInfo();if(null==a)return new d.ZR(f.rQ.CannotProcessUpdate,"Cannot process update. Cannot get current controller login credentials!");if((yield null===(r=this._connection)||void 0===r?void 0:r.SendAndWaitForResponseAsync(new b({Email:"support@support",Password:`support@${a.SerialNumber}:${a.PIN}`}),12e3,!1)).Status===c.nW.OK){n.Percentage=1,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);let r=yield null===(s=this._connection)||void 0===s?void 0:s.SendAndWaitForResponseAsync(new N("rm /runtime/tmp/update.sh"),12e3,!1);if(r.Status==c.nW.OK){if(this._logger.Debug("Removed previous script"),n.Percentage=2,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n),r=yield null===(o=this._connection)||void 0===o?void 0:o.SendAndWaitForResponseAsync(new N(`wget ${e.DownloadUri} -O /runtime/tmp/update.sh --no-check-certificate`),this._updateRequestTimeout,!1),r.Status==c.nW.OK){this._logger.Debug("Downloaded update script"),n.Percentage=5,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.PreparingForUpgrade,t(n);try{if(r=yield null===(i=this._connection)||void 0===i?void 0:i.SendAndWaitForResponseAsync(new N("chmod a+x /runtime/tmp/update.sh"),12e3,!1),r.Status==c.nW.OK){this._logger.Debug("Executed update script"),n.Percentage=5,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgrading,t(n);let e,r=0;const s=.95,o=Date.now(),i=900*h+15e5,a=i/95,u=o+i,l=new Promise(((o,l)=>C(this,void 0,void 0,(function*(){var l;try{const d=()=>{if(this._appStateService.OnReturnedFromSuspension().Unsubscribe(d),Date.now()>u)clearInterval(e),this._logger.Debug("Update already finished!"),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK);else{var s=u-Date.now();s<i?r=95-s/a:(clearInterval(e),e=setInterval((()=>{clearInterval(e),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK)}),s))}};this._appStateService.OnReturnedFromSuspension().Subscribe(d),e=setInterval((()=>{if(r>99)clearInterval(e),n.Percentage=100,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgraded,t(n),o(c.nW.OK);else{var i=5+r*s;i<99&&(n.Percentage=Math.round(i),n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.Upgrading,t(n))}r++}),a),null===(l=this._connection)||void 0===l||l.SendAndWaitForResponseAsync(new N("/runtime/tmp/update.sh"),12e3,!1)}catch(e){o(new d.ZR(f.rQ.CannotProcessUpdate,`Update failed with error. ${e}`))}}))));return yield l}return n.Percentage=0,n.PercentageTotal=Math.round(n.Percentage),n.Status=f.Y0.InstallationError,t(n),new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed!")}catch(e){return null===(u=this._connection)||void 0===u||u.SendAndWaitForResponseAsync(new N("/runtime/scripts/restart_all.sh"),12e3,!1),new d.ZR(f.rQ.CannotProcessUpdate,`Execution failed! Error ${e}`)}}return new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed! Cannot clear old update script!")}}return new d.ZR(f.rQ.CannotProcessUpdate,"Execution failed! Cannot loggin using support account!")}default:return new d.ZR(f.rQ.CannotProcessUpdate,`Not supported update type, type: ${e.UpdateType}`)}}))}DownloadControllerUpdateNewApiAsync(e,t,n,r){return C(this,void 0,void 0,(function*(){return new Promise(((t,s)=>C(this,void 0,void 0,(function*(){let s=50;r||(s=100);let o=100/s;yield this._connection.SendAndHandleResponseAsync(new x,this._updateRequestTimeout,(s=>{var a,u,l,h,g,p;const v=new f.II;switch(v.DownloadOnly=r,v.UpdatedResourceName=(0,S.ku)(e.Update.UpdateName),s.Status){case c.nW.MultiDataResponseStart:v.Percentage=0,v.SpeedMbps=0,v.PercentageTotal=0,v.CurrentTask=f.kL.DownloadingInstaller,n(v);break;case c.nW.MultiDataResponse:if(null!=s.Data){switch(v.Percentage=s.Data.StepProgressInPercentage,v.SpeedMbps=s.Data.DownloadSpeedInMbs,v.PercentageTotal=r?Math.round((null===(a=s.Data)||void 0===a?void 0:a.UpdateProgressInPercentage)*o):Math.round(null===(u=s.Data)||void 0===u?void 0:u.UpdateProgressInPercentage),s.Data.UpdateStep){case i.DownloadingInstaller:v.CurrentTask=f.kL.DownloadingInstaller;break;case i.DownloadingUpdate:v.CurrentTask=f.kL.DownloadingUpdate;break;case i.UpdateDownloaded:v.Percentage=100,v.PercentageTotal=r?Math.round((null===(l=s.Data)||void 0===l?void 0:l.UpdateProgressInPercentage)*o):Math.round(null===(h=s.Data)||void 0===h?void 0:h.UpdateProgressInPercentage),v.SpeedMbps=0,v.CurrentTask=f.kL.CheckingUpdate,n(v),v.CurrentTask=f.kL.UpdateDownloadedAndChecked,n(v),t(c.nW.OK);break;default:v.CurrentTask=f.kL.CheckingUpdate}n(v)}break;case c.nW.MultiDataResponseStop:if(null!=s.Data)switch(s.Data.UpdateStep){case i.UpdateDownloaded:v.Percentage=100,v.PercentageTotal=r?Math.round((null===(g=s.Data)||void 0===g?void 0:g.UpdateProgressInPercentage)*o):Math.round(null===(p=s.Data)||void 0===p?void 0:p.UpdateProgressInPercentage),v.SpeedMbps=0,v.CurrentTask=f.kL.CheckingUpdate,n(v),v.CurrentTask=f.kL.UpdateDownloadedAndChecked,n(v),t(c.nW.OK);break;case i.UpdateDownloadFailed:v.Percentage=0,v.PercentageTotal=0,v.SpeedMbps=0,v.CurrentTask=f.kL.Unknown,n(v),t(new d.ZR(f.rQ.UpdateDownloadFailed,"Update download failed!"))}break;case c.nW.Error:case c.nW.FatalError:v.Percentage=0,v.PercentageTotal=0,v.SpeedMbps=0,v.CurrentTask=f.kL.Unknown,n(v),t(new d.ZR(f.rQ.CannotProcessUpdate,"Update download failed!"))}}),!1)}))))}))}InstallUpdateNewApiAsync(e,t,n,r){return C(this,void 0,void 0,(function*(){return new Promise(((n,r)=>C(this,void 0,void 0,(function*(){const r=60*this._updateOfflineStageTime*1e3;let s=0;const o=new f.jK;let u=null;e.DownloadOnly=!1;const l=e=>C(this,void 0,void 0,(function*(){e==v.t.Connected&&(clearInterval(u),o.Status=f.Y0.Upgraded,o.Percentage=100,o.PercentageTotal=100,t(o),clearInterval(u),yield S.YZ.Delay(5e3),n(c.nW.OK),a.j.Get(m.i.ServiceName).OnAppStateChanged().Unsubscribe(l))}));yield this._connection.SendAndHandleResponseAsync(new F,this._updateRequestTimeout,(h=>{var g,p;switch(o.UpdatedResourceName=(0,S.ku)(e.Update.UpdateName),h.Status){case c.nW.MultiDataResponseStart:o.Status=f.Y0.PreparingForUpgrade,o.Percentage=null===(g=h.Data)||void 0===g?void 0:g.StepProgressInPercentage,o.PercentageTotal=null===(p=h.Data)||void 0===p?void 0:p.UpdateProgressInPercentage,t(o);break;case c.nW.MultiDataResponse:null!=h.Data&&(o.Status=f.Y0.Upgrading,o.Percentage=Math.round(h.Data.StepProgressInPercentage),o.PercentageTotal=Math.round(h.Data.UpdateProgressInPercentage),s=h.Data.StepProgressInPercentage,t(o));break;case c.nW.MultiDataResponseStop:if(null!=h.Data)switch(h.Data.UpdateStep){case i.UpdateInstallationFailed:o.Status=f.Y0.InstallationError,o.Percentage=0,o.PercentageTotal=0,t(o),n(new d.ZR(f.rQ.CannotProcessUpdate,"Update installation failed!"));break;case i.OfflineUpdateStep:{o.Percentage=Math.round(h.Data.StepProgressInPercentage),o.PercentageTotal=Math.round(h.Data.UpdateProgressInPercentage);let e=(100-o.PercentageTotal)/100,i=o.PercentageTotal;u=setInterval((()=>{s++,i+=e,i>100&&(i=100),s>=100?(o.Status=f.Y0.Upgraded,o.Percentage=100,o.PercentageTotal=100,t(o),clearInterval(u),n(c.nW.OK)):(o.Status=f.Y0.Upgrading,o.Percentage=Math.round(s),o.PercentageTotal=Math.round(i),t(o))}),r/(100-s)),a.j.Get(m.i.ServiceName).OnAppStateChanged().Subscribe(l)}}break;case c.nW.Error:case c.nW.FatalError:o.Status=f.Y0.Error,o.Percentage=0,o.PercentageTotal=0,t(o),n(new d.ZR(f.rQ.CannotProcessUpdate,"Update installation failed!"))}}),!1)}))))}))}InstallControllerUpdateUsingApiAsync(e,t){return C(this,void 0,void 0,(function*(){const n=yield this._connection.SendAndWaitForResponseAsync(new M,1e4,!1);if((null==n?void 0:n.Status)==c.nW.NoData)return new d.ZR(f.rQ.DeviceIsUpToDate,"No updates available!");if(null==n||(null==n?void 0:n.Status)!=c.nW.OK||null==(null==n?void 0:n.Data))throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==n?void 0:n.Status}`);switch(n.Data.UpdateStep){case i.DownloadingInstaller:case i.DownloadingUpdate:return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded, or download in progress.");case i.InstallingUpdate:case i.PreparingUpdate:return new d.ZR(f.rQ.UpdateAlreadyInstalled,"Update already installed, or installation in progress.");case i.UpdateDownloaded:return n.Data.DownloadOnly=!1,yield this.InstallUpdateNewApiAsync(n.Data,e,t,!1);default:this._logger.Debug(T.ServiceName,`Installing update using new API. Update step: ${n.Data.UpdateStep} downloadOnly: false`),n.Data.DownloadOnly=!1;var r=yield this.DownloadControllerUpdateNewApiAsync(n.Data,e,t,!1);return r!=c.nW.OK?r:yield this.InstallUpdateNewApiAsync(n.Data,e,t,!1)}}))}DownloadControllerUpdateUsingApiAsync(e,t,n){return C(this,void 0,void 0,(function*(){const r=yield this._connection.SendAndWaitForResponseAsync(new M,1e4,!1);if((null==r?void 0:r.Status)==c.nW.NoData)return new d.ZR(f.rQ.DeviceIsUpToDate,"No updates available!");if(null==r||(null==r?void 0:r.Status)!=c.nW.OK||null==(null==r?void 0:r.Data))throw new Error(`Cannot get pending updates! Response is empty or status is not OK. Status: ${null==r?void 0:r.Status}`);switch(r.Data.UpdateStep){case i.DownloadingInstaller:case i.DownloadingUpdate:case i.UpdateDownloaded:return new d.ZR(f.rQ.UpdateAlreadyDownloaded,"Update already downloaded, or download is in progress.");case i.InstallingUpdate:case i.PreparingUpdate:return new d.ZR(f.rQ.UpdateAlreadyInstalled,"Update already installed, or installation is in progress.");default:return yield this.DownloadControllerUpdateNewApiAsync(r.Data,e,t,n)}}))}UpdateControllerUsingApiAsync(e,t,n){return C(this,void 0,void 0,(function*(){return n?yield this.DownloadControllerUpdateUsingApiAsync(e,t,!0):yield this.InstallControllerUpdateUsingApiAsync(e,t)}))}getRuntimeInfoAsync(){return C(this,void 0,void 0,(function*(){try{return yield this._updateProviders.GetSoftwareRuntimeInfoAsync()}catch(e){return e instanceof h.KH&&e.code==h.tg.Timeout?new d.ZR(f.rQ.CannotGetCurrentControllerVersionTimeout,"Cannot get runtime info (current controller version), timeout error - please restart controller to fix issue."):new d.ZR(f.rQ.CannotGetCurrentControllerVersion,`Cannot get runtime info (current controller version), error: ${e}`)}}))}}T.ServiceName="UpdatesService",p.u_;class D{constructor(){this.UpdatedResourceName=new Map,this.CurrentResourceVersion="",this.UpdateType=null,this.ResponseResult=null}}class k{constructor(){this._updateIdentifier="",this._updateResourceName=new Map,this._updateType=null,this._currentResourceVersion="",this._newResourceVersion="",this._updateDescription=new Map,this._updateIsDownloading=!1,this._updateCheckDownloadProgress=0,this._updateCreationTime=null,this._isDownloadOnly=!1}get IsDownloadOnly(){return this._isDownloadOnly}set IsDownloadOnly(e){this._isDownloadOnly=e}get UpdateCreationTime(){return this._updateCreationTime}get DownloadProgress(){return this._updateCheckDownloadProgress}get UpdateDescription(){return this._updateDescription}get UpdateIdentifier(){return this._updateIdentifier}get UpdatedResourceName(){return this._updateResourceName}get UpdateType(){return this._updateType}get CurrentResourceVersion(){return this._currentResourceVersion}get NewResourceVersion(){return this._newResourceVersion}get UpdateIsDownloading(){return this._updateIsDownloading}set UpdateCreationTime(e){this._updateCreationTime=e}set DownloadProgress(e){this._updateCheckDownloadProgress=e}set UpdateDescription(e){this._updateDescription=e}set UpdateIdentifier(e){this._updateIdentifier=e}set UpdatedResourceName(e){this._updateResourceName=e}set UpdateType(e){this._updateType=e}set CurrentResourceVersion(e){this._currentResourceVersion=e}set NewResourceVersion(e){this._newResourceVersion=e}set UpdateIsDownloading(e){this._updateIsDownloading=e}}class I{constructor(){this._updatedResourceName="",this._updateResourceGuid="",this._protocol="",this._protocolGuid="",this._currentResourceVersion="",this._newResourceVersion="",this._isUpdateSafe=!0,this._updateDescription=new Map}get UpdateDescription(){return this._updateDescription}set UpdateDescription(e){this._updateDescription=e}get UpdatedResourceName(){return this._updatedResourceName}get UpdateResourceGuid(){return this._updateResourceGuid}get Protocol(){return this._protocol}get ProtocolGuid(){return this._protocolGuid}get CurrentResourceVersion(){return this._currentResourceVersion}get NewResourceVersion(){return this._newResourceVersion}get IsUpdateSafe(){return this._isUpdateSafe}set UpdatedResourceName(e){this._updatedResourceName=e}set UpdateResourceGuid(e){this._updateResourceGuid=e}set Protocol(e){this._protocol=e}set ProtocolGuid(e){this._protocolGuid=e}set CurrentResourceVersion(e){this._currentResourceVersion=e}set NewResourceVersion(e){this._newResourceVersion=e}set IsUpdateSafe(e){this._isUpdateSafe=e}}class R extends c.CP{constructor(e){super(),this.Resource="/updates/update/from/uri",this.Method=c.IT.Post,this.Data=e}}!function(e){e[e.Windows=0]="Windows",e[e.Linux=1]="Linux",e[e.Unix=2]="Unix",e[e.OSX=3]="OSX",e[e.Android=4]="Android",e[e.iOS=5]="iOS",e[e.WindowsMobile=6]="WindowsMobile"}(r||(r={})),function(e){e[e.Any=0]="Any",e[e.MIPS=1]="MIPS",e[e.ARM32=2]="ARM32",e[e.ARM64=3]="ARM64",e[e.IntelX86=4]="IntelX86",e[e.IntelX64=5]="IntelX64"}(s||(s={})),function(e){e[e.Unknown=0]="Unknown",e[e.Environment=1]="Environment",e[e.OperatingSystem=2]="OperatingSystem",e[e.Application=3]="Application",e[e.Extension=4]="Extension",e[e.HardwareFirmware=5]="HardwareFirmware",e[e.Script=6]="Script",e[e.Command=7]="Command"}(o||(o={})),function(e){e[e.InstallerFileSignCheckFailed=-5]="InstallerFileSignCheckFailed",e[e.UpdateFileSignCheckFailed=-4]="UpdateFileSignCheckFailed",e[e.UpdateInstallationFailed=-3]="UpdateInstallationFailed",e[e.UpdateDownloadFailed=-2]="UpdateDownloadFailed",e[e.UpdateFileCheckFailed=-1]="UpdateFileCheckFailed",e[e.Unknown=0]="Unknown",e[e.DownloadingUpdate=1]="DownloadingUpdate",e[e.CheckingUpdate=2]="CheckingUpdate",e[e.PreparingUpdate=3]="PreparingUpdate",e[e.InstallingUpdate=4]="InstallingUpdate",e[e.DownloadingInstaller=5]="DownloadingInstaller",e[e.UpdateDownloaded=6]="UpdateDownloaded",e[e.OfflineUpdateStep=7]="OfflineUpdateStep"}(i||(i={}));class E extends c.CP{constructor(e){super(),this.Resource="/updates/install/from/url",this.Method=c.IT.Put,this.Data=e}}class b extends c.CP{constructor(e){super(),this.Resource="/users/user/login",this.Method=c.IT.Put,this.Data=e}}class N extends c.CP{constructor(e){super(),this.Resource="/controller/runtime/execute",this.Method=c.IT.Post,this.Data=e}}class G extends c.CP{constructor(){super(),this.Resource="/updates/branch",this.Method=c.IT.Get}}class P extends c.CP{constructor(e){super(),this.Resource="/updates/branch",this.Method=c.IT.Put,this.Data=e}}class O extends c.CP{constructor(){super(),this.Resource="/updates/failed/cancel",this.Method=c.IT.Put}}class U extends c.CP{constructor(){super(),this.Resource="/updates/pending/progress",this.Method=c.IT.Get}}class M extends c.CP{constructor(){super(),this.Resource="/updates/pending",this.Method=c.IT.Get}}class W extends c.CP{constructor(){super(),this.Resource="/updates/check",this.Method=c.IT.Get}}class x extends c.CP{constructor(){super(),this.Resource="/updates/download",this.Method=c.IT.Post}}class F extends c.CP{constructor(){super(),this.Resource="/updates/install",this.Method=c.IT.Post}}class L extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/status",this.Method=c.IT.Get}}class B extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/enable",this.Method=c.IT.Put}}class $ extends c.CP{constructor(){super(),this.Resource="/updates/download/automatic/disable",this.Method=c.IT.Put}}class V extends c.CP{constructor(){super(),this.Resource="/updates/history",this.Method=c.IT.Get}}class q extends c.CP{constructor(){super(),this.Resource="/updates/devices/availability",this.Method=c.IT.Get}}},9315:(e,t,n)=>{n.d(t,{z:()=>r});class r{constructor(e){if(this.initialCount=e,this._running=0,this._waiting=[],this.Take=()=>{if(this._waiting.length>0&&this._running<this.initialCount){this._running++;const e=this._waiting.shift();null==e||e.Resolve({Release:this.Release})}},this.IsLocked=()=>this._running>0,this.AcquireAsync=()=>this._running<this.initialCount?(this._running++,Promise.resolve({Release:this.Release})):new Promise(((e,t)=>{this._waiting.push({Resolve:e,Reject:t})})),this.Release=()=>{if(0===this._running)throw new Error("Release called more times than AcquireAsync");this._running--,this.Take()},this.Purge=()=>{this._waiting.forEach((e=>{e.Reject(new Error("The semaphore was purged and as a result this task has been cancelled"))})),this._running=0,this._waiting=[]},e<1)throw new Error(`The semaphore was created with a max value of ${e} but the max value cannot be less than 1`)}}},9595:(e,t,n)=>{var r,s,o;n.d(t,{G:()=>de}),function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(r||(r={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(s||(s={})),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"}(o||(o={}));class i{static write(e){return`${e}${i.RecordSeparator}`}static parse(e){if(e[e.length-1]!==i.RecordSeparator)throw new Error("Message is incomplete.");const t=e.split(i.RecordSeparator);return t.pop(),t}}i.RecordSeparatorCode=30,i.RecordSeparator=String.fromCharCode(i.RecordSeparatorCode);class a{constructor(){}log(e,t){}}a.instance=new a;class c{static isRequired(e,t){if(null==e)throw new Error(`The '${t}' argument is required.`)}static isNotEmpty(e,t){if(!e||e.match(/^\s*$/))throw new Error(`The '${t}' argument should not be empty.`)}static isIn(e,t,n){if(!(e in t))throw new Error(`Unknown ${n} value: ${e}.`)}}class u{static get isBrowser(){return!u.isNode&&"object"==typeof window&&"object"==typeof window.document}static get isWebWorker(){return!u.isNode&&"object"==typeof self&&"importScripts"in self}static get isReactNative(){return!u.isNode&&"object"==typeof window&&void 0===window.document}static get isNode(){return"undefined"!=typeof process&&process.release&&"node"===process.release.name}}function l(e,t){let n="";return d(e)?(n=`Binary data of length ${e.byteLength}`,t&&(n+=`. Content: '${function(e){const t=new Uint8Array(e);let n="";return t.forEach((e=>{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function d(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function h(e,t,n,r,s,i){const a={},[c,u]=f();a[c]=u,e.log(o.Trace,`(${t} transport) sending data. ${l(s,i.logMessageContent)}.`);const h=d(s)?"arraybuffer":"text",g=await n.post(r,{content:s,headers:{...a,...i.headers},responseType:h,timeout:i.timeout,withCredentials:i.withCredentials});e.log(o.Trace,`(${t} transport) request complete. Response status: ${g.statusCode}.`)}class g{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 p{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${o[e]}: ${t}`;switch(e){case o.Critical:case o.Error:this.out.error(n);break;case o.Warning:this.out.warn(n);break;case o.Information:this.out.info(n);break;default:this.out.log(n)}}}}function f(){let e="X-SignalR-User-Agent";return u.isNode&&(e="User-Agent"),[e,v("8.0.7",m(),u.isNode?"NodeJS":"Browser",y())]}function v(e,t,n,r){let s="Microsoft SignalR/";const o=e.split(".");return s+=`${o[0]}.${o[1]}`,s+=` (${e}; `,s+=t&&""!==t?`${t}; `:"Unknown OS; ",s+=`${n}`,s+=r?`; ${r}`:"; Unknown Runtime Version",s+=")",s}function m(){if(!u.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function y(){if(u.isNode)return process.versions.node}function w(e){return e.stack?e.stack:e.message?e.message:`${e}`}class S{writeHandshakeRequest(e){return i.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(d(e)){const r=new Uint8Array(e),s=r.indexOf(i.RecordSeparatorCode);if(-1===s)throw new Error("Message is incomplete.");const o=s+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,o))),n=r.byteLength>o?r.slice(o).buffer:null}else{const r=e,s=r.indexOf(i.RecordSeparator);if(-1===s)throw new Error("Message is incomplete.");const o=s+1;t=r.substring(0,o),n=r.length>o?r.substring(o):null}const r=i.parse(t),s=JSON.parse(r[0]);if(s.type)throw new Error("Expected a handshake response from the server.");return[n,s]}}var A,_,C=n(1966);!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"}(A||(A={}));class T{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 g(this,e)}}class D{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=()=>{};d(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 k(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;n<this._messages.length;n++){const r=this._messages[n];if(r._id<=e.sequenceId)t=n,d(r._message)?this._bufferedByteCount-=r._message.byteLength:this._bufferedByteCount-=r._message.length,r._resolver();else{if(!(this._bufferedByteCount<this._bufferSize))break;r._resolver()}}-1!==t&&(this._messages=this._messages.slice(t+1))}_shouldProcessMessage(e){if(this._waitForSequenceMessage)return e.type===A.Sequence&&(this._waitForSequenceMessage=!1,!0);if(!this._isInvocationMessage(e))return!0;const t=this._nextReceivingSequenceId;return this._nextReceivingSequenceId++,t<=this._latestReceivedSequenceId?(t===this._latestReceivedSequenceId&&this._ackTimer(),!1):(this._latestReceivedSequenceId=t,this._ackTimer(),!0)}_resetSequence(e){e.sequenceId>this._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:A.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 A.Invocation:case A.StreamItem:case A.Completion:case A.StreamInvocation:case A.CancelInvocation:return!0;case A.Close:case A.Sequence:case A.Ping:case A.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:A.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class k{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"}(_||(_={}));class I{static create(e,t,n,r,s,o,i){return new I(e,t,n,r,s,o,i)}constructor(e,t,n,r,s,i,a){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(o.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")},c.isRequired(e,"connection"),c.isRequired(t,"logger"),c.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=s?s:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=a?a:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new S,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=_.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:A.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!==_.Disconnected&&this._connectionState!==_.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!==_.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=_.Connecting,this._logger.log(o.Debug,"Starting HubConnection.");try{await this._startInternal(),u.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=_.Connected,this._connectionStarted=!0,this._logger.log(o.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=_.Disconnected,this._logger.log(o.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(o.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(o.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 D(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(o.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===_.Disconnected)return this._logger.log(o.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===_.Disconnecting)return this._logger.log(o.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=_.Disconnecting,this._logger.log(o.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(o.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===_.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new C.lc("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),s=this._createStreamInvocation(e,t,r);let o;const i=new T;return i.cancelCallback=()=>{const e=this._createCancelInvocation(s.invocationId);return delete this._callbacks[s.invocationId],o.then((()=>this._sendWithProtocol(e)))},this._callbacks[s.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===A.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},o=this._sendWithProtocol(s).catch((e=>{i.error(e),delete this._callbacks[s.invocationId]})),this._launchStreams(n,o),i}_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),s=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,s),s}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),s=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[s.invocationId]=(n,r)=>{r?t(r):n&&(n.type===A.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(s).catch((e=>{t(e),delete this._callbacks[s.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 A.Invocation:this._invokeClientMethod(e).catch((e=>{this._logger.log(o.Error,`Invoke client method threw error: ${w(e)}`)}));break;case A.StreamItem:case A.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===A.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(o.Error,`Stream callback threw error: ${w(e)}`)}}break}case A.Ping:break;case A.Close:{this._logger.log(o.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 A.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case A.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(o.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(o.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(o.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(o.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),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===_.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),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(o.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(o.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(),s=!!e.invocationId;let i,a,c;for(const n of r)try{const r=i;i=await n.apply(this,e.arguments),s&&i&&r&&(this._logger.log(o.Error,`Multiple results provided for '${t}'. Sending error to server.`),c=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),a=void 0}catch(e){a=e,this._logger.log(o.Error,`A callback for the method '${t}' threw error '${e}'.`)}c?await this._sendWithProtocol(c):s?(a?c=this._createCompletionMessage(e.invocationId,`${a}`,null):void 0!==i?c=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(o.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),c=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(c)):i&&this._logger.log(o.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(o.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new C.lc("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===_.Disconnecting?this._completeClose(e):this._connectionState===_.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===_.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=_.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),u.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(o.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."),s=this._getNextRetryDelay(n++,0,r);if(null===s)return this._logger.log(o.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=_.Reconnecting,e?this._logger.log(o.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(o.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(o.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==_.Reconnecting)return void this._logger.log(o.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==s;){if(this._logger.log(o.Information,`Reconnect attempt number ${n} will start in ${s} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,s)})),this._reconnectDelayHandle=void 0,this._connectionState!==_.Reconnecting)return void this._logger.log(o.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=_.Connected,this._logger.log(o.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(o.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(o.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==_.Reconnecting)return this._logger.log(o.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===_.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),s=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(o.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(o.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(o.Error,`Stream 'error' callback called with '${e}' threw error: ${w(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?{arguments:t,streamIds:r,target:e,type:A.Invocation}:{arguments:t,target:e,type:A.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:A.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:A.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;r<e.length;r++){const s=e[r];if(this._isObservable(s)){const o=this._invocationId;this._invocationId++,t[o]=s,n.push(o.toString()),e.splice(r,1)}}return[t,n]}_isObservable(e){return e&&e.subscribe&&"function"==typeof e.subscribe}_createStreamInvocation(e,t,n){const r=this._invocationId;return this._invocationId++,0!==n.length?{arguments:t,invocationId:r.toString(),streamIds:n,target:e,type:A.StreamInvocation}:{arguments:t,invocationId:r.toString(),target:e,type:A.StreamInvocation}}_createCancelInvocation(e){return{invocationId:e,type:A.CancelInvocation}}_createStreamItemMessage(e,t){return{invocationId:e,item:t,type:A.StreamItem}}_createCompletionMessage(e,t,n){return t?{error:t,invocationId:e,type:A.Completion}:{invocationId:e,result:n,type:A.Completion}}_createCloseMessage(){return{type:A.Close}}}const R=[0,2e3,1e4,3e4,null];class E{constructor(e){this._retryDelays=void 0!==e?[...e,null]:R}nextRetryDelayInMilliseconds(e){return this._retryDelays[e.previousRetryCount]}}class b{}b.Authorization="Authorization",b.Cookie="Cookie";class N{constructor(e,t,n){this.statusCode=e,this.statusText=t,this.content=n}}class G{get(e,t){return this.send({...t,method:"GET",url:e})}post(e,t){return this.send({...t,method:"POST",url:e})}delete(e,t){return this.send({...t,method:"DELETE",url:e})}getCookieString(e){return""}}class P extends G{constructor(e,t){super(),this._innerClient=e,this._accessTokenFactory=t}async send(e){let t=!0;this._accessTokenFactory&&(!this._accessToken||e.url&&e.url.indexOf("/negotiate?")>0)&&(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[b.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[b.Authorization]&&delete e.headers[b.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class O extends G{constructor(e){if(super(),this._logger=e,"undefined"==typeof fetch||u.isNode){const e=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(void 0!==n.g)return n.g;throw new Error("could not find global")}());if("undefined"==typeof AbortController){const e=require;this._abortControllerType=e("abort-controller")}else this._abortControllerType=AbortController}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new C.lc;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 C.lc});let r,s=null;if(e.timeout){const r=e.timeout;s=setTimeout((()=>{t.abort(),this._logger.log(o.Warning,"Timeout from HTTP request."),n=new C.MU}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},d(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(o.Warning,`Error from HTTP request. ${e}.`),e}finally{s&&clearTimeout(s),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await U(r,"text");throw new C.j$(e||r.statusText,r.status)}const i=U(r,e.responseType),a=await i;return new N(r.status,r.statusText,a)}getCookieString(e){let t="";return u.isNode&&this._jar&&this._jar.getCookies(e,((e,n)=>t=n.join("; "))),t}}function U(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 M extends G{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new C.lc):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&&(d(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const s=e.headers;s&&Object.keys(s).forEach((e=>{r.setRequestHeader(e,s[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new C.lc)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new N(r.status,r.statusText,r.response||r.responseText)):n(new C.j$(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(o.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new C.j$(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(o.Warning,"Timeout from HTTP request."),n(new C.MU)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class W extends G{constructor(e){if(super(),"undefined"!=typeof fetch||u.isNode)this._httpClient=new O(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new M(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new C.lc):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 x{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 F{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new x,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(c.isRequired(e,"url"),c.isRequired(t,"transferFormat"),c.isIn(t,s,"transferFormat"),this._url=e,this._logger.log(o.Trace,"(LongPolling transport) Connecting."),t===s.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]=f(),i={[n]:r,...this._options.headers},a={abortSignal:this._pollAbort.signal,headers:i,timeout:1e5,withCredentials:this._options.withCredentials};t===s.Binary&&(a.responseType="arraybuffer");const u=`${e}&_=${Date.now()}`;this._logger.log(o.Trace,`(LongPolling transport) polling: ${u}.`);const l=await this._httpClient.get(u,a);200!==l.statusCode?(this._logger.log(o.Error,`(LongPolling transport) Unexpected response code: ${l.statusCode}.`),this._closeError=new C.j$(l.statusText||"",l.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,a)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(o.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(o.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(o.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new C.j$(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(o.Trace,`(LongPolling transport) data received. ${l(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(o.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof C.MU?this._logger.log(o.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(o.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(o.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?h(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(o.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(o.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=f();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let s;try{await this._httpClient.delete(this._url,r)}catch(e){s=e}s?s instanceof C.j$&&(404===s.statusCode?this._logger.log(o.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(o.Trace,`(LongPolling transport) Error sending a DELETE request: ${s}`)):this._logger.log(o.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(o.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(o.Trace,e),this.onclose(this._closeError)}}}class L{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 c.isRequired(e,"url"),c.isRequired(t,"transferFormat"),c.isIn(t,s,"transferFormat"),this._logger.log(o.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let i,a=!1;if(t===s.Text){if(u.isBrowser||u.isWebWorker)i=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=f();n[r]=s,i=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{i.onmessage=e=>{if(this.onreceive)try{this._logger.log(o.Trace,`(SSE transport) data received. ${l(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onerror=e=>{a?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."))},i.onopen=()=>{this._logger.log(o.Information,`SSE connected to ${this._url}`),this._eventSource=i,a=!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?h(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 B{constructor(e,t,n,r,s,o){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=s,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=o}async connect(e,t){let n;return c.isRequired(e,"url"),c.isRequired(t,"transferFormat"),c.isIn(t,s,"transferFormat"),this._logger.log(o.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,i)=>{let a;e=e.replace(/^http/,"ws");const c=this._httpClient.getCookieString(e);let d=!1;if(u.isNode||u.isReactNative){const t={},[r,s]=f();t[r]=s,n&&(t[b.Authorization]=`Bearer ${n}`),c&&(t[b.Cookie]=c),a=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);a||(a=new this._webSocketConstructor(e)),t===s.Binary&&(a.binaryType="arraybuffer"),a.onopen=t=>{this._logger.log(o.Information,`WebSocket connected to ${e}.`),this._webSocket=a,d=!0,r()},a.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(o.Information,`(WebSockets transport) ${t}.`)},a.onmessage=e=>{if(this._logger.log(o.Trace,`(WebSockets transport) data received. ${l(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},a.onclose=e=>{if(d)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.",i(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(o.Trace,`(WebSockets transport) sending data. ${l(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(o.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 ${constructor(e,t={}){var n;if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,c.isRequired(e,"url"),this._logger=void 0===(n=t.logger)?new p(o.Information):null===n?a.instance:void 0!==n.log?n:new p(n),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;let r=null,s=null;if(u.isNode){const e=require;r=e("ws"),s=e("eventsource")}u.isNode||"undefined"==typeof WebSocket||t.WebSocket?u.isNode&&!t.WebSocket&&r&&(t.WebSocket=r):t.WebSocket=WebSocket,u.isNode||"undefined"==typeof EventSource||t.EventSource?u.isNode&&!t.EventSource&&void 0!==s&&(t.EventSource=s):t.EventSource=EventSource,this._httpClient=new P(t.httpClient||new W(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||s.Binary,c.isIn(e,s,"transferFormat"),this._logger.log(o.Debug,`Starting connection with transfer format '${s[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(o.Error,e),await this._stopPromise,Promise.reject(new C.lc(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(o.Error,e),Promise.reject(new C.lc(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 V(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(o.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(o.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(o.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(o.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!==r.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(r.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 C.lc("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 F&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(o.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(o.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]=f();t[n]=r;const s=this._resolveNegotiateUrl(e);this._logger.log(o.Debug,`Sending negotiation request: ${s}.`);try{const e=await this._httpClient.post(s,{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 C.YW("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 C.j$&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(o.Error,t),Promise.reject(new C.YW(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,s){let i=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(o.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(i,s),void(this.connectionId=n.connectionId);const a=[],c=n.availableTransports||[];let u=n;for(const n of c){const c=this._resolveTransportOrError(n,t,s,!0===(null==u?void 0:u.useStatefulReconnect));if(c instanceof Error)a.push(`${n.transport} failed:`),a.push(c);else if(this._isITransport(c)){if(this.transport=c,!u){try{u=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}i=this._createConnectUrl(e,u.connectionToken)}try{return await this._startTransport(i,s),void(this.connectionId=u.connectionId)}catch(e){if(this._logger.log(o.Error,`Failed to start the transport '${n.transport}': ${e}`),u=void 0,a.push(new C.az(`${n.transport} failed: ${e}`,r[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(o.Debug,e),Promise.reject(new C.lc(e))}}}}return a.length>0?Promise.reject(new C.tJ(`Unable to connect to the server with any of the available transports. ${a.join(" ")}`,a)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case r.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new B(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case r.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new L(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case r.LongPolling:return new F(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,i){const a=r[e.transport];if(null==a)return this._logger.log(o.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,a))return this._logger.log(o.Debug,`Skipping transport '${r[a]}' because it was disabled by the client.`),new C.Y3(`'${r[a]}' is disabled by the client.`,a);if(!(e.transferFormats.map((e=>s[e])).indexOf(n)>=0))return this._logger.log(o.Debug,`Skipping transport '${r[a]}' because it does not support the requested transfer format '${s[n]}'.`),new Error(`'${r[a]}' does not support ${s[n]}.`);if(a===r.WebSockets&&!this._options.WebSocket||a===r.ServerSentEvents&&!this._options.EventSource)return this._logger.log(o.Debug,`Skipping transport '${r[a]}' because it is not supported in your environment.'`),new C.zN(`'${r[a]}' is not supported in your environment.`,a);this._logger.log(o.Debug,`Selecting transport '${r[a]}'.`);try{return this.features.reconnect=a===r.WebSockets?i:void 0,this._constructTransport(a)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(o.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(o.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(o.Error,`Connection disconnected with error '${e}'.`):this._logger.log(o.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(o.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(o.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(o.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(!u.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(o.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 V{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new q,this._transportResult=new q,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new q),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 q;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):V._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 q{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class j{constructor(){this.name="json",this.version=2,this.transferFormat=s.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=a.instance);const n=i.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 A.Invocation:this._isInvocationMessage(n);break;case A.StreamItem:this._isStreamItemMessage(n);break;case A.Completion:this._isCompletionMessage(n);break;case A.Ping:case A.Close:break;case A.Ack:this._isAckMessage(n);break;case A.Sequence:this._isSequenceMessage(n);break;default:t.log(o.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return i.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 H={trace:o.Trace,debug:o.Debug,info:o.Information,information:o.Information,warn:o.Warning,warning:o.Warning,error:o.Error,critical:o.Critical,none:o.None};class Z{configureLogging(e){if(c.isRequired(e,"logging"),void 0!==e.log)this.logger=e;else if("string"==typeof e){const t=function(e){const t=H[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new p(t)}else this.logger=new p(e);return this}withUrl(e,t){return c.isRequired(e,"url"),c.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return c.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 E(e):this.reconnectPolicy=e:this.reconnectPolicy=new E,this}withServerTimeout(e){return c.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return c.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 $(this.url,e);return I.create(t,this.logger||a.instance,this.protocol||new j,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Q=n(4756),K=n(8070),z=n(5973),Y=n(5443),J=n(4907),X=n(8517),ee=n(3386),te=n(4506),ne=n(5329),re=n(3648),se=n(161),oe=n(6282),ie=n(38),ae=function(e,t,n,r){return new(n||(n=Promise))((function(s,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,a)}c((r=r.apply(e,t||[])).next())}))};class ce{nextRetryDelayInMilliseconds(){return 1e3}}const ue=[r.WebSockets,r.ServerSentEvents,r.LongPolling];class le{constructor(){this._log=Y.j.Get(J.g.ServiceName)}log(e,t){if(!(e<de.SignalRLogLevel))switch(t=`[SignalR] ${t}`,e){case o.Critical:case o.Error:this._log.Error(t);break;case o.Warning:this._log.Warning(t);break;case o.Information:this._log.Info(t);break;default:this._log.Debug(t)}}}class de{constructor(){this._connectTask=null,this._authorizeTask=null,this._pingTimerId=null,this._consecutivePingFailures=0,this._disconnectedOnPurpose=!1,this._address="packets-broker1.tr7.pl",this._serversBrokerAddress="https://servers-broker.tr7.pl",this._serversBrokerAddressList=["https://servers-broker.tr7.pl","https://broker.tr7.pl","https://dev-broker.tr7.pl"],this._allBrokersChecked=!1,this._packetsBrokerServers=["packets-broker1.tr7.pl","packets-broker2.tr7.pl"],this._isAuthorized=!1,this._lastReceivedPacket=Date.now(),this._everConnected=!1,this._pendingRequests=new Map,this._log=Y.j.Get(J.g.ServiceName),this._appState=Y.j.Get(ie.i.ServiceName),this._controllerConfiguration=null,this._cache=null,this._session=null,this._dataReceivedEvent=new z.r,this._pongReceivedEvent=new X.J,this._authorizationReceivedEvent=new z.r,this._registrationReceivedEvent=new z.r,this._streamStartedEvent=new z.r,this._connectionStateChangedEvent=new z.r,this._errorOccuredEvent=new z.r,this._tryReconnect=()=>{this._connectTask||navigator.onLine&&this.validateConnectionToController().then((e=>{e||(this._log.Debug(de.ServiceName,"Connection lost → reconnecting..."),this.serialisedConnect())}))},this._onVisibility=()=>{this._connectTask||"visible"===document.visibilityState&&(this._log.Debug(de.ServiceName,"Page visible → connection check"),this.validateConnectionToController().then((e=>{e||(this._log.Debug(de.ServiceName,"Connection lost → reconnecting..."),this.serialisedConnect())})))},this._onHidden=()=>{},this._onVisible=()=>{this._connectTask||this.validateConnectionToController().then((e=>{e||(this._log.Debug(de.ServiceName,"Connection lost → reconnecting..."),this.serialisedConnect())}))},this._appState.OnAppStateChanged().Subscribe((e=>ae(this,void 0,void 0,(function*(){var t;switch(this._log.Debug(de.ServiceName,`App state changed: ${e}`),e){case oe.t.ExitedLowPowerMode:case oe.t.ReturnedFromSuspension:this._log.Debug(de.ServiceName,`Handling app state change: ${e}`),(yield this.RestoreConnectionAsync())&&(null===(t=this._session)||void 0===t||t.RestoreSessionAsync())}}))))}GetServiceName(){return de.ServiceName}GetAuthorizationInfo(){return this._serialId&&this._PIN?new K.e5(this._serialId,this._PIN):null}GetControllerSerialNumber(){return this._serialId}GetControllerPin(){return this._PIN}SetServersBrokerAddress(e){this._serversBrokerAddress=e}SetDefaultPacketsBrokerAddress(e){this._address=e}EnablePacketsLogging(){window.packets=!0}DisablePacketsLogging(){window.packets=!1}SubscribeTo(e,t){const n=n=>{n.Resource===e&&t(n)};return this._dataReceivedEvent.Subscribe(n),()=>this._dataReceivedEvent.Unsubscribe(n)}reauthorizeIfPossible(){return ae(this,void 0,void 0,(function*(){if(!this._serialId||!this._PIN)return this._isAuthorized=!1,!1;const e=yield this.AuthorizeAsync(new K.e5(this._serialId,this._PIN));return this._isAuthorized=e,e}))}GetServerAddressAsync(){return ae(this,void 0,void 0,(function*(){if(!this._serialId)return this._log.Warning(de.ServiceName,"GetServerAddressAsync() – serialId not set"),null;const e=`${this._serversBrokerAddress}/api/connections/broker/whichserver/${this._serialId}`;try{const t=yield fetch(e);switch(t.status){case 200:{const e=(yield t.text()).trim();return e?(this._log.Debug(de.ServiceName,`Broker address resolved: ${e}`),e):(this._log.Warning(de.ServiceName,"Broker returned empty address"),null)}case 204:return this._allBrokersChecked?(this._log.Error(de.ServiceName,"All servers-brokers checked, controller not found – likely offline"),null):(this._log.Warning(de.ServiceName,`Servers-broker ${this._serversBrokerAddress} returned 204 (no content) – controller not found on this server`),yield this.rotateServersBroker(),this.GetServerAddressAsync());default:return this._log.Warning(de.ServiceName,`GetServerAddressAsync() – HTTP ${t.status}`),null}}catch(e){return this._log.Error(de.ServiceName,String(e)),null}}))}rotateServersBroker(){return ae(this,void 0,void 0,(function*(){const e=this._serversBrokerAddressList.indexOf(this._serversBrokerAddress),t=e+1<this._serversBrokerAddressList.length?e+1:0;this._serversBrokerAddress=this._serversBrokerAddressList[t],this._allBrokersChecked=0===t,this._log.Info(de.ServiceName,`Switching servers-broker to: ${this._serversBrokerAddress}`)}))}ConnectAsync(e){return ae(this,void 0,void 0,(function*(){return this._address=e,this.serialisedConnect()}))}ConnectAndAuthorizeAsync(e){return ae(this,void 0,void 0,(function*(){this._serialId=e.serialNumber,this._PIN=e.pin,Y.j.WorksInContextOf=this._serialId,this._allBrokersChecked=!1,this._serversBrokerAddress=this._serversBrokerAddressList[0];const t=yield this.GetServerAddressAsync();if(t&&(this.SetDefaultPacketsBrokerAddress(t),(yield this.serialisedConnect())===K.IX.Connected&&(yield this.AuthorizeAsync(e))))return K.IX.Connected;for(const t of this._packetsBrokerServers)if(this._log.Info(de.ServiceName,`Fallback broker: ${t}`),this.SetDefaultPacketsBrokerAddress(t),(yield this.serialisedConnect())===K.IX.Connected&&(yield this.AuthorizeAsync(e)))return this._disconnectedOnPurpose=!1,K.IX.Connected;return K.IX.FailedToConnect}))}AuthorizeAsync(e){return ae(this,void 0,void 0,(function*(){return this._authorizeTask||(this._authorizeTask=new Promise((t=>ae(this,void 0,void 0,(function*(){var n;const r=window.setTimeout((()=>{this._authorizationReceivedEvent.Unsubscribe(s),this._isAuthorized=!1,this._log.Debug(de.ServiceName,`AuthorizeAsync timed out for id ${r}`),t(!1)}),2e3);this._log.Debug(de.ServiceName,`AuthorizeAsync - created timeoutId ${r}`);const s=e=>{window.clearTimeout(r),this._authorizationReceivedEvent.Unsubscribe(s),this._log.Debug(de.ServiceName,`Authorization → ${e}`),this._isAuthorized=e,e&&this._connectionStateChangedEvent.Invoke(K.KN.ConnectedAndAuthorized),this._log.Debug(de.ServiceName,`AuthorizeAsync isAuthorized: ${e} cleared timeoutId ${r}`),t(e)};this._authorizationReceivedEvent.Subscribe(s),this._log.Debug(de.ServiceName,`Authorizing to ${e.SerialNumber}... for timoeoutId ${r}`),yield null===(n=this._connection)||void 0===n?void 0:n.send("AuthorizeTo",e.SerialNumber,e.PIN)})))).finally((()=>{this._authorizeTask=null}))),this._authorizeTask}))}IsConnected(){var e;return(null===(e=this._connection)||void 0===e?void 0:e.state)===_.Connected}DisconnectAsync(){return ae(this,void 0,void 0,(function*(){var e;this._disconnectedOnPurpose=!0,this._log.Debug(de.ServiceName,"Disconnecting..."),yield null===(e=this._connection)||void 0===e?void 0:e.stop(),this.cleanup()}))}SendAsync(e){return ae(this,arguments,void 0,(function*(e,t=!1){var n,r;if(!this.IsConnected())throw new Error("Not connected");const s=()=>ae(this,void 0,void 0,(function*(){yield this._connection.invoke("SendTo",this._serialId,e)})),o=!0===window.packets;(o||t)&&this._log.Debug(de.ServiceName,`⇢ ${e.Resource} ${e.Method} ${e.TransactionId}`+(o?`\n${JSON.stringify(e,null,2)}`:""));try{return yield s(),!0}catch(e){if(String(null!==(n=null==e?void 0:e.message)&&void 0!==n?n:e).toLowerCase().includes("unauthorized")){if(!(yield this.reauthorizeIfPossible())){this._allBrokersChecked=!1,this._serversBrokerAddress=this._serversBrokerAddressList[0];const e=yield this.GetServerAddressAsync();if(e&&e!==this._address){this._log.Info(de.ServiceName,`Switching to resolved broker: ${e}`);try{yield null===(r=this._connection)||void 0===r?void 0:r.stop()}catch(e){}this.cleanup(),yield this.ConnectAsync(e),yield this.reauthorizeIfPossible()}}if(this.IsConnected()&&this._isAuthorized)try{return yield s(),!0}catch(t){e=t}}return this._log.Error(de.ServiceName,String(e)),!1}}))}RestoreConnectionAsync(){return ae(this,void 0,void 0,(function*(){var e,t;if(this._disconnectedOnPurpose)return!1;const n=this.GetAuthorizationInfo();if(null===n)return null===(e=se.h.Log)||void 0===e||e.Error(de.ServiceName,"RestoreSessionAsync failed, no authorization info"),!1;const r=Date.now();let s=0;do{if(this.IsConnected()&&(yield this.AuthorizeAsync(n)))return!0;if((yield this.ConnectAndAuthorizeAsync(n))===K.IX.Connected)return!0;const e=Math.min(3e4,5e3*Math.pow(2,s++));yield new Promise((t=>setTimeout(t,e))),this._allBrokersChecked=!1,this._serversBrokerAddress=this._serversBrokerAddressList[0]}while(Date.now()-r<18e5);return null===(t=se.h.Log)||void 0===t||t.Error(de.ServiceName,"RestoreSessionAsync failed, authorization failed"),!1}))}SendAndWaitForResponseAsync(e,t,n){return ae(this,arguments,void 0,(function*(e,t,n,r=!0,s=!0){var o,i,a;if(e.Method===Q.IT.Get&&n&&!(yield null===(o=this._controllerConfiguration)||void 0===o?void 0:o.DidCofigurationChangeAsync())){const t=null===(i=this._cache)||void 0===i?void 0:i.GetCache(e);if(t)return t}if(!this.IsConnected()&&!(yield this.RestoreConnectionAsync()))throw new Error("Failed to restore connection!");return"/users/user/login"!==e.Resource&&(yield null===(a=this._session)||void 0===a?void 0:a.WaitForSessionCreationAsync()),new Promise(((o,i)=>ae(this,void 0,void 0,(function*(){const a=window.setTimeout((()=>{this._dataReceivedEvent.Unsubscribe(c),this._pendingRequests.delete(e.TransactionId),i(new C.MU("Response timeout"))}),t),c=u=>{var l;u.TransactionId===e.TransactionId&&(window.clearTimeout(a),this._dataReceivedEvent.Unsubscribe(c),this._pendingRequests.delete(e.TransactionId),e.Method===Q.IT.Get&&n&&u.Status!==Q.nW.UserIsNotLoggedIn&&(null===(l=this._cache)||void 0===l||l.Cache(u)),s&&u.Status===Q.nW.UserIsNotLoggedIn?(()=>{ae(this,void 0,void 0,(function*(){var s;try{yield null===(s=this._session)||void 0===s?void 0:s.RestoreSessionAsync(),o(yield this.SendAndWaitForResponseAsync(e,t,n,r,!1))}catch(e){i(e)}}))})():o(u))};this._dataReceivedEvent.Subscribe(c),this._pendingRequests.set(e.TransactionId,{resolve:e=>o(e),reject:i,timeoutId:a}),(yield this.SendAsync(e,r))||(window.clearTimeout(a),this._dataReceivedEvent.Unsubscribe(c),this._pendingRequests.delete(e.TransactionId),i(new Error("Failed to send request")))}))))}))}SendAndHandleResponseAsync(e,t,n){return ae(this,arguments,void 0,(function*(e,t,n,r=!0){var s;if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(s=this._session)||void 0===s?void 0:s.WaitForSessionCreationAsync()),new Promise(((s,o)=>ae(this,void 0,void 0,(function*(){const i=()=>window.setTimeout((()=>{c(),o(new C.MU("MultiDataResponse timeout"))}),t);let a=i();const c=()=>{window.clearTimeout(a),this._dataReceivedEvent.Unsubscribe(u),this._pendingRequests.delete(e.TransactionId)},u=t=>{if(t.TransactionId===e.TransactionId)switch(window.clearTimeout(a),t.Status){case Q.nW.MultiDataResponseStart:case Q.nW.MultiDataResponse:n(t),a=i();break;case Q.nW.MultiDataResponseStop:case Q.nW.OK:n(t),c(),s();break;default:c(),o(new Error(`Unexpected status ${t.Status}`))}};this._dataReceivedEvent.Subscribe(u),this._pendingRequests.set(e.TransactionId,{resolve:()=>s(),reject:o,timeoutId:a}),(yield this.SendAsync(e,r))||(c(),o(new Error("Failed to send request")))}))))}))}SendAndHandleStreamAsync(e,t){return ae(this,arguments,void 0,(function*(e,t,n=!0){var r;if(!this.IsConnected())throw new Error("Connection is not established");return"/users/user/login"!==e.Resource&&(yield null===(r=this._session)||void 0===r?void 0:r.WaitForSessionCreationAsync()),new Promise(((r,s)=>ae(this,void 0,void 0,(function*(){const o=window.setTimeout((()=>{this._streamStartedEvent.Unsubscribe(i),s(new C.MU("Stream registration timeout"))}),8e3),i=n=>{n===e.TransactionId&&(window.clearTimeout(o),this._streamStartedEvent.Unsubscribe(i),this._connection.stream("WatchStream",n).subscribe({next:e=>t.Next(e),complete:()=>{t.Complete(),r()},error:e=>{t.Error(e),s(new K.lm(String(e)))}}))};this._streamStartedEvent.Subscribe(i),(yield this.SendAsync(e,n))||(window.clearTimeout(o),this._streamStartedEvent.Unsubscribe(i),s(new Error("Failed to send request")))}))))}))}PingControllerAsync(){return ae(this,void 0,void 0,(function*(){if(!this.IsConnected()||!this._isAuthorized)return!1;if(Date.now()-this._lastReceivedPacket<de.PING_INTERVAL_MS)return!1;const e=new Q.CP;e.Resource="/system/ping",e.Method=Q.IT.Get;try{return yield this.SendAndWaitForResponseAsync(e,2e3,!1,!1),!0}catch(e){return!1}}))}OnDataReceivedEvent(){return this._dataReceivedEvent}OnConnectionStateChangedEvent(){return this._connectionStateChangedEvent}OnErrorOccuredEvent(){return this._errorOccuredEvent}serialisedConnect(){return this._connectTask||(this._connectTask=this.connectCore().finally((()=>this._connectTask=null))),this._connectTask}waitForState(e){return ae(this,arguments,void 0,(function*(e,t=1e4){var n;const r=Date.now();for(;;){const s=null===(n=this._connection)||void 0===n?void 0:n.state;if(null!=s&&e.includes(s))return;if(Date.now()-r>t)throw new Error(`waitForState timeout; state=${s}`);yield new Promise((e=>setTimeout(e,50)))}}))}connectCore(){return ae(this,void 0,void 0,(function*(){var e,t;if(!this._address)return K.IX.ControllerIsNotConnected;if(this._connection&&this._currentAddress!==this._address){this._log.Info(de.ServiceName,"Broker changed → rebuilding connection");try{yield this._connection.stop()}catch(e){}this.cleanup()}if(this._connection){const t=this._connection.state;if(t===_.Connected)return this._isAuthorized||(yield this.reauthorizeIfPossible()),K.IX.Connected;if(t===_.Connecting||t===_.Reconnecting){this._log.Info(de.ServiceName,"Existing connection is starting/reconnecting – waiting.");try{yield this.waitForState([_.Connected,_.Disconnected])}catch(e){}if((null===(e=this._connection)||void 0===e?void 0:e.state)===_.Connected)return this._isAuthorized||(yield this.reauthorizeIfPossible()),K.IX.Connected}t===_.Disconnecting&&(yield this.waitForState([_.Disconnected]).catch((()=>{})))}this.initializeServices(),this.cleanup();for(const e of ue){const n=(new Z).withAutomaticReconnect(new ce).configureLogging(new le).withStatefulReconnect({bufferSize:256e3}).withServerTimeout(de.SERVER_TIMOUT_MS).withKeepAliveInterval(de.PING_INTERVAL_MS-1e3).withUrl(`https://${this._address}/broker`,{skipNegotiation:e===r.WebSockets,transport:e});this._log.LogLevel===re.$.Debug&&n.configureLogging(o.Debug);const s=n.build();this._connection=s,this._currentAddress=this._address,this.wireConnectionEvents();try{return yield s.start(),yield this.reauthorizeIfPossible(),this.startPingLoop(),this._connectionStateChangedEvent.Invoke(K.KN.Connected),K.IX.Connected}catch(n){this._log.Warning(de.ServiceName,`Transport ${r[e]} failed (${null==n?void 0:n.message}).`);try{yield s.stop()}catch(e){}try{null===(t=null==s?void 0:s.off)||void 0===t||t.call(s)}catch(e){}}}return this._connectionStateChangedEvent.Invoke(K.KN.Failed),K.IX.FailedToConnect}))}waitForReconnection(e=0){return new Promise(((t,n)=>{if(!this._connection||this._connection.state!==_.Reconnecting)return void n(new Error("Connection is not in reconnecting state"));let r;e>0&&(r=window.setTimeout((()=>{this._connectionStateChangedEvent.Unsubscribe(s),n(new Error("Reconnection timeout"))}),e));const s=e=>{e===K.KN.Connected?(r&&window.clearTimeout(r),this._connectionStateChangedEvent.Unsubscribe(s),t()):e!==K.KN.Disconnected&&e!==K.KN.Failed||(r&&window.clearTimeout(r),this._connectionStateChangedEvent.Unsubscribe(s),n(new Error("Connection closed during reconnection")))};this._connectionStateChangedEvent.Subscribe(s),this._connection.state!==_.Reconnecting&&(r&&window.clearTimeout(r),this._connectionStateChangedEvent.Unsubscribe(s),this._connection.state===_.Connected?t():n(new Error(`Connection is in unexpected state: ${this._connection.state}`)))}))}initializeServices(){this._controllerConfiguration=Y.j.Get(ee.u.ServiceName),this._cache=Y.j.Get(te.C.ServiceName),this._session=Y.j.Get(ne.Q.ServiceName)}wireConnectionEvents(){this._connection&&(this._connection.on("Pong",(()=>{this._lastReceivedPacket=Date.now(),this._pongReceivedEvent.Invoke()})),this._connection.on("controllerdisconnected",(()=>{this._isAuthorized=!1,this._connectionStateChangedEvent.Invoke(K.KN.Disconnected)})),this._connection.on("Authorization",(e=>this._authorizationReceivedEvent.Invoke(e))),this._connection.on("Registration",(e=>this._registrationReceivedEvent.Invoke(e))),this._connection.on("SendError",((e,t)=>{e.startsWith("NotAuthorized:")?this.AuthorizeAsync(new K.e5(this._serialId,this._PIN)):this._errorOccuredEvent.Invoke([e,t])})),this._connection.on("Data",((e,t)=>{this._lastReceivedPacket=Date.now(),!0===window.packets&&this._log.Debug(de.ServiceName,`Received: ${JSON.stringify(JSON.parse(t),null,2)}`),this._dataReceivedEvent.Invoke(JSON.parse(t))})),this._connection.onclose((()=>{this._isAuthorized=!1,this.cleanup(),this._connectionStateChangedEvent.Invoke(K.KN.Disconnected)})),this._connection.onreconnecting((()=>this._connectionStateChangedEvent.Invoke(K.KN.Reconnecting))),this._connection.onreconnected((()=>ae(this,void 0,void 0,(function*(){var e;this._connectionStateChangedEvent.Invoke(K.KN.Connected),(yield this.RestoreConnectionAsync())&&(null===(e=this._session)||void 0===e||e.RestoreSessionAsync())})))))}startPingLoop(){null!==this._pingTimerId&&clearInterval(this._pingTimerId),this._pingTimerId=window.setInterval((()=>{this.pingOnce()}),de.PING_INTERVAL_MS),window.addEventListener("online",this._tryReconnect),window.addEventListener("offline",this._tryReconnect),document.addEventListener("visibilitychange",this._onVisibility,!0),window.addEventListener("pagehide",this._onHidden,!0),window.addEventListener("pageshow",this._onVisible,!0)}isBusy(){var e;const t=null===(e=this._connection)||void 0===e?void 0:e.state;return t===_.Connecting||t===_.Disconnecting||t===_.Reconnecting}pingOnce(){return ae(this,void 0,void 0,(function*(){this.IsConnected()&&!this.isBusy()&&(Date.now()-this._lastReceivedPacket<de.PING_INTERVAL_MS||((yield this.PingControllerAsync())?this._consecutivePingFailures=0:++this._consecutivePingFailures>=de.MAX_CONSECUTIVE_PING_FAILURES&&(this._consecutivePingFailures=0,this._log.Warning(de.ServiceName,"Ping failed too many times → reconnecting..."),this.serialisedConnect())))}))}validateConnectionToController(){return ae(this,void 0,void 0,(function*(){var e;if(!this.IsConnected())return this._log.Warning(de.ServiceName,"Connection was lost"),!1;{const t=new Q.CP;t.Resource="/system/ping",t.Method=Q.IT.Get;try{const n=yield this.SendAndWaitForResponseAsync(t,de.SERVER_TIMOUT_MS+1e3,!1,!1);return(null==n?void 0:n.Status)!==Q.nW.OK?(this._log.Warning(de.ServiceName,"Connection check failed, "+(null==n?"result is null":`status: ${n.Status}`)),!1):(null===(e=this._connection)||void 0===e?void 0:e.state)===_.Reconnecting?(this._log.Warning(de.ServiceName,"Connection check failed, connection is in reconnecting state"),!1):(this._log.Info(de.ServiceName,"Connection still active"),!0)}catch(e){return!1}}}))}cleanup(){var e,t;null!==this._pingTimerId&&(clearInterval(this._pingTimerId),this._pingTimerId=null);for(const[,e]of this._pendingRequests)window.clearTimeout(e.timeoutId),e.reject(new Error("Connection lost"));this._pendingRequests.clear(),window.removeEventListener("online",this._tryReconnect),window.removeEventListener("offline",this._tryReconnect),document.removeEventListener("visibilitychange",this._onVisibility,!0),window.removeEventListener("pagehide",this._onHidden,!0),window.removeEventListener("pageshow",this._onVisible,!0);try{null===(t=null===(e=this._connection)||void 0===e?void 0:e.off)||void 0===t||t.call(e)}catch(e){}this._connection=void 0,this._currentAddress=void 0}}de.PING_INTERVAL_MS=5e3,de.MAX_CONSECUTIVE_PING_FAILURES=6,de.SERVER_TIMOUT_MS=1e4,de.SignalRLogLevel=o.Warning,de.ServiceName="ExalusConnectionService"}}]);
//# sourceMappingURL=443-exalushome-extalife.bundle.js.map