@webex/calling 3.12.0-next.9 → 3.12.0-task-refactor.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/CallHistory/CallHistory.js +51 -68
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.js +18 -115
  4. package/dist/CallingClient/CallingClient.js.map +1 -1
  5. package/dist/CallingClient/CallingClient.test.js +6 -121
  6. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  7. package/dist/CallingClient/calling/call.js +9 -10
  8. package/dist/CallingClient/calling/call.js.map +1 -1
  9. package/dist/CallingClient/calling/call.test.js +379 -520
  10. package/dist/CallingClient/calling/call.test.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.js +0 -7
  12. package/dist/CallingClient/calling/callManager.js.map +1 -1
  13. package/dist/CallingClient/constants.js +2 -4
  14. package/dist/CallingClient/constants.js.map +1 -1
  15. package/dist/CallingClient/registration/register.js +0 -16
  16. package/dist/CallingClient/registration/register.js.map +1 -1
  17. package/dist/CallingClient/registration/types.js.map +1 -1
  18. package/dist/CallingClient/types.js.map +1 -1
  19. package/dist/Events/types.js +11 -1
  20. package/dist/Events/types.js.map +1 -1
  21. package/dist/common/Utils.js +0 -2
  22. package/dist/common/Utils.js.map +1 -1
  23. package/dist/common/Utils.test.js +2 -2
  24. package/dist/common/Utils.test.js.map +1 -1
  25. package/dist/common/types.js.map +1 -1
  26. package/dist/module/CallHistory/CallHistory.js +17 -28
  27. package/dist/module/CallingClient/CallingClient.js +1 -43
  28. package/dist/module/CallingClient/calling/call.js +3 -4
  29. package/dist/module/CallingClient/calling/callManager.js +0 -7
  30. package/dist/module/CallingClient/constants.js +0 -2
  31. package/dist/module/CallingClient/registration/register.js +0 -8
  32. package/dist/module/Events/types.js +10 -0
  33. package/dist/module/common/Utils.js +0 -2
  34. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  35. package/dist/types/CallingClient/CallingClient.d.ts +1 -2
  36. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  37. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  38. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  39. package/dist/types/CallingClient/constants.d.ts +0 -2
  40. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  41. package/dist/types/CallingClient/registration/register.d.ts +1 -2
  42. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  43. package/dist/types/CallingClient/registration/types.d.ts +1 -2
  44. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  45. package/dist/types/CallingClient/types.d.ts +1 -2
  46. package/dist/types/CallingClient/types.d.ts.map +1 -1
  47. package/dist/types/Events/types.d.ts +10 -0
  48. package/dist/types/Events/types.d.ts.map +1 -1
  49. package/dist/types/common/Utils.d.ts.map +1 -1
  50. package/dist/types/common/types.d.ts +0 -4
  51. package/dist/types/common/types.d.ts.map +1 -1
  52. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setDeviceInfo","devicesInfo","_devicesInfo$devices","_slicedToArray2","devices","deviceInfo","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","_response","response","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_context2","fetch","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","CISCO_DEVICE_URL","credentials","getUserToken","sent","WEBEX_WEB_CLIENT","uuid","SPARK_USER_AGENT","CALLING_USER_AGENT","headers","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","_context3","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","abort","_context5","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","includes","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee12","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t1","_t10","_context12","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee13","_context13","executeFailback","_executeFailback","_callee15","_this5","_context15","_callee14","primaryServerStatus","abortNew","_context14","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee16","_context16","_x9","_handleConnectionRestoration","_callee18","retry","_this6","_context18","HANDLE_CONNECTION_RESTORATION","_callee17","_context17","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this7","_ref1","_callee19","restoreData","logContext","restore","finalError","_context19","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee20","_context20","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee21","_this8","servers","_iterator2","_step2","_loop","_ret","_args22","_t12","_context22","REGISTER_UTIL","_this8$backupMobiusUr","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","resp","_t11","_context21","CONNECTING","REGISTERED","trackingid","REGISTER","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x11","_startKeepaliveTimer","_callee24","_this9","RETRY_COUNT_THRESHOLD","_context25","_callee23","accessToken","blob","blobUrl","_context24","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee22","event","_context23","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee25","_this$deviceInfo$devi","_this$deviceInfo$devi2","_t13","_context26","DEREGISTER","registerRetry","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee26","_context27","RECONNECT_ON_FAILURE","_x16","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n Devices,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\n FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n /**\n * Populate deviceInfo using a devices response body.\n */\n public setDeviceInfo(devicesInfo: Devices): void {\n const [device] = devicesInfo.devices;\n\n this.deviceInfo = {\n userId: devicesInfo.userId,\n device,\n devices: devicesInfo.devices,\n };\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n return true;\n }\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\n });\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (await this.resumeFailover()) {\n return;\n }\n\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearFailoverState();\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_uuid","require","_constants","_common","_webWorkerStr","_interopRequireDefault","_types","_Metrics","_calling","_Logger","_SDKConnector","_types2","_constants2","_types3","_createForOfIteratorHelper","r","e","t","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","n","done","value","f","TypeError","o","a","u","call","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","Registration","exports","webex","serviceData","mutex","lineEmitter","logLevel","jwe","_classCallCheck2","sdkConnector","SDKConnector","isCCFlow","indicator","ServiceIndicator","CONTACT_CENTER","getWebex","setWebex","userId","internal","device","registrationStatus","RegistrationStatus","IDLE","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getFailoverCacheKey","concat","FAILOVER_CACHE_PREFIX","saveFailoverState","failoverState","localStorage","setItem","_stringify","error","warn","String","file","method","clearFailoverState","removeItem","_unused","_resumeFailover","_asyncToGenerator2","_regenerator","mark","_callee","cachedState","currentTime","newElapsed","_t","wrap","_context","prev","getItem","JSON","parse","undefined","isDeviceRegistered","Math","floor","_now","timeElapsed","retryScheduledTime","startFailoverTimer","attempt","abrupt","stop","resumeFailover","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","METHOD_START_MESSAGE","METHODS","UPDATE_ACTIVE_MOBIUS","updateActiveMobius","setMobiusServers","SET_MOBIUS_SERVERS","_deleteRegistration","_callee2","deviceId","deviceUrl","_response","response","_t2","_t3","_t4","_t5","_t6","_t7","_t8","_t9","_t0","_context2","fetch","DEVICES_ENDPOINT_RESOURCE","HTTP_METHODS","DELETE","CISCO_DEVICE_URL","credentials","getUserToken","sent","WEBEX_WEB_CLIENT","uuid","SPARK_USER_AGENT","CALLING_USER_AGENT","headers","DELETE_REGISTRATION","uploadLogs","setStatus","INACTIVE","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x","_x2","_x3","_postRegistration","_callee3","deviceInfo","_context3","clientDeviceUri","request","uri","POST","body","service","ALLOWED_SERVICES","MOBIUS","postRegistration","_x4","_restorePreviousRegistration","_callee5","caller","_this","abort","_context5","attemptRegistrationWithServers","retryAfter","RETRY_TIMER_UPPER_LIMIT","setTimeout","_callee4","_context4","restartRegistration","includes","restorePreviousRegistration","_x5","_handle404KeepaliveFailure","_callee6","_context6","KEEPALIVE_UTIL","handle404KeepaliveFailure","_x6","_handle429Retry","_callee8","_this2","interval","_context8","FAILBACK_UTIL","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","REG_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","scheduled429Retry","clearKeepaliveTimer","_callee7","_this2$deviceInfo$dev","_context7","startKeepaliveTimer","keepaliveInterval","handle429Retry","_x7","_x8","BASE_REG_RETRY_TIMER_VAL_IN_SEC","pow","BASE_REG_TIMER_MFACTOR","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee11","_this3","loggerContext","TIMER_THRESHOLD","excessVal","scheduledTime","_args11","_context11","FAILOVER_UTIL","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","failoverImmediately","max","serverType","_callee0","_context0","runExclusive","_callee9","_context9","_callee10","_context10","_callee1","_context1","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","_isPrimaryActive","_callee12","status","_iterator","_step","mobiusUrl","baseUri","_ref7","statusCode","_t1","_t10","_context12","replace","URL_ENDPOINT","GET","finish","isPrimaryActive","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this4","_callee13","_context13","executeFailback","_executeFailback","_callee15","_this5","_context15","_callee14","primaryServerStatus","abortNew","_context14","_keys","getActiveCalls","deregister","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","_restartRegistration","_callee16","_context16","_x9","_handleConnectionRestoration","_callee18","retry","_this6","_context18","HANDLE_CONNECTION_RESTORATION","_callee17","_context17","handleConnectionRestoration","_x0","restoreRegistrationCallBack","_this7","_ref1","_callee19","restoreData","logContext","restore","finalError","_context19","isRegRetry","getExistingDevice","setRegRetry","_x1","_x10","_triggerRegistration","_callee20","_context20","REGISTRATION_UTIL","triggerRegistration","_attemptRegistrationWithServers","_callee21","_this8","servers","_iterator2","_step2","_loop","_ret","_args22","_t12","_context22","REGISTER_UTIL","_this8$backupMobiusUr","_this8$deviceInfo$dev","_resp$headers","_resp$headers$trackin","_resp$headers2","_this8$deviceInfo$dev2","resp","_t11","_context21","CONNECTING","REGISTERED","trackingid","REGISTER","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","METRIC_TYPE","BEHAVIORAL","handleRegistrationErrors","_body$headers$trackin","_body$headers","REGISTRATION_ERROR","retryCaller","delegateYield","t0","_x11","_startKeepaliveTimer","_callee24","_this9","RETRY_COUNT_THRESHOLD","_context25","_callee23","accessToken","blob","blobUrl","_context24","webWorker","Blob","webWorkerStr","type","URL","createObjectURL","Worker","revokeObjectURL","postMessage","WorkerMessageType","START_KEEPALIVE","retryCountThreshold","onmessage","_ref11","_callee22","event","_context23","data","KEEPALIVE_SUCCESS","RECONNECTED","KEEPALIVE_FAILURE","err","keepAliveRetryCount","_error$headers$tracki","_error$headers","KEEPALIVE_ERROR","reconnectOnFailure","RECONNECT_ON_FAILURE_UTIL","RECONNECTING","_x15","_x12","_x13","_x14","CLEAR_KEEPALIVE","terminate","isReconnectPending","reconnectPending","_deregister","_callee25","_this$deviceInfo$devi","_this$deviceInfo$devi2","_t13","_context26","DEREGISTER","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","_reconnectOnFailure","_callee26","_context27","RECONNECT_ON_FAILURE","_x16","createRegistration"],"sources":["register.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../../common/constants';\nimport {emitFinalFailure, handleRegistrationErrors, uploadLogs} from '../../common';\nimport webWorkerStr from './webWorkerStr';\n\nimport {\n IMetricManager,\n METRIC_EVENT,\n METRIC_TYPE,\n REG_ACTION,\n SERVER_TYPE,\n} from '../../Metrics/types';\nimport {getMetricManager} from '../../Metrics';\nimport {ICallManager} from '../calling/types';\nimport {getCallManager} from '../calling';\nimport {LOGGER} from '../../Logger/types';\nimport log from '../../Logger';\nimport {FailoverCacheState, IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n RegistrationStatus,\n ServiceData,\n ServiceIndicator,\n WebexRequestPayload,\n WorkerMessageType,\n} from '../../common/types';\nimport {ISDKConnector, WebexSDK} from '../../SDKConnector/types';\nimport {\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DEVICES_ENDPOINT_RESOURCE,\n SPARK_USER_AGENT,\n WEBEX_WEB_CLIENT,\n BASE_REG_RETRY_TIMER_VAL_IN_SEC,\n BASE_REG_TIMER_MFACTOR,\n SEC_TO_MSEC_MFACTOR,\n REG_RANDOM_T_FACTOR_UPPER_LIMIT,\n REG_TRY_BACKUP_TIMER_VAL_IN_SEC,\n MINUTES_TO_SEC_MFACTOR,\n REG_429_RETRY_UTIL,\n REG_FAILBACK_429_MAX_RETRIES,\n FAILBACK_UTIL,\n REGISTRATION_FILE,\n DEFAULT_REHOMING_INTERVAL_MIN,\n DEFAULT_REHOMING_INTERVAL_MAX,\n DEFAULT_KEEPALIVE_INTERVAL,\n FAILOVER_UTIL,\n REGISTER_UTIL,\n RETRY_TIMER_UPPER_LIMIT,\n KEEPALIVE_UTIL,\n REGISTRATION_UTIL,\n METHODS,\n URL_ENDPOINT,\n RECONNECT_ON_FAILURE_UTIL,\n FAILOVER_CACHE_PREFIX,\n} from '../constants';\nimport {LINE_EVENTS, LineEmitterCallback} from '../line/types';\nimport {LineError} from '../../Errors/catalog/LineError';\n\n/**\n *\n */\nexport class Registration implements IRegistration {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private userId = '';\n\n private serviceData: ServiceData;\n\n private failback429RetryAttempts: number;\n private registrationStatus: RegistrationStatus;\n private failbackTimer?: NodeJS.Timeout;\n private activeMobiusUrl!: string;\n\n private rehomingIntervalMin: number;\n private rehomingIntervalMax: number;\n private mutex: Mutex;\n private metricManager: IMetricManager;\n private lineEmitter: LineEmitterCallback;\n private callManager: ICallManager;\n private deviceInfo: IDeviceInfo = {};\n private primaryMobiusUris: string[];\n private backupMobiusUris: string[];\n private registerRetry = false;\n private reconnectPending = false;\n private jwe?: string;\n private isCCFlow = false;\n private failoverImmediately = false;\n private retryAfter: number | undefined;\n private scheduled429Retry = false;\n private webWorker: Worker | undefined;\n\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n ) {\n this.jwe = jwe;\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\n this.isCCFlow = serviceData.indicator === ServiceIndicator.CONTACT_CENTER;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.userId = this.webex.internal.device.userId;\n this.registrationStatus = RegistrationStatus.IDLE;\n this.failback429RetryAttempts = 0;\n log.setLogger(logLevel, REGISTRATION_FILE);\n this.rehomingIntervalMin = DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = DEFAULT_REHOMING_INTERVAL_MAX;\n this.mutex = mutex;\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n this.lineEmitter = lineEmitter;\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n }\n\n private getFailoverCacheKey(): string {\n return `${FAILOVER_CACHE_PREFIX}.${this.userId || 'unknown'}`;\n }\n\n private saveFailoverState(failoverState: FailoverCacheState): void {\n try {\n localStorage.setItem(this.getFailoverCacheKey(), JSON.stringify(failoverState));\n } catch (error) {\n log.warn(`Storing failover state in cache failed with error: ${String(error)}`, {\n file: REGISTRATION_FILE,\n method: 'saveFailoverState',\n });\n }\n }\n\n private clearFailoverState(): void {\n try {\n localStorage.removeItem(this.getFailoverCacheKey());\n } catch {\n log.warn('Clearing failover state from localStorage failed', {\n file: REGISTRATION_FILE,\n method: 'clearFailoverState',\n });\n }\n }\n\n private async resumeFailover(): Promise<boolean> {\n try {\n const cachedState = localStorage.getItem(this.getFailoverCacheKey());\n const failoverState = cachedState\n ? (JSON.parse(cachedState) as FailoverCacheState)\n : undefined;\n if (failoverState && !this.isDeviceRegistered()) {\n const currentTime = Math.floor(Date.now() / 1000);\n const newElapsed =\n failoverState.timeElapsed + (currentTime - failoverState.retryScheduledTime);\n\n this.clearFailoverState();\n await this.startFailoverTimer(failoverState.attempt, newElapsed);\n\n return true;\n }\n } catch (error) {\n log.warn(`No failover state found in cache`, {\n file: REGISTRATION_FILE,\n method: 'triggerRegistration',\n });\n }\n\n return false;\n }\n\n public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`${METHOD_START_MESSAGE} with ${url}`, {\n method: METHODS.UPDATE_ACTIVE_MOBIUS,\n file: REGISTRATION_FILE,\n });\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n log.log(METHOD_START_MESSAGE, {method: METHODS.SET_MOBIUS_SERVERS, file: REGISTRATION_FILE});\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n let response;\n try {\n response = await fetch(`${url}${DEVICES_ENDPOINT_RESOURCE}/${deviceId}`, {\n method: HTTP_METHODS.DELETE,\n headers: {\n [CISCO_DEVICE_URL]: deviceUrl,\n Authorization: await this.webex.credentials.getUserToken(),\n trackingId: `${WEBEX_WEB_CLIENT}_${uuid()}`,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n } catch (error) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(error)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DELETE_REGISTRATION,\n });\n\n await uploadLogs();\n }\n\n this.setStatus(RegistrationStatus.INACTIVE);\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n return <WebexRequestPayload>response?.json();\n }\n\n /**\n * Implementation of POST request for device registration.\n *\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: this.jwe ? {...this.serviceData, jwe: this.jwe} : this.serviceData,\n };\n\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}device`,\n method: HTTP_METHODS.POST,\n headers: {\n [CISCO_DEVICE_URL]: deviceInfo.clientDeviceUri,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n body: deviceInfo,\n service: ALLOWED_SERVICES.MOBIUS,\n });\n }\n\n /**\n * Re-attempts registration with the mobius url it was last registered\n * to, that mobius url is expected to be updated already in this.activeMobiusUrl.\n */\n private async restorePreviousRegistration(caller: string): Promise<boolean> {\n let abort = false;\n\n if (this.activeMobiusUrl) {\n abort = await this.attemptRegistrationWithServers(caller, [this.activeMobiusUrl]);\n if (this.retryAfter) {\n if (this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n // If retry-after is less than threshold, honor it and schedule retry\n setTimeout(async () => {\n await this.restartRegistration(caller);\n }, this.retryAfter * 1000);\n } else if (\n this.primaryMobiusUris.includes(this.activeMobiusUrl) &&\n this.backupMobiusUris.length > 0\n ) {\n // If we are using primary and got 429, switch to backup\n abort = await this.attemptRegistrationWithServers(caller, this.backupMobiusUris);\n } else {\n // If we are using backup and got 429, restart registration\n this.restartRegistration(caller);\n }\n this.retryAfter = undefined;\n\n return true;\n }\n }\n\n return abort;\n }\n\n /**\n * Callback for handling 404 response from the server for register keepalive\n */\n private async handle404KeepaliveFailure(caller: string): Promise<void> {\n if (caller === KEEPALIVE_UTIL) {\n const abort = await this.attemptRegistrationWithServers(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Callback for handling 429 retry response from the server\n */\n private async handle429Retry(retryAfter: number, caller: string): Promise<void> {\n if (caller === FAILBACK_UTIL) {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\n }\n\n this.clearFailbackTimer();\n this.failback429RetryAttempts += 1;\n log.log(`Received 429 while rehoming, 429 retry count : ${this.failback429RetryAttempts}`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n this.scheduled429Retry = true;\n const abort = await this.restorePreviousRegistration(REG_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(REG_429_RETRY_UTIL);\n }\n } else if (caller === KEEPALIVE_UTIL) {\n this.clearKeepaliveTimer();\n setTimeout(async () => {\n log.log(`Resuming keepalive after ${retryAfter} seconds`, {\n file: REGISTRATION_FILE,\n method: REG_429_RETRY_UTIL,\n });\n\n // Resume the keepalive after waiting for the retry after period\n await this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n 'UNKNOWN'\n );\n }, retryAfter * 1000);\n } else {\n this.retryAfter = retryAfter;\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * attempted already.\n */\n private getRegRetryInterval(attempt = 1): number {\n return (\n BASE_REG_RETRY_TIMER_VAL_IN_SEC +\n BASE_REG_TIMER_MFACTOR ** attempt +\n Math.floor(\n (Math.random() * (REG_RANDOM_T_FACTOR_UPPER_LIMIT - SEC_TO_MSEC_MFACTOR + 1) +\n SEC_TO_MSEC_MFACTOR) /\n SEC_TO_MSEC_MFACTOR\n )\n );\n }\n\n /**\n * Schedules registration retry with primary mobius servers at a random\n * interval calculated based on the number of times registration retry is already done\n * Once the time taken since the beginning of retry attempt exceeds the\n * retry threshold, it switches over to backup mobius servers.\n *\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: FAILOVER_UTIL,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n const TIMER_THRESHOLD = REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n if (timeElapsed + interval > TIMER_THRESHOLD) {\n const excessVal = timeElapsed + interval - TIMER_THRESHOLD;\n\n interval -= excessVal;\n }\n\n if (this.retryAfter != null && interval < this.retryAfter) {\n this.failoverImmediately = this.retryAfter + timeElapsed > TIMER_THRESHOLD;\n }\n\n let abort;\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC && !this.failoverImmediately) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n if (this.retryAfter != null) {\n interval = Math.max(interval, this.retryAfter);\n }\n\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: scheduledTime,\n serverType: 'primary',\n });\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL);\n const currentTime = Math.floor(Date.now() / 1000);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer(attempt + 1, timeElapsed + (currentTime - scheduledTime));\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(\n `Scheduled retry with primary in ${interval} seconds, number of attempts : ${attempt}`,\n loggerContext\n );\n } else if (this.backupMobiusUris.length) {\n this.saveFailoverState({\n attempt,\n timeElapsed,\n retryScheduledTime: Math.floor(Date.now() / 1000),\n serverType: 'backup',\n });\n\n log.info('Failing over to backup servers.', loggerContext);\n this.failoverImmediately = false;\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n\n if (this.retryAfter != null && this.retryAfter < RETRY_TIMER_UPPER_LIMIT) {\n interval = interval < this.retryAfter ? this.retryAfter : interval;\n }\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(FAILOVER_UTIL, this.backupMobiusUris);\n if (!abort && !this.isDeviceRegistered()) {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n });\n }, interval * SEC_TO_MSEC_MFACTOR);\n log.log(`Scheduled retry with backup servers in ${interval} seconds.`, loggerContext);\n }\n } else {\n await uploadLogs();\n emitFinalFailure((clientError: LineError) => {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }, loggerContext);\n }\n }\n\n /**\n * Clears the failback timer if running.\n */\n private clearFailbackTimer() {\n if (this.failbackTimer) {\n clearTimeout(this.failbackTimer);\n this.failbackTimer = undefined;\n }\n }\n\n private async isPrimaryActive() {\n let status;\n for (const mobiusUrl of this.primaryMobiusUris) {\n try {\n const baseUri = mobiusUrl.replace(URL_ENDPOINT, '/');\n // eslint-disable-next-line no-await-in-loop\n const response = await this.webex.request({\n uri: `${baseUri}ping`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n const {statusCode} = response as WebexRequestPayload;\n if (statusCode === 200) {\n log.info(`Ping successful for primary Mobius: ${mobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n });\n status = 'up';\n break;\n }\n } catch (error) {\n log.warn(\n `Ping failed for primary Mobius: ${mobiusUrl} with error: ${JSON.stringify(error)}`,\n {\n file: REGISTRATION_FILE,\n method: FAILBACK_UTIL,\n }\n );\n status = 'down';\n }\n }\n\n return status === 'up';\n }\n\n /**\n * Returns true if device is registered with a backup mobius.\n */\n private isFailbackRequired(): boolean {\n return this.isDeviceRegistered() && this.primaryMobiusUris.indexOf(this.activeMobiusUrl) === -1;\n }\n\n /**\n * Calculates and returns a random value between rehomingIntervalMin and\n * rehomingIntervalMax.\n */\n private getFailbackInterval(): number {\n return Math.floor(\n Math.random() * (this.rehomingIntervalMax - this.rehomingIntervalMin + 1) +\n this.rehomingIntervalMin\n );\n }\n\n /**\n * Starts failback timer to move to primary mobius if device\n * is registered with a backup mobius.\n */\n private initiateFailback() {\n if (this.isFailbackRequired()) {\n if (!this.failbackTimer) {\n this.failback429RetryAttempts = 0;\n const intervalInMinutes = this.getFailbackInterval();\n\n this.startFailbackTimer(intervalInMinutes * MINUTES_TO_SEC_MFACTOR);\n }\n } else {\n this.failback429RetryAttempts = 0;\n this.clearFailbackTimer();\n }\n }\n\n /**\n * Starts failback timer with the interval value received.\n *\n */\n private startFailbackTimer(intervalInSeconds: number) {\n this.failbackTimer = setTimeout(\n async () => this.executeFailback(),\n intervalInSeconds * SEC_TO_MSEC_MFACTOR\n );\n log.log(`Failback scheduled after ${intervalInSeconds} seconds.`, {\n file: REGISTRATION_FILE,\n method: this.startFailbackTimer.name,\n });\n }\n\n /**\n * Core logic for the failback processing, scheduled and executed\n * at failback timer expiry.\n */\n private async executeFailback() {\n await this.mutex.runExclusive(async () => {\n if (this.isFailbackRequired()) {\n const primaryServerStatus = await this.isPrimaryActive();\n if (Object.keys(this.callManager.getActiveCalls()).length === 0 && primaryServerStatus) {\n log.info(`Attempting failback to primary.`, {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n });\n await this.deregister();\n const abort = await this.attemptRegistrationWithServers(FAILBACK_UTIL);\n\n if (this.scheduled429Retry || abort || this.isDeviceRegistered()) {\n return;\n }\n\n const abortNew = await this.restorePreviousRegistration(FAILBACK_UTIL);\n\n if (abortNew) {\n this.clearFailbackTimer();\n\n return;\n }\n\n if (!this.isDeviceRegistered()) {\n await this.restartRegistration(this.executeFailback.name);\n } else {\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n } else {\n log.info(\n 'Active calls present or primary Mobius is down, deferring failback to next cycle.',\n {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\n }\n );\n this.failbackTimer = undefined;\n this.initiateFailback();\n }\n }\n });\n }\n\n /**\n * Updates rehomingIntervalMin and rehomingIntervalMax values\n * if received in registration response from a primary mobius\n * server.\n *\n */\n private setIntervalValues(deviceInfo: IDeviceInfo) {\n if (this.primaryMobiusUris.indexOf(this.activeMobiusUrl) !== -1) {\n this.rehomingIntervalMin = deviceInfo?.rehomingIntervalMin\n ? deviceInfo.rehomingIntervalMin\n : DEFAULT_REHOMING_INTERVAL_MIN;\n this.rehomingIntervalMax = deviceInfo?.rehomingIntervalMax\n ? deviceInfo.rehomingIntervalMax\n : DEFAULT_REHOMING_INTERVAL_MAX;\n }\n }\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * Checks if the device is currently registered.\n *\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === RegistrationStatus.ACTIVE;\n }\n\n public getStatus(): RegistrationStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: RegistrationStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n */\n private async restartRegistration(caller: string) {\n /*\n * Cancel any failback timer running\n * and start fresh registration attempt with retry as true.\n */\n this.clearFailbackTimer();\n this.failback429RetryAttempts = 0;\n const abort = await this.attemptRegistrationWithServers(caller, this.primaryMobiusUris);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.startFailoverTimer();\n }\n }\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n */\n public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\n log.info(METHOD_START_MESSAGE, {\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n file: REGISTRATION_FILE,\n });\n await this.mutex.runExclusive(async () => {\n /* Check retry once again to see if another timer thread has not finished the job already. */\n if (retry) {\n log.log('Network is up again, re-registering with Webex Calling if needed', {\n file: REGISTRATION_FILE,\n method: METHODS.HANDLE_CONNECTION_RESTORATION,\n });\n this.clearKeepaliveTimer();\n if (this.isDeviceRegistered()) {\n // eslint-disable-next-line no-await-in-loop\n await this.deregister();\n }\n\n /*\n * Do not attempt registration if mobius url is not set in this.activeMobiusUrl\n * as that'd mean initial registration itself is not finished yet, let\n * failover timer handle the registration in that case.\n */\n if (this.activeMobiusUrl) {\n /*\n * When restoring connectivity, register with same url first\n * where it was registered last even if it was a backup url,\n * because failback timer may already be running to register\n * it back to primary.\n */\n const abort = await this.restorePreviousRegistration(\n METHODS.HANDLE_CONNECTION_RESTORATION\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(METHODS.HANDLE_CONNECTION_RESTORATION);\n }\n }\n retry = false;\n }\n });\n\n return retry;\n }\n\n /**\n * Callback function for restoring registration in case of failure during initial registration\n * due to device registration already exists.\n *\n */\n private restoreRegistrationCallBack() {\n return async (restoreData: IDeviceInfo, caller: string) => {\n const logContext = {file: REGISTRATION_FILE, method: caller};\n if (!this.isRegRetry()) {\n log.info('Registration restoration in progress.', logContext);\n const restore = this.getExistingDevice(restoreData);\n\n if (restore) {\n this.setRegRetry(true);\n await this.deregister();\n const finalError = await this.restorePreviousRegistration(caller);\n this.setRegRetry(false);\n if (this.isDeviceRegistered()) {\n log.info('Registration restored successfully.', logContext);\n }\n\n return finalError;\n }\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n\n return false;\n };\n }\n\n /**\n * Triggers the registration with the given list of Mobius servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n public async triggerRegistration() {\n if (await this.resumeFailover()) {\n return;\n }\n\n if (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n REGISTRATION_UTIL,\n this.primaryMobiusUris\n );\n\n if (!this.isDeviceRegistered() && !abort) {\n await this.startFailoverTimer();\n }\n }\n }\n\n /**\n * Attempts registration with the server list received in\n * argument one by one until registration either succeeds with\n * one or all of them are tried.\n *\n * attempt has hit a final error and a retry should not be scheduled\n * else false.\n */\n private async attemptRegistrationWithServers(\n caller: string,\n servers: string[] = this.primaryMobiusUris\n ): Promise<boolean> {\n let abort = false;\n this.retryAfter = undefined;\n\n if (this.failoverImmediately) {\n return abort;\n }\n\n if (this.isDeviceRegistered()) {\n log.info(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n\n return abort;\n }\n for (const url of servers) {\n const serverType =\n (this.primaryMobiusUris.includes(url) && 'PRIMARY') ||\n (this.backupMobiusUris?.includes(url) && 'BACKUP') ||\n 'UNKNOWN';\n try {\n abort = false;\n this.registrationStatus = RegistrationStatus.INACTIVE;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.info(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: REGISTER_UTIL,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n this.clearFailoverState();\n this.deviceInfo = resp.body as IDeviceInfo;\n this.registrationStatus = RegistrationStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n log.log(\n `Registration successful for deviceId: ${this.deviceInfo.device?.deviceId} userId: ${this.userId} responseTrackingId: ${resp.headers?.trackingid}`,\n {\n file: REGISTRATION_FILE,\n method: METHODS.REGISTER,\n }\n );\n this.setIntervalValues(this.deviceInfo);\n this.metricManager.setDeviceInfo(this.deviceInfo);\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n resp.headers?.trackingid ?? '',\n undefined,\n undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number,\n serverType\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n // eslint-disable-next-line no-await-in-loop, @typescript-eslint/no-unused-vars\n abort = await handleRegistrationErrors(\n body,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n } else {\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n }\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n caller,\n serverType,\n body.headers?.trackingid ?? '',\n undefined,\n clientError\n );\n },\n {method: caller, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) => this.handle429Retry(retryAfter, retryCaller),\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === RegistrationStatus.ACTIVE) {\n log.info(\n `[${caller}] : Device is already restored, active mobius url: ${this.activeMobiusUrl}`,\n {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n }\n );\n break;\n }\n if (abort) {\n this.setStatus(RegistrationStatus.INACTIVE);\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n\n break;\n }\n }\n }\n\n return abort;\n }\n\n /**\n * This method sets up a timer to periodically send keep-alive requests to maintain a connection.\n * It handles retries, error handling, and re-registration attempts based on the response, ensuring continuous connectivity with the server.\n */\n private async startKeepaliveTimer(url: string, interval: number, serverType: SERVER_TYPE) {\n this.clearKeepaliveTimer();\n const RETRY_COUNT_THRESHOLD = this.isCCFlow ? 4 : 5;\n\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered()) {\n const accessToken = await this.webex.credentials.getUserToken();\n\n if (!this.webWorker) {\n const blob = new Blob([webWorkerStr], {type: 'application/javascript'});\n const blobUrl = URL.createObjectURL(blob);\n this.webWorker = new Worker(blobUrl);\n URL.revokeObjectURL(blobUrl);\n\n this.webWorker.postMessage({\n type: WorkerMessageType.START_KEEPALIVE,\n accessToken: String(accessToken),\n deviceUrl: String(this.webex.internal.device.url),\n interval,\n retryCountThreshold: RETRY_COUNT_THRESHOLD,\n url,\n });\n\n this.webWorker.onmessage = async (event: MessageEvent) => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: KEEPALIVE_UTIL,\n };\n if (event.data.type === WorkerMessageType.KEEPALIVE_SUCCESS) {\n log.info(`Sent Keepalive, status: ${event.data.statusCode}`, logContext);\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n\n if (event.data.type === WorkerMessageType.KEEPALIVE_FAILURE) {\n const error = <WebexRequestPayload>event.data.err;\n log.warn(\n `Keep-alive missed ${event.data.keepAliveRetryCount} times. Status -> ${error.statusCode} `,\n logContext\n );\n\n const abort = await handleRegistrationErrors(\n error,\n (clientError, finalError) => {\n if (finalError) {\n this.lineEmitter(LINE_EVENTS.ERROR, undefined, clientError);\n }\n\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.KEEPALIVE_ERROR,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n KEEPALIVE_UTIL,\n serverType,\n error.headers?.trackingid ?? '',\n event.data.keepAliveRetryCount,\n clientError\n );\n },\n {method: KEEPALIVE_UTIL, file: REGISTRATION_FILE},\n (retryAfter: number, retryCaller: string) =>\n this.handle429Retry(retryAfter, retryCaller)\n );\n\n if (abort || event.data.keepAliveRetryCount >= RETRY_COUNT_THRESHOLD) {\n this.failoverImmediately = this.isCCFlow;\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n await uploadLogs();\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(RECONNECT_ON_FAILURE_UTIL);\n } else if (error.statusCode === 404) {\n this.handle404KeepaliveFailure(KEEPALIVE_UTIL);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n };\n }\n }\n });\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.webWorker) {\n this.webWorker.postMessage({type: WorkerMessageType.CLEAR_KEEPALIVE});\n this.webWorker.terminate();\n this.webWorker = undefined;\n }\n }\n\n public isReconnectPending(): boolean {\n return this.reconnectPending;\n }\n\n public async deregister() {\n try {\n await this.deleteRegistration(\n this.activeMobiusUrl as string,\n this.deviceInfo.device?.deviceId as string,\n this.deviceInfo.device?.clientDeviceUri as string\n );\n log.log('Registration successfully deregistered', {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n } catch (err) {\n log.warn(`Delete failed with Mobius: ${JSON.stringify(err)}`, {\n file: REGISTRATION_FILE,\n method: METHODS.DEREGISTER,\n });\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(RegistrationStatus.INACTIVE);\n this.clearFailoverState();\n }\n\n /**\n * Indicates whether the calling client is in a mode\n * to retry registration.\n */\n private isRegRetry(): boolean {\n return this.registerRetry;\n }\n\n /**\n * Sets the received value in instance variable\n * registerRetry for registration retry cases.\n *\n */\n private setRegRetry(value: boolean) {\n this.registerRetry = value;\n }\n\n /**\n * Restores the deviceInfo object in callingClient when receiving a 403 with error code 101.\n *\n */\n private getExistingDevice(restoreData: IDeviceInfo) {\n if (restoreData.devices && restoreData.devices.length > 0) {\n this.deviceInfo = {\n userId: restoreData.userId,\n device: restoreData.devices[0],\n keepaliveInterval: DEFAULT_KEEPALIVE_INTERVAL,\n rehomingIntervalMax: DEFAULT_REHOMING_INTERVAL_MAX,\n rehomingIntervalMin: DEFAULT_REHOMING_INTERVAL_MIN,\n };\n\n const stringToReplace = `${DEVICES_ENDPOINT_RESOURCE}/${restoreData.devices[0].deviceId}`;\n\n const uri = restoreData.devices[0].uri.replace(stringToReplace, '');\n this.setActiveMobiusUrl(uri);\n this.registrationStatus = RegistrationStatus.ACTIVE;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Invoked to re-register in cases when the registration\n * is lost due to some failure.\n * If there are active calls, it will only mark reconnectPending\n * as true and then retry will happen when this method gets\n * invoked again on receiving all calls cleared event from\n * callManager.\n *\n */\n public async reconnectOnFailure(caller: string) {\n log.info(METHOD_START_MESSAGE, {method: METHODS.RECONNECT_ON_FAILURE, file: REGISTRATION_FILE});\n this.reconnectPending = false;\n if (!this.isDeviceRegistered()) {\n if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\n const abort = await this.restorePreviousRegistration(caller);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(caller);\n }\n } else {\n this.reconnectPending = true;\n log.info('Active call(s) present, deferred reconnect till call cleanup.', {\n file: REGISTRATION_FILE,\n method: METHODS.RECONNECT_ON_FAILURE,\n });\n }\n }\n }\n}\n\n/*\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER,\n jwe?: string\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel, jwe);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAEA,IAAAK,MAAA,GAAAL,OAAA;AAOA,IAAAM,QAAA,GAAAN,OAAA;AAEA,IAAAO,QAAA,GAAAP,OAAA;AAEA,IAAAQ,OAAA,GAAAJ,sBAAA,CAAAJ,OAAA;AAEA,IAAAS,aAAA,GAAAL,sBAAA,CAAAJ,OAAA;AACA,IAAAU,OAAA,GAAAV,OAAA;AAWA,IAAAW,WAAA,GAAAX,OAAA;AA6BA,IAAAY,OAAA,GAAAZ,OAAA;AAA+D,SAAAa,2BAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,yBAAAC,OAAA,IAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,CAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,CAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,CAAA,IAAAD,CAAA,uBAAAA,CAAA,CAAAO,MAAA,IAAAL,CAAA,KAAAF,CAAA,GAAAE,CAAA,OAAAM,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,WAAAH,EAAA,IAAAR,CAAA,CAAAO,MAAA,KAAAK,IAAA,WAAAA,IAAA,MAAAC,KAAA,EAAAb,CAAA,CAAAQ,EAAA,UAAAP,CAAA,WAAAA,EAAAD,CAAA,UAAAA,CAAA,KAAAc,CAAA,EAAAL,CAAA,gBAAAM,SAAA,iJAAAC,CAAA,EAAAC,CAAA,OAAAC,CAAA,gBAAAR,CAAA,WAAAA,EAAA,IAAAR,CAAA,GAAAA,CAAA,CAAAiB,IAAA,CAAAnB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAX,CAAA,GAAAE,CAAA,CAAAkB,IAAA,WAAAH,CAAA,GAAAjB,CAAA,CAAAY,IAAA,EAAAZ,CAAA,KAAAC,CAAA,WAAAA,EAAAD,CAAA,IAAAkB,CAAA,OAAAF,CAAA,GAAAhB,CAAA,KAAAc,CAAA,WAAAA,EAAA,UAAAG,CAAA,YAAAf,CAAA,CAAAmB,MAAA,IAAAnB,CAAA,CAAAmB,MAAA,oBAAAH,CAAA,QAAAF,CAAA;AAAA,SAAAV,4BAAAN,CAAA,EAAAiB,CAAA,QAAAjB,CAAA,2BAAAA,CAAA,SAAAsB,iBAAA,CAAAtB,CAAA,EAAAiB,CAAA,OAAAf,CAAA,MAAAqB,QAAA,CAAAJ,IAAA,CAAAnB,CAAA,EAAAwB,KAAA,6BAAAtB,CAAA,IAAAF,CAAA,CAAAyB,WAAA,KAAAvB,CAAA,GAAAF,CAAA,CAAAyB,WAAA,CAAAC,IAAA,aAAAxB,CAAA,cAAAA,CAAA,GAAAyB,WAAA,CAAA3B,CAAA,oBAAAE,CAAA,+CAAA0B,IAAA,CAAA1B,CAAA,IAAAoB,iBAAA,CAAAtB,CAAA,EAAAiB,CAAA;AAAA,SAAAK,kBAAAtB,CAAA,EAAAiB,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAAjB,CAAA,CAAAO,MAAA,MAAAU,CAAA,GAAAjB,CAAA,CAAAO,MAAA,YAAAN,CAAA,MAAAU,CAAA,GAAAkB,KAAA,CAAAZ,CAAA,GAAAhB,CAAA,GAAAgB,CAAA,EAAAhB,CAAA,IAAAU,CAAA,CAAAV,CAAA,IAAAD,CAAA,CAAAC,CAAA,UAAAU,CAAA;AAAA,SAAAmB,QAAA7B,CAAA,EAAAD,CAAA,QAAAE,CAAA,GAAA6B,aAAA,CAAA9B,CAAA,OAAA+B,6BAAA,QAAAhB,CAAA,GAAAgB,6BAAA,CAAA/B,CAAA,GAAAD,CAAA,KAAAgB,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAAjC,CAAA,WAAAkC,gCAAA,CAAAjC,CAAA,EAAAD,CAAA,EAAAmC,UAAA,OAAAjC,CAAA,CAAAkC,IAAA,CAAAC,KAAA,CAAAnC,CAAA,EAAAc,CAAA,YAAAd,CAAA;AAAA,SAAAoC,cAAArC,CAAA,aAAAD,CAAA,MAAAA,CAAA,GAAAuC,SAAA,CAAAhC,MAAA,EAAAP,CAAA,UAAAE,CAAA,WAAAqC,SAAA,CAAAvC,CAAA,IAAAuC,SAAA,CAAAvC,CAAA,QAAAA,CAAA,OAAA8B,OAAA,CAAAU,MAAA,CAAAtC,CAAA,OAAAuC,OAAA,WAAAzC,CAAA,QAAA0C,gBAAA,CAAAC,OAAA,EAAA1C,CAAA,EAAAD,CAAA,EAAAE,CAAA,CAAAF,CAAA,SAAA4C,iCAAA,GAAAC,wBAAA,CAAA5C,CAAA,EAAA2C,iCAAA,CAAA1C,CAAA,KAAA4B,OAAA,CAAAU,MAAA,CAAAtC,CAAA,GAAAuC,OAAA,WAAAzC,CAAA,IAAA8C,sBAAA,CAAA7C,CAAA,EAAAD,CAAA,EAAAkC,gCAAA,CAAAhC,CAAA,EAAAF,CAAA,iBAAAC,CAAA;AAG/D;AACA;AACA;AAFA,IAGa8C,YAAY,GAAAC,OAAA,CAAAD,YAAA;EAgCvB;AACF;EACE,SAAAA,aACEE,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB,EAChBC,GAAY,EACZ;IAAA,IAAAC,gBAAA,CAAAZ,OAAA,QAAAI,YAAA;IAAA,IAAAL,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,kBApCe,EAAE;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,sBAee,CAAC,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,yBAGZ,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,4BACF,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,oBAEb,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,+BACM,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,6BAEP,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA;IAa/B,IAAI,CAACW,GAAG,GAAGA,GAAG;IACd,IAAI,CAACE,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACP,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACQ,QAAQ,GAAGR,WAAW,CAACS,SAAS,KAAKC,wBAAgB,CAACC,cAAc;IAEzE,IAAI,CAAC,IAAI,CAACL,YAAY,CAACM,QAAQ,CAAC,CAAC,EAAE;MACjCL,qBAAY,CAACM,QAAQ,CAACd,KAAK,CAAC;IAC9B;IACA,IAAI,CAACA,KAAK,GAAG,IAAI,CAACO,YAAY,CAACM,QAAQ,CAAC,CAAC;IACzC,IAAI,CAACE,MAAM,GAAG,IAAI,CAACf,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACF,MAAM;IAC/C,IAAI,CAACG,kBAAkB,GAAGC,0BAAkB,CAACC,IAAI;IACjD,IAAI,CAACC,wBAAwB,GAAG,CAAC;IACjCC,eAAG,CAACC,SAAS,CAACnB,QAAQ,EAAEoB,6BAAiB,CAAC;IAC1C,IAAI,CAACC,mBAAmB,GAAGC,yCAA6B;IACxD,IAAI,CAACC,mBAAmB,GAAGC,yCAA6B;IACxD,IAAI,CAAC1B,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC2B,WAAW,GAAG,IAAAC,uBAAc,EAAC,IAAI,CAAC9B,KAAK,EAAEC,WAAW,CAACS,SAAS,CAAC;IACpE,IAAI,CAACqB,aAAa,GAAG,IAAAC,yBAAgB,EAAC,IAAI,CAAChC,KAAK,EAAEC,WAAW,CAACS,SAAS,CAAC;IACxE,IAAI,CAACP,WAAW,GAAGA,WAAW;IAE9B,IAAI,CAAC8B,iBAAiB,GAAG,EAAE;IAC3B,IAAI,CAACC,gBAAgB,GAAG,EAAE;EAC5B;EAAC,WAAAC,aAAA,CAAAzC,OAAA,EAAAI,YAAA;IAAAsC,GAAA;IAAAxE,KAAA,EAED,SAAQyE,mBAAmBA,CAAA,EAAW;MACpC,UAAAC,MAAA,CAAUC,iCAAqB,OAAAD,MAAA,CAAI,IAAI,CAACvB,MAAM,IAAI,SAAS;IAC7D;EAAC;IAAAqB,GAAA;IAAAxE,KAAA,EAED,SAAQ4E,iBAAiBA,CAACC,aAAiC,EAAQ;MACjE,IAAI;QACFC,YAAY,CAACC,OAAO,CAAC,IAAI,CAACN,mBAAmB,CAAC,CAAC,EAAE,IAAAO,UAAA,CAAAlD,OAAA,EAAe+C,aAAa,CAAC,CAAC;MACjF,CAAC,CAAC,OAAOI,KAAK,EAAE;QACdvB,eAAG,CAACwB,IAAI,uDAAAR,MAAA,CAAuDS,MAAM,CAACF,KAAK,CAAC,GAAI;UAC9EG,IAAI,EAAExB,6BAAiB;UACvByB,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAb,GAAA;IAAAxE,KAAA,EAED,SAAQsF,kBAAkBA,CAAA,EAAS;MACjC,IAAI;QACFR,YAAY,CAACS,UAAU,CAAC,IAAI,CAACd,mBAAmB,CAAC,CAAC,CAAC;MACrD,CAAC,CAAC,OAAAe,OAAA,EAAM;QACN9B,eAAG,CAACwB,IAAI,CAAC,kDAAkD,EAAE;UAC3DE,IAAI,EAAExB,6BAAiB;UACvByB,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;EAAC;IAAAb,GAAA;IAAAxE,KAAA;MAAA,IAAAyF,eAAA,OAAAC,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAAC,QAAA;QAAA,IAAAC,WAAA,EAAAjB,aAAA,EAAAkB,WAAA,EAAAC,UAAA,EAAAC,EAAA;QAAA,OAAAN,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAA5F,IAAA;YAAA;cAAA4F,QAAA,CAAAC,IAAA;cAEUN,WAAW,GAAGhB,YAAY,CAACuB,OAAO,CAAC,IAAI,CAAC5B,mBAAmB,CAAC,CAAC,CAAC;cAC9DI,aAAa,GAAGiB,WAAW,GAC5BQ,IAAI,CAACC,KAAK,CAACT,WAAW,CAAC,GACxBU,SAAS;cAAA,MACT3B,aAAa,IAAI,CAAC,IAAI,CAAC4B,kBAAkB,CAAC,CAAC;gBAAAN,QAAA,CAAA5F,IAAA;gBAAA;cAAA;cACvCwF,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAC3CkE,UAAU,GACdnB,aAAa,CAACgC,WAAW,IAAId,WAAW,GAAGlB,aAAa,CAACiC,kBAAkB,CAAC;cAE9E,IAAI,CAACxB,kBAAkB,CAAC,CAAC;cAACa,QAAA,CAAA5F,IAAA;cAAA,OACpB,IAAI,CAACwG,kBAAkB,CAAClC,aAAa,CAACmC,OAAO,EAAEhB,UAAU,CAAC;YAAA;cAAA,OAAAG,QAAA,CAAAc,MAAA,WAEzD,IAAI;YAAA;cAAAd,QAAA,CAAA5F,IAAA;cAAA;YAAA;cAAA4F,QAAA,CAAAC,IAAA;cAAAH,EAAA,GAAAE,QAAA;cAGbzC,eAAG,CAACwB,IAAI,qCAAqC;gBAC3CE,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE;cACV,CAAC,CAAC;YAAC;cAAA,OAAAc,QAAA,CAAAc,MAAA,WAGE,KAAK;YAAA;YAAA;cAAA,OAAAd,QAAA,CAAAe,IAAA;UAAA;QAAA,GAAArB,OAAA;MAAA,CACb;MAAA,SAxBasB,cAAcA,CAAA;QAAA,OAAA1B,eAAA,CAAAjE,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAdyF,cAAc;IAAA;EAAA;IAAA3C,GAAA;IAAAxE,KAAA,EA0B5B,SAAOoH,kBAAkBA,CAAA,EAAW;MAClC,OAAO,IAAI,CAACC,eAAe;IAC7B;EAAC;IAAA7C,GAAA;IAAAxE,KAAA,EAED,SAAOsH,kBAAkBA,CAACC,GAAW,EAAE;MACrC7D,eAAG,CAAC8D,IAAI,IAAA9C,MAAA,CAAI+C,+BAAoB,YAAA/C,MAAA,CAAS6C,GAAG,GAAI;QAC9ClC,MAAM,EAAEqC,mBAAO,CAACC,oBAAoB;QACpCvC,IAAI,EAAExB;MACR,CAAC,CAAC;MACF,IAAI,CAACyD,eAAe,GAAGE,GAAG;MAC1B,IAAI,CAACtD,WAAW,CAAC2D,kBAAkB,CAACL,GAAG,CAAC;IAC1C;EAAC;IAAA/C,GAAA;IAAAxE,KAAA,EAED,SAAO6H,gBAAgBA,CAACxD,iBAA2B,EAAEC,gBAA0B,EAAE;MAC/EZ,eAAG,CAACA,GAAG,CAAC+D,+BAAoB,EAAE;QAACpC,MAAM,EAAEqC,mBAAO,CAACI,kBAAkB;QAAE1C,IAAI,EAAExB;MAAiB,CAAC,CAAC;MAC5F,IAAI,CAACS,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IAC1C;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAxE,KAAA;MAAA,IAAA+H,mBAAA,OAAArC,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAAoC,SAAiCT,GAAW,EAAEU,QAAgB,EAAEC,SAAiB;QAAA,IAAAC,SAAA;QAAA,IAAAC,QAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAlD,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA4C,SAAA;UAAA,kBAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAvI,IAAA;YAAA;cAAAuI,SAAA,CAAA1C,IAAA;cAAAiC,GAAA,GAG5DU,KAAK;cAAAT,GAAA,MAAA5D,MAAA,CAAI6C,GAAG,EAAA7C,MAAA,CAAGsE,qCAAyB,OAAAtE,MAAA,CAAIuD,QAAQ;cAAAM,GAAA,GAC3DU,oBAAY,CAACC,MAAM;cAAAV,GAAA,GAAA3G,gBAAA,CAAAC,OAAA;cAAA2G,GAAA,GAAA5G,gBAAA,CAAAC,OAAA;cAAA4G,GAAA,GAAA7G,gBAAA,CAAAC,OAAA;cAAA6G,GAAA,OAAA9G,gBAAA,CAAAC,OAAA,MAExBqH,4BAAgB,EAAGjB,SAAS;cAAAY,SAAA,CAAAvI,IAAA;cAAA,OACR,IAAI,CAAC6B,KAAK,CAACgH,WAAW,CAACC,YAAY,CAAC,CAAC;YAAA;cAAAT,GAAA,GAAAJ,GAAA,CAAAC,GAAA,CAAAC,GAAA,CAAAC,GAAA,mBAAAG,SAAA,CAAAQ,IAAA,oBAAA5E,MAAA,CAC3C6E,4BAAgB,OAAA7E,MAAA,CAAI,IAAA8E,QAAI,EAAC,CAAC,IACxCC,4BAAgB,EAAGC,8BAAkB;cAAAZ,SAAA,CAAAvI,IAAA;cAAA,OAAA8H,GAAA,CAAAC,GAAA;gBALxCjD,MAAM,EAAAkD,GAAA;gBACNoB,OAAO,EAAAf;cAAA;YAAA;cAFTR,QAAQ,GAAAU,SAAA,CAAAQ,IAAA;cAAAR,SAAA,CAAAvI,IAAA;cAAA;YAAA;cAAAuI,SAAA,CAAA1C,IAAA;cAAAyC,GAAA,GAAAC,SAAA;cAURpF,eAAG,CAACwB,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAlD,OAAA,EAAA+G,GAAoB,CAAC,GAAI;gBAC9DzD,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACkC;cAClB,CAAC,CAAC;cAACd,SAAA,CAAAvI,IAAA;cAAA,OAEG,IAAAsJ,kBAAU,EAAC,CAAC;YAAA;cAGpB,IAAI,CAACC,SAAS,CAACvG,0BAAkB,CAACwG,QAAQ,CAAC;cAC3C,IAAI,CAACxH,WAAW,CAACyH,mBAAW,CAACC,YAAY,CAAC;cAAC,OAAAnB,SAAA,CAAA7B,MAAA,YAAAkB,SAAA,GAEfC,QAAQ,cAAAD,SAAA,uBAARA,SAAA,CAAU+B,IAAI,CAAC,CAAC;YAAA;YAAA;cAAA,OAAApB,SAAA,CAAA5B,IAAA;UAAA;QAAA,GAAAc,QAAA;MAAA,CAC7C;MAAA,SAzBamC,kBAAkBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAvC,mBAAA,CAAAvG,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlByI,kBAAkB;IAAA;IA2BhC;AACF;AACA;AACA;IAHE;EAAA;IAAA3F,GAAA;IAAAxE,KAAA;MAAA,IAAAuK,iBAAA,OAAA7E,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA4E,SAA+BjD,GAAW;QAAA,IAAAkD,UAAA;QAAA,OAAA9E,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwE,SAAA;UAAA,kBAAAA,SAAA,CAAAtE,IAAA,GAAAsE,SAAA,CAAAnK,IAAA;YAAA;cAClCkK,UAAU,GAAG;gBACjBtH,MAAM,EAAE,IAAI,CAACA,MAAM;gBACnBwH,eAAe,EAAE,IAAI,CAACvI,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG;gBAC/ClF,WAAW,EAAE,IAAI,CAACI,GAAG,GAAAhB,aAAA,CAAAA,aAAA,KAAO,IAAI,CAACY,WAAW;kBAAEI,GAAG,EAAE,IAAI,CAACA;gBAAG,KAAI,IAAI,CAACJ;cACtE,CAAC;cAAA,OAAAqI,SAAA,CAAAzD,MAAA,WAE2B,IAAI,CAAC7E,KAAK,CAACwI,OAAO,CAAC;gBAC7CC,GAAG,KAAAnG,MAAA,CAAK6C,GAAG,WAAQ;gBACnBlC,MAAM,EAAE4D,oBAAY,CAAC6B,IAAI;gBACzBnB,OAAO,MAAA9H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJqH,4BAAgB,EAAGsB,UAAU,CAACE,eAAe,GAC7ClB,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDqB,IAAI,EAAEN,UAAU;gBAChBO,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAR,SAAA,CAAAxD,IAAA;UAAA;QAAA,GAAAsD,QAAA;MAAA,CACH;MAAA,SAjBaW,gBAAgBA,CAAAC,GAAA;QAAA,OAAAb,iBAAA,CAAA/I,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAhByJ,gBAAgB;IAAA;IAmB9B;AACF;AACA;AACA;IAHE;EAAA;IAAA3G,GAAA;IAAAxE,KAAA;MAAA,IAAAqL,4BAAA,OAAA3F,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA0F,SAA0CC,MAAc;QAAA,IAAAC,KAAA;QAAA,IAAAC,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwF,SAAA;UAAA,kBAAAA,SAAA,CAAAtF,IAAA,GAAAsF,SAAA,CAAAnL,IAAA;YAAA;cAClDkL,KAAK,GAAG,KAAK;cAAA,KAEb,IAAI,CAACpE,eAAe;gBAAAqE,SAAA,CAAAnL,IAAA;gBAAA;cAAA;cAAAmL,SAAA,CAAAnL,IAAA;cAAA,OACR,IAAI,CAACoL,8BAA8B,CAACJ,MAAM,EAAE,CAAC,IAAI,CAAClE,eAAe,CAAC,CAAC;YAAA;cAAjFoE,KAAK,GAAAC,SAAA,CAAApC,IAAA;cAAA,KACD,IAAI,CAACsC,UAAU;gBAAAF,SAAA,CAAAnL,IAAA;gBAAA;cAAA;cAAA,MACb,IAAI,CAACqL,UAAU,GAAGC,mCAAuB;gBAAAH,SAAA,CAAAnL,IAAA;gBAAA;cAAA;cAC3C;cACAuL,UAAU,kBAAApG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAmG,SAAA;gBAAA,OAAApG,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA8F,SAAA;kBAAA,kBAAAA,SAAA,CAAA5F,IAAA,GAAA4F,SAAA,CAAAzL,IAAA;oBAAA;sBAAAyL,SAAA,CAAAzL,IAAA;sBAAA,OACHiL,KAAI,CAACS,mBAAmB,CAACV,MAAM,CAAC;oBAAA;oBAAA;sBAAA,OAAAS,SAAA,CAAA9E,IAAA;kBAAA;gBAAA,GAAA6E,QAAA;cAAA,CACvC,IAAE,IAAI,CAACH,UAAU,GAAG,IAAI,CAAC;cAACF,SAAA,CAAAnL,IAAA;cAAA;YAAA;cAAA,MAE3B,IAAI,CAAC8D,iBAAiB,CAAC6H,QAAQ,CAAC,IAAI,CAAC7E,eAAe,CAAC,IACrD,IAAI,CAAC/C,gBAAgB,CAAC5E,MAAM,GAAG,CAAC;gBAAAgM,SAAA,CAAAnL,IAAA;gBAAA;cAAA;cAAAmL,SAAA,CAAAnL,IAAA;cAAA,OAGlB,IAAI,CAACoL,8BAA8B,CAACJ,MAAM,EAAE,IAAI,CAACjH,gBAAgB,CAAC;YAAA;cAAhFmH,KAAK,GAAAC,SAAA,CAAApC,IAAA;cAAAoC,SAAA,CAAAnL,IAAA;cAAA;YAAA;cAEL;cACA,IAAI,CAAC0L,mBAAmB,CAACV,MAAM,CAAC;YAAC;cAEnC,IAAI,CAACK,UAAU,GAAGpF,SAAS;cAAC,OAAAkF,SAAA,CAAAzE,MAAA,WAErB,IAAI;YAAA;cAAA,OAAAyE,SAAA,CAAAzE,MAAA,WAIRwE,KAAK;YAAA;YAAA;cAAA,OAAAC,SAAA,CAAAxE,IAAA;UAAA;QAAA,GAAAoE,QAAA;MAAA,CACb;MAAA,SA5Baa,2BAA2BA,CAAAC,GAAA;QAAA,OAAAf,4BAAA,CAAA7J,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3ByK,2BAA2B;IAAA;IA8BzC;AACF;AACA;IAFE;EAAA;IAAA3H,GAAA;IAAAxE,KAAA;MAAA,IAAAqM,0BAAA,OAAA3G,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAGA,SAAA0G,SAAwCf,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAqG,SAAA;UAAA,kBAAAA,SAAA,CAAAnG,IAAA,GAAAmG,SAAA,CAAAhM,IAAA;YAAA;cAAA,MAChDgL,MAAM,KAAKiB,0BAAc;gBAAAD,SAAA,CAAAhM,IAAA;gBAAA;cAAA;cAAAgM,SAAA,CAAAhM,IAAA;cAAA,OACP,IAAI,CAACoL,8BAA8B,CAACJ,MAAM,CAAC;YAAA;cAAzDE,KAAK,GAAAc,SAAA,CAAAjD,IAAA;cAAA,MAEP,CAACmC,KAAK,IAAI,CAAC,IAAI,CAAChF,kBAAkB,CAAC,CAAC;gBAAA8F,SAAA,CAAAhM,IAAA;gBAAA;cAAA;cAAAgM,SAAA,CAAAhM,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAwF,SAAA,CAAArF,IAAA;UAAA;QAAA,GAAAoF,QAAA;MAAA,CAGpC;MAAA,SARaG,yBAAyBA,CAAAC,GAAA;QAAA,OAAAL,0BAAA,CAAA7K,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAzB+K,yBAAyB;IAAA;IAUvC;AACF;AACA;IAFE;EAAA;IAAAjI,GAAA;IAAAxE,KAAA;MAAA,IAAA2M,eAAA,OAAAjH,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAGA,SAAAgH,SAA6BhB,UAAkB,EAAEL,MAAc;QAAA,IAAAsB,MAAA;QAAA,IAAAC,QAAA,EAAArB,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6G,SAAA;UAAA,kBAAAA,SAAA,CAAA3G,IAAA,GAAA2G,SAAA,CAAAxM,IAAA;YAAA;cAAA,MACzDgL,MAAM,KAAKyB,yBAAa;gBAAAD,SAAA,CAAAxM,IAAA;gBAAA;cAAA;cAAA,MACtB,IAAI,CAACkD,wBAAwB,IAAIwJ,wCAA4B;gBAAAF,SAAA,CAAAxM,IAAA;gBAAA;cAAA;cAAA,OAAAwM,SAAA,CAAA9F,MAAA;YAAA;cAIjE,IAAI,CAACiG,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAACzJ,wBAAwB,IAAI,CAAC;cAClCC,eAAG,CAACA,GAAG,mDAAAgB,MAAA,CAAmD,IAAI,CAACjB,wBAAwB,GAAI;gBACzF2B,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE8H;cACV,CAAC,CAAC;cACIL,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,IAAI,CAAC3J,wBAAwB,CAAC;cAExE,IAAI,CAAC4J,kBAAkB,CAACP,QAAQ,CAAC;cACjC,IAAI,CAACQ,iBAAiB,GAAG,IAAI;cAACP,SAAA,CAAAxM,IAAA;cAAA,OACV,IAAI,CAAC4L,2BAA2B,CAACgB,8BAAkB,CAAC;YAAA;cAAlE1B,KAAK,GAAAsB,SAAA,CAAAzD,IAAA;cAAA,MAEP,CAACmC,KAAK,IAAI,CAAC,IAAI,CAAChF,kBAAkB,CAAC,CAAC;gBAAAsG,SAAA,CAAAxM,IAAA;gBAAA;cAAA;cAAAwM,SAAA,CAAAxM,IAAA;cAAA,OAChC,IAAI,CAAC0L,mBAAmB,CAACkB,8BAAkB,CAAC;YAAA;cAAAJ,SAAA,CAAAxM,IAAA;cAAA;YAAA;cAE/C,IAAIgL,MAAM,KAAKiB,0BAAc,EAAE;gBACpC,IAAI,CAACe,mBAAmB,CAAC,CAAC;gBAC1BzB,UAAU,kBAAApG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA4H,SAAA;kBAAA,IAAAC,qBAAA;kBAAA,OAAA9H,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwH,SAAA;oBAAA,kBAAAA,SAAA,CAAAtH,IAAA,GAAAsH,SAAA,CAAAnN,IAAA;sBAAA;wBACTmD,eAAG,CAACA,GAAG,6BAAAgB,MAAA,CAA6BkH,UAAU,eAAY;0BACxDxG,IAAI,EAAExB,6BAAiB;0BACvByB,MAAM,EAAE8H;wBACV,CAAC,CAAC;;wBAEF;wBAAAO,SAAA,CAAAnN,IAAA;wBAAA,OACMsM,MAAI,CAACc,mBAAmB,EAAAF,qBAAA,GAC5BZ,MAAI,CAACpC,UAAU,CAACpH,MAAM,cAAAoK,qBAAA,uBAAtBA,qBAAA,CAAwB5C,GAAG,EAC3BgC,MAAI,CAACpC,UAAU,CAACmD,iBAAiB,EACjC,SACF,CAAC;sBAAA;sBAAA;wBAAA,OAAAF,SAAA,CAAAxG,IAAA;oBAAA;kBAAA,GAAAsG,QAAA;gBAAA,CACF,IAAE5B,UAAU,GAAG,IAAI,CAAC;cACvB,CAAC,MAAM;gBACL,IAAI,CAACA,UAAU,GAAGA,UAAU;cAC9B;YAAC;YAAA;cAAA,OAAAmB,SAAA,CAAA7F,IAAA;UAAA;QAAA,GAAA0F,QAAA;MAAA,CACF;MAAA,SAvCaiB,cAAcA,CAAAC,GAAA,EAAAC,GAAA;QAAA,OAAApB,eAAA,CAAAnL,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAdmM,cAAc;IAAA;IAyC5B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAArJ,GAAA;IAAAxE,KAAA,EAMA,SAAQoN,mBAAmBA,CAAA,EAAsB;MAAA,IAArBpG,OAAO,GAAAtF,SAAA,CAAAhC,MAAA,QAAAgC,SAAA,QAAA8E,SAAA,GAAA9E,SAAA,MAAG,CAAC;MACrC,OACEsM,2CAA+B,GAAAtH,IAAA,CAAAuH,GAAA,CAC/BC,kCAAsB,EAAIlH,OAAO,IACjCN,IAAI,CAACC,KAAK,CACR,CAACD,IAAI,CAACyH,MAAM,CAAC,CAAC,IAAIC,2CAA+B,GAAGC,+BAAmB,GAAG,CAAC,CAAC,GAC1EA,+BAAmB,IACnBA,+BACJ,CAAC;IAEL;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA7J,GAAA;IAAAxE,KAAA;MAAA,IAAAsO,mBAAA,OAAA5I,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAOA,SAAA2I,UAAA;QAAA,IAAAC,MAAA;QAAA,IAAAxH,OAAA;UAAAH,WAAA;UAAA4H,aAAA;UAAA3B,QAAA;UAAA4B,eAAA;UAAAC,SAAA;UAAAlD,KAAA;UAAAmD,aAAA;UAAAC,OAAA,GAAAnN,SAAA;QAAA,OAAAiE,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA4I,UAAA;UAAA,kBAAAA,UAAA,CAAA1I,IAAA,GAAA0I,UAAA,CAAAvO,IAAA;YAAA;cAAiCyG,OAAO,GAAA6H,OAAA,CAAAnP,MAAA,QAAAmP,OAAA,QAAArI,SAAA,GAAAqI,OAAA,MAAG,CAAC;cAAEhI,WAAW,GAAAgI,OAAA,CAAAnP,MAAA,QAAAmP,OAAA,QAAArI,SAAA,GAAAqI,OAAA,MAAG,CAAC;cACrDJ,aAAa,GAAG;gBACpBrJ,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE0J;cACV,CAAC;cAEGjC,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAACpG,OAAO,CAAC;cAE1C0H,eAAe,GAAGM,2CAA+B;cAEvD,IAAInI,WAAW,GAAGiG,QAAQ,GAAG4B,eAAe,EAAE;gBACtCC,SAAS,GAAG9H,WAAW,GAAGiG,QAAQ,GAAG4B,eAAe;gBAE1D5B,QAAQ,IAAI6B,SAAS;cACvB;cAEA,IAAI,IAAI,CAAC/C,UAAU,IAAI,IAAI,IAAIkB,QAAQ,GAAG,IAAI,CAAClB,UAAU,EAAE;gBACzD,IAAI,CAACqD,mBAAmB,GAAG,IAAI,CAACrD,UAAU,GAAG/E,WAAW,GAAG6H,eAAe;cAC5E;cAAC,MAGG5B,QAAQ,GAAGkB,2CAA+B,IAAI,CAAC,IAAI,CAACiB,mBAAmB;gBAAAH,UAAA,CAAAvO,IAAA;gBAAA;cAAA;cACnEqO,aAAa,GAAGlI,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;cAEnD,IAAI,IAAI,CAAC8J,UAAU,IAAI,IAAI,EAAE;gBAC3BkB,QAAQ,GAAGpG,IAAI,CAACwI,GAAG,CAACpC,QAAQ,EAAE,IAAI,CAAClB,UAAU,CAAC;cAChD;cAEA,IAAI,CAAChH,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAE8H,aAAa;gBACjCO,UAAU,EAAE;cACd,CAAC,CAAC;cAEFrD,UAAU,kBAAApG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAwJ,SAAA;gBAAA,OAAAzJ,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAmJ,SAAA;kBAAA,kBAAAA,SAAA,CAAAjJ,IAAA,GAAAiJ,SAAA,CAAA9O,IAAA;oBAAA;sBAAA8O,SAAA,CAAA9O,IAAA;sBAAA,OACHiO,MAAI,CAAClM,KAAK,CAACgN,YAAY,kBAAA5J,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA2J,SAAA;wBAAA,IAAAxJ,WAAA;wBAAA,OAAAJ,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAsJ,SAAA;0BAAA,kBAAAA,SAAA,CAAApJ,IAAA,GAAAoJ,SAAA,CAAAjP,IAAA;4BAAA;8BAAAiP,SAAA,CAAAjP,IAAA;8BAAA,OACdiO,MAAI,CAAC7C,8BAA8B,CAACoD,yBAAa,CAAC;4BAAA;8BAAhEtD,KAAK,GAAA+D,SAAA,CAAAlG,IAAA;8BACCvD,WAAW,GAAGW,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;8BAAA,MAE7C,CAAC2J,KAAK,IAAI,CAAC+C,MAAI,CAAC/H,kBAAkB,CAAC,CAAC;gCAAA+I,SAAA,CAAAjP,IAAA;gCAAA;8BAAA;8BAAAiP,SAAA,CAAAjP,IAAA;8BAAA,OAChCiO,MAAI,CAACzH,kBAAkB,CAACC,OAAO,GAAG,CAAC,EAAEH,WAAW,IAAId,WAAW,GAAG6I,aAAa,CAAC,CAAC;4BAAA;4BAAA;8BAAA,OAAAY,SAAA,CAAAtI,IAAA;0BAAA;wBAAA,GAAAqI,QAAA;sBAAA,CAE1F,GAAC;oBAAA;oBAAA;sBAAA,OAAAF,SAAA,CAAAnI,IAAA;kBAAA;gBAAA,GAAAkI,QAAA;cAAA,CACH,IAAEtC,QAAQ,GAAGuB,+BAAmB,CAAC;cAClC3K,eAAG,CAACA,GAAG,oCAAAgB,MAAA,CAC8BoI,QAAQ,qCAAApI,MAAA,CAAkCsC,OAAO,GACpFyH,aACF,CAAC;cAACK,UAAA,CAAAvO,IAAA;cAAA;YAAA;cAAA,KACO,IAAI,CAAC+D,gBAAgB,CAAC5E,MAAM;gBAAAoP,UAAA,CAAAvO,IAAA;gBAAA;cAAA;cACrC,IAAI,CAACqE,iBAAiB,CAAC;gBACrBoC,OAAO,EAAPA,OAAO;gBACPH,WAAW,EAAXA,WAAW;gBACXC,kBAAkB,EAAEJ,IAAI,CAACC,KAAK,CAAC,IAAAC,IAAA,CAAA9E,OAAA,EAAS,CAAC,GAAG,IAAI,CAAC;gBACjDqN,UAAU,EAAE;cACd,CAAC,CAAC;cAEFzL,eAAG,CAAC8D,IAAI,CAAC,iCAAiC,EAAEiH,aAAa,CAAC;cAC1D,IAAI,CAACQ,mBAAmB,GAAG,KAAK;cAACH,UAAA,CAAAvO,IAAA;cAAA,OACnB,IAAI,CAACoL,8BAA8B,CAACoD,yBAAa,EAAE,IAAI,CAACzK,gBAAgB,CAAC;YAAA;cAAvFmH,KAAK,GAAAqD,UAAA,CAAAxF,IAAA;cAEL,IAAI,CAACmC,KAAK,IAAI,CAAC,IAAI,CAAChF,kBAAkB,CAAC,CAAC,EAAE;gBACxCqG,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,CAAC;gBAErC,IAAI,IAAI,CAACxB,UAAU,IAAI,IAAI,IAAI,IAAI,CAACA,UAAU,GAAGC,mCAAuB,EAAE;kBACxEiB,QAAQ,GAAGA,QAAQ,GAAG,IAAI,CAAClB,UAAU,GAAG,IAAI,CAACA,UAAU,GAAGkB,QAAQ;gBACpE;gBAEAhB,UAAU,kBAAApG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA6J,UAAA;kBAAA,OAAA9J,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwJ,UAAA;oBAAA,kBAAAA,UAAA,CAAAtJ,IAAA,GAAAsJ,UAAA,CAAAnP,IAAA;sBAAA;wBAAAmP,UAAA,CAAAnP,IAAA;wBAAA,OACHiO,MAAI,CAAClM,KAAK,CAACgN,YAAY,kBAAA5J,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA+J,SAAA;0BAAA,OAAAhK,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA0J,SAAA;4BAAA,kBAAAA,SAAA,CAAAxJ,IAAA,GAAAwJ,SAAA,CAAArP,IAAA;8BAAA;gCAAAqP,SAAA,CAAArP,IAAA;gCAAA,OACdiO,MAAI,CAAC7C,8BAA8B,CAACoD,yBAAa,EAAEP,MAAI,CAAClK,gBAAgB,CAAC;8BAAA;gCAAvFmH,KAAK,GAAAmE,SAAA,CAAAtG,IAAA;gCAAA,MACD,CAACmC,KAAK,IAAI,CAAC+C,MAAI,CAAC/H,kBAAkB,CAAC,CAAC;kCAAAmJ,SAAA,CAAArP,IAAA;kCAAA;gCAAA;gCAAAqP,SAAA,CAAArP,IAAA;gCAAA,OAChC,IAAAsJ,kBAAU,EAAC,CAAC;8BAAA;gCAClB,IAAAgG,wBAAgB,EAAC,UAACC,WAAsB,EAAK;kCAC3CtB,MAAI,CAACjM,WAAW,CAACyH,mBAAW,CAAC+F,KAAK,EAAEvJ,SAAS,EAAEsJ,WAAW,CAAC;gCAC7D,CAAC,EAAErB,aAAa,CAAC;8BAAC;8BAAA;gCAAA,OAAAmB,SAAA,CAAA1I,IAAA;4BAAA;0BAAA,GAAAyI,QAAA;wBAAA,CAErB,GAAC;sBAAA;sBAAA;wBAAA,OAAAD,UAAA,CAAAxI,IAAA;oBAAA;kBAAA,GAAAuI,SAAA;gBAAA,CACH,IAAE3C,QAAQ,GAAGuB,+BAAmB,CAAC;gBAClC3K,eAAG,CAACA,GAAG,2CAAAgB,MAAA,CAA2CoI,QAAQ,gBAAa2B,aAAa,CAAC;cACvF;cAACK,UAAA,CAAAvO,IAAA;cAAA;YAAA;cAAAuO,UAAA,CAAAvO,IAAA;cAAA,OAEK,IAAAsJ,kBAAU,EAAC,CAAC;YAAA;cAClB,IAAAgG,wBAAgB,EAAC,UAACC,WAAsB,EAAK;gBAC3CtB,MAAI,CAACjM,WAAW,CAACyH,mBAAW,CAAC+F,KAAK,EAAEvJ,SAAS,EAAEsJ,WAAW,CAAC;cAC7D,CAAC,EAAErB,aAAa,CAAC;YAAC;YAAA;cAAA,OAAAK,UAAA,CAAA5H,IAAA;UAAA;QAAA,GAAAqH,SAAA;MAAA,CAErB;MAAA,SAvFaxH,kBAAkBA,CAAA;QAAA,OAAAuH,mBAAA,CAAA9M,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlBqF,kBAAkB;IAAA;IAyFhC;AACF;AACA;IAFE;EAAA;IAAAvC,GAAA;IAAAxE,KAAA,EAGA,SAAQkN,kBAAkBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAAC8C,aAAa,EAAE;QACtBC,YAAY,CAAC,IAAI,CAACD,aAAa,CAAC;QAChC,IAAI,CAACA,aAAa,GAAGxJ,SAAS;MAChC;IACF;EAAC;IAAAhC,GAAA;IAAAxE,KAAA;MAAA,IAAAkQ,gBAAA,OAAAxK,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAAuK,UAAA;QAAA,IAAAC,MAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAC,OAAA,EAAApI,QAAA,EAAAqI,KAAA,EAAAC,UAAA,EAAAC,GAAA,EAAAC,IAAA;QAAA,OAAAjL,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA2K,UAAA;UAAA,kBAAAA,UAAA,CAAAzK,IAAA,GAAAyK,UAAA,CAAAtQ,IAAA;YAAA;cAAA8P,SAAA,GAAAnR,0BAAA,CAE0B,IAAI,CAACmF,iBAAiB;cAAAwM,UAAA,CAAAzK,IAAA;cAAAiK,SAAA,CAAAxQ,CAAA;YAAA;cAAA,KAAAyQ,KAAA,GAAAD,SAAA,CAAAvQ,CAAA,IAAAC,IAAA;gBAAA8Q,UAAA,CAAAtQ,IAAA;gBAAA;cAAA;cAAnCgQ,SAAS,GAAAD,KAAA,CAAAtQ,KAAA;cAAA6Q,UAAA,CAAAzK,IAAA;cAEVoK,OAAO,GAAGD,SAAS,CAACO,OAAO,CAACC,wBAAY,EAAE,GAAG,CAAC,EACpD;cAAAF,UAAA,CAAAtQ,IAAA;cAAA,OACuB,IAAI,CAAC6B,KAAK,CAACwI,OAAO,CAAC;gBACxCC,GAAG,KAAAnG,MAAA,CAAK8L,OAAO,SAAM;gBACrBnL,MAAM,EAAE4D,oBAAY,CAAC+H,GAAG;gBACxBrH,OAAO,MAAA9H,gBAAA,CAAAC,OAAA,MAAAD,gBAAA,CAAAC,OAAA,MACJqH,4BAAgB,EAAG,IAAI,CAAC/G,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG,GACjDkC,4BAAgB,EAAGC,8BAAkB,CACvC;gBACDsB,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;cARI9C,QAAQ,GAAAyI,UAAA,CAAAvH,IAAA;cAAAmH,KAAA,GAUOrI,QAAQ,EAAtBsI,UAAU,GAAAD,KAAA,CAAVC,UAAU;cAAA,MACbA,UAAU,KAAK,GAAG;gBAAAG,UAAA,CAAAtQ,IAAA;gBAAA;cAAA;cACpBmD,eAAG,CAAC8D,IAAI,wCAAA9C,MAAA,CAAwC6L,SAAS,GAAI;gBAC3DnL,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE2H;cACV,CAAC,CAAC;cACFoD,MAAM,GAAG,IAAI;cAAC,OAAAS,UAAA,CAAA5J,MAAA;YAAA;cAAA4J,UAAA,CAAAtQ,IAAA;cAAA;YAAA;cAAAsQ,UAAA,CAAAzK,IAAA;cAAAuK,GAAA,GAAAE,UAAA;cAIhBnN,eAAG,CAACwB,IAAI,oCAAAR,MAAA,CAC6B6L,SAAS,mBAAA7L,MAAA,CAAgB,IAAAM,UAAA,CAAAlD,OAAA,EAAA6O,GAAoB,CAAC,GACjF;gBACEvL,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAE2H;cACV,CACF,CAAC;cACDoD,MAAM,GAAG,MAAM;YAAC;cAAAS,UAAA,CAAAtQ,IAAA;cAAA;YAAA;cAAAsQ,UAAA,CAAAtQ,IAAA;cAAA;YAAA;cAAAsQ,UAAA,CAAAzK,IAAA;cAAAwK,IAAA,GAAAC,UAAA;cAAAR,SAAA,CAAAjR,CAAA,CAAAwR,IAAA;YAAA;cAAAC,UAAA,CAAAzK,IAAA;cAAAiK,SAAA,CAAApQ,CAAA;cAAA,OAAA4Q,UAAA,CAAAI,MAAA;YAAA;cAAA,OAAAJ,UAAA,CAAA5J,MAAA,WAIbmJ,MAAM,KAAK,IAAI;YAAA;YAAA;cAAA,OAAAS,UAAA,CAAA3J,IAAA;UAAA;QAAA,GAAAiJ,SAAA;MAAA,CACvB;MAAA,SAtCae,eAAeA,CAAA;QAAA,OAAAhB,gBAAA,CAAA1O,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAfwP,eAAe;IAAA;IAwC7B;AACF;AACA;EAFE;IAAA1M,GAAA;IAAAxE,KAAA,EAGA,SAAQmR,kBAAkBA,CAAA,EAAY;MACpC,OAAO,IAAI,CAAC1K,kBAAkB,CAAC,CAAC,IAAI,IAAI,CAACpC,iBAAiB,CAAC+M,OAAO,CAAC,IAAI,CAAC/J,eAAe,CAAC,KAAK,CAAC,CAAC;IACjG;;IAEA;AACF;AACA;AACA;EAHE;IAAA7C,GAAA;IAAAxE,KAAA,EAIA,SAAQqR,mBAAmBA,CAAA,EAAW;MACpC,OAAO3K,IAAI,CAACC,KAAK,CACfD,IAAI,CAACyH,MAAM,CAAC,CAAC,IAAI,IAAI,CAACpK,mBAAmB,GAAG,IAAI,CAACF,mBAAmB,GAAG,CAAC,CAAC,GACvE,IAAI,CAACA,mBACT,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAW,GAAA;IAAAxE,KAAA,EAIA,SAAQsR,gBAAgBA,CAAA,EAAG;MACzB,IAAI,IAAI,CAACH,kBAAkB,CAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,IAAI,CAACnB,aAAa,EAAE;UACvB,IAAI,CAACvM,wBAAwB,GAAG,CAAC;UACjC,IAAM8N,iBAAiB,GAAG,IAAI,CAACF,mBAAmB,CAAC,CAAC;UAEpD,IAAI,CAAChE,kBAAkB,CAACkE,iBAAiB,GAAGC,kCAAsB,CAAC;QACrE;MACF,CAAC,MAAM;QACL,IAAI,CAAC/N,wBAAwB,GAAG,CAAC;QACjC,IAAI,CAACyJ,kBAAkB,CAAC,CAAC;MAC3B;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAA1I,GAAA;IAAAxE,KAAA,EAIA,SAAQqN,kBAAkBA,CAACoE,iBAAyB,EAAE;MAAA,IAAAC,MAAA;MACpD,IAAI,CAAC1B,aAAa,GAAGlE,UAAU,kBAAApG,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAC7B,SAAA+L,UAAA;QAAA,OAAAhM,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA0L,UAAA;UAAA,kBAAAA,UAAA,CAAAxL,IAAA,GAAAwL,UAAA,CAAArR,IAAA;YAAA;cAAA,OAAAqR,UAAA,CAAA3K,MAAA,WAAYyK,MAAI,CAACG,eAAe,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA1K,IAAA;UAAA;QAAA,GAAAyK,SAAA;MAAA,KAClCF,iBAAiB,GAAGpD,+BACtB,CAAC;MACD3K,eAAG,CAACA,GAAG,6BAAAgB,MAAA,CAA6B+M,iBAAiB,gBAAa;QAChErM,IAAI,EAAExB,6BAAiB;QACvByB,MAAM,EAAE,IAAI,CAACgI,kBAAkB,CAACxM;MAClC,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA2D,GAAA;IAAAxE,KAAA;MAAA,IAAA8R,gBAAA,OAAApM,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAAmM,UAAA;QAAA,IAAAC,MAAA;QAAA,OAAArM,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA+L,UAAA;UAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAA1R,IAAA;YAAA;cAAA0R,UAAA,CAAA1R,IAAA;cAAA,OACQ,IAAI,CAAC+B,KAAK,CAACgN,YAAY,kBAAA5J,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAAsM,UAAA;gBAAA,IAAAC,mBAAA,EAAA1G,KAAA,EAAA2G,QAAA;gBAAA,OAAAzM,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAmM,UAAA;kBAAA,kBAAAA,UAAA,CAAAjM,IAAA,GAAAiM,UAAA,CAAA9R,IAAA;oBAAA;sBAAA,KACxByR,MAAI,CAACb,kBAAkB,CAAC,CAAC;wBAAAkB,UAAA,CAAA9R,IAAA;wBAAA;sBAAA;sBAAA8R,UAAA,CAAA9R,IAAA;sBAAA,OACOyR,MAAI,CAACd,eAAe,CAAC,CAAC;oBAAA;sBAAlDiB,mBAAmB,GAAAE,UAAA,CAAA/I,IAAA;sBAAA,MACrB,IAAAgJ,KAAA,CAAAxQ,OAAA,EAAYkQ,MAAI,CAAC/N,WAAW,CAACsO,cAAc,CAAC,CAAC,CAAC,CAAC7S,MAAM,KAAK,CAAC,IAAIyS,mBAAmB;wBAAAE,UAAA,CAAA9R,IAAA;wBAAA;sBAAA;sBACpFmD,eAAG,CAAC8D,IAAI,oCAAoC;wBAC1CpC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAE2M,MAAI,CAACH,eAAe,CAAChR;sBAC/B,CAAC,CAAC;sBAACwR,UAAA,CAAA9R,IAAA;sBAAA,OACGyR,MAAI,CAACQ,UAAU,CAAC,CAAC;oBAAA;sBAAAH,UAAA,CAAA9R,IAAA;sBAAA,OACHyR,MAAI,CAACrG,8BAA8B,CAACqB,yBAAa,CAAC;oBAAA;sBAAhEvB,KAAK,GAAA4G,UAAA,CAAA/I,IAAA;sBAAA,MAEP0I,MAAI,CAAC1E,iBAAiB,IAAI7B,KAAK,IAAIuG,MAAI,CAACvL,kBAAkB,CAAC,CAAC;wBAAA4L,UAAA,CAAA9R,IAAA;wBAAA;sBAAA;sBAAA,OAAA8R,UAAA,CAAApL,MAAA;oBAAA;sBAAAoL,UAAA,CAAA9R,IAAA;sBAAA,OAIzCyR,MAAI,CAAC7F,2BAA2B,CAACa,yBAAa,CAAC;oBAAA;sBAAhEoF,QAAQ,GAAAC,UAAA,CAAA/I,IAAA;sBAAA,KAEV8I,QAAQ;wBAAAC,UAAA,CAAA9R,IAAA;wBAAA;sBAAA;sBACVyR,MAAI,CAAC9E,kBAAkB,CAAC,CAAC;sBAAC,OAAAmF,UAAA,CAAApL,MAAA;oBAAA;sBAAA,IAKvB+K,MAAI,CAACvL,kBAAkB,CAAC,CAAC;wBAAA4L,UAAA,CAAA9R,IAAA;wBAAA;sBAAA;sBAAA8R,UAAA,CAAA9R,IAAA;sBAAA,OACtByR,MAAI,CAAC/F,mBAAmB,CAAC+F,MAAI,CAACH,eAAe,CAAChR,IAAI,CAAC;oBAAA;sBAAAwR,UAAA,CAAA9R,IAAA;sBAAA;oBAAA;sBAEzDyR,MAAI,CAAChC,aAAa,GAAGxJ,SAAS;sBAC9BwL,MAAI,CAACV,gBAAgB,CAAC,CAAC;oBAAC;sBAAAe,UAAA,CAAA9R,IAAA;sBAAA;oBAAA;sBAG1BmD,eAAG,CAAC8D,IAAI,CACN,mFAAmF,EACnF;wBACEpC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAE2M,MAAI,CAACH,eAAe,CAAChR;sBAC/B,CACF,CAAC;sBACDmR,MAAI,CAAChC,aAAa,GAAGxJ,SAAS;sBAC9BwL,MAAI,CAACV,gBAAgB,CAAC,CAAC;oBAAC;oBAAA;sBAAA,OAAAe,UAAA,CAAAnL,IAAA;kBAAA;gBAAA,GAAAgL,SAAA;cAAA,CAG7B,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA/K,IAAA;UAAA;QAAA,GAAA6K,SAAA;MAAA,CACH;MAAA,SA3CaF,eAAeA,CAAA;QAAA,OAAAC,gBAAA,CAAAtQ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAfmQ,eAAe;IAAA;IA6C7B;AACF;AACA;AACA;AACA;AACA;IALE;EAAA;IAAArN,GAAA;IAAAxE,KAAA,EAMA,SAAQyS,iBAAiBA,CAAChI,UAAuB,EAAE;MACjD,IAAI,IAAI,CAACpG,iBAAiB,CAAC+M,OAAO,CAAC,IAAI,CAAC/J,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D,IAAI,CAACxD,mBAAmB,GAAG4G,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE5G,mBAAmB,GACtD4G,UAAU,CAAC5G,mBAAmB,GAC9BC,yCAA6B;QACjC,IAAI,CAACC,mBAAmB,GAAG0G,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAE1G,mBAAmB,GACtD0G,UAAU,CAAC1G,mBAAmB,GAC9BC,yCAA6B;MACnC;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAQ,GAAA;IAAAxE,KAAA,EAIA,SAAO0S,aAAaA,CAAA,EAAgB;MAClC,OAAO,IAAI,CAACjI,UAAU;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAjG,GAAA;IAAAxE,KAAA,EAMA,SAAOyG,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAACnD,kBAAkB,KAAKC,0BAAkB,CAACoP,MAAM;IAC9D;EAAC;IAAAnO,GAAA;IAAAxE,KAAA,EAED,SAAO4S,SAASA,CAAA,EAAuB;MACrC,OAAO,IAAI,CAACtP,kBAAkB;IAChC;EAAC;IAAAkB,GAAA;IAAAxE,KAAA,EAED,SAAO8J,SAASA,CAAC9J,KAAyB,EAAE;MAC1C,IAAI,CAACsD,kBAAkB,GAAGtD,KAAK;IACjC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAwE,GAAA;IAAAxE,KAAA;MAAA,IAAA6S,oBAAA,OAAAnN,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAKA,SAAAkN,UAAkCvH,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6M,UAAA;UAAA,kBAAAA,UAAA,CAAA3M,IAAA,GAAA2M,UAAA,CAAAxS,IAAA;YAAA;cAC9C;AACJ;AACA;AACA;cACI,IAAI,CAAC2M,kBAAkB,CAAC,CAAC;cACzB,IAAI,CAACzJ,wBAAwB,GAAG,CAAC;cAACsP,UAAA,CAAAxS,IAAA;cAAA,OACd,IAAI,CAACoL,8BAA8B,CAACJ,MAAM,EAAE,IAAI,CAAClH,iBAAiB,CAAC;YAAA;cAAjFoH,KAAK,GAAAsH,UAAA,CAAAzJ,IAAA;cAAA,MAEP,CAACmC,KAAK,IAAI,CAAC,IAAI,CAAChF,kBAAkB,CAAC,CAAC;gBAAAsM,UAAA,CAAAxS,IAAA;gBAAA;cAAA;cAAAwS,UAAA,CAAAxS,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAgM,UAAA,CAAA7L,IAAA;UAAA;QAAA,GAAA4L,SAAA;MAAA,CAElC;MAAA,SAZa7G,mBAAmBA,CAAA+G,GAAA;QAAA,OAAAH,oBAAA,CAAArR,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBuK,mBAAmB;IAAA;IAcjC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAzH,GAAA;IAAAxE,KAAA;MAAA,IAAAiT,4BAAA,OAAAvN,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAKA,SAAAsN,UAAyCC,KAAc;QAAA,IAAAC,MAAA;QAAA,OAAAzN,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAmN,UAAA;UAAA,kBAAAA,UAAA,CAAAjN,IAAA,GAAAiN,UAAA,CAAA9S,IAAA;YAAA;cACrDmD,eAAG,CAAC8D,IAAI,CAACC,+BAAoB,EAAE;gBAC7BpC,MAAM,EAAEqC,mBAAO,CAAC4L,6BAA6B;gBAC7ClO,IAAI,EAAExB;cACR,CAAC,CAAC;cAACyP,UAAA,CAAA9S,IAAA;cAAA,OACG,IAAI,CAAC+B,KAAK,CAACgN,YAAY,kBAAA5J,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA2N,UAAA;gBAAA,IAAA9H,KAAA;gBAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAsN,UAAA;kBAAA,kBAAAA,UAAA,CAAApN,IAAA,GAAAoN,UAAA,CAAAjT,IAAA;oBAAA;sBAAA,KAExB4S,KAAK;wBAAAK,UAAA,CAAAjT,IAAA;wBAAA;sBAAA;sBACPmD,eAAG,CAACA,GAAG,CAAC,kEAAkE,EAAE;wBAC1E0B,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEqC,mBAAO,CAAC4L;sBAClB,CAAC,CAAC;sBACFF,MAAI,CAAC7F,mBAAmB,CAAC,CAAC;sBAAC,KACvB6F,MAAI,CAAC3M,kBAAkB,CAAC,CAAC;wBAAA+M,UAAA,CAAAjT,IAAA;wBAAA;sBAAA;sBAAAiT,UAAA,CAAAjT,IAAA;sBAAA,OAErB6S,MAAI,CAACZ,UAAU,CAAC,CAAC;oBAAA;sBAAA,KAQrBY,MAAI,CAAC/L,eAAe;wBAAAmM,UAAA,CAAAjT,IAAA;wBAAA;sBAAA;sBAAAiT,UAAA,CAAAjT,IAAA;sBAAA,OAOF6S,MAAI,CAACjH,2BAA2B,CAClDzE,mBAAO,CAAC4L,6BACV,CAAC;oBAAA;sBAFK7H,KAAK,GAAA+H,UAAA,CAAAlK,IAAA;sBAAA,MAIP,CAACmC,KAAK,IAAI,CAAC2H,MAAI,CAAC3M,kBAAkB,CAAC,CAAC;wBAAA+M,UAAA,CAAAjT,IAAA;wBAAA;sBAAA;sBAAAiT,UAAA,CAAAjT,IAAA;sBAAA,OAChC6S,MAAI,CAACnH,mBAAmB,CAACvE,mBAAO,CAAC4L,6BAA6B,CAAC;oBAAA;sBAGzEH,KAAK,GAAG,KAAK;oBAAC;oBAAA;sBAAA,OAAAK,UAAA,CAAAtM,IAAA;kBAAA;gBAAA,GAAAqM,SAAA;cAAA,CAEjB,GAAC;YAAA;cAAA,OAAAF,UAAA,CAAApM,MAAA,WAEKkM,KAAK;YAAA;YAAA;cAAA,OAAAE,UAAA,CAAAnM,IAAA;UAAA;QAAA,GAAAgM,SAAA;MAAA,CACb;MAAA,SA3CYO,2BAA2BA,CAAAC,GAAA;QAAA,OAAAT,4BAAA,CAAAzR,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA3B+R,2BAA2B;IAAA;IA6CxC;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAjP,GAAA;IAAAxE,KAAA,EAKA,SAAQ2T,2BAA2BA,CAAA,EAAG;MAAA,IAAAC,MAAA;MACpC;QAAA,IAAAC,KAAA,OAAAnO,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAO,SAAAkO,UAAOC,WAAwB,EAAExI,MAAc;UAAA,IAAAyI,UAAA,EAAAC,OAAA,EAAAC,UAAA;UAAA,OAAAvO,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAiO,UAAA;YAAA,kBAAAA,UAAA,CAAA/N,IAAA,GAAA+N,UAAA,CAAA5T,IAAA;cAAA;gBAC9CyT,UAAU,GAAG;kBAAC5O,IAAI,EAAExB,6BAAiB;kBAAEyB,MAAM,EAAEkG;gBAAM,CAAC;gBAAA,IACvDqI,MAAI,CAACQ,UAAU,CAAC,CAAC;kBAAAD,UAAA,CAAA5T,IAAA;kBAAA;gBAAA;gBACpBmD,eAAG,CAAC8D,IAAI,CAAC,uCAAuC,EAAEwM,UAAU,CAAC;gBACvDC,OAAO,GAAGL,MAAI,CAACS,iBAAiB,CAACN,WAAW,CAAC;gBAAA,KAE/CE,OAAO;kBAAAE,UAAA,CAAA5T,IAAA;kBAAA;gBAAA;gBACTqT,MAAI,CAACU,WAAW,CAAC,IAAI,CAAC;gBAACH,UAAA,CAAA5T,IAAA;gBAAA,OACjBqT,MAAI,CAACpB,UAAU,CAAC,CAAC;cAAA;gBAAA2B,UAAA,CAAA5T,IAAA;gBAAA,OACEqT,MAAI,CAACzH,2BAA2B,CAACZ,MAAM,CAAC;cAAA;gBAA3D2I,UAAU,GAAAC,UAAA,CAAA7K,IAAA;gBAChBsK,MAAI,CAACU,WAAW,CAAC,KAAK,CAAC;gBACvB,IAAIV,MAAI,CAACnN,kBAAkB,CAAC,CAAC,EAAE;kBAC7B/C,eAAG,CAAC8D,IAAI,CAAC,qCAAqC,EAAEwM,UAAU,CAAC;gBAC7D;gBAAC,OAAAG,UAAA,CAAAlN,MAAA,WAEMiN,UAAU;cAAA;gBAEnBN,MAAI,CAACrR,WAAW,CAACyH,mBAAW,CAACC,YAAY,CAAC;gBAACkK,UAAA,CAAA5T,IAAA;gBAAA;cAAA;gBAE3CqT,MAAI,CAACrR,WAAW,CAACyH,mBAAW,CAACC,YAAY,CAAC;cAAC;gBAAA,OAAAkK,UAAA,CAAAlN,MAAA,WAGtC,KAAK;cAAA;cAAA;gBAAA,OAAAkN,UAAA,CAAAjN,IAAA;YAAA;UAAA,GAAA4M,SAAA;QAAA,CACb;QAAA,iBAAAS,GAAA,EAAAC,IAAA;UAAA,OAAAX,KAAA,CAAArS,KAAA,OAAAE,SAAA;QAAA;MAAA;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAA8C,GAAA;IAAAxE,KAAA;MAAA,IAAAyU,oBAAA,OAAA/O,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA8O,UAAA;QAAA,IAAAjJ,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAyO,UAAA;UAAA,kBAAAA,UAAA,CAAAvO,IAAA,GAAAuO,UAAA,CAAApU,IAAA;YAAA;cAAAoU,UAAA,CAAApU,IAAA;cAAA,OACY,IAAI,CAAC4G,cAAc,CAAC,CAAC;YAAA;cAAA,KAAAwN,UAAA,CAAArL,IAAA;gBAAAqL,UAAA,CAAApU,IAAA;gBAAA;cAAA;cAAA,OAAAoU,UAAA,CAAA1N,MAAA;YAAA;cAAA,MAI3B,IAAI,CAAC5C,iBAAiB,CAAC3E,MAAM,GAAG,CAAC;gBAAAiV,UAAA,CAAApU,IAAA;gBAAA;cAAA;cAAAoU,UAAA,CAAApU,IAAA;cAAA,OACf,IAAI,CAACoL,8BAA8B,CACrDiJ,6BAAiB,EACjB,IAAI,CAACvQ,iBACP,CAAC;YAAA;cAHKoH,KAAK,GAAAkJ,UAAA,CAAArL,IAAA;cAAA,MAKP,CAAC,IAAI,CAAC7C,kBAAkB,CAAC,CAAC,IAAI,CAACgF,KAAK;gBAAAkJ,UAAA,CAAApU,IAAA;gBAAA;cAAA;cAAAoU,UAAA,CAAApU,IAAA;cAAA,OAChC,IAAI,CAACwG,kBAAkB,CAAC,CAAC;YAAA;YAAA;cAAA,OAAA4N,UAAA,CAAAzN,IAAA;UAAA;QAAA,GAAAwN,SAAA;MAAA,CAGpC;MAAA,SAfYG,mBAAmBA,CAAA;QAAA,OAAAJ,oBAAA,CAAAjT,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBmT,mBAAmB;IAAA;IAiBhC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;IAPE;EAAA;IAAArQ,GAAA;IAAAxE,KAAA;MAAA,IAAA8U,+BAAA,OAAApP,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAQA,SAAAmP,UACExJ,MAAc;QAAA,IAAAyJ,MAAA;QAAA,IAAAC,OAAA;UAAAxJ,KAAA;UAAAyJ,UAAA;UAAAC,MAAA;UAAAC,KAAA;UAAAC,IAAA;UAAAC,OAAA,GAAA5T,SAAA;UAAA6T,IAAA;QAAA,OAAA5P,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAsP,UAAA;UAAA,kBAAAA,UAAA,CAAApP,IAAA,GAAAoP,UAAA,CAAAjV,IAAA;YAAA;cACd0U,OAAiB,GAAAK,OAAA,CAAA5V,MAAA,QAAA4V,OAAA,QAAA9O,SAAA,GAAA8O,OAAA,MAAG,IAAI,CAACjR,iBAAiB;cAEtCoH,KAAK,GAAG,KAAK;cACjB,IAAI,CAACG,UAAU,GAAGpF,SAAS;cAAC,KAExB,IAAI,CAACyI,mBAAmB;gBAAAuG,UAAA,CAAAjV,IAAA;gBAAA;cAAA;cAAA,OAAAiV,UAAA,CAAAvO,MAAA,WACnBwE,KAAK;YAAA;cAAA,KAGV,IAAI,CAAChF,kBAAkB,CAAC,CAAC;gBAAA+O,UAAA,CAAAjV,IAAA;gBAAA;cAAA;cAC3BmD,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CAAK6G,MAAM,2CAAA7G,MAAA,CAAwC,IAAI,CAAC2C,eAAe,GAAI;gBACjFjC,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEoQ;cACV,CAAC,CAAC;cAAC,OAAAD,UAAA,CAAAvO,MAAA,WAEIwE,KAAK;YAAA;cAAAyJ,UAAA,GAAAhW,0BAAA,CAEI+V,OAAO;cAAAO,UAAA,CAAApP,IAAA;cAAAgP,KAAA,gBAAAzP,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,UAAAwP,MAAA;gBAAA,IAAAM,qBAAA;gBAAA,IAAAnO,GAAA,EAAA4H,UAAA,EAAAwG,qBAAA,EAAAC,aAAA,EAAAC,qBAAA,EAAAC,cAAA,EAAAC,sBAAA,EAAAC,IAAA,EAAAjL,IAAA,EAAAkL,IAAA;gBAAA,OAAAtQ,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAgQ,UAAA;kBAAA,kBAAAA,UAAA,CAAA9P,IAAA,GAAA8P,UAAA,CAAA3V,IAAA;oBAAA;sBAAdgH,GAAG,GAAA4N,MAAA,CAAAnV,KAAA;sBACNmP,UAAU,GACb6F,MAAI,CAAC3Q,iBAAiB,CAAC6H,QAAQ,CAAC3E,GAAG,CAAC,IAAI,SAAS,IACjD,EAAAmO,qBAAA,GAAAV,MAAI,CAAC1Q,gBAAgB,cAAAoR,qBAAA,uBAArBA,qBAAA,CAAuBxJ,QAAQ,CAAC3E,GAAG,CAAC,KAAI,QAAS,IAClD,SAAS;sBAAA2O,UAAA,CAAA9P,IAAA;sBAETqF,KAAK,GAAG,KAAK;sBACbuJ,MAAI,CAAC1R,kBAAkB,GAAGC,0BAAkB,CAACwG,QAAQ;sBACrDiL,MAAI,CAACzS,WAAW,CAACyH,mBAAW,CAACmM,UAAU,CAAC;sBACxCzS,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CAAK6G,MAAM,iCAAA7G,MAAA,CAA8B6C,GAAG,GAAI;wBACtDnC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEoQ;sBACV,CAAC,CAAC;sBACF;sBAAAS,UAAA,CAAA3V,IAAA;sBAAA,OACmByU,MAAI,CAAC7J,gBAAgB,CAAC5D,GAAG,CAAC;oBAAA;sBAAvCyO,IAAI,GAAAE,UAAA,CAAA5M,IAAA;sBACV0L,MAAI,CAAC1P,kBAAkB,CAAC,CAAC;sBACzB0P,MAAI,CAACvK,UAAU,GAAGuL,IAAI,CAACjL,IAAmB;sBAC1CiK,MAAI,CAAC1R,kBAAkB,GAAGC,0BAAkB,CAACoP,MAAM;sBACnDqC,MAAI,CAAC1N,kBAAkB,CAACC,GAAG,CAAC;sBAC5ByN,MAAI,CAACzS,WAAW,CAACyH,mBAAW,CAACoM,UAAU,EAAEJ,IAAI,CAACjL,IAAmB,CAAC;sBAClErH,eAAG,CAACA,GAAG,0CAAAgB,MAAA,EAAAiR,qBAAA,GACoCX,MAAI,CAACvK,UAAU,CAACpH,MAAM,cAAAsS,qBAAA,uBAAtBA,qBAAA,CAAwB1N,QAAQ,eAAAvD,MAAA,CAAYsQ,MAAI,CAAC7R,MAAM,2BAAAuB,MAAA,EAAAkR,aAAA,GAAwBI,IAAI,CAACrM,OAAO,cAAAiM,aAAA,uBAAZA,aAAA,CAAcS,UAAU,GAChJ;wBACEjR,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAEqC,mBAAO,CAAC4O;sBAClB,CACF,CAAC;sBACDtB,MAAI,CAACvC,iBAAiB,CAACuC,MAAI,CAACvK,UAAU,CAAC;sBACvCuK,MAAI,CAAC7Q,aAAa,CAACoS,aAAa,CAACvB,MAAI,CAACvK,UAAU,CAAC;sBACjDuK,MAAI,CAAC7Q,aAAa,CAACqS,wBAAwB,CACzCC,mBAAY,CAACC,YAAY,EACzBC,iBAAU,CAACL,QAAQ,EACnBM,kBAAW,CAACC,UAAU,EACtBtL,MAAM,EACN4D,UAAU,GAAA0G,qBAAA,IAAAC,cAAA,GACVE,IAAI,CAACrM,OAAO,cAAAmM,cAAA,uBAAZA,cAAA,CAAcO,UAAU,cAAAR,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9BrP,SAAS,EACTA,SACF,CAAC;sBACDwO,MAAI,CAACrH,mBAAmB,EAAAoI,sBAAA,GACtBf,MAAI,CAACvK,UAAU,CAACpH,MAAM,cAAA0S,sBAAA,uBAAtBA,sBAAA,CAAwBlL,GAAG,EAC3BmK,MAAI,CAACvK,UAAU,CAACmD,iBAAiB,EACjCuB,UACF,CAAC;sBACD6F,MAAI,CAAC1D,gBAAgB,CAAC,CAAC;sBAAC,OAAA4E,UAAA,CAAAjP,MAAA;oBAAA;sBAAAiP,UAAA,CAAA9P,IAAA;sBAAA6P,IAAA,GAAAC,UAAA;sBAGlBnL,IAAI,GAAAkL,IAAA,EACV;sBAAAC,UAAA,CAAA3V,IAAA;sBAAA,OACc,IAAAuW,gCAAwB,EACpC/L,IAAI,EACJ,UAAC+E,WAAW,EAAEoE,UAAU,EAAK;wBAAA,IAAA6C,qBAAA,EAAAC,aAAA;wBAC3B,IAAI9C,UAAU,EAAE;0BACdc,MAAI,CAACzS,WAAW,CAACyH,mBAAW,CAAC+F,KAAK,EAAEvJ,SAAS,EAAEsJ,WAAW,CAAC;wBAC7D,CAAC,MAAM;0BACLkF,MAAI,CAACzS,WAAW,CAACyH,mBAAW,CAACC,YAAY,CAAC;wBAC5C;wBACA+K,MAAI,CAAC7Q,aAAa,CAACqS,wBAAwB,CACzCC,mBAAY,CAACQ,kBAAkB,EAC/BN,iBAAU,CAACL,QAAQ,EACnBM,kBAAW,CAACC,UAAU,EACtBtL,MAAM,EACN4D,UAAU,GAAA4H,qBAAA,IAAAC,aAAA,GACVjM,IAAI,CAACpB,OAAO,cAAAqN,aAAA,uBAAZA,aAAA,CAAcX,UAAU,cAAAU,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC9BvQ,SAAS,EACTsJ,WACF,CAAC;sBACH,CAAC,EACD;wBAACzK,MAAM,EAAEkG,MAAM;wBAAEnG,IAAI,EAAExB;sBAAiB,CAAC,EACzC,UAACgI,UAAkB,EAAEsL,WAAmB;wBAAA,OAAKlC,MAAI,CAACnH,cAAc,CAACjC,UAAU,EAAEsL,WAAW,CAAC;sBAAA,GACzFlC,MAAI,CAACrB,2BAA2B,CAAC,CACnC,CAAC;oBAAA;sBAtBDlI,KAAK,GAAAyK,UAAA,CAAA5M,IAAA;sBAAA,MAuBD0L,MAAI,CAAC1R,kBAAkB,KAAKC,0BAAkB,CAACoP,MAAM;wBAAAuD,UAAA,CAAA3V,IAAA;wBAAA;sBAAA;sBACvDmD,eAAG,CAAC8D,IAAI,KAAA9C,MAAA,CACF6G,MAAM,yDAAA7G,MAAA,CAAsDsQ,MAAI,CAAC3N,eAAe,GACpF;wBACEjC,IAAI,EAAExB,6BAAiB;wBACvByB,MAAM,EAAE2P,MAAI,CAACrJ,8BAA8B,CAAC9K;sBAC9C,CACF,CAAC;sBAAC,OAAAqV,UAAA,CAAAjP,MAAA;oBAAA;sBAAA,KAGAwE,KAAK;wBAAAyK,UAAA,CAAA3V,IAAA;wBAAA;sBAAA;sBACPyU,MAAI,CAAClL,SAAS,CAACvG,0BAAkB,CAACwG,QAAQ,CAAC;sBAC3C;sBAAAmM,UAAA,CAAA3V,IAAA;sBAAA,OACM,IAAAsJ,kBAAU,EAAC,CAAC;oBAAA;sBAAA,OAAAqM,UAAA,CAAAjP,MAAA;oBAAA;oBAAA;sBAAA,OAAAiP,UAAA,CAAAhP,IAAA;kBAAA;gBAAA,GAAAkO,KAAA;cAAA;cAAAF,UAAA,CAAArV,CAAA;YAAA;cAAA,KAAAsV,MAAA,GAAAD,UAAA,CAAApV,CAAA,IAAAC,IAAA;gBAAAyV,UAAA,CAAAjV,IAAA;gBAAA;cAAA;cAAA,OAAAiV,UAAA,CAAA2B,aAAA,CAAA/B,KAAA;YAAA;cAAAC,IAAA,GAAAG,UAAA,CAAA4B,EAAA;cAAA,MAAA/B,IAAA;gBAAAG,UAAA,CAAAjV,IAAA;gBAAA;cAAA;cAAA,OAAAiV,UAAA,CAAAvO,MAAA;YAAA;cAAAuO,UAAA,CAAAjV,IAAA;cAAA;YAAA;cAAAiV,UAAA,CAAAjV,IAAA;cAAA;YAAA;cAAAiV,UAAA,CAAApP,IAAA;cAAAmP,IAAA,GAAAC,UAAA;cAAAN,UAAA,CAAA9V,CAAA,CAAAmW,IAAA;YAAA;cAAAC,UAAA,CAAApP,IAAA;cAAA8O,UAAA,CAAAjV,CAAA;cAAA,OAAAuV,UAAA,CAAAvE,MAAA;YAAA;cAAA,OAAAuE,UAAA,CAAAvO,MAAA,WAOjBwE,KAAK;YAAA;YAAA;cAAA,OAAA+J,UAAA,CAAAtO,IAAA;UAAA;QAAA,GAAA6N,SAAA;MAAA,CACb;MAAA,SAhHapJ,8BAA8BA,CAAA0L,IAAA;QAAA,OAAAvC,+BAAA,CAAAtT,KAAA,OAAAE,SAAA;MAAA;MAAA,OAA9BiK,8BAA8B;IAAA;IAkH5C;AACF;AACA;AACA;IAHE;EAAA;IAAAnH,GAAA;IAAAxE,KAAA;MAAA,IAAAsX,oBAAA,OAAA5R,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAIA,SAAA2R,UAAkChQ,GAAW,EAAEuF,QAAgB,EAAEqC,UAAuB;QAAA,IAAAqI,MAAA;QAAA,IAAAC,qBAAA;QAAA,OAAA9R,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwR,UAAA;UAAA,kBAAAA,UAAA,CAAAtR,IAAA,GAAAsR,UAAA,CAAAnX,IAAA;YAAA;cACtF,IAAI,CAACgN,mBAAmB,CAAC,CAAC;cACpBkK,qBAAqB,GAAG,IAAI,CAAC5U,QAAQ,GAAG,CAAC,GAAG,CAAC;cAAA6U,UAAA,CAAAnX,IAAA;cAAA,OAE7C,IAAI,CAAC+B,KAAK,CAACgN,YAAY,kBAAA5J,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAC,SAAA+R,UAAA;gBAAA,IAAAC,WAAA,EAAAC,IAAA,EAAAC,OAAA;gBAAA,OAAAnS,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA6R,UAAA;kBAAA,kBAAAA,UAAA,CAAA3R,IAAA,GAAA2R,UAAA,CAAAxX,IAAA;oBAAA;sBAAA,KACxBiX,MAAI,CAAC/Q,kBAAkB,CAAC,CAAC;wBAAAsR,UAAA,CAAAxX,IAAA;wBAAA;sBAAA;sBAAAwX,UAAA,CAAAxX,IAAA;sBAAA,OACDiX,MAAI,CAACpV,KAAK,CAACgH,WAAW,CAACC,YAAY,CAAC,CAAC;oBAAA;sBAAzDuO,WAAW,GAAAG,UAAA,CAAAzO,IAAA;sBAEjB,IAAI,CAACkO,MAAI,CAACQ,SAAS,EAAE;wBACbH,IAAI,GAAG,IAAII,IAAI,CAAC,CAACC,qBAAY,CAAC,EAAE;0BAACC,IAAI,EAAE;wBAAwB,CAAC,CAAC;wBACjEL,OAAO,GAAGM,GAAG,CAACC,eAAe,CAACR,IAAI,CAAC;wBACzCL,MAAI,CAACQ,SAAS,GAAG,IAAIM,MAAM,CAACR,OAAO,CAAC;wBACpCM,GAAG,CAACG,eAAe,CAACT,OAAO,CAAC;wBAE5BN,MAAI,CAACQ,SAAS,CAACQ,WAAW,CAAC;0BACzBL,IAAI,EAAEM,yBAAiB,CAACC,eAAe;0BACvCd,WAAW,EAAEzS,MAAM,CAACyS,WAAW,CAAC;0BAChC1P,SAAS,EAAE/C,MAAM,CAACqS,MAAI,CAACpV,KAAK,CAACgB,QAAQ,CAACC,MAAM,CAACkE,GAAG,CAAC;0BACjDuF,QAAQ,EAARA,QAAQ;0BACR6L,mBAAmB,EAAElB,qBAAqB;0BAC1ClQ,GAAG,EAAHA;wBACF,CAAC,CAAC;wBAEFiQ,MAAI,CAACQ,SAAS,CAACY,SAAS;0BAAA,IAAAC,MAAA,OAAAnT,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAAG,SAAAkT,UAAOC,KAAmB;4BAAA,IAAA/E,UAAA,EAAA/O,KAAA,EAAAwG,KAAA;4BAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAA8S,UAAA;8BAAA,kBAAAA,UAAA,CAAA5S,IAAA,GAAA4S,UAAA,CAAAzY,IAAA;gCAAA;kCAC7CyT,UAAU,GAAG;oCACjB5O,IAAI,EAAExB,6BAAiB;oCACvByB,MAAM,EAAEmH;kCACV,CAAC;kCACD,IAAIuM,KAAK,CAACE,IAAI,CAACd,IAAI,KAAKM,yBAAiB,CAACS,iBAAiB,EAAE;oCAC3DxV,eAAG,CAAC8D,IAAI,4BAAA9C,MAAA,CAA4BqU,KAAK,CAACE,IAAI,CAACvI,UAAU,GAAIsD,UAAU,CAAC;oCACxEwD,MAAI,CAACjV,WAAW,CAACyH,mBAAW,CAACmP,WAAW,CAAC;kCAC3C;kCAAC,MAEGJ,KAAK,CAACE,IAAI,CAACd,IAAI,KAAKM,yBAAiB,CAACW,iBAAiB;oCAAAJ,UAAA,CAAAzY,IAAA;oCAAA;kCAAA;kCACnD0E,KAAK,GAAwB8T,KAAK,CAACE,IAAI,CAACI,GAAG;kCACjD3V,eAAG,CAACwB,IAAI,sBAAAR,MAAA,CACeqU,KAAK,CAACE,IAAI,CAACK,mBAAmB,wBAAA5U,MAAA,CAAqBO,KAAK,CAACyL,UAAU,QACxFsD,UACF,CAAC;kCAACgF,UAAA,CAAAzY,IAAA;kCAAA,OAEkB,IAAAuW,gCAAwB,EAC1C7R,KAAK,EACL,UAAC6K,WAAW,EAAEoE,UAAU,EAAK;oCAAA,IAAAqF,qBAAA,EAAAC,cAAA;oCAC3B,IAAItF,UAAU,EAAE;sCACdsD,MAAI,CAACjV,WAAW,CAACyH,mBAAW,CAAC+F,KAAK,EAAEvJ,SAAS,EAAEsJ,WAAW,CAAC;oCAC7D;oCAEA0H,MAAI,CAACrT,aAAa,CAACqS,wBAAwB,CACzCC,mBAAY,CAACgD,eAAe,EAC5B9C,iBAAU,CAACyC,iBAAiB,EAC5BxC,kBAAW,CAACC,UAAU,EACtBrK,0BAAc,EACd2C,UAAU,GAAAoK,qBAAA,IAAAC,cAAA,GACVvU,KAAK,CAAC0E,OAAO,cAAA6P,cAAA,uBAAbA,cAAA,CAAenD,UAAU,cAAAkD,qBAAA,cAAAA,qBAAA,GAAI,EAAE,EAC/BR,KAAK,CAACE,IAAI,CAACK,mBAAmB,EAC9BxJ,WACF,CAAC;kCACH,CAAC,EACD;oCAACzK,MAAM,EAAEmH,0BAAc;oCAAEpH,IAAI,EAAExB;kCAAiB,CAAC,EACjD,UAACgI,UAAkB,EAAEsL,WAAmB;oCAAA,OACtCM,MAAI,CAAC3J,cAAc,CAACjC,UAAU,EAAEsL,WAAW,CAAC;kCAAA,CAChD,CAAC;gCAAA;kCArBKzL,KAAK,GAAAuN,UAAA,CAAA1P,IAAA;kCAAA,MAuBPmC,KAAK,IAAIsN,KAAK,CAACE,IAAI,CAACK,mBAAmB,IAAI7B,qBAAqB;oCAAAuB,UAAA,CAAAzY,IAAA;oCAAA;kCAAA;kCAClEiX,MAAI,CAACvI,mBAAmB,GAAGuI,MAAI,CAAC3U,QAAQ;kCACxC2U,MAAI,CAAC1N,SAAS,CAACvG,0BAAkB,CAACwG,QAAQ,CAAC;kCAC3CyN,MAAI,CAACjK,mBAAmB,CAAC,CAAC;kCAC1BiK,MAAI,CAACtK,kBAAkB,CAAC,CAAC;kCACzBsK,MAAI,CAACjV,WAAW,CAACyH,mBAAW,CAACC,YAAY,CAAC;kCAAC+O,UAAA,CAAAzY,IAAA;kCAAA,OACrC,IAAAsJ,kBAAU,EAAC,CAAC;gCAAA;kCAAA,IAEb4B,KAAK;oCAAAuN,UAAA,CAAAzY,IAAA;oCAAA;kCAAA;kCAAAyY,UAAA,CAAAzY,IAAA;kCAAA,OAEFiX,MAAI,CAACkC,kBAAkB,CAACC,qCAAyB,CAAC;gCAAA;kCAAAX,UAAA,CAAAzY,IAAA;kCAAA;gCAAA;kCACnD,IAAI0E,KAAK,CAACyL,UAAU,KAAK,GAAG,EAAE;oCACnC8G,MAAI,CAAC/K,yBAAyB,CAACD,0BAAc,CAAC;kCAChD;gCAAC;kCAAAwM,UAAA,CAAAzY,IAAA;kCAAA;gCAAA;kCAEDiX,MAAI,CAACjV,WAAW,CAACyH,mBAAW,CAAC4P,YAAY,CAAC;gCAAC;gCAAA;kCAAA,OAAAZ,UAAA,CAAA9R,IAAA;8BAAA;4BAAA,GAAA4R,SAAA;0BAAA,CAGhD;0BAAA,iBAAAe,IAAA;4BAAA,OAAAhB,MAAA,CAAArX,KAAA,OAAAE,SAAA;0BAAA;wBAAA;sBACH;oBAAC;oBAAA;sBAAA,OAAAqW,UAAA,CAAA7Q,IAAA;kBAAA;gBAAA,GAAAyQ,SAAA;cAAA,CAEJ,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAAxQ,IAAA;UAAA;QAAA,GAAAqQ,SAAA;MAAA,CACH;MAAA,SArFa5J,mBAAmBA,CAAAmM,IAAA,EAAAC,IAAA,EAAAC,IAAA;QAAA,OAAA1C,oBAAA,CAAA9V,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAnBiM,mBAAmB;IAAA;IAuFjC;AACF;AACA;IAFE;EAAA;IAAAnJ,GAAA;IAAAxE,KAAA,EAGA,SAAOuN,mBAAmBA,CAAA,EAAG;MAC3B,IAAI,IAAI,CAACyK,SAAS,EAAE;QAClB,IAAI,CAACA,SAAS,CAACQ,WAAW,CAAC;UAACL,IAAI,EAAEM,yBAAiB,CAACwB;QAAe,CAAC,CAAC;QACrE,IAAI,CAACjC,SAAS,CAACkC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAClC,SAAS,GAAGxR,SAAS;MAC5B;IACF;EAAC;IAAAhC,GAAA;IAAAxE,KAAA,EAED,SAAOma,kBAAkBA,CAAA,EAAY;MACnC,OAAO,IAAI,CAACC,gBAAgB;IAC9B;EAAC;IAAA5V,GAAA;IAAAxE,KAAA;MAAA,IAAAqa,WAAA,OAAA3U,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CAED,SAAA0U,UAAA;QAAA,IAAAC,qBAAA,EAAAC,sBAAA,EAAAC,IAAA;QAAA,OAAA9U,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAwU,UAAA;UAAA,kBAAAA,UAAA,CAAAtU,IAAA,GAAAsU,UAAA,CAAAna,IAAA;YAAA;cAAAma,UAAA,CAAAtU,IAAA;cAAAsU,UAAA,CAAAna,IAAA;cAAA,OAEU,IAAI,CAAC4J,kBAAkB,CAC3B,IAAI,CAAC9C,eAAe,GAAAkT,qBAAA,GACpB,IAAI,CAAC9P,UAAU,CAACpH,MAAM,cAAAkX,qBAAA,uBAAtBA,qBAAA,CAAwBtS,QAAQ,GAAAuS,sBAAA,GAChC,IAAI,CAAC/P,UAAU,CAACpH,MAAM,cAAAmX,sBAAA,uBAAtBA,sBAAA,CAAwB7P,eAC1B,CAAC;YAAA;cACDjH,eAAG,CAACA,GAAG,CAAC,wCAAwC,EAAE;gBAChD0B,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACiT;cAClB,CAAC,CAAC;cAACD,UAAA,CAAAna,IAAA;cAAA;YAAA;cAAAma,UAAA,CAAAtU,IAAA;cAAAqU,IAAA,GAAAC,UAAA;cAEHhX,eAAG,CAACwB,IAAI,+BAAAR,MAAA,CAA+B,IAAAM,UAAA,CAAAlD,OAAA,EAAA2Y,IAAkB,CAAC,GAAI;gBAC5DrV,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACiT;cAClB,CAAC,CAAC;YAAC;cAGL,IAAI,CAACpN,mBAAmB,CAAC,CAAC;cAC1B,IAAI,CAACzD,SAAS,CAACvG,0BAAkB,CAACwG,QAAQ,CAAC;cAC3C,IAAI,CAACzE,kBAAkB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAoV,UAAA,CAAAxT,IAAA;UAAA;QAAA,GAAAoT,SAAA;MAAA,CAC3B;MAAA,SArBY9H,UAAUA,CAAA;QAAA,OAAA6H,WAAA,CAAA7Y,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAV8Q,UAAU;IAAA;IAuBvB;AACF;AACA;AACA;EAHE;IAAAhO,GAAA;IAAAxE,KAAA,EAIA,SAAQoU,UAAUA,CAAA,EAAY;MAC5B,OAAO,IAAI,CAACwG,aAAa;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAApW,GAAA;IAAAxE,KAAA,EAKA,SAAQsU,WAAWA,CAACtU,KAAc,EAAE;MAClC,IAAI,CAAC4a,aAAa,GAAG5a,KAAK;IAC5B;;IAEA;AACF;AACA;AACA;EAHE;IAAAwE,GAAA;IAAAxE,KAAA,EAIA,SAAQqU,iBAAiBA,CAACN,WAAwB,EAAE;MAClD,IAAIA,WAAW,CAAC8G,OAAO,IAAI9G,WAAW,CAAC8G,OAAO,CAACnb,MAAM,GAAG,CAAC,EAAE;QACzD,IAAI,CAAC+K,UAAU,GAAG;UAChBtH,MAAM,EAAE4Q,WAAW,CAAC5Q,MAAM;UAC1BE,MAAM,EAAE0Q,WAAW,CAAC8G,OAAO,CAAC,CAAC,CAAC;UAC9BjN,iBAAiB,EAAEkN,sCAA0B;UAC7C/W,mBAAmB,EAAEC,yCAA6B;UAClDH,mBAAmB,EAAEC;QACvB,CAAC;QAED,IAAMiX,eAAe,MAAArW,MAAA,CAAMsE,qCAAyB,OAAAtE,MAAA,CAAIqP,WAAW,CAAC8G,OAAO,CAAC,CAAC,CAAC,CAAC5S,QAAQ,CAAE;QAEzF,IAAM4C,GAAG,GAAGkJ,WAAW,CAAC8G,OAAO,CAAC,CAAC,CAAC,CAAChQ,GAAG,CAACiG,OAAO,CAACiK,eAAe,EAAE,EAAE,CAAC;QACnE,IAAI,CAACzT,kBAAkB,CAACuD,GAAG,CAAC;QAC5B,IAAI,CAACvH,kBAAkB,GAAGC,0BAAkB,CAACoP,MAAM;QAEnD,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAAnO,GAAA;IAAAxE,KAAA;MAAA,IAAAgb,mBAAA,OAAAtV,kBAAA,CAAA5D,OAAA,eAAA6D,YAAA,CAAA7D,OAAA,CAAA8D,IAAA,CASA,SAAAqV,UAAgC1P,MAAc;QAAA,IAAAE,KAAA;QAAA,OAAA9F,YAAA,CAAA7D,OAAA,CAAAoE,IAAA,WAAAgV,UAAA;UAAA,kBAAAA,UAAA,CAAA9U,IAAA,GAAA8U,UAAA,CAAA3a,IAAA;YAAA;cAC5CmD,eAAG,CAAC8D,IAAI,CAACC,+BAAoB,EAAE;gBAACpC,MAAM,EAAEqC,mBAAO,CAACyT,oBAAoB;gBAAE/V,IAAI,EAAExB;cAAiB,CAAC,CAAC;cAC/F,IAAI,CAACwW,gBAAgB,GAAG,KAAK;cAAC,IACzB,IAAI,CAAC3T,kBAAkB,CAAC,CAAC;gBAAAyU,UAAA,CAAA3a,IAAA;gBAAA;cAAA;cAAA,MACxB,IAAA+R,KAAA,CAAAxQ,OAAA,EAAY,IAAI,CAACmC,WAAW,CAACsO,cAAc,CAAC,CAAC,CAAC,CAAC7S,MAAM,KAAK,CAAC;gBAAAwb,UAAA,CAAA3a,IAAA;gBAAA;cAAA;cAAA2a,UAAA,CAAA3a,IAAA;cAAA,OACzC,IAAI,CAAC4L,2BAA2B,CAACZ,MAAM,CAAC;YAAA;cAAtDE,KAAK,GAAAyP,UAAA,CAAA5R,IAAA;cAAA,MAEP,CAACmC,KAAK,IAAI,CAAC,IAAI,CAAChF,kBAAkB,CAAC,CAAC;gBAAAyU,UAAA,CAAA3a,IAAA;gBAAA;cAAA;cAAA2a,UAAA,CAAA3a,IAAA;cAAA,OAChC,IAAI,CAAC0L,mBAAmB,CAACV,MAAM,CAAC;YAAA;cAAA2P,UAAA,CAAA3a,IAAA;cAAA;YAAA;cAGxC,IAAI,CAAC6Z,gBAAgB,GAAG,IAAI;cAC5B1W,eAAG,CAAC8D,IAAI,CAAC,+DAA+D,EAAE;gBACxEpC,IAAI,EAAExB,6BAAiB;gBACvByB,MAAM,EAAEqC,mBAAO,CAACyT;cAClB,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAD,UAAA,CAAAhU,IAAA;UAAA;QAAA,GAAA+T,SAAA;MAAA,CAGR;MAAA,SAlBYvB,kBAAkBA,CAAA0B,IAAA;QAAA,OAAAJ,mBAAA,CAAAxZ,KAAA,OAAAE,SAAA;MAAA;MAAA,OAAlBgY,kBAAkB;IAAA;EAAA;AAAA;AAqBjC;AACA;AACO,IAAM2B,kBAAkB,GAAAlZ,OAAA,CAAAkZ,kBAAA,GAAG,SAArBA,kBAAkBA,CAC7BjZ,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB,EAChBC,GAAY;EAAA,OACM,IAAIP,YAAY,CAACE,KAAK,EAAEC,WAAW,EAAEC,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAEC,GAAG,CAAC;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {Devices, IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n\nexport type FailoverCacheState = {\n attempt: number;\n timeElapsed: number;\n retryScheduledTime: number;\n serverType: 'primary' | 'backup';\n};\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n\n /**\n * Populate deviceInfo from a devices response (e.g., getDevices API).\n */\n setDeviceInfo(body: Devices): void;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, RegistrationStatus} from '../../common/types';\n\nexport type Header = {\n [key: string]: string;\n};\n\nexport type restoreRegistrationCallBack = (\n restoreData: IDeviceInfo,\n caller: string\n) => Promise<boolean>;\n\nexport type retry429CallBack = (retryAfter: number, caller: string) => void;\n\nexport type FailoverCacheState = {\n attempt: number;\n timeElapsed: number;\n retryScheduledTime: number;\n serverType: 'primary' | 'backup';\n};\n\n/**\n * Represents an interface for managing registration-related operations.\n */\nexport interface IRegistration {\n /**\n * Sets the primary and backup Mobius server URLs.\n *\n * @param primaryMobiusUris - An array of primary Mobius server URLs.\n * @param backupMobiusUris - An array of backup Mobius server URLs.\n */\n setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]): void;\n\n /**\n * Triggers the registration process with the given list of servers\n * Registration is attempted with primary and backup until it succeeds or the list is exhausted\n */\n triggerRegistration(): Promise<void>;\n\n /**\n * Checks if the device is currently registered.\n *\n */\n isDeviceRegistered(): boolean;\n\n /**\n * Sets the status of the registration.\n *\n * @param value - The registration status to set.\n */\n setStatus(value: RegistrationStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): RegistrationStatus;\n\n /**\n * Retrieves information about the device as {@link IDeviceInfo}.\n *\n */\n getDeviceInfo(): IDeviceInfo;\n\n /**\n * Clears the keep-alive timer used for registration.\n */\n clearKeepaliveTimer(): void;\n\n /**\n * Deregisters the device.\n */\n deregister(): void;\n\n /**\n * Sets the active Mobius server URL to use for registration.\n *\n * @param url - The Mobius server URL to set as active.\n */\n setActiveMobiusUrl(url: string): void;\n\n /**\n * Retrieves the active Mobius server URL.\n *\n */\n getActiveMobiusUrl(): string;\n\n /**\n * Attempts to reconnect after a connection failure.\n *\n * @param caller - The caller's identifier for reconnection.\n */\n reconnectOnFailure(caller: string): Promise<void>;\n\n /**\n * Checks if a reconnection attempt is pending.\n *\n */\n isReconnectPending(): boolean;\n\n /**\n * Restores the connection and attempts refreshing existing registration with server.\n * Allows retry if not restored in the first attempt.\n *\n * @param retry - Set to `true` to trigger a retry after restoration.\n */\n handleConnectionRestoration(retry: boolean): Promise<boolean>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {ISDKConnector} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {CallingClientEventTypes} from '../Events/types';\nimport {DeviceType, ServiceData} from '../common/types';\nimport {ICall} from './calling/types';\nimport {CallingClientError} from '../Errors';\nimport {ILine} from './line/types';\n\nexport interface LoggerConfig {\n level: LOGGER;\n}\n\ninterface DiscoveryConfig {\n country: string;\n region: string;\n}\n\nexport interface CallingClientConfig {\n logger?: LoggerConfig;\n discovery?: DiscoveryConfig;\n serviceData?: ServiceData;\n jwe?: string;\n}\n\nexport type CallingClientErrorEmitterCallback = (\n err: CallingClientError,\n finalError?: boolean\n) => void;\n\n/**\n * An interface for the `CallingClient` module.\n * The `CallingClient` module is designed to provide a set of APIs related to line registration and calling functionalities within the SDK.\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\nexport interface ICallingClient extends Eventing<CallingClientEventTypes> {\n /**\n * Represents the `mediaEngine for managing media-related operations within the CallingClient.\n * The media engine provides access to audio and video devices such as cameras, microphones, and speakers within the media layer.\n *\n * @public\n * @example\n * ```\n * const microphones = await callingClient.mediaEngine.Media.getMicrophones();\n * const speakers = await callingClient.mediaEngine.Media.getSpeakers();\n * const cameras = await callingClient.mediaEngine.Media.getCameras();\n * ```\n */\n mediaEngine: typeof Media;\n\n /**\n * @ignore\n */\n getSDKConnector(): ISDKConnector;\n\n /**\n * @ignore\n */\n getLoggingLevel(): LOGGER;\n\n /**\n * Retrieves details of the line object(s) belonging to a user.\n *\n * This method gathers all the {@link ILine} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ILine} objects registered with\n * the `callingClient`\n *\n * @example\n * ```typescript\n * const lines = callingClient.getLines();\n * ```\n * The `lines` response object will have `lineId` as its key and\n * a list {@link ILine} objects as it's value.\n * ```\n * {\n * 'lineId1': lineObj1,\n * 'lineId2': lineObj2,\n * }\n * ```\n */\n getLines(): Record<string, ILine>;\n\n /**\n * Retrieves the list of devices registered for the given userId from Mobius.\n * @param userId - The user identifier whose devices should be fetched.\n * @returns List of devices associated with the user.\n */\n getDevices(userId?: string): Promise<DeviceType[]>;\n\n /**\n * Retrieves a dictionary of active calls grouped by `lineId`.\n *\n * This method gathers active {@link ICall} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ICall} objects of active calls associated\n * with each line.\n *\n * @example\n * ```typescript\n * const activeCalls = callingClient.getActiveCalls();\n * ```\n * The `activeCalls` response object will have `lineId` as its key and\n * a list {@link ICall} objects as it's value.\n *\n * ```\n * {\n * 'line1': [call1, call2],\n * 'line2': [call3],\n * }\n * ```\n */\n getActiveCalls(): Record<string, ICall[]>;\n\n /**\n * Retrieves the {@link ICall} object for the currently connected call in the client.\n *\n * This method iterates through active call objects and returns the call\n * that is currently connected (not on hold).\n *\n * @example\n * ```typescript\n * const connectedCall : ICall = callingClient.getConnectedCall();\n * ```\n * The `connectedCall` object will be the Call object of the connected call with the client\n */\n getConnectedCall(): ICall | undefined;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {ISDKConnector} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {CallingClientEventTypes} from '../Events/types';\nimport {ServiceData} from '../common/types';\nimport {ICall} from './calling/types';\nimport {CallingClientError} from '../Errors';\nimport {ILine} from './line/types';\n\nexport interface LoggerConfig {\n level: LOGGER;\n}\n\ninterface DiscoveryConfig {\n country: string;\n region: string;\n}\n\nexport interface CallingClientConfig {\n logger?: LoggerConfig;\n discovery?: DiscoveryConfig;\n serviceData?: ServiceData;\n jwe?: string;\n}\n\nexport type CallingClientErrorEmitterCallback = (\n err: CallingClientError,\n finalError?: boolean\n) => void;\n\n/**\n * An interface for the `CallingClient` module.\n * The `CallingClient` module is designed to provide a set of APIs related to line registration and calling functionalities within the SDK.\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\nexport interface ICallingClient extends Eventing<CallingClientEventTypes> {\n /**\n * Represents the `mediaEngine for managing media-related operations within the CallingClient.\n * The media engine provides access to audio and video devices such as cameras, microphones, and speakers within the media layer.\n *\n * @public\n * @example\n * ```\n * const microphones = await callingClient.mediaEngine.Media.getMicrophones();\n * const speakers = await callingClient.mediaEngine.Media.getSpeakers();\n * const cameras = await callingClient.mediaEngine.Media.getCameras();\n * ```\n */\n mediaEngine: typeof Media;\n\n /**\n * @ignore\n */\n getSDKConnector(): ISDKConnector;\n\n /**\n * @ignore\n */\n getLoggingLevel(): LOGGER;\n\n /**\n * Retrieves details of the line object(s) belonging to a user.\n *\n * This method gathers all the {@link ILine} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ILine} objects registered with\n * the `callingClient`\n *\n * @example\n * ```typescript\n * const lines = callingClient.getLines();\n * ```\n * The `lines` response object will have `lineId` as its key and\n * a list {@link ILine} objects as it's value.\n * ```\n * {\n * 'lineId1': lineObj1,\n * 'lineId2': lineObj2,\n * }\n * ```\n */\n getLines(): Record<string, ILine>;\n\n /**\n * Retrieves a dictionary of active calls grouped by `lineId`.\n *\n * This method gathers active {@link ICall} objects and organizes them into a dictionary\n * where keys represent `lineId`s and values are arrays of {@link ICall} objects of active calls associated\n * with each line.\n *\n * @example\n * ```typescript\n * const activeCalls = callingClient.getActiveCalls();\n * ```\n * The `activeCalls` response object will have `lineId` as its key and\n * a list {@link ICall} objects as it's value.\n *\n * ```\n * {\n * 'line1': [call1, call2],\n * 'line2': [call3],\n * }\n * ```\n */\n getActiveCalls(): Record<string, ICall[]>;\n\n /**\n * Retrieves the {@link ICall} object for the currently connected call in the client.\n *\n * This method iterates through active call objects and returns the call\n * that is currently connected (not on hold).\n *\n * @example\n * ```typescript\n * const connectedCall : ICall = callingClient.getConnectedCall();\n * ```\n * The `connectedCall` object will be the Call object of the connected call with the client\n */\n getConnectedCall(): ICall | undefined;\n}\n"],"mappings":"","ignoreList":[]}
@@ -4,7 +4,7 @@ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/defi
4
4
  _Object$defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SessionType = exports.SUPPLEMENTARY_SERVICES = exports.MOBIUS_MIDCALL_STATE = exports.MOBIUS_EVENT_KEYS = exports.MEDIA_CONNECTION_EVENT_KEYS = exports.LINE_EVENT_KEYS = exports.Disposition = exports.COMMON_EVENT_KEYS = exports.CALL_EVENT_KEYS = exports.CALLING_CLIENT_EVENT_KEYS = void 0;
7
+ exports.WEBSOCKET_SCOPE = exports.WEBSOCKET_KEYS = exports.SessionType = exports.SUPPLEMENTARY_SERVICES = exports.MOBIUS_MIDCALL_STATE = exports.MOBIUS_EVENT_KEYS = exports.MEDIA_CONNECTION_EVENT_KEYS = exports.LINE_EVENT_KEYS = exports.Disposition = exports.COMMON_EVENT_KEYS = exports.CALL_EVENT_KEYS = exports.CALLING_CLIENT_EVENT_KEYS = void 0;
8
8
  var _types = require("../CallingClient/line/types");
9
9
  /* eslint-disable @typescript-eslint/no-unused-vars */
10
10
  // TODO: remove once we define the payloads
@@ -89,6 +89,16 @@ var CALL_STATE = /*#__PURE__*/function (CALL_STATE) {
89
89
  CALL_STATE["CONNECTED"] = "connected";
90
90
  return CALL_STATE;
91
91
  }(CALL_STATE || {});
92
+ var WEBSOCKET_SCOPE = exports.WEBSOCKET_SCOPE = 'mobius';
93
+ var WEBSOCKET_KEYS = exports.WEBSOCKET_KEYS = /*#__PURE__*/function (WEBSOCKET_KEYS) {
94
+ WEBSOCKET_KEYS["CALL_PROGRESS"] = "callprogress";
95
+ WEBSOCKET_KEYS["CALL_CONNECTED"] = "callconnected";
96
+ WEBSOCKET_KEYS["CALL_DISCONNECTED"] = "callconnected";
97
+ WEBSOCKET_KEYS["CALL_INFO"] = "callinfo";
98
+ WEBSOCKET_KEYS["CALL"] = "call";
99
+ WEBSOCKET_KEYS["ROAP"] = "ROAP";
100
+ return WEBSOCKET_KEYS;
101
+ }({});
92
102
  /** Internal Eventing End */
93
103
  /** State Machine Events */
94
104
  /* ROAP Events */
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n CALL_HISTORY_USER_SESSIONS_DELETED = 'callHistory:user_sessions_deleted',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n}\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n CALL_SESSION_EVENT_DELETED = 'event:janus.user_sessions_deleted',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED]: (event: CallSessionDeletedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\n\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type CallSessionDeletedData = {\n deletedSessions: string[];\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED;\n};\n\nexport type CallSessionDeletedEvent = {\n id: string;\n data: CallSessionDeletedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;AAAuD;AAOvD;AAAA,IACYC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAOzBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AAyDvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAkDf;AAEA;AAuBA;AAWA;AACA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","COMMON_EVENT_KEYS","exports","LINE_EVENT_KEYS","CALLING_CLIENT_EVENT_KEYS","CALL_EVENT_KEYS","SUPPLEMENTARY_SERVICES","MOBIUS_MIDCALL_STATE","Disposition","SessionType","MOBIUS_EVENT_KEYS","MEDIA_CONNECTION_EVENT_KEYS","CALL_STATE","WEBSOCKET_SCOPE","WEBSOCKET_KEYS"],"sources":["types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */ // TODO: remove once we define the payloads\nimport {ILine} from '../api';\nimport {LINE_EVENTS} from '../CallingClient/line/types';\nimport type {ICall} from '../CallingClient/calling/types';\nimport {CallId, DisplayInformation} from '../common/types';\nimport {CallError, CallingClientError, LineError} from '../Errors';\n\n/** External Eventing Start */\nexport enum COMMON_EVENT_KEYS {\n CB_VOICEMESSAGE_CONTENT_GET = 'call_back_voicemail_content_get',\n CALL_HISTORY_USER_SESSION_INFO = 'callHistory:user_recent_sessions',\n CALL_HISTORY_USER_VIEWED_SESSIONS = 'callHistory:user_viewed_sessions',\n CALL_HISTORY_USER_SESSIONS_DELETED = 'callHistory:user_sessions_deleted',\n}\n\nexport enum LINE_EVENT_KEYS {\n INCOMING_CALL = 'incoming_call',\n}\n\nexport enum CALLING_CLIENT_EVENT_KEYS {\n ERROR = 'callingClient:error',\n OUTGOING_CALL = 'callingClient:outgoing_call',\n USER_SESSION_INFO = 'callingClient:user_recent_sessions',\n ALL_CALLS_CLEARED = 'callingClient:all_calls_cleared',\n}\n\nexport enum CALL_EVENT_KEYS {\n ALERTING = 'alerting',\n CALL_ERROR = 'call_error',\n CALLER_ID = 'caller_id',\n CONNECT = 'connect',\n DISCONNECT = 'disconnect',\n ESTABLISHED = 'established',\n HELD = 'held',\n HOLD_ERROR = 'hold_error',\n PROGRESS = 'progress',\n REMOTE_MEDIA = 'remote_media',\n RESUME_ERROR = 'resume_error',\n RESUMED = 'resumed',\n TRANSFER_ERROR = 'transfer_error',\n}\n\nexport enum SUPPLEMENTARY_SERVICES {\n HOLD = 'hold',\n RESUME = 'resume',\n DIVERT = 'divert',\n TRANSFER = 'transfer',\n PARK = 'park',\n}\n\nexport enum MOBIUS_MIDCALL_STATE {\n HELD = 'HELD',\n CONNECTED = 'CONNECTED',\n}\n\nexport enum Disposition {\n ANSWERED = 'Answered',\n CANCELED = 'Canceled',\n INITIATED = 'Initiated',\n MISSED = 'MISSED',\n}\n\nexport type CallRecordLink = {\n locusUrl?: string;\n conversationUrl?: string;\n callbackAddress: string;\n};\n\nexport type CallBackInfo = {\n callbackAddress: string;\n callbackType: string;\n};\n\nexport type LookUpInfo = {\n lookupLink: string;\n type: string;\n};\n\nexport type CallRecordSelf = {\n id: string;\n name?: string;\n phoneNumber?: string;\n cucmDN?: string;\n ucmLineNumber?: number;\n};\n\nexport type CallRecordListOther = {\n ownerId?: string;\n id: string;\n name?: string;\n sipUrl?: string;\n primaryDisplayString?: string;\n secondaryDisplayString?: string;\n isPrivate: boolean;\n callbackAddress: string;\n phoneNumber?: string;\n contact?: string;\n email?: string;\n};\n\nexport type RedirectionDetails = {\n phoneNumber?: string;\n sipUrl?: string;\n name?: string;\n reason: string;\n userId?: string;\n isPrivate: boolean;\n};\n\nexport enum SessionType {\n SPARK = 'SPARK',\n WEBEX_CALLING = 'WEBEXCALLING',\n}\n\nexport type UserSession = {\n id: string;\n sessionId: string;\n disposition: Disposition;\n startTime: string;\n endTime: string;\n url: string;\n durationSeconds: number;\n joinedDurationSeconds: number;\n participantCount: number;\n isDeleted: boolean;\n isPMR: boolean;\n correlationIds: string[];\n links: CallRecordLink;\n self: CallRecordSelf;\n durationSecs: number;\n other: CallRecordListOther;\n sessionType: SessionType;\n direction: string;\n callingSpecifics?: {\n redirectionDetails: RedirectionDetails;\n };\n};\n\nexport type CallingParty = {\n name?: string;\n number?: string;\n privacyEnabled?: boolean;\n userId?: string;\n address?: string;\n};\n\nexport type Item = {\n id?: string;\n duration?: number;\n callingParty?: CallingParty;\n urgent?: boolean;\n confidential?: boolean;\n read?: boolean;\n created?: string;\n messageId?: string;\n time?: number;\n};\n\nexport enum MOBIUS_EVENT_KEYS {\n SERVER_EVENT_INCLUSIVE = 'event:mobius',\n CALL_SESSION_EVENT_INCLUSIVE = 'event:janus.user_recent_sessions',\n CALL_SESSION_EVENT_LEGACY = 'event:janus.user_sessions',\n CALL_SESSION_EVENT_VIEWED = 'event:janus.user_viewed_sessions',\n CALL_SESSION_EVENT_DELETED = 'event:janus.user_sessions_deleted',\n}\n\nexport type CallSessionData = {\n userSessions: {\n userSessions: UserSession[];\n statusCode: number;\n };\n eventType:\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE\n | MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY;\n};\n\nexport type CallSessionEvent = {\n id: string;\n data: CallSessionData;\n timestamp: number;\n trackingId: string;\n};\n\nexport enum MEDIA_CONNECTION_EVENT_KEYS {\n ROAP_MESSAGE_TO_SEND = 'roap:messageToSend',\n MEDIA_TYPE_AUDIO = 'audio',\n}\n\nexport type CallerIdDisplay = {\n correlationId: string;\n callerId: DisplayInformation;\n};\n\nexport type LineEventTypes = {\n [LINE_EVENTS.CONNECTING]: () => void;\n [LINE_EVENTS.ERROR]: (error: LineError) => void;\n [LINE_EVENTS.RECONNECTED]: () => void;\n [LINE_EVENTS.RECONNECTING]: () => void;\n [LINE_EVENTS.REGISTERED]: (lineInfo: ILine) => void;\n [LINE_EVENTS.UNREGISTERED]: () => void;\n [LINE_EVENTS.INCOMING_CALL]: (callObj: ICall) => void;\n};\n\nexport type CallEventTypes = {\n [CALL_EVENT_KEYS.ALERTING]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.CALL_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.CALLER_ID]: (display: CallerIdDisplay) => void;\n [CALL_EVENT_KEYS.CONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.DISCONNECT]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.ESTABLISHED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HELD]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.HOLD_ERROR]: (error: CallError) => void;\n [LINE_EVENT_KEYS.INCOMING_CALL]: (callObj: ICall) => void;\n [CALL_EVENT_KEYS.PROGRESS]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.REMOTE_MEDIA]: (track: MediaStreamTrack) => void;\n [CALL_EVENT_KEYS.RESUME_ERROR]: (error: CallError) => void;\n [CALL_EVENT_KEYS.RESUMED]: (callId: CallId) => void;\n [CALL_EVENT_KEYS.TRANSFER_ERROR]: (error: CallError) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type MessageId = {\n messageId: string;\n};\n\nexport type VoicemailEventTypes = {\n [COMMON_EVENT_KEYS.CB_VOICEMESSAGE_CONTENT_GET]: (messageId: MessageId) => void;\n};\n\nexport type CallingClientEventTypes = {\n [CALLING_CLIENT_EVENT_KEYS.ERROR]: (error: CallingClientError) => void;\n [CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [CALLING_CLIENT_EVENT_KEYS.OUTGOING_CALL]: (callId: string) => void;\n [CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED]: () => void;\n};\n\nexport type CallHistoryEventTypes = {\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO]: (event: CallSessionEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS]: (event: CallSessionViewedEvent) => void;\n [COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED]: (event: CallSessionDeletedEvent) => void;\n};\n/* External Eventing End */\n\n/** Internal Eventing Start */\nenum CALL_STATE {\n HELD = 'held',\n REMOTE_HELD = 'remoteheld',\n CONNECTED = 'connected',\n}\n\ntype eventType = string;\n\ntype callProgressData = {\n alerting: boolean;\n inbandROAP: boolean;\n};\n\nexport type CallerIdInfo = {\n 'x-broadworks-remote-party-info'?: string;\n 'p-asserted-identity'?: string;\n from?: string;\n};\n\ntype callId = string;\ntype deviceId = string;\ntype correlationId = string;\ntype callUrl = string;\ntype causecode = number;\ntype cause = string;\n\ntype eventData = {\n callerId: CallerIdInfo;\n callState: CALL_STATE;\n};\n\ntype midCallServiceData = {\n eventType: eventType;\n eventData: eventData;\n};\n\ntype midCallService = Array<midCallServiceData>;\ninterface BaseMessage {\n eventType: eventType;\n correlationId: correlationId;\n deviceId: deviceId;\n callId: callId;\n callUrl: callUrl;\n}\nexport interface CallSetupMessage extends BaseMessage {\n callerId: CallerIdInfo;\n trackingId: string;\n alertType: string;\n}\ninterface CallProgressMessage extends BaseMessage {\n callProgressData: callProgressData;\n callerId: CallerIdInfo;\n}\n\nexport const WEBSOCKET_SCOPE = 'mobius';\n\nexport enum WEBSOCKET_KEYS {\n CALL_PROGRESS = 'callprogress',\n CALL_CONNECTED = 'callconnected',\n CALL_DISCONNECTED = 'callconnected',\n CALL_INFO = 'callinfo',\n CALL = 'call',\n ROAP = 'ROAP',\n}\n/** Internal Eventing End */\n\n/** State Machine Events */\n\nexport type CallEvent =\n /* Received Events */\n | {type: 'E_RECV_CALL_SETUP'; data?: unknown}\n | {type: 'E_RECV_CALL_PROGRESS'; data?: unknown}\n | {type: 'E_RECV_CALL_CONNECT'; data?: unknown}\n | {type: 'E_RECV_CALL_DISCONNECT'; data?: unknown}\n\n /* Sent Events */\n | {type: 'E_SEND_CALL_SETUP'; data?: unknown}\n | {type: 'E_SEND_CALL_ALERTING'; data?: unknown}\n | {type: 'E_SEND_CALL_CONNECT'; data?: unknown}\n | {type: 'E_SEND_CALL_DISCONNECT'; data?: unknown}\n\n /* Common Events */\n | {type: 'E_CALL_ESTABLISHED'; data?: unknown}\n | {type: 'E_CALL_INFO'; data?: unknown}\n | {type: 'E_UNKNOWN'; data?: unknown}\n | {type: 'E_CALL_CLEARED'; data?: unknown}\n | {type: 'E_CALL_HOLD'; data?: unknown}\n | {type: 'E_CALL_RESUME'; data?: unknown};\n\n/* ROAP Events */\nexport type RoapEvent =\n | {type: 'E_SEND_ROAP_OFFER'; data?: unknown}\n | {type: 'E_SEND_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER'; data?: unknown}\n | {type: 'E_RECV_ROAP_ANSWER'; data?: unknown}\n | {type: 'E_ROAP_ERROR'; data?: unknown}\n | {type: 'E_ROAP_OK'; data?: unknown}\n | {type: 'E_RECV_ROAP_OFFER_REQUEST'; data?: unknown} // ROAP request to explicitly ask Client to do OFFER\n | {type: 'E_ROAP_TEARDOWN'; data?: unknown};\n\n// TODO: export RoapMessage type from the media SDK to use here\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RoapMessage {\n seq: number;\n messageType: 'OFFER' | 'ANSWER' | 'OK' | 'ERROR' | 'OFFER_REQUEST';\n offererSessionId?: string;\n answererSessionId?: string;\n sdp?: string;\n version?: string;\n tieBreaker?: string;\n errorType?: string;\n}\n\nexport type UserReadSessions = {\n sessionId: string;\n};\n\nexport type CallSessionViewedData = {\n userReadSessions: {\n userReadSessions: UserReadSessions[];\n statusCode: number;\n };\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED;\n};\n\nexport type CallSessionViewedEvent = {\n id: string;\n data: CallSessionViewedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type CallSessionDeletedData = {\n deletedSessions: string[];\n eventType: MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED;\n};\n\nexport type CallSessionDeletedEvent = {\n id: string;\n data: CallSessionDeletedData;\n timestamp: number;\n trackingId: string;\n};\n\nexport type EndTimeSessionId = {\n endTime: string;\n sessionId: string;\n};\n\nexport type SanitizedEndTimeAndSessionId = {\n endTime: number;\n sessionId: string;\n};\n\nexport type UCMLine = {\n dnorpattern: string;\n index: number;\n label: string | null;\n};\n\nexport type UCMDevice = {\n name: string;\n model: number;\n lines: UCMLine[];\n};\n\nexport type UCMLinesApiResponse = {\n devices: UCMDevice[];\n};\n"],"mappings":";;;;;;;AAEA,IAAAA,MAAA,GAAAC,OAAA;AAFA;AAAuD;AAOvD;AAAA,IACYC,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,eAAe,GAAAD,OAAA,CAAAC,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAIfC,yBAAyB,GAAAF,OAAA,CAAAE,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAOzBC,eAAe,GAAAH,OAAA,CAAAG,eAAA,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;AAAA,IAgBfC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAQtBC,oBAAoB,GAAAL,OAAA,CAAAK,oBAAA,0BAApBA,oBAAoB;EAApBA,oBAAoB;EAApBA,oBAAoB;EAAA,OAApBA,oBAAoB;AAAA;AAAA,IAKpBC,WAAW,GAAAN,OAAA,CAAAM,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAsDXC,WAAW,GAAAP,OAAA,CAAAO,WAAA,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAAA,IAiDXC,iBAAiB,GAAAR,OAAA,CAAAQ,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAyBjBC,2BAA2B,GAAAT,OAAA,CAAAS,2BAAA,0BAA3BA,2BAA2B;EAA3BA,2BAA2B;EAA3BA,2BAA2B;EAAA,OAA3BA,2BAA2B;AAAA;AA0DvC;AAEA;AAAA,IACKC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA,EAAVA,UAAU;AAsDR,IAAMC,eAAe,GAAAX,OAAA,CAAAW,eAAA,GAAG,QAAQ;AAAC,IAE5BC,cAAc,GAAAZ,OAAA,CAAAY,cAAA,0BAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAdA,cAAc;EAAA,OAAdA,cAAc;AAAA;AAQ1B;AAEA;AAuBA;AAWA;AACA","ignoreList":[]}
@@ -529,8 +529,6 @@ function _handleCallErrors() {
529
529
  return _context3.abrupt("continue", 20);
530
530
  case 19:
531
531
  _Logger.default.warn("Unknown Error", loggerContext);
532
- updateCallErrorContext(loggerContext, _types2.ERROR_TYPE.DEFAULT, 'An unknown error occurred in the call.', correlationId, callError);
533
- emitterCb(callError);
534
532
  case 20:
535
533
  return _context3.abrupt("return", abort);
536
534
  case 21: