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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/CallHistory/CallHistory.js +51 -68
  2. package/dist/CallHistory/CallHistory.js.map +1 -1
  3. package/dist/CallingClient/CallingClient.js +18 -115
  4. package/dist/CallingClient/CallingClient.js.map +1 -1
  5. package/dist/CallingClient/CallingClient.test.js +6 -121
  6. package/dist/CallingClient/CallingClient.test.js.map +1 -1
  7. package/dist/CallingClient/calling/call.js +9 -10
  8. package/dist/CallingClient/calling/call.js.map +1 -1
  9. package/dist/CallingClient/calling/call.test.js +379 -520
  10. package/dist/CallingClient/calling/call.test.js.map +1 -1
  11. package/dist/CallingClient/calling/callManager.js +0 -7
  12. package/dist/CallingClient/calling/callManager.js.map +1 -1
  13. package/dist/CallingClient/constants.js +2 -4
  14. package/dist/CallingClient/constants.js.map +1 -1
  15. package/dist/CallingClient/registration/register.js +0 -16
  16. package/dist/CallingClient/registration/register.js.map +1 -1
  17. package/dist/CallingClient/registration/types.js.map +1 -1
  18. package/dist/CallingClient/types.js.map +1 -1
  19. package/dist/Events/types.js +11 -1
  20. package/dist/Events/types.js.map +1 -1
  21. package/dist/common/Utils.js +0 -2
  22. package/dist/common/Utils.js.map +1 -1
  23. package/dist/common/Utils.test.js +2 -2
  24. package/dist/common/Utils.test.js.map +1 -1
  25. package/dist/common/types.js.map +1 -1
  26. package/dist/module/CallHistory/CallHistory.js +17 -28
  27. package/dist/module/CallingClient/CallingClient.js +1 -43
  28. package/dist/module/CallingClient/calling/call.js +3 -4
  29. package/dist/module/CallingClient/calling/callManager.js +0 -7
  30. package/dist/module/CallingClient/constants.js +0 -2
  31. package/dist/module/CallingClient/registration/register.js +0 -8
  32. package/dist/module/Events/types.js +10 -0
  33. package/dist/module/common/Utils.js +0 -2
  34. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  35. package/dist/types/CallingClient/CallingClient.d.ts +1 -2
  36. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  37. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  38. package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
  39. package/dist/types/CallingClient/constants.d.ts +0 -2
  40. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  41. package/dist/types/CallingClient/registration/register.d.ts +1 -2
  42. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  43. package/dist/types/CallingClient/registration/types.d.ts +1 -2
  44. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  45. package/dist/types/CallingClient/types.d.ts +1 -2
  46. package/dist/types/CallingClient/types.d.ts.map +1 -1
  47. package/dist/types/Events/types.d.ts +10 -0
  48. package/dist/types/Events/types.d.ts.map +1 -1
  49. package/dist/types/common/Utils.d.ts.map +1 -1
  50. package/dist/types/common/types.d.ts +0 -4
  51. package/dist/types/common/types.d.ts.map +1 -1
  52. package/package.json +4 -4
@@ -18,7 +18,6 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regene
18
18
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
19
19
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
20
20
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
21
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/toConsumableArray"));
22
21
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
23
22
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
24
23
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
@@ -42,7 +41,7 @@ var _line = _interopRequireDefault(require("./line"));
42
41
  var _types4 = require("../Metrics/types");
43
42
  var _Metrics = require("../Metrics");
44
43
  var _windowsChromiumIceWarmupUtils = _interopRequireDefault(require("./windowsChromiumIceWarmupUtils"));
45
- function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t9 in e) "default" !== _t9 && {}.hasOwnProperty.call(e, _t9) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t9)) && (i.get || i.set) ? o(f, _t9, i) : f[_t9] = e[_t9]); return f; })(e, t); }
44
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t7 in e) "default" !== _t7 && {}.hasOwnProperty.call(e, _t7) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t7)) && (i.get || i.set) ? o(f, _t7, i) : f[_t7] = e[_t7]); return f; })(e, t); }
46
45
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
47
46
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
48
47
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -918,105 +917,9 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
918
917
  return this.lineDict;
919
918
  }
920
919
 
921
- /**
922
- * Fetches the list of devices for a given user from Mobius.
923
- */
924
- }, {
925
- key: "getDevices",
926
- value: (function () {
927
- var _getDevices = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11(userId) {
928
- var userid, mobiusUrls, finalError, _iterator3, _step3, mobiusUrl, normalizedMobiusUrl, uri, _body$devices, response, body, _t7, _t8;
929
- return _regenerator.default.wrap(function (_context13) {
930
- while (1) switch (_context13.prev = _context13.next) {
931
- case 0:
932
- userid = userId || this.webex.internal.device.userId;
933
- if (userid) {
934
- _context13.next = 1;
935
- break;
936
- }
937
- throw new Error('userId is required to fetch devices');
938
- case 1:
939
- _Logger.default.info(_constants.METHOD_START_MESSAGE, {
940
- file: _constants2.CALLING_CLIENT_FILE,
941
- method: _constants2.METHODS.GET_DEVICES
942
- });
943
- mobiusUrls = [].concat((0, _toConsumableArray2.default)(this.primaryMobiusUris), (0, _toConsumableArray2.default)(this.backupMobiusUris));
944
- if (!(mobiusUrls.length === 0)) {
945
- _context13.next = 2;
946
- break;
947
- }
948
- throw new Error('Mobius URLs are not available');
949
- case 2:
950
- _iterator3 = _createForOfIteratorHelper(mobiusUrls);
951
- _context13.prev = 3;
952
- _iterator3.s();
953
- case 4:
954
- if ((_step3 = _iterator3.n()).done) {
955
- _context13.next = 10;
956
- break;
957
- }
958
- mobiusUrl = _step3.value;
959
- normalizedMobiusUrl = mobiusUrl.replace(/\/+$/, '/');
960
- uri = "".concat(normalizedMobiusUrl).concat(_constants2.DEVICES_ENDPOINT_RESOURCE, "?userid=").concat(encodeURIComponent(userid));
961
- _context13.prev = 5;
962
- _context13.next = 6;
963
- return this.webex.request({
964
- uri: uri,
965
- method: _types3.HTTP_METHODS.GET,
966
- service: _types3.ALLOWED_SERVICES.MOBIUS,
967
- headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants2.CISCO_DEVICE_URL, this.webex.internal.device.url), _constants2.SPARK_USER_AGENT, _constants2.CALLING_USER_AGENT)
968
- });
969
- case 6:
970
- response = _context13.sent;
971
- if (!(response.statusCode !== 200)) {
972
- _context13.next = 7;
973
- break;
974
- }
975
- throw new Error("API call failed with ".concat(response.statusCode));
976
- case 7:
977
- body = response.body; // Hydrate registration deviceInfo for deregister/restore flows
978
- (0, _values.default)(this.lineDict)[0].registration.setDeviceInfo(body);
979
- (0, _values.default)(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);
980
- return _context13.abrupt("return", (_body$devices = body.devices) !== null && _body$devices !== void 0 ? _body$devices : []);
981
- case 8:
982
- _context13.prev = 8;
983
- _t7 = _context13["catch"](5);
984
- finalError = _t7;
985
- case 9:
986
- _context13.next = 4;
987
- break;
988
- case 10:
989
- _context13.next = 12;
990
- break;
991
- case 11:
992
- _context13.prev = 11;
993
- _t8 = _context13["catch"](3);
994
- _iterator3.e(_t8);
995
- case 12:
996
- _context13.prev = 12;
997
- _iterator3.f();
998
- return _context13.finish(12);
999
- case 13:
1000
- _Logger.default.error("Failed to fetch devices for userId ".concat(userId, ": ").concat((0, _stringify.default)(finalError)), {
1001
- file: _constants2.CALLING_CLIENT_FILE,
1002
- method: _constants2.METHODS.GET_DEVICES
1003
- });
1004
- throw finalError;
1005
- case 14:
1006
- case "end":
1007
- return _context13.stop();
1008
- }
1009
- }, _callee11, this, [[3, 11, 12, 13], [5, 8]]);
1010
- }));
1011
- function getDevices(_x2) {
1012
- return _getDevices.apply(this, arguments);
1013
- }
1014
- return getDevices;
1015
- }()
1016
920
  /**
1017
921
  * Retrieves call objects for all the active calls present in the client
1018
922
  */
1019
- )
1020
923
  }, {
1021
924
  key: "getActiveCalls",
1022
925
  value: function getActiveCalls() {
@@ -1061,27 +964,27 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1061
964
  }, {
1062
965
  key: "uploadLogs",
1063
966
  value: (function () {
1064
- var _uploadLogs2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12() {
967
+ var _uploadLogs2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee11() {
1065
968
  var result;
1066
- return _regenerator.default.wrap(function (_context14) {
1067
- while (1) switch (_context14.prev = _context14.next) {
969
+ return _regenerator.default.wrap(function (_context13) {
970
+ while (1) switch (_context13.prev = _context13.next) {
1068
971
  case 0:
1069
- _context14.next = 1;
972
+ _context13.next = 1;
1070
973
  return (0, _Utils.uploadLogs)({}, true);
1071
974
  case 1:
1072
- result = _context14.sent;
975
+ result = _context13.sent;
1073
976
  if (result) {
1074
- _context14.next = 2;
977
+ _context13.next = 2;
1075
978
  break;
1076
979
  }
1077
980
  throw new Error('Failed to upload logs: No response received.');
1078
981
  case 2:
1079
- return _context14.abrupt("return", result);
982
+ return _context13.abrupt("return", result);
1080
983
  case 3:
1081
984
  case "end":
1082
- return _context14.stop();
985
+ return _context13.stop();
1083
986
  }
1084
- }, _callee12);
987
+ }, _callee11);
1085
988
  }));
1086
989
  function uploadLogs() {
1087
990
  return _uploadLogs2.apply(this, arguments);
@@ -1096,23 +999,23 @@ var CallingClient = exports.CallingClient = /*#__PURE__*/function (_Eventing) {
1096
999
  * @param config - Config to start the CallingClient with.
1097
1000
  */
1098
1001
  var createClient = exports.createClient = /*#__PURE__*/function () {
1099
- var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee13(webex, config) {
1002
+ var _ref7 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee12(webex, config) {
1100
1003
  var callingClientInstance;
1101
- return _regenerator.default.wrap(function (_context15) {
1102
- while (1) switch (_context15.prev = _context15.next) {
1004
+ return _regenerator.default.wrap(function (_context14) {
1005
+ while (1) switch (_context14.prev = _context14.next) {
1103
1006
  case 0:
1104
1007
  callingClientInstance = new CallingClient(webex, config);
1105
- _context15.next = 1;
1008
+ _context14.next = 1;
1106
1009
  return callingClientInstance.init();
1107
1010
  case 1:
1108
- return _context15.abrupt("return", callingClientInstance);
1011
+ return _context14.abrupt("return", callingClientInstance);
1109
1012
  case 2:
1110
1013
  case "end":
1111
- return _context15.stop();
1014
+ return _context14.stop();
1112
1015
  }
1113
- }, _callee13);
1016
+ }, _callee12);
1114
1017
  }));
1115
- return function createClient(_x3, _x4) {
1018
+ return function createClient(_x2, _x3) {
1116
1019
  return _ref7.apply(this, arguments);
1117
1020
  };
1118
1021
  }();
@@ -1 +1 @@
1
- {"version":3,"names":["Media","_interopRequireWildcard","require","_asyncMutex","_constants","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_Logger","_callManager","_constants2","_line","_types4","_Metrics","_windowsChromiumIceWarmupUtils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t9","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","CallingClient","exports","_Eventing","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_this","_classCallCheck2","_defineProperty2","_asyncToGenerator2","_regenerator","mark","_callee","line","wrap","_context","prev","networkDownTimestamp","Date","toISOString","checkNetworkReachability","isNetworkDown","sent","log","warn","file","CALLING_CLIENT_FILE","method","METHODS","NETWORK_OFFLINE","_values","lineDict","registration","clearKeepaliveTimer","stop","info","METHOD_START_MESSAGE","NETWORK_ONLINE","networkUpTimestamp","MERCURY_OFFLINE","mercuryDownTimestamp","metricManager","submitConnectionMetrics","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","mercuryUpTimestamp","_callee3","callCheckInterval","_context3","MERCURY_ONLINE","setInterval","_callee2","_context2","_keys","callManager","getActiveCalls","clearInterval","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","NETWORK_FLAP_TIMEOUT","checkCallStatus","NETWORK_FLAP","MERCURY_UP","_callee5","_context5","CALLS_CLEARED_HANDLER","isDeviceRegistered","mutex","runExclusive","_callee4","_context4","isReconnectPending","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","sdkConnector","SDKConnector","getWebex","_config$logger","setWebex","logger","level","setWebexLogger","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","LOGGER","ERROR","setLogger","validateServiceData","getCallManager","getMetricManager","mediaEngine","adaptedLogger","_len","arguments","args","_key","join","error","_len2","_key2","_len3","_key3","_len4","_key4","trace","_len5","_key5","debug","_len6","_key6","primaryMobiusUris","backupMobiusUris","mobiusClusters","internal","services","getMobiusClusters","mobiusHost","registerSessionsListener","registerCallsClearedListener","_inherits2","_createClass2","key","_init","_callee6","_window","_window$navigator","ua","_t","_context6","window","navigator","userAgent","toLowerCase","includes","windowsChromiumIceWarmup","iceServers","timeoutMs","concat","getMobiusServers","createLine","setupNetworkEventListeners","init","_checkNetworkReachability","_callee7","controller","timeoutId","_t2","_context7","AbortController","setTimeout","abort","fetch","cache","mode","signal","clearTimeout","abrupt","_checkCallStatus","_callee8","loggerContext","calls","_iterator","_step","_loop","_t3","_context9","_context8","postStatus","then","catch","err","sendCallStateMachineEvt","type","delegateYield","finish","_this2","addEventListener","handleNetworkOnline","handleNetworkOffline","mercury","on","handleMercuryOffline","handleMercuryOnline","_getClientRegionInfo","_callee9","_this3","regionInfo","_response$headers","_response$headers$tra","_response$headers2","response","clientRegionInfo","_t4","_context0","GET_CLIENT_REGION_INFO","request","uri","DISCOVERY_URL","HTTP_METHODS","GET","addAuthHeader","headers","SPARK_USER_AGENT","body","clientRegion","countryCode","trackingid","submitRegionInfoMetric","MOBIUS_DISCOVERY","MOBIUS_SERVER_ACTION","REGION_INFO","_stringify","handleCallingClientErrors","clientError","_headers$trackingId","_headers2","submitRegistrationMetric","REGISTRATION_ERROR","REG_ACTION","REGISTER","GET_MOBIUS_SERVERS_UTIL","trackingId","undefined","emit","CALLING_CLIENT_EVENT_KEYS","uploadLogs","getClientRegionInfo","_getMobiusServers","_callee0","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_this$webex$internal$","_iterator2","_step2","_loop2","_ret","_t6","_context10","GET_MOBIUS_SERVERS","discovery","country","region","_serviceUrls","mobius","_activeServices","_response$headers3","_response$headers$tra2","_response$headers4","mobiusServers","mobiusUris","_t5","_context1","host","API_V1","URL_ENDPOINT","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","_headers$trackingId2","_headers4","t0","REGISTER_CALLS_CLEARED_LISTENER","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this5","REGISTER_SESSIONS_LISTENER","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref6","_callee1","event","sessionArr","_context11","data","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x","_createLine","_callee10","_this$sdkConfig7","_this$sdkConfig8","_context12","CREATE_LINE","Line","userId","jwe","lineId","getLines","_getDevices","_callee11","userid","mobiusUrls","finalError","_iterator3","_step3","mobiusUrl","normalizedMobiusUrl","_body$devices","_t7","_t8","_context13","Error","GET_DEVICES","_toConsumableArray2","replace","DEVICES_ENDPOINT_RESOURCE","encodeURIComponent","statusCode","setDeviceInfo","setActiveMobiusUrl","devices","getDevices","_x2","activeCalls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","_uploadLogs2","_callee12","result","_context14","Eventing","createClient","_ref7","_callee13","callingClientInstance","_context15","_x3","_x4"],"sources":["CallingClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as Media from '@webex/internal-media-core';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {\n filterMobiusUris,\n handleCallingClientErrors,\n uploadLogs,\n validateServiceData,\n} from '../common/Utils';\nimport {LOGGER} from '../Logger/types';\nimport SDKConnector from '../SDKConnector';\nimport {ClientRegionInfo, ISDKConnector, ServiceHost, WebexSDK} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {\n CallingClientEventTypes,\n MOBIUS_EVENT_KEYS,\n CallSessionEvent,\n SessionType,\n CALLING_CLIENT_EVENT_KEYS,\n} from '../Events/types';\nimport {\n ServiceIndicator,\n RegionInfo,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n UploadLogsResponse,\n DeviceType,\n Devices,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager} from './calling/types';\nimport log from '../Logger';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n CALLS_CLEARED_HANDLER_UTIL,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DISCOVERY_URL,\n GET_MOBIUS_SERVERS_UTIL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n API_V1,\n METHODS,\n NETWORK_FLAP_TIMEOUT,\n DEVICES_ENDPOINT_RESOURCE,\n} from './constants';\nimport Line from './line';\nimport {ILine} from './line/types';\nimport {\n METRIC_EVENT,\n REG_ACTION,\n METRIC_TYPE,\n IMetricManager,\n CONNECTION_ACTION,\n MOBIUS_SERVER_ACTION,\n} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\n\n/**\n * The `CallingClient` module provides a set of APIs for line registration and calling functionalities within the SDK.\n *\n * The following code snippet demonstrates how to create an instance of `CallingClient` using a `webex` instance and `callingConfig`:\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\n\nexport class CallingClient extends Eventing<CallingClientEventTypes> implements ICallingClient {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private mutex: Mutex;\n\n private callManager: ICallManager;\n\n private metricManager: IMetricManager;\n\n private sdkConfig?: CallingClientConfig;\n\n private primaryMobiusUris: string[];\n\n private backupMobiusUris: string[];\n\n private mobiusClusters: ServiceHost[];\n\n private mobiusHost: string;\n\n public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\n\n private isNetworkDown = false;\n\n private networkDownTimestamp = '';\n\n private networkUpTimestamp = '';\n\n private mercuryDownTimestamp = '';\n\n private mercuryUpTimestamp = '';\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, config?: CallingClientConfig) {\n super();\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n if (config?.logger?.level && webex.logger.config) {\n webex.logger.config.level = config.logger.level; // override the webex logger level\n }\n log.setWebexLogger(webex.logger);\n }\n this.mutex = new Mutex();\n this.webex = this.sdkConnector.getWebex();\n\n this.sdkConfig = config;\n const serviceData = this.sdkConfig?.serviceData?.indicator\n ? this.sdkConfig.serviceData\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n const logLevel = this.sdkConfig?.logger?.level ? this.sdkConfig.logger.level : LOGGER.ERROR;\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n validateServiceData(serviceData);\n\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n\n this.mediaEngine = Media;\n\n const adaptedLogger: Media.Logger = {\n log: (...args) => webex.logger.log(args.join(' : ')),\n error: (...args) => webex.logger.error(args.join(' : ')),\n warn: (...args) => webex.logger.warn(args.join(' : ')),\n info: (...args) => webex.logger.info(args.join(' : ')),\n trace: (...args) => webex.logger.trace(args.join(' : ')),\n debug: (...args) => webex.logger.debug(args.join(' : ')),\n };\n\n this.mediaEngine.setLogger(adaptedLogger);\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.mobiusClusters = this.webex.internal.services.getMobiusClusters();\n this.mobiusHost = '';\n\n this.registerSessionsListener();\n\n this.registerCallsClearedListener();\n }\n\n /**\n * Initializes the `CallingClient` by performing the following steps:\n *\n * 1. Retrieves list of servers.\n * 2. Creates a line.\n * 3. Sets up network change detection.\n *\n * This method should be called once to initialize the `callingClient`.\n *\n * @returns A promise that resolves when the initialization is complete.\n * @ignore\n */\n public async init() {\n // Only for Windows Chromium based browsers we need to do the ICE warmup\n if (typeof window !== 'undefined' && window?.navigator?.userAgent) {\n const ua = window.navigator.userAgent;\n if (ua.toLowerCase().includes('windows')) {\n log.info('Starting ICE warmup for Windows Chromium based browser', {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n try {\n await windowsChromiumIceWarmup({\n iceServers: [],\n timeoutMs: 1000,\n });\n log.info(`ICE warmup completed`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n } catch (err) {\n log.warn(`ICE warmup failed: ${err}`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n }\n }\n }\n\n await this.getMobiusServers();\n await this.createLine();\n\n this.setupNetworkEventListeners();\n }\n\n /**\n * Ping a reliable external endpoint with a short timeout to infer connectivity.\n */\n private async checkNetworkReachability(): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n // Using a common connectivity check endpoint that returns 204 with minimal payload.\n // no-cors mode yields an opaque response but a successful fetch implies reachability.\n await fetch('https://www.google.com/generate_204', {\n method: 'GET',\n cache: 'no-cache',\n mode: 'no-cors',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n return true;\n } catch (error) {\n log.warn(`Network connectivity probe failed: ${error}`, {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n });\n\n return false;\n }\n }\n\n private async checkCallStatus() {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n };\n const calls = Object.values(this.callManager.getActiveCalls());\n for (const call of calls) {\n call\n .postStatus()\n .then(() => {\n log.info(`Call is active`, loggerContext);\n /*\n * Media Renegotiation Possibility if call keepalive succeeds,\n * for cases like WebRTC disconnect and media inactivity.\n */\n })\n .catch((err) => {\n log.warn(`Call Keepalive failed: ${err}`, loggerContext);\n\n call.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n });\n }\n }\n\n private handleNetworkOffline = async () => {\n this.networkDownTimestamp = new Date().toISOString();\n this.isNetworkDown = !(await this.checkNetworkReachability());\n log.warn(`Network has gone down, wait for it to come back up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_OFFLINE,\n });\n\n if (this.isNetworkDown) {\n const line = Object.values(this.lineDict)[0];\n line.registration.clearKeepaliveTimer();\n }\n };\n\n // Wondering if we should keep this for timestamp recording purpose\n private handleNetworkOnline = () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_ONLINE,\n });\n this.networkUpTimestamp = new Date().toISOString();\n };\n\n private handleMercuryOffline = () => {\n log.warn(`Mercury down, waiting for connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_OFFLINE,\n });\n this.mercuryDownTimestamp = new Date().toISOString();\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n };\n\n private handleMercuryOnline = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_ONLINE,\n });\n this.mercuryUpTimestamp = new Date().toISOString();\n if (this.isNetworkDown) {\n const callCheckInterval = setInterval(async () => {\n if (!Object.keys(this.callManager.getActiveCalls()).length) {\n clearInterval(callCheckInterval);\n const line = Object.values(this.lineDict)[0];\n\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n this.isNetworkDown = await line.registration.handleConnectionRestoration(\n this.isNetworkDown\n );\n } else {\n this.isNetworkDown = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n this.networkDownTimestamp,\n this.networkUpTimestamp\n );\n } else {\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n }\n };\n\n private setupNetworkEventListeners(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', this.handleNetworkOnline);\n\n window.addEventListener('offline', this.handleNetworkOffline);\n }\n\n this.webex.internal.mercury.on('offline', () => {\n this.handleMercuryOffline();\n });\n\n this.webex.internal.mercury.on('online', () => {\n this.handleMercuryOnline();\n });\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n let abort;\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n });\n const regionInfo = {} as RegionInfo;\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}`,\n method: HTTP_METHODS.GET,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n const clientRegionInfo = response.body as ClientRegionInfo;\n\n regionInfo.clientRegion = clientRegionInfo?.clientRegion || '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode || '';\n\n log.log(\n `Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n }\n );\n\n this.metricManager.submitRegionInfoMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.REGION_INFO,\n METRIC_TYPE.BEHAVIORAL,\n this.mobiusHost,\n clientRegionInfo.clientRegion,\n clientRegionInfo.countryCode,\n response?.headers?.trackingid ?? ''\n );\n } catch (err: unknown) {\n log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {\n method: METHODS.GET_CLIENT_REGION_INFO,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n\n if (abort) {\n await uploadLogs();\n\n return regionInfo;\n }\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_MOBIUS_SERVERS,\n });\n /* Following operations are performed in a synchronous way ->\n\n 1. Get RegionInfo\n 2. Get Mobius Server with that RegionInfo\n 3. Check whether Mobius server was found without any error\n 4. If there is error , we don't need to send registration\n 5. Otherwise send registration\n */\n\n let useDefault = false;\n\n let clientRegion: string;\n let countryCode: string;\n\n if (this.sdkConfig?.discovery?.country && this.sdkConfig?.discovery?.region) {\n log.log('Updating region and country from the SDK config', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n clientRegion = this.sdkConfig?.discovery?.region;\n countryCode = this.sdkConfig?.discovery?.country;\n this.mobiusHost =\n this.webex.internal.services._serviceUrls?.mobius ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);\n } else {\n log.log('Updating region and country through Region discovery', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n\n const regionInfo = await this.getClientRegionInfo();\n\n clientRegion = regionInfo.clientRegion;\n countryCode = regionInfo.countryCode;\n }\n\n if (clientRegion && countryCode) {\n log.log(\n `Found Region: ${clientRegion} and country: ${countryCode}, going to fetch Mobius server`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n for (const mobius of this.mobiusClusters) {\n if (mobius.host) {\n this.mobiusHost = `https://${mobius.host}${API_V1}`;\n } else {\n this.mobiusHost = mobius as unknown as string;\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${this.mobiusHost}${URL_ENDPOINT}?regionCode=${clientRegion}&countryCode=${countryCode}`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n log.log(\n `Mobius Server found for the region. Response trackingId: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n const mobiusServers = response.body as MobiusServers;\n\n // Metrics for mobius servers\n this.metricManager.submitMobiusServersMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.MOBIUS_SERVERS,\n METRIC_TYPE.BEHAVIORAL,\n mobiusServers,\n response?.headers?.trackingid ?? ''\n );\n\n /* update arrays of Mobius Uris. */\n const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);\n this.primaryMobiusUris = mobiusUris.primary;\n this.backupMobiusUris = mobiusUris.backup;\n\n log.log(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n break;\n } catch (err: unknown) {\n log.error(`Failed to get Mobius servers: ${JSON.stringify(err)}`, {\n method: METHODS.GET_MOBIUS_SERVERS,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n const abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n if (abort) {\n useDefault = true;\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n break;\n }\n }\n }\n } else {\n /* Setting this to true because region info is possibly undefined */\n useDefault = true;\n }\n\n /* Use a default URL if Mobius discovery fails either because of region info failure\n * or because the discovered Mobius couldn't be reached\n */\n\n if (useDefault) {\n log.warn(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n this.mobiusHost = `https://${this.mobiusClusters[0].host}${API_V1}`;\n this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];\n }\n }\n\n /**\n * Registers a listener/handler for ALL_CALLS_CLEARED\n * event emitted by callManager when all the calls\n * present on sdk are cleaned up.\n */\n private registerCallsClearedListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_CALLS_CLEARED_LISTENER,\n });\n\n this.callManager.on(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED, this.callsClearedHandler);\n }\n\n /**\n * Handler registered for ALL_CALLS_CLEARED event emitted by callManager.\n *\n * If re-register attempt was deferred earlier due to active call(s), then it\n * will be attempted here on receiving a notification from callManager that all\n * calls are cleaned up.\n */\n private callsClearedHandler = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CALLS_CLEARED_HANDLER,\n });\n // this is a temporary logic to get registration obj\n // it will change once we have proper lineId and multiple lines as well\n const {registration} = Object.values(this.lineDict)[0];\n\n if (!registration.isDeviceRegistered()) {\n await this.mutex.runExclusive(async () => {\n if (registration.isReconnectPending()) {\n log.info('All calls cleared, reconnecting', {\n file: CALLING_CLIENT_FILE,\n method: CALLS_CLEARED_HANDLER_UTIL,\n });\n await registration.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n }\n });\n }\n };\n\n /**\n * To get the current log Level.\n * @ignore\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To return the `sdkConnector` instance that was used during sdk initialisation.\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n\n private registerSessionsListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n const sessionArr = event?.data.userSessions.userSessions;\n\n if (sessionArr.length === 1) {\n if (sessionArr[0].sessionType !== SessionType.WEBEX_CALLING) {\n return;\n }\n }\n\n for (let i = 0; i < sessionArr.length; i += 1) {\n if (sessionArr[i].sessionType !== SessionType.WEBEX_CALLING) {\n sessionArr.splice(i, 1);\n }\n }\n this.emit(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event as CallSessionEvent);\n }\n }\n );\n }\n\n /**\n * Creates line object inside calling client per user\n * NOTE: currently multiple lines are not supported\n */\n private async createLine(): Promise<void> {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CREATE_LINE,\n });\n const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.primaryMobiusUris,\n this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData,\n this.sdkConfig?.jwe\n );\n\n this.lineDict[line.lineId] = line;\n }\n\n /**\n * Retrieves details of all the Line objects belonging to a User\n * NOTE: currently multiple lines are not supported\n */\n public getLines(): Record<string, ILine> {\n return this.lineDict;\n }\n\n /**\n * Fetches the list of devices for a given user from Mobius.\n */\n public async getDevices(userId?: string): Promise<DeviceType[]> {\n const userid = userId || this.webex.internal.device.userId;\n if (!userid) {\n throw new Error('userId is required to fetch devices');\n }\n\n log.info(METHOD_START_MESSAGE, {file: CALLING_CLIENT_FILE, method: METHODS.GET_DEVICES});\n\n const mobiusUrls = [...this.primaryMobiusUris, ...this.backupMobiusUris];\n if (mobiusUrls.length === 0) {\n throw new Error('Mobius URLs are not available');\n }\n\n let finalError;\n for (const mobiusUrl of mobiusUrls) {\n const normalizedMobiusUrl = mobiusUrl.replace(/\\/+$/, '/');\n const uri = `${normalizedMobiusUrl}${DEVICES_ENDPOINT_RESOURCE}?userid=${encodeURIComponent(\n userid\n )}`;\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n if (response.statusCode !== 200) {\n throw new Error(`API call failed with ${response.statusCode}`);\n }\n\n const body = response.body as Devices;\n\n // Hydrate registration deviceInfo for deregister/restore flows\n Object.values(this.lineDict)[0].registration.setDeviceInfo(body);\n Object.values(this.lineDict)[0].registration.setActiveMobiusUrl(normalizedMobiusUrl);\n\n return body.devices ?? [];\n } catch (error) {\n finalError = error;\n }\n }\n\n log.error(`Failed to fetch devices for userId ${userId}: ${JSON.stringify(finalError)}`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_DEVICES,\n });\n\n throw finalError;\n }\n\n /**\n * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls: Record<string, ICall[]> = {};\n const calls = this.callManager.getActiveCalls();\n Object.keys(calls).forEach((correlationId) => {\n const call = calls[correlationId];\n if (!activeCalls[call.lineId]) {\n activeCalls[call.lineId] = [];\n }\n activeCalls[call.lineId].push(call);\n });\n\n return activeCalls;\n }\n\n /**\n * Retrieves call object for the connected call in the client\n */\n public getConnectedCall(): ICall | undefined {\n let connectCall;\n const calls = this.callManager.getActiveCalls();\n\n Object.keys(calls).forEach((correlationId) => {\n if (calls[correlationId].isConnected() && !calls[correlationId].isHeld()) {\n connectCall = calls[correlationId];\n }\n });\n\n return connectCall;\n }\n\n /**\n * Uploads logs to help troubleshoot SDK issues.\n *\n * This method collects the current SDK logs including network requests, WebSocket\n * messages, and client-side events, then securely submits them to Webex's diagnostics\n * service. The returned tracking ID, feedbackID can be provided to Webex support for faster\n * issue resolution.\n * @returns Promise<UploadLogsResponse>\n * @throws Error\n */\n public async uploadLogs(): Promise<UploadLogsResponse> {\n const result = await uploadLogs({}, true);\n if (!result) {\n throw new Error('Failed to upload logs: No response received.');\n }\n\n return result;\n }\n}\n\n/**\n * Create the `CallingClient` instance using the `webex` object and callingSdk `config`\n * @param webex - A webex instance.\n * @param config - Config to start the CallingClient with.\n */\nexport const createClient = async (\n webex: WebexSDK,\n config?: CallingClientConfig\n): Promise<ICallingClient> => {\n const callingClientInstance = new CallingClient(webex, config);\n await callingClientInstance.init();\n\n return callingClientInstance;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Media","_interopRequireWildcard","require","_asyncMutex","_constants","_Utils","_types","_SDKConnector","_interopRequireDefault","_impl","_types2","_types3","_Logger","_callManager","_constants2","_line","_types4","_Metrics","_windowsChromiumIceWarmupUtils","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t7","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","_createForOfIteratorHelper","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","_n","F","s","done","value","TypeError","a","u","next","return","_arrayLikeToArray","toString","slice","constructor","name","_Array$from","test","Array","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","apply","Boolean","prototype","valueOf","CallingClient","exports","_Eventing","webex","config","_this$sdkConfig","_this$sdkConfig$servi","_this$sdkConfig2","_this$sdkConfig2$logg","_this","_classCallCheck2","_defineProperty2","_asyncToGenerator2","_regenerator","mark","_callee","line","wrap","_context","prev","networkDownTimestamp","Date","toISOString","checkNetworkReachability","isNetworkDown","sent","log","warn","file","CALLING_CLIENT_FILE","method","METHODS","NETWORK_OFFLINE","_values","lineDict","registration","clearKeepaliveTimer","stop","info","METHOD_START_MESSAGE","NETWORK_ONLINE","networkUpTimestamp","MERCURY_OFFLINE","mercuryDownTimestamp","metricManager","submitConnectionMetrics","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","mercuryUpTimestamp","_callee3","callCheckInterval","_context3","MERCURY_ONLINE","setInterval","_callee2","_context2","_keys","callManager","getActiveCalls","clearInterval","getStatus","RegistrationStatus","IDLE","handleConnectionRestoration","NETWORK_FLAP_TIMEOUT","checkCallStatus","NETWORK_FLAP","MERCURY_UP","_callee5","_context5","CALLS_CLEARED_HANDLER","isDeviceRegistered","mutex","runExclusive","_callee4","_context4","isReconnectPending","CALLS_CLEARED_HANDLER_UTIL","reconnectOnFailure","sdkConnector","SDKConnector","getWebex","_config$logger","setWebex","logger","level","setWebexLogger","Mutex","sdkConfig","serviceData","indicator","ServiceIndicator","CALLING","domain","logLevel","LOGGER","ERROR","setLogger","validateServiceData","getCallManager","getMetricManager","mediaEngine","adaptedLogger","_len","arguments","args","_key","join","error","_len2","_key2","_len3","_key3","_len4","_key4","trace","_len5","_key5","debug","_len6","_key6","primaryMobiusUris","backupMobiusUris","mobiusClusters","internal","services","getMobiusClusters","mobiusHost","registerSessionsListener","registerCallsClearedListener","_inherits2","_createClass2","key","_init","_callee6","_window","_window$navigator","ua","_t","_context6","window","navigator","userAgent","toLowerCase","includes","windowsChromiumIceWarmup","iceServers","timeoutMs","concat","getMobiusServers","createLine","setupNetworkEventListeners","init","_checkNetworkReachability","_callee7","controller","timeoutId","_t2","_context7","AbortController","setTimeout","abort","fetch","cache","mode","signal","clearTimeout","abrupt","_checkCallStatus","_callee8","loggerContext","calls","_iterator","_step","_loop","_t3","_context9","_context8","postStatus","then","catch","err","sendCallStateMachineEvt","type","delegateYield","finish","_this2","addEventListener","handleNetworkOnline","handleNetworkOffline","mercury","on","handleMercuryOffline","handleMercuryOnline","_getClientRegionInfo","_callee9","_this3","regionInfo","_response$headers","_response$headers$tra","_response$headers2","response","clientRegionInfo","_t4","_context0","GET_CLIENT_REGION_INFO","request","uri","DISCOVERY_URL","HTTP_METHODS","GET","addAuthHeader","headers","SPARK_USER_AGENT","body","clientRegion","countryCode","trackingid","submitRegionInfoMetric","MOBIUS_DISCOVERY","MOBIUS_SERVER_ACTION","REGION_INFO","_stringify","handleCallingClientErrors","clientError","_headers$trackingId","_headers2","submitRegistrationMetric","REGISTRATION_ERROR","REG_ACTION","REGISTER","GET_MOBIUS_SERVERS_UTIL","trackingId","undefined","emit","CALLING_CLIENT_EVENT_KEYS","uploadLogs","getClientRegionInfo","_getMobiusServers","_callee0","_this$sdkConfig3","_this$sdkConfig3$disc","_this$sdkConfig4","_this$sdkConfig4$disc","_this4","useDefault","_this$sdkConfig5","_this$sdkConfig5$disc","_this$sdkConfig6","_this$sdkConfig6$disc","_this$webex$internal$","_iterator2","_step2","_loop2","_ret","_t6","_context10","GET_MOBIUS_SERVERS","discovery","country","region","_serviceUrls","mobius","_activeServices","_response$headers3","_response$headers$tra2","_response$headers4","mobiusServers","mobiusUris","_t5","_context1","host","API_V1","URL_ENDPOINT","CISCO_DEVICE_URL","device","url","CALLING_USER_AGENT","service","ALLOWED_SERVICES","MOBIUS","submitMobiusServersMetric","MOBIUS_SERVERS","filterMobiusUris","primary","backup","_headers$trackingId2","_headers4","t0","REGISTER_CALLS_CLEARED_LISTENER","ALL_CALLS_CLEARED","callsClearedHandler","getLoggingLevel","getLogLevel","getSDKConnector","_this5","REGISTER_SESSIONS_LISTENER","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","_ref6","_callee1","event","sessionArr","_context11","data","userSessions","sessionType","SessionType","WEBEX_CALLING","splice","USER_SESSION_INFO","_x","_createLine","_callee10","_this$sdkConfig7","_this$sdkConfig8","_context12","CREATE_LINE","Line","userId","jwe","lineId","getLines","activeCalls","forEach","correlationId","push","getConnectedCall","connectCall","isConnected","isHeld","_uploadLogs2","_callee11","result","_context13","Error","Eventing","createClient","_ref7","_callee12","callingClientInstance","_context14","_x2","_x3"],"sources":["CallingClient.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport * as Media from '@webex/internal-media-core';\nimport {Mutex} from 'async-mutex';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {\n filterMobiusUris,\n handleCallingClientErrors,\n uploadLogs,\n validateServiceData,\n} from '../common/Utils';\nimport {LOGGER} from '../Logger/types';\nimport SDKConnector from '../SDKConnector';\nimport {ClientRegionInfo, ISDKConnector, ServiceHost, WebexSDK} from '../SDKConnector/types';\nimport {Eventing} from '../Events/impl';\nimport {\n CallingClientEventTypes,\n MOBIUS_EVENT_KEYS,\n CallSessionEvent,\n SessionType,\n CALLING_CLIENT_EVENT_KEYS,\n} from '../Events/types';\nimport {\n ServiceIndicator,\n RegionInfo,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n MobiusServers,\n WebexRequestPayload,\n RegistrationStatus,\n UploadLogsResponse,\n} from '../common/types';\nimport {ICallingClient, CallingClientConfig} from './types';\nimport {ICall, ICallManager} from './calling/types';\nimport log from '../Logger';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n CALLS_CLEARED_HANDLER_UTIL,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n DISCOVERY_URL,\n GET_MOBIUS_SERVERS_UTIL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n API_V1,\n METHODS,\n NETWORK_FLAP_TIMEOUT,\n} from './constants';\nimport Line from './line';\nimport {ILine} from './line/types';\nimport {\n METRIC_EVENT,\n REG_ACTION,\n METRIC_TYPE,\n IMetricManager,\n CONNECTION_ACTION,\n MOBIUS_SERVER_ACTION,\n} from '../Metrics/types';\nimport {getMetricManager} from '../Metrics';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\n\n/**\n * The `CallingClient` module provides a set of APIs for line registration and calling functionalities within the SDK.\n *\n * The following code snippet demonstrates how to create an instance of `CallingClient` using a `webex` instance and `callingConfig`:\n *\n * @example\n * ```javascript\n * const callingClient = createClient(webex, callingConfig);\n * ```\n */\n\nexport class CallingClient extends Eventing<CallingClientEventTypes> implements ICallingClient {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private mutex: Mutex;\n\n private callManager: ICallManager;\n\n private metricManager: IMetricManager;\n\n private sdkConfig?: CallingClientConfig;\n\n private primaryMobiusUris: string[];\n\n private backupMobiusUris: string[];\n\n private mobiusClusters: ServiceHost[];\n\n private mobiusHost: string;\n\n public mediaEngine: typeof Media;\n\n private lineDict: Record<string, ILine> = {};\n\n private isNetworkDown = false;\n\n private networkDownTimestamp = '';\n\n private networkUpTimestamp = '';\n\n private mercuryDownTimestamp = '';\n\n private mercuryUpTimestamp = '';\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, config?: CallingClientConfig) {\n super();\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n if (config?.logger?.level && webex.logger.config) {\n webex.logger.config.level = config.logger.level; // override the webex logger level\n }\n log.setWebexLogger(webex.logger);\n }\n this.mutex = new Mutex();\n this.webex = this.sdkConnector.getWebex();\n\n this.sdkConfig = config;\n const serviceData = this.sdkConfig?.serviceData?.indicator\n ? this.sdkConfig.serviceData\n : {indicator: ServiceIndicator.CALLING, domain: ''};\n\n const logLevel = this.sdkConfig?.logger?.level ? this.sdkConfig.logger.level : LOGGER.ERROR;\n log.setLogger(logLevel, CALLING_CLIENT_FILE);\n validateServiceData(serviceData);\n\n this.callManager = getCallManager(this.webex, serviceData.indicator);\n this.metricManager = getMetricManager(this.webex, serviceData.indicator);\n\n this.mediaEngine = Media;\n\n const adaptedLogger: Media.Logger = {\n log: (...args) => webex.logger.log(args.join(' : ')),\n error: (...args) => webex.logger.error(args.join(' : ')),\n warn: (...args) => webex.logger.warn(args.join(' : ')),\n info: (...args) => webex.logger.info(args.join(' : ')),\n trace: (...args) => webex.logger.trace(args.join(' : ')),\n debug: (...args) => webex.logger.debug(args.join(' : ')),\n };\n\n this.mediaEngine.setLogger(adaptedLogger);\n\n this.primaryMobiusUris = [];\n this.backupMobiusUris = [];\n this.mobiusClusters = this.webex.internal.services.getMobiusClusters();\n this.mobiusHost = '';\n\n this.registerSessionsListener();\n\n this.registerCallsClearedListener();\n }\n\n /**\n * Initializes the `CallingClient` by performing the following steps:\n *\n * 1. Retrieves list of servers.\n * 2. Creates a line.\n * 3. Sets up network change detection.\n *\n * This method should be called once to initialize the `callingClient`.\n *\n * @returns A promise that resolves when the initialization is complete.\n * @ignore\n */\n public async init() {\n // Only for Windows Chromium based browsers we need to do the ICE warmup\n if (typeof window !== 'undefined' && window?.navigator?.userAgent) {\n const ua = window.navigator.userAgent;\n if (ua.toLowerCase().includes('windows')) {\n log.info('Starting ICE warmup for Windows Chromium based browser', {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n try {\n await windowsChromiumIceWarmup({\n iceServers: [],\n timeoutMs: 1000,\n });\n log.info(`ICE warmup completed`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n } catch (err) {\n log.warn(`ICE warmup failed: ${err}`, {\n file: CALLING_CLIENT_FILE,\n method: 'init',\n });\n }\n }\n }\n\n await this.getMobiusServers();\n await this.createLine();\n\n this.setupNetworkEventListeners();\n }\n\n /**\n * Ping a reliable external endpoint with a short timeout to infer connectivity.\n */\n private async checkNetworkReachability(): Promise<boolean> {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), 3000);\n\n // Using a common connectivity check endpoint that returns 204 with minimal payload.\n // no-cors mode yields an opaque response but a successful fetch implies reachability.\n await fetch('https://www.google.com/generate_204', {\n method: 'GET',\n cache: 'no-cache',\n mode: 'no-cors',\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n return true;\n } catch (error) {\n log.warn(`Network connectivity probe failed: ${error}`, {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n });\n\n return false;\n }\n }\n\n private async checkCallStatus() {\n const loggerContext = {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n };\n const calls = Object.values(this.callManager.getActiveCalls());\n for (const call of calls) {\n call\n .postStatus()\n .then(() => {\n log.info(`Call is active`, loggerContext);\n /*\n * Media Renegotiation Possibility if call keepalive succeeds,\n * for cases like WebRTC disconnect and media inactivity.\n */\n })\n .catch((err) => {\n log.warn(`Call Keepalive failed: ${err}`, loggerContext);\n\n call.sendCallStateMachineEvt({type: 'E_SEND_CALL_DISCONNECT'});\n });\n }\n }\n\n private handleNetworkOffline = async () => {\n this.networkDownTimestamp = new Date().toISOString();\n this.isNetworkDown = !(await this.checkNetworkReachability());\n log.warn(`Network has gone down, wait for it to come back up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_OFFLINE,\n });\n\n if (this.isNetworkDown) {\n const line = Object.values(this.lineDict)[0];\n line.registration.clearKeepaliveTimer();\n }\n };\n\n // Wondering if we should keep this for timestamp recording purpose\n private handleNetworkOnline = () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.NETWORK_ONLINE,\n });\n this.networkUpTimestamp = new Date().toISOString();\n };\n\n private handleMercuryOffline = () => {\n log.warn(`Mercury down, waiting for connection to be up`, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_OFFLINE,\n });\n this.mercuryDownTimestamp = new Date().toISOString();\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n };\n\n private handleMercuryOnline = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.MERCURY_ONLINE,\n });\n this.mercuryUpTimestamp = new Date().toISOString();\n if (this.isNetworkDown) {\n const callCheckInterval = setInterval(async () => {\n if (!Object.keys(this.callManager.getActiveCalls()).length) {\n clearInterval(callCheckInterval);\n const line = Object.values(this.lineDict)[0];\n\n if (line.getStatus() !== RegistrationStatus.IDLE) {\n this.isNetworkDown = await line.registration.handleConnectionRestoration(\n this.isNetworkDown\n );\n } else {\n this.isNetworkDown = false;\n }\n }\n }, NETWORK_FLAP_TIMEOUT);\n\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n this.networkDownTimestamp,\n this.networkUpTimestamp\n );\n } else {\n if (Object.keys(this.callManager.getActiveCalls()).length) {\n await this.checkCallStatus();\n }\n this.metricManager.submitConnectionMetrics(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n this.mercuryDownTimestamp,\n this.mercuryUpTimestamp\n );\n }\n };\n\n private setupNetworkEventListeners(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n window.addEventListener('online', this.handleNetworkOnline);\n\n window.addEventListener('offline', this.handleNetworkOffline);\n }\n\n this.webex.internal.mercury.on('offline', () => {\n this.handleMercuryOffline();\n });\n\n this.webex.internal.mercury.on('online', () => {\n this.handleMercuryOnline();\n });\n }\n\n /**\n * Fetches countryCode and region of the client.\n */\n private async getClientRegionInfo(): Promise<RegionInfo> {\n let abort;\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n });\n const regionInfo = {} as RegionInfo;\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${DISCOVERY_URL}`,\n method: HTTP_METHODS.GET,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n const clientRegionInfo = response.body as ClientRegionInfo;\n\n regionInfo.clientRegion = clientRegionInfo?.clientRegion || '';\n\n regionInfo.countryCode = clientRegionInfo?.countryCode || '';\n\n log.log(\n `Successfully fetched Client region info: ${regionInfo.clientRegion}, countryCode: ${regionInfo.countryCode}, and response trackingid: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_CLIENT_REGION_INFO,\n }\n );\n\n this.metricManager.submitRegionInfoMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.REGION_INFO,\n METRIC_TYPE.BEHAVIORAL,\n this.mobiusHost,\n clientRegionInfo.clientRegion,\n clientRegionInfo.countryCode,\n response?.headers?.trackingid ?? ''\n );\n } catch (err: unknown) {\n log.error(`Failed to get client region info: ${JSON.stringify(err)}`, {\n method: METHODS.GET_CLIENT_REGION_INFO,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n regionInfo.clientRegion = '';\n regionInfo.countryCode = '';\n\n if (abort) {\n await uploadLogs();\n\n return regionInfo;\n }\n }\n\n return regionInfo;\n }\n\n /**\n * Local method for finding the mobius servers.\n */\n private async getMobiusServers() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.GET_MOBIUS_SERVERS,\n });\n /* Following operations are performed in a synchronous way ->\n\n 1. Get RegionInfo\n 2. Get Mobius Server with that RegionInfo\n 3. Check whether Mobius server was found without any error\n 4. If there is error , we don't need to send registration\n 5. Otherwise send registration\n */\n\n let useDefault = false;\n\n let clientRegion: string;\n let countryCode: string;\n\n if (this.sdkConfig?.discovery?.country && this.sdkConfig?.discovery?.region) {\n log.log('Updating region and country from the SDK config', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n clientRegion = this.sdkConfig?.discovery?.region;\n countryCode = this.sdkConfig?.discovery?.country;\n this.mobiusHost =\n this.webex.internal.services._serviceUrls?.mobius ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.mobius);\n } else {\n log.log('Updating region and country through Region discovery', {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n });\n\n const regionInfo = await this.getClientRegionInfo();\n\n clientRegion = regionInfo.clientRegion;\n countryCode = regionInfo.countryCode;\n }\n\n if (clientRegion && countryCode) {\n log.log(\n `Found Region: ${clientRegion} and country: ${countryCode}, going to fetch Mobius server`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n for (const mobius of this.mobiusClusters) {\n if (mobius.host) {\n this.mobiusHost = `https://${mobius.host}${API_V1}`;\n } else {\n this.mobiusHost = mobius as unknown as string;\n }\n try {\n // eslint-disable-next-line no-await-in-loop\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${this.mobiusHost}${URL_ENDPOINT}?regionCode=${clientRegion}&countryCode=${countryCode}`,\n method: HTTP_METHODS.GET,\n headers: {\n [CISCO_DEVICE_URL]: this.webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n service: ALLOWED_SERVICES.MOBIUS,\n });\n\n log.log(\n `Mobius Server found for the region. Response trackingId: ${response?.headers?.trackingid}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n const mobiusServers = response.body as MobiusServers;\n\n // Metrics for mobius servers\n this.metricManager.submitMobiusServersMetric(\n METRIC_EVENT.MOBIUS_DISCOVERY,\n MOBIUS_SERVER_ACTION.MOBIUS_SERVERS,\n METRIC_TYPE.BEHAVIORAL,\n mobiusServers,\n response?.headers?.trackingid ?? ''\n );\n\n /* update arrays of Mobius Uris. */\n const mobiusUris = filterMobiusUris(mobiusServers, this.mobiusHost);\n this.primaryMobiusUris = mobiusUris.primary;\n this.backupMobiusUris = mobiusUris.backup;\n\n log.log(\n `Final list of Mobius Servers, primary: ${mobiusUris.primary} and backup: ${mobiusUris.backup}`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n\n break;\n } catch (err: unknown) {\n log.error(`Failed to get Mobius servers: ${JSON.stringify(err)}`, {\n method: METHODS.GET_MOBIUS_SERVERS,\n file: CALLING_CLIENT_FILE,\n });\n\n // eslint-disable-next-line no-await-in-loop\n const abort = await handleCallingClientErrors(\n err as WebexRequestPayload,\n (clientError) => {\n this.metricManager.submitRegistrationMetric(\n METRIC_EVENT.REGISTRATION_ERROR,\n REG_ACTION.REGISTER,\n METRIC_TYPE.BEHAVIORAL,\n GET_MOBIUS_SERVERS_UTIL,\n 'UNKNOWN',\n (err as WebexRequestPayload).headers?.trackingId ?? '',\n undefined,\n clientError\n );\n this.emit(CALLING_CLIENT_EVENT_KEYS.ERROR, clientError);\n },\n {method: GET_MOBIUS_SERVERS_UTIL, file: CALLING_CLIENT_FILE}\n );\n\n if (abort) {\n useDefault = true;\n // eslint-disable-next-line no-await-in-loop\n await uploadLogs();\n break;\n }\n }\n }\n } else {\n /* Setting this to true because region info is possibly undefined */\n useDefault = true;\n }\n\n /* Use a default URL if Mobius discovery fails either because of region info failure\n * or because the discovered Mobius couldn't be reached\n */\n\n if (useDefault) {\n log.warn(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n {\n file: CALLING_CLIENT_FILE,\n method: GET_MOBIUS_SERVERS_UTIL,\n }\n );\n this.mobiusHost = `https://${this.mobiusClusters[0].host}${API_V1}`;\n this.primaryMobiusUris = [`${this.mobiusHost}${URL_ENDPOINT}`];\n }\n }\n\n /**\n * Registers a listener/handler for ALL_CALLS_CLEARED\n * event emitted by callManager when all the calls\n * present on sdk are cleaned up.\n */\n private registerCallsClearedListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_CALLS_CLEARED_LISTENER,\n });\n\n this.callManager.on(CALLING_CLIENT_EVENT_KEYS.ALL_CALLS_CLEARED, this.callsClearedHandler);\n }\n\n /**\n * Handler registered for ALL_CALLS_CLEARED event emitted by callManager.\n *\n * If re-register attempt was deferred earlier due to active call(s), then it\n * will be attempted here on receiving a notification from callManager that all\n * calls are cleaned up.\n */\n private callsClearedHandler = async () => {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CALLS_CLEARED_HANDLER,\n });\n // this is a temporary logic to get registration obj\n // it will change once we have proper lineId and multiple lines as well\n const {registration} = Object.values(this.lineDict)[0];\n\n if (!registration.isDeviceRegistered()) {\n await this.mutex.runExclusive(async () => {\n if (registration.isReconnectPending()) {\n log.info('All calls cleared, reconnecting', {\n file: CALLING_CLIENT_FILE,\n method: CALLS_CLEARED_HANDLER_UTIL,\n });\n await registration.reconnectOnFailure(CALLS_CLEARED_HANDLER_UTIL);\n }\n });\n }\n };\n\n /**\n * To get the current log Level.\n * @ignore\n */\n public getLoggingLevel(): LOGGER {\n return log.getLogLevel();\n }\n\n /**\n * To return the `sdkConnector` instance that was used during sdk initialisation.\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n\n private registerSessionsListener() {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.REGISTER_SESSIONS_LISTENER,\n });\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n const sessionArr = event?.data.userSessions.userSessions;\n\n if (sessionArr.length === 1) {\n if (sessionArr[0].sessionType !== SessionType.WEBEX_CALLING) {\n return;\n }\n }\n\n for (let i = 0; i < sessionArr.length; i += 1) {\n if (sessionArr[i].sessionType !== SessionType.WEBEX_CALLING) {\n sessionArr.splice(i, 1);\n }\n }\n this.emit(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, event as CallSessionEvent);\n }\n }\n );\n }\n\n /**\n * Creates line object inside calling client per user\n * NOTE: currently multiple lines are not supported\n */\n private async createLine(): Promise<void> {\n log.info(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: METHODS.CREATE_LINE,\n });\n const line = new Line(\n this.webex.internal.device.userId,\n this.webex.internal.device.url,\n this.mutex,\n this.primaryMobiusUris,\n this.backupMobiusUris,\n this.getLoggingLevel(),\n this.sdkConfig?.serviceData,\n this.sdkConfig?.jwe\n );\n\n this.lineDict[line.lineId] = line;\n }\n\n /**\n * Retrieves details of all the Line objects belonging to a User\n * NOTE: currently multiple lines are not supported\n */\n public getLines(): Record<string, ILine> {\n return this.lineDict;\n }\n\n /**\n * Retrieves call objects for all the active calls present in the client\n */\n public getActiveCalls(): Record<string, ICall[]> {\n const activeCalls: Record<string, ICall[]> = {};\n const calls = this.callManager.getActiveCalls();\n Object.keys(calls).forEach((correlationId) => {\n const call = calls[correlationId];\n if (!activeCalls[call.lineId]) {\n activeCalls[call.lineId] = [];\n }\n activeCalls[call.lineId].push(call);\n });\n\n return activeCalls;\n }\n\n /**\n * Retrieves call object for the connected call in the client\n */\n public getConnectedCall(): ICall | undefined {\n let connectCall;\n const calls = this.callManager.getActiveCalls();\n\n Object.keys(calls).forEach((correlationId) => {\n if (calls[correlationId].isConnected() && !calls[correlationId].isHeld()) {\n connectCall = calls[correlationId];\n }\n });\n\n return connectCall;\n }\n\n /**\n * Uploads logs to help troubleshoot SDK issues.\n *\n * This method collects the current SDK logs including network requests, WebSocket\n * messages, and client-side events, then securely submits them to Webex's diagnostics\n * service. The returned tracking ID, feedbackID can be provided to Webex support for faster\n * issue resolution.\n * @returns Promise<UploadLogsResponse>\n * @throws Error\n */\n public async uploadLogs(): Promise<UploadLogsResponse> {\n const result = await uploadLogs({}, true);\n if (!result) {\n throw new Error('Failed to upload logs: No response received.');\n }\n\n return result;\n }\n}\n\n/**\n * Create the `CallingClient` instance using the `webex` object and callingSdk `config`\n * @param webex - A webex instance.\n * @param config - Config to start the CallingClient with.\n */\nexport const createClient = async (\n webex: WebexSDK,\n config?: CallingClientConfig\n): Promise<ICallingClient> => {\n const callingClientInstance = new CallingClient(webex, config);\n await callingClientInstance.init();\n\n return callingClientInstance;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAMA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAC,sBAAA,CAAAN,OAAA;AAEA,IAAAO,KAAA,GAAAP,OAAA;AACA,IAAAQ,OAAA,GAAAR,OAAA;AAOA,IAAAS,OAAA,GAAAT,OAAA;AAYA,IAAAU,OAAA,GAAAJ,sBAAA,CAAAN,OAAA;AACA,IAAAW,YAAA,GAAAX,OAAA;AACA,IAAAY,WAAA,GAAAZ,OAAA;AAaA,IAAAa,KAAA,GAAAP,sBAAA,CAAAN,OAAA;AAEA,IAAAc,OAAA,GAAAd,OAAA;AAQA,IAAAe,QAAA,GAAAf,OAAA;AACA,IAAAgB,8BAAA,GAAAV,sBAAA,CAAAN,OAAA;AAAuE,SAAAD,wBAAAkB,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAApB,uBAAA,YAAAA,wBAAAkB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,GAAA,IAAAf,CAAA,gBAAAe,GAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,GAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,GAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,GAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,GAAA,IAAAf,CAAA,CAAAe,GAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,2BAAAjB,CAAA,EAAAH,CAAA,QAAAC,CAAA,yBAAAoB,OAAA,IAAAlB,CAAA,CAAAmB,gBAAA,KAAAnB,CAAA,qBAAAF,CAAA,QAAAsB,cAAA,CAAApB,CAAA,MAAAF,CAAA,GAAAuB,2BAAA,CAAArB,CAAA,MAAAH,CAAA,IAAAG,CAAA,uBAAAA,CAAA,CAAAsB,MAAA,IAAAxB,CAAA,KAAAE,CAAA,GAAAF,CAAA,OAAAyB,EAAA,MAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAvB,CAAA,WAAAA,EAAA,WAAAsB,EAAA,IAAAvB,CAAA,CAAAsB,MAAA,KAAAI,IAAA,WAAAA,IAAA,MAAAC,KAAA,EAAA3B,CAAA,CAAAuB,EAAA,UAAA1B,CAAA,WAAAA,EAAAG,CAAA,UAAAA,CAAA,KAAAK,CAAA,EAAAmB,CAAA,gBAAAI,SAAA,iJAAAzB,CAAA,EAAA0B,CAAA,OAAAC,CAAA,gBAAAL,CAAA,WAAAA,EAAA,IAAA3B,CAAA,GAAAA,CAAA,CAAAgB,IAAA,CAAAd,CAAA,MAAAC,CAAA,WAAAA,EAAA,QAAAD,CAAA,GAAAF,CAAA,CAAAiC,IAAA,WAAAF,CAAA,GAAA7B,CAAA,CAAA0B,IAAA,EAAA1B,CAAA,KAAAH,CAAA,WAAAA,EAAAG,CAAA,IAAA8B,CAAA,OAAA3B,CAAA,GAAAH,CAAA,KAAAK,CAAA,WAAAA,EAAA,UAAAwB,CAAA,YAAA/B,CAAA,CAAAkC,MAAA,IAAAlC,CAAA,CAAAkC,MAAA,oBAAAF,CAAA,QAAA3B,CAAA;AAAA,SAAAkB,4BAAArB,CAAA,EAAA6B,CAAA,QAAA7B,CAAA,2BAAAA,CAAA,SAAAiC,iBAAA,CAAAjC,CAAA,EAAA6B,CAAA,OAAA/B,CAAA,MAAAoC,QAAA,CAAApB,IAAA,CAAAd,CAAA,EAAAmC,KAAA,6BAAArC,CAAA,IAAAE,CAAA,CAAAoC,WAAA,KAAAtC,CAAA,GAAAE,CAAA,CAAAoC,WAAA,CAAAC,IAAA,aAAAvC,CAAA,cAAAA,CAAA,GAAAwC,WAAA,CAAAtC,CAAA,oBAAAF,CAAA,+CAAAyC,IAAA,CAAAzC,CAAA,IAAAmC,iBAAA,CAAAjC,CAAA,EAAA6B,CAAA;AAAA,SAAAI,kBAAAjC,CAAA,EAAA6B,CAAA,aAAAA,CAAA,IAAAA,CAAA,GAAA7B,CAAA,CAAAsB,MAAA,MAAAO,CAAA,GAAA7B,CAAA,CAAAsB,MAAA,YAAAzB,CAAA,MAAAI,CAAA,GAAAuC,KAAA,CAAAX,CAAA,GAAAhC,CAAA,GAAAgC,CAAA,EAAAhC,CAAA,IAAAI,CAAA,CAAAJ,CAAA,IAAAG,CAAA,CAAAH,CAAA,UAAAI,CAAA;AAAA,SAAAwC,WAAA3C,CAAA,EAAAK,CAAA,EAAAN,CAAA,WAAAM,CAAA,OAAAuC,gBAAA,CAAAnC,OAAA,EAAAJ,CAAA,OAAAwC,2BAAA,CAAApC,OAAA,EAAAT,CAAA,EAAA8C,yBAAA,KAAAC,kBAAA,CAAA1C,CAAA,EAAAN,CAAA,YAAA6C,gBAAA,CAAAnC,OAAA,EAAAT,CAAA,EAAAsC,WAAA,IAAAjC,CAAA,CAAA2C,KAAA,CAAAhD,CAAA,EAAAD,CAAA;AAAA,SAAA+C,0BAAA,cAAA9C,CAAA,IAAAiD,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAnC,IAAA,CAAA+B,kBAAA,CAAAE,OAAA,iCAAAjD,CAAA,aAAA8C,yBAAA,YAAAA,0BAAA,aAAA9C,CAAA,UA7DvE,0CACA,iCACA;AA6DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA,IAWaoD,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAAE,SAAA;EAmCxB;AACF;AACA;EACE,SAAAF,cAAYG,KAAe,EAAEC,MAA4B,EAAE;IAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,qBAAA;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAArD,OAAA,QAAA2C,aAAA;IACzDS,KAAA,GAAAlB,UAAA,OAAAS,aAAA;IAAQ,IAAAW,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,cAhBgC,CAAC,CAAC;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,mBAEpB,KAAK;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,0BAEE,EAAE;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,wBAEJ,EAAE;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,0BAEA,EAAE;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,wBAEJ,EAAE;IAAA,IAAAE,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,2CAAAG,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAyJA,SAAAC,QAAA;MAAA,IAAAC,IAAA;MAAA,OAAAH,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAArC,IAAA;UAAA;YAC7B4B,KAAA,CAAKW,oBAAoB,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;YAACJ,QAAA,CAAArC,IAAA;YAAA,OACxB4B,KAAA,CAAKc,wBAAwB,CAAC,CAAC;UAAA;YAA5Dd,KAAA,CAAKe,aAAa,IAAAN,QAAA,CAAAO,IAAA;YAClBC,eAAG,CAACC,IAAI,uDAAuD;cAC7DC,IAAI,EAAEC,+BAAmB;cACzBC,MAAM,EAAEC,mBAAO,CAACC;YAClB,CAAC,CAAC;YAEF,IAAIvB,KAAA,CAAKe,aAAa,EAAE;cAChBR,IAAI,GAAG,IAAAiB,OAAA,CAAA5E,OAAA,EAAcoD,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAC,CAAC;cAC5ClB,IAAI,CAACmB,YAAY,CAACC,mBAAmB,CAAC,CAAC;YACzC;UAAC;UAAA;YAAA,OAAAlB,QAAA,CAAAmB,IAAA;QAAA;MAAA,GAAAtB,OAAA;IAAA,CACF;IAED;IAAA,IAAAJ,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,yBAC8B,YAAM;MAClCiB,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;QAC7BX,IAAI,EAAEC,+BAAmB;QACzBC,MAAM,EAAEC,mBAAO,CAACS;MAClB,CAAC,CAAC;MACF/B,KAAA,CAAKgC,kBAAkB,GAAG,IAAIpB,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;IACpD,CAAC;IAAA,IAAAX,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,0BAE8B,YAAM;MACnCiB,eAAG,CAACC,IAAI,kDAAkD;QACxDC,IAAI,EAAEC,+BAAmB;QACzBC,MAAM,EAAEC,mBAAO,CAACW;MAClB,CAAC,CAAC;MACFjC,KAAA,CAAKkC,oBAAoB,GAAG,IAAItB,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACpDb,KAAA,CAAKmC,aAAa,CAACC,uBAAuB,CACxCC,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACC,YAAY,EAC9BC,mBAAW,CAACC,UAAU,EACtB1C,KAAA,CAAKkC,oBAAoB,EACzBlC,KAAA,CAAK2C,kBACP,CAAC;IACH,CAAC;IAAA,IAAAzC,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,0CAAAG,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAE6B,SAAAuC,SAAA;MAAA,IAAAC,iBAAA;MAAA,OAAAzC,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAsC,SAAA;QAAA,kBAAAA,SAAA,CAAApC,IAAA,GAAAoC,SAAA,CAAA1E,IAAA;UAAA;YAC5B6C,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;cAC7BX,IAAI,EAAEC,+BAAmB;cACzBC,MAAM,EAAEC,mBAAO,CAACyB;YAClB,CAAC,CAAC;YACF/C,KAAA,CAAK2C,kBAAkB,GAAG,IAAI/B,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;YAAC,KAC/Cb,KAAA,CAAKe,aAAa;cAAA+B,SAAA,CAAA1E,IAAA;cAAA;YAAA;YACdyE,iBAAiB,GAAGG,WAAW,kBAAA7C,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAAC,SAAA4C,SAAA;cAAA,IAAA1C,IAAA;cAAA,OAAAH,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAA0C,SAAA;gBAAA,kBAAAA,SAAA,CAAAxC,IAAA,GAAAwC,SAAA,CAAA9E,IAAA;kBAAA;oBAAA,IAC/B,IAAA+E,KAAA,CAAAvG,OAAA,EAAYoD,KAAA,CAAKoD,WAAW,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC1F,MAAM;sBAAAuF,SAAA,CAAA9E,IAAA;sBAAA;oBAAA;oBACxDkF,aAAa,CAACT,iBAAiB,CAAC;oBAC1BtC,IAAI,GAAG,IAAAiB,OAAA,CAAA5E,OAAA,EAAcoD,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAAA,MAExClB,IAAI,CAACgD,SAAS,CAAC,CAAC,KAAKC,0BAAkB,CAACC,IAAI;sBAAAP,SAAA,CAAA9E,IAAA;sBAAA;oBAAA;oBAAA8E,SAAA,CAAA9E,IAAA;oBAAA,OACnBmC,IAAI,CAACmB,YAAY,CAACgC,2BAA2B,CACtE1D,KAAA,CAAKe,aACP,CAAC;kBAAA;oBAFDf,KAAA,CAAKe,aAAa,GAAAmC,SAAA,CAAAlC,IAAA;oBAAAkC,SAAA,CAAA9E,IAAA;oBAAA;kBAAA;oBAIlB4B,KAAA,CAAKe,aAAa,GAAG,KAAK;kBAAC;kBAAA;oBAAA,OAAAmC,SAAA,CAAAtB,IAAA;gBAAA;cAAA,GAAAqB,QAAA;YAAA,CAGhC,IAAEU,gCAAoB,CAAC;YAAA,KAEpB,IAAAR,KAAA,CAAAvG,OAAA,EAAYoD,KAAA,CAAKoD,WAAW,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC1F,MAAM;cAAAmF,SAAA,CAAA1E,IAAA;cAAA;YAAA;YAAA0E,SAAA,CAAA1E,IAAA;YAAA,OACjD4B,KAAA,CAAK4D,eAAe,CAAC,CAAC;UAAA;YAG9B5D,KAAA,CAAKmC,aAAa,CAACC,uBAAuB,CACxCC,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACsB,YAAY,EAC9BpB,mBAAW,CAACC,UAAU,EACtB1C,KAAA,CAAKW,oBAAoB,EACzBX,KAAA,CAAKgC,kBACP,CAAC;YAACc,SAAA,CAAA1E,IAAA;YAAA;UAAA;YAAA,KAEE,IAAA+E,KAAA,CAAAvG,OAAA,EAAYoD,KAAA,CAAKoD,WAAW,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC1F,MAAM;cAAAmF,SAAA,CAAA1E,IAAA;cAAA;YAAA;YAAA0E,SAAA,CAAA1E,IAAA;YAAA,OACjD4B,KAAA,CAAK4D,eAAe,CAAC,CAAC;UAAA;YAE9B5D,KAAA,CAAKmC,aAAa,CAACC,uBAAuB,CACxCC,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACuB,UAAU,EAC5BrB,mBAAW,CAACC,UAAU,EACtB1C,KAAA,CAAKkC,oBAAoB,EACzBlC,KAAA,CAAK2C,kBACP,CAAC;UAAC;UAAA;YAAA,OAAAG,SAAA,CAAAlB,IAAA;QAAA;MAAA,GAAAgB,QAAA;IAAA,CAEL;IAiRD;AACF;AACA;AACA;AACA;AACA;AACA;IANE,IAAA1C,gBAAA,CAAAtD,OAAA,EAAAoD,KAAA,0CAAAG,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAO8B,SAAA0D,SAAA;MAAA,IAAArC,YAAA;MAAA,OAAAtB,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAwD,SAAA;QAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAA5F,IAAA;UAAA;YAC5B6C,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;cAC7BX,IAAI,EAAEC,+BAAmB;cACzBC,MAAM,EAAEC,mBAAO,CAAC2C;YAClB,CAAC,CAAC;YACF;YACA;YACOvC,YAAY,GAAI,IAAAF,OAAA,CAAA5E,OAAA,EAAcoD,KAAA,CAAKyB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAA/CC,YAAY;YAAA,IAEdA,YAAY,CAACwC,kBAAkB,CAAC,CAAC;cAAAF,SAAA,CAAA5F,IAAA;cAAA;YAAA;YAAA4F,SAAA,CAAA5F,IAAA;YAAA,OAC9B4B,KAAA,CAAKmE,KAAK,CAACC,YAAY,kBAAAjE,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAAC,SAAAgE,SAAA;cAAA,OAAAjE,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAA8D,SAAA;gBAAA,kBAAAA,SAAA,CAAA5D,IAAA,GAAA4D,SAAA,CAAAlG,IAAA;kBAAA;oBAAA,KACxBsD,YAAY,CAAC6C,kBAAkB,CAAC,CAAC;sBAAAD,SAAA,CAAAlG,IAAA;sBAAA;oBAAA;oBACnC6C,eAAG,CAACY,IAAI,CAAC,iCAAiC,EAAE;sBAC1CV,IAAI,EAAEC,+BAAmB;sBACzBC,MAAM,EAAEmD;oBACV,CAAC,CAAC;oBAACF,SAAA,CAAAlG,IAAA;oBAAA,OACGsD,YAAY,CAAC+C,kBAAkB,CAACD,sCAA0B,CAAC;kBAAA;kBAAA;oBAAA,OAAAF,SAAA,CAAA1C,IAAA;gBAAA;cAAA,GAAAyC,QAAA;YAAA,CAEpE,GAAC;UAAA;UAAA;YAAA,OAAAL,SAAA,CAAApC,IAAA;QAAA;MAAA,GAAAmC,QAAA;IAAA,CAEL;IAjhBC/D,KAAA,CAAK0E,YAAY,GAAGC,qBAAY;IAEhC,IAAI,CAAC3E,KAAA,CAAK0E,YAAY,CAACE,QAAQ,CAAC,CAAC,EAAE;MAAA,IAAAC,cAAA;MACjCF,qBAAY,CAACG,QAAQ,CAACpF,KAAK,CAAC;MAC5B,IAAIC,MAAM,aAANA,MAAM,gBAAAkF,cAAA,GAANlF,MAAM,CAAEoF,MAAM,cAAAF,cAAA,eAAdA,cAAA,CAAgBG,KAAK,IAAItF,KAAK,CAACqF,MAAM,CAACpF,MAAM,EAAE;QAChDD,KAAK,CAACqF,MAAM,CAACpF,MAAM,CAACqF,KAAK,GAAGrF,MAAM,CAACoF,MAAM,CAACC,KAAK,CAAC,CAAC;MACnD;MACA/D,eAAG,CAACgE,cAAc,CAACvF,KAAK,CAACqF,MAAM,CAAC;IAClC;IACA/E,KAAA,CAAKmE,KAAK,GAAG,IAAIe,iBAAK,CAAC,CAAC;IACxBlF,KAAA,CAAKN,KAAK,GAAGM,KAAA,CAAK0E,YAAY,CAACE,QAAQ,CAAC,CAAC;IAEzC5E,KAAA,CAAKmF,SAAS,GAAGxF,MAAM;IACvB,IAAMyF,WAAW,GAAG,CAAAxF,eAAA,GAAAI,KAAA,CAAKmF,SAAS,cAAAvF,eAAA,gBAAAC,qBAAA,GAAdD,eAAA,CAAgBwF,WAAW,cAAAvF,qBAAA,eAA3BA,qBAAA,CAA6BwF,SAAS,GACtDrF,KAAA,CAAKmF,SAAS,CAACC,WAAW,GAC1B;MAACC,SAAS,EAAEC,wBAAgB,CAACC,OAAO;MAAEC,MAAM,EAAE;IAAE,CAAC;IAErD,IAAMC,QAAQ,GAAG,CAAA3F,gBAAA,GAAAE,KAAA,CAAKmF,SAAS,cAAArF,gBAAA,gBAAAC,qBAAA,GAAdD,gBAAA,CAAgBiF,MAAM,cAAAhF,qBAAA,eAAtBA,qBAAA,CAAwBiF,KAAK,GAAGhF,KAAA,CAAKmF,SAAS,CAACJ,MAAM,CAACC,KAAK,GAAGU,aAAM,CAACC,KAAK;IAC3F1E,eAAG,CAAC2E,SAAS,CAACH,QAAQ,EAAErE,+BAAmB,CAAC;IAC5C,IAAAyE,0BAAmB,EAACT,WAAW,CAAC;IAEhCpF,KAAA,CAAKoD,WAAW,GAAG,IAAA0C,2BAAc,EAAC9F,KAAA,CAAKN,KAAK,EAAE0F,WAAW,CAACC,SAAS,CAAC;IACpErF,KAAA,CAAKmC,aAAa,GAAG,IAAA4D,yBAAgB,EAAC/F,KAAA,CAAKN,KAAK,EAAE0F,WAAW,CAACC,SAAS,CAAC;IAExErF,KAAA,CAAKgG,WAAW,GAAGjL,KAAK;IAExB,IAAMkL,aAA2B,GAAG;MAClChF,GAAG,EAAE,SAALA,GAAGA,CAAA;QAAA,SAAAiF,IAAA,GAAAC,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAAqH,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;UAAJD,IAAI,CAAAC,IAAA,IAAAF,SAAA,CAAAE,IAAA;QAAA;QAAA,OAAK3G,KAAK,CAACqF,MAAM,CAAC9D,GAAG,CAACmF,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;MACpDC,KAAK,EAAE,SAAPA,KAAKA,CAAA;QAAA,SAAAC,KAAA,GAAAL,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAA2H,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJL,IAAI,CAAAK,KAAA,IAAAN,SAAA,CAAAM,KAAA;QAAA;QAAA,OAAK/G,KAAK,CAACqF,MAAM,CAACwB,KAAK,CAACH,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;MACxDpF,IAAI,EAAE,SAANA,IAAIA,CAAA;QAAA,SAAAwF,KAAA,GAAAP,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAA6H,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJP,IAAI,CAAAO,KAAA,IAAAR,SAAA,CAAAQ,KAAA;QAAA;QAAA,OAAKjH,KAAK,CAACqF,MAAM,CAAC7D,IAAI,CAACkF,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;MACtDzE,IAAI,EAAE,SAANA,IAAIA,CAAA;QAAA,SAAA+E,KAAA,GAAAT,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAA+H,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJT,IAAI,CAAAS,KAAA,IAAAV,SAAA,CAAAU,KAAA;QAAA;QAAA,OAAKnH,KAAK,CAACqF,MAAM,CAAClD,IAAI,CAACuE,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;MACtDQ,KAAK,EAAE,SAAPA,KAAKA,CAAA;QAAA,SAAAC,KAAA,GAAAZ,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAAkI,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJZ,IAAI,CAAAY,KAAA,IAAAb,SAAA,CAAAa,KAAA;QAAA;QAAA,OAAKtH,KAAK,CAACqF,MAAM,CAAC+B,KAAK,CAACV,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;MACxDW,KAAK,EAAE,SAAPA,KAAKA,CAAA;QAAA,SAAAC,KAAA,GAAAf,SAAA,CAAAxI,MAAA,EAAMyI,IAAI,OAAAvH,KAAA,CAAAqI,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;UAAJf,IAAI,CAAAe,KAAA,IAAAhB,SAAA,CAAAgB,KAAA;QAAA;QAAA,OAAKzH,KAAK,CAACqF,MAAM,CAACkC,KAAK,CAACb,IAAI,CAACE,IAAI,CAAC,KAAK,CAAC,CAAC;MAAA;IAC1D,CAAC;IAEDtG,KAAA,CAAKgG,WAAW,CAACJ,SAAS,CAACK,aAAa,CAAC;IAEzCjG,KAAA,CAAKoH,iBAAiB,GAAG,EAAE;IAC3BpH,KAAA,CAAKqH,gBAAgB,GAAG,EAAE;IAC1BrH,KAAA,CAAKsH,cAAc,GAAGtH,KAAA,CAAKN,KAAK,CAAC6H,QAAQ,CAACC,QAAQ,CAACC,iBAAiB,CAAC,CAAC;IACtEzH,KAAA,CAAK0H,UAAU,GAAG,EAAE;IAEpB1H,KAAA,CAAK2H,wBAAwB,CAAC,CAAC;IAE/B3H,KAAA,CAAK4H,4BAA4B,CAAC,CAAC;IAAC,OAAA5H,KAAA;EACtC;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE,IAAA6H,UAAA,CAAAjL,OAAA,EAAA2C,aAAA,EAAAE,SAAA;EAAA,WAAAqI,aAAA,CAAAlL,OAAA,EAAA2C,aAAA;IAAAwI,GAAA;IAAA/J,KAAA;MAAA,IAAAgK,KAAA,OAAA7H,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAYA,SAAA4H,SAAA;QAAA,IAAAC,OAAA,EAAAC,iBAAA;QAAA,IAAAC,EAAA,EAAAC,EAAA;QAAA,OAAAjI,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAA8H,SAAA;UAAA,kBAAAA,SAAA,CAAA5H,IAAA,GAAA4H,SAAA,CAAAlK,IAAA;YAAA;cAAA,MAEM,OAAOmK,MAAM,KAAK,WAAW,KAAAL,OAAA,GAAIK,MAAM,cAAAL,OAAA,gBAAAC,iBAAA,GAAND,OAAA,CAAQM,SAAS,cAAAL,iBAAA,eAAjBA,iBAAA,CAAmBM,SAAS;gBAAAH,SAAA,CAAAlK,IAAA;gBAAA;cAAA;cACzDgK,EAAE,GAAGG,MAAM,CAACC,SAAS,CAACC,SAAS;cAAA,KACjCL,EAAE,CAACM,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,SAAS,CAAC;gBAAAL,SAAA,CAAAlK,IAAA;gBAAA;cAAA;cACtC6C,eAAG,CAACY,IAAI,CAAC,wDAAwD,EAAE;gBACjEV,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE;cACV,CAAC,CAAC;cAACiH,SAAA,CAAA5H,IAAA;cAAA4H,SAAA,CAAAlK,IAAA;cAAA,OAEK,IAAAwK,sCAAwB,EAAC;gBAC7BC,UAAU,EAAE,EAAE;gBACdC,SAAS,EAAE;cACb,CAAC,CAAC;YAAA;cACF7H,eAAG,CAACY,IAAI,yBAAyB;gBAC/BV,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE;cACV,CAAC,CAAC;cAACiH,SAAA,CAAAlK,IAAA;cAAA;YAAA;cAAAkK,SAAA,CAAA5H,IAAA;cAAA2H,EAAA,GAAAC,SAAA;cAEHrH,eAAG,CAACC,IAAI,uBAAA6H,MAAA,CAAAV,EAAA,GAA8B;gBACpClH,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE;cACV,CAAC,CAAC;YAAC;cAAAiH,SAAA,CAAAlK,IAAA;cAAA,OAKH,IAAI,CAAC4K,gBAAgB,CAAC,CAAC;YAAA;cAAAV,SAAA,CAAAlK,IAAA;cAAA,OACvB,IAAI,CAAC6K,UAAU,CAAC,CAAC;YAAA;cAEvB,IAAI,CAACC,0BAA0B,CAAC,CAAC;YAAC;YAAA;cAAA,OAAAZ,SAAA,CAAA1G,IAAA;UAAA;QAAA,GAAAqG,QAAA;MAAA,CACnC;MAAA,SA/BYkB,IAAIA,CAAA;QAAA,OAAAnB,KAAA,CAAA7I,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAJgD,IAAI;IAAA;IAiCjB;AACF;AACA;IAFE;EAAA;IAAApB,GAAA;IAAA/J,KAAA;MAAA,IAAAoL,yBAAA,OAAAjJ,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAGA,SAAAgJ,SAAA;QAAA,IAAAC,UAAA,EAAAC,SAAA,EAAAC,GAAA;QAAA,OAAApJ,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAiJ,SAAA;UAAA,kBAAAA,SAAA,CAAA/I,IAAA,GAAA+I,SAAA,CAAArL,IAAA;YAAA;cAAAqL,SAAA,CAAA/I,IAAA;cAEU4I,UAAU,GAAG,IAAII,eAAe,CAAC,CAAC;cAClCH,SAAS,GAAGI,UAAU,CAAC;gBAAA,OAAML,UAAU,CAACM,KAAK,CAAC,CAAC;cAAA,GAAE,IAAI,CAAC,EAE5D;cACA;cAAAH,SAAA,CAAArL,IAAA;cAAA,OACMyL,KAAK,CAAC,qCAAqC,EAAE;gBACjDxI,MAAM,EAAE,KAAK;gBACbyI,KAAK,EAAE,UAAU;gBACjBC,IAAI,EAAE,SAAS;gBACfC,MAAM,EAAEV,UAAU,CAACU;cACrB,CAAC,CAAC;YAAA;cAEFC,YAAY,CAACV,SAAS,CAAC;cAAC,OAAAE,SAAA,CAAAS,MAAA,WAEjB,IAAI;YAAA;cAAAT,SAAA,CAAA/I,IAAA;cAAA8I,GAAA,GAAAC,SAAA;cAEXxI,eAAG,CAACC,IAAI,uCAAA6H,MAAA,CAAAS,GAAA,GAAgD;gBACtDrI,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE;cACV,CAAC,CAAC;cAAC,OAAAoI,SAAA,CAAAS,MAAA,WAEI,KAAK;YAAA;YAAA;cAAA,OAAAT,SAAA,CAAA7H,IAAA;UAAA;QAAA,GAAAyH,QAAA;MAAA,CAEf;MAAA,SAzBavI,wBAAwBA,CAAA;QAAA,OAAAsI,yBAAA,CAAAjK,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAxBrF,wBAAwB;IAAA;EAAA;IAAAiH,GAAA;IAAA/J,KAAA;MAAA,IAAAmM,gBAAA,OAAAhK,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CA2BtC,SAAA+J,SAAA;QAAA,IAAAC,aAAA,EAAAC,KAAA,EAAAC,SAAA,EAAAC,KAAA,EAAAC,KAAA,EAAAC,GAAA;QAAA,OAAAtK,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAmK,SAAA;UAAA,kBAAAA,SAAA,CAAAjK,IAAA,GAAAiK,SAAA,CAAAvM,IAAA;YAAA;cACQiM,aAAa,GAAG;gBACpBlJ,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE;cACV,CAAC;cACKiJ,KAAK,GAAG,IAAA9I,OAAA,CAAA5E,OAAA,EAAc,IAAI,CAACwG,WAAW,CAACC,cAAc,CAAC,CAAC,CAAC;cAAAkH,SAAA,GAAAjN,0BAAA,CAC3CgN,KAAK;cAAAK,SAAA,CAAAjK,IAAA;cAAA+J,KAAA,gBAAArK,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,UAAAoK,MAAA;gBAAA,IAAAtN,IAAA;gBAAA,OAAAiD,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAoK,SAAA;kBAAA,kBAAAA,SAAA,CAAAlK,IAAA,GAAAkK,SAAA,CAAAxM,IAAA;oBAAA;sBAAbjB,IAAI,GAAAqN,KAAA,CAAAxM,KAAA;sBACbb,IAAI,CACD0N,UAAU,CAAC,CAAC,CACZC,IAAI,CAAC,YAAM;wBACV7J,eAAG,CAACY,IAAI,mBAAmBwI,aAAa,CAAC;wBACzC;AACV;AACA;AACA;sBACQ,CAAC,CAAC,CACDU,KAAK,CAAC,UAACC,GAAG,EAAK;wBACd/J,eAAG,CAACC,IAAI,2BAAA6H,MAAA,CAA2BiC,GAAG,GAAIX,aAAa,CAAC;wBAExDlN,IAAI,CAAC8N,uBAAuB,CAAC;0BAACC,IAAI,EAAE;wBAAwB,CAAC,CAAC;sBAChE,CAAC,CAAC;oBAAC;oBAAA;sBAAA,OAAAN,SAAA,CAAAhJ,IAAA;kBAAA;gBAAA,GAAA6I,KAAA;cAAA;cAAAF,SAAA,CAAAzM,CAAA;YAAA;cAAA,KAAA0M,KAAA,GAAAD,SAAA,CAAAjO,CAAA,IAAAyB,IAAA;gBAAA4M,SAAA,CAAAvM,IAAA;gBAAA;cAAA;cAAA,OAAAuM,SAAA,CAAAQ,aAAA,CAAAV,KAAA;YAAA;cAAAE,SAAA,CAAAvM,IAAA;cAAA;YAAA;cAAAuM,SAAA,CAAAvM,IAAA;cAAA;YAAA;cAAAuM,SAAA,CAAAjK,IAAA;cAAAgK,GAAA,GAAAC,SAAA;cAAAJ,SAAA,CAAArO,CAAA,CAAAwO,GAAA;YAAA;cAAAC,SAAA,CAAAjK,IAAA;cAAA6J,SAAA,CAAA7N,CAAA;cAAA,OAAAiO,SAAA,CAAAS,MAAA;YAAA;YAAA;cAAA,OAAAT,SAAA,CAAA/I,IAAA;UAAA;QAAA,GAAAwI,QAAA;MAAA,CAER;MAAA,SAtBaxG,eAAeA,CAAA;QAAA,OAAAuG,gBAAA,CAAAhL,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAfvC,eAAe;IAAA;EAAA;IAAAmE,GAAA;IAAA/J,KAAA,EA6G7B,SAAQkL,0BAA0BA,CAAA,EAAS;MAAA,IAAAmC,MAAA;MACzC,IAAI,OAAO9C,MAAM,KAAK,WAAW,IAAIA,MAAM,CAAC+C,gBAAgB,EAAE;QAC5D/C,MAAM,CAAC+C,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACC,mBAAmB,CAAC;QAE3DhD,MAAM,CAAC+C,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACE,oBAAoB,CAAC;MAC/D;MAEA,IAAI,CAAC9L,KAAK,CAAC6H,QAAQ,CAACkE,OAAO,CAACC,EAAE,CAAC,SAAS,EAAE,YAAM;QAC9CL,MAAI,CAACM,oBAAoB,CAAC,CAAC;MAC7B,CAAC,CAAC;MAEF,IAAI,CAACjM,KAAK,CAAC6H,QAAQ,CAACkE,OAAO,CAACC,EAAE,CAAC,QAAQ,EAAE,YAAM;QAC7CL,MAAI,CAACO,mBAAmB,CAAC,CAAC;MAC5B,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;EAFE;IAAA7D,GAAA;IAAA/J,KAAA;MAAA,IAAA6N,oBAAA,OAAA1L,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAGA,SAAAyL,SAAA;QAAA,IAAAC,MAAA;QAAA,IAAAnC,KAAA,EAAAoC,UAAA,EAAAC,iBAAA,EAAAC,qBAAA,EAAAC,kBAAA,EAAAC,QAAA,EAAAC,gBAAA,EAAAC,GAAA;QAAA,OAAAlM,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAA+L,SAAA;UAAA,kBAAAA,SAAA,CAAA7L,IAAA,GAAA6L,SAAA,CAAAnO,IAAA;YAAA;cAEE6C,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;gBAC7BX,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAEC,mBAAO,CAACkL;cAClB,CAAC,CAAC;cACIR,UAAU,GAAG,CAAC,CAAC;cAAAO,SAAA,CAAA7L,IAAA;cAAA6L,SAAA,CAAAnO,IAAA;cAAA,OAGyB,IAAI,CAACsB,KAAK,CAAC+M,OAAO,CAAC;gBAC7DC,GAAG,KAAA3D,MAAA,CAAK4D,yBAAa,CAAE;gBACvBtL,MAAM,EAAEuL,oBAAY,CAACC,GAAG;gBACxBC,aAAa,EAAE,KAAK;gBACpBC,OAAO,MAAA7M,gBAAA,CAAAtD,OAAA,MACJoQ,4BAAgB,EAAG,IAAI;cAE5B,CAAC,CAAC;YAAA;cAPIZ,QAAQ,GAAAG,SAAA,CAAAvL,IAAA;cASRqL,gBAAgB,GAAGD,QAAQ,CAACa,IAAI;cAEtCjB,UAAU,CAACkB,YAAY,GAAG,CAAAb,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEa,YAAY,KAAI,EAAE;cAE9DlB,UAAU,CAACmB,WAAW,GAAG,CAAAd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEc,WAAW,KAAI,EAAE;cAE5DlM,eAAG,CAACA,GAAG,6CAAA8H,MAAA,CACuCiD,UAAU,CAACkB,YAAY,qBAAAnE,MAAA,CAAkBiD,UAAU,CAACmB,WAAW,iCAAApE,MAAA,CAA8BqD,QAAQ,aAARA,QAAQ,wBAAAH,iBAAA,GAARG,QAAQ,CAAEW,OAAO,cAAAd,iBAAA,uBAAjBA,iBAAA,CAAmBmB,UAAU,GACtK;gBACEjM,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAEC,mBAAO,CAACkL;cAClB,CACF,CAAC;cAED,IAAI,CAACrK,aAAa,CAACkL,sBAAsB,CACvChL,oBAAY,CAACiL,gBAAgB,EAC7BC,4BAAoB,CAACC,WAAW,EAChC/K,mBAAW,CAACC,UAAU,EACtB,IAAI,CAACgF,UAAU,EACf2E,gBAAgB,CAACa,YAAY,EAC7Bb,gBAAgB,CAACc,WAAW,GAAAjB,qBAAA,GAC5BE,QAAQ,aAARA,QAAQ,wBAAAD,kBAAA,GAARC,QAAQ,CAAEW,OAAO,cAAAZ,kBAAA,uBAAjBA,kBAAA,CAAmBiB,UAAU,cAAAlB,qBAAA,cAAAA,qBAAA,GAAI,EACnC,CAAC;cAACK,SAAA,CAAAnO,IAAA;cAAA;YAAA;cAAAmO,SAAA,CAAA7L,IAAA;cAAA4L,GAAA,GAAAC,SAAA;cAEFtL,eAAG,CAACsF,KAAK,sCAAAwC,MAAA,CAAsC,IAAA0E,UAAA,CAAA7Q,OAAA,EAAA0P,GAAkB,CAAC,GAAI;gBACpEjL,MAAM,EAAEC,mBAAO,CAACkL,sBAAsB;gBACtCrL,IAAI,EAAEC;cACR,CAAC,CAAC;;cAEF;cAAAmL,SAAA,CAAAnO,IAAA;cAAA,OACc,IAAAsP,gCAAyB,EAAApB,GAAA,EAErC,UAACqB,WAAW,EAAK;gBAAA,IAAAC,mBAAA,EAAAC,SAAA;gBACf9B,MAAI,CAAC5J,aAAa,CAAC2L,wBAAwB,CACzCzL,oBAAY,CAAC0L,kBAAkB,EAC/BC,kBAAU,CAACC,QAAQ,EACnBxL,mBAAW,CAACC,UAAU,EACtBwL,mCAAuB,EACvB,SAAS,GAAAN,mBAAA,IAAAC,SAAA,GACTvB,GAAA,CAA6BS,OAAO,cAAAc,SAAA,uBAApCA,SAAA,CAAsCM,UAAU,cAAAP,mBAAA,cAAAA,mBAAA,GAAI,EAAE,EACtDQ,SAAS,EACTT,WACF,CAAC;gBACD5B,MAAI,CAACsC,IAAI,CAACC,iCAAyB,CAAC3I,KAAK,EAAEgI,WAAW,CAAC;cACzD,CAAC,EACD;gBAACtM,MAAM,EAAE6M,mCAAuB;gBAAE/M,IAAI,EAAEC;cAAmB,CAC7D,CAAC;YAAA;cAhBDwI,KAAK,GAAA2C,SAAA,CAAAvL,IAAA;cAkBLgL,UAAU,CAACkB,YAAY,GAAG,EAAE;cAC5BlB,UAAU,CAACmB,WAAW,GAAG,EAAE;cAAC,KAExBvD,KAAK;gBAAA2C,SAAA,CAAAnO,IAAA;gBAAA;cAAA;cAAAmO,SAAA,CAAAnO,IAAA;cAAA,OACD,IAAAmQ,iBAAU,EAAC,CAAC;YAAA;cAAA,OAAAhC,SAAA,CAAArC,MAAA,WAEX8B,UAAU;YAAA;cAAA,OAAAO,SAAA,CAAArC,MAAA,WAId8B,UAAU;YAAA;YAAA;cAAA,OAAAO,SAAA,CAAA3K,IAAA;UAAA;QAAA,GAAAkK,QAAA;MAAA,CAClB;MAAA,SA7Ea0C,mBAAmBA,CAAA;QAAA,OAAA3C,oBAAA,CAAA1M,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAnBqI,mBAAmB;IAAA;IA+EjC;AACF;AACA;IAFE;EAAA;IAAAzG,GAAA;IAAA/J,KAAA;MAAA,IAAAyQ,iBAAA,OAAAtO,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAGA,SAAAqO,SAAA;QAAA,IAAAC,gBAAA;UAAAC,qBAAA;UAAAC,gBAAA;UAAAC,qBAAA;UAAAC,MAAA;QAAA,IAAAC,UAAA,EAAA9B,YAAA,EAAAC,WAAA,EAAA8B,gBAAA,EAAAC,qBAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAArD,UAAA,EAAAsD,UAAA,EAAAC,MAAA,EAAAC,MAAA,EAAAC,IAAA,EAAAC,GAAA;QAAA,OAAAtP,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAmP,UAAA;UAAA,kBAAAA,UAAA,CAAAjP,IAAA,GAAAiP,UAAA,CAAAvR,IAAA;YAAA;cACE6C,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;gBAC7BX,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAEC,mBAAO,CAACsO;cAClB,CAAC,CAAC;cACF;AACJ;AACA;AACA;AACA;AACA;AACA;cAGQZ,UAAU,GAAG,KAAK;cAAA,MAKlB,CAAAL,gBAAA,OAAI,CAACxJ,SAAS,cAAAwJ,gBAAA,gBAAAC,qBAAA,GAAdD,gBAAA,CAAgBkB,SAAS,cAAAjB,qBAAA,eAAzBA,qBAAA,CAA2BkB,OAAO,KAAAjB,gBAAA,GAAI,IAAI,CAAC1J,SAAS,cAAA0J,gBAAA,gBAAAC,qBAAA,GAAdD,gBAAA,CAAgBgB,SAAS,cAAAf,qBAAA,eAAzBA,qBAAA,CAA2BiB,MAAM;gBAAAJ,UAAA,CAAAvR,IAAA;gBAAA;cAAA;cACzE6C,eAAG,CAACA,GAAG,CAAC,iDAAiD,EAAE;gBACzDE,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE6M;cACV,CAAC,CAAC;cACFhB,YAAY,IAAA+B,gBAAA,GAAG,IAAI,CAAC9J,SAAS,cAAA8J,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBY,SAAS,cAAAX,qBAAA,uBAAzBA,qBAAA,CAA2Ba,MAAM;cAChD5C,WAAW,IAAAgC,gBAAA,GAAG,IAAI,CAAChK,SAAS,cAAAgK,gBAAA,wBAAAC,qBAAA,GAAdD,gBAAA,CAAgBU,SAAS,cAAAT,qBAAA,uBAAzBA,qBAAA,CAA2BU,OAAO;cAChD,IAAI,CAACpI,UAAU,GACb,EAAA2H,qBAAA,OAAI,CAAC3P,KAAK,CAAC6H,QAAQ,CAACC,QAAQ,CAACwI,YAAY,cAAAX,qBAAA,uBAAzCA,qBAAA,CAA2CY,MAAM,KACjD,IAAI,CAACvQ,KAAK,CAAC6H,QAAQ,CAACC,QAAQ,CAACzK,GAAG,CAAC,IAAI,CAAC2C,KAAK,CAAC6H,QAAQ,CAACC,QAAQ,CAAC0I,eAAe,CAACD,MAAM,CAAC;cAACN,UAAA,CAAAvR,IAAA;cAAA;YAAA;cAExF6C,eAAG,CAACA,GAAG,CAAC,sDAAsD,EAAE;gBAC9DE,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE6M;cACV,CAAC,CAAC;cAACyB,UAAA,CAAAvR,IAAA;cAAA,OAEsB,IAAI,CAACoQ,mBAAmB,CAAC,CAAC;YAAA;cAA7CxC,UAAU,GAAA2D,UAAA,CAAA3O,IAAA;cAEhBkM,YAAY,GAAGlB,UAAU,CAACkB,YAAY;cACtCC,WAAW,GAAGnB,UAAU,CAACmB,WAAW;YAAC;cAAA,MAGnCD,YAAY,IAAIC,WAAW;gBAAAwC,UAAA,CAAAvR,IAAA;gBAAA;cAAA;cAC7B6C,eAAG,CAACA,GAAG,kBAAA8H,MAAA,CACYmE,YAAY,oBAAAnE,MAAA,CAAiBoE,WAAW,qCACzD;gBACEhM,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAE6M;cACV,CACF,CAAC;cAACoB,UAAA,GAAAhS,0BAAA,CAEmB,IAAI,CAACgK,cAAc;cAAAqI,UAAA,CAAAjP,IAAA;cAAA8O,MAAA,gBAAApP,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,UAAAmP,OAAA;gBAAA,IAAAS,MAAA,EAAAE,kBAAA,EAAAC,sBAAA,EAAAC,kBAAA,EAAAjE,QAAA,EAAAkE,aAAA,EAAAC,UAAA,EAAA3G,KAAA,EAAA4G,GAAA;gBAAA,OAAApQ,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAiQ,SAAA;kBAAA,kBAAAA,SAAA,CAAA/P,IAAA,GAAA+P,SAAA,CAAArS,IAAA;oBAAA;sBAA7B6R,MAAM,GAAAV,MAAA,CAAAvR,KAAA;sBACf,IAAIiS,MAAM,CAACS,IAAI,EAAE;wBACf3B,MAAI,CAACrH,UAAU,cAAAqB,MAAA,CAAckH,MAAM,CAACS,IAAI,EAAA3H,MAAA,CAAG4H,kBAAM,CAAE;sBACrD,CAAC,MAAM;wBACL5B,MAAI,CAACrH,UAAU,GAAGuI,MAA2B;sBAC/C;sBAACQ,SAAA,CAAA/P,IAAA;sBAAA+P,SAAA,CAAArS,IAAA;sBAAA,OAG6C2Q,MAAI,CAACrP,KAAK,CAAC+M,OAAO,CAAC;wBAC7DC,GAAG,KAAA3D,MAAA,CAAKgG,MAAI,CAACrH,UAAU,EAAAqB,MAAA,CAAG6H,wBAAY,kBAAA7H,MAAA,CAAemE,YAAY,mBAAAnE,MAAA,CAAgBoE,WAAW,CAAE;wBAC9F9L,MAAM,EAAEuL,oBAAY,CAACC,GAAG;wBACxBE,OAAO,MAAA7M,gBAAA,CAAAtD,OAAA,MAAAsD,gBAAA,CAAAtD,OAAA,MACJiU,4BAAgB,EAAG9B,MAAI,CAACrP,KAAK,CAAC6H,QAAQ,CAACuJ,MAAM,CAACC,GAAG,GACjD/D,4BAAgB,EAAGgE,8BAAkB,CACvC;wBACDC,OAAO,EAAEC,wBAAgB,CAACC;sBAC5B,CAAC,CAAC;oBAAA;sBARI/E,QAAQ,GAAAqE,SAAA,CAAAzP,IAAA;sBAUdC,eAAG,CAACA,GAAG,6DAAA8H,MAAA,CACuDqD,QAAQ,aAARA,QAAQ,wBAAA+D,kBAAA,GAAR/D,QAAQ,CAAEW,OAAO,cAAAoD,kBAAA,uBAAjBA,kBAAA,CAAmB/C,UAAU,GACzF;wBACEjM,IAAI,EAAEC,+BAAmB;wBACzBC,MAAM,EAAE6M;sBACV,CACF,CAAC;sBAEKoC,aAAa,GAAGlE,QAAQ,CAACa,IAAI,EAEnC;sBACA8B,MAAI,CAAC5M,aAAa,CAACiP,yBAAyB,CAC1C/O,oBAAY,CAACiL,gBAAgB,EAC7BC,4BAAoB,CAAC8D,cAAc,EACnC5O,mBAAW,CAACC,UAAU,EACtB4N,aAAa,GAAAF,sBAAA,GACbhE,QAAQ,aAARA,QAAQ,wBAAAiE,kBAAA,GAARjE,QAAQ,CAAEW,OAAO,cAAAsD,kBAAA,uBAAjBA,kBAAA,CAAmBjD,UAAU,cAAAgD,sBAAA,cAAAA,sBAAA,GAAI,EACnC,CAAC;;sBAED;sBACMG,UAAU,GAAG,IAAAe,uBAAgB,EAAChB,aAAa,EAAEvB,MAAI,CAACrH,UAAU,CAAC;sBACnEqH,MAAI,CAAC3H,iBAAiB,GAAGmJ,UAAU,CAACgB,OAAO;sBAC3CxC,MAAI,CAAC1H,gBAAgB,GAAGkJ,UAAU,CAACiB,MAAM;sBAEzCvQ,eAAG,CAACA,GAAG,2CAAA8H,MAAA,CACqCwH,UAAU,CAACgB,OAAO,mBAAAxI,MAAA,CAAgBwH,UAAU,CAACiB,MAAM,GAC7F;wBACErQ,IAAI,EAAEC,+BAAmB;wBACzBC,MAAM,EAAE6M;sBACV,CACF,CAAC;sBAAC,OAAAuC,SAAA,CAAAvG,MAAA;oBAAA;sBAAAuG,SAAA,CAAA/P,IAAA;sBAAA8P,GAAA,GAAAC,SAAA;sBAIFxP,eAAG,CAACsF,KAAK,kCAAAwC,MAAA,CAAkC,IAAA0E,UAAA,CAAA7Q,OAAA,EAAA4T,GAAkB,CAAC,GAAI;wBAChEnP,MAAM,EAAEC,mBAAO,CAACsO,kBAAkB;wBAClCzO,IAAI,EAAEC;sBACR,CAAC,CAAC;;sBAEF;sBAAAqP,SAAA,CAAArS,IAAA;sBAAA,OACoB,IAAAsP,gCAAyB,EAAA8C,GAAA,EAE3C,UAAC7C,WAAW,EAAK;wBAAA,IAAA8D,oBAAA,EAAAC,SAAA;wBACf3C,MAAI,CAAC5M,aAAa,CAAC2L,wBAAwB,CACzCzL,oBAAY,CAAC0L,kBAAkB,EAC/BC,kBAAU,CAACC,QAAQ,EACnBxL,mBAAW,CAACC,UAAU,EACtBwL,mCAAuB,EACvB,SAAS,GAAAuD,oBAAA,IAAAC,SAAA,GACTlB,GAAA,CAA6BzD,OAAO,cAAA2E,SAAA,uBAApCA,SAAA,CAAsCvD,UAAU,cAAAsD,oBAAA,cAAAA,oBAAA,GAAI,EAAE,EACtDrD,SAAS,EACTT,WACF,CAAC;wBACDoB,MAAI,CAACV,IAAI,CAACC,iCAAyB,CAAC3I,KAAK,EAAEgI,WAAW,CAAC;sBACzD,CAAC,EACD;wBAACtM,MAAM,EAAE6M,mCAAuB;wBAAE/M,IAAI,EAAEC;sBAAmB,CAC7D,CAAC;oBAAA;sBAhBKwI,KAAK,GAAA6G,SAAA,CAAAzP,IAAA;sBAAA,KAkBP4I,KAAK;wBAAA6G,SAAA,CAAArS,IAAA;wBAAA;sBAAA;sBACP4Q,UAAU,GAAG,IAAI;sBACjB;sBAAAyB,SAAA,CAAArS,IAAA;sBAAA,OACM,IAAAmQ,iBAAU,EAAC,CAAC;oBAAA;sBAAA,OAAAkC,SAAA,CAAAvG,MAAA;oBAAA;oBAAA;sBAAA,OAAAuG,SAAA,CAAA7O,IAAA;kBAAA;gBAAA,GAAA4N,MAAA;cAAA;cAAAF,UAAA,CAAAxR,CAAA;YAAA;cAAA,KAAAyR,MAAA,GAAAD,UAAA,CAAAhT,CAAA,IAAAyB,IAAA;gBAAA4R,UAAA,CAAAvR,IAAA;gBAAA;cAAA;cAAA,OAAAuR,UAAA,CAAAxE,aAAA,CAAAqE,MAAA;YAAA;cAAAC,IAAA,GAAAE,UAAA,CAAAgC,EAAA;cAAA,MAAAlC,IAAA;gBAAAE,UAAA,CAAAvR,IAAA;gBAAA;cAAA;cAAA,OAAAuR,UAAA,CAAAzF,MAAA;YAAA;cAAAyF,UAAA,CAAAvR,IAAA;cAAA;YAAA;cAAAuR,UAAA,CAAAvR,IAAA;cAAA;YAAA;cAAAuR,UAAA,CAAAjP,IAAA;cAAAgP,GAAA,GAAAC,UAAA;cAAAL,UAAA,CAAApT,CAAA,CAAAwT,GAAA;YAAA;cAAAC,UAAA,CAAAjP,IAAA;cAAA4O,UAAA,CAAA5S,CAAA;cAAA,OAAAiT,UAAA,CAAAvE,MAAA;YAAA;cAAAuE,UAAA,CAAAvR,IAAA;cAAA;YAAA;cAMxB;cACA4Q,UAAU,GAAG,IAAI;YAAC;cAGpB;AACJ;AACA;;cAEI,IAAIA,UAAU,EAAE;gBACd/N,eAAG,CAACC,IAAI,+GAEN;kBACEC,IAAI,EAAEC,+BAAmB;kBACzBC,MAAM,EAAE6M;gBACV,CACF,CAAC;gBACD,IAAI,CAACxG,UAAU,cAAAqB,MAAA,CAAc,IAAI,CAACzB,cAAc,CAAC,CAAC,CAAC,CAACoJ,IAAI,EAAA3H,MAAA,CAAG4H,kBAAM,CAAE;gBACnE,IAAI,CAACvJ,iBAAiB,GAAG,IAAA2B,MAAA,CAAI,IAAI,CAACrB,UAAU,EAAAqB,MAAA,CAAG6H,wBAAY,EAAG;cAChE;YAAC;YAAA;cAAA,OAAAjB,UAAA,CAAA/N,IAAA;UAAA;QAAA,GAAA8M,QAAA;MAAA,CACF;MAAA,SA1Ja1F,gBAAgBA,CAAA;QAAA,OAAAyF,iBAAA,CAAAtP,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAhB6C,gBAAgB;IAAA;IA4J9B;AACF;AACA;AACA;AACA;IAJE;EAAA;IAAAjB,GAAA;IAAA/J,KAAA,EAKA,SAAQ4J,4BAA4BA,CAAA,EAAG;MACrC3G,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;QAC7BX,IAAI,EAAEC,+BAAmB;QACzBC,MAAM,EAAEC,mBAAO,CAACsQ;MAClB,CAAC,CAAC;MAEF,IAAI,CAACxO,WAAW,CAACsI,EAAE,CAAC4C,iCAAyB,CAACuD,iBAAiB,EAAE,IAAI,CAACC,mBAAmB,CAAC;IAC5F;EAAC;IAAA/J,GAAA;IAAA/J,KAAA;IA+BD;AACF;AACA;AACA;IACE,SAAO+T,eAAeA,CAAA,EAAW;MAC/B,OAAO9Q,eAAG,CAAC+Q,WAAW,CAAC,CAAC;IAC1B;;IAEA;AACF;AACA;AACA;EAHE;IAAAjK,GAAA;IAAA/J,KAAA,EAIA,SAAOiU,eAAeA,CAAA,EAAkB;MACtC,OAAO,IAAI,CAACvN,YAAY;IAC1B;EAAC;IAAAqD,GAAA;IAAA/J,KAAA,EAED,SAAQ2J,wBAAwBA,CAAA,EAAG;MAAA,IAAAuK,MAAA;MACjCjR,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;QAC7BX,IAAI,EAAEC,+BAAmB;QACzBC,MAAM,EAAEC,mBAAO,CAAC6Q;MAClB,CAAC,CAAC;MACF,IAAI,CAACzN,YAAY,CAAC0N,gBAAgB,CAChCC,yBAAiB,CAACC,4BAA4B;QAAA,IAAAC,KAAA,OAAApS,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAC9C,SAAAmS,SAAOC,KAAwB;UAAA,IAAAC,UAAA,EAAAjW,CAAA;UAAA,OAAA2D,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAmS,UAAA;YAAA,kBAAAA,UAAA,CAAAjS,IAAA,GAAAiS,UAAA,CAAAvU,IAAA;cAAA;gBAAA,MACzBqU,KAAK,IAAIA,KAAK,CAACG,IAAI,CAACC,YAAY,CAACA,YAAY;kBAAAF,UAAA,CAAAvU,IAAA;kBAAA;gBAAA;gBACzCsU,UAAU,GAAGD,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,IAAI,CAACC,YAAY,CAACA,YAAY;gBAAA,MAEpDH,UAAU,CAAC/U,MAAM,KAAK,CAAC;kBAAAgV,UAAA,CAAAvU,IAAA;kBAAA;gBAAA;gBAAA,MACrBsU,UAAU,CAAC,CAAC,CAAC,CAACI,WAAW,KAAKC,mBAAW,CAACC,aAAa;kBAAAL,UAAA,CAAAvU,IAAA;kBAAA;gBAAA;gBAAA,OAAAuU,UAAA,CAAAzI,MAAA;cAAA;gBAK7D,KAASzN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiW,UAAU,CAAC/U,MAAM,EAAElB,CAAC,IAAI,CAAC,EAAE;kBAC7C,IAAIiW,UAAU,CAACjW,CAAC,CAAC,CAACqW,WAAW,KAAKC,mBAAW,CAACC,aAAa,EAAE;oBAC3DN,UAAU,CAACO,MAAM,CAACxW,CAAC,EAAE,CAAC,CAAC;kBACzB;gBACF;gBACAyV,MAAI,CAAC7D,IAAI,CAACC,iCAAyB,CAAC4E,iBAAiB,EAAET,KAAyB,CAAC;cAAC;cAAA;gBAAA,OAAAE,UAAA,CAAA/Q,IAAA;YAAA;UAAA,GAAA4Q,QAAA;QAAA,CAErF;QAAA,iBAAAW,EAAA;UAAA,OAAAZ,KAAA,CAAApT,KAAA,OAAAgH,SAAA;QAAA;MAAA,GACH,CAAC;IACH;;IAEA;AACF;AACA;AACA;EAHE;IAAA4B,GAAA;IAAA/J,KAAA;MAAA,IAAAoV,WAAA,OAAAjT,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAIA,SAAAgT,UAAA;QAAA,IAAAC,gBAAA,EAAAC,gBAAA;QAAA,IAAAhT,IAAA;QAAA,OAAAH,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAgT,UAAA;UAAA,kBAAAA,UAAA,CAAA9S,IAAA,GAAA8S,UAAA,CAAApV,IAAA;YAAA;cACE6C,eAAG,CAACY,IAAI,CAACC,+BAAoB,EAAE;gBAC7BX,IAAI,EAAEC,+BAAmB;gBACzBC,MAAM,EAAEC,mBAAO,CAACmS;cAClB,CAAC,CAAC;cACIlT,IAAI,GAAG,IAAImT,aAAI,CACnB,IAAI,CAAChU,KAAK,CAAC6H,QAAQ,CAACuJ,MAAM,CAAC6C,MAAM,EACjC,IAAI,CAACjU,KAAK,CAAC6H,QAAQ,CAACuJ,MAAM,CAACC,GAAG,EAC9B,IAAI,CAAC5M,KAAK,EACV,IAAI,CAACiD,iBAAiB,EACtB,IAAI,CAACC,gBAAgB,EACrB,IAAI,CAAC0K,eAAe,CAAC,CAAC,GAAAuB,gBAAA,GACtB,IAAI,CAACnO,SAAS,cAAAmO,gBAAA,uBAAdA,gBAAA,CAAgBlO,WAAW,GAAAmO,gBAAA,GAC3B,IAAI,CAACpO,SAAS,cAAAoO,gBAAA,uBAAdA,gBAAA,CAAgBK,GAClB,CAAC;cAED,IAAI,CAACnS,QAAQ,CAAClB,IAAI,CAACsT,MAAM,CAAC,GAAGtT,IAAI;YAAC;YAAA;cAAA,OAAAiT,UAAA,CAAA5R,IAAA;UAAA;QAAA,GAAAyR,SAAA;MAAA,CACnC;MAAA,SAjBapK,UAAUA,CAAA;QAAA,OAAAmK,WAAA,CAAAjU,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAV8C,UAAU;IAAA;IAmBxB;AACF;AACA;AACA;IAHE;EAAA;IAAAlB,GAAA;IAAA/J,KAAA,EAIA,SAAO8V,QAAQA,CAAA,EAA0B;MACvC,OAAO,IAAI,CAACrS,QAAQ;IACtB;;IAEA;AACF;AACA;EAFE;IAAAsG,GAAA;IAAA/J,KAAA,EAGA,SAAOqF,cAAcA,CAAA,EAA4B;MAC/C,IAAM0Q,WAAoC,GAAG,CAAC,CAAC;MAC/C,IAAMzJ,KAAK,GAAG,IAAI,CAAClH,WAAW,CAACC,cAAc,CAAC,CAAC;MAC/C,IAAAF,KAAA,CAAAvG,OAAA,EAAY0N,KAAK,CAAC,CAAC0J,OAAO,CAAC,UAACC,aAAa,EAAK;QAC5C,IAAM9W,IAAI,GAAGmN,KAAK,CAAC2J,aAAa,CAAC;QACjC,IAAI,CAACF,WAAW,CAAC5W,IAAI,CAAC0W,MAAM,CAAC,EAAE;UAC7BE,WAAW,CAAC5W,IAAI,CAAC0W,MAAM,CAAC,GAAG,EAAE;QAC/B;QACAE,WAAW,CAAC5W,IAAI,CAAC0W,MAAM,CAAC,CAACK,IAAI,CAAC/W,IAAI,CAAC;MACrC,CAAC,CAAC;MAEF,OAAO4W,WAAW;IACpB;;IAEA;AACF;AACA;EAFE;IAAAhM,GAAA;IAAA/J,KAAA,EAGA,SAAOmW,gBAAgBA,CAAA,EAAsB;MAC3C,IAAIC,WAAW;MACf,IAAM9J,KAAK,GAAG,IAAI,CAAClH,WAAW,CAACC,cAAc,CAAC,CAAC;MAE/C,IAAAF,KAAA,CAAAvG,OAAA,EAAY0N,KAAK,CAAC,CAAC0J,OAAO,CAAC,UAACC,aAAa,EAAK;QAC5C,IAAI3J,KAAK,CAAC2J,aAAa,CAAC,CAACI,WAAW,CAAC,CAAC,IAAI,CAAC/J,KAAK,CAAC2J,aAAa,CAAC,CAACK,MAAM,CAAC,CAAC,EAAE;UACxEF,WAAW,GAAG9J,KAAK,CAAC2J,aAAa,CAAC;QACpC;MACF,CAAC,CAAC;MAEF,OAAOG,WAAW;IACpB;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAArM,GAAA;IAAA/J,KAAA;MAAA,IAAAuW,YAAA,OAAApU,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAUA,SAAAmU,UAAA;QAAA,IAAAC,MAAA;QAAA,OAAArU,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAkU,UAAA;UAAA,kBAAAA,UAAA,CAAAhU,IAAA,GAAAgU,UAAA,CAAAtW,IAAA;YAAA;cAAAsW,UAAA,CAAAtW,IAAA;cAAA,OACuB,IAAAmQ,iBAAU,EAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YAAA;cAAnCkG,MAAM,GAAAC,UAAA,CAAA1T,IAAA;cAAA,IACPyT,MAAM;gBAAAC,UAAA,CAAAtW,IAAA;gBAAA;cAAA;cAAA,MACH,IAAIuW,KAAK,CAAC,8CAA8C,CAAC;YAAA;cAAA,OAAAD,UAAA,CAAAxK,MAAA,WAG1DuK,MAAM;YAAA;YAAA;cAAA,OAAAC,UAAA,CAAA9S,IAAA;UAAA;QAAA,GAAA4S,SAAA;MAAA,CACd;MAAA,SAPYjG,UAAUA,CAAA;QAAA,OAAAgG,YAAA,CAAApV,KAAA,OAAAgH,SAAA;MAAA;MAAA,OAAVoI,UAAU;IAAA;EAAA;AAAA,EAjrBUqG,cAAQ;AA2rB3C;AACA;AACA;AACA;AACA;AACO,IAAMC,YAAY,GAAArV,OAAA,CAAAqV,YAAA;EAAA,IAAAC,KAAA,OAAA3U,kBAAA,CAAAvD,OAAA,eAAAwD,YAAA,CAAAxD,OAAA,CAAAyD,IAAA,CAAG,SAAA0U,UAC1BrV,KAAe,EACfC,MAA4B;IAAA,IAAAqV,qBAAA;IAAA,OAAA5U,YAAA,CAAAxD,OAAA,CAAA4D,IAAA,WAAAyU,UAAA;MAAA,kBAAAA,UAAA,CAAAvU,IAAA,GAAAuU,UAAA,CAAA7W,IAAA;QAAA;UAEtB4W,qBAAqB,GAAG,IAAIzV,aAAa,CAACG,KAAK,EAAEC,MAAM,CAAC;UAAAsV,UAAA,CAAA7W,IAAA;UAAA,OACxD4W,qBAAqB,CAAC7L,IAAI,CAAC,CAAC;QAAA;UAAA,OAAA8L,UAAA,CAAA/K,MAAA,WAE3B8K,qBAAqB;QAAA;QAAA;UAAA,OAAAC,UAAA,CAAArT,IAAA;MAAA;IAAA,GAAAmT,SAAA;EAAA,CAC7B;EAAA,gBARYF,YAAYA,CAAAK,GAAA,EAAAC,GAAA;IAAA,OAAAL,KAAA,CAAA3V,KAAA,OAAAgH,SAAA;EAAA;AAAA,GAQxB","ignoreList":[]}