@webex/calling 3.0.0-next.8 → 3.0.0-next.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +1 -1
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/types.js.map +1 -1
- package/dist/CallSettings/types.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +26 -11
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/types.js.map +1 -1
- package/dist/CallingClient/calling/call.js +4 -10
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +0 -9
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/line/index.js +2 -1
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/types.js +3 -0
- package/dist/CallingClient/line/types.js.map +1 -1
- package/dist/CallingClient/registration/register.js +12 -40
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/Voicemail/Voicemail.js +18 -21
- package/dist/Voicemail/Voicemail.js.map +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js +1 -1
- package/dist/Voicemail/WxCallBackendConnector.js.map +1 -1
- package/dist/Voicemail/types.js.map +1 -1
- package/dist/api.js +13 -20
- package/dist/api.js.map +1 -1
- package/dist/module/CallingClient/calling/callManager.js +0 -6
- package/dist/types/CallSettings/types.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/CallerId/types.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +0 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +29 -30
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/line/types.d.ts +7 -7
- package/dist/types/CallingClient/line/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +13 -13
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +6 -4
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/Voicemail/Voicemail.d.ts.map +1 -1
- package/dist/types/Voicemail/types.d.ts +10 -10
- package/dist/types/Voicemail/types.d.ts.map +1 -1
- package/dist/types/api.d.ts +4 -5
- package/dist/types/api.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_uuid","require","_types","_common","_types2","_Metrics","_calling","_Logger","_interopRequireDefault","_SDKConnector","_types3","_constants","_types4","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","Registration","webex","serviceData","mutex","lineEmitter","logLevel","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","userId","internal","device","registrationStatus","MobiusStatus","DEFAULT","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","indicator","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","method","file","updateActiveMobius","setMobiusServers","_postKeepAlive","_asyncToGenerator2","_regenerator","mark","_callee","_headers","wrap","_callee$","_context","prev","abrupt","request","uri","HTTP_METHODS","POST","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","stop","postKeepAlive","_x","apply","arguments","_deleteRegistration","_callee2","deviceId","deviceUrl","_headers2","response","_callee2$","_context2","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","DELETE","t3","t4","credentials","getUserToken","t5","sent","WEBEX_WEB_CLIENT","uuid","t6","t7","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x2","_x3","_x4","_postRegistration","_callee3","_headers3","deviceInfo","_callee3$","_context3","clientDeviceUri","body","postRegistration","_x5","_restorePreviousRegistration","_callee4","caller","abort","_callee4$","_context4","attemptRegistrationWithServers","restorePreviousRegistration","_x6","_scheduleFailback429Retry","_callee5","interval","_callee5$","_context5","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","FAILBACK_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","isDeviceRegistered","restartRegistration","scheduleFailback429Retry","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee10","_this","timeElapsed","loggerContext","excessVal","scheduledTime","_args10","_callee10$","_context10","startFailoverTimer","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_now","setTimeout","_callee7","_callee7$","_context7","runExclusive","_callee6","currentTime","_callee6$","_context6","_callee9","_callee9$","_context9","_callee8","_callee8$","_context8","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this2","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this3","_callee13$","_context13","_callee12","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","FAILBACK_UTIL","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","setStatus","_restartRegistration","_callee14","_callee14$","_context14","_x7","_handleConnectionRestoration","_callee16","retry","_this4","_callee16$","_context16","_callee15","_callee15$","_context15","handleConnectionRestoration","clearKeepaliveTimer","_x8","restoreRegistrationCallBack","_this5","_ref8","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x9","_x10","_triggerRegistration","_callee18","_callee18$","_context18","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this6","servers","_iterator","_step","_this$deviceInfo$devi","resp","error","_args19","_callee19$","_context19","CONNECTING","REGISTERED","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","startKeepaliveTimer","keepaliveInterval","handleRegistrationErrors","REGISTRATION_ERROR","statusCode","ERROR_CODE","TOO_MANY_REQUESTS","finish","_x11","_this7","keepAliveRetryCount","keepaliveTimer","setInterval","_callee21","_callee21$","_context21","_callee20","res","_callee20$","_context20","RECONNECTED","warn","KEEPALIVE_FAILURE","reconnectOnFailure","RECONNECTING","clearInterval","isReconnectPending","reconnectPending","_deregister","_callee22","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_callee22$","_context22","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","replace","_reconnectOnFailure","_callee23","_callee23$","_context23","_x12","exports","createRegistration"],"sources":["register.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {ERROR_CODE} from '../../Errors/types';\nimport {emitFinalFailure, handleRegistrationErrors} from '../../common';\n\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, REG_ACTION} 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 {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n MobiusStatus,\n ServiceData,\n WebexRequestPayload,\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 FAILBACK_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} 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: MobiusStatus;\n private failbackTimer?: NodeJS.Timer;\n private activeMobiusUrl!: string;\n\n private keepaliveTimer: NodeJS.Timer | undefined;\n private rehomingIntervalMin: number;\n\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\n /**\n * @param webex - A webex instance.\n * @param serviceData - indicates whether the backend service is calling or contactcentre\n * @param mutex - mutex which is used to run any registration scenario exclusively\n * @param lineEmitter - Line emitter for registration related events\n * @param logLevel - log level option for registration module\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER\n ) {\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\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 = MobiusStatus.DEFAULT;\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 public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`ActiveMobiusUrl: ${url}`, {method: 'setActiveMobiusUrl', file: REGISTRATION_FILE});\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of sending keepalive.\n *\n * @param url - Entire device url.\n * @returns Promise<boolean>.\n */\n private async postKeepAlive(url: string) {\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\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\n /**\n * Implementation of delete device.\n *\n * @param url -.\n * @param deviceId -.\n * @param deviceUrl -.\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n const 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\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 * @param url - backend service url for registration\n */\n private async postRegistration(url: string) {\n const deviceInfo = {\n userId: this.userId,\n clientDeviceUri: this.webex.internal.device.url,\n serviceData: 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 * @param caller - Caller of this method.\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 }\n\n return abort;\n }\n\n /**\n * When a failback request is rejected with 429, it means the\n * request did not even land on primary mobius to know if it\n * can handle this device registration now, in such cases this\n * method is called to retry sooner than the rehoming timer value.\n */\n private async scheduleFailback429Retry() {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\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: FAILBACK_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n const abort = await this.restorePreviousRegistration(FAILBACK_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(FAILBACK_429_RETRY_UTIL);\n }\n }\n\n /**\n * Calculates and returns a random interval value using input argument\n * attempt as the variable factor.\n *\n * @param attempt - Number of times registration has been\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 * @param attempt - Number of times registration has been attempted already.\n * @param timeElapsed - Time elapsed since the first registration attempt.\n */\n private async startFailoverTimer(attempt = 1, timeElapsed = 0) {\n const loggerContext = {\n file: REGISTRATION_FILE,\n method: this.startFailoverTimer.name,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n if (timeElapsed + interval > REG_TRY_BACKUP_TIMER_VAL_IN_SEC) {\n const excessVal = timeElapsed + interval - REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n interval -= excessVal;\n }\n\n let abort;\n\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(this.startFailoverTimer.name);\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 log.log('Failing over to backup servers.', loggerContext);\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\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 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 /**\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 * @param intervalInSeconds - Failback timer interval value in seconds.\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 if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\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 if (!abort && !this.isDeviceRegistered()) {\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 }\n } else {\n log.info('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\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 * @param deviceInfo - Line info.\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 public getDeviceInfo(): IDeviceInfo {\n return this.deviceInfo;\n }\n\n /**\n * .\n *\n * @returns True if this device is in registered state\n * by checking if isRegistered state is set to\n * ACTIVE, else false.\n */\n public isDeviceRegistered(): boolean {\n return this.registrationStatus === MobiusStatus.ACTIVE;\n }\n\n public getStatus(): MobiusStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: MobiusStatus) {\n this.registrationStatus = value;\n }\n\n /**\n * Start fresh registration cycle with the mobius\n * server list already present.\n *\n * @param caller - Caller of this method.\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 public async handleConnectionRestoration(retry: boolean): Promise<boolean> {\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.info('Mercury connection is up again, Re-registering with Mobius', {\n file: REGISTRATION_FILE,\n method: this.handleConnectionRestoration.name,\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 this.handleConnectionRestoration.name\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(this.handleConnectionRestoration.name);\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 (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n this.triggerRegistration.name,\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 * @param caller - Caller of this method.\n * @param servers - List of mobius server urls to try.\n * @returns Promise resolving to a boolean carrying true if registration\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\n if (this.isDeviceRegistered()) {\n log.log(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n\n return abort;\n }\n for (const url of servers) {\n try {\n abort = false;\n this.registrationStatus = MobiusStatus.DEFAULT;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.log(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n\n this.deviceInfo = resp.body as IDeviceInfo;\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n this.registrationStatus = MobiusStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\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 undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n\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 clientError\n );\n },\n {method: this.attemptRegistrationWithServers.name, file: REGISTRATION_FILE},\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === MobiusStatus.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 break;\n } else if (caller === this.executeFailback.name) {\n const error = body.statusCode;\n\n if (error === ERROR_CODE.TOO_MANY_REQUESTS) {\n // eslint-disable-next-line no-await-in-loop\n await this.scheduleFailback429Retry();\n abort = true;\n break;\n }\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 * @param keepAliveRetryCount\n * @param url\n * @param logContext\n * @param interval\n * @returns\n */\n private startKeepaliveTimer(url: string, interval: number) {\n let keepAliveRetryCount = 0;\n this.clearKeepaliveTimer();\n this.keepaliveTimer = setInterval(async () => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: this.startKeepaliveTimer.name,\n };\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered() && keepAliveRetryCount < 5) {\n try {\n const res = await this.postKeepAlive(url);\n log.info(`Sent Keepalive, status: ${res.statusCode}`, logContext);\n if (keepAliveRetryCount > 0) {\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n keepAliveRetryCount = 0;\n } catch (err: unknown) {\n keepAliveRetryCount += 1;\n const error = <WebexRequestPayload>err;\n\n log.warn(\n `Keep-alive missed ${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 this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n clientError\n );\n },\n {method: this.startKeepaliveTimer.name, file: REGISTRATION_FILE}\n );\n\n if (abort || keepAliveRetryCount >= 5) {\n this.setStatus(MobiusStatus.DEFAULT);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(this.startKeepaliveTimer.name);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n }\n });\n }, interval * 1000);\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = 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 } catch (err) {\n log.warn(`Delete failed with Mobius`, {});\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(MobiusStatus.DEFAULT);\n }\n\n /**\n * @returns The value of instance variable registerRetry.\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 * @param value - for registerRetry\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 * @param callingClient - Instance of CallingClient.\n * @param restoreData - Data from Mobius with existing device information.\n * @returns Boolean.\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 = MobiusStatus.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 * @param caller - Caller of this method.\n */\n public async reconnectOnFailure(caller: string) {\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: this.reconnectOnFailure.name,\n });\n }\n }\n }\n}\n\n/**\n * @param webex - A webex instance.\n * @param serviceData - indicates whether the backend service is calling or contactcentre\n * @param mutex - mutex which is used to run any registration scenario exclusively\n * @param lineEmitter - Line emitter for registration related events\n * @param logLevel - log level option for registration module\n */\nexport const createRegistration = (\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER\n): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_uuid","require","_types","_common","_types2","_Metrics","_calling","_Logger","_interopRequireDefault","_SDKConnector","_types3","_constants","_types4","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","_Array$from","test","arr","len","arr2","Array","Registration","webex","serviceData","mutex","lineEmitter","logLevel","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","userId","internal","device","registrationStatus","MobiusStatus","DEFAULT","failback429RetryAttempts","log","setLogger","REGISTRATION_FILE","rehomingIntervalMin","DEFAULT_REHOMING_INTERVAL_MIN","rehomingIntervalMax","DEFAULT_REHOMING_INTERVAL_MAX","callManager","getCallManager","indicator","metricManager","getMetricManager","primaryMobiusUris","backupMobiusUris","_createClass2","key","getActiveMobiusUrl","activeMobiusUrl","setActiveMobiusUrl","url","info","concat","method","file","updateActiveMobius","setMobiusServers","_postKeepAlive","_asyncToGenerator2","_regenerator","mark","_callee","_headers","wrap","_callee$","_context","prev","abrupt","request","uri","HTTP_METHODS","POST","headers","CISCO_DEVICE_URL","SPARK_USER_AGENT","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","stop","postKeepAlive","_x","apply","arguments","_deleteRegistration","_callee2","deviceId","deviceUrl","_headers2","response","_callee2$","_context2","t0","fetch","t1","DEVICES_ENDPOINT_RESOURCE","t2","DELETE","t3","t4","credentials","getUserToken","t5","sent","WEBEX_WEB_CLIENT","uuid","t6","t7","LINE_EVENTS","UNREGISTERED","json","deleteRegistration","_x2","_x3","_x4","_postRegistration","_callee3","_headers3","deviceInfo","_callee3$","_context3","clientDeviceUri","body","postRegistration","_x5","_restorePreviousRegistration","_callee4","caller","abort","_callee4$","_context4","attemptRegistrationWithServers","restorePreviousRegistration","_x6","_scheduleFailback429Retry","_callee5","interval","_callee5$","_context5","REG_FAILBACK_429_MAX_RETRIES","clearFailbackTimer","FAILBACK_429_RETRY_UTIL","getRegRetryInterval","startFailbackTimer","isDeviceRegistered","restartRegistration","scheduleFailback429Retry","attempt","undefined","BASE_REG_RETRY_TIMER_VAL_IN_SEC","Math","pow","BASE_REG_TIMER_MFACTOR","floor","random","REG_RANDOM_T_FACTOR_UPPER_LIMIT","SEC_TO_MSEC_MFACTOR","_startFailoverTimer","_callee10","_this","timeElapsed","loggerContext","excessVal","scheduledTime","_args10","_callee10$","_context10","startFailoverTimer","REG_TRY_BACKUP_TIMER_VAL_IN_SEC","_now","setTimeout","_callee7","_callee7$","_context7","runExclusive","_callee6","currentTime","_callee6$","_context6","_callee9","_callee9$","_context9","_callee8","_callee8$","_context8","emitFinalFailure","clientError","ERROR","failbackTimer","clearTimeout","isFailbackRequired","indexOf","getFailbackInterval","initiateFailback","intervalInMinutes","MINUTES_TO_SEC_MFACTOR","intervalInSeconds","_this2","_callee11","_callee11$","_context11","executeFailback","_executeFailback","_callee13","_this3","_callee13$","_context13","_callee12","abortNew","_callee12$","_context12","_keys","getActiveCalls","deregister","FAILBACK_UTIL","setIntervalValues","getDeviceInfo","ACTIVE","getStatus","setStatus","_restartRegistration","_callee14","_callee14$","_context14","_x7","_handleConnectionRestoration","_callee16","retry","_this4","_callee16$","_context16","_callee15","_callee15$","_context15","handleConnectionRestoration","clearKeepaliveTimer","_x8","restoreRegistrationCallBack","_this5","_ref8","_callee17","restoreData","logContext","restore","finalError","_callee17$","_context17","isRegRetry","getExistingDevice","setRegRetry","_x9","_x10","_triggerRegistration","_callee18","_callee18$","_context18","triggerRegistration","_attemptRegistrationWithServers","_callee19","_this6","servers","_iterator","_step","_this$deviceInfo$devi","resp","error","_args19","_callee19$","_context19","CONNECTING","REGISTERED","setDeviceInfo","submitRegistrationMetric","METRIC_EVENT","REGISTRATION","REG_ACTION","REGISTER","METRIC_TYPE","BEHAVIORAL","startKeepaliveTimer","keepaliveInterval","handleRegistrationErrors","REGISTRATION_ERROR","statusCode","ERROR_CODE","TOO_MANY_REQUESTS","finish","_x11","_this7","keepAliveRetryCount","keepaliveTimer","setInterval","_callee21","_callee21$","_context21","_callee20","res","_callee20$","_context20","RECONNECTED","warn","KEEPALIVE_FAILURE","reconnectOnFailure","RECONNECTING","clearInterval","isReconnectPending","reconnectPending","_deregister","_callee22","_this$deviceInfo$devi2","_this$deviceInfo$devi3","_callee22$","_context22","registerRetry","devices","DEFAULT_KEEPALIVE_INTERVAL","stringToReplace","replace","_reconnectOnFailure","_callee23","_callee23$","_context23","_x12","exports","createRegistration"],"sources":["register.ts"],"sourcesContent":["/* eslint-disable valid-jsdoc */\nimport {v4 as uuid} from 'uuid';\nimport {Mutex} from 'async-mutex';\nimport {ERROR_CODE} from '../../Errors/types';\nimport {emitFinalFailure, handleRegistrationErrors} from '../../common';\n\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, REG_ACTION} 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 {IRegistration} from './types';\nimport SDKConnector from '../../SDKConnector';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n IDeviceInfo,\n MobiusStatus,\n ServiceData,\n WebexRequestPayload,\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 FAILBACK_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} 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: MobiusStatus;\n private failbackTimer?: NodeJS.Timer;\n private activeMobiusUrl!: string;\n\n private keepaliveTimer: NodeJS.Timer | undefined;\n private rehomingIntervalMin: number;\n\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\n /**\n */\n constructor(\n webex: WebexSDK,\n serviceData: ServiceData,\n mutex: Mutex,\n lineEmitter: LineEmitterCallback,\n logLevel: LOGGER\n ) {\n this.sdkConnector = SDKConnector;\n this.serviceData = serviceData;\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 = MobiusStatus.DEFAULT;\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 public getActiveMobiusUrl(): string {\n return this.activeMobiusUrl;\n }\n\n public setActiveMobiusUrl(url: string) {\n log.info(`ActiveMobiusUrl: ${url}`, {method: 'setActiveMobiusUrl', file: REGISTRATION_FILE});\n this.activeMobiusUrl = url;\n this.callManager.updateActiveMobius(url);\n }\n\n public setMobiusServers(primaryMobiusUris: string[], backupMobiusUris: string[]) {\n this.primaryMobiusUris = primaryMobiusUris;\n this.backupMobiusUris = backupMobiusUris;\n }\n\n /**\n * Implementation of sending keepalive.\n *\n */\n private async postKeepAlive(url: string) {\n return <WebexRequestPayload>this.webex.request({\n uri: `${url}/status`,\n method: HTTP_METHODS.POST,\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\n /**\n * Implementation of delete device.\n *\n */\n private async deleteRegistration(url: string, deviceId: string, deviceUrl: string) {\n const 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\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.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 }\n\n return abort;\n }\n\n /**\n * When a failback request is rejected with 429, it means the\n * request did not even land on primary mobius to know if it\n * can handle this device registration now, in such cases this\n * method is called to retry sooner than the rehoming timer value.\n */\n private async scheduleFailback429Retry() {\n if (this.failback429RetryAttempts >= REG_FAILBACK_429_MAX_RETRIES) {\n return;\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: FAILBACK_429_RETRY_UTIL,\n });\n const interval = this.getRegRetryInterval(this.failback429RetryAttempts);\n\n this.startFailbackTimer(interval);\n const abort = await this.restorePreviousRegistration(FAILBACK_429_RETRY_UTIL);\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(FAILBACK_429_RETRY_UTIL);\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: this.startFailoverTimer.name,\n };\n\n let interval = this.getRegRetryInterval(attempt);\n\n if (timeElapsed + interval > REG_TRY_BACKUP_TIMER_VAL_IN_SEC) {\n const excessVal = timeElapsed + interval - REG_TRY_BACKUP_TIMER_VAL_IN_SEC;\n\n interval -= excessVal;\n }\n\n let abort;\n\n if (interval > BASE_REG_RETRY_TIMER_VAL_IN_SEC) {\n const scheduledTime = Math.floor(Date.now() / 1000);\n\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(this.startFailoverTimer.name);\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 log.log('Failing over to backup servers.', loggerContext);\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\n interval = this.getRegRetryInterval();\n setTimeout(async () => {\n await this.mutex.runExclusive(async () => {\n abort = await this.attemptRegistrationWithServers(\n this.startFailoverTimer.name,\n this.backupMobiusUris\n );\n if (!abort && !this.isDeviceRegistered()) {\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 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 /**\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 if (Object.keys(this.callManager.getActiveCalls()).length === 0) {\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 if (!abort && !this.isDeviceRegistered()) {\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 }\n } else {\n log.info('Active calls present, deferring failback to next cycle.', {\n file: REGISTRATION_FILE,\n method: this.executeFailback.name,\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 === MobiusStatus.ACTIVE;\n }\n\n public getStatus(): MobiusStatus {\n return this.registrationStatus;\n }\n\n public setStatus(value: MobiusStatus) {\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 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.info('Mercury connection is up again, Re-registering with Mobius', {\n file: REGISTRATION_FILE,\n method: this.handleConnectionRestoration.name,\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 this.handleConnectionRestoration.name\n );\n\n if (!abort && !this.isDeviceRegistered()) {\n await this.restartRegistration(this.handleConnectionRestoration.name);\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 (this.primaryMobiusUris.length > 0) {\n const abort = await this.attemptRegistrationWithServers(\n this.triggerRegistration.name,\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\n if (this.isDeviceRegistered()) {\n log.log(`[${caller}] : Device already registered with : ${this.activeMobiusUrl}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n\n return abort;\n }\n for (const url of servers) {\n try {\n abort = false;\n this.registrationStatus = MobiusStatus.DEFAULT;\n this.lineEmitter(LINE_EVENTS.CONNECTING);\n log.log(`[${caller}] : Mobius url to contact: ${url}`, {\n file: REGISTRATION_FILE,\n method: this.attemptRegistrationWithServers.name,\n });\n // eslint-disable-next-line no-await-in-loop\n const resp = await this.postRegistration(url);\n\n this.deviceInfo = resp.body as IDeviceInfo;\n this.lineEmitter(LINE_EVENTS.REGISTERED, resp.body as IDeviceInfo);\n this.registrationStatus = MobiusStatus.ACTIVE;\n this.setActiveMobiusUrl(url);\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 undefined\n );\n this.startKeepaliveTimer(\n this.deviceInfo.device?.uri as string,\n this.deviceInfo.keepaliveInterval as number\n );\n this.initiateFailback();\n break;\n } catch (err: unknown) {\n const body = err as WebexRequestPayload;\n\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 clientError\n );\n },\n {method: this.attemptRegistrationWithServers.name, file: REGISTRATION_FILE},\n this.restoreRegistrationCallBack()\n );\n if (this.registrationStatus === MobiusStatus.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 break;\n } else if (caller === this.executeFailback.name) {\n const error = body.statusCode;\n\n if (error === ERROR_CODE.TOO_MANY_REQUESTS) {\n // eslint-disable-next-line no-await-in-loop\n await this.scheduleFailback429Retry();\n abort = true;\n break;\n }\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 startKeepaliveTimer(url: string, interval: number) {\n let keepAliveRetryCount = 0;\n this.clearKeepaliveTimer();\n this.keepaliveTimer = setInterval(async () => {\n const logContext = {\n file: REGISTRATION_FILE,\n method: this.startKeepaliveTimer.name,\n };\n await this.mutex.runExclusive(async () => {\n if (this.isDeviceRegistered() && keepAliveRetryCount < 5) {\n try {\n const res = await this.postKeepAlive(url);\n log.info(`Sent Keepalive, status: ${res.statusCode}`, logContext);\n if (keepAliveRetryCount > 0) {\n this.lineEmitter(LINE_EVENTS.RECONNECTED);\n }\n keepAliveRetryCount = 0;\n } catch (err: unknown) {\n keepAliveRetryCount += 1;\n const error = <WebexRequestPayload>err;\n\n log.warn(\n `Keep-alive missed ${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 this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION,\n REG_ACTION.KEEPALIVE_FAILURE,\n METRIC_TYPE.BEHAVIORAL,\n clientError\n );\n },\n {method: this.startKeepaliveTimer.name, file: REGISTRATION_FILE}\n );\n\n if (abort || keepAliveRetryCount >= 5) {\n this.setStatus(MobiusStatus.DEFAULT);\n this.clearKeepaliveTimer();\n this.clearFailbackTimer();\n this.lineEmitter(LINE_EVENTS.UNREGISTERED);\n\n if (!abort) {\n /* In case of non-final error, re-attempt registration */\n await this.reconnectOnFailure(this.startKeepaliveTimer.name);\n }\n } else {\n this.lineEmitter(LINE_EVENTS.RECONNECTING);\n }\n }\n }\n });\n }, interval * 1000);\n }\n\n /**\n * Clears the keepalive timer if running.\n */\n public clearKeepaliveTimer() {\n if (this.keepaliveTimer) {\n clearInterval(this.keepaliveTimer);\n this.keepaliveTimer = 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 } catch (err) {\n log.warn(`Delete failed with Mobius`, {});\n }\n\n this.clearKeepaliveTimer();\n this.setStatus(MobiusStatus.DEFAULT);\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 = MobiusStatus.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 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: this.reconnectOnFailure.name,\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): IRegistration => new Registration(webex, serviceData, mutex, lineEmitter, logLevel);\n"],"mappings":";;;;;;;;;;;;;;;;;;;AACA,IAAAA,KAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AAEA,IAAAK,QAAA,GAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAC,sBAAA,CAAAP,OAAA;AAEA,IAAAQ,aAAA,GAAAD,sBAAA,CAAAP,OAAA;AACA,IAAAS,OAAA,GAAAT,OAAA;AASA,IAAAU,UAAA,GAAAV,OAAA;AAoBA,IAAAW,OAAA,GAAAX,OAAA;AAA+D,SAAAY,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,OAAA,oBAAAH,CAAA,CAAAI,gBAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,cAAA,CAAAL,CAAA,MAAAE,EAAA,GAAAI,2BAAA,CAAAN,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAO,MAAA,qBAAAL,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAM,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAR,CAAA,CAAAO,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAb,CAAA,CAAAQ,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAR,EAAA,GAAAA,EAAA,CAAAmB,IAAA,CAAArB,CAAA,MAAAW,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAApB,EAAA,CAAAqB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAhB,EAAA,CAAAuB,MAAA,UAAAvB,EAAA,CAAAuB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAN,CAAA,EAAA0B,MAAA,SAAA1B,CAAA,qBAAAA,CAAA,sBAAA2B,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAArB,CAAA,EAAA+B,KAAA,aAAApB,CAAA,iBAAAX,CAAA,CAAAgC,WAAA,EAAArB,CAAA,GAAAX,CAAA,CAAAgC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAuB,WAAA,CAAAlC,CAAA,OAAAW,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA3B,CAAA,EAAA0B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAC,KAAA,CAAAF,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAG/D;AACA;AACA;AAFA,IAGaE,YAAY;EA4BvB;AACF;EACE,SAAAA,aACEC,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB,EAChB;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAP,YAAA;IAAA,IAAAQ,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,kBA/Be,EAAE;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,sBAiBe,CAAC,CAAC;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA;IAAA,IAAAC,gBAAA,CAAAD,OAAA,yBAGZ,KAAK;IAAA,IAAAC,gBAAA,CAAAD,OAAA,4BACF,KAAK;IAW9B,IAAI,CAACE,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACR,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAAC,IAAI,CAACO,YAAY,CAACE,QAAQ,EAAE,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACX,KAAK,CAAC;IAC9B;IACA,IAAI,CAACA,KAAK,GAAG,IAAI,CAACQ,YAAY,CAACE,QAAQ,EAAE;IACzC,IAAI,CAACE,MAAM,GAAG,IAAI,CAACZ,KAAK,CAACa,QAAQ,CAACC,MAAM,CAACF,MAAM;IAC/C,IAAI,CAACG,kBAAkB,GAAGC,oBAAY,CAACC,OAAO;IAC9C,IAAI,CAACC,wBAAwB,GAAG,CAAC;IACjCC,eAAG,CAACC,SAAS,CAAChB,QAAQ,EAAEiB,4BAAiB,CAAC;IAC1C,IAAI,CAACC,mBAAmB,GAAGC,wCAA6B;IACxD,IAAI,CAACC,mBAAmB,GAAGC,wCAA6B;IACxD,IAAI,CAACvB,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACwB,WAAW,GAAG,IAAAC,uBAAc,EAAC,IAAI,CAAC3B,KAAK,EAAEC,WAAW,CAAC2B,SAAS,CAAC;IACpE,IAAI,CAACC,aAAa,GAAG,IAAAC,yBAAgB,EAAC,IAAI,CAAC9B,KAAK,EAAEC,WAAW,CAAC2B,SAAS,CAAC;IACxE,IAAI,CAACzB,WAAW,GAAGA,WAAW;IAE9B,IAAI,CAAC4B,iBAAiB,GAAG,EAAE;IAC3B,IAAI,CAACC,gBAAgB,GAAG,EAAE;EAC5B;EAAC,IAAAC,aAAA,CAAA3B,OAAA,EAAAP,YAAA;IAAAmC,GAAA;IAAA9D,KAAA,EAED,SAAA+D,mBAAA,EAAoC;MAClC,OAAO,IAAI,CAACC,eAAe;IAC7B;EAAC;IAAAF,GAAA;IAAA9D,KAAA,EAED,SAAAiE,mBAA0BC,GAAW,EAAE;MACrCnB,eAAG,CAACoB,IAAI,qBAAAC,MAAA,CAAqBF,GAAG,GAAI;QAACG,MAAM,EAAE,oBAAoB;QAAEC,IAAI,EAAErB;MAAiB,CAAC,CAAC;MAC5F,IAAI,CAACe,eAAe,GAAGE,GAAG;MAC1B,IAAI,CAACZ,WAAW,CAACiB,kBAAkB,CAACL,GAAG,CAAC;IAC1C;EAAC;IAAAJ,GAAA;IAAA9D,KAAA,EAED,SAAAwE,iBAAwBb,iBAA2B,EAAEC,gBAA0B,EAAE;MAC/E,IAAI,CAACD,iBAAiB,GAAGA,iBAAiB;MAC1C,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IAC1C;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAA9D,KAAA;MAAA,IAAAyE,cAAA,OAAAC,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAAC,QAA4BX,GAAW;QAAA,IAAAY,QAAA;QAAA,OAAAH,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAvE,IAAA;YAAA;cAAA,OAAAuE,QAAA,CAAAE,MAAA,WACT,IAAI,CAACvD,KAAK,CAACwD,OAAO,CAAC;gBAC7CC,GAAG,KAAAjB,MAAA,CAAKF,GAAG,YAAS;gBACpBG,MAAM,EAAEiB,oBAAY,CAACC,IAAI;gBACzBC,OAAO,GAAAV,QAAA,WAAA3C,gBAAA,CAAAD,OAAA,EAAA4C,QAAA,EACJW,2BAAgB,EAAG,IAAI,CAAC7D,KAAK,CAACa,QAAQ,CAACC,MAAM,CAACwB,GAAG,OAAA/B,gBAAA,CAAAD,OAAA,EAAA4C,QAAA,EACjDY,2BAAgB,EAAGC,6BAAkB,GAAAb,QAAA,CACvC;gBACDc,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAAb,QAAA,CAAAc,IAAA;UAAA;QAAA,GAAAlB,OAAA;MAAA,CACH;MAAA,SAAAmB,cAAAC,EAAA;QAAA,OAAAxB,cAAA,CAAAyB,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAH,aAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAAlC,GAAA;IAAA9D,KAAA;MAAA,IAAAoG,mBAAA,OAAA1B,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAAyB,SAAiCnC,GAAW,EAAEoC,QAAgB,EAAEC,SAAiB;QAAA,IAAAC,SAAA;QAAA,IAAAC,QAAA;QAAA,OAAA9B,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA2B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAzB,IAAA,GAAAyB,SAAA,CAAAjG,IAAA;YAAA;cAAAiG,SAAA,CAAAC,EAAA,GACxDC,KAAK;cAAAF,SAAA,CAAAG,EAAA,MAAA1C,MAAA,CAAIF,GAAG,EAAAE,MAAA,CAAG2C,oCAAyB,OAAA3C,MAAA,CAAIkC,QAAQ;cAAAK,SAAA,CAAAK,EAAA,GACjE1B,oBAAY,CAAC2B,MAAM;cAAAT,SAAA;cAAA,IAAArE,gBAAA,CAAAD,OAAA,EAAAsE,SAAA,EAExBf,2BAAgB,EAAGc,SAAS;cAAAI,SAAA,CAAAO,EAAA,GAAA/E,gBAAA,CAAAD,OAAA;cAAAyE,SAAA,CAAAQ,EAAA,GAAAX,SAAA;cAAAG,SAAA,CAAAjG,IAAA;cAAA,OACR,IAAI,CAACkB,KAAK,CAACwF,WAAW,CAACC,YAAY,EAAE;YAAA;cAAAV,SAAA,CAAAW,EAAA,GAAAX,SAAA,CAAAY,IAAA;cAAA,IAAAZ,SAAA,CAAAO,EAAA,EAAAP,SAAA,CAAAQ,EAAA,mBAAAR,SAAA,CAAAW,EAAA;cAAA,IAAAnF,gBAAA,CAAAD,OAAA,EAAAsE,SAAA,mBAAApC,MAAA,CAC3CoD,2BAAgB,OAAApD,MAAA,CAAI,IAAAqD,QAAI,GAAE;cAAA,IAAAtF,gBAAA,CAAAD,OAAA,EAAAsE,SAAA,EACxCd,2BAAgB,EAAGC,6BAAkB;cAAAgB,SAAA,CAAAe,EAAA,GAAAlB,SAAA;cAAAG,SAAA,CAAAgB,EAAA;gBALxCtD,MAAM,EAAAsC,SAAA,CAAAK,EAAA;gBACNxB,OAAO,EAAAmB,SAAA,CAAAe;cAAA;cAAAf,SAAA,CAAAjG,IAAA;cAAA,WAAAiG,SAAA,CAAAC,EAAA,EAAAD,SAAA,CAAAG,EAAA,EAAAH,SAAA,CAAAgB,EAAA;YAAA;cAFHlB,QAAQ,GAAAE,SAAA,CAAAY,IAAA;cAUd,IAAI,CAACxF,WAAW,CAAC6F,mBAAW,CAACC,YAAY,CAAC;cAAC,OAAAlB,SAAA,CAAAxB,MAAA,WAEfsB,QAAQ,CAACqB,IAAI,EAAE;YAAA;YAAA;cAAA,OAAAnB,SAAA,CAAAZ,IAAA;UAAA;QAAA,GAAAM,QAAA;MAAA,CAC5C;MAAA,SAAA0B,mBAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAA9B,mBAAA,CAAAF,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA4B,kBAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAAjE,GAAA;IAAA9D,KAAA;MAAA,IAAAmI,iBAAA,OAAAzD,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAAwD,SAA+BlE,GAAW;QAAA,IAAAmE,SAAA;QAAA,IAAAC,UAAA;QAAA,OAAA3D,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAwD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAA9H,IAAA;YAAA;cAClC4H,UAAU,GAAG;gBACjB9F,MAAM,EAAE,IAAI,CAACA,MAAM;gBACnBiG,eAAe,EAAE,IAAI,CAAC7G,KAAK,CAACa,QAAQ,CAACC,MAAM,CAACwB,GAAG;gBAC/CrC,WAAW,EAAE,IAAI,CAACA;cACpB,CAAC;cAAA,OAAA2G,SAAA,CAAArD,MAAA,WAE2B,IAAI,CAACvD,KAAK,CAACwD,OAAO,CAAC;gBAC7CC,GAAG,KAAAjB,MAAA,CAAKF,GAAG,WAAQ;gBACnBG,MAAM,EAAEiB,oBAAY,CAACC,IAAI;gBACzBC,OAAO,GAAA6C,SAAA,WAAAlG,gBAAA,CAAAD,OAAA,EAAAmG,SAAA,EACJ5C,2BAAgB,EAAG6C,UAAU,CAACG,eAAe,OAAAtG,gBAAA,CAAAD,OAAA,EAAAmG,SAAA,EAC7C3C,2BAAgB,EAAGC,6BAAkB,GAAA0C,SAAA,CACvC;gBACDK,IAAI,EAAEJ,UAAU;gBAChB1C,OAAO,EAAEC,wBAAgB,CAACC;cAC5B,CAAC,CAAC;YAAA;YAAA;cAAA,OAAA0C,SAAA,CAAAzC,IAAA;UAAA;QAAA,GAAAqC,QAAA;MAAA,CACH;MAAA,SAAAO,iBAAAC,GAAA;QAAA,OAAAT,iBAAA,CAAAjC,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAwC,gBAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAA7E,GAAA;IAAA9D,KAAA;MAAA,IAAA6I,4BAAA,OAAAnE,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAAkE,SAA0CC,MAAc;QAAA,IAAAC,KAAA;QAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAkE,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAhE,IAAA,GAAAgE,SAAA,CAAAxI,IAAA;YAAA;cAClDsI,KAAK,GAAG,KAAK;cAAA,KAEb,IAAI,CAAChF,eAAe;gBAAAkF,SAAA,CAAAxI,IAAA;gBAAA;cAAA;cAAAwI,SAAA,CAAAxI,IAAA;cAAA,OACR,IAAI,CAACyI,8BAA8B,CAACJ,MAAM,EAAE,CAAC,IAAI,CAAC/E,eAAe,CAAC,CAAC;YAAA;cAAjFgF,KAAK,GAAAE,SAAA,CAAA3B,IAAA;YAAA;cAAA,OAAA2B,SAAA,CAAA/D,MAAA,WAGA6D,KAAK;YAAA;YAAA;cAAA,OAAAE,SAAA,CAAAnD,IAAA;UAAA;QAAA,GAAA+C,QAAA;MAAA,CACb;MAAA,SAAAM,4BAAAC,GAAA;QAAA,OAAAR,4BAAA,CAAA3C,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAiD,2BAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;EALE;IAAAtF,GAAA;IAAA9D,KAAA;MAAA,IAAAsJ,yBAAA,OAAA5E,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAMA,SAAA2E,SAAA;QAAA,IAAAC,QAAA,EAAAR,KAAA;QAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA0E,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAxE,IAAA,GAAAwE,SAAA,CAAAhJ,IAAA;YAAA;cAAA,MACM,IAAI,CAACoC,wBAAwB,IAAI6G,uCAA4B;gBAAAD,SAAA,CAAAhJ,IAAA;gBAAA;cAAA;cAAA,OAAAgJ,SAAA,CAAAvE,MAAA;YAAA;cAGjE,IAAI,CAACyE,kBAAkB,EAAE;cACzB,IAAI,CAAC9G,wBAAwB,IAAI,CAAC;cAClCC,eAAG,CAACA,GAAG,mDAAAqB,MAAA,CAAmD,IAAI,CAACtB,wBAAwB,GAAI;gBACzFwB,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAEwF;cACV,CAAC,CAAC;cACIL,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAAC,IAAI,CAAChH,wBAAwB,CAAC;cAExE,IAAI,CAACiH,kBAAkB,CAACP,QAAQ,CAAC;cAACE,SAAA,CAAAhJ,IAAA;cAAA,OACd,IAAI,CAAC0I,2BAA2B,CAACS,kCAAuB,CAAC;YAAA;cAAvEb,KAAK,GAAAU,SAAA,CAAAnC,IAAA;cAAA,MAEP,CAACyB,KAAK,IAAI,CAAC,IAAI,CAACgB,kBAAkB,EAAE;gBAAAN,SAAA,CAAAhJ,IAAA;gBAAA;cAAA;cAAAgJ,SAAA,CAAAhJ,IAAA;cAAA,OAChC,IAAI,CAACuJ,mBAAmB,CAACJ,kCAAuB,CAAC;YAAA;YAAA;cAAA,OAAAH,SAAA,CAAA3D,IAAA;UAAA;QAAA,GAAAwD,QAAA;MAAA,CAE1D;MAAA,SAAAW,yBAAA;QAAA,OAAAZ,yBAAA,CAAApD,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA+D,wBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;EALE;IAAApG,GAAA;IAAA9D,KAAA,EAMA,SAAA8J,oBAAA,EAAiD;MAAA,IAArBK,OAAO,GAAAhE,SAAA,CAAAzG,MAAA,QAAAyG,SAAA,QAAAiE,SAAA,GAAAjE,SAAA,MAAG,CAAC;MACrC,OACEkE,0CAA+B,GAAAC,IAAA,CAAAC,GAAA,CAC/BC,iCAAsB,EAAIL,OAAO,IACjCG,IAAI,CAACG,KAAK,CACR,CAACH,IAAI,CAACI,MAAM,EAAE,IAAIC,0CAA+B,GAAGC,8BAAmB,GAAG,CAAC,CAAC,GAC1EA,8BAAmB,IACnBA,8BAAmB,CACtB;IAEL;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAA9G,GAAA;IAAA9D,KAAA;MAAA,IAAA6K,mBAAA,OAAAnG,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAOA,SAAAkG,UAAA;QAAA,IAAAC,KAAA;QAAA,IAAAZ,OAAA;UAAAa,WAAA;UAAAC,aAAA;UAAAzB,QAAA;UAAA0B,SAAA;UAAAlC,KAAA;UAAAmC,aAAA;UAAAC,OAAA,GAAAjF,SAAA;QAAA,OAAAxB,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAsG,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAApG,IAAA,GAAAoG,UAAA,CAAA5K,IAAA;YAAA;cAAiCyJ,OAAO,GAAAiB,OAAA,CAAA1L,MAAA,QAAA0L,OAAA,QAAAhB,SAAA,GAAAgB,OAAA,MAAG,CAAC;cAAEJ,WAAW,GAAAI,OAAA,CAAA1L,MAAA,QAAA0L,OAAA,QAAAhB,SAAA,GAAAgB,OAAA,MAAG,CAAC;cACrDH,aAAa,GAAG;gBACpB3G,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE,IAAI,CAACkH,kBAAkB,CAACnK;cAClC,CAAC;cAEGoI,QAAQ,GAAG,IAAI,CAACM,mBAAmB,CAACK,OAAO,CAAC;cAEhD,IAAIa,WAAW,GAAGxB,QAAQ,GAAGgC,0CAA+B,EAAE;gBACtDN,SAAS,GAAGF,WAAW,GAAGxB,QAAQ,GAAGgC,0CAA+B;gBAE1EhC,QAAQ,IAAI0B,SAAS;cACvB;cAAC,MAIG1B,QAAQ,GAAGa,0CAA+B;gBAAAiB,UAAA,CAAA5K,IAAA;gBAAA;cAAA;cACtCyK,aAAa,GAAGb,IAAI,CAACG,KAAK,CAAC,IAAAgB,IAAA,CAAAvJ,OAAA,GAAU,GAAG,IAAI,CAAC;cAEnDwJ,UAAU,mBAAAhH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAA+G,SAAA;gBAAA,OAAAhH,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA6G,UAAAC,SAAA;kBAAA,kBAAAA,SAAA,CAAA3G,IAAA,GAAA2G,SAAA,CAAAnL,IAAA;oBAAA;sBAAAmL,SAAA,CAAAnL,IAAA;sBAAA,OACHqK,KAAI,CAACjJ,KAAK,CAACgK,YAAY,mBAAApH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAAmH,SAAA;wBAAA,IAAAC,WAAA;wBAAA,OAAArH,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAkH,UAAAC,SAAA;0BAAA,kBAAAA,SAAA,CAAAhH,IAAA,GAAAgH,SAAA,CAAAxL,IAAA;4BAAA;8BAAAwL,SAAA,CAAAxL,IAAA;8BAAA,OACdqK,KAAI,CAAC5B,8BAA8B,CAAC4B,KAAI,CAACQ,kBAAkB,CAACnK,IAAI,CAAC;4BAAA;8BAA/E4H,KAAK,GAAAkD,SAAA,CAAA3E,IAAA;8BACCyE,WAAW,GAAG1B,IAAI,CAACG,KAAK,CAAC,IAAAgB,IAAA,CAAAvJ,OAAA,GAAU,GAAG,IAAI,CAAC;8BAAA,MAE7C,CAAC8G,KAAK,IAAI,CAAC+B,KAAI,CAACf,kBAAkB,EAAE;gCAAAkC,SAAA,CAAAxL,IAAA;gCAAA;8BAAA;8BAAAwL,SAAA,CAAAxL,IAAA;8BAAA,OAChCqK,KAAI,CAACQ,kBAAkB,CAACpB,OAAO,GAAG,CAAC,EAAEa,WAAW,IAAIgB,WAAW,GAAGb,aAAa,CAAC,CAAC;4BAAA;4BAAA;8BAAA,OAAAe,SAAA,CAAAnG,IAAA;0BAAA;wBAAA,GAAAgG,QAAA;sBAAA,CAE1F,GAAC;oBAAA;oBAAA;sBAAA,OAAAF,SAAA,CAAA9F,IAAA;kBAAA;gBAAA,GAAA4F,QAAA;cAAA,CACH,IAAEnC,QAAQ,GAAGoB,8BAAmB,CAAC;cAClC7H,eAAG,CAACA,GAAG,oCAAAqB,MAAA,CAC8BoF,QAAQ,qCAAApF,MAAA,CAAkC+F,OAAO,GACpFc,aAAa,CACd;cAACK,UAAA,CAAA5K,IAAA;cAAA;YAAA;cAAA,KACO,IAAI,CAACkD,gBAAgB,CAAClE,MAAM;gBAAA4L,UAAA,CAAA5K,IAAA;gBAAA;cAAA;cACrCqC,eAAG,CAACA,GAAG,CAAC,iCAAiC,EAAEkI,aAAa,CAAC;cAACK,UAAA,CAAA5K,IAAA;cAAA,OAC5C,IAAI,CAACyI,8BAA8B,CAC/C,IAAI,CAACoC,kBAAkB,CAACnK,IAAI,EAC5B,IAAI,CAACwC,gBAAgB,CACtB;YAAA;cAHDoF,KAAK,GAAAsC,UAAA,CAAA/D,IAAA;cAIL,IAAI,CAACyB,KAAK,IAAI,CAAC,IAAI,CAACgB,kBAAkB,EAAE,EAAE;gBACxCR,QAAQ,GAAG,IAAI,CAACM,mBAAmB,EAAE;gBACrC4B,UAAU,mBAAAhH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAAuH,SAAA;kBAAA,OAAAxH,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAqH,UAAAC,SAAA;oBAAA,kBAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAA3L,IAAA;sBAAA;wBAAA2L,SAAA,CAAA3L,IAAA;wBAAA,OACHqK,KAAI,CAACjJ,KAAK,CAACgK,YAAY,mBAAApH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAA0H,SAAA;0BAAA,OAAA3H,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAwH,UAAAC,SAAA;4BAAA,kBAAAA,SAAA,CAAAtH,IAAA,GAAAsH,SAAA,CAAA9L,IAAA;8BAAA;gCAAA8L,SAAA,CAAA9L,IAAA;gCAAA,OACdqK,KAAI,CAAC5B,8BAA8B,CAC/C4B,KAAI,CAACQ,kBAAkB,CAACnK,IAAI,EAC5B2J,KAAI,CAACnH,gBAAgB,CACtB;8BAAA;gCAHDoF,KAAK,GAAAwD,SAAA,CAAAjF,IAAA;gCAIL,IAAI,CAACyB,KAAK,IAAI,CAAC+B,KAAI,CAACf,kBAAkB,EAAE,EAAE;kCACxC,IAAAyC,wBAAgB,EAAC,UAACC,WAAsB,EAAK;oCAC3C3B,KAAI,CAAChJ,WAAW,CAAC6F,mBAAW,CAAC+E,KAAK,EAAEvC,SAAS,EAAEsC,WAAW,CAAC;kCAC7D,CAAC,EAAEzB,aAAa,CAAC;gCACnB;8BAAC;8BAAA;gCAAA,OAAAuB,SAAA,CAAAzG,IAAA;4BAAA;0BAAA,GAAAuG,QAAA;wBAAA,CACF,GAAC;sBAAA;sBAAA;wBAAA,OAAAD,SAAA,CAAAtG,IAAA;oBAAA;kBAAA,GAAAoG,QAAA;gBAAA,CACH,IAAE3C,QAAQ,GAAGoB,8BAAmB,CAAC;gBAClC7H,eAAG,CAACA,GAAG,2CAAAqB,MAAA,CAA2CoF,QAAQ,gBAAayB,aAAa,CAAC;cACvF;cAACK,UAAA,CAAA5K,IAAA;cAAA;YAAA;cAED,IAAA+L,wBAAgB,EAAC,UAACC,WAAsB,EAAK;gBAC3C3B,KAAI,CAAChJ,WAAW,CAAC6F,mBAAW,CAAC+E,KAAK,EAAEvC,SAAS,EAAEsC,WAAW,CAAC;cAC7D,CAAC,EAAEzB,aAAa,CAAC;YAAC;YAAA;cAAA,OAAAK,UAAA,CAAAvF,IAAA;UAAA;QAAA,GAAA+E,SAAA;MAAA,CAErB;MAAA,SAAAS,mBAAA;QAAA,OAAAV,mBAAA,CAAA3E,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAoF,kBAAA;IAAA;IAED;AACF;AACA;EAFE;IAAAzH,GAAA;IAAA9D,KAAA,EAGA,SAAA4J,mBAAA,EAA6B;MAC3B,IAAI,IAAI,CAACgD,aAAa,EAAE;QACtBC,YAAY,CAAC,IAAI,CAACD,aAAa,CAAC;QAChC,IAAI,CAACA,aAAa,GAAGxC,SAAS;MAChC;IACF;;IAEA;AACF;AACA;EAFE;IAAAtG,GAAA;IAAA9D,KAAA,EAGA,SAAA8M,mBAAA,EAAsC;MACpC,OAAO,IAAI,CAAC9C,kBAAkB,EAAE,IAAI,IAAI,CAACrG,iBAAiB,CAACoJ,OAAO,CAAC,IAAI,CAAC/I,eAAe,CAAC,KAAK,CAAC,CAAC;IACjG;;IAEA;AACF;AACA;AACA;EAHE;IAAAF,GAAA;IAAA9D,KAAA,EAIA,SAAAgN,oBAAA,EAAsC;MACpC,OAAO1C,IAAI,CAACG,KAAK,CACfH,IAAI,CAACI,MAAM,EAAE,IAAI,IAAI,CAACtH,mBAAmB,GAAG,IAAI,CAACF,mBAAmB,GAAG,CAAC,CAAC,GACvE,IAAI,CAACA,mBAAmB,CAC3B;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAAY,GAAA;IAAA9D,KAAA,EAIA,SAAAiN,iBAAA,EAA2B;MACzB,IAAI,IAAI,CAACH,kBAAkB,EAAE,EAAE;QAC7B,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE;UACvB,IAAI,CAAC9J,wBAAwB,GAAG,CAAC;UACjC,IAAMoK,iBAAiB,GAAG,IAAI,CAACF,mBAAmB,EAAE;UAEpD,IAAI,CAACjD,kBAAkB,CAACmD,iBAAiB,GAAGC,iCAAsB,CAAC;QACrE;MACF,CAAC,MAAM;QACL,IAAI,CAACrK,wBAAwB,GAAG,CAAC;QACjC,IAAI,CAAC8G,kBAAkB,EAAE;MAC3B;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAA9F,GAAA;IAAA9D,KAAA,EAIA,SAAA+J,mBAA2BqD,iBAAyB,EAAE;MAAA,IAAAC,MAAA;MACpD,IAAI,CAACT,aAAa,GAAGlB,UAAU,mBAAAhH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAC7B,SAAA0I,UAAA;QAAA,OAAA3I,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAwI,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAtI,IAAA,GAAAsI,UAAA,CAAA9M,IAAA;YAAA;cAAA,OAAA8M,UAAA,CAAArI,MAAA,WAAYkI,MAAI,CAACI,eAAe,EAAE;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAAzH,IAAA;UAAA;QAAA,GAAAuH,SAAA;MAAA,KAClCF,iBAAiB,GAAGxC,8BAAmB,CACxC;MACD7H,eAAG,CAACA,GAAG,6BAAAqB,MAAA,CAA6BgJ,iBAAiB,gBAAa;QAChE9I,IAAI,EAAErB,4BAAiB;QACvBoB,MAAM,EAAE,IAAI,CAAC0F,kBAAkB,CAAC3I;MAClC,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;EAHE;IAAA0C,GAAA;IAAA9D,KAAA;MAAA,IAAA0N,gBAAA,OAAAhJ,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAA+I,UAAA;QAAA,IAAAC,MAAA;QAAA,OAAAjJ,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA8I,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA5I,IAAA,GAAA4I,UAAA,CAAApN,IAAA;YAAA;cAAAoN,UAAA,CAAApN,IAAA;cAAA,OACQ,IAAI,CAACoB,KAAK,CAACgK,YAAY,mBAAApH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAAmJ,UAAA;gBAAA,IAAA/E,KAAA,EAAAgF,QAAA;gBAAA,OAAArJ,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAkJ,WAAAC,UAAA;kBAAA,kBAAAA,UAAA,CAAAhJ,IAAA,GAAAgJ,UAAA,CAAAxN,IAAA;oBAAA;sBAAA,KACxBkN,MAAI,CAACd,kBAAkB,EAAE;wBAAAoB,UAAA,CAAAxN,IAAA;wBAAA;sBAAA;sBAAA,MACvB,IAAAyN,KAAA,CAAAjM,OAAA,EAAY0L,MAAI,CAACtK,WAAW,CAAC8K,cAAc,EAAE,CAAC,CAAC1O,MAAM,KAAK,CAAC;wBAAAwO,UAAA,CAAAxN,IAAA;wBAAA;sBAAA;sBAC7DqC,eAAG,CAACoB,IAAI,oCAAoC;wBAC1CG,IAAI,EAAErB,4BAAiB;wBACvBoB,MAAM,EAAEuJ,MAAI,CAACH,eAAe,CAACrM;sBAC/B,CAAC,CAAC;sBAAC8M,UAAA,CAAAxN,IAAA;sBAAA,OACGkN,MAAI,CAACS,UAAU,EAAE;oBAAA;sBAAAH,UAAA,CAAAxN,IAAA;sBAAA,OACHkN,MAAI,CAACzE,8BAA8B,CAACmF,wBAAa,CAAC;oBAAA;sBAAhEtF,KAAK,GAAAkF,UAAA,CAAA3G,IAAA;sBAAA,MACP,CAACyB,KAAK,IAAI,CAAC4E,MAAI,CAAC5D,kBAAkB,EAAE;wBAAAkE,UAAA,CAAAxN,IAAA;wBAAA;sBAAA;sBAAAwN,UAAA,CAAAxN,IAAA;sBAAA,OACfkN,MAAI,CAACxE,2BAA2B,CAACkF,wBAAa,CAAC;oBAAA;sBAAhEN,QAAQ,GAAAE,UAAA,CAAA3G,IAAA;sBAAA,KAEVyG,QAAQ;wBAAAE,UAAA,CAAAxN,IAAA;wBAAA;sBAAA;sBACVkN,MAAI,CAAChE,kBAAkB,EAAE;sBAAC,OAAAsE,UAAA,CAAA/I,MAAA;oBAAA;sBAAA,IAKvByI,MAAI,CAAC5D,kBAAkB,EAAE;wBAAAkE,UAAA,CAAAxN,IAAA;wBAAA;sBAAA;sBAAAwN,UAAA,CAAAxN,IAAA;sBAAA,OACtBkN,MAAI,CAAC3D,mBAAmB,CAAC2D,MAAI,CAACH,eAAe,CAACrM,IAAI,CAAC;oBAAA;sBAAA8M,UAAA,CAAAxN,IAAA;sBAAA;oBAAA;sBAEzDkN,MAAI,CAAChB,aAAa,GAAGxC,SAAS;sBAC9BwD,MAAI,CAACX,gBAAgB,EAAE;oBAAC;sBAAAiB,UAAA,CAAAxN,IAAA;sBAAA;oBAAA;sBAI5BqC,eAAG,CAACoB,IAAI,CAAC,yDAAyD,EAAE;wBAClEG,IAAI,EAAErB,4BAAiB;wBACvBoB,MAAM,EAAEuJ,MAAI,CAACH,eAAe,CAACrM;sBAC/B,CAAC,CAAC;sBACFwM,MAAI,CAAChB,aAAa,GAAGxC,SAAS;sBAC9BwD,MAAI,CAACX,gBAAgB,EAAE;oBAAC;oBAAA;sBAAA,OAAAiB,UAAA,CAAAnI,IAAA;kBAAA;gBAAA,GAAAgI,SAAA;cAAA,CAG7B,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA/H,IAAA;UAAA;QAAA,GAAA4H,SAAA;MAAA,CACH;MAAA,SAAAF,gBAAA;QAAA,OAAAC,gBAAA,CAAAxH,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAsH,eAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;EALE;IAAA3J,GAAA;IAAA9D,KAAA,EAMA,SAAAuO,kBAA0BjG,UAAuB,EAAE;MACjD,IAAI,IAAI,CAAC3E,iBAAiB,CAACoJ,OAAO,CAAC,IAAI,CAAC/I,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/D,IAAI,CAACd,mBAAmB,GAAGoF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEpF,mBAAmB,GACtDoF,UAAU,CAACpF,mBAAmB,GAC9BC,wCAA6B;QACjC,IAAI,CAACC,mBAAmB,GAAGkF,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAElF,mBAAmB,GACtDkF,UAAU,CAAClF,mBAAmB,GAC9BC,wCAA6B;MACnC;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAS,GAAA;IAAA9D,KAAA,EAIA,SAAAwO,cAAA,EAAoC;MAClC,OAAO,IAAI,CAAClG,UAAU;IACxB;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAAxE,GAAA;IAAA9D,KAAA,EAMA,SAAAgK,mBAAA,EAAqC;MACnC,OAAO,IAAI,CAACrH,kBAAkB,KAAKC,oBAAY,CAAC6L,MAAM;IACxD;EAAC;IAAA3K,GAAA;IAAA9D,KAAA,EAED,SAAA0O,UAAA,EAAiC;MAC/B,OAAO,IAAI,CAAC/L,kBAAkB;IAChC;EAAC;IAAAmB,GAAA;IAAA9D,KAAA,EAED,SAAA2O,UAAiB3O,KAAmB,EAAE;MACpC,IAAI,CAAC2C,kBAAkB,GAAG3C,KAAK;IACjC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA8D,GAAA;IAAA9D,KAAA;MAAA,IAAA4O,oBAAA,OAAAlK,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAKA,SAAAiK,UAAkC9F,MAAc;QAAA,IAAAC,KAAA;QAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA+J,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA7J,IAAA,GAAA6J,UAAA,CAAArO,IAAA;YAAA;cAC9C;AACJ;AACA;AACA;cACI,IAAI,CAACkJ,kBAAkB,EAAE;cACzB,IAAI,CAAC9G,wBAAwB,GAAG,CAAC;cAACiM,UAAA,CAAArO,IAAA;cAAA,OACd,IAAI,CAACyI,8BAA8B,CAACJ,MAAM,EAAE,IAAI,CAACpF,iBAAiB,CAAC;YAAA;cAAjFqF,KAAK,GAAA+F,UAAA,CAAAxH,IAAA;cAAA,MAEP,CAACyB,KAAK,IAAI,CAAC,IAAI,CAACgB,kBAAkB,EAAE;gBAAA+E,UAAA,CAAArO,IAAA;gBAAA;cAAA;cAAAqO,UAAA,CAAArO,IAAA;cAAA,OAChC,IAAI,CAAC6K,kBAAkB,EAAE;YAAA;YAAA;cAAA,OAAAwD,UAAA,CAAAhJ,IAAA;UAAA;QAAA,GAAA8I,SAAA;MAAA,CAElC;MAAA,SAAA5E,oBAAA+E,GAAA;QAAA,OAAAJ,oBAAA,CAAA1I,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA8D,mBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAAnG,GAAA;IAAA9D,KAAA;MAAA,IAAAiP,4BAAA,OAAAvK,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAKA,SAAAsK,UAAyCC,KAAc;QAAA,IAAAC,MAAA;QAAA,OAAAzK,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAsK,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAApK,IAAA,GAAAoK,UAAA,CAAA5O,IAAA;YAAA;cAAA4O,UAAA,CAAA5O,IAAA;cAAA,OAC/C,IAAI,CAACoB,KAAK,CAACgK,YAAY,mBAAApH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAA2K,UAAA;gBAAA,IAAAvG,KAAA;gBAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAyK,WAAAC,UAAA;kBAAA,kBAAAA,UAAA,CAAAvK,IAAA,GAAAuK,UAAA,CAAA/O,IAAA;oBAAA;sBAAA,KAExByO,KAAK;wBAAAM,UAAA,CAAA/O,IAAA;wBAAA;sBAAA;sBACPqC,eAAG,CAACoB,IAAI,CAAC,4DAA4D,EAAE;wBACrEG,IAAI,EAAErB,4BAAiB;wBACvBoB,MAAM,EAAE+K,MAAI,CAACM,2BAA2B,CAACtO;sBAC3C,CAAC,CAAC;sBACFgO,MAAI,CAACO,mBAAmB,EAAE;sBAAC,KACvBP,MAAI,CAACpF,kBAAkB,EAAE;wBAAAyF,UAAA,CAAA/O,IAAA;wBAAA;sBAAA;sBAAA+O,UAAA,CAAA/O,IAAA;sBAAA,OAErB0O,MAAI,CAACf,UAAU,EAAE;oBAAA;sBAAA,KAQrBe,MAAI,CAACpL,eAAe;wBAAAyL,UAAA,CAAA/O,IAAA;wBAAA;sBAAA;sBAAA+O,UAAA,CAAA/O,IAAA;sBAAA,OAOF0O,MAAI,CAAChG,2BAA2B,CAClDgG,MAAI,CAACM,2BAA2B,CAACtO,IAAI,CACtC;oBAAA;sBAFK4H,KAAK,GAAAyG,UAAA,CAAAlI,IAAA;sBAAA,MAIP,CAACyB,KAAK,IAAI,CAACoG,MAAI,CAACpF,kBAAkB,EAAE;wBAAAyF,UAAA,CAAA/O,IAAA;wBAAA;sBAAA;sBAAA+O,UAAA,CAAA/O,IAAA;sBAAA,OAChC0O,MAAI,CAACnF,mBAAmB,CAACmF,MAAI,CAACM,2BAA2B,CAACtO,IAAI,CAAC;oBAAA;sBAGzE+N,KAAK,GAAG,KAAK;oBAAC;oBAAA;sBAAA,OAAAM,UAAA,CAAA1J,IAAA;kBAAA;gBAAA,GAAAwJ,SAAA;cAAA,CAEjB,GAAC;YAAA;cAAA,OAAAD,UAAA,CAAAnK,MAAA,WAEKgK,KAAK;YAAA;YAAA;cAAA,OAAAG,UAAA,CAAAvJ,IAAA;UAAA;QAAA,GAAAmJ,SAAA;MAAA,CACb;MAAA,SAAAQ,4BAAAE,GAAA;QAAA,OAAAX,4BAAA,CAAA/I,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAuJ,2BAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAA5L,GAAA;IAAA9D,KAAA,EAKA,SAAA6P,4BAAA,EAAsC;MAAA,IAAAC,MAAA;MACpC;QAAA,IAAAC,KAAA,OAAArL,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAO,SAAAoL,UAAOC,WAAwB,EAAElH,MAAc;UAAA,IAAAmH,UAAA,EAAAC,OAAA,EAAAC,UAAA;UAAA,OAAAzL,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAsL,WAAAC,UAAA;YAAA,kBAAAA,UAAA,CAAApL,IAAA,GAAAoL,UAAA,CAAA5P,IAAA;cAAA;gBAC9CwP,UAAU,GAAG;kBAAC5L,IAAI,EAAErB,4BAAiB;kBAAEoB,MAAM,EAAE0E;gBAAM,CAAC;gBAAA,IACvD+G,MAAI,CAACS,UAAU,EAAE;kBAAAD,UAAA,CAAA5P,IAAA;kBAAA;gBAAA;gBACpBqC,eAAG,CAACoB,IAAI,CAAC,uCAAuC,EAAE+L,UAAU,CAAC;gBACvDC,OAAO,GAAGL,MAAI,CAACU,iBAAiB,CAACP,WAAW,CAAC;gBAAA,KAE/CE,OAAO;kBAAAG,UAAA,CAAA5P,IAAA;kBAAA;gBAAA;gBACToP,MAAI,CAACW,WAAW,CAAC,IAAI,CAAC;gBAACH,UAAA,CAAA5P,IAAA;gBAAA,OACjBoP,MAAI,CAACzB,UAAU,EAAE;cAAA;gBAAAiC,UAAA,CAAA5P,IAAA;gBAAA,OACEoP,MAAI,CAAC1G,2BAA2B,CAACL,MAAM,CAAC;cAAA;gBAA3DqH,UAAU,GAAAE,UAAA,CAAA/I,IAAA;gBAChBuI,MAAI,CAACW,WAAW,CAAC,KAAK,CAAC;gBACvB,IAAIX,MAAI,CAAC9F,kBAAkB,EAAE,EAAE;kBAC7BjH,eAAG,CAACoB,IAAI,CAAC,qCAAqC,EAAE+L,UAAU,CAAC;gBAC7D;gBAAC,OAAAI,UAAA,CAAAnL,MAAA,WAEMiL,UAAU;cAAA;gBAEnBN,MAAI,CAAC/N,WAAW,CAAC6F,mBAAW,CAACC,YAAY,CAAC;gBAACyI,UAAA,CAAA5P,IAAA;gBAAA;cAAA;gBAE3CoP,MAAI,CAAC/N,WAAW,CAAC6F,mBAAW,CAACC,YAAY,CAAC;cAAC;gBAAA,OAAAyI,UAAA,CAAAnL,MAAA,WAGtC,KAAK;cAAA;cAAA;gBAAA,OAAAmL,UAAA,CAAAvK,IAAA;YAAA;UAAA,GAAAiK,SAAA;QAAA,CACb;QAAA,iBAAAU,GAAA,EAAAC,IAAA;UAAA,OAAAZ,KAAA,CAAA7J,KAAA,OAAAC,SAAA;QAAA;MAAA;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAArC,GAAA;IAAA9D,KAAA;MAAA,IAAA4Q,oBAAA,OAAAlM,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAIA,SAAAiM,UAAA;QAAA,IAAA7H,KAAA;QAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA+L,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAArQ,IAAA;YAAA;cAAA,MACM,IAAI,CAACiD,iBAAiB,CAACjE,MAAM,GAAG,CAAC;gBAAAqR,UAAA,CAAArQ,IAAA;gBAAA;cAAA;cAAAqQ,UAAA,CAAArQ,IAAA;cAAA,OACf,IAAI,CAACyI,8BAA8B,CACrD,IAAI,CAAC6H,mBAAmB,CAAC5P,IAAI,EAC7B,IAAI,CAACuC,iBAAiB,CACvB;YAAA;cAHKqF,KAAK,GAAA+H,UAAA,CAAAxJ,IAAA;cAAA,MAKP,CAAC,IAAI,CAACyC,kBAAkB,EAAE,IAAI,CAAChB,KAAK;gBAAA+H,UAAA,CAAArQ,IAAA;gBAAA;cAAA;cAAAqQ,UAAA,CAAArQ,IAAA;cAAA,OAChC,IAAI,CAAC6K,kBAAkB,EAAE;YAAA;YAAA;cAAA,OAAAwF,UAAA,CAAAhL,IAAA;UAAA;QAAA,GAAA8K,SAAA;MAAA,CAGpC;MAAA,SAAAG,oBAAA;QAAA,OAAAJ,oBAAA,CAAA1K,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA6K,mBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAlN,GAAA;IAAA9D,KAAA;MAAA,IAAAiR,+BAAA,OAAAvM,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAQA,SAAAsM,UACEnI,MAAc;QAAA,IAAAoI,MAAA;QAAA,IAAAC,OAAA;UAAApI,KAAA;UAAAqI,SAAA;UAAAC,KAAA;UAAApN,GAAA;UAAAqN,qBAAA;UAAAC,IAAA;UAAA9I,IAAA;UAAA+I,KAAA;UAAAC,OAAA,GAAAvL,SAAA;QAAA,OAAAxB,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA4M,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA1M,IAAA,GAAA0M,UAAA,CAAAlR,IAAA;YAAA;cACd0Q,OAAiB,GAAAM,OAAA,CAAAhS,MAAA,QAAAgS,OAAA,QAAAtH,SAAA,GAAAsH,OAAA,MAAG,IAAI,CAAC/N,iBAAiB;cAEtCqF,KAAK,GAAG,KAAK;cAAA,KAEb,IAAI,CAACgB,kBAAkB,EAAE;gBAAA4H,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cAC3BqC,eAAG,CAACA,GAAG,KAAAqB,MAAA,CAAK2E,MAAM,2CAAA3E,MAAA,CAAwC,IAAI,CAACJ,eAAe,GAAI;gBAChFM,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE,IAAI,CAAC8E,8BAA8B,CAAC/H;cAC9C,CAAC,CAAC;cAAC,OAAAwQ,UAAA,CAAAzM,MAAA,WAEI6D,KAAK;YAAA;cAAAqI,SAAA,GAAAnS,0BAAA,CAEIkS,OAAO;cAAAQ,UAAA,CAAA1M,IAAA;cAAAmM,SAAA,CAAAxR,CAAA;YAAA;cAAA,KAAAyR,KAAA,GAAAD,SAAA,CAAAvR,CAAA,IAAAC,IAAA;gBAAA6R,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cAAdwD,GAAG,GAAAoN,KAAA,CAAAtR,KAAA;cAAA4R,UAAA,CAAA1M,IAAA;cAEV8D,KAAK,GAAG,KAAK;cACb,IAAI,CAACrG,kBAAkB,GAAGC,oBAAY,CAACC,OAAO;cAC9C,IAAI,CAACd,WAAW,CAAC6F,mBAAW,CAACiK,UAAU,CAAC;cACxC9O,eAAG,CAACA,GAAG,KAAAqB,MAAA,CAAK2E,MAAM,iCAAA3E,MAAA,CAA8BF,GAAG,GAAI;gBACrDI,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE,IAAI,CAAC8E,8BAA8B,CAAC/H;cAC9C,CAAC,CAAC;cACF;cAAAwQ,UAAA,CAAAlR,IAAA;cAAA,OACmB,IAAI,CAACiI,gBAAgB,CAACzE,GAAG,CAAC;YAAA;cAAvCsN,IAAI,GAAAI,UAAA,CAAArK,IAAA;cAEV,IAAI,CAACe,UAAU,GAAGkJ,IAAI,CAAC9I,IAAmB;cAC1C,IAAI,CAAC3G,WAAW,CAAC6F,mBAAW,CAACkK,UAAU,EAAEN,IAAI,CAAC9I,IAAI,CAAgB;cAClE,IAAI,CAAC/F,kBAAkB,GAAGC,oBAAY,CAAC6L,MAAM;cAC7C,IAAI,CAACxK,kBAAkB,CAACC,GAAG,CAAC;cAC5B,IAAI,CAACqK,iBAAiB,CAAC,IAAI,CAACjG,UAAU,CAAC;cACvC,IAAI,CAAC7E,aAAa,CAACsO,aAAa,CAAC,IAAI,CAACzJ,UAAU,CAAC;cACjD,IAAI,CAAC7E,aAAa,CAACuO,wBAAwB,CACzCC,oBAAY,CAACC,YAAY,EACzBC,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtBlI,SAAS,CACV;cACD,IAAI,CAACmI,mBAAmB,EAAAhB,qBAAA,GACtB,IAAI,CAACjJ,UAAU,CAAC5F,MAAM,cAAA6O,qBAAA,uBAAtBA,qBAAA,CAAwBlM,GAAG,EAC3B,IAAI,CAACiD,UAAU,CAACkK,iBAAiB,CAClC;cACD,IAAI,CAACvF,gBAAgB,EAAE;cAAC,OAAA2E,UAAA,CAAAzM,MAAA;YAAA;cAAAyM,UAAA,CAAA1M,IAAA;cAAA0M,UAAA,CAAAhL,EAAA,GAAAgL,UAAA;cAGlBlJ,IAAI,GAAAkJ,UAAA,CAAAhL,EAAA,EAEV;cAAAgL,UAAA,CAAAlR,IAAA;cAAA,OACc,IAAA+R,gCAAwB,EACpC/J,IAAI,EACJ,UAACgE,WAAW,EAAE0D,UAAU,EAAK;gBAC3B,IAAIA,UAAU,EAAE;kBACde,MAAI,CAACpP,WAAW,CAAC6F,mBAAW,CAAC+E,KAAK,EAAEvC,SAAS,EAAEsC,WAAW,CAAC;gBAC7D,CAAC,MAAM;kBACLyE,MAAI,CAACpP,WAAW,CAAC6F,mBAAW,CAACC,YAAY,CAAC;gBAC5C;gBACAsJ,MAAI,CAAC1N,aAAa,CAACuO,wBAAwB,CACzCC,oBAAY,CAACS,kBAAkB,EAC/BP,kBAAU,CAACC,QAAQ,EACnBC,mBAAW,CAACC,UAAU,EACtB5F,WAAW,CACZ;cACH,CAAC,EACD;gBAACrI,MAAM,EAAE,IAAI,CAAC8E,8BAA8B,CAAC/H,IAAI;gBAAEkD,IAAI,EAAErB;cAAiB,CAAC,EAC3E,IAAI,CAAC4M,2BAA2B,EAAE,CACnC;YAAA;cAjBD7G,KAAK,GAAA4I,UAAA,CAAArK,IAAA;cAAA,MAkBD,IAAI,CAAC5E,kBAAkB,KAAKC,oBAAY,CAAC6L,MAAM;gBAAAmD,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cACjDqC,eAAG,CAACoB,IAAI,KAAAC,MAAA,CACF2E,MAAM,yDAAA3E,MAAA,CAAsD,IAAI,CAACJ,eAAe,GACpF;gBACEM,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE,IAAI,CAAC8E,8BAA8B,CAAC/H;cAC9C,CAAC,CACF;cAAC,OAAAwQ,UAAA,CAAAzM,MAAA;YAAA;cAAA,KAGA6D,KAAK;gBAAA4I,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cAAA,OAAAkR,UAAA,CAAAzM,MAAA;YAAA;cAAA,MAEE4D,MAAM,KAAK,IAAI,CAAC0E,eAAe,CAACrM,IAAI;gBAAAwQ,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cACvC+Q,KAAK,GAAG/I,IAAI,CAACiK,UAAU;cAAA,MAEzBlB,KAAK,KAAKmB,iBAAU,CAACC,iBAAiB;gBAAAjB,UAAA,CAAAlR,IAAA;gBAAA;cAAA;cAAAkR,UAAA,CAAAlR,IAAA;cAAA,OAElC,IAAI,CAACwJ,wBAAwB,EAAE;YAAA;cACrClB,KAAK,GAAG,IAAI;cAAC,OAAA4I,UAAA,CAAAzM,MAAA;YAAA;cAAAyM,UAAA,CAAAlR,IAAA;cAAA;YAAA;cAAAkR,UAAA,CAAAlR,IAAA;cAAA;YAAA;cAAAkR,UAAA,CAAA1M,IAAA;cAAA0M,UAAA,CAAA9K,EAAA,GAAA8K,UAAA;cAAAP,SAAA,CAAApR,CAAA,CAAA2R,UAAA,CAAA9K,EAAA;YAAA;cAAA8K,UAAA,CAAA1M,IAAA;cAAAmM,SAAA,CAAAlR,CAAA;cAAA,OAAAyR,UAAA,CAAAkB,MAAA;YAAA;cAAA,OAAAlB,UAAA,CAAAzM,MAAA,WAOd6D,KAAK;YAAA;YAAA;cAAA,OAAA4I,UAAA,CAAA7L,IAAA;UAAA;QAAA,GAAAmL,SAAA;MAAA,CACb;MAAA,SAAA/H,+BAAA4J,IAAA;QAAA,OAAA9B,+BAAA,CAAA/K,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAgD,8BAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAArF,GAAA;IAAA9D,KAAA,EAIA,SAAAuS,oBAA4BrO,GAAW,EAAEsF,QAAgB,EAAE;MAAA,IAAAwJ,MAAA;MACzD,IAAIC,mBAAmB,GAAG,CAAC;MAC3B,IAAI,CAACtD,mBAAmB,EAAE;MAC1B,IAAI,CAACuD,cAAc,GAAGC,WAAW,mBAAAzO,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAAwO,UAAA;QAAA,IAAAlD,UAAA;QAAA,OAAAvL,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAsO,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAApO,IAAA,GAAAoO,UAAA,CAAA5S,IAAA;YAAA;cAC1BwP,UAAU,GAAG;gBACjB5L,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE2O,MAAI,CAACT,mBAAmB,CAACnR;cACnC,CAAC;cAAAkS,UAAA,CAAA5S,IAAA;cAAA,OACKsS,MAAI,CAAClR,KAAK,CAACgK,YAAY,mBAAApH,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAAC,SAAA2O,UAAA;gBAAA,IAAAC,GAAA,EAAA/B,KAAA,EAAAzI,KAAA;gBAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAA0O,WAAAC,UAAA;kBAAA,kBAAAA,UAAA,CAAAxO,IAAA,GAAAwO,UAAA,CAAAhT,IAAA;oBAAA;sBAAA,MACxBsS,MAAI,CAAChJ,kBAAkB,EAAE,IAAIiJ,mBAAmB,GAAG,CAAC;wBAAAS,UAAA,CAAAhT,IAAA;wBAAA;sBAAA;sBAAAgT,UAAA,CAAAxO,IAAA;sBAAAwO,UAAA,CAAAhT,IAAA;sBAAA,OAElCsS,MAAI,CAAChN,aAAa,CAAC9B,GAAG,CAAC;oBAAA;sBAAnCsP,GAAG,GAAAE,UAAA,CAAAnM,IAAA;sBACTxE,eAAG,CAACoB,IAAI,4BAAAC,MAAA,CAA4BoP,GAAG,CAACb,UAAU,GAAIzC,UAAU,CAAC;sBACjE,IAAI+C,mBAAmB,GAAG,CAAC,EAAE;wBAC3BD,MAAI,CAACjR,WAAW,CAAC6F,mBAAW,CAAC+L,WAAW,CAAC;sBAC3C;sBACAV,mBAAmB,GAAG,CAAC;sBAACS,UAAA,CAAAhT,IAAA;sBAAA;oBAAA;sBAAAgT,UAAA,CAAAxO,IAAA;sBAAAwO,UAAA,CAAA9M,EAAA,GAAA8M,UAAA;sBAExBT,mBAAmB,IAAI,CAAC;sBAClBxB,KAAK,GAAAiC,UAAA,CAAA9M,EAAA;sBAEX7D,eAAG,CAAC6Q,IAAI,sBAAAxP,MAAA,CACe6O,mBAAmB,wBAAA7O,MAAA,CAAqBqN,KAAK,CAACkB,UAAU,QAC7EzC,UAAU,CACX;sBAACwD,UAAA,CAAAhT,IAAA;sBAAA,OAEkB,IAAA+R,gCAAwB,EAC1ChB,KAAK,EACL,UAAC/E,WAAW,EAAE0D,UAAU,EAAK;wBAC3B,IAAIA,UAAU,EAAE;0BACd4C,MAAI,CAACjR,WAAW,CAAC6F,mBAAW,CAAC+E,KAAK,EAAEvC,SAAS,EAAEsC,WAAW,CAAC;wBAC7D;wBACAsG,MAAI,CAACvP,aAAa,CAACuO,wBAAwB,CACzCC,oBAAY,CAACC,YAAY,EACzBC,kBAAU,CAAC0B,iBAAiB,EAC5BxB,mBAAW,CAACC,UAAU,EACtB5F,WAAW,CACZ;sBACH,CAAC,EACD;wBAACrI,MAAM,EAAE2O,MAAI,CAACT,mBAAmB,CAACnR,IAAI;wBAAEkD,IAAI,EAAErB;sBAAiB,CAAC,CACjE;oBAAA;sBAdK+F,KAAK,GAAA0K,UAAA,CAAAnM,IAAA;sBAAA,MAgBPyB,KAAK,IAAIiK,mBAAmB,IAAI,CAAC;wBAAAS,UAAA,CAAAhT,IAAA;wBAAA;sBAAA;sBACnCsS,MAAI,CAACrE,SAAS,CAAC/L,oBAAY,CAACC,OAAO,CAAC;sBACpCmQ,MAAI,CAACrD,mBAAmB,EAAE;sBAC1BqD,MAAI,CAACpJ,kBAAkB,EAAE;sBACzBoJ,MAAI,CAACjR,WAAW,CAAC6F,mBAAW,CAACC,YAAY,CAAC;sBAAC,IAEtCmB,KAAK;wBAAA0K,UAAA,CAAAhT,IAAA;wBAAA;sBAAA;sBAAAgT,UAAA,CAAAhT,IAAA;sBAAA,OAEFsS,MAAI,CAACc,kBAAkB,CAACd,MAAI,CAACT,mBAAmB,CAACnR,IAAI,CAAC;oBAAA;sBAAAsS,UAAA,CAAAhT,IAAA;sBAAA;oBAAA;sBAG9DsS,MAAI,CAACjR,WAAW,CAAC6F,mBAAW,CAACmM,YAAY,CAAC;oBAAC;oBAAA;sBAAA,OAAAL,UAAA,CAAA3N,IAAA;kBAAA;gBAAA,GAAAwN,SAAA;cAAA,CAIlD,GAAC;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAAvN,IAAA;UAAA;QAAA,GAAAqN,SAAA;MAAA,CACH,IAAE5J,QAAQ,GAAG,IAAI,CAAC;IACrB;;IAEA;AACF;AACA;EAFE;IAAA1F,GAAA;IAAA9D,KAAA,EAGA,SAAA2P,oBAAA,EAA6B;MAC3B,IAAI,IAAI,CAACuD,cAAc,EAAE;QACvBc,aAAa,CAAC,IAAI,CAACd,cAAc,CAAC;QAClC,IAAI,CAACA,cAAc,GAAG9I,SAAS;MACjC;IACF;EAAC;IAAAtG,GAAA;IAAA9D,KAAA,EAED,SAAAiU,mBAAA,EAAqC;MACnC,OAAO,IAAI,CAACC,gBAAgB;IAC9B;EAAC;IAAApQ,GAAA;IAAA9D,KAAA;MAAA,IAAAmU,WAAA,OAAAzP,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CAED,SAAAwP,UAAA;QAAA,IAAAC,sBAAA,EAAAC,sBAAA;QAAA,OAAA3P,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAwP,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAAtP,IAAA,GAAAsP,UAAA,CAAA9T,IAAA;YAAA;cAAA8T,UAAA,CAAAtP,IAAA;cAAAsP,UAAA,CAAA9T,IAAA;cAAA,OAEU,IAAI,CAACqH,kBAAkB,CAC3B,IAAI,CAAC/D,eAAe,GAAAqQ,sBAAA,GACpB,IAAI,CAAC/L,UAAU,CAAC5F,MAAM,cAAA2R,sBAAA,uBAAtBA,sBAAA,CAAwB/N,QAAQ,GAAAgO,sBAAA,GAChC,IAAI,CAAChM,UAAU,CAAC5F,MAAM,cAAA4R,sBAAA,uBAAtBA,sBAAA,CAAwB7L,eAAe,CACxC;YAAA;cAAA+L,UAAA,CAAA9T,IAAA;cAAA;YAAA;cAAA8T,UAAA,CAAAtP,IAAA;cAAAsP,UAAA,CAAA5N,EAAA,GAAA4N,UAAA;cAEDzR,eAAG,CAAC6Q,IAAI,8BAA8B,CAAC,CAAC,CAAC;YAAC;cAG5C,IAAI,CAACjE,mBAAmB,EAAE;cAC1B,IAAI,CAAChB,SAAS,CAAC/L,oBAAY,CAACC,OAAO,CAAC;YAAC;YAAA;cAAA,OAAA2R,UAAA,CAAAzO,IAAA;UAAA;QAAA,GAAAqO,SAAA;MAAA,CACtC;MAAA,SAAA/F,WAAA;QAAA,OAAA8F,WAAA,CAAAjO,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAAkI,UAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAAvK,GAAA;IAAA9D,KAAA,EAIA,SAAAuQ,WAAA,EAA8B;MAC5B,OAAO,IAAI,CAACkE,aAAa;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA3Q,GAAA;IAAA9D,KAAA,EAKA,SAAAyQ,YAAoBzQ,KAAc,EAAE;MAClC,IAAI,CAACyU,aAAa,GAAGzU,KAAK;IAC5B;;IAEA;AACF;AACA;AACA;EAHE;IAAA8D,GAAA;IAAA9D,KAAA,EAIA,SAAAwQ,kBAA0BP,WAAwB,EAAE;MAClD,IAAIA,WAAW,CAACyE,OAAO,IAAIzE,WAAW,CAACyE,OAAO,CAAChV,MAAM,GAAG,CAAC,EAAE;QACzD,IAAI,CAAC4I,UAAU,GAAG;UAChB9F,MAAM,EAAEyN,WAAW,CAACzN,MAAM;UAC1BE,MAAM,EAAEuN,WAAW,CAACyE,OAAO,CAAC,CAAC,CAAC;UAC9BlC,iBAAiB,EAAEmC,qCAA0B;UAC7CvR,mBAAmB,EAAEC,wCAA6B;UAClDH,mBAAmB,EAAEC;QACvB,CAAC;QAED,IAAMyR,eAAe,MAAAxQ,MAAA,CAAM2C,oCAAyB,OAAA3C,MAAA,CAAI6L,WAAW,CAACyE,OAAO,CAAC,CAAC,CAAC,CAACpO,QAAQ,CAAE;QAEzF,IAAMjB,GAAG,GAAG4K,WAAW,CAACyE,OAAO,CAAC,CAAC,CAAC,CAACrP,GAAG,CAACwP,OAAO,CAACD,eAAe,EAAE,EAAE,CAAC;QACnE,IAAI,CAAC3Q,kBAAkB,CAACoB,GAAG,CAAC;QAC5B,IAAI,CAAC1C,kBAAkB,GAAGC,oBAAY,CAAC6L,MAAM;QAE7C,OAAO,IAAI;MACb;MAEA,OAAO,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARE;IAAA3K,GAAA;IAAA9D,KAAA;MAAA,IAAA8U,mBAAA,OAAApQ,kBAAA,CAAAxC,OAAA,gBAAAyC,YAAA,CAAAzC,OAAA,CAAA0C,IAAA,CASA,SAAAmQ,UAAgChM,MAAc;QAAA,IAAAC,KAAA;QAAA,OAAArE,YAAA,CAAAzC,OAAA,CAAA6C,IAAA,UAAAiQ,WAAAC,UAAA;UAAA,kBAAAA,UAAA,CAAA/P,IAAA,GAAA+P,UAAA,CAAAvU,IAAA;YAAA;cAC5C,IAAI,CAACwT,gBAAgB,GAAG,KAAK;cAAC,IACzB,IAAI,CAAClK,kBAAkB,EAAE;gBAAAiL,UAAA,CAAAvU,IAAA;gBAAA;cAAA;cAAA,MACxB,IAAAyN,KAAA,CAAAjM,OAAA,EAAY,IAAI,CAACoB,WAAW,CAAC8K,cAAc,EAAE,CAAC,CAAC1O,MAAM,KAAK,CAAC;gBAAAuV,UAAA,CAAAvU,IAAA;gBAAA;cAAA;cAAAuU,UAAA,CAAAvU,IAAA;cAAA,OACzC,IAAI,CAAC0I,2BAA2B,CAACL,MAAM,CAAC;YAAA;cAAtDC,KAAK,GAAAiM,UAAA,CAAA1N,IAAA;cAAA,MAEP,CAACyB,KAAK,IAAI,CAAC,IAAI,CAACgB,kBAAkB,EAAE;gBAAAiL,UAAA,CAAAvU,IAAA;gBAAA;cAAA;cAAAuU,UAAA,CAAAvU,IAAA;cAAA,OAChC,IAAI,CAACuJ,mBAAmB,CAAClB,MAAM,CAAC;YAAA;cAAAkM,UAAA,CAAAvU,IAAA;cAAA;YAAA;cAGxC,IAAI,CAACwT,gBAAgB,GAAG,IAAI;cAC5BnR,eAAG,CAACoB,IAAI,CAAC,+DAA+D,EAAE;gBACxEG,IAAI,EAAErB,4BAAiB;gBACvBoB,MAAM,EAAE,IAAI,CAACyP,kBAAkB,CAAC1S;cAClC,CAAC,CAAC;YAAC;YAAA;cAAA,OAAA6T,UAAA,CAAAlP,IAAA;UAAA;QAAA,GAAAgP,SAAA;MAAA,CAGR;MAAA,SAAAjB,mBAAAoB,IAAA;QAAA,OAAAJ,mBAAA,CAAA5O,KAAA,OAAAC,SAAA;MAAA;MAAA,OAAA2N,kBAAA;IAAA;EAAA;EAAA,OAAAnS,YAAA;AAAA;AAGH;AACA;AADAwT,OAAA,CAAAxT,YAAA,GAAAA,YAAA;AAEO,IAAMyT,kBAAkB,GAAG,SAArBA,kBAAkBA,CAC7BxT,KAAe,EACfC,WAAwB,EACxBC,KAAY,EACZC,WAAgC,EAChCC,QAAgB;EAAA,OACE,IAAIL,YAAY,CAACC,KAAK,EAAEC,WAAW,EAAEC,KAAK,EAAEC,WAAW,EAAEC,QAAQ,CAAC;AAAA;AAACmT,OAAA,CAAAC,kBAAA,GAAAA,kBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, MobiusStatus} 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 interface IRegistration {\n setMobiusServers
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {IDeviceInfo, MobiusStatus} 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\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: MobiusStatus): void;\n\n /**\n * Retrieves the current registration status.\n *\n */\n getStatus(): MobiusStatus;\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":""}
|
|
@@ -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 {ServiceData} from '../common/types';\nimport {ICall} from './calling/types';\nimport {CallingClientError} from '../Errors';\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}\n\nexport type CallingClientErrorEmitterCallback = (\n err: CallingClientError,\n finalError?: boolean\n) => void;\n\nexport interface ICallingClient extends Eventing<CallingClientEventTypes> {\n mediaEngine: typeof Media;\n getSDKConnector
|
|
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}\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":""}
|
|
@@ -30,14 +30,20 @@ var _constants = require("./constants");
|
|
|
30
30
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
31
31
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
32
32
|
/**
|
|
33
|
+
* The `Voicemail` module is designed to simplify voicemail-related operations by offering a set of APIs.
|
|
33
34
|
*
|
|
35
|
+
* The following code snippet demonstrates how to create an instance of `Voicemail` using a `webex` instance and a logger:
|
|
36
|
+
*
|
|
37
|
+
* Example:
|
|
38
|
+
* ```javascript
|
|
39
|
+
* const voicemailInstance = createVoicemailClient(webex, logger);
|
|
40
|
+
* ```
|
|
34
41
|
*/
|
|
35
42
|
var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
36
43
|
(0, _inherits2.default)(Voicemail, _Eventing);
|
|
37
44
|
var _super = _createSuper(Voicemail);
|
|
38
45
|
/**
|
|
39
|
-
* @
|
|
40
|
-
* @param logger -.
|
|
46
|
+
* @ignore
|
|
41
47
|
*/
|
|
42
48
|
function Voicemail(webex, public logger) {
|
|
43
49
|
var _this;
|
|
@@ -63,7 +69,6 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
63
69
|
/**
|
|
64
70
|
* Voicemail connector initialization.
|
|
65
71
|
*
|
|
66
|
-
* @returns Response.
|
|
67
72
|
*/
|
|
68
73
|
(0, _createClass2.default)(Voicemail, [{
|
|
69
74
|
key: "init",
|
|
@@ -119,13 +124,12 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
119
124
|
}
|
|
120
125
|
|
|
121
126
|
/**
|
|
122
|
-
*
|
|
127
|
+
* Retrieves a list of voicemails with optional pagination and sorting options.
|
|
123
128
|
*
|
|
124
|
-
* @param sort - Sort voicemail list (ASC | DESC). TODO: Once we start implementing sorting.
|
|
125
129
|
* @param offset - Number of records to skip.
|
|
126
|
-
* @param offsetLimit -
|
|
127
|
-
* @param
|
|
128
|
-
* @
|
|
130
|
+
* @param offsetLimit - The limit on the number of voicemails to retrieve from the offset.
|
|
131
|
+
* @param sort - Sort voicemail list (ASC | DESC).
|
|
132
|
+
* @param refresh - Set to `true` to force a refresh of voicemail data from backend (optional).
|
|
129
133
|
*/
|
|
130
134
|
}, {
|
|
131
135
|
key: "getVoicemailList",
|
|
@@ -153,10 +157,9 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
153
157
|
return getVoicemailList;
|
|
154
158
|
}()
|
|
155
159
|
/**
|
|
156
|
-
*
|
|
160
|
+
* Retrieves the content of a voicemail message based on its messageId.
|
|
157
161
|
*
|
|
158
|
-
* @param messageId -
|
|
159
|
-
* @returns Promise.
|
|
162
|
+
* @param messageId - The identifier of the voicemail message.
|
|
160
163
|
*/
|
|
161
164
|
}, {
|
|
162
165
|
key: "getVoicemailContent",
|
|
@@ -184,9 +187,8 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
184
187
|
return getVoicemailContent;
|
|
185
188
|
}()
|
|
186
189
|
/**
|
|
187
|
-
*
|
|
190
|
+
* Retrieves a quantitative summary of voicemails for a user.
|
|
188
191
|
*
|
|
189
|
-
* @returns - A Promise that resolves with the data containing null or counters for newMessages, oldMessage, newUrgentMessages, oldUrgentMessages.
|
|
190
192
|
*/
|
|
191
193
|
}, {
|
|
192
194
|
key: "getVoicemailSummary",
|
|
@@ -220,7 +222,6 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
220
222
|
* Fetch voicemail read message status for the messageId.
|
|
221
223
|
*
|
|
222
224
|
* @param messageId -string result from the voicemail list.
|
|
223
|
-
* @returns Promise.
|
|
224
225
|
*/
|
|
225
226
|
}, {
|
|
226
227
|
key: "voicemailMarkAsRead",
|
|
@@ -251,7 +252,6 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
251
252
|
* Fetch voicemail unread status for the messageId.
|
|
252
253
|
*
|
|
253
254
|
* @param messageId -string result from the voicemail list.
|
|
254
|
-
* @returns Promise.
|
|
255
255
|
*/
|
|
256
256
|
}, {
|
|
257
257
|
key: "voicemailMarkAsUnread",
|
|
@@ -282,7 +282,6 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
282
282
|
* Fetch voicemail delete status for the messageId.
|
|
283
283
|
*
|
|
284
284
|
* @param messageId -string result from the voicemail list.
|
|
285
|
-
* @returns Promise.
|
|
286
285
|
*/
|
|
287
286
|
}, {
|
|
288
287
|
key: "deleteVoicemail",
|
|
@@ -313,7 +312,6 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
313
312
|
* Fetch the voicemail transcripts for the messageId.
|
|
314
313
|
*
|
|
315
314
|
* @param messageId - MessageId for which we need the transcript.
|
|
316
|
-
* @returns Promise.
|
|
317
315
|
*/
|
|
318
316
|
}, {
|
|
319
317
|
key: "getVMTranscript",
|
|
@@ -355,8 +353,7 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
355
353
|
|
|
356
354
|
/**
|
|
357
355
|
* SDK connector function.
|
|
358
|
-
*
|
|
359
|
-
* @returns SdkConnector.
|
|
356
|
+
* @ignore
|
|
360
357
|
*/
|
|
361
358
|
}, {
|
|
362
359
|
key: "getSDKConnector",
|
|
@@ -367,8 +364,8 @@ var Voicemail = /*#__PURE__*/function (_Eventing) {
|
|
|
367
364
|
return Voicemail;
|
|
368
365
|
}(_impl.Eventing);
|
|
369
366
|
/**
|
|
370
|
-
* @param webex
|
|
371
|
-
* @param logger
|
|
367
|
+
* @param webex - webex instance
|
|
368
|
+
* @param logger - logger instance
|
|
372
369
|
*/
|
|
373
370
|
exports.Voicemail = Voicemail;
|
|
374
371
|
var createVoicemailClient = function createVoicemailClient(webex, logger) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_WxCallBackendConnector","_BroadworksBackendConnector","_impl","_UcmBackendConnector","_types2","_Metrics","_constants","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Voicemail","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","sdkConnector","SDKConnector","getWebex","setWebex","metricManager","getMetricManager","undefined","callingBackend","getCallingBackEnd","initializeBackendConnector","log","setLogger","level","VOICEMAIL_FILE","_createClass2","key","value","init","response","backendConnector","CALLING_BACKEND","WXC","WxCallBackendConnector","BWRKS","BroadworksBackendConnector","UCM","UcmBackendConnector","Error","submitMetric","metricAction","messageId","statusCode","errorMessage","data","error","submitVoicemailMetric","METRIC_EVENT","VOICEMAIL","METRIC_TYPE","BEHAVIORAL","VOICEMAIL_ERROR","_getVoicemailList","_asyncToGenerator2","_regenerator","mark","_callee","offset","offsetLimit","sort","refresh","wrap","_callee$","_context","prev","next","getVoicemailList","sent","VOICEMAIL_ACTION","GET_VOICEMAILS","abrupt","stop","_x","_x2","_x3","_x4","_getVoicemailContent","_callee2","_callee2$","_context2","getVoicemailContent","GET_VOICEMAIL_CONTENT","_x5","_getVoicemailSummary","_callee3","_callee3$","_context3","getVoicemailSummary","GET_VOICEMAIL_SUMMARY","_voicemailMarkAsRead","_callee4","_callee4$","_context4","voicemailMarkAsRead","MARK_READ","_x6","_voicemailMarkAsUnread","_callee5","_callee5$","_context5","voicemailMarkAsUnread","MARK_UNREAD","_x7","_deleteVoicemail","_callee6","_callee6$","_context6","deleteVoicemail","DELETE","_x8","_getVMTranscript","_callee7","_callee7$","_context7","getVMTranscript","TRANSCRIPT","_x9","resolveContact","callingPartyInfo","getSDKConnector","Eventing","exports","createVoicemailClient"],"sources":["Voicemail.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {IVoicemail, VoicemailResponseEvent, LoggerInterface, CallingPartyInfo} from './types';\nimport {CALLING_BACKEND, DisplayInformation, SORT} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {WxCallBackendConnector} from './WxCallBackendConnector';\nimport {BroadworksBackendConnector} from './BroadworksBackendConnector';\nimport {VoicemailEventTypes} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {UcmBackendConnector} from './UcmBackendConnector';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, VOICEMAIL_ACTION} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport {VOICEMAIL_FILE} from './constants';\n\n/**\n *\n */\nexport class Voicemail extends Eventing<VoicemailEventTypes> implements IVoicemail {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: IVoicemail;\n\n private metricManager: IMetricManager;\n\n /**\n * @param webex -.\n * @param logger -.\n */\n constructor(webex: WebexSDK, public logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.metricManager = getMetricManager(this.webex, undefined);\n this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n log.setLogger(logger.level, VOICEMAIL_FILE);\n }\n\n /**\n * Voicemail connector initialization.\n *\n * @returns Response.\n */\n public init() {\n const response = this.backendConnector.init();\n\n return response;\n }\n\n /**\n * Setup and initialize the voicemail backend connector class object.\n */\n private initializeBackendConnector() {\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxCallBackendConnector(this.webex, this.logger);\n break;\n }\n\n case CALLING_BACKEND.BWRKS: {\n this.backendConnector = new BroadworksBackendConnector(this.webex, this.logger);\n break;\n }\n\n case CALLING_BACKEND.UCM: {\n this.backendConnector = new UcmBackendConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * @param response - VoicemailResponseEvent to be used in submitting metric.\n * @param metricAction - Action for the metric being submitted.\n * @param messageId - Message identifier of the voicemail message.\n */\n private submitMetric(response: VoicemailResponseEvent, metricAction: string, messageId?: string) {\n const {\n statusCode,\n data: {error: errorMessage},\n } = response;\n\n if (statusCode >= 200 && statusCode < 300) {\n this.metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n metricAction,\n METRIC_TYPE.BEHAVIORAL,\n messageId\n );\n } else {\n this.metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n metricAction,\n METRIC_TYPE.BEHAVIORAL,\n messageId,\n errorMessage,\n statusCode\n );\n }\n }\n\n /**\n * Call voicemail class to fetch the voicemail lists.\n *\n * @param sort - Sort voicemail list (ASC | DESC). TODO: Once we start implementing sorting.\n * @param offset - Number of records to skip.\n * @param offsetLimit - Number of voicemail list to fetch from the offset.\n * @param refresh - Refresh the list of voicemails from backend.\n * @returns Promise.\n */\n public async getVoicemailList(\n offset: number,\n offsetLimit: number,\n sort: SORT,\n refresh?: boolean\n ): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.getVoicemailList(\n offset,\n offsetLimit,\n sort,\n refresh\n );\n\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAILS);\n\n return response;\n }\n\n /**\n * Fetch the voicemail contents for the messageId.\n *\n * @param messageId - String result from the voicemail list.\n * @returns Promise.\n */\n public async getVoicemailContent(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.getVoicemailContent(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAIL_CONTENT, messageId);\n\n return response;\n }\n\n /**\n * Fetches a quantitative summary of voicemails for a user.\n *\n * @returns - A Promise that resolves with the data containing null or counters for newMessages, oldMessage, newUrgentMessages, oldUrgentMessages.\n */\n public async getVoicemailSummary(): Promise<VoicemailResponseEvent | null> {\n const response = await this.backendConnector.getVoicemailSummary();\n\n /* istanbul ignore else */\n if (response !== null) {\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY);\n }\n\n return response;\n }\n\n /**\n * Fetch voicemail read message status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n * @returns Promise.\n */\n public async voicemailMarkAsRead(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.voicemailMarkAsRead(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.MARK_READ, messageId);\n\n return response;\n }\n\n /**\n * Fetch voicemail unread status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n * @returns Promise.\n */\n public async voicemailMarkAsUnread(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.voicemailMarkAsUnread(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.MARK_UNREAD, messageId);\n\n return response;\n }\n\n /**\n * Fetch voicemail delete status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n * @returns Promise.\n */\n public async deleteVoicemail(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.deleteVoicemail(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.DELETE, messageId);\n\n return response;\n }\n\n /**\n * Fetch the voicemail transcripts for the messageId.\n *\n * @param messageId - MessageId for which we need the transcript.\n * @returns Promise.\n */\n public async getVMTranscript(messageId: string): Promise<VoicemailResponseEvent | null> {\n const response = await this.backendConnector.getVMTranscript(messageId);\n\n if (response !== null) {\n this.submitMetric(response, VOICEMAIL_ACTION.TRANSCRIPT, messageId);\n }\n\n return response;\n }\n\n /**\n * Resolve the Contact from userId or display name.\n *\n * @param callingPartyInfo - Calling Party Info.\n */\n public resolveContact(callingPartyInfo: CallingPartyInfo): Promise<DisplayInformation | null> {\n return this.backendConnector.resolveContact(callingPartyInfo);\n }\n\n /**\n * SDK connector function.\n *\n * @returns SdkConnector.\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * @param webex -.\n * @param logger -.\n */\nexport const createVoicemailClient = (webex: WebexSDK, logger: LoggerInterface): IVoicemail =>\n new Voicemail(webex, logger);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_WxCallBackendConnector","_BroadworksBackendConnector","_impl","_UcmBackendConnector","_types2","_Metrics","_constants","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","Voicemail","_Eventing","_inherits2","_super","webex","logger","_this","_classCallCheck2","_defineProperty2","_assertThisInitialized2","sdkConnector","SDKConnector","getWebex","setWebex","metricManager","getMetricManager","undefined","callingBackend","getCallingBackEnd","initializeBackendConnector","log","setLogger","level","VOICEMAIL_FILE","_createClass2","key","value","init","response","backendConnector","CALLING_BACKEND","WXC","WxCallBackendConnector","BWRKS","BroadworksBackendConnector","UCM","UcmBackendConnector","Error","submitMetric","metricAction","messageId","statusCode","errorMessage","data","error","submitVoicemailMetric","METRIC_EVENT","VOICEMAIL","METRIC_TYPE","BEHAVIORAL","VOICEMAIL_ERROR","_getVoicemailList","_asyncToGenerator2","_regenerator","mark","_callee","offset","offsetLimit","sort","refresh","wrap","_callee$","_context","prev","next","getVoicemailList","sent","VOICEMAIL_ACTION","GET_VOICEMAILS","abrupt","stop","_x","_x2","_x3","_x4","_getVoicemailContent","_callee2","_callee2$","_context2","getVoicemailContent","GET_VOICEMAIL_CONTENT","_x5","_getVoicemailSummary","_callee3","_callee3$","_context3","getVoicemailSummary","GET_VOICEMAIL_SUMMARY","_voicemailMarkAsRead","_callee4","_callee4$","_context4","voicemailMarkAsRead","MARK_READ","_x6","_voicemailMarkAsUnread","_callee5","_callee5$","_context5","voicemailMarkAsUnread","MARK_UNREAD","_x7","_deleteVoicemail","_callee6","_callee6$","_context6","deleteVoicemail","DELETE","_x8","_getVMTranscript","_callee7","_callee7$","_context7","getVMTranscript","TRANSCRIPT","_x9","resolveContact","callingPartyInfo","getSDKConnector","Eventing","exports","createVoicemailClient"],"sources":["Voicemail.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {IVoicemail, VoicemailResponseEvent, LoggerInterface, CallingPartyInfo} from './types';\nimport {CALLING_BACKEND, DisplayInformation, SORT} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {WxCallBackendConnector} from './WxCallBackendConnector';\nimport {BroadworksBackendConnector} from './BroadworksBackendConnector';\nimport {VoicemailEventTypes} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {UcmBackendConnector} from './UcmBackendConnector';\nimport {IMetricManager, METRIC_EVENT, METRIC_TYPE, VOICEMAIL_ACTION} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport {VOICEMAIL_FILE} from './constants';\n\n/**\n * The `Voicemail` module is designed to simplify voicemail-related operations by offering a set of APIs.\n *\n * The following code snippet demonstrates how to create an instance of `Voicemail` using a `webex` instance and a logger:\n *\n * Example:\n * ```javascript\n * const voicemailInstance = createVoicemailClient(webex, logger);\n * ```\n */\nexport class Voicemail extends Eventing<VoicemailEventTypes> implements IVoicemail {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: IVoicemail;\n\n private metricManager: IMetricManager;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.metricManager = getMetricManager(this.webex, undefined);\n this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n log.setLogger(logger.level, VOICEMAIL_FILE);\n }\n\n /**\n * Voicemail connector initialization.\n *\n */\n public init() {\n const response = this.backendConnector.init();\n\n return response;\n }\n\n /**\n * Setup and initialize the voicemail backend connector class object.\n */\n private initializeBackendConnector() {\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxCallBackendConnector(this.webex, this.logger);\n break;\n }\n\n case CALLING_BACKEND.BWRKS: {\n this.backendConnector = new BroadworksBackendConnector(this.webex, this.logger);\n break;\n }\n\n case CALLING_BACKEND.UCM: {\n this.backendConnector = new UcmBackendConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * @param response - VoicemailResponseEvent to be used in submitting metric.\n * @param metricAction - Action for the metric being submitted.\n * @param messageId - Message identifier of the voicemail message.\n */\n private submitMetric(response: VoicemailResponseEvent, metricAction: string, messageId?: string) {\n const {\n statusCode,\n data: {error: errorMessage},\n } = response;\n\n if (statusCode >= 200 && statusCode < 300) {\n this.metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL,\n metricAction,\n METRIC_TYPE.BEHAVIORAL,\n messageId\n );\n } else {\n this.metricManager.submitVoicemailMetric(\n METRIC_EVENT.VOICEMAIL_ERROR,\n metricAction,\n METRIC_TYPE.BEHAVIORAL,\n messageId,\n errorMessage,\n statusCode\n );\n }\n }\n\n /**\n * Retrieves a list of voicemails with optional pagination and sorting options.\n *\n * @param offset - Number of records to skip.\n * @param offsetLimit - The limit on the number of voicemails to retrieve from the offset.\n * @param sort - Sort voicemail list (ASC | DESC).\n * @param refresh - Set to `true` to force a refresh of voicemail data from backend (optional).\n */\n public async getVoicemailList(\n offset: number,\n offsetLimit: number,\n sort: SORT,\n refresh?: boolean\n ): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.getVoicemailList(\n offset,\n offsetLimit,\n sort,\n refresh\n );\n\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAILS);\n\n return response;\n }\n\n /**\n * Retrieves the content of a voicemail message based on its messageId.\n *\n * @param messageId - The identifier of the voicemail message.\n */\n public async getVoicemailContent(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.getVoicemailContent(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAIL_CONTENT, messageId);\n\n return response;\n }\n\n /**\n * Retrieves a quantitative summary of voicemails for a user.\n *\n */\n public async getVoicemailSummary(): Promise<VoicemailResponseEvent | null> {\n const response = await this.backendConnector.getVoicemailSummary();\n\n /* istanbul ignore else */\n if (response !== null) {\n this.submitMetric(response, VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY);\n }\n\n return response;\n }\n\n /**\n * Fetch voicemail read message status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n */\n public async voicemailMarkAsRead(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.voicemailMarkAsRead(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.MARK_READ, messageId);\n\n return response;\n }\n\n /**\n * Fetch voicemail unread status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n */\n public async voicemailMarkAsUnread(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.voicemailMarkAsUnread(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.MARK_UNREAD, messageId);\n\n return response;\n }\n\n /**\n * Fetch voicemail delete status for the messageId.\n *\n * @param messageId -string result from the voicemail list.\n */\n public async deleteVoicemail(messageId: string): Promise<VoicemailResponseEvent> {\n const response = await this.backendConnector.deleteVoicemail(messageId);\n\n this.submitMetric(response, VOICEMAIL_ACTION.DELETE, messageId);\n\n return response;\n }\n\n /**\n * Fetch the voicemail transcripts for the messageId.\n *\n * @param messageId - MessageId for which we need the transcript.\n */\n public async getVMTranscript(messageId: string): Promise<VoicemailResponseEvent | null> {\n const response = await this.backendConnector.getVMTranscript(messageId);\n\n if (response !== null) {\n this.submitMetric(response, VOICEMAIL_ACTION.TRANSCRIPT, messageId);\n }\n\n return response;\n }\n\n /**\n * Resolve the Contact from userId or display name.\n *\n * @param callingPartyInfo - Calling Party Info.\n */\n public resolveContact(callingPartyInfo: CallingPartyInfo): Promise<DisplayInformation | null> {\n return this.backendConnector.resolveContact(callingPartyInfo);\n }\n\n /**\n * SDK connector function.\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * @param webex - webex instance\n * @param logger - logger instance\n */\nexport const createVoicemailClient = (webex: WebexSDK, logger: LoggerInterface): IVoicemail =>\n new Voicemail(webex, logger);\n"],"mappings":";;;;;;;;;;;;;;;;;;AAGA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,uBAAA,GAAAJ,OAAA;AACA,IAAAK,2BAAA,GAAAL,OAAA;AAEA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,oBAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,UAAA,GAAAV,OAAA;AAA2C,SAAAW,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,IAUaC,SAAS,0BAAAC,SAAA;EAAA,IAAAC,UAAA,CAAAlB,OAAA,EAAAgB,SAAA,EAAAC,SAAA;EAAA,IAAAE,MAAA,GAAA1B,YAAA,CAAAuB,SAAA;EAWpB;AACF;AACA;EACE,SAAAA,UAAYI,KAAe,EAAE,OAAOC,MAAuB,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAvB,OAAA,QAAAgB,SAAA;IAC3DM,KAAA,GAAAH,MAAA,CAAAL,IAAA;IAAQ,IAAAU,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IAAA,IAAAE,gBAAA,CAAAxB,OAAA,MAAAyB,uBAAA,CAAAzB,OAAA,EAAAsB,KAAA;IACRA,KAAA,CAAKI,YAAY,GAAGC,qBAAY;IAChC,IAAI,CAACL,KAAA,CAAKI,YAAY,CAACE,QAAQ,EAAE,EAAE;MACjCD,qBAAY,CAACE,QAAQ,CAACT,KAAK,CAAC;IAC9B;IACAE,KAAA,CAAKF,KAAK,GAAGE,KAAA,CAAKI,YAAY,CAACE,QAAQ,EAAE;IACzCN,KAAA,CAAKQ,aAAa,GAAG,IAAAC,yBAAgB,EAACT,KAAA,CAAKF,KAAK,EAAEY,SAAS,CAAC;IAC5DV,KAAA,CAAKW,cAAc,GAAG,IAAAC,wBAAiB,EAACZ,KAAA,CAAKF,KAAK,CAAC;IACnDE,KAAA,CAAKa,0BAA0B,EAAE;IACjCC,eAAG,CAACC,SAAS,CAAChB,MAAM,CAACiB,KAAK,EAAEC,yBAAc,CAAC;IAAC,OAAAjB,KAAA;EAC9C;;EAEA;AACF;AACA;AACA;EAHE,IAAAkB,aAAA,CAAAxC,OAAA,EAAAgB,SAAA;IAAAyB,GAAA;IAAAC,KAAA,EAIA,SAAAC,KAAA,EAAc;MACZ,IAAMC,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACF,IAAI,EAAE;MAE7C,OAAOC,QAAQ;IACjB;;IAEA;AACF;AACA;EAFE;IAAAH,GAAA;IAAAC,KAAA,EAGA,SAAAP,2BAAA,EAAqC;MACnC,QAAQ,IAAI,CAACF,cAAc;QACzB,KAAKa,sBAAe,CAACC,GAAG;UAAE;YACxB,IAAI,CAACF,gBAAgB,GAAG,IAAIG,8CAAsB,CAAC,IAAI,CAAC5B,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;YAC3E;UACF;QAEA,KAAKyB,sBAAe,CAACG,KAAK;UAAE;YAC1B,IAAI,CAACJ,gBAAgB,GAAG,IAAIK,sDAA0B,CAAC,IAAI,CAAC9B,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;YAC/E;UACF;QAEA,KAAKyB,sBAAe,CAACK,GAAG;UAAE;YACxB,IAAI,CAACN,gBAAgB,GAAG,IAAIO,wCAAmB,CAAC,IAAI,CAAChC,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;YACxE;UACF;QAEA;UAAS;YACP,MAAM,IAAIgC,KAAK,CAAC,gDAAgD,CAAC;UACnE;MAAC;IAEL;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAZ,GAAA;IAAAC,KAAA,EAKA,SAAAY,aAAqBV,QAAgC,EAAEW,YAAoB,EAAEC,SAAkB,EAAE;MAC/F,IACEC,UAAU,GAERb,QAAQ,CAFVa,UAAU;QACIC,YAAY,GACxBd,QAAQ,CADVe,IAAI,CAAGC,KAAK;MAGd,IAAIH,UAAU,IAAI,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;QACzC,IAAI,CAAC3B,aAAa,CAAC+B,qBAAqB,CACtCC,oBAAY,CAACC,SAAS,EACtBR,YAAY,EACZS,mBAAW,CAACC,UAAU,EACtBT,SAAS,CACV;MACH,CAAC,MAAM;QACL,IAAI,CAAC1B,aAAa,CAAC+B,qBAAqB,CACtCC,oBAAY,CAACI,eAAe,EAC5BX,YAAY,EACZS,mBAAW,CAACC,UAAU,EACtBT,SAAS,EACTE,YAAY,EACZD,UAAU,CACX;MACH;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAAhB,GAAA;IAAAC,KAAA;MAAA,IAAAyB,iBAAA,OAAAC,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAQA,SAAAC,QACEC,MAAc,EACdC,WAAmB,EACnBC,IAAU,EACVC,OAAiB;QAAA,IAAA/B,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAEM,IAAI,CAACnC,gBAAgB,CAACoC,gBAAgB,CAC3DT,MAAM,EACNC,WAAW,EACXC,IAAI,EACJC,OAAO,CACR;YAAA;cALK/B,QAAQ,GAAAkC,QAAA,CAAAI,IAAA;cAOd,IAAI,CAAC5B,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAACC,cAAc,CAAC;cAAC,OAAAN,QAAA,CAAAO,MAAA,WAEtDzC,QAAQ;YAAA;YAAA;cAAA,OAAAkC,QAAA,CAAAQ,IAAA;UAAA;QAAA,GAAAf,OAAA;MAAA,CAChB;MAAA,SAAAU,iBAAAM,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAvB,iBAAA,CAAA7D,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA4E,gBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAAxC,GAAA;IAAAC,KAAA;MAAA,IAAAiD,oBAAA,OAAAvB,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAKA,SAAAsB,SAAiCpC,SAAiB;QAAA,IAAAZ,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAAiB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAf,IAAA,GAAAe,SAAA,CAAAd,IAAA;YAAA;cAAAc,SAAA,CAAAd,IAAA;cAAA,OACzB,IAAI,CAACnC,gBAAgB,CAACkD,mBAAmB,CAACvC,SAAS,CAAC;YAAA;cAArEZ,QAAQ,GAAAkD,SAAA,CAAAZ,IAAA;cAEd,IAAI,CAAC5B,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAACa,qBAAqB,EAAExC,SAAS,CAAC;cAAC,OAAAsC,SAAA,CAAAT,MAAA,WAExEzC,QAAQ;YAAA;YAAA;cAAA,OAAAkD,SAAA,CAAAR,IAAA;UAAA;QAAA,GAAAM,QAAA;MAAA,CAChB;MAAA,SAAAG,oBAAAE,GAAA;QAAA,OAAAN,oBAAA,CAAArF,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA0F,mBAAA;IAAA;IAED;AACF;AACA;AACA;EAHE;IAAAtD,GAAA;IAAAC,KAAA;MAAA,IAAAwD,oBAAA,OAAA9B,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAIA,SAAA6B,SAAA;QAAA,IAAAvD,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAAwB,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAtB,IAAA,GAAAsB,SAAA,CAAArB,IAAA;YAAA;cAAAqB,SAAA,CAAArB,IAAA;cAAA,OACyB,IAAI,CAACnC,gBAAgB,CAACyD,mBAAmB,EAAE;YAAA;cAA5D1D,QAAQ,GAAAyD,SAAA,CAAAnB,IAAA;cAEd;cACA,IAAItC,QAAQ,KAAK,IAAI,EAAE;gBACrB,IAAI,CAACU,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAACoB,qBAAqB,CAAC;cACrE;cAAC,OAAAF,SAAA,CAAAhB,MAAA,WAEMzC,QAAQ;YAAA;YAAA;cAAA,OAAAyD,SAAA,CAAAf,IAAA;UAAA;QAAA,GAAAa,QAAA;MAAA,CAChB;MAAA,SAAAG,oBAAA;QAAA,OAAAJ,oBAAA,CAAA5F,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAiG,mBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAA7D,GAAA;IAAAC,KAAA;MAAA,IAAA8D,oBAAA,OAAApC,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAKA,SAAAmC,SAAiCjD,SAAiB;QAAA,IAAAZ,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAA8B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;YAAA;cAAA2B,SAAA,CAAA3B,IAAA;cAAA,OACzB,IAAI,CAACnC,gBAAgB,CAAC+D,mBAAmB,CAACpD,SAAS,CAAC;YAAA;cAArEZ,QAAQ,GAAA+D,SAAA,CAAAzB,IAAA;cAEd,IAAI,CAAC5B,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAAC0B,SAAS,EAAErD,SAAS,CAAC;cAAC,OAAAmD,SAAA,CAAAtB,MAAA,WAE5DzC,QAAQ;YAAA;YAAA;cAAA,OAAA+D,SAAA,CAAArB,IAAA;UAAA;QAAA,GAAAmB,QAAA;MAAA,CAChB;MAAA,SAAAG,oBAAAE,GAAA;QAAA,OAAAN,oBAAA,CAAAlG,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAuG,mBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAAnE,GAAA;IAAAC,KAAA;MAAA,IAAAqE,sBAAA,OAAA3C,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAKA,SAAA0C,SAAmCxD,SAAiB;QAAA,IAAAZ,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAAqC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAnC,IAAA,GAAAmC,SAAA,CAAAlC,IAAA;YAAA;cAAAkC,SAAA,CAAAlC,IAAA;cAAA,OAC3B,IAAI,CAACnC,gBAAgB,CAACsE,qBAAqB,CAAC3D,SAAS,CAAC;YAAA;cAAvEZ,QAAQ,GAAAsE,SAAA,CAAAhC,IAAA;cAEd,IAAI,CAAC5B,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAACiC,WAAW,EAAE5D,SAAS,CAAC;cAAC,OAAA0D,SAAA,CAAA7B,MAAA,WAE9DzC,QAAQ;YAAA;YAAA;cAAA,OAAAsE,SAAA,CAAA5B,IAAA;UAAA;QAAA,GAAA0B,QAAA;MAAA,CAChB;MAAA,SAAAG,sBAAAE,GAAA;QAAA,OAAAN,sBAAA,CAAAzG,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA8G,qBAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAA1E,GAAA;IAAAC,KAAA;MAAA,IAAA4E,gBAAA,OAAAlD,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAKA,SAAAiD,SAA6B/D,SAAiB;QAAA,IAAAZ,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAA4C,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA1C,IAAA,GAAA0C,SAAA,CAAAzC,IAAA;YAAA;cAAAyC,SAAA,CAAAzC,IAAA;cAAA,OACrB,IAAI,CAACnC,gBAAgB,CAAC6E,eAAe,CAAClE,SAAS,CAAC;YAAA;cAAjEZ,QAAQ,GAAA6E,SAAA,CAAAvC,IAAA;cAEd,IAAI,CAAC5B,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAACwC,MAAM,EAAEnE,SAAS,CAAC;cAAC,OAAAiE,SAAA,CAAApC,MAAA,WAEzDzC,QAAQ;YAAA;YAAA;cAAA,OAAA6E,SAAA,CAAAnC,IAAA;UAAA;QAAA,GAAAiC,QAAA;MAAA,CAChB;MAAA,SAAAG,gBAAAE,GAAA;QAAA,OAAAN,gBAAA,CAAAhH,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAqH,eAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAAjF,GAAA;IAAAC,KAAA;MAAA,IAAAmF,gBAAA,OAAAzD,kBAAA,CAAApE,OAAA,gBAAAqE,YAAA,CAAArE,OAAA,CAAAsE,IAAA,CAKA,SAAAwD,SAA6BtE,SAAiB;QAAA,IAAAZ,QAAA;QAAA,OAAAyB,YAAA,CAAArE,OAAA,CAAA4E,IAAA,UAAAmD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;YAAA;cAAAgD,SAAA,CAAAhD,IAAA;cAAA,OACrB,IAAI,CAACnC,gBAAgB,CAACoF,eAAe,CAACzE,SAAS,CAAC;YAAA;cAAjEZ,QAAQ,GAAAoF,SAAA,CAAA9C,IAAA;cAEd,IAAItC,QAAQ,KAAK,IAAI,EAAE;gBACrB,IAAI,CAACU,YAAY,CAACV,QAAQ,EAAEuC,wBAAgB,CAAC+C,UAAU,EAAE1E,SAAS,CAAC;cACrE;cAAC,OAAAwE,SAAA,CAAA3C,MAAA,WAEMzC,QAAQ;YAAA;YAAA;cAAA,OAAAoF,SAAA,CAAA1C,IAAA;UAAA;QAAA,GAAAwC,QAAA;MAAA,CAChB;MAAA,SAAAG,gBAAAE,GAAA;QAAA,OAAAN,gBAAA,CAAAvH,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA4H,eAAA;IAAA;IAED;AACF;AACA;AACA;AACA;EAJE;IAAAxF,GAAA;IAAAC,KAAA,EAKA,SAAA0F,eAAsBC,gBAAkC,EAAsC;MAC5F,OAAO,IAAI,CAACxF,gBAAgB,CAACuF,cAAc,CAACC,gBAAgB,CAAC;IAC/D;;IAEA;AACF;AACA;AACA;EAHE;IAAA5F,GAAA;IAAAC,KAAA,EAIA,SAAA4F,gBAAA,EAAwC;MACtC,OAAO,IAAI,CAAC5G,YAAY;IAC1B;EAAC;EAAA,OAAAV,SAAA;AAAA,EAxN4BuH,cAAQ;AA2NvC;AACA;AACA;AACA;AAHAC,OAAA,CAAAxH,SAAA,GAAAA,SAAA;AAIO,IAAMyH,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAIrH,KAAe,EAAEC,MAAuB;EAAA,OAC5E,IAAIL,SAAS,CAACI,KAAK,EAAEC,MAAM,CAAC;AAAA;AAACmH,OAAA,CAAAC,qBAAA,GAAAA,qBAAA"}
|