@nibssplc/cams-sdk-react 1.0.0-rc.9 → 1.0.0-rc.90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -4,6 +4,8 @@ var React = require('react');
4
4
  var camsSdk = require('@nibssplc/cams-sdk');
5
5
  var msalReact = require('@azure/msal-react');
6
6
  var msalBrowser = require('@azure/msal-browser');
7
+ var sonner = require('sonner');
8
+ var jsxRuntime = require('react/jsx-runtime');
7
9
  var z = require('zod');
8
10
  var inputOtp = require('input-otp');
9
11
  var lucideReact = require('lucide-react');
@@ -15,10 +17,7 @@ var reactSlot = require('@radix-ui/react-slot');
15
17
  var LabelPrimitive = require('@radix-ui/react-label');
16
18
  var classVarianceAuthority = require('class-variance-authority');
17
19
  var DialogPrimitive = require('@radix-ui/react-dialog');
18
- var sonner = require('sonner');
19
20
  var framerMotion = require('framer-motion');
20
- var axios = require('axios');
21
- var https = require('https');
22
21
 
23
22
  function _interopNamespaceDefault(e) {
24
23
  var n = Object.create(null);
@@ -81,7 +80,7 @@ function __rest(s, e) {
81
80
  return t;
82
81
  }
83
82
 
84
- function __awaiter(thisArg, _arguments, P, generator) {
83
+ function __awaiter$1(thisArg, _arguments, P, generator) {
85
84
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
86
85
  return new (P || (P = Promise))(function (resolve, reject) {
87
86
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -91,7 +90,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
91
90
  });
92
91
  }
93
92
 
94
- function __generator(thisArg, body) {
93
+ function __generator$1(thisArg, body) {
95
94
  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
96
95
  return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
97
96
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -188,10 +187,10 @@ function useCAMSAuth(options) {
188
187
  }
189
188
  }
190
189
  }, [options.storageKey]);
191
- var login = React.useCallback(function (config) { return __awaiter(_this, void 0, void 0, function () {
190
+ var login = React.useCallback(function (config) { return __awaiter$1(_this, void 0, void 0, function () {
192
191
  var loginConfig, userProfile, err_1, e, isPopupClosedError, restoredToken, userProfile;
193
192
  var _a, _b, _c;
194
- return __generator(this, function (_d) {
193
+ return __generator$1(this, function (_d) {
195
194
  switch (_d.label) {
196
195
  case 0:
197
196
  if (!sessionManagerRef.current)
@@ -239,8 +238,8 @@ function useCAMSAuth(options) {
239
238
  }
240
239
  });
241
240
  }); }, [options.idleTimeout]);
242
- var logout = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
243
- return __generator(this, function (_a) {
241
+ var logout = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
242
+ return __generator$1(this, function (_a) {
244
243
  switch (_a.label) {
245
244
  case 0:
246
245
  if (!sessionManagerRef.current)
@@ -270,11 +269,154 @@ function useCAMSAuth(options) {
270
269
  };
271
270
  }
272
271
 
273
- var setCookie$1 = function (name, value, days) {
272
+ var _a;
273
+ // Crypto polyfill for MSAL browser compatibility
274
+ // Only apply if crypto.subtle is completely missing
275
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
276
+ // Ensure crypto object exists
277
+ if (!window.crypto) {
278
+ window.crypto = {};
279
+ }
280
+ // Polyfill getRandomValues
281
+ if (!window.crypto.getRandomValues) {
282
+ window.crypto.getRandomValues = function (array) {
283
+ var bytes = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
284
+ for (var i = 0; i < bytes.length; i++) {
285
+ bytes[i] = Math.floor(Math.random() * 256);
286
+ }
287
+ return array;
288
+ };
289
+ }
290
+ var sha256_1 = function (data) { return __awaiter(void 0, void 0, void 0, function () {
291
+ var toUint8, bytes, hash, k, ml, msg, dv, high, low, i, w, j, j, s0, s1, a, b, c, d, e, f, g, h, j, S1, ch, temp1, S0, maj, temp2, result, i;
292
+ return __generator(this, function (_a) {
293
+ toUint8 = function (src) {
294
+ if (src instanceof ArrayBuffer)
295
+ return new Uint8Array(src);
296
+ if (ArrayBuffer.isView(src)) {
297
+ var view = src;
298
+ return new Uint8Array(view.buffer, view.byteOffset || 0, view.byteLength);
299
+ }
300
+ throw new TypeError("Unsupported BufferSource");
301
+ };
302
+ bytes = toUint8(data);
303
+ hash = new Uint32Array(8);
304
+ k = new Uint32Array([
305
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
306
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
307
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
308
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
309
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
310
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
311
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
312
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
313
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
314
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
315
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
316
+ ]);
317
+ hash[0] = 0x6a09e667;
318
+ hash[1] = 0xbb67ae85;
319
+ hash[2] = 0x3c6ef372;
320
+ hash[3] = 0xa54ff53a;
321
+ hash[4] = 0x510e527f;
322
+ hash[5] = 0x9b05688c;
323
+ hash[6] = 0x1f83d9ab;
324
+ hash[7] = 0x5be0cd19;
325
+ ml = bytes.length * 8;
326
+ msg = new Uint8Array(bytes.length + 64 + ((64 - ((bytes.length + 9) % 64)) % 64));
327
+ msg.set(bytes);
328
+ msg[bytes.length] = 0x80;
329
+ dv = new DataView(msg.buffer);
330
+ high = Math.floor(ml / 0x100000000);
331
+ low = ml >>> 0;
332
+ dv.setUint32(msg.length - 8, high, false);
333
+ dv.setUint32(msg.length - 4, low, false);
334
+ for (i = 0; i < msg.length; i += 64) {
335
+ w = new Uint32Array(64);
336
+ for (j = 0; j < 16; j++)
337
+ w[j] = new DataView(msg.buffer).getUint32(i + j * 4, false);
338
+ for (j = 16; j < 64; j++) {
339
+ s0 = ((w[j - 15] >>> 7) | (w[j - 15] << 25)) ^
340
+ ((w[j - 15] >>> 18) | (w[j - 15] << 14)) ^
341
+ (w[j - 15] >>> 3);
342
+ s1 = ((w[j - 2] >>> 17) | (w[j - 2] << 15)) ^
343
+ ((w[j - 2] >>> 19) | (w[j - 2] << 13)) ^
344
+ (w[j - 2] >>> 10);
345
+ w[j] = (w[j - 16] + s0 + w[j - 7] + s1) >>> 0;
346
+ }
347
+ a = hash[0], b = hash[1], c = hash[2], d = hash[3], e = hash[4], f = hash[5], g = hash[6], h = hash[7];
348
+ for (j = 0; j < 64; j++) {
349
+ S1 = ((e >>> 6) | (e << 26)) ^
350
+ ((e >>> 11) | (e << 21)) ^
351
+ ((e >>> 25) | (e << 7));
352
+ ch = (e & f) ^ (~e & g);
353
+ temp1 = (h + S1 + ch + k[j] + w[j]) >>> 0;
354
+ S0 = ((a >>> 2) | (a << 30)) ^
355
+ ((a >>> 13) | (a << 19)) ^
356
+ ((a >>> 22) | (a << 10));
357
+ maj = (a & b) ^ (a & c) ^ (b & c);
358
+ temp2 = (S0 + maj) >>> 0;
359
+ h = g;
360
+ g = f;
361
+ f = e;
362
+ e = (d + temp1) >>> 0;
363
+ d = c;
364
+ c = b;
365
+ b = a;
366
+ a = (temp1 + temp2) >>> 0;
367
+ }
368
+ hash[0] = (hash[0] + a) >>> 0;
369
+ hash[1] = (hash[1] + b) >>> 0;
370
+ hash[2] = (hash[2] + c) >>> 0;
371
+ hash[3] = (hash[3] + d) >>> 0;
372
+ hash[4] = (hash[4] + e) >>> 0;
373
+ hash[5] = (hash[5] + f) >>> 0;
374
+ hash[6] = (hash[6] + g) >>> 0;
375
+ hash[7] = (hash[7] + h) >>> 0;
376
+ }
377
+ result = new Uint8Array(32);
378
+ for (i = 0; i < 8; i++)
379
+ new DataView(result.buffer).setUint32(i * 4, hash[i], false);
380
+ return [2 /*return*/, result.buffer];
381
+ });
382
+ }); };
383
+ // Create the polyfilled subtle object
384
+ var polyfillSubtle = {
385
+ digest: function (algorithm, data) { return __awaiter(void 0, void 0, void 0, function () {
386
+ var alg;
387
+ return __generator(this, function (_a) {
388
+ alg = typeof algorithm === "string"
389
+ ? algorithm
390
+ : algorithm.name;
391
+ if (alg === "SHA-256")
392
+ return [2 /*return*/, sha256_1(data)];
393
+ throw new Error("Unsupported algorithm: ".concat(alg));
394
+ });
395
+ }); },
396
+ };
397
+ // Set the polyfilled subtle object
398
+ window.crypto.subtle = polyfillSubtle;
399
+ // Polyfill randomUUID
400
+ if (!window.crypto.randomUUID) {
401
+ window.crypto.randomUUID =
402
+ function () {
403
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
404
+ var r = (Math.random() * 16) | 0;
405
+ var v = c === "x" ? r : (r & 0x3) | 0x8;
406
+ return v.toString(16);
407
+ });
408
+ };
409
+ }
410
+ console.log("Crypto polyfill applied (native crypto.subtle not available)");
411
+ }
412
+
413
+ var setCookie = function (name, value, days) {
414
+ if (days === void 0) { days = 1; }
274
415
  var expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
416
+ console.log("Auth Cookie Expires >>>", { name: name, value: value, expires: expires });
275
417
  document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
276
418
  };
277
- var getCookie$1 = function (name) {
419
+ var getCookie = function (name) {
278
420
  var _a;
279
421
  return ((_a = document.cookie
280
422
  .split("; ")
@@ -285,23 +427,25 @@ var getCookie$1 = function (name) {
285
427
  .split("=")[1])
286
428
  : null;
287
429
  };
288
- var deleteCookie$1 = function (name) {
430
+ var deleteCookie = function (name) {
289
431
  document.cookie = name + "=; Max-Age=-99999999; path=/";
290
432
  };
291
433
 
292
434
  function useCAMSMSALAuth(options) {
293
435
  var _this = this;
294
- var storageKey = options.storageKey || "CAMS-MSAL-AUTH-SDK";
295
- var _a = msalReact.useMsal(), instance = _a.instance, inProgress = _a.inProgress, accounts = _a.accounts;
436
+ var optStorageKey = options.storageKey, optScopes = options.scopes, prompt = options.prompt, appCode = options.appCode, ValidateUserEndpoint = options.ValidateUserEndpoint, _a = options.activeCookiePeriod, activeCookiePeriod = _a === void 0 ? 1 : _a;
437
+ var storageKey = optStorageKey || "CAMS-MSAL-AUTH-SDK";
438
+ var _b = msalReact.useMsal(), instance = _b.instance, inProgress = _b.inProgress, accounts = _b.accounts;
296
439
  var account = msalReact.useAccount(accounts[0] || {});
297
- var _b = React.useState(null), error = _b[0], setError = _b[1];
298
- var _c = React.useState(""), idToken = _c[0], setIdToken = _c[1];
299
- var _d = React.useState(""), accessToken = _d[0], setAccessToken = _d[1];
300
- var _e = React.useState(null), mfaAuthenticator = _e[0], setMfaAuthenticator = _e[1];
301
- var _f = React.useState(false), requiresMFA = _f[0], setRequiresMFA = _f[1];
302
- var isLoading = inProgress !== msalBrowser.InteractionStatus.None;
303
- var isAuthenticated = !!account && !!accessToken && !requiresMFA;
304
- var scopes = options.scopes || ["openid", "profile", "email"];
440
+ var _c = React.useState(null), error = _c[0], setError = _c[1];
441
+ var _d = React.useState(""), idToken = _d[0], setIdToken = _d[1];
442
+ var _e = React.useState(""), accessToken = _e[0], setAccessToken = _e[1];
443
+ var _f = React.useState(""), email = _f[0], setEmail = _f[1];
444
+ var _g = React.useState(false), requiresMFA = _g[0], setRequiresMFA = _g[1];
445
+ var _h = React.useState(false), isFetchingMFAConfig = _h[0], setIsFetchingMFAConfig = _h[1];
446
+ var isLoading = inProgress !== msalBrowser.InteractionStatus.None || isFetchingMFAConfig;
447
+ var isAuthenticated = !!account && !!accessToken;
448
+ var scopes = optScopes || ["openid", "profile", "email"];
305
449
  var isTokenValid = function (token) {
306
450
  try {
307
451
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -317,23 +461,17 @@ function useCAMSMSALAuth(options) {
317
461
  if (stored) {
318
462
  try {
319
463
  var _a = JSON.parse(stored), accessToken_1 = _a.accessToken, idToken_1 = _a.idToken, storedRequiresMFA = _a.requiresMFA, storedIsAuthenticated = _a.isAuthenticated;
464
+ // Restore MFA state
320
465
  if (accessToken_1 && isTokenValid(accessToken_1)) {
321
466
  setAccessToken(accessToken_1);
322
467
  setIdToken(idToken_1);
323
- // Restore MFA state
324
- if (storedRequiresMFA && !storedIsAuthenticated) {
325
- var mfaConfig = {
326
- accessToken: accessToken_1,
327
- idToken: idToken_1,
328
- appCode: options.appCode,
329
- provider: "MSAL",
330
- apiEndpoint: options.MFAEndpoint,
331
- };
332
- var authenticator = new camsSdk.CAMSMFAAuthenticator(mfaConfig);
333
- setMfaAuthenticator(authenticator);
334
- setRequiresMFA(true);
335
- }
336
- camsSdk.Logger.debug("App Code", { ">>>": options.appCode });
468
+ setRequiresMFA(storedRequiresMFA);
469
+ camsSdk.Logger.debug("Restored authentication state from storage", {
470
+ accessToken: accessToken_1,
471
+ idToken: idToken_1,
472
+ requiresMFA: storedRequiresMFA,
473
+ isAuthenticated: storedIsAuthenticated,
474
+ });
337
475
  }
338
476
  else {
339
477
  localStorage.removeItem(storageKey);
@@ -341,88 +479,77 @@ function useCAMSMSALAuth(options) {
341
479
  }
342
480
  catch (_b) { }
343
481
  }
344
- else if (account) {
345
- // Storage cleared but MSAL account exists - clear MSAL state
346
- instance.logoutRedirect().catch(function () { });
347
- }
348
482
  }
349
483
  }, [accessToken, account, instance, options.storageKey]);
350
- // useEffect(() => {
351
- // const handleRedirect = async () => {
352
- // try {
353
- // const response = await instance.handleRedirectPromise();
354
- // if (response) {
355
- // const account = response.account;
356
- // instance.setActiveA ccount(account);
357
- // const tokenResponse = await instance.acq uireTokenSilent({
358
- // scopes,
359
- // account,
360
- // });
361
- // setToken(tokenResponse.accessToken);
362
- // setAccessToken(tokenResponse.accessToken);
363
- // setIdToken(tokenResponse.idTo ken);
364
- // options.onAuthSuccess?.(tokenR esponse.accessToken);
365
- // if (
366
- // typeof window !== "undefined" &&
367
- // process.env.NODE_ENV !== "test"
368
- // ) {
369
- // window.location.href = options.mfaUrl!;
370
- // }
371
- // }
372
- // } catch (err) {
373
- // console.error("Redirect handling failed:", err);
374
- // }
375
- // };
376
- // handleRedirect();
377
- // }, []);
378
- var login = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
379
- var response, mfaConfig, authenticator, err_1, camsError_1, camsError;
380
- var _a, _b, _c, _d;
381
- return __generator(this, function (_e) {
382
- switch (_e.label) {
484
+ var login = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
485
+ var response, authenticator, userConfig, camsError, err_1, camsError_1, camsError;
486
+ var _a, _b;
487
+ return __generator$1(this, function (_c) {
488
+ switch (_c.label) {
383
489
  case 0:
490
+ if (inProgress !== msalBrowser.InteractionStatus.None) {
491
+ camsSdk.Logger.warn("Authentication already in progress, ignoring duplicate call");
492
+ return [2 /*return*/];
493
+ }
384
494
  setError(null);
385
- _e.label = 1;
495
+ _c.label = 1;
386
496
  case 1:
387
- _e.trys.push([1, 3, , 4]);
497
+ _c.trys.push([1, 4, , 5]);
388
498
  return [4 /*yield*/, instance.loginPopup({
389
499
  scopes: scopes,
390
- prompt: options.prompt || "login",
500
+ prompt: prompt || "login",
391
501
  })];
392
502
  case 2:
393
- response = _e.sent();
394
- console.log("Login Token response:", {
395
- accessToken: response.accessToken,
396
- idToken: response.idToken,
503
+ response = _c.sent();
504
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
505
+ setIsFetchingMFAConfig(true);
506
+ return [4 /*yield*/, authenticator.GetUserMFAConfig({
507
+ accessToken: response.accessToken,
508
+ idToken: response.idToken,
509
+ provider: "MSAL",
510
+ APIAuthEndpoint: ValidateUserEndpoint,
511
+ })];
512
+ case 3:
513
+ userConfig = _c.sent();
514
+ setIsFetchingMFAConfig(false);
515
+ camsSdk.Logger.info("CAMS MFA Authenticator initialized. MSAL User Auth is Completed...", {
516
+ userConfig: userConfig,
517
+ storageKey: storageKey,
518
+ email: userConfig.userInfo.email,
397
519
  });
398
- setAccessToken(response.accessToken);
399
- setIdToken(response.idToken);
400
- mfaConfig = {
401
- accessToken: response.accessToken,
402
- idToken: response.idToken,
403
- appCode: options.appCode,
404
- provider: "MSAL",
405
- apiEndpoint: options.MFAEndpoint,
406
- };
407
- authenticator = new camsSdk.CAMSMFAAuthenticator(mfaConfig);
408
- setMfaAuthenticator(authenticator);
409
- setRequiresMFA(true);
410
520
  // Don't persist as authenticated until MFA is complete
411
- if (typeof window !== "undefined") {
521
+ if (userConfig.isValid && userConfig.userInfo.email) {
522
+ setAccessToken(response.accessToken);
523
+ setIdToken(response.idToken);
412
524
  localStorage.setItem(storageKey, JSON.stringify({
413
- isAuthenticated: false,
414
- requiresMFA: true,
525
+ isAuthenticated: !userConfig.userInfo.isMFAEnabled,
526
+ requiresMFA: userConfig.userInfo.isMFAEnabled,
415
527
  accessToken: response.accessToken,
416
528
  idToken: response.idToken,
417
529
  }));
530
+ setEmail(userConfig.userInfo.email);
531
+ setRequiresMFA(userConfig.userInfo.isMFAEnabled);
532
+ }
533
+ else {
534
+ camsError = new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + userConfig.message);
535
+ sonner.toast.error((_a = userConfig.message) !== null && _a !== void 0 ? _a : "Login failed");
536
+ camsSdk.Logger.error("Login failed: " + userConfig.message);
537
+ setError(camsError);
538
+ setIsFetchingMFAConfig(false);
539
+ }
540
+ return [3 /*break*/, 5];
541
+ case 4:
542
+ err_1 = _c.sent();
543
+ // Handle interaction_in_progress error
544
+ if (err_1.errorCode === "interaction_in_progress") {
545
+ camsSdk.Logger.warn("Interaction already in progress, please wait");
546
+ sonner.toast.error("Interaction already in progress, please wait");
547
+ return [2 /*return*/];
418
548
  }
419
- (_a = options.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(options, response.accessToken);
420
- return [3 /*break*/, 4];
421
- case 3:
422
- err_1 = _e.sent();
423
549
  // Handle user cancellation gracefully
424
550
  if (err_1.errorCode === "user_cancelled") {
425
551
  camsSdk.Logger.error("User cancelled login");
552
+ sonner.toast.error("User cancelled login");
426
553
  setError(null); // Don't treat cancellation as an error
427
554
  return [2 /*return*/];
428
555
  }
@@ -430,23 +557,28 @@ function useCAMSMSALAuth(options) {
430
557
  if (err_1.errorCode === "popup_window_error" ||
431
558
  ((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.includes("popup"))) {
432
559
  camsError_1 = new camsSdk.CAMSError(camsSdk.CAMSErrorType.POPUP_BLOCKED, "Popup blocked by browser. Please allow popups and try again.");
560
+ sonner.toast.error(camsError_1.message);
433
561
  setError(camsError_1);
434
- (_c = options.onAuthError) === null || _c === void 0 ? void 0 : _c.call(options, camsError_1);
435
562
  return [2 /*return*/];
436
563
  }
437
564
  camsError = new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + err_1.message || err_1);
438
565
  setError(camsError);
439
- (_d = options.onAuthError) === null || _d === void 0 ? void 0 : _d.call(options, camsError);
440
- return [3 /*break*/, 4];
441
- case 4: return [2 /*return*/];
566
+ setIsFetchingMFAConfig(false);
567
+ return [3 /*break*/, 5];
568
+ case 5: return [2 /*return*/];
442
569
  }
443
570
  });
444
- }); }, [instance, scopes, options]);
445
- var completeMFA = React.useCallback(function (data) { return __awaiter(_this, void 0, void 0, function () {
446
- return __generator(this, function (_a) {
447
- if (!mfaAuthenticator) {
448
- throw new camsSdk.CAMSError(camsSdk.CAMSErrorType.API_VALIDATION_ERROR, "MFA Authenticator not initialized");
449
- }
571
+ }); }, [
572
+ instance,
573
+ scopes,
574
+ prompt,
575
+ appCode,
576
+ ValidateUserEndpoint,
577
+ storageKey,
578
+ inProgress,
579
+ ]);
580
+ var completeMFA = React.useCallback(function (data) { return __awaiter$1(_this, void 0, void 0, function () {
581
+ return __generator$1(this, function (_a) {
450
582
  camsSdk.Logger.info("Completed MFA.. Setting State");
451
583
  try {
452
584
  // Update storage with complete authentication BEFORE setting state
@@ -457,7 +589,11 @@ function useCAMSMSALAuth(options) {
457
589
  accessToken: accessToken,
458
590
  idToken: idToken,
459
591
  }));
460
- setCookie$1("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({ type: "AUTH_SUCCESS", userProfile: __assign({}, data) }), 1);
592
+ setCookie("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({
593
+ state: "AUTH_SUCCESS",
594
+ role: data.userInfo.role,
595
+ profile: __assign({}, data),
596
+ }), activeCookiePeriod);
461
597
  setRequiresMFA(false);
462
598
  // Set requiresMFA to false after storage update
463
599
  camsSdk.Logger.debug("MFA completed successfully, storage updated", {
@@ -476,38 +612,36 @@ function useCAMSMSALAuth(options) {
476
612
  }
477
613
  return [2 /*return*/];
478
614
  });
479
- }); }, [mfaAuthenticator, accessToken, idToken, storageKey]);
480
- var sendEmailOTP = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
481
- return __generator(this, function (_a) {
615
+ }); }, [accessToken, idToken, storageKey, activeCookiePeriod]);
616
+ var LoginADCredentials = React.useCallback(function (credentials, appCode, CredentialsAuthEndpoint) { return __awaiter$1(_this, void 0, void 0, function () {
617
+ var authenticator;
618
+ return __generator$1(this, function (_a) {
482
619
  switch (_a.label) {
483
620
  case 0:
484
- if (!mfaAuthenticator) {
485
- return [2 /*return*/, false];
486
- }
487
- return [4 /*yield*/, mfaAuthenticator.sendEmailOTP()];
621
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
622
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
488
623
  case 1: return [2 /*return*/, _a.sent()];
489
624
  }
490
625
  });
491
- }); }, [mfaAuthenticator]);
492
- var logout = React.useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
626
+ }); }, []);
627
+ var logout = React.useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
493
628
  var err_2, camsError;
494
- return __generator(this, function (_a) {
629
+ return __generator$1(this, function (_a) {
495
630
  switch (_a.label) {
496
631
  case 0:
497
632
  _a.trys.push([0, 2, , 3]);
498
633
  camsSdk.Logger.info("Logging User Out");
499
- return [4 /*yield*/, instance.logoutRedirect()];
500
- case 1:
501
- _a.sent();
502
634
  setAccessToken("");
503
635
  setIdToken("");
504
636
  setError(null);
505
- setMfaAuthenticator(null);
506
637
  setRequiresMFA(false);
507
638
  if (typeof window !== "undefined") {
508
639
  localStorage.removeItem(storageKey);
509
- // deleteCookie("CAMS-MSAL-AUTH-SDK-PROFILE");
640
+ deleteCookie(storageKey + "-PROFILE");
510
641
  }
642
+ return [4 /*yield*/, instance.logoutRedirect()];
643
+ case 1:
644
+ _a.sent();
511
645
  return [3 /*break*/, 3];
512
646
  case 2:
513
647
  err_2 = _a.sent();
@@ -525,14 +659,15 @@ function useCAMSMSALAuth(options) {
525
659
  isAuthenticated: isAuthenticated,
526
660
  isLoading: isLoading,
527
661
  error: error,
662
+ email: email,
528
663
  idToken: idToken,
529
664
  accessToken: accessToken,
530
- appCode: options.appCode,
531
- mfaAuthenticator: mfaAuthenticator,
665
+ appCode: appCode,
532
666
  requiresMFA: requiresMFA,
533
667
  completeMFA: completeMFA,
534
- sendEmailOTP: sendEmailOTP,
668
+ LoginADCredentials: LoginADCredentials,
535
669
  setRequiresMFA: setRequiresMFA,
670
+ activeCookiePeriod: activeCookiePeriod,
536
671
  };
537
672
  }
538
673
 
@@ -575,10 +710,10 @@ function arrayBufferToBase64url(buffer) {
575
710
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
576
711
  */
577
712
  function register(options) {
578
- return __awaiter(this, void 0, void 0, function () {
713
+ return __awaiter$1(this, void 0, void 0, function () {
579
714
  var createOptions, credential, publicKeyCredential, attestationResponse, transports, err_1;
580
715
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
581
- return __generator(this, function (_k) {
716
+ return __generator$1(this, function (_k) {
582
717
  switch (_k.label) {
583
718
  case 0:
584
719
  _k.trys.push([0, 2, , 3]);
@@ -636,10 +771,10 @@ function register(options) {
636
771
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
637
772
  */
638
773
  function authenticate(options) {
639
- return __awaiter(this, void 0, void 0, function () {
774
+ return __awaiter$1(this, void 0, void 0, function () {
640
775
  var getOptions, credential, publicKeyCredential, assertionResponse;
641
776
  var _a;
642
- return __generator(this, function (_b) {
777
+ return __generator$1(this, function (_b) {
643
778
  switch (_b.label) {
644
779
  case 0:
645
780
  getOptions = __assign(__assign({}, options), { challenge: base64urlToArrayBuffer(options.challenge), allowCredentials: (_a = options.allowCredentials) === null || _a === void 0 ? void 0 : _a.map(function (cred) { return (__assign(__assign({}, cred), { id: base64urlToArrayBuffer(cred.id) })); }) });
@@ -680,425 +815,6 @@ var useWebAuthn = function () {
680
815
  };
681
816
  };
682
817
 
683
- var jsxRuntime = {exports: {}};
684
-
685
- var reactJsxRuntime_production = {};
686
-
687
- /**
688
- * @license React
689
- * react-jsx-runtime.production.js
690
- *
691
- * Copyright (c) Meta Platforms, Inc. and affiliates.
692
- *
693
- * This source code is licensed under the MIT license found in the
694
- * LICENSE file in the root directory of this source tree.
695
- */
696
-
697
- var hasRequiredReactJsxRuntime_production;
698
-
699
- function requireReactJsxRuntime_production () {
700
- if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
701
- hasRequiredReactJsxRuntime_production = 1;
702
- var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
703
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
704
- function jsxProd(type, config, maybeKey) {
705
- var key = null;
706
- void 0 !== maybeKey && (key = "" + maybeKey);
707
- void 0 !== config.key && (key = "" + config.key);
708
- if ("key" in config) {
709
- maybeKey = {};
710
- for (var propName in config)
711
- "key" !== propName && (maybeKey[propName] = config[propName]);
712
- } else maybeKey = config;
713
- config = maybeKey.ref;
714
- return {
715
- $$typeof: REACT_ELEMENT_TYPE,
716
- type: type,
717
- key: key,
718
- ref: void 0 !== config ? config : null,
719
- props: maybeKey
720
- };
721
- }
722
- reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
723
- reactJsxRuntime_production.jsx = jsxProd;
724
- reactJsxRuntime_production.jsxs = jsxProd;
725
- return reactJsxRuntime_production;
726
- }
727
-
728
- var reactJsxRuntime_development = {};
729
-
730
- /**
731
- * @license React
732
- * react-jsx-runtime.development.js
733
- *
734
- * Copyright (c) Meta Platforms, Inc. and affiliates.
735
- *
736
- * This source code is licensed under the MIT license found in the
737
- * LICENSE file in the root directory of this source tree.
738
- */
739
-
740
- var hasRequiredReactJsxRuntime_development;
741
-
742
- function requireReactJsxRuntime_development () {
743
- if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;
744
- hasRequiredReactJsxRuntime_development = 1;
745
- "production" !== process.env.NODE_ENV &&
746
- (function () {
747
- function getComponentNameFromType(type) {
748
- if (null == type) return null;
749
- if ("function" === typeof type)
750
- return type.$$typeof === REACT_CLIENT_REFERENCE
751
- ? null
752
- : type.displayName || type.name || null;
753
- if ("string" === typeof type) return type;
754
- switch (type) {
755
- case REACT_FRAGMENT_TYPE:
756
- return "Fragment";
757
- case REACT_PROFILER_TYPE:
758
- return "Profiler";
759
- case REACT_STRICT_MODE_TYPE:
760
- return "StrictMode";
761
- case REACT_SUSPENSE_TYPE:
762
- return "Suspense";
763
- case REACT_SUSPENSE_LIST_TYPE:
764
- return "SuspenseList";
765
- case REACT_ACTIVITY_TYPE:
766
- return "Activity";
767
- }
768
- if ("object" === typeof type)
769
- switch (
770
- ("number" === typeof type.tag &&
771
- console.error(
772
- "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
773
- ),
774
- type.$$typeof)
775
- ) {
776
- case REACT_PORTAL_TYPE:
777
- return "Portal";
778
- case REACT_CONTEXT_TYPE:
779
- return (type.displayName || "Context") + ".Provider";
780
- case REACT_CONSUMER_TYPE:
781
- return (type._context.displayName || "Context") + ".Consumer";
782
- case REACT_FORWARD_REF_TYPE:
783
- var innerType = type.render;
784
- type = type.displayName;
785
- type ||
786
- ((type = innerType.displayName || innerType.name || ""),
787
- (type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"));
788
- return type;
789
- case REACT_MEMO_TYPE:
790
- return (
791
- (innerType = type.displayName || null),
792
- null !== innerType
793
- ? innerType
794
- : getComponentNameFromType(type.type) || "Memo"
795
- );
796
- case REACT_LAZY_TYPE:
797
- innerType = type._payload;
798
- type = type._init;
799
- try {
800
- return getComponentNameFromType(type(innerType));
801
- } catch (x) {}
802
- }
803
- return null;
804
- }
805
- function testStringCoercion(value) {
806
- return "" + value;
807
- }
808
- function checkKeyStringCoercion(value) {
809
- try {
810
- testStringCoercion(value);
811
- var JSCompiler_inline_result = !1;
812
- } catch (e) {
813
- JSCompiler_inline_result = true;
814
- }
815
- if (JSCompiler_inline_result) {
816
- JSCompiler_inline_result = console;
817
- var JSCompiler_temp_const = JSCompiler_inline_result.error;
818
- var JSCompiler_inline_result$jscomp$0 =
819
- ("function" === typeof Symbol &&
820
- Symbol.toStringTag &&
821
- value[Symbol.toStringTag]) ||
822
- value.constructor.name ||
823
- "Object";
824
- JSCompiler_temp_const.call(
825
- JSCompiler_inline_result,
826
- "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
827
- JSCompiler_inline_result$jscomp$0
828
- );
829
- return testStringCoercion(value);
830
- }
831
- }
832
- function getTaskName(type) {
833
- if (type === REACT_FRAGMENT_TYPE) return "<>";
834
- if (
835
- "object" === typeof type &&
836
- null !== type &&
837
- type.$$typeof === REACT_LAZY_TYPE
838
- )
839
- return "<...>";
840
- try {
841
- var name = getComponentNameFromType(type);
842
- return name ? "<" + name + ">" : "<...>";
843
- } catch (x) {
844
- return "<...>";
845
- }
846
- }
847
- function getOwner() {
848
- var dispatcher = ReactSharedInternals.A;
849
- return null === dispatcher ? null : dispatcher.getOwner();
850
- }
851
- function UnknownOwner() {
852
- return Error("react-stack-top-frame");
853
- }
854
- function hasValidKey(config) {
855
- if (hasOwnProperty.call(config, "key")) {
856
- var getter = Object.getOwnPropertyDescriptor(config, "key").get;
857
- if (getter && getter.isReactWarning) return false;
858
- }
859
- return void 0 !== config.key;
860
- }
861
- function defineKeyPropWarningGetter(props, displayName) {
862
- function warnAboutAccessingKey() {
863
- specialPropKeyWarningShown ||
864
- ((specialPropKeyWarningShown = true),
865
- console.error(
866
- "%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",
867
- displayName
868
- ));
869
- }
870
- warnAboutAccessingKey.isReactWarning = true;
871
- Object.defineProperty(props, "key", {
872
- get: warnAboutAccessingKey,
873
- configurable: true
874
- });
875
- }
876
- function elementRefGetterWithDeprecationWarning() {
877
- var componentName = getComponentNameFromType(this.type);
878
- didWarnAboutElementRef[componentName] ||
879
- ((didWarnAboutElementRef[componentName] = true),
880
- console.error(
881
- "Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."
882
- ));
883
- componentName = this.props.ref;
884
- return void 0 !== componentName ? componentName : null;
885
- }
886
- function ReactElement(
887
- type,
888
- key,
889
- self,
890
- source,
891
- owner,
892
- props,
893
- debugStack,
894
- debugTask
895
- ) {
896
- self = props.ref;
897
- type = {
898
- $$typeof: REACT_ELEMENT_TYPE,
899
- type: type,
900
- key: key,
901
- props: props,
902
- _owner: owner
903
- };
904
- null !== (void 0 !== self ? self : null)
905
- ? Object.defineProperty(type, "ref", {
906
- enumerable: false,
907
- get: elementRefGetterWithDeprecationWarning
908
- })
909
- : Object.defineProperty(type, "ref", { enumerable: false, value: null });
910
- type._store = {};
911
- Object.defineProperty(type._store, "validated", {
912
- configurable: false,
913
- enumerable: false,
914
- writable: true,
915
- value: 0
916
- });
917
- Object.defineProperty(type, "_debugInfo", {
918
- configurable: false,
919
- enumerable: false,
920
- writable: true,
921
- value: null
922
- });
923
- Object.defineProperty(type, "_debugStack", {
924
- configurable: false,
925
- enumerable: false,
926
- writable: true,
927
- value: debugStack
928
- });
929
- Object.defineProperty(type, "_debugTask", {
930
- configurable: false,
931
- enumerable: false,
932
- writable: true,
933
- value: debugTask
934
- });
935
- Object.freeze && (Object.freeze(type.props), Object.freeze(type));
936
- return type;
937
- }
938
- function jsxDEVImpl(
939
- type,
940
- config,
941
- maybeKey,
942
- isStaticChildren,
943
- source,
944
- self,
945
- debugStack,
946
- debugTask
947
- ) {
948
- var children = config.children;
949
- if (void 0 !== children)
950
- if (isStaticChildren)
951
- if (isArrayImpl(children)) {
952
- for (
953
- isStaticChildren = 0;
954
- isStaticChildren < children.length;
955
- isStaticChildren++
956
- )
957
- validateChildKeys(children[isStaticChildren]);
958
- Object.freeze && Object.freeze(children);
959
- } else
960
- console.error(
961
- "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
962
- );
963
- else validateChildKeys(children);
964
- if (hasOwnProperty.call(config, "key")) {
965
- children = getComponentNameFromType(type);
966
- var keys = Object.keys(config).filter(function (k) {
967
- return "key" !== k;
968
- });
969
- isStaticChildren =
970
- 0 < keys.length
971
- ? "{key: someKey, " + keys.join(": ..., ") + ": ...}"
972
- : "{key: someKey}";
973
- didWarnAboutKeySpread[children + isStaticChildren] ||
974
- ((keys =
975
- 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}"),
976
- console.error(
977
- 'A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />',
978
- isStaticChildren,
979
- children,
980
- keys,
981
- children
982
- ),
983
- (didWarnAboutKeySpread[children + isStaticChildren] = true));
984
- }
985
- children = null;
986
- void 0 !== maybeKey &&
987
- (checkKeyStringCoercion(maybeKey), (children = "" + maybeKey));
988
- hasValidKey(config) &&
989
- (checkKeyStringCoercion(config.key), (children = "" + config.key));
990
- if ("key" in config) {
991
- maybeKey = {};
992
- for (var propName in config)
993
- "key" !== propName && (maybeKey[propName] = config[propName]);
994
- } else maybeKey = config;
995
- children &&
996
- defineKeyPropWarningGetter(
997
- maybeKey,
998
- "function" === typeof type
999
- ? type.displayName || type.name || "Unknown"
1000
- : type
1001
- );
1002
- return ReactElement(
1003
- type,
1004
- children,
1005
- self,
1006
- source,
1007
- getOwner(),
1008
- maybeKey,
1009
- debugStack,
1010
- debugTask
1011
- );
1012
- }
1013
- function validateChildKeys(node) {
1014
- "object" === typeof node &&
1015
- null !== node &&
1016
- node.$$typeof === REACT_ELEMENT_TYPE &&
1017
- node._store &&
1018
- (node._store.validated = 1);
1019
- }
1020
- var React$1 = React,
1021
- REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
1022
- REACT_PORTAL_TYPE = Symbol.for("react.portal"),
1023
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
1024
- REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
1025
- REACT_PROFILER_TYPE = Symbol.for("react.profiler");
1026
- var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
1027
- REACT_CONTEXT_TYPE = Symbol.for("react.context"),
1028
- REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
1029
- REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
1030
- REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
1031
- REACT_MEMO_TYPE = Symbol.for("react.memo"),
1032
- REACT_LAZY_TYPE = Symbol.for("react.lazy"),
1033
- REACT_ACTIVITY_TYPE = Symbol.for("react.activity"),
1034
- REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"),
1035
- ReactSharedInternals =
1036
- React$1.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
1037
- hasOwnProperty = Object.prototype.hasOwnProperty,
1038
- isArrayImpl = Array.isArray,
1039
- createTask = console.createTask
1040
- ? console.createTask
1041
- : function () {
1042
- return null;
1043
- };
1044
- React$1 = {
1045
- react_stack_bottom_frame: function (callStackForError) {
1046
- return callStackForError();
1047
- }
1048
- };
1049
- var specialPropKeyWarningShown;
1050
- var didWarnAboutElementRef = {};
1051
- var unknownOwnerDebugStack = React$1.react_stack_bottom_frame.bind(
1052
- React$1,
1053
- UnknownOwner
1054
- )();
1055
- var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
1056
- var didWarnAboutKeySpread = {};
1057
- reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
1058
- reactJsxRuntime_development.jsx = function (type, config, maybeKey, source, self) {
1059
- var trackActualOwner =
1060
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1061
- return jsxDEVImpl(
1062
- type,
1063
- config,
1064
- maybeKey,
1065
- false,
1066
- source,
1067
- self,
1068
- trackActualOwner
1069
- ? Error("react-stack-top-frame")
1070
- : unknownOwnerDebugStack,
1071
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1072
- );
1073
- };
1074
- reactJsxRuntime_development.jsxs = function (type, config, maybeKey, source, self) {
1075
- var trackActualOwner =
1076
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1077
- return jsxDEVImpl(
1078
- type,
1079
- config,
1080
- maybeKey,
1081
- true,
1082
- source,
1083
- self,
1084
- trackActualOwner
1085
- ? Error("react-stack-top-frame")
1086
- : unknownOwnerDebugStack,
1087
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1088
- );
1089
- };
1090
- })();
1091
- return reactJsxRuntime_development;
1092
- }
1093
-
1094
- if (process.env.NODE_ENV === 'production') {
1095
- jsxRuntime.exports = requireReactJsxRuntime_production();
1096
- } else {
1097
- jsxRuntime.exports = requireReactJsxRuntime_development();
1098
- }
1099
-
1100
- var jsxRuntimeExports = jsxRuntime.exports;
1101
-
1102
818
  var CAMSContext$1 = React.createContext(null);
1103
819
  function useCAMSContext$1() {
1104
820
  var context = React.useContext(CAMSContext$1);
@@ -1112,37 +828,19 @@ function ProtectedRoute(_a) {
1112
828
  var children = _a.children, fallback = _a.fallback, redirectTo = _a.redirectTo;
1113
829
  var _b = useCAMSContext$1(), isAuthenticated = _b.isAuthenticated, isLoading = _b.isLoading;
1114
830
  if (isLoading) {
1115
- return fallback || jsxRuntimeExports.jsx("div", { children: "Loading..." });
831
+ return fallback || jsxRuntime.jsx("div", { className: 'h-screen flex items-center justify-center', children: "Loading..." });
1116
832
  }
1117
833
  if (!isAuthenticated) {
1118
834
  if (redirectTo && typeof window !== 'undefined') {
1119
835
  window.location.href = redirectTo;
1120
836
  return null;
1121
837
  }
1122
- return fallback || jsxRuntimeExports.jsx("div", { children: "Access denied. Please log in." });
838
+ return fallback || jsxRuntime.jsx("div", { children: "Access denied. Please log in." });
1123
839
  }
1124
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
840
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1125
841
  }
1126
842
 
1127
843
  var CAMSMSALContext = React.createContext(null);
1128
- var setCookie = function (name, value, days) {
1129
- var expires = new Date(Date.now() + days * 864e5).toUTCString();
1130
- document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
1131
- };
1132
- var getCookie = function (name) {
1133
- var _a;
1134
- return ((_a = document.cookie
1135
- .split("; ")
1136
- .find(function (row) { return row.startsWith(name + "="); })) === null || _a === void 0 ? void 0 : _a.split("=")[1])
1137
- ? decodeURIComponent(document.cookie
1138
- .split("; ")
1139
- .find(function (row) { return row.startsWith(name + "="); })
1140
- .split("=")[1])
1141
- : null;
1142
- };
1143
- var deleteCookie = function (name) {
1144
- document.cookie = name + "=; Max-Age=-99999999; path=/";
1145
- };
1146
844
  var isTokenValid = function (token) {
1147
845
  try {
1148
846
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -1191,7 +889,7 @@ function CAMSMSALProviderInner(_a) {
1191
889
  localStorage.setItem(auth.storageKey, JSON.stringify({
1192
890
  accessToken: auth.accessToken,
1193
891
  idToken: auth.idToken,
1194
- appCode: auth.appCode
892
+ appCode: auth.appCode,
1195
893
  }));
1196
894
  }
1197
895
  }, [auth.accessToken, auth.idToken, auth.storageKey]);
@@ -1207,8 +905,8 @@ function CAMSMSALProviderInner(_a) {
1207
905
  }
1208
906
  }, [userProfile, profileStorageKey]);
1209
907
  // Enhanced logout that also clears profile
1210
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1211
- return __generator(this, function (_a) {
908
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
909
+ return __generator$1(this, function (_a) {
1212
910
  switch (_a.label) {
1213
911
  case 0: return [4 /*yield*/, auth.logout()];
1214
912
  case 1:
@@ -1222,12 +920,17 @@ function CAMSMSALProviderInner(_a) {
1222
920
  });
1223
921
  }); };
1224
922
  var value = React.useMemo(function () { return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile })); }, [auth, userProfile]);
1225
- return (jsxRuntimeExports.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
923
+ return (jsxRuntime.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
1226
924
  }
1227
925
  function CAMSMSALProvider(props) {
926
+ var _a;
1228
927
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
928
+ // Ensure crypto is available before creating MSAL instance
929
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
930
+ throw new Error("Crypto API not available. Polyfill failed to load.");
931
+ }
1229
932
  var instance = msalInstance || new msalBrowser.PublicClientApplication(msalConfig);
1230
- return (jsxRuntimeExports.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
933
+ return (jsxRuntime.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntime.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
1231
934
  }
1232
935
  function useCAMSMSALContext() {
1233
936
  var context = React.useContext(CAMSMSALContext);
@@ -1244,9 +947,9 @@ var ClientOnly = function (_a) {
1244
947
  setHasMounted(true);
1245
948
  }, []);
1246
949
  if (!hasMounted) {
1247
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: fallback });
950
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: fallback });
1248
951
  }
1249
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
952
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1250
953
  };
1251
954
 
1252
955
  var CAMSContext = React.createContext(null);
@@ -1267,15 +970,15 @@ function CAMSProviderCore(props) {
1267
970
  ? __assign(__assign({}, props), { appCode: appCode })
1268
971
  : { appCode: "" });
1269
972
  var msalAuth = useCAMSMSALAuth(mode === "MSAL"
1270
- ? __assign(__assign({}, props), { appCode: appCode })
1271
- : { appCode: "" });
973
+ ? __assign(__assign({}, props), { appCode: appCode, ValidateUserEndpoint: props.ValidateUserEndpoint })
974
+ : { appCode: "", ValidateUserEndpoint: "" });
1272
975
  var auth = mode === "REGULAR" ? regularAuth : msalAuth;
1273
976
  var profileStorageKey = "".concat(auth.storageKey, "-PROFILE");
1274
977
  var getInitialProfile = function () {
1275
978
  if (typeof window === "undefined")
1276
979
  return null;
1277
980
  try {
1278
- var storedProfile = getCookie$1(profileStorageKey);
981
+ var storedProfile = getCookie(profileStorageKey);
1279
982
  return storedProfile ? JSON.parse(storedProfile) : null;
1280
983
  }
1281
984
  catch (_a) {
@@ -1285,7 +988,7 @@ function CAMSProviderCore(props) {
1285
988
  var _a = React.useState(getInitialProfile), userProfile = _a[0], setUserProfile = _a[1];
1286
989
  React.useEffect(function () {
1287
990
  if (typeof window !== "undefined") {
1288
- var storedProfile = getCookie$1(profileStorageKey);
991
+ var storedProfile = getCookie(profileStorageKey);
1289
992
  if (storedProfile) {
1290
993
  try {
1291
994
  setUserProfile(JSON.parse(storedProfile));
@@ -1297,47 +1000,41 @@ function CAMSProviderCore(props) {
1297
1000
  React.useEffect(function () {
1298
1001
  if (typeof window !== "undefined") {
1299
1002
  if (userProfile) {
1300
- setCookie$1(profileStorageKey, JSON.stringify(userProfile), 1);
1003
+ setCookie(profileStorageKey, JSON.stringify(userProfile), 1);
1301
1004
  }
1302
1005
  else {
1303
- deleteCookie$1(profileStorageKey);
1006
+ deleteCookie(profileStorageKey);
1304
1007
  }
1305
1008
  }
1306
1009
  }, [userProfile, profileStorageKey]);
1307
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1308
- return __generator(this, function (_a) {
1010
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
1011
+ return __generator$1(this, function (_a) {
1309
1012
  switch (_a.label) {
1310
1013
  case 0: return [4 /*yield*/, auth.logout()];
1311
1014
  case 1:
1312
1015
  _a.sent();
1313
1016
  setUserProfile(null);
1314
1017
  if (typeof window !== "undefined") {
1315
- deleteCookie$1(profileStorageKey);
1018
+ deleteCookie(profileStorageKey);
1316
1019
  }
1317
1020
  return [2 /*return*/];
1318
1021
  }
1319
1022
  });
1320
1023
  }); };
1321
- // Handle MFA completion for MSAL mode
1322
1024
  React.useEffect(function () {
1323
1025
  if (mode === "MSAL" &&
1324
1026
  "requiresMFA" in auth &&
1325
1027
  !auth.requiresMFA &&
1326
1028
  auth.isAuthenticated) {
1327
- // MFA completed, extract profile from localStorage
1328
1029
  var storedData = localStorage.getItem(auth.storageKey);
1329
1030
  if (storedData) {
1330
1031
  try {
1331
1032
  var parsed = JSON.parse(storedData);
1332
- console.log("Parsed storage data:", parsed);
1333
1033
  if (parsed.userProfile) {
1334
- console.log("Setting user profile:", parsed.userProfile);
1335
1034
  setUserProfile(parsed.userProfile);
1336
1035
  }
1337
1036
  }
1338
- catch (e) {
1339
- console.error("Error parsing stored data:", e);
1340
- }
1037
+ catch (_a) { }
1341
1038
  }
1342
1039
  }
1343
1040
  }, [
@@ -1348,25 +1045,32 @@ function CAMSProviderCore(props) {
1348
1045
  userProfile,
1349
1046
  ]);
1350
1047
  var value = React.useMemo(function () {
1351
- return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile, authMode: mode }));
1352
- }, [auth, userProfile, mode]);
1353
- return jsxRuntimeExports.jsx(CAMSContext.Provider, { value: value, children: children });
1048
+ auth.logout; var authRest = __rest(auth, ["logout"]);
1049
+ return __assign(__assign({}, authRest), { logout: enhancedLogout, user: userProfile, setUserProfile: setUserProfile, authMode: mode, onAuthSuccess: mode === "MSAL"
1050
+ ? (props).onAuthSuccess
1051
+ : undefined, onAuthError: mode === "MSAL" ? (props).onAuthError : undefined });
1052
+ }, [auth, userProfile, mode, props]);
1053
+ return jsxRuntime.jsx(CAMSContext.Provider, { value: value, children: children });
1354
1054
  }
1355
1055
  function UnifiedCAMSProvider(props) {
1056
+ var _a;
1356
1057
  // Validate appCode is a valid GUID
1357
1058
  var appCodeValidation = GuidSchema.safeParse(props.appCode);
1358
1059
  if (!appCodeValidation.success) {
1359
- throw new Error("Invalid appCode: ".concat(appCodeValidation.error.issues[0].message));
1060
+ throw new Error("Invalid CAS APP CODE: ".concat(appCodeValidation.error.issues[0].message));
1360
1061
  }
1361
1062
  if (props.mode === "MSAL") {
1362
1063
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
1064
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
1065
+ throw new Error("Crypto API not available. Polyfill failed to load.");
1066
+ }
1363
1067
  var instance = msalInstance || new msalBrowser.PublicClientApplication(msalConfig);
1364
- return (jsxRuntimeExports.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1068
+ return (jsxRuntime.jsx(msalReact.MsalProvider, { instance: instance, children: jsxRuntime.jsx(CAMSProviderCore, __assign({}, props)) }));
1365
1069
  }
1366
- return (jsxRuntimeExports.jsx(ClientOnly, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1070
+ return (jsxRuntime.jsx(ClientOnly, { fallback: jsxRuntime.jsx("div", { className: "h-screen flex items-center justify-center", children: "Loading..." }), children: jsxRuntime.jsx(CAMSProviderCore, __assign({}, props)) }));
1367
1071
  }
1368
1072
  // Backward compatibility exports
1369
- var CAMSProvider = function (props) { return (jsxRuntimeExports.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1073
+ var CAMSProvider = function (props) { return (jsxRuntime.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1370
1074
 
1371
1075
  /** A special constant with type `never` */
1372
1076
  function $constructor(name, initializer, params) {
@@ -1512,30 +1216,30 @@ function cn() {
1512
1216
 
1513
1217
  function InputOTP(_a) {
1514
1218
  var className = _a.className, containerClassName = _a.containerClassName, props = __rest(_a, ["className", "containerClassName"]);
1515
- return (jsxRuntimeExports.jsx(inputOtp.OTPInput, __assign({ "data-slot": "input-otp", containerClassName: cn("flex items-center gap-2 has-disabled:opacity-50", containerClassName), className: cn("disabled:cursor-not-allowed", className) }, props)));
1219
+ return (jsxRuntime.jsx(inputOtp.OTPInput, __assign({ "data-slot": "input-otp", containerClassName: cn("flex items-center gap-2 has-disabled:opacity-50", containerClassName), className: cn("disabled:cursor-not-allowed", className) }, props)));
1516
1220
  }
1517
1221
  function InputOTPGroup(_a) {
1518
1222
  var className = _a.className, props = __rest(_a, ["className"]);
1519
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1223
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1520
1224
  }
1521
1225
  function InputOTPSlot(_a) {
1522
1226
  var _b;
1523
1227
  var index = _a.index, className = _a.className, props = __rest(_a, ["index", "className"]);
1524
1228
  var inputOTPContext = React__namespace.useContext(inputOtp.OTPInputContext);
1525
1229
  var _c = (_b = inputOTPContext === null || inputOTPContext === void 0 ? void 0 : inputOTPContext.slots[index]) !== null && _b !== void 0 ? _b : {}, char = _c.char, hasFakeCaret = _c.hasFakeCaret, isActive = _c.isActive;
1526
- return (jsxRuntimeExports.jsxs("div", __assign({ "data-slot": "input-otp-slot", "data-active": isActive, className: cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-12 w-12 items-center justify-center border-y border-r text-lg font-semibold shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]", className) }, props, { children: [char, hasFakeCaret && (jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsxRuntimeExports.jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1230
+ return (jsxRuntime.jsxs("div", __assign({ "data-slot": "input-otp-slot", "data-active": isActive, className: cn("data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-12 w-12 items-center justify-center border-y border-r text-lg font-semibold shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]", className) }, props, { children: [char, hasFakeCaret && (jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsxRuntime.jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1527
1231
  }
1528
1232
 
1529
1233
  function Label(_a) {
1530
1234
  var className = _a.className, props = __rest(_a, ["className"]);
1531
- return (jsxRuntimeExports.jsx(LabelPrimitive__namespace.Root, __assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
1235
+ return (jsxRuntime.jsx(LabelPrimitive__namespace.Root, __assign({ "data-slot": "label", className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className) }, props)));
1532
1236
  }
1533
1237
 
1534
1238
  var Form = reactHookForm.FormProvider;
1535
1239
  var FormFieldContext = React__namespace.createContext({});
1536
1240
  var FormField = function (_a) {
1537
1241
  var props = __rest(_a, []);
1538
- return (jsxRuntimeExports.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntimeExports.jsx(reactHookForm.Controller, __assign({}, props)) }));
1242
+ return (jsxRuntime.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntime.jsx(reactHookForm.Controller, __assign({}, props)) }));
1539
1243
  };
1540
1244
  var useFormField = function () {
1541
1245
  var fieldContext = React__namespace.useContext(FormFieldContext);
@@ -1553,17 +1257,17 @@ var FormItemContext = React__namespace.createContext({});
1553
1257
  function FormItem(_a) {
1554
1258
  var className = _a.className, props = __rest(_a, ["className"]);
1555
1259
  var id = React__namespace.useId();
1556
- return (jsxRuntimeExports.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntimeExports.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1260
+ return (jsxRuntime.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntime.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1557
1261
  }
1558
1262
  function FormLabel(_a) {
1559
1263
  var className = _a.className, props = __rest(_a, ["className"]);
1560
1264
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId;
1561
- return (jsxRuntimeExports.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1265
+ return (jsxRuntime.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1562
1266
  }
1563
1267
  function FormControl(_a) {
1564
1268
  var props = __rest(_a, []);
1565
1269
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId, formDescriptionId = _b.formDescriptionId, formMessageId = _b.formMessageId;
1566
- return (jsxRuntimeExports.jsx(reactSlot.Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1270
+ return (jsxRuntime.jsx(reactSlot.Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1567
1271
  ? "".concat(formDescriptionId)
1568
1272
  : "".concat(formDescriptionId, " ").concat(formMessageId), "aria-invalid": !!error }, props)));
1569
1273
  }
@@ -1575,36 +1279,36 @@ function FormMessage(_a) {
1575
1279
  if (!body) {
1576
1280
  return null;
1577
1281
  }
1578
- return (jsxRuntimeExports.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1282
+ return (jsxRuntime.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1579
1283
  }
1580
1284
 
1581
1285
  function Card(_a) {
1582
1286
  var className = _a.className, props = __rest(_a, ["className"]);
1583
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card", className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", className) }, props)));
1287
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card", className: cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm", className) }, props)));
1584
1288
  }
1585
1289
  function CardHeader(_a) {
1586
1290
  var className = _a.className, props = __rest(_a, ["className"]);
1587
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-header", className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className) }, props)));
1291
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-header", className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6", className) }, props)));
1588
1292
  }
1589
1293
  function CardTitle(_a) {
1590
1294
  var className = _a.className, props = __rest(_a, ["className"]);
1591
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1295
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1592
1296
  }
1593
1297
  function CardDescription(_a) {
1594
1298
  var className = _a.className, props = __rest(_a, ["className"]);
1595
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1299
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1596
1300
  }
1597
1301
  function CardAction(_a) {
1598
1302
  var className = _a.className, props = __rest(_a, ["className"]);
1599
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className) }, props)));
1303
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-action", className: cn("col-start-2 row-span-2 row-start-1 self-start justify-self-end", className) }, props)));
1600
1304
  }
1601
1305
  function CardContent(_a) {
1602
1306
  var className = _a.className, props = __rest(_a, ["className"]);
1603
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1307
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1604
1308
  }
1605
1309
  function CardFooter(_a) {
1606
1310
  var className = _a.className, props = __rest(_a, ["className"]);
1607
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1311
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1608
1312
  }
1609
1313
 
1610
1314
  var GenericOTPVerifier = function (_a) {
@@ -1619,18 +1323,18 @@ var GenericOTPVerifier = function (_a) {
1619
1323
  resolver: a$1(Schema),
1620
1324
  defaultValues: (_c = {}, _c[fieldName] = "", _c),
1621
1325
  });
1622
- return (jsxRuntimeExports.jsxs(Card, { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxRuntimeExports.jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [jsxRuntimeExports.jsx("div", { className: "w-16 h-16 bg-gradient-to-br from-lime-400 via-green-500 to-emerald-600 rounded-xl flex items-center justify-center text-white text-2xl mb-6 group-hover:scale-110 transition-transform duration-300", children: jsxRuntimeExports.jsx(lucideReact.RectangleEllipsis, {}) }), jsxRuntimeExports.jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsxRuntimeExports.jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? "text-red-600" : "text-orange-600"), children: isMaxAttemptsReached
1326
+ return (jsxRuntime.jsxs(Card, { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxRuntime.jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [jsxRuntime.jsx("div", { className: "w-16 h-16 bg-gradient-to-br from-lime-400 via-green-500 to-emerald-600 rounded-xl flex items-center justify-center text-white text-2xl mb-6 group-hover:scale-110 transition-transform duration-300", children: jsxRuntime.jsx(lucideReact.RectangleEllipsis, {}) }), jsxRuntime.jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsxRuntime.jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? "text-red-600" : "text-orange-600"), children: isMaxAttemptsReached
1623
1327
  ? "Maximum attempts reached. Please try again later."
1624
- : "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntimeExports.jsx(CardContent, { className: "space-y-6", children: jsxRuntimeExports.jsx("form", { className: "flex items-center justify-center my-4 ", children: jsxRuntimeExports.jsx(Form, __assign({}, form, { children: jsxRuntimeExports.jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxRuntimeExports.jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
1328
+ : "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsxRuntime.jsx(CardContent, { className: "space-y-6", children: jsxRuntime.jsx("form", { className: "flex items-center justify-center my-4 ", children: jsxRuntime.jsx(Form, __assign({}, form, { children: jsxRuntime.jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxRuntime.jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
1625
1329
  setValue(authenticationValue);
1626
1330
  if (authenticationValue.length === 6 &&
1627
1331
  !isMaxAttemptsReached) {
1628
1332
  setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
1629
1333
  onChangeOTP(authenticationValue);
1630
1334
  }
1631
- }, pattern: inputOtp.REGEXP_ONLY_DIGITS, children: jsxRuntimeExports.jsx(InputOTPGroup, { className: "gap-3", children: __spreadArray([], Array(6), true).map(function (_, idx) { return (jsxRuntimeExports.jsx(InputOTPSlot, { className: "border border-l-2 ".concat(isMaxAttemptsReached
1335
+ }, pattern: inputOtp.REGEXP_ONLY_DIGITS, children: jsxRuntime.jsx(InputOTPGroup, { className: "gap-3", children: __spreadArray([], Array(6), true).map(function (_, idx) { return (jsxRuntime.jsx(InputOTPSlot, { className: "border border-l-2 ".concat(isMaxAttemptsReached
1632
1336
  ? "opacity-50 cursor-not-allowed"
1633
- : ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntimeExports.jsx(FormMessage, {})] })); } }) })) }) })] }));
1337
+ : ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntime.jsx(FormMessage, {})] })); } }) })) }) })] }));
1634
1338
  };
1635
1339
 
1636
1340
  var OTPAuthenticationImg = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20500%20500%22%3E%3Cg%20id%3D%22freepik--Floor--inject-87%22%3E%3Cellipse%20id%3D%22freepik--floor--inject-87%22%20cx%3D%22252.61%22%20cy%3D%22347.39%22%20rx%3D%22236.94%22%20ry%3D%22140.58%22%20style%3D%22fill%3A%23f5f5f5%22%3E%3C%2Fellipse%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Shadows--inject-87%22%3E%3Cellipse%20id%3D%22freepik--Shadow--inject-87%22%20cx%3D%22435.94%22%20cy%3D%22370.25%22%20rx%3D%2241.53%22%20ry%3D%2223.98%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fellipse%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M200.57%2C451.64%2C49.4%2C364.36c-5.74-3.32-5.74-8.74%2C0-12.06L278.92%2C219.81a9.51%2C9.51%2C0%2C0%2C1%2C8.6%2C0L447.9%2C312.4c.68.4.68%2C1%2C0%2C1.42L209.17%2C451.64A9.57%2C9.57%2C0%2C0%2C1%2C200.57%2C451.64Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Clouds--inject-87%22%3E%3Cg%20id%3D%22freepik--clouds--inject-87%22%3E%3Cpath%20d%3D%22M103.23%2C53.2l-9.41%2C5.43c0-.42.08-.84.08-1.25V54.66c0-4.86-3.41-6.82-7.61-4.4a14.77%2C14.77%2C0%2C0%2C0-4.54%2C4.36c-.69-6.1-5.48-8.37-11.29-5-6.29%2C3.63-11.39%2C12.46-11.39%2C19.72v4.08a10.65%2C10.65%2C0%2C0%2C0%2C1%2C4.72l-7.82%2C4.52A9.32%2C9.32%2C0%2C0%2C0%2C48%2C90c0%2C2.69%2C1.89%2C3.78%2C4.22%2C2.44l51-29.46a9.32%2C9.32%2C0%2C0%2C0%2C4.22-7.31C107.45%2C52.94%2C105.56%2C51.85%2C103.23%2C53.2Z%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M160.23%2C63.12l-7.11%2C4.1a7.42%2C7.42%2C0%2C0%2C0%2C.06-.94v-2c0-3.67-2.57-5.15-5.74-3.32A11.14%2C11.14%2C0%2C0%2C0%2C144%2C64.2c-.52-4.6-4.13-6.32-8.52-3.79-4.74%2C2.74-8.59%2C9.41-8.59%2C14.89v3.08a8%2C8%2C0%2C0%2C0%2C.73%2C3.56l-5.9%2C3.41a7.06%2C7.06%2C0%2C0%2C0-3.19%2C5.52c0%2C2%2C1.43%2C2.85%2C3.19%2C1.84l38.5-22.23A7.07%2C7.07%2C0%2C0%2C0%2C163.41%2C65C163.41%2C62.93%2C162%2C62.11%2C160.23%2C63.12Z%22%20style%3D%22fill%3A%23ebebeb%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Plants--inject-87%22%3E%3Cg%20id%3D%22freepik--plants--inject-87%22%3E%3Cpath%20d%3D%22M66.33%2C325.21s.74-17.56-5.74-32.3-17-24.94-27.83-27.53-21.34%2C6.13-10.66%2C14.93%2C30.49%2C19.17%2C36%2C46.68Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M66.33%2C325.21s.74-17.56-5.74-32.3-17-24.94-27.83-27.53-21.34%2C6.13-10.66%2C14.93%2C30.49%2C19.17%2C36%2C46.68Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M63.81%2C320.22h.12a.6.6%2C0%2C0%2C0%2C.44-.72C57.24%2C289.08%2C37%2C273.67%2C27.3%2C269.78a.58.58%2C0%2C0%2C0-.77.33.6.6%2C0%2C0%2C0%2C.33.77c9.51%2C3.82%2C29.34%2C18.95%2C36.35%2C48.88A.6.6%2C0%2C0%2C0%2C63.81%2C320.22Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M46%2C352.16c1.65%2C5.32%2C5.67%2C8.22%2C11.12%2C9.28%2C3.47.67%2C9%2C0%2C12-2.17%2C4.08-3%2C5.46-5.2%2C6.31-8.15a49.38%2C49.38%2C0%2C0%2C0%2C1.77-12.06c.1-3-1.52-5.62-2.74-7.35a22.6%2C22.6%2C0%2C0%2C0-2.12-2.35c-.83-.89-1.76-1.66-2.64-2.49a9.56%2C9.56%2C0%2C0%2C1-2.8-4c-.68-2.21%2C0-4.59%2C0-6.9A10.56%2C10.56%2C0%2C0%2C0%2C58.77%2C306a48.74%2C48.74%2C0%2C0%2C0-6.91-1.22c-3.47-.32-7.21.69-10.59-.37s-6.31-2.78-9.77-3.44c-3.62-.69-7.64-.14-10.47%2C2.37a6.52%2C6.52%2C0%2C0%2C0-2.41%2C5.63c.38%2C2.32%2C2.36%2C4%2C4.24%2C5.4s3.93%2C2.92%2C4.55%2C5.18c1.24%2C4.56-4%2C9.14-2.55%2C13.64a7.38%2C7.38%2C0%2C0%2C0%2C4.1%2C4.09%2C47.72%2C47.72%2C0%2C0%2C0%2C4.65%2C1.68%2C18.69%2C18.69%2C0%2C0%2C0%2C2.31.42c2.27.26%2C4.66.78%2C6.37%2C2.43C45%2C344.36%2C44.89%2C348.59%2C46%2C352.16Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M57.31%2C325a.68.68%2C0%2C0%2C0-.17-.21c-10.25-12.92-25.5-18.47-30.59-19.31a.54.54%2C0%2C0%2C0-.61.44.54.54%2C0%2C0%2C0%2C.44.61c4.82.79%2C19%2C5.91%2C29%2C17.71a29%2C29%2C0%2C0%2C0-23%2C3.35.52.52%2C0%2C0%2C0-.12.73.53.53%2C0%2C0%2C0%2C.44.22.57.57%2C0%2C0%2C0%2C.3-.1%2C28.12%2C28.12%2C0%2C0%2C1%2C23.58-2.77c.41.13%2C1.05%2C1.4%2C1.3%2C1.75.48.68.94%2C1.37%2C1.38%2C2.06a44.7%2C44.7%2C0%2C0%2C1%2C2.4%2C4.34%2C43.78%2C43.78%2C0%2C0%2C1%2C1.95%2C4.77c.22.63%2C1%2C4.51%2C1.48%2C4.55a.63.63%2C0%2C0%2C0%2C.59-.51c.32-1.36-.77-3.53-1.22-4.8a44.12%2C44.12%2C0%2C0%2C0-2-4.77A46.14%2C46.14%2C0%2C0%2C0%2C60%2C328.85c-.42-.67-.86-1.32-1.32-2A13.72%2C13.72%2C0%2C0%2C1%2C57.31%2C325Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Device--inject-87%22%3E%3Cg%20id%3D%22freepik--Laptop--inject-87%22%3E%3Cpath%20d%3D%22M62.88%2C357.26c0%2C3.49%2C2.6%2C7.82%2C5.82%2C9.68l126.85%2C73.25a12.88%2C12.88%2C0%2C0%2C0%2C11.66%2C0l223.37-129c3.22-1.85%2C5.83-6.19%2C5.83-9.67s-2.61-7.82-5.83-9.68L303.73%2C218.62a12.86%2C12.86%2C0%2C0%2C0-11.65%2C0L68.7%2C347.58C65.48%2C349.44%2C62.87%2C353.77%2C62.88%2C357.26Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M68.7%2C354.31l126.85%2C73.26a12.94%2C12.94%2C0%2C0%2C0%2C11.66%2C0l223.37-129c3.22-1.86%2C3.22-4.87%2C0-6.73L303.73%2C218.62a12.86%2C12.86%2C0%2C0%2C0-11.65%2C0L68.7%2C347.58C65.48%2C349.44%2C65.48%2C352.45%2C68.7%2C354.31Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M201.38%2C429v12.61a11.84%2C11.84%2C0%2C0%2C1-5.82-1.39L68.7%2C366.94c-3.22-1.86-5.83-6.19-5.83-9.68%2C0-3.27%2C2.3-7.28%2C5.24-9.3-2.61%2C1.87-2.41%2C4.62.59%2C6.35l126.86%2C73.26A11.85%2C11.85%2C0%2C0%2C0%2C201.38%2C429Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M57.41%2C347.79c-3-1.74-2.85-4.68-2.85-8.4V164.18a12.89%2C12.89%2C0%2C0%2C1%2C5.83-10.1l223.37-129c3.22-1.86%2C8.28-1.95%2C11.3-.21s2.85%2C4.69%2C2.85%2C8.4V208.53a12.9%2C12.9%2C0%2C0%2C1-5.82%2C10.09L68.7%2C347.58C65.48%2C349.44%2C60.43%2C349.54%2C57.41%2C347.79Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M297.9%2C33.31c0-3.71-2.61-5.21-5.82-3.37L68.7%2C158.92a11.85%2C11.85%2C0%2C0%2C0-4.12%2C4.35l-8.31-4.83h0a11.88%2C11.88%2C0%2C0%2C1%2C4.12-4.36l223.37-129C287%2C23.26%2C292%2C23.17%2C295%2C24.91S297.9%2C29.6%2C297.9%2C33.31Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M68%2C347.94c-3.21%2C1.5-7.79%2C1.48-10.6-.15-3-1.74-2.85-4.68-2.85-8.4V164.17a11.68%2C11.68%2C0%2C0%2C1%2C1.71-5.73l8.31%2C4.81v0A11.92%2C11.92%2C0%2C0%2C0%2C62.87%2C169V344.22C62.87%2C347.67%2C65.12%2C349.21%2C68%2C347.94Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M71.84%2C165.63%2C287.2%2C41.33c1.93-1.12%2C3.49-.21%2C3.49%2C2v158a7.71%2C7.71%2C0%2C0%2C1-3.49%2C6L71.84%2C331.66c-1.94%2C1.11-3.5.21-3.5-2V171.69A7.72%2C7.72%2C0%2C0%2C1%2C71.84%2C165.63Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M71.84%2C165.63%2C287.2%2C41.33c1.93-1.12%2C3.49-.21%2C3.49%2C2v158a7.71%2C7.71%2C0%2C0%2C1-3.49%2C6L71.84%2C331.66c-1.94%2C1.11-3.5.21-3.5-2V171.69A7.72%2C7.72%2C0%2C0%2C1%2C71.84%2C165.63Z%22%20style%3D%22opacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M84.82%2C347.93%2C292.16%2C228.22a6.44%2C6.44%2C0%2C0%2C1%2C5.83%2C0l3.45%2C1.9c1.61.93%2C1.61%2C2.43%2C0%2C3.36L94.07%2C353.17a6.42%2C6.42%2C0%2C0%2C1-5.82%2C0l-3.42-1.88C83.22%2C350.36%2C83.22%2C348.86%2C84.82%2C347.93Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M101.09%2C357.6%2C308.42%2C237.89a6%2C6%2C0%2C0%2C1%2C5.33-.29l54%2C31.16c1.33.77%2C1.1%2C2.15-.51%2C3.07L160.12%2C391.38a6%2C6%2C0%2C0%2C1-5.33.3l-54.2-31C99.26%2C359.9%2C99.48%2C358.53%2C101.09%2C357.6Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M280.75%2C288.17l6.49-3.75c.28-.16.3-.4.06-.54l-6.22-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C280.75%2C288.17Zm-9.48-13L264.78%2C279c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C271.27%2C275.2Zm-21%2C12.11-11%2C6.34c-.28.16-.3.41-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l11-6.34c.28-.16.3-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C250.3%2C287.31Zm11.48-6.63-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.22-3.58A1%2C1%2C0%2C0%2C0%2C261.78%2C280.68Zm-25.47%2C14.7-6.49%2C3.75c-.27.16-.3.4%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C236.31%2C295.38Zm-9.48%2C5.48-6.5%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C226.83%2C300.86Zm24.34%2C14.63%2C6.49-3.75c.28-.15.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C251.17%2C315.49ZM241.68%2C321l6.49-3.75c.28-.16.3-.4.06-.54L242%2C313.09a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.41-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C241.68%2C321Zm-9.49%2C5.48%2C6.49-3.75c.28-.16.31-.4.06-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C232.19%2C326.45Zm-9.48%2C5.48%2C6.49-3.75c.27-.16.3-.4.05-.55L223%2C324.05a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C222.71%2C331.93Zm48.55-38.28%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C271.26%2C293.65ZM260.66%2C310l14.48-8.37c.27-.16.3-.4.05-.54l-15.08-8.71a1%2C1%2C0%2C0%2C0-.94%2C0l-7.49%2C4.33c-.28.16-.3.4-.06.54l8%2C4.61c.24.14.22.39-.06.55l-6%2C3.46c-.28.16-.3.4-.06.54l6.21%2C3.59A1.1%2C1.1%2C0%2C0%2C0%2C260.66%2C310Zm-43.32-3.68-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C217.34%2C306.34Zm-9.49%2C5.48-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C207.85%2C311.82Zm-52.5%2C58.48a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41-.05.55ZM132%2C355.64l-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C132%2C355.64Zm12%2C11a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.1%2C1.1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.41%2C0%2C.55Zm26.18%2C5.89%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C170.16%2C372.51ZM159.72%2C378a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.06-.54L161%2C370.11a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55Zm-18.29-27.86-6.49%2C3.75c-.27.16-.3.4-.05.55L141.1%2C358a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C141.43%2C350.16Zm47.44-27.39-6.49%2C3.75c-.27.16-.3.4%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C188.87%2C322.77Zm-38%2C21.92-6.49%2C3.74c-.28.16-.3.41-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C150.92%2C344.69Zm47.44-27.39L191.87%2C321c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C198.36%2C317.3Zm-19%2C10.95-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.4.06-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C179.39%2C328.25Zm-9.49%2C5.48-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C169.9%2C333.73Zm-9.49%2C5.48L153.92%2C343c-.28.16-.3.41-.06.55l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.15.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C160.41%2C339.21Zm43.32%2C3.67%2C6.49-3.75c.28-.15.3-.4.06-.54L204.07%2C335a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C203.73%2C342.88Zm88.51-79.79-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C292.24%2C263.09Zm-11.48%2C6.63-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1.07%2C1.07%2C0%2C0%2C0%2C280.76%2C269.72Zm21-12.1-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C301.73%2C257.62Zm-52.44%2C48.71%2C6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C249.29%2C306.33Zm62.87-54.22a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55ZM213.22%2C337.4l6.49-3.74c.27-.16.3-.41%2C0-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C213.22%2C337.4Zm116.35-67.17%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C329.57%2C270.23Zm-18.36.35%2C6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C311.21%2C270.58ZM321%2C257.23a1%2C1%2C0%2C0%2C0-.94%2C0L313.6%2C261c-.28.16-.3.4-.06.54l6.21%2C3.59a1.1%2C1.1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55Zm2-1.16%2C15.08%2C8.71a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-15.09-8.71a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75C322.81%2C255.69%2C322.79%2C255.93%2C323%2C256.07Zm-21.91%2C12.15-6.5%2C3.74c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C301.12%2C268.22Zm-71.41%2C41.22-6.5%2C3.75c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C229.71%2C309.44Zm89.43-33.7a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54ZM239.19%2C304l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C239.19%2C304Zm-74.36%2C60.86a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.27-.16.3-.41%2C0-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-11-11.56L147.31%2C357c-.28.15-.3.4-.06.54l6.22%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C153.8%2C353.27Zm21.47%2C6.05%2C6.49-3.75c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59A1.06%2C1.06%2C0%2C0%2C0%2C175.27%2C359.32Zm9.48-5.48%2C6.49-3.75c.28-.16.31-.4.06-.54L185.09%2C346a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C184.75%2C353.84Zm9.49-5.48%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C194.24%2C348.36Zm-31-.57-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C163.29%2C347.79Zm9.49-5.48-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C172.78%2C342.31Zm37.95-21.91-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.1%2C1.1%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.41%2C0-.55l-6.21-3.58A1%2C1%2C0%2C0%2C0%2C210.73%2C320.4Zm-9.49%2C5.48-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.22-3.58A1%2C1%2C0%2C0%2C0%2C201.24%2C325.88Zm19-11-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C220.22%2C314.92Zm-37.95%2C21.91-6.5%2C3.75c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1%2C1%2C0%2C0%2C0%2C182.27%2C336.83Zm9.48-5.47-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59A1.06%2C1.06%2C0%2C0%2C0%2C191.75%2C331.36ZM179.64%2C367l6.5-3.74c.27-.16.3-.41.05-.55L180%2C359.16a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C179.64%2C367Zm-50-2.36-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L116%2C364.87c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74C129.83%2C365.06%2C129.86%2C364.81%2C129.61%2C364.67ZM142%2C367.78l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-10%2C5.77c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l10-5.77C142.2%2C368.16%2C142.22%2C367.92%2C142%2C367.78Zm-21.64-10.19L114.13%2C354a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l8-4.62C120.56%2C358%2C120.59%2C357.73%2C120.34%2C357.59Zm6.13-3.54a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.74c-.27.16-.3.41%2C0%2C.55Zm26.88%2C17.41-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-12.49%2C7.21c-.27.16-.3.4-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0L153.29%2C372C153.57%2C371.84%2C153.59%2C371.6%2C153.35%2C371.46Zm4.38%2C7.71-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-8%2C4.61c-.27.16-.3.41-.05.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61C158%2C379.56%2C158%2C379.32%2C157.73%2C379.17ZM197%2C313.33a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.15.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55Zm-19%2C10.95a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55ZM136%2C348.58a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54Zm51.57-29.78a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0L195%2C315c.27-.16.3-.4%2C0-.54l-6.21-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55Zm-19%2C11a1%2C1%2C0%2C0%2C0%2C.94%2C0L176%2C326c.28-.16.3-.4.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4%2C0%2C.54Zm-6.16%2C49.8a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-10%2C5.77c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l10-5.76c.28-.16.3-.41.06-.55Zm-7.46-41.94a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-9.49%2C5.48a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L139.29%2C339c-.28.16-.3.4-.06.54Zm192.72-65a1%2C1%2C0%2C0%2C0-.94%2C0l-16%2C9.22c-.28.16-.3.4-.06.55l6.22%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l16-9.23c.27-.16.3-.4.05-.54Zm-21%2C12.11a1%2C1%2C0%2C0%2C0-.94%2C0L309.76%2C294c-.28.16-.31.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.4.06-.54ZM189.13%2C361.56l6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1.07%2C1.07%2C0%2C0%2C0%2C189.13%2C361.56Zm109.08-60.42a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.41.05-.55Zm49.44-28.54a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.74c.27-.16.3-.41.05-.55Zm15.7-1.9L348.27%2C262a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.15-.3.4-.05.54L355.86%2C275a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75C363.57%2C271.09%2C363.59%2C270.84%2C363.35%2C270.7ZM262.76%2C321.61a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.41-.06.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61c.28-.16.3-.41.06-.55Zm24-13.84a1%2C1%2C0%2C0%2C0-.94%2C0l-10%2C5.77c-.28.16-.3.4-.06.54L282%2C317.7a1.1%2C1.1%2C0%2C0%2C0%2C.95%2C0l10-5.77c.28-.16.3-.4.06-.55Zm-45.94%2C26.52a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-53.43%2C30.84c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58a1%2C1%2C0%2C0%2C0%2C.94%2C0l53.43-30.85c.28-.16.3-.4.06-.54Zm-56.43%2C32.58a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-8%2C4.62c-.28.16-.31.4-.06.54l6.21%2C3.59a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l8-4.62c.28-.16.3-.4.06-.54ZM251.77%2C328a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.62c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l8-4.61c.27-.16.3-.4.05-.54Zm-78.4%2C45.26a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.28.16-.3.4-.06.54l6.21%2C3.59a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l8-4.61c.27-.16.3-.41.05-.55Zm100.37-57.94a1%2C1%2C0%2C0%2C0-.94%2C0l-8%2C4.61c-.27.16-.3.4-.05.54L271%2C324a1%2C1%2C0%2C0%2C0%2C.94%2C0l8-4.61c.28-.16.3-.41.06-.55Zm34-19.61a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54l6.21%2C3.59a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54ZM329%2C280.83l6.5-3.75c.27-.16.3-.4.05-.54L329.29%2C273a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C329%2C280.83Zm-38.71%2C1.86%2C6.49-3.75c.27-.15.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.74c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C290.24%2C282.69Zm-25.21%2C35%2C19-11c.28-.16.3-.41.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-19%2C10.95c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C265%2C317.73Zm53.49-31.39a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.4.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm-7.93-5.16%2C6.5-3.74c.27-.16.3-.41.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C310.59%2C281.18Zm-55%2C42%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C255.55%2C323.21Zm42-24.76a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4-.05.54ZM208.11%2C350.6l6.49-3.75c.27-.16.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0L201%2C346.5c-.28.16-.3.4-.06.55l6.21%2C3.58A1.06%2C1.06%2C0%2C0%2C0%2C208.11%2C350.6Zm9.49-5.48%2C6.49-3.75c.27-.16.3-.4%2C0-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0L210.5%2C341c-.28.16-.3.41-.06.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C217.6%2C345.12Zm-19%2C11%2C6.49-3.75c.28-.16.3-.4.06-.55L199%2C348.2a1.06%2C1.06%2C0%2C0%2C0-1%2C0L191.52%2C352c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C198.62%2C356.08Zm37.95-21.91%2C6.49-3.75c.28-.16.3-.41.06-.55l-6.21-3.58a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54l6.21%2C3.59A1.07%2C1.07%2C0%2C0%2C0%2C236.57%2C334.17Zm-9.49%2C5.47%2C6.49-3.74c.28-.16.31-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0L220%2C335.55c-.28.16-.31.4-.06.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C227.08%2C339.64Zm19-10.95%2C6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-1%2C0L239%2C324.59c-.27.16-.3.4-.05.54l6.21%2C3.59A1%2C1%2C0%2C0%2C0%2C246.06%2C328.69Zm51.77-76.21a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-1.66-1a1%2C1%2C0%2C0%2C0-.94%2C0L296.24%2C251c-.28.16-.3.41-.06.55Zm-47.15%2C29.86a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54L252%2C274.43a1.06%2C1.06%2C0%2C0%2C0-1%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.55Zm19-10.95a1.06%2C1.06%2C0%2C0%2C0%2C1%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.15-.3.4-.06.54ZM239.09%2C289a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.5-3.75c.27-.16.3-.4.05-.54l-6.21-3.59a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm21.07-12.17a1%2C1%2C0%2C0%2C0%2C.95%2C0l6.49-3.75c.27-.16.3-.4%2C0-.54L261.44%2C269a1%2C1%2C0%2C0%2C0-.94%2C0L254%2C272.73c-.28.16-.3.41-.06.55ZM220.11%2C300a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.28-.16.3-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-1%2C0L214%2C295.86c-.28.16-.3.4-.06.54Zm9.49-5.48a1.1%2C1.1%2C0%2C0%2C0%2C1%2C0l6.49-3.75c.27-.16.3-.4.05-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.4-.06.54Zm49.26-31.07a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.55l-1.65-.95a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.75c-.27.16-.3.4-.05.54ZM307.32%2C247a1.06%2C1.06%2C0%2C0%2C0%2C.95%2C0l6.49-3.74c.27-.16.3-.41.05-.55l-1.65-1a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.31.4-.06.54Zm13.05%2C7.53a1.07%2C1.07%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.31-.41.06-.55l-6.21-3.58a1%2C1%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.4%2C0%2C.54Zm18.07%2C20.81%2C6.49-3.75c.28-.16.31-.4.06-.54l-6.21-3.59a1.07%2C1.07%2C0%2C0%2C0-.94%2C0l-6.5%2C3.75c-.27.16-.3.41%2C0%2C.55l6.21%2C3.58A1%2C1%2C0%2C0%2C0%2C338.44%2C275.35ZM288.35%2C258a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-1.66-1a1%2C1%2C0%2C0%2C0-.94%2C0l-6.49%2C3.75c-.28.16-.3.41-.06.55Zm-77.72%2C47.5a1%2C1%2C0%2C0%2C0%2C.94%2C0l6.49-3.75c.28-.16.3-.4.06-.54l-6.21-3.59a1.06%2C1.06%2C0%2C0%2C0-.95%2C0l-6.49%2C3.74c-.27.16-.3.41-.05.55Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22238.71%20354.4%20240.04%20355.17%20275.39%20375.57%20338.26%20339.27%20339.57%20338.53%20302.89%20317.35%20238.71%20354.4%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpolygon%3E%3Cpolygon%20points%3D%22240.04%20355.17%20275.39%20375.57%20338.26%20339.27%20302.89%20318.86%20240.04%20355.17%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpolygon%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Window--inject-87%22%3E%3Cg%20id%3D%22freepik--window--inject-87%22%3E%3Cg%20id%3D%22freepik--window--inject-87%22%3E%3Cpath%20d%3D%22M90.55%2C340.63a4.12%2C4.12%2C0%2C0%2C1-1.83.56%2C4.63%2C4.63%2C0%2C0%2C1-2.68-.47%2C5%2C5%2C0%2C0%2C1-2.19-4V207.37l4.38%2C2.53V339.28c0%2C1.06.53%2C1.67%2C1.29%2C1.67A2.25%2C2.25%2C0%2C0%2C0%2C90.55%2C340.63Z%22%20style%3D%22fill%3A%23f0f0f0%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C211.68a5.16%2C5.16%2C0%2C0%2C1-2.32%2C4L90.55%2C340.63c-1.28.74-2.33.14-2.33-1.35V194.74l6.42-3.7c1.28-.74%2C3.37-12%2C4.66-12.79l55.59-32.1c1.3-.74%2C4.33%2C7.6%2C5.61%2C6.86L309%2C67.13V211.68Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M307.9%2C69V211.68a4.1%2C4.1%2C0%2C0%2C1-1.79%2C3.1L90%2C339.7a1%2C1%2C0%2C0%2C1-.5.17c-.21%2C0-.21-.56-.21-.59V195.36L95.18%2C192c.93-.54%2C1.51-2.35%2C2.81-7a34.61%2C34.61%2C0%2C0%2C1%2C1.93-5.82L155%2C147.32a25.13%2C25.13%2C0%2C0%2C1%2C1.75%2C2.8c1.5%2C2.64%2C2.34%2C4%2C3.56%2C4a1.38%2C1.38%2C0%2C0%2C0%2C.71-.19L307.9%2C69M155.43%2C147.08h0M100%2C179.1h0m209-112L160.5%2C153a.34.34%2C0%2C0%2C1-.17.05c-1.31%2C0-4-7-5.26-7a.41.41%2C0%2C0%2C0-.18.05L99.3%2C178.25C98%2C179%2C95.92%2C190.3%2C94.64%2C191l-6.42%2C3.7V339.28c0%2C1.06.53%2C1.67%2C1.29%2C1.67a2.1%2C2.1%2C0%2C0%2C0%2C1-.32l216.1-124.91a5.16%2C5.16%2C0%2C0%2C0%2C2.32-4V67.13Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M86%2C201.91A5%2C5%2C0%2C0%2C1%2C83.85%2C198V179.77a5.15%2C5.15%2C0%2C0%2C1%2C2.34-4L302.27%2C50.81a4.38%2C4.38%2C0%2C0%2C1%2C6.7%2C3.87v18.2a5.13%2C5.13%2C0%2C0%2C1-2.32%2C4L90.55%2C201.83A5%2C5%2C0%2C0%2C1%2C86%2C201.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C54.3c-.16-1.2-1.14-1.64-2.3-1L90.55%2C178.25A4.89%2C4.89%2C0%2C0%2C0%2C88.9%2C180l-4.37-2.53a4.78%2C4.78%2C0%2C0%2C1%2C1.65-1.74L302.28%2C50.82A4.34%2C4.34%2C0%2C0%2C1%2C309%2C54.3Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M88.9%2C180a4.73%2C4.73%2C0%2C0%2C0-.68%2C2.29V209.9l-4.38-2.53v-27.6c0-.1%2C0-.19%2C0-.28a4.71%2C4.71%2C0%2C0%2C1%2C.09-.58%2C5.15%2C5.15%2C0%2C0%2C1%2C.59-1.44Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C54.68V67.13L160.5%2C153c-1.28.74-2.32.14-2.32-1.35V147c0-1.49-1.05-2.09-2.34-1.35L99.3%2C178.25a5.15%2C5.15%2C0%2C0%2C0-2.34%2C4V187a5.15%2C5.15%2C0%2C0%2C1-2.32%2C4l-6.42%2C3.7V182.29a5.17%2C5.17%2C0%2C0%2C1%2C2.33-4L306.65%2C53.33C307.93%2C52.59%2C309%2C53.19%2C309%2C54.68Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.05%2C62.49c1.62-.94%2C2.93-.18%2C2.93%2C1.69a6.47%2C6.47%2C0%2C0%2C1-2.93%2C5.08c-1.62.94-2.94.18-2.94-1.69A6.48%2C6.48%2C0%2C0%2C1%2C298.05%2C62.49Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M287.49%2C68.58c1.62-.94%2C2.93-.18%2C2.93%2C1.69a6.49%2C6.49%2C0%2C0%2C1-2.93%2C5.08c-1.62.93-2.93.18-2.93-1.69A6.47%2C6.47%2C0%2C0%2C1%2C287.49%2C68.58Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M276.93%2C74.66c1.62-.93%2C2.93-.17%2C2.93%2C1.7a6.49%2C6.49%2C0%2C0%2C1-2.93%2C5.08c-1.62.93-2.93.17-2.93-1.7A6.49%2C6.49%2C0%2C0%2C1%2C276.93%2C74.66Z%22%20style%3D%22fill%3A%23fff%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M309%2C67.13V82.29L88.22%2C209.9V194.74L93%2C192c1.28-.75%2C1.71-1.88%2C2.33-4L97%2C182.29c.51-2%2C1.05-3.3%2C2.34-4l55.59-32.1c1.3-.74%2C2.3-.82%2C3.29.8l2%2C3.62c.73%2C1.26%2C1.1%2C2%2C2.38%2C1.26Z%22%20style%3D%22fill%3A%23e6e6e6%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%2288.22%20194.74%2088.22%20209.9%2083.84%20207.37%2083.84%20192.22%2088.22%20194.74%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M98.91%2C195.83%2C95.25%2C198l1.4-2.69a.65.65%2C0%2C0%2C0%2C0-.65c-.1-.13-.29%2C0-.41.2l-2%2C3.81v0a.58.58%2C0%2C0%2C0%2C0%2C.14.08.08%2C0%2C0%2C0%2C0%2C0%2C.75.75%2C0%2C0%2C0%2C0%2C.2.43.43%2C0%2C0%2C0%2C0%2C.17l0%2C0a.22.22%2C0%2C0%2C0%2C0%2C.08h0l2%2C1.52a.17.17%2C0%2C0%2C0%2C.19%2C0%2C.53.53%2C0%2C0%2C0%2C.22-.28c.11-.25.1-.53%2C0-.62l-1.4-1.08%2C3.66-2.11a.78.78%2C0%2C0%2C0%2C.3-.62C99.21%2C195.87%2C99.07%2C195.74%2C98.91%2C195.83Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M102%2C194.07l3.66-2.11-1.4-1.07a.61.61%2C0%2C0%2C1%2C0-.63c.11-.25.3-.37.42-.28l2%2C1.53h0a.22.22%2C0%2C0%2C1%2C0%2C.08l0%2C0a.79.79%2C0%2C0%2C1%2C0%2C.17%2C1.5%2C1.5%2C0%2C0%2C1%2C0%2C.2s0%2C0%2C0%2C0a.58.58%2C0%2C0%2C1%2C0%2C.14v0l-2%2C3.82a.62.62%2C0%2C0%2C1-.2.22.16.16%2C0%2C0%2C1-.22%2C0%2C.69.69%2C0%2C0%2C1%2C0-.65l1.4-2.69L102%2C195c-.17.09-.3%2C0-.3-.29A.75.75%2C0%2C0%2C1%2C102%2C194.07Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M114%2C183.53c0-.22-.22-.19-.31.05l-.51%2C1.23c-.85-.1-1.89.74-2.58%2C2.22-.91%2C1.92-.91%2C4.19%2C0%2C5.06a1.3%2C1.3%2C0%2C0%2C0%2C1.64.1%2C4.54%2C4.54%2C0%2C0%2C0%2C1.64-2%2C.6.6%2C0%2C0%2C0%2C0-.64c-.11-.11-.3%2C0-.41.24-.68%2C1.43-1.78%2C2.07-2.46%2C1.42s-.67-2.35%2C0-3.78c.48-1%2C1.18-1.62%2C1.78-1.66l-.38.92c-.1.24%2C0%2C.47.15.37l1.49-1a.52.52%2C0%2C0%2C0%2C.17-.41Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M153.29%2C153.07l1.33-2.82a.85.85%2C0%2C0%2C0%2C0-.88c-.15-.16-.41%2C0-.57.33l-1.33%2C2.82-1.33-1.28c-.16-.16-.42%2C0-.58.33a.88.88%2C0%2C0%2C0%2C0%2C.87l1.34%2C1.29-1.34%2C2.82a.9.9%2C0%2C0%2C0%2C0%2C.88.23.23%2C0%2C0%2C0%2C.29%2C0%2C.81.81%2C0%2C0%2C0%2C.29-.35l1.33-2.82%2C1.33%2C1.28a.22.22%2C0%2C0%2C0%2C.29%2C0%2C.8.8%2C0%2C0%2C0%2C.28-.35.85.85%2C0%2C0%2C0%2C0-.88Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M118.82%2C187v-4.72a5.18%2C5.18%2C0%2C0%2C1%2C2.33-4L293.53%2C78.63c1.29-.74%2C2.33-.14%2C2.33%2C1.35v4.71a5.14%2C5.14%2C0%2C0%2C1-2.33%2C4L121.15%2C188.35C119.87%2C189.09%2C118.82%2C188.49%2C118.82%2C187Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M290.36%2C89.09a.46.46%2C0%2C0%2C1-.21%2C0%2C.62.62%2C0%2C0%2C1-.35-.7l.23-1.92-.9-.64a.69.69%2C0%2C0%2C1-.25-.52%2C1.06%2C1.06%2C0%2C0%2C1%2C.39-.82l1.37-1a.32.32%2C0%2C0%2C0%2C.06-.11l.61-2a.86.86%2C0%2C0%2C1%2C.69-.65.56.56%2C0%2C0%2C1%2C.54.32h0l.51%2C1.1%2C1.16-.45a.54.54%2C0%2C0%2C1%2C.61.14.84.84%2C0%2C0%2C1%2C0%2C1l-1%2C1.86a.36.36%2C0%2C0%2C0%2C0%2C.11l.23%2C1.68a1%2C1%2C0%2C0%2C1-.29.84.64.64%2C0%2C0%2C1-.54.21l-1.12-.14-1.21%2C1.54A.69.69%2C0%2C0%2C1%2C290.36%2C89.09Zm-.66-3.89.89.65a.63.63%2C0%2C0%2C1%2C.24.64l-.15%2C1.27.81-1a.7.7%2C0%2C0%2C1%2C.62-.29l1.11.14a.27.27%2C0%2C0%2C0%2C0-.13L293%2C84.77a1%2C1%2C0%2C0%2C1%2C.12-.6l.87-1.63-.89.34a.55.55%2C0%2C0%2C1-.71-.28l-.41-.86-.54%2C1.78a1%2C1%2C0%2C0%2C1-.34.51l-1.37%2C1.06A.29.29%2C0%2C0%2C0%2C289.7%2C85.2Zm2.31%2C2Zm-1.89-.74Zm1.69-5.2Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3Cg%20style%3D%22opacity%3A0.5%22%3E%3Cpath%20d%3D%22M298.61%2C78.06a.81.81%2C0%2C0%2C1-.7-.41.8.8%2C0%2C0%2C1%2C.29-1.1l6.56-3.78a.8.8%2C0%2C1%2C1%2C.81%2C1.39L299%2C78A.86.86%2C0%2C0%2C1%2C298.61%2C78.06Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.61%2C81.85a.81.81%2C0%2C0%2C1-.7-.41.8.8%2C0%2C0%2C1%2C.29-1.1l6.56-3.79a.81.81%2C0%2C0%2C1%2C.81%2C1.4L299%2C81.74A.86.86%2C0%2C0%2C1%2C298.61%2C81.85Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M298.61%2C85.63a.8.8%2C0%2C0%2C1-.41-1.5l6.56-3.79a.81.81%2C0%2C0%2C1%2C.81%2C1.4L299%2C85.53A.85.85%2C0%2C0%2C1%2C298.61%2C85.63Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Shield--inject-87%22%3E%3Cg%20id%3D%22freepik--shield--inject-87%22%3E%3Cpath%20d%3D%22M208.38%2C156.24c-4.59%2C4.12-8.55%2C3.9-11%2C2-2.48%2C4.76-6.44%2C9.55-11%2C10.73L183.72%2C176s1.4%2C1.62%2C1.4%2C5.48a19.26%2C19.26%2C0%2C0%2C1-.64%2C4.8%2C25.41%2C25.41%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C7.74%2C7.74%2C0%2C0%2C0%2C2.87%2C2.87l-4-2.29a8%2C8%2C0%2C0%2C1-3-3%2C12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.35%2C25.35%2C0%2C0%2C1%2C1.1-7.18%2C19.32%2C19.32%2C0%2C0%2C0%2C.65-4.8c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.17%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.13%2C11-2Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M194.68%2C156.69l-1.45-.84A6.31%2C6.31%2C0%2C0%2C0%2C194.68%2C156.69Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.8%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M204.25%2C153.86c-3.77%2C3.39-7.12%2C3.84-9.57%2C2.83l2.68%2C1.55c2.47%2C1.9%2C6.43%2C2.12%2C11-2Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.85%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M193.23%2C155.85c-2.48%2C4.77-6.44%2C9.56-11%2C10.73l4.13%2C2.39c4.58-1.18%2C8.54-6%2C11-10.73Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.65%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22182.21%20166.58%20179.59%20173.65%20183.72%20176.04%20186.34%20168.97%20182.21%20166.58%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.55%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M184.81%2C199.89a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.26%2C19.26%2C0%2C0%2C0%2C.64-4.8c0-3.86-1.4-5.48-1.4-5.48l-4.13-2.39s1.41%2C1.62%2C1.41%2C5.49a19.32%2C19.32%2C0%2C0%2C1-.65%2C4.8%2C25.35%2C25.35%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C8%2C8%2C0%2C0%2C0%2C3%2C3l4%2C2.29A7.74%2C7.74%2C0%2C0%2C1%2C184.81%2C199.89Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M184.81%2C199.89a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.26%2C19.26%2C0%2C0%2C0%2C.64-4.8c0-3.86-1.4-5.48-1.4-5.48l-4.13-2.39s1.41%2C1.62%2C1.41%2C5.49a19.32%2C19.32%2C0%2C0%2C1-.65%2C4.8%2C25.35%2C25.35%2C0%2C0%2C0-1.1%2C7.18%2C12.54%2C12.54%2C0%2C0%2C0%2C1.43%2C6.39%2C8%2C8%2C0%2C0%2C0%2C3%2C3l4%2C2.29A7.74%2C7.74%2C0%2C0%2C1%2C184.81%2C199.89Z%22%20style%3D%22opacity%3A0.05%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M197.36%2C204.74c-6.85.07-10.77-1.74-12.55-4.85a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.24%2C19.24%2C0%2C0%2C0%2C.65-4.79c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.18%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.12%2C11-2l2.62%2C4a19.87%2C19.87%2C0%2C0%2C0-1.41%2C7.11%2C11.69%2C11.69%2C0%2C0%2C0%2C.65%2C4%2C14%2C14%2C0%2C0%2C1%2C1.09%2C5.92%2C23.71%2C23.71%2C0%2C0%2C1-1.42%2C8C208.13%2C190.57%2C204.21%2C196.9%2C197.36%2C204.74Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M197.36%2C204.74c-6.85.07-10.77-1.74-12.55-4.85a12.54%2C12.54%2C0%2C0%2C1-1.43-6.39%2C25.41%2C25.41%2C0%2C0%2C1%2C1.1-7.18%2C19.24%2C19.24%2C0%2C0%2C0%2C.65-4.79c0-3.87-1.41-5.49-1.41-5.49l2.62-7.07c4.58-1.18%2C8.54-6%2C11-10.73%2C2.47%2C1.91%2C6.43%2C2.12%2C11-2l2.62%2C4a19.87%2C19.87%2C0%2C0%2C0-1.41%2C7.11%2C11.69%2C11.69%2C0%2C0%2C0%2C.65%2C4%2C14%2C14%2C0%2C0%2C1%2C1.09%2C5.92%2C23.71%2C23.71%2C0%2C0%2C1-1.42%2C8C208.13%2C190.57%2C204.21%2C196.9%2C197.36%2C204.74Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.75%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M196.55%2C203c-5.31-.07-8.74-1.39-10.2-4a10.7%2C10.7%2C0%2C0%2C1-1.19-5.51%2C21.92%2C21.92%2C0%2C0%2C1%2C.88-6.1c.05-.22.11-.43.16-.65a20.6%2C20.6%2C0%2C0%2C0%2C.7-5.22%2C12.12%2C12.12%2C0%2C0%2C0-1.21-5.69l2-5.43c4.91-1.7%2C8.46-6.55%2C10.34-9.73a8%2C8%2C0%2C0%2C0%2C3.2.65%2C11.47%2C11.47%2C0%2C0%2C0%2C6.72-2.46l1%2C1.64a22%2C22%2C0%2C0%2C0-1.2%2C6.89%2C13.41%2C13.41%2C0%2C0%2C0%2C.75%2C4.64c.06.15.12.31.17.47a11.72%2C11.72%2C0%2C0%2C1%2C.82%2C4.86%2C22%2C22%2C0%2C0%2C1-1.32%2C7.45C206.48%2C189.91%2C202.55%2C196%2C196.55%2C203Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M187.57%2C200.48c1.81%2C1.59%2C4.81%2C2.43%2C9%2C2.48l-2.66-1.52A19.35%2C19.35%2C0%2C0%2C1%2C187.57%2C200.48Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.8%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22207.63%20159.71%20209.01%20160.5%20207.96%20158.87%20207.36%20159.29%20207.63%20159.71%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M207.18%2C171.24a13.41%2C13.41%2C0%2C0%2C1-.75-4.64%2C21.74%2C21.74%2C0%2C0%2C1%2C1.2-6.89l-.27-.42a11.12%2C11.12%2C0%2C0%2C1-6.12%2C2%2C8%2C8%2C0%2C0%2C1-3.2-.65c-1.88%2C3.18-5.43%2C8-10.34%2C9.73l-2%2C5.43a12.12%2C12.12%2C0%2C0%2C1%2C1.21%2C5.69%2C20.6%2C20.6%2C0%2C0%2C1-.7%2C5.22c0%2C.22-.11.43-.16.65a21.92%2C21.92%2C0%2C0%2C0-.88%2C6.1%2C10.7%2C10.7%2C0%2C0%2C0%2C1.19%2C5.51%2C6.05%2C6.05%2C0%2C0%2C0%2C1.73%2C1.88%2C17.87%2C17.87%2C0%2C0%2C0%2C7.08%2C1.27c6-6.95%2C9.93-13%2C11.68-18.14a22%2C22%2C0%2C0%2C0%2C1.33-7.45%2C11.89%2C11.89%2C0%2C0%2C0-.82-4.86C207.29%2C171.55%2C207.23%2C171.39%2C207.18%2C171.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M187.7%2C170.41l-2%2C5.43a12.12%2C12.12%2C0%2C0%2C1%2C1.21%2C5.69%2C20.6%2C20.6%2C0%2C0%2C1-.7%2C5.22c0%2C.22-.11.43-.16.65a21.92%2C21.92%2C0%2C0%2C0-.88%2C6.1%2C10.7%2C10.7%2C0%2C0%2C0%2C1.19%2C5.51%2C6.05%2C6.05%2C0%2C0%2C0%2C1.73%2C1.88%2C17.87%2C17.87%2C0%2C0%2C0%2C7.08%2C1.27v-20l2.88-.87V160.68a32.06%2C32.06%2C0%2C0%2C1-2.88%2C4.11A17.6%2C17.6%2C0%2C0%2C1%2C187.7%2C170.41Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M202.1%2C174.77a.91.91%2C0%2C0%2C0-.11-.16l0%2C0a1.18%2C1.18%2C0%2C0%2C0-.29-.23l-1-.56a2.25%2C2.25%2C0%2C0%2C0-.55-.21l-.35-.05v-2.85a3.4%2C3.4%2C0%2C0%2C0-1.48-3.1%2C3%2C3%2C0%2C0%2C0-3.13.2%2C8.22%2C8.22%2C0%2C0%2C0-3.66%2C6.59v3.36l-1.92%2C1.1-.16.11-.05%2C0h0a.71.71%2C0%2C0%2C0-.27.53v11.52a.77.77%2C0%2C0%2C0%2C0%2C.15.89.89%2C0%2C0%2C0%2C.37.47l.1.07.47.27.5.28a1.78%2C1.78%2C0%2C0%2C0%2C.61.22%2C2.59%2C2.59%2C0%2C0%2C0%2C1.75-.22l8.73-5a.84.84%2C0%2C0%2C0%2C.49-.68V175A.68.68%2C0%2C0%2C0%2C202.1%2C174.77Zm-8.68-.39a6.37%2C6.37%2C0%2C0%2C1%2C2.72-5%2C1.33%2C1.33%2C0%2C0%2C1%2C1.24-.2%2C1.67%2C1.67%2C0%2C0%2C1%2C.54%2C1.47v3.36l-2.48%2C1.43-2%2C1.17Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--Padlock--inject-87%22%3E%3Cpath%20d%3D%22M203.18%2C175.55a.82.82%2C0%2C0%2C0-.49-.68l-1-.56a2.65%2C2.65%2C0%2C0%2C0-2.36%2C0l-8.73%2C5a.83.83%2C0%2C0%2C0-.49.68h0v11.53h0a.82.82%2C0%2C0%2C0%2C.49.68l1%2C.56a2.61%2C2.61%2C0%2C0%2C0%2C2.37%2C0l8.72-5a.82.82%2C0%2C0%2C0%2C.49-.68h0V175.55Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M191.6%2C181.27l-1-.55a.73.73%2C0%2C0%2C1%2C0-1.37l8.73-5a2.65%2C2.65%2C0%2C0%2C1%2C2.36%2C0l1%2C.56a.71.71%2C0%2C0%2C1%2C0%2C1.36l-8.72%2C5A2.61%2C2.61%2C0%2C0%2C1%2C191.6%2C181.27Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.4%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M192.79%2C181.55v11.53a2.43%2C2.43%2C0%2C0%2C1-1.19-.28l-1-.56a.81.81%2C0%2C0%2C1-.49-.68V180a.83.83%2C0%2C0%2C0%2C.49.69l1%2C.55A2.43%2C2.43%2C0%2C0%2C0%2C192.79%2C181.55Z%22%20style%3D%22opacity%3A0.1%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M199.14%2C187.26l-2.09%2C1.2.32-3.77a1%2C1%2C0%2C0%2C1-.4-.92%2C2.71%2C2.71%2C0%2C0%2C1%2C1.12-2.16c.63-.35%2C1.13%2C0%2C1.13.86a2.83%2C2.83%2C0%2C0%2C1-.41%2C1.39Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22199.14%20187.26%20197.25%20186.17%20197.05%20188.46%20199.14%20187.26%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M198.09%2C181.61a2.52%2C2.52%2C0%2C0%2C0-1%2C1.28l1.68%2C1h0a2.83%2C2.83%2C0%2C0%2C0%2C.41-1.39C199.22%2C181.64%2C198.72%2C181.26%2C198.09%2C181.61Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M200.82%2C175.81h0V171.2a3.38%2C3.38%2C0%2C0%2C0-1.48-3.1%2C3%2C3%2C0%2C0%2C0-3.12.19%2C8.22%2C8.22%2C0%2C0%2C0-3.67%2C6.59v4.64h0a.47.47%2C0%2C0%2C0%2C.28.38%2C1.48%2C1.48%2C0%2C0%2C0%2C1.33%2C0%2C.45.45%2C0%2C0%2C0%2C.28-.38h0v-4.64a6.37%2C6.37%2C0%2C0%2C1%2C2.72-4.95%2C1.33%2C1.33%2C0%2C0%2C1%2C1.24-.2%2C1.66%2C1.66%2C0%2C0%2C1%2C.54%2C1.47v4.61h0a.45.45%2C0%2C0%2C0%2C.28.38%2C1.48%2C1.48%2C0%2C0%2C0%2C1.33%2C0%2C.45.45%2C0%2C0%2C0%2C.27-.38Z%22%20style%3D%22fill%3A%23e0e0e0%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cpath%20d%3D%22M129.34%2C253c.13-.07.23-.08.3%2C0a.69.69%2C0%2C0%2C1%2C.14.25l2.12%2C8.23a.58.58%2C0%2C0%2C1%2C0%2C.2.66.66%2C0%2C0%2C1-.06.27.35.35%2C0%2C0%2C1-.15.18l-1.23.71c-.13.08-.22.09-.28%2C0a.32.32%2C0%2C0%2C1-.1-.18l-.27-1.09L127.26%2C263l-.28%2C1.41a.81.81%2C0%2C0%2C1-.1.3.6.6%2C0%2C0%2C1-.28.29l-1.22.71a.13.13%2C0%2C0%2C1-.16%2C0%2C.28.28%2C0%2C0%2C1-.06-.2%2C1%2C1%2C0%2C0%2C1%2C0-.24l2.12-10.68a2.07%2C2.07%2C0%2C0%2C1%2C.15-.41.69.69%2C0%2C0%2C1%2C.29-.34Zm-1.58%2C7.47%2C1.58-.91-.79-3.15Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M133%2C254a.8.8%2C0%2C0%2C1%2C.08-.33.5.5%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.79a1.81%2C1.81%2C0%2C0%2C0%2C.18.93c.13.19.33.2.62%2C0a1.37%2C1.37%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14V252a.78.78%2C0%2C0%2C1%2C.07-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v7a.8.8%2C0%2C0%2C1-.08.33.46.46%2C0%2C0%2C1-.18.22l-1.13.65a.14.14%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-.34a3.15%2C3.15%2C0%2C0%2C1-.19.43%2C2.27%2C2.27%2C0%2C0%2C1-.27.44%2C3.16%2C3.16%2C0%2C0%2C1-.39.44%2C2.69%2C2.69%2C0%2C0%2C1-.52.38c-.63.36-1.13.38-1.5%2C0a3.12%2C3.12%2C0%2C0%2C1-.57-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M142%2C253.1a.85.85%2C0%2C0%2C0%2C.09.47c.07.09.18.09.33%2C0l.77-.45a.14.14%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.51a.8.8%2C0%2C0%2C1-.08.33.45.45%2C0%2C0%2C1-.19.23l-.92.53a1.81%2C1.81%2C0%2C0%2C1-.83.28.89.89%2C0%2C0%2C1-.64-.21%2C1.53%2C1.53%2C0%2C0%2C1-.41-.7%2C3.73%2C3.73%2C0%2C0%2C1-.15-1.15v-2.52l-.72.42a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-1.51a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l.72-.41v-2.45a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v2.44l1.1-.63a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.51a.73.73%2C0%2C0%2C1-.08.33.44.44%2C0%2C0%2C1-.18.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M150%2C251.14a.8.8%2C0%2C0%2C1-.08.33.47.47%2C0%2C0%2C1-.19.22l-1.22.71c-.08%2C0-.14%2C0-.19%2C0a.33.33%2C0%2C0%2C1-.08-.24v-3.8a1.59%2C1.59%2C0%2C0%2C0-.2-.91c-.14-.18-.35-.19-.65%2C0a1.44%2C1.44%2C0%2C0%2C0-.63.76%2C3%2C3%2C0%2C0%2C0-.2%2C1.15v3.79a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.22.71a.16.16%2C0%2C0%2C1-.19%2C0%2C.36.36%2C0%2C0%2C1-.08-.24V244.3a.76.76%2C0%2C0%2C1%2C.08-.33.41.41%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.2a4.51%2C4.51%2C0%2C0%2C1%2C.51-.91%2C2.76%2C2.76%2C0%2C0%2C1%2C.81-.76%2C1.91%2C1.91%2C0%2C0%2C1%2C.86-.29.87.87%2C0%2C0%2C1%2C.67.24%2C1.71%2C1.71%2C0%2C0%2C1%2C.43.81A5.62%2C5.62%2C0%2C0%2C1%2C150%2C247Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M153.07%2C246.71a1.23%2C1.23%2C0%2C0%2C0%2C.09.53.43.43%2C0%2C0%2C0%2C.21.23.38.38%2C0%2C0%2C0%2C.28%2C0%2C1.88%2C1.88%2C0%2C0%2C0%2C.3-.12%2C2%2C2%2C0%2C0%2C0%2C.46-.36%2C2%2C2%2C0%2C0%2C0%2C.29-.42%2C1.37%2C1.37%2C0%2C0%2C1%2C.16-.26.46.46%2C0%2C0%2C1%2C.16-.14l1.27-.73q.21-.12.21.21a2.26%2C2.26%2C0%2C0%2C1-.14.63%2C5.76%2C5.76%2C0%2C0%2C1-.46%2C1%2C6.85%2C6.85%2C0%2C0%2C1-.79%2C1.13%2C4.5%2C4.5%2C0%2C0%2C1-1.16%2C1%2C2.26%2C2.26%2C0%2C0%2C1-1.12.37%2C1.09%2C1.09%2C0%2C0%2C1-.83-.32%2C2%2C2%2C0%2C0%2C1-.51-1%2C6.65%2C6.65%2C0%2C0%2C1-.17-1.6%2C8.85%2C8.85%2C0%2C0%2C1%2C.17-1.71%2C6.57%2C6.57%2C0%2C0%2C1%2C.51-1.57%2C5.63%2C5.63%2C0%2C0%2C1%2C.83-1.33%2C4.26%2C4.26%2C0%2C0%2C1%2C1.12-1%2C2%2C2%2C0%2C0%2C1%2C1.21-.33%2C1.23%2C1.23%2C0%2C0%2C1%2C.82.48%2C2.54%2C2.54%2C0%2C0%2C1%2C.46%2C1.05%2C6.6%2C6.6%2C0%2C0%2C1%2C.14%2C1.36v.42a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23Zm.88-3.38a1.46%2C1.46%2C0%2C0%2C0-.62.73%2C3%2C3%2C0%2C0%2C0-.26%2C1l1.76-1a1.2%2C1.2%2C0%2C0%2C0-.26-.7C154.43%2C243.18%2C154.22%2C243.17%2C154%2C243.33Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M163.15%2C243.54a.8.8%2C0%2C0%2C1-.08.33.42.42%2C0%2C0%2C1-.19.22l-1.22.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-3.8a1.51%2C1.51%2C0%2C0%2C0-.2-.91c-.14-.18-.35-.19-.64%2C0a1.42%2C1.42%2C0%2C0%2C0-.64.76%2C3%2C3%2C0%2C0%2C0-.2%2C1.15v3.79a.8.8%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-1.23.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.35.35%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.18-.68a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v.35c.05-.13.12-.28.19-.43a3.21%2C3.21%2C0%2C0%2C1%2C.29-.46%2C4.88%2C4.88%2C0%2C0%2C1%2C.38-.43%2C3.38%2C3.38%2C0%2C0%2C1%2C.51-.38%2C2%2C2%2C0%2C0%2C1%2C.86-.29.87.87%2C0%2C0%2C1%2C.67.24%2C1.71%2C1.71%2C0%2C0%2C1%2C.43.81%2C5.2%2C5.2%2C0%2C0%2C1%2C.16%2C1.44Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M167%2C238.67a.92.92%2C0%2C0%2C0%2C.09.48q.1.12.33%2C0l.77-.45c.08%2C0%2C.14%2C0%2C.19%2C0a.33.33%2C0%2C0%2C1%2C.08.24v1.52a.8.8%2C0%2C0%2C1-.08.33.42.42%2C0%2C0%2C1-.19.22l-.92.54a1.94%2C1.94%2C0%2C0%2C1-.83.28.94.94%2C0%2C0%2C1-.64-.22%2C1.49%2C1.49%2C0%2C0%2C1-.41-.69%2C3.84%2C3.84%2C0%2C0%2C1-.15-1.16v-2.52l-.72.42a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24V235.9a.67.67%2C0%2C0%2C1%2C.08-.33.54.54%2C0%2C0%2C1%2C.18-.23l.72-.41v-2.45a.8.8%2C0%2C0%2C1%2C.08-.33.42.42%2C0%2C0%2C1%2C.19-.22l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v1.52a.8.8%2C0%2C0%2C1-.08.33.46.46%2C0%2C0%2C1-.18.22l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M171.54%2C230.07a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.22.71a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24Zm0%2C8.62a.8.8%2C0%2C0%2C1-.08.33.45.45%2C0%2C0%2C1-.19.23l-1.22.71c-.08%2C0-.14%2C0-.19%2C0a.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l1.22-.71a.14.14%2C0%2C0%2C1%2C.19%2C0%2C.3.3%2C0%2C0%2C1%2C.08.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M174.7%2C232.85c0%2C.15%2C0%2C.33%2C0%2C.53s0%2C.37%2C0%2C.52a.94.94%2C0%2C0%2C0%2C.27.71c.15.13.36.12.62%2C0a1.47%2C1.47%2C0%2C0%2C0%2C.49-.42%2C2.26%2C2.26%2C0%2C0%2C0%2C.28-.56%2C1.69%2C1.69%2C0%2C0%2C1%2C.11-.27.4.4%2C0%2C0%2C1%2C.17-.19l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C5.12%2C5.12%2C0%2C0%2C1-.13.78%2C4.92%2C4.92%2C0%2C0%2C1-.41%2C1.16%2C5.85%2C5.85%2C0%2C0%2C1-.78%2C1.25%2C4.6%2C4.6%2C0%2C0%2C1-1.27%2C1.07%2C2.39%2C2.39%2C0%2C0%2C1-1%2C.35%2C1.31%2C1.31%2C0%2C0%2C1-.83-.21%2C1.72%2C1.72%2C0%2C0%2C1-.56-.77A3.61%2C3.61%2C0%2C0%2C1%2C173%2C235c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.26%2C6.26%2C0%2C0%2C1%2C.23-1.56%2C6.8%2C6.8%2C0%2C0%2C1%2C.56-1.41%2C6%2C6%2C0%2C0%2C1%2C.83-1.17%2C4.38%2C4.38%2C0%2C0%2C1%2C1-.83%2C2.15%2C2.15%2C0%2C0%2C1%2C1.27-.39%2C1.18%2C1.18%2C0%2C0%2C1%2C.78.34%2C1.45%2C1.45%2C0%2C0%2C1%2C.41.68%2C3%2C3%2C0%2C0%2C1%2C.13.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.74a.15.15%2C0%2C0%2C1-.17%2C0%2C.58.58%2C0%2C0%2C1-.11-.15.46.46%2C0%2C0%2C0-.28-.24.7.7%2C0%2C0%2C0-.49.15%2C1.48%2C1.48%2C0%2C0%2C0-.62.68A2.49%2C2.49%2C0%2C0%2C0%2C174.7%2C232.85Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M179.17%2C232.47a4%2C4%2C0%2C0%2C1%2C.5-1.92%2C6.47%2C6.47%2C0%2C0%2C1%2C1.6-1.87l1.14-1a.81.81%2C0%2C0%2C0-.13-.52c-.08-.1-.23-.1-.44%2C0a1.12%2C1.12%2C0%2C0%2C0-.34.3%2C2.1%2C2.1%2C0%2C0%2C0-.18.28%2C1.07%2C1.07%2C0%2C0%2C1-.17.24.86.86%2C0%2C0%2C1-.18.14l-1.24.71c-.07%2C0-.12%2C0-.16%2C0a.25.25%2C0%2C0%2C1%2C0-.21%2C2.75%2C2.75%2C0%2C0%2C1%2C.19-.84%2C6.14%2C6.14%2C0%2C0%2C1%2C.48-1%2C6.5%2C6.5%2C0%2C0%2C1%2C.73-.95%2C4.21%2C4.21%2C0%2C0%2C1%2C.92-.74%2C2.47%2C2.47%2C0%2C0%2C1%2C1-.37%2C1%2C1%2C0%2C0%2C1%2C.72.2%2C1.36%2C1.36%2C0%2C0%2C1%2C.43.7%2C4.13%2C4.13%2C0%2C0%2C1%2C.13%2C1.13v4.54a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24V232a4.52%2C4.52%2C0%2C0%2C1-.58%2C1%2C2.81%2C2.81%2C0%2C0%2C1-.91.79%2C1.58%2C1.58%2C0%2C0%2C1-.75.25.73.73%2C0%2C0%2C1-.54-.18%2C1.15%2C1.15%2C0%2C0%2C1-.34-.55A2.88%2C2.88%2C0%2C0%2C1%2C179.17%2C232.47Zm2.23-.94a1.54%2C1.54%2C0%2C0%2C0%2C.4-.34%2C2.76%2C2.76%2C0%2C0%2C0%2C.32-.49%2C3%2C3%2C0%2C0%2C0%2C.21-.59%2C2.47%2C2.47%2C0%2C0%2C0%2C.08-.6l-.9.72a2.43%2C2.43%2C0%2C0%2C0-.42.5%2C1.09%2C1.09%2C0%2C0%2C0-.16.56q0%2C.28.12.33A.44.44%2C0%2C0%2C0%2C181.4%2C231.53Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M188.06%2C226.51a.8.8%2C0%2C0%2C0%2C.1.48c.06.09.17.09.32%2C0l.78-.45a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v1.51a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-.93.53a1.78%2C1.78%2C0%2C0%2C1-.83.28.9.9%2C0%2C0%2C1-.64-.21%2C1.62%2C1.62%2C0%2C0%2C1-.41-.7%2C3.8%2C3.8%2C0%2C0%2C1-.14-1.15V225.1l-.73.41a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.8.8%2C0%2C0%2C1%2C.08-.33.44.44%2C0%2C0%2C1%2C.18-.23l.73-.42v-2.44a.78.78%2C0%2C0%2C1%2C.07-.33.57.57%2C0%2C0%2C1%2C.19-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.35.35%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v1.51a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M192.36%2C224a1.25%2C1.25%2C0%2C0%2C0%2C.08.53.5.5%2C0%2C0%2C0%2C.21.24.44.44%2C0%2C0%2C0%2C.28%2C0%2C1.34%2C1.34%2C0%2C0%2C0%2C.3-.12%2C1.82%2C1.82%2C0%2C0%2C0%2C.47-.36%2C1.92%2C1.92%2C0%2C0%2C0%2C.28-.42%2C2.24%2C2.24%2C0%2C0%2C1%2C.16-.26.57.57%2C0%2C0%2C1%2C.16-.14l1.27-.73c.15-.08.22%2C0%2C.22.21a2.39%2C2.39%2C0%2C0%2C1-.15.63%2C6.46%2C6.46%2C0%2C0%2C1-.45%2C1%2C6.94%2C6.94%2C0%2C0%2C1-.8%2C1.13%2C4.5%2C4.5%2C0%2C0%2C1-1.16.95%2C2.23%2C2.23%2C0%2C0%2C1-1.12.37%2C1.09%2C1.09%2C0%2C0%2C1-.83-.32%2C2.21%2C2.21%2C0%2C0%2C1-.51-1%2C6.65%2C6.65%2C0%2C0%2C1-.17-1.6%2C8.85%2C8.85%2C0%2C0%2C1%2C.17-1.71%2C7.6%2C7.6%2C0%2C0%2C1%2C.51-1.57%2C5.63%2C5.63%2C0%2C0%2C1%2C.83-1.33%2C4.43%2C4.43%2C0%2C0%2C1%2C1.12-1%2C2%2C2%2C0%2C0%2C1%2C1.22-.33%2C1.23%2C1.23%2C0%2C0%2C1%2C.81.48%2C2.42%2C2.42%2C0%2C0%2C1%2C.46%2C1%2C6%2C6%2C0%2C0%2C1%2C.14%2C1.36v.42a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23Zm.87-3.38a1.46%2C1.46%2C0%2C0%2C0-.62.73%2C3.07%2C3.07%2C0%2C0%2C0-.25%2C1l1.75-1a1.27%2C1.27%2C0%2C0%2C0-.25-.7C193.71%2C220.5%2C193.51%2C220.49%2C193.23%2C220.65Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M202.18%2C223.9a2.63%2C2.63%2C0%2C0%2C1-.1.3.46.46%2C0%2C0%2C1-.19.22l-1.27.74a.13.13%2C0%2C0%2C1-.17%2C0%2C.32.32%2C0%2C0%2C1-.07-.22s0-.07%2C0-.11l.74-3.11-2-5.9a.28.28%2C0%2C0%2C1%2C0-.1.59.59%2C0%2C0%2C1%2C.07-.29.42.42%2C0%2C0%2C1%2C.16-.2l1.28-.74c.08%2C0%2C.14%2C0%2C.18%2C0a.5.5%2C0%2C0%2C1%2C.1.19L202%2C218l1.07-4.52a1.25%2C1.25%2C0%2C0%2C1%2C.1-.29.54.54%2C0%2C0%2C1%2C.18-.23l1.29-.74a.13.13%2C0%2C0%2C1%2C.17%2C0%2C.29.29%2C0%2C0%2C1%2C.07.21.36.36%2C0%2C0%2C1%2C0%2C.11Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M211%2C211.86c0%2C.15%2C0%2C.34%2C0%2C.57s0%2C.43%2C0%2C.58a6.37%2C6.37%2C0%2C0%2C1-.21%2C1.48%2C7.08%2C7.08%2C0%2C0%2C1-.54%2C1.41%2C5.67%2C5.67%2C0%2C0%2C1-.82%2C1.22%2C4.35%2C4.35%2C0%2C0%2C1-1.08.89%2C2.17%2C2.17%2C0%2C0%2C1-1.07.35%2C1.16%2C1.16%2C0%2C0%2C1-.82-.27%2C1.74%2C1.74%2C0%2C0%2C1-.54-.79%2C3.67%2C3.67%2C0%2C0%2C1-.21-1.23c0-.14%2C0-.33%2C0-.57s0-.43%2C0-.58a5.84%2C5.84%2C0%2C0%2C1%2C.2-1.47%2C6.85%2C6.85%2C0%2C0%2C1%2C.54-1.41%2C6.17%2C6.17%2C0%2C0%2C1%2C.83-1.23%2C4.31%2C4.31%2C0%2C0%2C1%2C1.07-.9%2C2.34%2C2.34%2C0%2C0%2C1%2C1.08-.35%2C1.32%2C1.32%2C0%2C0%2C1%2C.83.28%2C1.65%2C1.65%2C0%2C0%2C1%2C.53.79A3.76%2C3.76%2C0%2C0%2C1%2C211%2C211.86ZM207.43%2C215a.94.94%2C0%2C0%2C0%2C.27.73c.15.13.36.11.62%2C0A1.55%2C1.55%2C0%2C0%2C0%2C209%2C215a2.55%2C2.55%2C0%2C0%2C0%2C.27-1.05c0-.15%2C0-.33%2C0-.52s0-.36%2C0-.5a1%2C1%2C0%2C0%2C0-.27-.74.55.55%2C0%2C0%2C0-.63%2C0%2C1.61%2C1.61%2C0%2C0%2C0-.62.69%2C2.55%2C2.55%2C0%2C0%2C0-.27%2C1.05c0%2C.16%2C0%2C.33%2C0%2C.52S207.42%2C214.84%2C207.43%2C215Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M212.33%2C208.15a.67.67%2C0%2C0%2C1%2C.08-.33.46.46%2C0%2C0%2C1%2C.18-.22l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v3.8a1.66%2C1.66%2C0%2C0%2C0%2C.19.92c.12.19.33.2.61%2C0a1.36%2C1.36%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14v-3.8a.8.8%2C0%2C0%2C1%2C.08-.33.46.46%2C0%2C0%2C1%2C.18-.22l1.23-.71a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v7a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.13.65a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-.35a4%2C4%2C0%2C0%2C1-.19.43%2C3.68%2C3.68%2C0%2C0%2C1-.28.45%2C3.78%2C3.78%2C0%2C0%2C1-.38.43%2C2.8%2C2.8%2C0%2C0%2C1-.53.39c-.63.36-1.13.37-1.5%2C0a3.13%2C3.13%2C0%2C0%2C1-.56-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M222.58%2C201.83a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v1.52a.67.67%2C0%2C0%2C1-.08.33.54.54%2C0%2C0%2C1-.18.23l-.89.51a2%2C2%2C0%2C0%2C0-.89%2C1.89v3.69a.8.8%2C0%2C0%2C1-.08.33.5.5%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.14-.65a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v.35a4.78%2C4.78%2C0%2C0%2C1%2C.54-.86%2C2.71%2C2.71%2C0%2C0%2C1%2C.75-.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M226%2C205.42a4%2C4%2C0%2C0%2C1%2C.49-1.92%2C6.63%2C6.63%2C0%2C0%2C1%2C1.6-1.87l1.14-1a.81.81%2C0%2C0%2C0-.13-.52c-.08-.1-.23-.1-.43%2C0a1.17%2C1.17%2C0%2C0%2C0-.35.3%2C2.1%2C2.1%2C0%2C0%2C0-.18.28.83.83%2C0%2C0%2C1-.17.24.86.86%2C0%2C0%2C1-.18.14l-1.24.71a.14.14%2C0%2C0%2C1-.16%2C0%2C.25.25%2C0%2C0%2C1%2C0-.21%2C3.09%2C3.09%2C0%2C0%2C1%2C.19-.84%2C5.13%2C5.13%2C0%2C0%2C1%2C.49-1%2C5.35%2C5.35%2C0%2C0%2C1%2C.73-1%2C3.79%2C3.79%2C0%2C0%2C1%2C.92-.74%2C2.44%2C2.44%2C0%2C0%2C1%2C1-.37%2C1%2C1%2C0%2C0%2C1%2C.72.2%2C1.29%2C1.29%2C0%2C0%2C1%2C.43.7%2C4.1%2C4.1%2C0%2C0%2C1%2C.14%2C1.13v4.54a.8.8%2C0%2C0%2C1-.08.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24V205a4.18%2C4.18%2C0%2C0%2C1-.58%2C1%2C2.94%2C2.94%2C0%2C0%2C1-.91.79%2C1.58%2C1.58%2C0%2C0%2C1-.74.25.75.75%2C0%2C0%2C1-.55-.18%2C1.15%2C1.15%2C0%2C0%2C1-.34-.55A3.25%2C3.25%2C0%2C0%2C1%2C226%2C205.42Zm2.22-.94a1.54%2C1.54%2C0%2C0%2C0%2C.4-.34%2C2.76%2C2.76%2C0%2C0%2C0%2C.32-.49%2C3%2C3%2C0%2C0%2C0%2C.21-.59%2C2.06%2C2.06%2C0%2C0%2C0%2C.08-.6l-.9.72a2.43%2C2.43%2C0%2C0%2C0-.42.5%2C1.09%2C1.09%2C0%2C0%2C0-.16.56q0%2C.28.12.33A.44.44%2C0%2C0%2C0%2C228.25%2C204.48Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M234.13%2C198.53c0%2C.16%2C0%2C.34%2C0%2C.54s0%2C.37%2C0%2C.51a1%2C1%2C0%2C0%2C0%2C.27.72c.15.13.36.12.62%2C0a1.47%2C1.47%2C0%2C0%2C0%2C.49-.42%2C2.26%2C2.26%2C0%2C0%2C0%2C.28-.56%2C2.33%2C2.33%2C0%2C0%2C1%2C.11-.28.42.42%2C0%2C0%2C1%2C.17-.18l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C6.05%2C6.05%2C0%2C0%2C1-.53%2C1.94%2C6.64%2C6.64%2C0%2C0%2C1-.79%2C1.25A4.78%2C4.78%2C0%2C0%2C1%2C235%2C202.6a2.48%2C2.48%2C0%2C0%2C1-1%2C.35%2C1.26%2C1.26%2C0%2C0%2C1-.83-.22%2C1.63%2C1.63%2C0%2C0%2C1-.56-.76%2C3.65%2C3.65%2C0%2C0%2C1-.23-1.3c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.19%2C6.19%2C0%2C0%2C1%2C.23-1.56%2C7.12%2C7.12%2C0%2C0%2C1%2C.56-1.42%2C6.22%2C6.22%2C0%2C0%2C1%2C.83-1.16%2C4.33%2C4.33%2C0%2C0%2C1%2C1-.83%2C2.24%2C2.24%2C0%2C0%2C1%2C1.27-.4%2C1.34%2C1.34%2C0%2C0%2C1%2C.79.34%2C1.55%2C1.55%2C0%2C0%2C1%2C.4.69%2C2.93%2C2.93%2C0%2C0%2C1%2C.13.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.73c-.07%2C0-.13%2C0-.17%2C0a.4.4%2C0%2C0%2C1-.11-.14.46.46%2C0%2C0%2C0-.28-.24.73.73%2C0%2C0%2C0-.49.14%2C1.55%2C1.55%2C0%2C0%2C0-.62.69A2.49%2C2.49%2C0%2C0%2C0%2C234.13%2C198.53Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M240.47%2C194.87c0%2C.15%2C0%2C.33%2C0%2C.53s0%2C.37%2C0%2C.52a1%2C1%2C0%2C0%2C0%2C.27.72c.15.12.36.11.62%2C0a1.37%2C1.37%2C0%2C0%2C0%2C.49-.42%2C2%2C2%2C0%2C0%2C0%2C.28-.56%2C1.69%2C1.69%2C0%2C0%2C1%2C.11-.27.46.46%2C0%2C0%2C1%2C.17-.19l1.28-.74a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.29.29%2C0%2C0%2C1%2C.07.24%2C4.81%2C4.81%2C0%2C0%2C1-.12.78%2C6%2C6%2C0%2C0%2C1-.41%2C1.16%2C6.34%2C6.34%2C0%2C0%2C1-.79%2C1.25%2C4.46%2C4.46%2C0%2C0%2C1-1.27%2C1.07%2C2.35%2C2.35%2C0%2C0%2C1-1%2C.35%2C1.31%2C1.31%2C0%2C0%2C1-.83-.21%2C1.74%2C1.74%2C0%2C0%2C1-.56-.76%2C3.71%2C3.71%2C0%2C0%2C1-.23-1.31c0-.14%2C0-.34%2C0-.59s0-.45%2C0-.61a6.26%2C6.26%2C0%2C0%2C1%2C.23-1.56%2C6.8%2C6.8%2C0%2C0%2C1%2C.56-1.41%2C6%2C6%2C0%2C0%2C1%2C.83-1.17%2C4.59%2C4.59%2C0%2C0%2C1%2C1-.83%2C2.16%2C2.16%2C0%2C0%2C1%2C1.27-.39%2C1.22%2C1.22%2C0%2C0%2C1%2C.79.34%2C1.64%2C1.64%2C0%2C0%2C1%2C.41.68%2C2.9%2C2.9%2C0%2C0%2C1%2C.12.63.66.66%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.28.74a.15.15%2C0%2C0%2C1-.17%2C0%2C.58.58%2C0%2C0%2C1-.11-.15.44.44%2C0%2C0%2C0-.28-.24.75.75%2C0%2C0%2C0-.49.14%2C1.67%2C1.67%2C0%2C0%2C0-.62.69A2.49%2C2.49%2C0%2C0%2C0%2C240.47%2C194.87Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M250.36%2C189.11c0%2C.15%2C0%2C.34%2C0%2C.57s0%2C.43%2C0%2C.59a6.28%2C6.28%2C0%2C0%2C1-.21%2C1.47%2C6.64%2C6.64%2C0%2C0%2C1-.54%2C1.41%2C5.43%2C5.43%2C0%2C0%2C1-.82%2C1.22%2C4.14%2C4.14%2C0%2C0%2C1-1.08.89%2C2.17%2C2.17%2C0%2C0%2C1-1.07.35%2C1.23%2C1.23%2C0%2C0%2C1-.83-.26%2C1.9%2C1.9%2C0%2C0%2C1-.53-.8%2C3.91%2C3.91%2C0%2C0%2C1-.22-1.22c0-.15%2C0-.34%2C0-.57s0-.43%2C0-.59a6.36%2C6.36%2C0%2C0%2C1%2C.21-1.47%2C7.08%2C7.08%2C0%2C0%2C1%2C.54-1.41%2C5.77%2C5.77%2C0%2C0%2C1%2C.83-1.23%2C4.31%2C4.31%2C0%2C0%2C1%2C1.07-.9%2C2.2%2C2.2%2C0%2C0%2C1%2C1.08-.34%2C1.31%2C1.31%2C0%2C0%2C1%2C.83.27%2C1.7%2C1.7%2C0%2C0%2C1%2C.53.79A3.76%2C3.76%2C0%2C0%2C1%2C250.36%2C189.11Zm-3.54%2C3.13a1%2C1%2C0%2C0%2C0%2C.27.74c.15.12.36.11.62%2C0a1.63%2C1.63%2C0%2C0%2C0%2C.63-.69%2C2.5%2C2.5%2C0%2C0%2C0%2C.27-1c0-.16%2C0-.34%2C0-.53s0-.35%2C0-.5a1%2C1%2C0%2C0%2C0-.27-.73c-.16-.13-.37-.11-.63%2C0a1.58%2C1.58%2C0%2C0%2C0-.62.68%2C2.55%2C2.55%2C0%2C0%2C0-.27%2C1.05%2C4.27%2C4.27%2C0%2C0%2C0%2C0%2C.52A3.78%2C3.78%2C0%2C0%2C0%2C246.82%2C192.24Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M251.72%2C185.41a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.33.33%2C0%2C0%2C1%2C.08.24v3.8a1.7%2C1.7%2C0%2C0%2C0%2C.19.93c.12.19.32.2.61%2C0a1.33%2C1.33%2C0%2C0%2C0%2C.61-.74%2C3.33%2C3.33%2C0%2C0%2C0%2C.18-1.14v-3.79a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v7a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-1.13.65a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.07-.24v-.34l-.19.43a3.59%2C3.59%2C0%2C0%2C1-.28.44%2C3.1%2C3.1%2C0%2C0%2C1-.39.43%2C2.71%2C2.71%2C0%2C0%2C1-.52.39c-.63.36-1.13.38-1.5%2C0a3.13%2C3.13%2C0%2C0%2C1-.56-2.27Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M263.62%2C185.52a.78.78%2C0%2C0%2C1-.07.33.57.57%2C0%2C0%2C1-.19.23l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.29.29%2C0%2C0%2C1-.08-.24v-3.79a1.63%2C1.63%2C0%2C0%2C0-.2-.92c-.14-.18-.36-.18-.65%2C0a1.55%2C1.55%2C0%2C0%2C0-.64.76%2C3.19%2C3.19%2C0%2C0%2C0-.2%2C1.15v3.8a.78.78%2C0%2C0%2C1-.07.33.53.53%2C0%2C0%2C1-.19.22l-1.23.71a.14.14%2C0%2C0%2C1-.18%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-7a.8.8%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.18-.68a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24v.34c.06-.13.12-.27.2-.43a3.68%2C3.68%2C0%2C0%2C1%2C.28-.45%2C3.16%2C3.16%2C0%2C0%2C1%2C.39-.44%2C2.58%2C2.58%2C0%2C0%2C1%2C.51-.37%2C2.07%2C2.07%2C0%2C0%2C1%2C.86-.3.87.87%2C0%2C0%2C1%2C.66.24%2C1.81%2C1.81%2C0%2C0%2C1%2C.44.82%2C5.67%2C5.67%2C0%2C0%2C1%2C.15%2C1.44Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M267.48%2C180.65a.8.8%2C0%2C0%2C0%2C.1.48c.06.09.17.09.32%2C0l.78-.45a.14.14%2C0%2C0%2C1%2C.18%2C0c.06%2C0%2C.08.12.08.24v1.51a.67.67%2C0%2C0%2C1-.08.33.49.49%2C0%2C0%2C1-.18.23l-.93.53a1.78%2C1.78%2C0%2C0%2C1-.83.28.87.87%2C0%2C0%2C1-.64-.22%2C1.53%2C1.53%2C0%2C0%2C1-.41-.69%2C4.15%2C4.15%2C0%2C0%2C1-.14-1.15v-2.52l-.72.41a.15.15%2C0%2C0%2C1-.19%2C0%2C.33.33%2C0%2C0%2C1-.08-.24v-1.51a.73.73%2C0%2C0%2C1%2C.08-.33.45.45%2C0%2C0%2C1%2C.19-.23l.72-.42v-2.44a.67.67%2C0%2C0%2C1%2C.08-.33.49.49%2C0%2C0%2C1%2C.18-.23l1.23-.71a.14.14%2C0%2C0%2C1%2C.18%2C0%2C.29.29%2C0%2C0%2C1%2C.08.24v2.45l1.1-.64a.15.15%2C0%2C0%2C1%2C.19%2C0%2C.33.33%2C0%2C0%2C1%2C.07.24V177a.78.78%2C0%2C0%2C1-.07.33.5.5%2C0%2C0%2C1-.19.23l-1.1.64Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Code--inject-87%22%3E%3Cg%20id%3D%22freepik--Numbers--inject-87%22%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M165.5%2C265.65a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.71%2C3.71%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.75%2C3.75%2C0%2C0%2C0-1.68%2C2.92v39.13a3.75%2C3.75%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.92Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M136.39%2C316.14a3.75%2C3.75%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.13c-.79.3-1.39-.14-1.39-1.1V279.74a3.49%2C3.49%2C0%2C0%2C1%2C.49-1.66l-4.73-2.73a3.36%2C3.36%2C0%2C0%2C0-.5%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M165.45%2C265.17c-.2-.72-.85-.94-1.63-.5l-21%2C12.16a3.34%2C3.34%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.45%2C3.45%2C0%2C0%2C1%2C1.19-1.26l21-12.15a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.79A3.77%2C3.77%2C0%2C0%2C1%2C165.45%2C265.17Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M158.21%2C276.18a.38.38%2C0%2C0%2C1%2C.49%2C0%2C.86.86%2C0%2C0%2C1%2C.2.63v2.59a4%2C4%2C0%2C0%2C1-.1.86c-.07.31-.17.73-.31%2C1.25l-5.9%2C24.38a5.37%2C5.37%2C0%2C0%2C1-.27.8%2C1.17%2C1.17%2C0%2C0%2C1-.47.57l-2.12%2C1.22a.35.35%2C0%2C0%2C1-.48%2C0%2C.8.8%2C0%2C0%2C1-.2-.62%2C2.75%2C2.75%2C0%2C0%2C1%2C.07-.52l5.93-24.43-8%2C4.61a.36.36%2C0%2C0%2C1-.48%2C0%2C.83.83%2C0%2C0%2C1-.21-.63v-2.78a1.94%2C1.94%2C0%2C0%2C1%2C.21-.86%2C1.18%2C1.18%2C0%2C0%2C1%2C.48-.59Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M199.66%2C245.92A3.74%2C3.74%2C0%2C0%2C0%2C198%2C243l-1.37-.79a3.71%2C3.71%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.91v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.77%2C3.77%2C0%2C0%2C0%2C3.37%2C0L198%2C288a3.75%2C3.75%2C0%2C0%2C0%2C1.68-2.92Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M170.55%2C296.42a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.92l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.13c-.79.3-1.4-.14-1.4-1.1V260a3.4%2C3.4%2C0%2C0%2C1%2C.5-1.66L171%2C255.63a3.45%2C3.45%2C0%2C0%2C0-.49%2C1.65Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M199.6%2C245.45c-.19-.72-.85-.95-1.62-.5l-21%2C12.16a3.26%2C3.26%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.42%2C3.42%2C0%2C0%2C1%2C1.18-1.26l21-12.15a3.75%2C3.75%2C0%2C0%2C1%2C3.36%2C0L198%2C243A3.72%2C3.72%2C0%2C0%2C1%2C199.6%2C245.45Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M181.52%2C263.78a2%2C2%2C0%2C0%2C1%2C.21-.87%2C1.27%2C1.27%2C0%2C0%2C1%2C.48-.59l9.57-5.52a.38.38%2C0%2C0%2C1%2C.49%2C0%2C.86.86%2C0%2C0%2C1%2C.2.63v2.78a2%2C2%2C0%2C0%2C1-.2.86%2C1.33%2C1.33%2C0%2C0%2C1-.49.6l-7.15%2C4.12-.28%2C5.18a7%2C7%2C0%2C0%2C1%2C1.36-1.29q.67-.46%2C1.11-.72a6.64%2C6.64%2C0%2C0%2C1%2C2.65-.94%2C3%2C3%2C0%2C0%2C1%2C2.11.52%2C4.24%2C4.24%2C0%2C0%2C1%2C1.4%2C2%2C10.57%2C10.57%2C0%2C0%2C1%2C.51%2C3.58%2C19.32%2C19.32%2C0%2C0%2C1-.52%2C4.6%2C16.41%2C16.41%2C0%2C0%2C1-1.43%2C3.76%2C12.28%2C12.28%2C0%2C0%2C1-2.13%2C2.91%2C11.93%2C11.93%2C0%2C0%2C1-2.59%2C2%2C7.54%2C7.54%2C0%2C0%2C1-3%2C1.12%2C3.09%2C3.09%2C0%2C0%2C1-2.09-.5%2C3.65%2C3.65%2C0%2C0%2C1-1.24-1.75%2C8.46%2C8.46%2C0%2C0%2C1-.47-2.65%2C1.6%2C1.6%2C0%2C0%2C1%2C.19-.88%2C1.38%2C1.38%2C0%2C0%2C1%2C.49-.58l2.06-1.19a.43.43%2C0%2C0%2C1%2C.46%2C0%2C.77.77%2C0%2C0%2C1%2C.28.53%2C2.49%2C2.49%2C0%2C0%2C0%2C.49%2C1.19%2C1.36%2C1.36%2C0%2C0%2C0%2C.76.46%2C1.88%2C1.88%2C0%2C0%2C0%2C1-.11%2C7%2C7%2C0%2C0%2C0%2C1.12-.53%2C6%2C6%2C0%2C0%2C0%2C2.34-2.57%2C8.29%2C8.29%2C0%2C0%2C0%2C.89-3.84%2C2.86%2C2.86%2C0%2C0%2C0-.89-2.43%2C2.08%2C2.08%2C0%2C0%2C0-2.34.14%2C5.75%2C5.75%2C0%2C0%2C0-1.94%2C1.7c-.18.27-.35.5-.51.71a1.69%2C1.69%2C0%2C0%2C1-.58.51l-2.34%2C1.36a.38.38%2C0%2C0%2C1-.49%2C0%2C.85.85%2C0%2C0%2C1-.2-.62Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M131.29%2C285.37a3.73%2C3.73%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.73%2C3.73%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M102.18%2C335.87a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.79.3-1.39-.15-1.39-1.11V299.46a3.41%2C3.41%2C0%2C0%2C1%2C.49-1.66l-4.74-2.73a3.49%2C3.49%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M131.23%2C284.89c-.19-.71-.84-.94-1.62-.49l-21%2C12.15a3.29%2C3.29%2C0%2C0%2C0-1.19%2C1.26l-4.73-2.74a3.4%2C3.4%2C0%2C0%2C1%2C1.18-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.8A3.67%2C3.67%2C0%2C0%2C1%2C131.23%2C284.89Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M124%2C295.9a.36.36%2C0%2C0%2C1%2C.48%2C0%2C.86.86%2C0%2C0%2C1%2C.21.63v2.59a4.64%2C4.64%2C0%2C0%2C1-.1.86c-.07.31-.17.73-.31%2C1.26l-5.91%2C24.38a4.67%2C4.67%2C0%2C0%2C1-.26.8%2C1.15%2C1.15%2C0%2C0%2C1-.47.56l-2.12%2C1.22a.36.36%2C0%2C0%2C1-.48%2C0%2C.83.83%2C0%2C0%2C1-.21-.63%2C3.07%2C3.07%2C0%2C0%2C1%2C.08-.51l5.93-24.44-8%2C4.62a.35.35%2C0%2C0%2C1-.48%2C0%2C.8.8%2C0%2C0%2C1-.21-.62v-2.79a2%2C2%2C0%2C0%2C1%2C.21-.86%2C1.22%2C1.22%2C0%2C0%2C1%2C.48-.59Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M256.58%2C213.06a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.75%2C3.75%2C0%2C0%2C0-3.36%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.69%2C3.69%2C0%2C0%2C0%2C3.36%2C0l21-12.15a3.73%2C3.73%2C0%2C0%2C0%2C1.69-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M227.48%2C263.56a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.8.3-1.4-.15-1.4-1.11V227.15a3.52%2C3.52%2C0%2C0%2C1%2C.49-1.66L228%2C222.76a3.38%2C3.38%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M256.53%2C212.58c-.2-.71-.85-.94-1.62-.49l-21%2C12.15a3.39%2C3.39%2C0%2C0%2C0-1.18%2C1.25L228%2C222.76a3.42%2C3.42%2C0%2C0%2C1%2C1.19-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.38.8A3.67%2C3.67%2C0%2C0%2C1%2C256.53%2C212.58Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M245.3%2C238a8.57%2C8.57%2C0%2C0%2C0%2C1-2.49%2C10.56%2C10.56%2C0%2C0%2C0%2C.22-1.93%2C3.61%2C3.61%2C0%2C0%2C0-.64-2.35c-.42-.5-1.13-.47-2.11.1a4.83%2C4.83%2C0%2C0%2C0-2.05%2C2.24%2C12%2C12%2C0%2C0%2C0-.93%2C3.24%2C2.42%2C2.42%2C0%2C0%2C1-.31.95%2C1.42%2C1.42%2C0%2C0%2C1-.46.52l-2%2C1.16a.42.42%2C0%2C0%2C1-.49%2C0c-.15-.11-.21-.33-.19-.66a16.56%2C16.56%2C0%2C0%2C1%2C.58-3.67%2C18.21%2C18.21%2C0%2C0%2C1%2C1.36-3.52%2C15.67%2C15.67%2C0%2C0%2C1%2C2-3%2C9.61%2C9.61%2C0%2C0%2C1%2C2.47-2.11%2C4.73%2C4.73%2C0%2C0%2C1%2C2.78-.8%2C3%2C3%2C0%2C0%2C1%2C1.93%2C1%2C5.15%2C5.15%2C0%2C0%2C1%2C1.13%2C2.17%2C10.52%2C10.52%2C0%2C0%2C1%2C.37%2C2.86c0%2C.65%2C0%2C1.29-.07%2C1.91a11%2C11%2C0%2C0%2C1-.36%2C2%2C20.31%2C20.31%2C0%2C0%2C1-.81%2C2.31%2C31.73%2C31.73%2C0%2C0%2C1-1.43%2C2.88L242.55%2C250l7.08-4.08a.36.36%2C0%2C0%2C1%2C.48%2C0%2C.83.83%2C0%2C0%2C1%2C.21.63v2.78a1.91%2C1.91%2C0%2C0%2C1-.21.86%2C1.38%2C1.38%2C0%2C0%2C1-.48.6l-11.89%2C6.86a.38.38%2C0%2C0%2C1-.49%2C0%2C.86.86%2C0%2C0%2C1-.2-.63v-2.39a3.52%2C3.52%2C0%2C0%2C1%2C.26-1.31%2C6.1%2C6.1%2C0%2C0%2C1%2C.43-.93Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M290.74%2C193.34a3.72%2C3.72%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.73%2C3.73%2C0%2C0%2C0-1.69%2C2.92v39.14a3.73%2C3.73%2C0%2C0%2C0%2C1.69%2C2.91l1.37.79a3.69%2C3.69%2C0%2C0%2C0%2C3.36%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M261.63%2C243.84a3.73%2C3.73%2C0%2C0%2C0%2C1.69%2C2.91l1.37.79a3.73%2C3.73%2C0%2C0%2C0%2C3.07.14c-.79.3-1.39-.15-1.39-1.11V207.43a3.49%2C3.49%2C0%2C0%2C1%2C.49-1.66L262.13%2C203a3.4%2C3.4%2C0%2C0%2C0-.5%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M290.69%2C192.86c-.2-.71-.85-.94-1.63-.5l-21%2C12.16a3.42%2C3.42%2C0%2C0%2C0-1.19%2C1.25L262.13%2C203a3.34%2C3.34%2C0%2C0%2C1%2C1.19-1.25l21-12.16a3.77%2C3.77%2C0%2C0%2C1%2C3.37%2C0l1.37.8A3.72%2C3.72%2C0%2C0%2C1%2C290.69%2C192.86Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M284.7%2C213.38c0%2C.49%2C0%2C1%2C0%2C1.63v3.69c0%2C.6%2C0%2C1.15%2C0%2C1.66a32.22%2C32.22%2C0%2C0%2C1-.45%2C4.47%2C17.87%2C17.87%2C0%2C0%2C1-1.17%2C4%2C13.73%2C13.73%2C0%2C0%2C1-2.08%2C3.43%2C11.53%2C11.53%2C0%2C0%2C1-3.15%2C2.62%2C5.93%2C5.93%2C0%2C0%2C1-3.15%2C1%2C2.79%2C2.79%2C0%2C0%2C1-2.08-1%2C6.37%2C6.37%2C0%2C0%2C1-1.17-2.7%2C22.3%2C22.3%2C0%2C0%2C1-.45-4c0-1-.05-2.09-.05-3.36s0-2.4.05-3.42a33.28%2C33.28%2C0%2C0%2C1%2C.45-4.51%2C18.91%2C18.91%2C0%2C0%2C1%2C1.17-4.1%2C14.4%2C14.4%2C0%2C0%2C1%2C2.08-3.49%2C11.25%2C11.25%2C0%2C0%2C1%2C3.15-2.67%2C6.1%2C6.1%2C0%2C0%2C1%2C3.15-1%2C2.74%2C2.74%2C0%2C0%2C1%2C2.08%2C1%2C6.09%2C6.09%2C0%2C0%2C1%2C1.17%2C2.69A22.41%2C22.41%2C0%2C0%2C1%2C284.7%2C213.38Zm-10.26%2C12.7a8%2C8%2C0%2C0%2C0%2C.88%2C3.87c.5.74%2C1.34.77%2C2.53.08a5.72%2C5.72%2C0%2C0%2C0%2C2.54-3%2C15.67%2C15.67%2C0%2C0%2C0%2C.87-4.87c0-1%2C.05-2.12.05-3.33s0-2.29-.05-3.26a7.89%2C7.89%2C0%2C0%2C0-.87-3.86c-.51-.74-1.35-.77-2.54-.09a5.7%2C5.7%2C0%2C0%2C0-2.53%2C3%2C16%2C16%2C0%2C0%2C0-.88%2C4.88c0%2C1-.05%2C2.12-.05%2C3.32S274.41%2C225.11%2C274.44%2C226.08Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--speach-bubble--inject-87%22%3E%3Cpath%20d%3D%22M324.9%2C173.62a3.75%2C3.75%2C0%2C0%2C0-1.68-2.92l-1.37-.79a3.77%2C3.77%2C0%2C0%2C0-3.37%2C0l-21%2C12.15a3.72%2C3.72%2C0%2C0%2C0-1.68%2C2.92v39.14a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.71%2C3.71%2C0%2C0%2C0%2C3.37%2C0l21-12.15a3.72%2C3.72%2C0%2C0%2C0%2C1.68-2.91Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M295.79%2C224.12a3.72%2C3.72%2C0%2C0%2C0%2C1.68%2C2.91l1.37.79a3.75%2C3.75%2C0%2C0%2C0%2C3.08.14c-.79.3-1.4-.15-1.4-1.11V187.71a3.4%2C3.4%2C0%2C0%2C1%2C.5-1.66l-4.74-2.73a3.49%2C3.49%2C0%2C0%2C0-.49%2C1.66Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M324.84%2C173.14c-.19-.71-.84-.94-1.62-.5l-21%2C12.16a3.34%2C3.34%2C0%2C0%2C0-1.19%2C1.25l-4.73-2.73a3.32%2C3.32%2C0%2C0%2C1%2C1.18-1.25l21-12.16a3.75%2C3.75%2C0%2C0%2C1%2C3.36%2C0l1.38.8A3.67%2C3.67%2C0%2C0%2C1%2C324.84%2C173.14Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20d%3D%22M206.5%2C256.14l10-5.79a2.35%2C2.35%2C0%2C0%2C1%2C2.16%2C0l1.9%2C1.1a2.37%2C2.37%2C0%2C0%2C1%2C1.08%2C1.87v2.19a2.4%2C2.4%2C0%2C0%2C1-1.08%2C1.88l-10%2C5.78a2.37%2C2.37%2C0%2C0%2C1-2.17%2C0l-1.89-1.09a2.41%2C2.41%2C0%2C0%2C1-1.09-1.88V258A2.38%2C2.38%2C0%2C0%2C1%2C206.5%2C256.14Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M210.23%2C263.3a2.31%2C2.31%2C0%2C0%2C1-1.83-.13l-1.9-1.09a2.4%2C2.4%2C0%2C0%2C1-1.08-1.88V258a2.27%2C2.27%2C0%2C0%2C1%2C.31-1.07l4.06%2C2.35a2.26%2C2.26%2C0%2C0%2C0-.31%2C1.06v2.2C209.48%2C263.11%2C209.79%2C263.39%2C210.23%2C263.3Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M209.48%2C262.55v-2.19a2.4%2C2.4%2C0%2C0%2C1%2C1.08-1.88l10-5.79c.6-.34%2C1.08-.06%2C1.08.63v2.19a2.4%2C2.4%2C0%2C0%2C1-1.08%2C1.88l-10%2C5.78C210%2C263.52%2C209.48%2C263.24%2C209.48%2C262.55Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--Character--inject-87%22%3E%3Cg%20id%3D%22freepik--character--inject-87%22%3E%3Cpath%20id%3D%22freepik--shadow--inject-87%22%20d%3D%22M435.9%2C298.69a12.82%2C12.82%2C0%2C0%2C0-5.32-6.82L400%2C274.21a31.09%2C31.09%2C0%2C0%2C0-5.7-.37c-6.73.21-13.15%2C2.82-19.18%2C5.81-13.69%2C6.81-27.68%2C11.65-40.29%2C20.42-1.6%2C1.12-6%2C3.79-3.48%2C6.53a8.12%2C8.12%2C0%2C0%2C0%2C5.43%2C2.06c4-.31%2C11.9-6.68%2C10.65-4.8a6.84%2C6.84%2C0%2C0%2C0-1.07%2C3.62%2C2.63%2C2.63%2C0%2C0%2C0%2C1.51%2C2.39c1.1.37%2C1.58-1.88%2C2.06-3.15a11.8%2C11.8%2C0%2C0%2C1%2C4.57-5.69%2C15.74%2C15.74%2C0%2C0%2C1%2C10.94-1.91%2C47.11%2C47.11%2C0%2C0%2C1%2C10.78%2C3.48c5.74%2C2.38%2C9.6%2C3.7%2C15.05%2C6.67%2C2.52%2C1.37%2C9.59%2C5.78%2C10%2C6.26.61.73.48%2C5.89.55%2C6.83l.36%2C5.27%2C28.42-16.41a12.62%2C12.62%2C0%2C0%2C0%2C4.85-5.62c0-.23.08-.47.11-.7A31.5%2C31.5%2C0%2C0%2C0%2C435.9%2C298.69Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M414.33%2C332.12c-.8.67-1.72%2C1.46-1.73%2C2.41a9.62%2C9.62%2C0%2C0%2C0%2C2%2C5.65c1.75%2C2.37%2C2.6%2C6.6%2C2.66%2C9.42s-.46%2C9.93%2C2.76%2C13.1%2C11.6%2C5.51%2C12.17.35-7.45-26.16-7.45-26.16Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M418.7%2C336a77.21%2C77.21%2C0%2C0%2C1%2C2.23%2C11.48c.42%2C4.24%2C1.32%2C7.3%2C3.31%2C8.65s5.17%2C1.49%2C4.3-1.46-3.83-17.74-3.83-17.74Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.14%2C262.38s15.95%2C9.54%2C23.64%2C14.82%2C15%2C10.43%2C16.22%2C14.14c1.3%2C3.93-.11%2C12.78-1.95%2C21.24s-5.39%2C23.64-5.39%2C23.64l-20-38.48-22.29-18.52Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M409%2C294.89l-19.94-13.61%2C10.09-18.9s14.78%2C8.5%2C25.69%2C15.8c8.84%2C5.91%2C15.16%2C10.51%2C15.21%2C14.37s-1.42%2C17.12-3.63%2C22.62c0%2C0-8.72%2C2.86-16.36-.53Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M409%2C294.89l-19.94-13.61%2C10.09-18.9s14.78%2C8.5%2C25.69%2C15.8c8.84%2C5.91%2C15.16%2C10.51%2C15.21%2C14.37s-1.42%2C17.12-3.63%2C22.62c0%2C0-8.72%2C2.86-16.36-.53Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.6000000000000001%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M426.47%2C302.8c-1.76-5.75-6.94-9.27-11.44-12.78-3.57-2.8-12.17-9.08-15.68-11.67a9.31%2C9.31%2C0%2C0%2C0%2C.61-5.58c-1.88%2C4.93-3.16%2C6.08-3.16%2C6.08l22.39%2C20.89%2C13.54%2C32.05S428.23%2C308.54%2C426.47%2C302.8Z%22%20style%3D%22opacity%3A0.15%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M430.75%2C363.28c-.74.38-.83%2C2.11-.9%2C3.37s-1.16%2C2.8.45%2C4.94%2C4.66%2C2.64%2C6.85%2C5.55%2C5.47%2C8.21%2C12.26%2C9.31%2C11.81-1.37%2C13-3.43-.06-3.91-4.48-6.15c-4.69-2.39-6-3.1-6-3.1Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M437.31%2C349.11s3.69%2C8.83%2C5.86%2C12.86a47.51%2C47.51%2C0%2C0%2C0%2C9.12%2C11.26c.79.76%2C2.56%2C2.14%2C3.21%2C2.75a1.29%2C1.29%2C0%2C0%2C1%2C.05%2C2c-1.32%2C1.53-7.47%2C2.45-11.18.18s-7.57-6.88-9.84-8.77l-3-2.53a2.81%2C2.81%2C0%2C0%2C1-.95-2.6c0-.27.1-.6.15-1%2C.29-2-3.12-10-3.12-10Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M361.41%2C267c-.92%2C5.48-2.66%2C11.07.62%2C17.79%2C3.17%2C6.5%2C12.24%2C11.81%2C22.17%2C16.41%2C8.22%2C3.81%2C20.32%2C9.28%2C22.75%2C10.09s2.8%2C2.2%2C2.89%2C6.67%2C2.32%2C11.6%2C8.12%2C20.23a214.64%2C214.64%2C0%2C0%2C1%2C11.52%2C19.84s7%2C.77%2C10.14-3.58c0%2C0-14.36-47.87-16.89-53.49s-26.14-22.32-26.14-22.32a31.13%2C31.13%2C0%2C0%2C0%2C2.55-16.28Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.87%2C309.15s-18-7.58-28.74-14.28c-14.79-9.18-12-18-10.5-27.49l38.51-5c2.27%2C10.32-2.14%2C16.37-2.14%2C16.37l13.75%2C10.38c7.16%2C5.51%2C12%2C8.6%2C13.45%2C13.15s6.11%2C21.7%2C6.11%2C21.7a27.68%2C27.68%2C0%2C0%2C1-17%2C6.09s-3.35-5.43-3.89-9.38.33-7.07-1.29-7.93S404.37%2C311.11%2C399.87%2C309.15Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M399.87%2C309.15s-18-7.58-28.74-14.28c-14.79-9.18-12-18-10.5-27.49l38.51-5c2.27%2C10.32-2.14%2C16.37-2.14%2C16.37l13.75%2C10.38c7.16%2C5.51%2C12%2C8.6%2C13.45%2C13.15s6.11%2C21.7%2C6.11%2C21.7a27.68%2C27.68%2C0%2C0%2C1-17%2C6.09s-3.35-5.43-3.89-9.38.33-7.07-1.29-7.93S404.37%2C311.11%2C399.87%2C309.15Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.6000000000000001%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M385.49%2C212.51a43.09%2C43.09%2C0%2C0%2C1%2C8.49%2C0%2C15.37%2C15.37%2C0%2C0%2C1%2C5.81%2C2.36C404.5%2C218%2C415.5%2C227%2C422.34%2C232.15c0%2C0%2C5.76-2.89%2C9.66-5.27%2C3.49-2.13%2C5.33%2C12-1%2C15.94-6.92%2C4.31-7.83%2C4.3-12.83%2C1.75-5.26-2.68-15.76-9.38-20.09-12.1Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M422.34%2C232.15c-2.33%2C1.41-3.69%2C5.58-3.69%2C5.58s-.41-4.42%2C2.82-6.24Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M444.84%2C216.55h0l-1-.7h0a1.07%2C1.07%2C0%2C0%2C0-1%2C0l-9.92%2C4a3.78%2C3.78%2C0%2C0%2C0-2.05%2C2.42L426%2C244.39a1%2C1%2C0%2C0%2C0%2C.26%2C1.07h0l1.07.73h0a1.08%2C1.08%2C0%2C0%2C0%2C1%2C0l9.92-4a3.81%2C3.81%2C0%2C0%2C0%2C2.05-2.42c1-4.35%2C3.94-17.78%2C4.91-22.13A1%2C1%2C0%2C0%2C0%2C444.84%2C216.55Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M432.91%2C221.27a3.68%2C3.68%2C0%2C0%2C0-1%2C1.7L427%2C245.09a1%2C1%2C0%2C0%2C0%2C.22%2C1.06l-1-.68h0a1%2C1%2C0%2C0%2C1-.26-1.07l4.9-22.13a3.72%2C3.72%2C0%2C0%2C1%2C.92-1.61Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M427%2C245.1%2C431.9%2C223a3.82%2C3.82%2C0%2C0%2C1%2C2.06-2.42l9.92-4c.92-.37%2C1.49.12%2C1.28%2C1.09-1%2C4.35-3.94%2C17.78-4.91%2C22.13a3.81%2C3.81%2C0%2C0%2C1-2.05%2C2.42l-9.92%2C4C427.36%2C246.55%2C426.79%2C246.06%2C427%2C245.1Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M444.05%2C222.64c2-.71%2C3.35%2C1.36%2C3.44%2C5.15s-1.68%2C10.93-7.62%2C9.55c-2.31-.53-4.18-4.2-1.92-6a39%2C39%2C0%2C0%2C0%2C5.24-4.8Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M401.77%2C263.88%2C397.13%2C259l-1.95-5.19-1-9.61c5.36-3.47%2C7.32-10%2C5.2-15.07a33.52%2C33.52%2C0%2C0%2C0-6-9.41c-4.2-4.85-6.3-6.47-7.9-7.25-2.2-.18-3.84-.15-3.84-.15s-9.15.73-12.95%2C1.27a64.19%2C64.19%2C0%2C0%2C0-6.62%2C1.28c2.88%2C4.05%2C4.34%2C11.3%2C2.27%2C17.48a10.22%2C10.22%2C0%2C0%2C1-7.27%2C7.1s.59%2C9.22.93%2C13.84c.55%2C7.33.35%2C13.33%2C1.2%2C23.69%2C8.6%2C3.17%2C22.4.9%2C32.07-4.21C400.79%2C267.79%2C401.77%2C263.88%2C401.77%2C263.88Z%22%20style%3D%22fill%3A%2337474f%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M386%2C244.37a15.92%2C15.92%2C0%2C0%2C1-18.13-.63%2C10.89%2C10.89%2C0%2C0%2C0%2C8.9%2C5.57C384.46%2C249.59%2C386%2C244.37%2C386%2C244.37Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M386.13%2C169.17a4.87%2C4.87%2C0%2C0%2C1-1.55-.21%2C28.2%2C28.2%2C0%2C0%2C0-6.1-1.29A22%2C22%2C0%2C0%2C0%2C368.16%2C169a19.31%2C19.31%2C0%2C0%2C0-11.46%2C12.8c-1.78%2C6.62.52%2C12.8%2C4.32%2C17.71%2C2%2C2.57%2C5.64%2C5.07%2C7.09%2C6.08l1.37-1.5a15.38%2C15.38%2C0%2C0%2C0%2C7.53%2C1.63c2.52-.07%2C5%2C.26%2C7.41-.78a10.05%2C10.05%2C0%2C0%2C0%2C5.67-6.32%2C12.51%2C12.51%2C0%2C0%2C1%2C.88-2.76%2C9.73%2C9.73%2C0%2C0%2C1%2C2.24-2.29%2C16.76%2C16.76%2C0%2C0%2C0%2C5.52-10.23%2C6.24%2C6.24%2C0%2C0%2C0-.3-3.51%2C2.91%2C2.91%2C0%2C0%2C0-2.81-1.81%2C12.61%2C12.61%2C0%2C0%2C0%2C1.56-4.11%2C4.33%2C4.33%2C0%2C0%2C0-1.38-4%2C6.05%2C6.05%2C0%2C0%2C0-3.63-.91h-.31c-1.28%2C0-2.57%2C0-3.85%2C0C387.37%2C169.09%2C386.75%2C169.16%2C386.13%2C169.17Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M388.64%2C176.51c2.35%2C1.27%2C5.75%2C5.3%2C5.61%2C17.43-.12%2C10.05-3.33%2C13.26-5%2C14.05s-4.14.67-7.29.27l-.22%2C4.31c7.67%2C5.56%2C9.59%2C12.33%2C2.5%2C11.66-9-.85-16-8.7-16-9.5L368%2C201.25a4.32%2C4.32%2C0%2C0%2C1-5.06-1c-2.3-2.65-3-6.58-1.09-8.7s5.19-1.37%2C6.77.79c0%2C0%2C4.16-.1%2C10.67-4S387.28%2C181.29%2C388.64%2C176.51Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M368.66%2C192.3l-.07%2C4.85h0a3.45%2C3.45%2C0%2C0%2C0%2C3.5-3.4l.08-5.8Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M393%2C187.21l-3-1.14a1.53%2C1.53%2C0%2C0%2C1%2C2-.95A1.67%2C1.67%2C0%2C0%2C1%2C393%2C187.21Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M381.35%2C200.3l4.51.9a2.21%2C2.21%2C0%2C0%2C1-2.62%2C1.84A2.42%2C2.42%2C0%2C0%2C1%2C381.35%2C200.3Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpolygon%20points%3D%22385.25%20189.42%20385.87%20197.84%20389.97%20196.57%20385.25%20189.42%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpolygon%3E%3Cpath%20d%3D%22M382%2C208.26c-3.32-.3-10.2-2-11.36-4.62a7%2C7%2C0%2C0%2C0%2C2.52%2C3.33c2.1%2C1.66%2C8.72%2C3.67%2C8.72%2C3.67Z%22%20style%3D%22fill%3A%239a4a4d%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M381.81%2C192.38a1.38%2C1.38%2C0%2C1%2C1-1.37-1.37A1.37%2C1.37%2C0%2C0%2C1%2C381.81%2C192.38Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Ccircle%20cx%3D%22390.88%22%20cy%3D%22191.3%22%20r%3D%221.37%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fcircle%3E%3Cpath%20d%3D%22M363.52%2C171.67c-4.75%2C3.3-8%2C7.55-8.95%2C18.69-.72%2C8.51%2C1.21%2C14%2C3.28%2C16.24s10.89%2C7.74%2C14.9%2C4.41a5.86%2C5.86%2C0%2C0%2C1-3.48-3.12%2C18.55%2C18.55%2C0%2C0%2C1-1.21-5.77s-4.08.06-5.72-1.73-3.33-9.42-3-13.18C359.77%2C182.8%2C363.52%2C171.67%2C363.52%2C171.67Z%22%20style%3D%22fill%3A%23263238%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M368.66%2C192.3s-.9-7.6%2C2.46-13%2C9.72-10%2C15-10.14c0%2C0-3.72-2.59-10.16-1.62%2C0%2C0-12.39%2C4.5-9.6%2C23A5.85%2C5.85%2C0%2C0%2C1%2C368.66%2C192.3Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M362.08%2C214.91c-5.49%2C1.41-9.89%2C2.83-11.72%2C8.21-1%2C2.8-2.58%2C32.31-2.77%2C37s-.24%2C29.77-.58%2C30.59c-.7%2C1.7-7.73%2C4.72-10.17%2C6.23a19.74%2C19.74%2C0%2C0%2C0-5.72%2C5.35c-1.09%2C1.68%2C2.7%2C4.38%2C6.15%2C4.15%2C2-.14%2C9.36-5.09%2C12-5.33%2C1.7-.15-1.12%2C2.94-1.22%2C5.37-.08%2C1.76%2C1.52%2C2.3%2C1.93%2C1.31.52-1.24%2C4-5.44%2C5-6.72%2C1.48-1.76%2C3.93-5.42%2C3.93-8.89%2C0-4.48.59-14.91%2C2-29.79%2C1.17-12.48%2C2.14-21.86%2C2.14-21.86A37%2C37%2C0%2C0%2C0%2C366%2C227%2C17.67%2C17.67%2C0%2C0%2C0%2C362.08%2C214.91Z%22%20style%3D%22fill%3A%23b16668%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20id%3D%22freepik--speech-bubbles--inject-87%22%3E%3Cg%20id%3D%22freepik--speech-bubble--inject-87%22%3E%3Cg%20id%3D%22freepik--speech-bubble--inject-87%22%3E%3Cpath%20d%3D%22M433.88%2C166.3a.52.52%2C0%2C0%2C1-.22-.22L430.89%2C156v-2.64l8.14-3.18v2.63l-1%2C2.85%2C4.84-2.79.29%2C1.63-2.88%2C14.71a.62.62%2C0%2C0%2C1-.88.33Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M433.88%2C166.3a.52.52%2C0%2C0%2C1-.22-.22L430.89%2C156v-2.64l8.14-3.18v2.63l-1%2C2.85%2C4.84-2.79.29%2C1.63-2.88%2C14.71a.62.62%2C0%2C0%2C1-.88.33Z%22%20style%3D%22opacity%3A0.30000000000000004%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M442.89%2C152.87l.29%2C1.63-2.88%2C14.71a.6.6%2C0%2C0%2C1-1.09.1l-3.13-10.71.36-2Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M460.76%2C98.78a5.83%2C5.83%2C0%2C0%2C0-2.63-4.56h0a5.83%2C5.83%2C0%2C0%2C0-5.27%2C0l-38.28%2C21.87a5.83%2C5.83%2C0%2C0%2C0-2.63%2C4.56v42.88a5.83%2C5.83%2C0%2C0%2C0%2C2.63%2C4.57h0a5.83%2C5.83%2C0%2C0%2C0%2C5.27%2C0l38.52-22c2.37-1.35%2C2.39-2.71%2C2.39-4.39Z%22%20style%3D%22fill%3A%234A9453%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M412%2C163.53a5.83%2C5.83%2C0%2C0%2C0%2C2.63%2C4.57h0a5.9%2C5.9%2C0%2C0%2C0%2C4.82.22c-1.24.47-2.18-.24-2.18-1.75V123.69a5.31%2C5.31%2C0%2C0%2C1%2C.77-2.59l-5.27-3a5.31%2C5.31%2C0%2C0%2C0-.77%2C2.59Z%22%20style%3D%22opacity%3A0.2%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M460.68%2C98c-.31-1.12-1.33-1.47-2.55-.77l-38.28%2C21.87a5.21%2C5.21%2C0%2C0%2C0-1.86%2C2l-5.26-3a5.42%2C5.42%2C0%2C0%2C1%2C1.85-2l38.27-21.87a5.91%2C5.91%2C0%2C0%2C1%2C5.28%2C0h0A5.82%2C5.82%2C0%2C0%2C1%2C460.68%2C98Z%22%20style%3D%22fill%3A%23fff%3Bopacity%3A0.5%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3Cpath%20id%3D%22freepik--Key--inject-87%22%20d%3D%22M427.36%2C129.76a4.51%2C4.51%2C0%2C0%2C1%2C1.7-3.61c.95-.54%2C1.71.19%2C1.71%2C1.64a4.47%2C4.47%2C0%2C0%2C1-1.71%2C3.61C428.12%2C131.94%2C427.36%2C131.21%2C427.36%2C129.76Zm-2.56%2C1.56c0%2C2.84.86%2C4.87%2C2.21%2C5.72l0%2C0%2C.08%2C0%2C.15.09.17.07.17.07.21.06.16%2C0a3%2C3%2C0%2C0%2C0%2C1.12%2C0%2C2.33%2C2.33%2C0%2C0%2C0%2C.36-.08%2C3%2C3%2C0%2C0%2C0%2C.39-.13%2C5.17%2C5.17%2C0%2C0%2C0%2C.72-.34c1.89-1.1%2C3.57-3.47%2C4.63-6.25%2C0-.07.05-.14.07-.21a16.59%2C16.59%2C0%2C0%2C0%2C.6-2l3.18-1.83.63-2.63%2C1.9-1.1%2C1.54%2C1.37%2C1.23-.71%2C1.12-1.91%2C1.95-1.17.74.89%2C2.2-1.28%2C2.24-4.72v-2.47l-16.47%2C9.51a7.32%2C7.32%2C0%2C0%2C0-.58-1.8l-.15-.28c-.11-.19-.22-.36-.34-.53s-.12-.15-.19-.22l-.16-.18-.06%2C0a2.06%2C2.06%2C0%2C0%2C0-.4-.33c-.07-.06-.15-.1-.22-.15l-.1%2C0a3.38%2C3.38%2C0%2C0%2C0-3.36.27c-2.71%2C1.57-5%2C5.76-5.61%2C10A15.6%2C15.6%2C0%2C0%2C0%2C424.8%2C131.32Z%22%20style%3D%22fill%3A%23fafafa%22%3E%3C%2Fpath%3E%3Cg%20id%3D%22freepik--numbers--inject-87%22%3E%3Cpath%20d%3D%22M420.74%2C160a2.9%2C2.9%2C0%2C0%2C1%2C.06-.4l2.37-10.81-2.41%2C1.39c-.12.07-.21%2C0-.26-.05a1.69%2C1.69%2C0%2C0%2C1-.08-.62v-.29a2.62%2C2.62%2C0%2C0%2C1%2C.08-.71.6.6%2C0%2C0%2C1%2C.26-.35l3.88-2.24c.06%2C0%2C.13.11.21.44a3.57%2C3.57%2C0%2C0%2C1%2C.13.92%2C1%2C1%2C0%2C0%2C1%2C0%2C.24L422.44%2C159a.83.83%2C0%2C0%2C1-.21.39%2C2%2C2%2C0%2C0%2C1-.44.33l-.41.24C421%2C160.24%2C420.74%2C160.25%2C420.74%2C160Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M426.46%2C156.72a2.3%2C2.3%2C0%2C0%2C1%2C.07-.4l2.36-10.8-2.41%2C1.39c-.11.07-.2.05-.25-.06a1.44%2C1.44%2C0%2C0%2C1-.08-.61v-.3a2.2%2C2.2%2C0%2C0%2C1%2C.08-.7.62.62%2C0%2C0%2C1%2C.25-.36l3.89-2.24q.09%2C0%2C.21.45a3.93%2C3.93%2C0%2C0%2C1%2C.12.91.9.9%2C0%2C0%2C1%2C0%2C.24l-2.52%2C11.49a.83.83%2C0%2C0%2C1-.21.39%2C1.92%2C1.92%2C0%2C0%2C1-.43.32l-.42.24C426.68%2C156.93%2C426.46%2C156.94%2C426.46%2C156.72Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M432.34%2C153.4c-.38%2C0-.57-.21-.57-.56a2.56%2C2.56%2C0%2C0%2C1%2C.1-.55%2C5.35%2C5.35%2C0%2C0%2C1%2C.25-.74.8.8%2C0%2C0%2C1%2C.26-.42.86.86%2C0%2C0%2C1%2C.24%2C0%2C1.49%2C1.49%2C0%2C0%2C0%2C.48%2C0%2C1.62%2C1.62%2C0%2C0%2C0%2C.61-.22%2C1.71%2C1.71%2C0%2C0%2C0%2C.69-.88%2C3.8%2C3.8%2C0%2C0%2C0%2C.25-1.45%2C2.18%2C2.18%2C0%2C0%2C0-.26-1.29c-.17-.22-.46-.22-.86%2C0l-1.06.61q-.24.14-.33%2C0a.84.84%2C0%2C0%2C1-.09-.49l.22-5.26a1.42%2C1.42%2C0%2C0%2C1%2C.13-.61.79.79%2C0%2C0%2C1%2C.34-.36l3-1.73c.12-.07.21%2C0%2C.26.05a1.69%2C1.69%2C0%2C0%2C1%2C.08.62v.46a1.75%2C1.75%2C0%2C0%2C1-.08.58.57.57%2C0%2C0%2C1-.26.31l-2%2C1.13-.11%2C2.54.17-.09c.81-.47%2C1.43-.53%2C1.86-.19s.64%2C1.22.64%2C2.62A7.5%2C7.5%2C0%2C0%2C1%2C436%2C150a5.89%2C5.89%2C0%2C0%2C1-1%2C1.8%2C4.52%2C4.52%2C0%2C0%2C1-1.25%2C1.1A2.7%2C2.7%2C0%2C0%2C1%2C432.34%2C153.4Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M437.5%2C146.77a1.66%2C1.66%2C0%2C0%2C1-.08-.62V146a2.54%2C2.54%2C0%2C0%2C1%2C.08-.7.53.53%2C0%2C0%2C1%2C.25-.35l1.92-1.11c.11-.07.2-.05.25.06a1.69%2C1.69%2C0%2C0%2C1%2C.08.62v.12a2.54%2C2.54%2C0%2C0%2C1-.08.7.56.56%2C0%2C0%2C1-.25.35l-1.92%2C1.11C437.63%2C146.9%2C437.55%2C146.88%2C437.5%2C146.77Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M441%2C148.09a5.07%2C5.07%2C0%2C0%2C1-.1-.92.69.69%2C0%2C0%2C1%2C0-.28l2.45-6.9a10.11%2C10.11%2C0%2C0%2C0%2C.34-1.14%2C3.84%2C3.84%2C0%2C0%2C0%2C.1-.85c0-.4-.08-.66-.24-.77s-.38-.08-.65.07a2%2C2%2C0%2C0%2C0-.52.45%2C6.48%2C6.48%2C0%2C0%2C0-.49.67%2C1.61%2C1.61%2C0%2C0%2C1-.29.38c-.17.1-.32%2C0-.45-.16a1.19%2C1.19%2C0%2C0%2C1-.2-.66%2C2.5%2C2.5%2C0%2C0%2C1%2C.69-1.56%2C5.64%2C5.64%2C0%2C0%2C1%2C1.52-1.31q1.11-.65%2C1.71-.12a2.55%2C2.55%2C0%2C0%2C1%2C.61%2C1.95%2C8.87%2C8.87%2C0%2C0%2C1-.6%2C3l-1.95%2C5.54%2C2.26-1.31c.13-.07.21%2C0%2C.26.06a1.44%2C1.44%2C0%2C0%2C1%2C.08.61v.3a2.2%2C2.2%2C0%2C0%2C1-.08.7.55.55%2C0%2C0%2C1-.26.36l-4%2C2.32C441.11%2C148.56%2C441%2C148.42%2C441%2C148.09Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M447.28%2C143.54a11.44%2C11.44%2C0%2C0%2C1-.57-4.28%2C17.77%2C17.77%2C0%2C0%2C1%2C.57-4.92%2C4.17%2C4.17%2C0%2C0%2C1%2C1.73-2.6c.77-.45%2C1.35-.24%2C1.73.61a11.36%2C11.36%2C0%2C0%2C1%2C.57%2C4.26%2C17.82%2C17.82%2C0%2C0%2C1-.57%2C4.92%2C4.21%2C4.21%2C0%2C0%2C1-1.73%2C2.61C448.23%2C144.59%2C447.66%2C144.39%2C447.28%2C143.54Zm2.06-1.95a5.89%2C5.89%2C0%2C0%2C0%2C.19-1.34c0-.62.06-1.5.06-2.65s0-2-.06-2.58a3.49%2C3.49%2C0%2C0%2C0-.19-1.12c-.08-.17-.19-.22-.33-.13a.85.85%2C0%2C0%2C0-.34.52%2C7.34%2C7.34%2C0%2C0%2C0-.19%2C1.34c0%2C.62-.06%2C1.51-.06%2C2.65s0%2C2%2C.06%2C2.58a4.18%2C4.18%2C0%2C0%2C0%2C.19%2C1.12c.08.17.2.22.34.14A.9.9%2C0%2C0%2C0%2C449.34%2C141.59Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3Cpath%20d%3D%22M453.61%2C141.34a1.83%2C1.83%2C0%2C0%2C1-.91.06c-.25-.06-.37-.26-.37-.6a2.66%2C2.66%2C0%2C0%2C1%2C.09-.54%2C6.41%2C6.41%2C0%2C0%2C1%2C.21-.7.74.74%2C0%2C0%2C1%2C.25-.39.38.38%2C0%2C0%2C1%2C.24%2C0%2C2%2C2%2C0%2C0%2C0%2C.52.1%2C1.23%2C1.23%2C0%2C0%2C0%2C.57-.19%2C1.9%2C1.9%2C0%2C0%2C0%2C.76-.88%2C3.24%2C3.24%2C0%2C0%2C0%2C.28-1.4%2C1.67%2C1.67%2C0%2C0%2C0-.29-1.16c-.2-.18-.51-.14-.95.11l-.39.22c-.12.07-.21.05-.26-.05a1.69%2C1.69%2C0%2C0%2C1-.08-.62V135a2.54%2C2.54%2C0%2C0%2C1%2C.08-.7.59.59%2C0%2C0%2C1%2C.26-.36l.29-.17a2%2C2%2C0%2C0%2C0%2C.79-.85%2C2.49%2C2.49%2C0%2C0%2C0%2C.29-1.21%2C1.46%2C1.46%2C0%2C0%2C0-.21-.91c-.14-.16-.35-.17-.62%2C0a1.58%2C1.58%2C0%2C0%2C0-.48.39%2C3.9%2C3.9%2C0%2C0%2C0-.34.46%2C1%2C1%2C0%2C0%2C1-.22.28c-.11.07-.23%2C0-.36-.26a1.54%2C1.54%2C0%2C0%2C1-.2-.73%2C2%2C2%2C0%2C0%2C1%2C.59-1.27%2C5.5%2C5.5%2C0%2C0%2C1%2C1.41-1.15c.65-.37%2C1.16-.39%2C1.55-.07a2.44%2C2.44%2C0%2C0%2C1%2C.57%2C1.88%2C5.2%2C5.2%2C0%2C0%2C1-.28%2C1.71%2C4.29%2C4.29%2C0%2C0%2C1-.77%2C1.42v.07a1.08%2C1.08%2C0%2C0%2C1%2C1%2C.63%2C3.73%2C3.73%2C0%2C0%2C1%2C.33%2C1.72%2C7.08%2C7.08%2C0%2C0%2C1-.65%2C3.06%2C4.34%2C4.34%2C0%2C0%2C1-1.7%2C2A5.08%2C5.08%2C0%2C0%2C1%2C453.61%2C141.34Z%22%20style%3D%22fill%3A%23455a64%22%3E%3C%2Fpath%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E";
@@ -1662,150 +1366,55 @@ var buttonVariants = classVarianceAuthority.cva("inline-flex items-center justif
1662
1366
  function Button(_a) {
1663
1367
  var className = _a.className, variant = _a.variant, size = _a.size, _b = _a.asChild, asChild = _b === void 0 ? false : _b, props = __rest(_a, ["className", "variant", "size", "asChild"]);
1664
1368
  var Comp = asChild ? reactSlot.Slot : "button";
1665
- return (jsxRuntimeExports.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1369
+ return (jsxRuntime.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1666
1370
  }
1667
1371
 
1668
1372
  function Dialog(_a) {
1669
1373
  var props = __rest(_a, []);
1670
- return jsxRuntimeExports.jsx(DialogPrimitive__namespace.Root, __assign({ "data-slot": "dialog" }, props));
1374
+ return jsxRuntime.jsx(DialogPrimitive__namespace.Root, __assign({ "data-slot": "dialog" }, props));
1671
1375
  }
1672
1376
  function DialogPortal(_a) {
1673
1377
  var props = __rest(_a, []);
1674
- return jsxRuntimeExports.jsx(DialogPrimitive__namespace.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1378
+ return jsxRuntime.jsx(DialogPrimitive__namespace.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1675
1379
  }
1676
1380
  function DialogOverlay(_a) {
1677
1381
  var className = _a.className, props = __rest(_a, ["className"]);
1678
- return (jsxRuntimeExports.jsx(DialogPrimitive__namespace.Overlay, __assign({ "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
1382
+ return (jsxRuntime.jsx(DialogPrimitive__namespace.Overlay, __assign({ "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className) }, props)));
1679
1383
  }
1680
1384
  function DialogContent(_a) {
1681
1385
  var className = _a.className, children = _a.children, _b = _a.showCloseButton, showCloseButton = _b === void 0 ? true : _b, props = __rest(_a, ["className", "children", "showCloseButton"]);
1682
- return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive__namespace.Content, __assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props, { children: [children, showCloseButton && (jsxRuntimeExports.jsxs(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntimeExports.jsx(lucideReact.XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1386
+ return (jsxRuntime.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntime.jsx(DialogOverlay, {}), jsxRuntime.jsxs(DialogPrimitive__namespace.Content, __assign({ "data-slot": "dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className) }, props, { children: [children, showCloseButton && (jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { "data-slot": "dialog-close", className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [jsxRuntime.jsx(lucideReact.XIcon, {}), jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1683
1387
  }
1684
1388
  function DialogHeader(_a) {
1685
1389
  var className = _a.className, props = __rest(_a, ["className"]);
1686
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1390
+ return (jsxRuntime.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1687
1391
  }
1688
1392
  function DialogTitle(_a) {
1689
1393
  var className = _a.className, props = __rest(_a, ["className"]);
1690
- return (jsxRuntimeExports.jsx(DialogPrimitive__namespace.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1691
- }
1692
-
1693
- var a="container_f782f4",i="inner_37f4c9",c="bar_409d0f";const r=({size:r=35,color:l="black",speed:d=1,stroke:o=3.5})=>jsxRuntimeExports.jsx("div",{className:a,style:{"--uib-size":r+"px","--uib-color":l,"--uib-speed":d+"s","--uib-stroke":o+"px"},children:jsxRuntimeExports.jsxs("div",{className:i,children:[jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c}),jsxRuntimeExports.jsx("div",{className:c})]})});
1694
-
1695
- function styleInject(css, ref) {
1696
- if ( ref === void 0 ) ref = {};
1697
- var insertAt = ref.insertAt;
1698
-
1699
- if (typeof document === 'undefined') { return; }
1700
-
1701
- var head = document.head || document.getElementsByTagName('head')[0];
1702
- var style = document.createElement('style');
1703
- style.type = 'text/css';
1704
-
1705
- if (insertAt === 'top') {
1706
- if (head.firstChild) {
1707
- head.insertBefore(style, head.firstChild);
1708
- } else {
1709
- head.appendChild(style);
1710
- }
1711
- } else {
1712
- head.appendChild(style);
1713
- }
1714
-
1715
- if (style.styleSheet) {
1716
- style.styleSheet.cssText = css;
1717
- } else {
1718
- style.appendChild(document.createTextNode(css));
1719
- }
1394
+ return (jsxRuntime.jsx(DialogPrimitive__namespace.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1720
1395
  }
1721
1396
 
1722
- var css_248z = ".container_f782f4 {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: calc(var(--uib-size) * 0.9);\n width: var(--uib-size);\n}\n\n.inner_37f4c9 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: var(--uib-size);\n height: calc(var(--uib-size) * 0.9);\n}\n\n.bar_409d0f {\n width: var(--uib-stroke);\n height: 100%;\n background-color: var(--uib-color);\n transition: background-color 0.3s ease;\n}\n\n.bar_409d0f:nth-child(1) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.45) infinite;\n}\n\n.bar_409d0f:nth-child(2) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.3) infinite;\n}\n\n.bar_409d0f:nth-child(3) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out calc(var(--uib-speed) * -0.15) infinite;\n}\n\n.bar_409d0f:nth-child(4) {\n animation: grow_ca6a4e var(--uib-speed) ease-in-out infinite;\n}\n\n@keyframes grow_ca6a4e {\n 0%, 100% {\n transform: scaleY(0.3);\n }\n 50% {\n transform: scaleY(1);\n }\n}";
1723
- styleInject(css_248z);
1397
+ var a="container_f782f4",i="inner_37f4c9",c="bar_409d0f";const r=({size:r=35,color:l="black",speed:d=1,stroke:o=3.5})=>jsxRuntime.jsx("div",{className:a,style:{"--uib-size":r+"px","--uib-color":l,"--uib-speed":d+"s","--uib-stroke":o+"px"},children:jsxRuntime.jsxs("div",{className:i,children:[jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c}),jsxRuntime.jsx("div",{className:c})]})});
1724
1398
 
1725
1399
  var LoadingSpinner = function (_a) {
1726
1400
  var loadingText = _a.loadingText;
1727
- return (jsxRuntimeExports.jsxs("div", { className: "flex flex-col justify-center items-center h-full w-full py-10", children: [jsxRuntimeExports.jsx("script", { type: "module", defer: true, src: "https://cdn.jsdelivr.net/npm/ldrs/dist/auto/waveform.js" }), jsxRuntimeExports.jsx(r, { size: "35", stroke: "3.5", speed: "1", color: "green" }), loadingText && (jsxRuntimeExports.jsx("p", { className: "text-center font-semibold mt-3", children: "Loading..." }))] }));
1401
+ return (jsxRuntime.jsxs("div", { className: "flex flex-col justify-center items-center h-full w-full py-10", children: [jsxRuntime.jsx("script", { type: "module", defer: true, src: "https://cdn.jsdelivr.net/npm/ldrs/dist/auto/waveform.js" }), jsxRuntime.jsx(r, { size: "35", stroke: "3.5", speed: "1", color: "green" }), loadingText && (jsxRuntime.jsx("p", { className: "text-center font-semibold mt-3", children: "Loading..." }))] }));
1728
1402
  };
1729
1403
 
1730
1404
  var AuthSuccessAnimation = function (_a) {
1731
1405
  var onComplete = _a.onComplete;
1732
- return (jsxRuntimeExports.jsxs(framerMotion.motion.div, { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut" }, className: "flex flex-col items-center justify-center space-y-6 p-8", onAnimationComplete: onComplete, children: [jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntimeExports.jsx(lucideReact.CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntimeExports.jsxs(framerMotion.motion.div, { initial: { y: 20, opacity: 0 }, animate: { y: 0, opacity: 1 }, transition: { delay: 0.4, duration: 0.5 }, className: "text-center space-y-2", children: [jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold text-green-600", children: "Authentication Successful!" }), jsxRuntimeExports.jsx("p", { className: "text-gray-600", children: "Redirecting you to the application..." })] }), jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { width: 0 }, animate: { width: "100%" }, transition: { delay: 0.8, duration: 2 }, className: "h-1 bg-green-500 rounded-full max-w-xs" })] }));
1406
+ return (jsxRuntime.jsxs(framerMotion.motion.div, { initial: { opacity: 0, scale: 0.8 }, animate: { opacity: 1, scale: 1 }, transition: { duration: 0.5, ease: "easeOut" }, className: "flex flex-col items-center justify-center space-y-6 p-8", onAnimationComplete: onComplete, children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntime.jsx(lucideReact.CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntime.jsxs(framerMotion.motion.div, { initial: { y: 20, opacity: 0 }, animate: { y: 0, opacity: 1 }, transition: { delay: 0.4, duration: 0.5 }, className: "text-center space-y-2", children: [jsxRuntime.jsx("h2", { className: "text-2xl font-bold text-green-600", children: "Authentication Successful!" }), jsxRuntime.jsx("p", { className: "text-gray-600", children: "Redirecting you to the application..." })] }), jsxRuntime.jsx(framerMotion.motion.div, { initial: { width: 0 }, animate: { width: "100%" }, transition: { delay: 0.8, duration: 2 }, className: "h-1 bg-green-500 rounded-full max-w-xs" })] }));
1733
1407
  };
1734
1408
 
1735
- // Function to parse userAgent and generate a device ID
1736
- var GenerateDeviceId = function () {
1737
- var _a;
1738
- if (typeof window === "undefined" || !window.navigator) {
1739
- return "unknown-device";
1740
- }
1741
- var userAgent = window.navigator.userAgent;
1742
- var deviceId = "";
1743
- // Parse browser, version, OS, and device type
1744
- var browserMatch = Array.from(userAgent.matchAll(/(Chrome|Firefox|Safari|Edge|Opera)\/([\d.]+)/gi));
1745
- var osMatch = Array.from(userAgent.matchAll(/\(([^)]+)\)/g));
1746
- var isMobile = /Mobile|Android|iPhone|iPad/i.test(userAgent);
1747
- // Browser info
1748
- if (browserMatch.length > 0) {
1749
- var _b = browserMatch[0], browserName = _b[1], browserVersion = _b[2];
1750
- var majorVersion = browserVersion.split(".")[0];
1751
- deviceId += "".concat(browserName, "-").concat(majorVersion);
1752
- }
1753
- else {
1754
- deviceId += "UnknownBrowser";
1755
- }
1756
- // OS info
1757
- if (osMatch.length > 0) {
1758
- var osInfo = osMatch[0][1]
1759
- .split(";")[0]
1760
- .trim()
1761
- .replace(/[\s/()]/g, "_");
1762
- deviceId += "_".concat(osInfo);
1763
- }
1764
- else {
1765
- deviceId += "_UnknownOS";
1766
- }
1767
- // Device type
1768
- deviceId += isMobile ? "_Mobile" : "_Desktop";
1769
- // Add a simple hash of userAgent for uniqueness
1770
- var hash = btoa(userAgent).slice(0, 8);
1771
- deviceId += "_".concat(hash);
1772
- return (_a = deviceId.replace(/[^a-zA-Z0-9-_]/g, "_")) !== null && _a !== void 0 ? _a : "unknown-device";
1773
- };
1774
- var APIHeaders = {
1775
- "X-DEVICE-ID": GenerateDeviceId(),
1776
- "X-API-VERSION": "1.0",
1777
- };
1778
-
1779
- // Creates an Axios instance with a base URL determined by the environment (production or development).
1780
- var axiosInstance = axios.create({
1781
- httpsAgent: new https.Agent({ rejectUnauthorized: false }),
1782
- headers: __assign({ "Content-Type": "application/json" }, APIHeaders),
1783
- });
1784
- // Intercepts outgoing requests to add authorization token, version header, and timeout settings.
1785
- axiosInstance.interceptors.request.use(function (config) {
1786
- var _a;
1787
- config.timeout = Number((_a = process.env.NEXT_PUBLIC_API_TIMEOUT) !== null && _a !== void 0 ? _a : 605000);
1788
- config.timeoutErrorMessage = "Operation Timed Out"; // Custom error message for timeouts.
1789
- return config; // Returns the modified request configuration.
1790
- }, function (axiosError) {
1791
- var _a, _b;
1792
- // Handles request errors.
1793
- return {
1794
- status: (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status, // Extracts HTTP status from the error response.
1795
- message: axiosError.message, // Extracts the error message.
1796
- data: (_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.data, // Extracts response data from the error.
1797
- };
1798
- });
1799
-
1800
1409
  var MAX_ATTEMPTS = 3;
1801
1410
  var useOTPHandler = function (_a) {
1802
- var provider = _a.provider, accessToken = _a.accessToken, idToken = _a.idToken, appCode = _a.appCode, authenticationType = _a.authenticationType, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1411
+ var email = _a.email, appCode = _a.appCode, instCode = _a.instCode, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1803
1412
  var _b = React.useState(false), loading = _b[0], setLoading = _b[1];
1804
1413
  var _c = React.useState(0), attemptCount = _c[0], setAttemptCount = _c[1];
1805
1414
  var _d = React.useState(false), isMaxAttemptsReached = _d[0], setIsMaxAttemptsReached = _d[1];
1806
- var handleSubmitOTP = React.useMemo(function () { return function (authenticationValue) { return __awaiter(void 0, void 0, void 0, function () {
1807
- var currentAttempt, response, error_1, currentAttempt;
1808
- return __generator(this, function (_a) {
1415
+ var handleSubmitOTP = React.useMemo(function () { return function (authenticationValue) { return __awaiter$1(void 0, void 0, void 0, function () {
1416
+ var currentAttempt, authentication, response, error_1, currentAttempt;
1417
+ return __generator$1(this, function (_a) {
1809
1418
  switch (_a.label) {
1810
1419
  case 0:
1811
1420
  if (isMaxAttemptsReached) {
@@ -1820,18 +1429,15 @@ var useOTPHandler = function (_a) {
1820
1429
  setLoading(true);
1821
1430
  currentAttempt = attemptCount + 1;
1822
1431
  setAttemptCount(currentAttempt);
1823
- if (authenticationType === null)
1824
- return [2 /*return*/, false];
1825
- return [4 /*yield*/, axiosInstance.post(MFAEndpoint || "/api/auth/verify-mfa", {
1826
- provider: provider,
1827
- accessToken: accessToken,
1828
- idToken: idToken,
1829
- authenticationType: authenticationType,
1830
- MFACode: authenticationValue,
1432
+ authentication = new camsSdk.CAMSMFAAuthenticator();
1433
+ return [4 /*yield*/, authentication.VerifyMFAOTP({
1831
1434
  appCode: appCode,
1832
- })];
1435
+ instCode: instCode,
1436
+ email: email,
1437
+ MFACode: authenticationValue,
1438
+ }, MFAEndpoint || "")];
1833
1439
  case 2:
1834
- response = (_a.sent()).data;
1440
+ response = _a.sent();
1835
1441
  if (response) {
1836
1442
  onAuthComplete(true, response);
1837
1443
  return [2 /*return*/, true];
@@ -1867,15 +1473,7 @@ var useOTPHandler = function (_a) {
1867
1473
  case 5: return [2 /*return*/];
1868
1474
  }
1869
1475
  });
1870
- }); }; }, [
1871
- accessToken,
1872
- idToken,
1873
- authenticationType,
1874
- onAuthComplete,
1875
- MFAEndpoint,
1876
- attemptCount,
1877
- isMaxAttemptsReached,
1878
- ]);
1476
+ }); }; }, [onAuthComplete, MFAEndpoint, attemptCount, isMaxAttemptsReached]);
1879
1477
  var resetAttempts = React.useCallback(function () {
1880
1478
  setAttemptCount(0);
1881
1479
  setIsMaxAttemptsReached(false);
@@ -1895,23 +1493,19 @@ var useCredentialsHandler = function (onAuthComplete) {
1895
1493
  var _b = React.useState(0), attemptCount = _b[0], setAttemptCount = _b[1];
1896
1494
  var _c = React.useState(false), isMaxAttemptsReached = _c[0], setIsMaxAttemptsReached = _c[1];
1897
1495
  var handleSubmitCredentials = React.useMemo(function () {
1898
- return function (CredAuthEndpoint, credentials, appCode) { return __awaiter(void 0, void 0, void 0, function () {
1899
- var currentAttempt, response, error_2, currentAttempt;
1900
- return __generator(this, function (_a) {
1496
+ return function (CredentialsAuthEndpoint, credentials) { return __awaiter$1(void 0, void 0, void 0, function () {
1497
+ var currentAttempt, authenticator, response, error_2, currentAttempt;
1498
+ return __generator$1(this, function (_a) {
1901
1499
  switch (_a.label) {
1902
1500
  case 0:
1903
1501
  _a.trys.push([0, 2, 3, 4]);
1904
1502
  setLoading(true);
1905
1503
  currentAttempt = attemptCount + 1;
1906
1504
  setAttemptCount(currentAttempt);
1907
- return [4 /*yield*/, axiosInstance.post(CredAuthEndpoint, {
1908
- username: credentials.username,
1909
- password: credentials.password,
1910
- MFACode: credentials.MFACode,
1911
- appCode: appCode,
1912
- })];
1505
+ authenticator = new camsSdk.CAMSMFAAuthenticator();
1506
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
1913
1507
  case 1:
1914
- response = (_a.sent()).data;
1508
+ response = _a.sent();
1915
1509
  if (response) {
1916
1510
  onAuthComplete(true, response);
1917
1511
  return [2 /*return*/, true];
@@ -1934,10 +1528,6 @@ var useCredentialsHandler = function (onAuthComplete) {
1934
1528
  currentAttempt = attemptCount + 1;
1935
1529
  if (currentAttempt >= MAX_ATTEMPTS) {
1936
1530
  setIsMaxAttemptsReached(true);
1937
- onAuthComplete(false, error_2.response.data);
1938
- }
1939
- else {
1940
- onAuthComplete(false, error_2.response.data);
1941
1531
  }
1942
1532
  onAuthComplete(false, error_2.response.data);
1943
1533
  return [2 /*return*/, false];
@@ -1961,63 +1551,26 @@ var useCredentialsHandler = function (onAuthComplete) {
1961
1551
  };
1962
1552
 
1963
1553
  var MFAOptions = function (_a) {
1554
+ var _b, _c;
1964
1555
  var onComplete = _a.onComplete, onAuthFailed = _a.onAuthFailed, MFAEndpoints = _a.MFAEndpoints, usePassKey = _a.usePassKey;
1965
- var _b = React.useState(""), value = _b[0], setValue = _b[1];
1966
- var _c = React.useState(false), otpVisible = _c[0], setOtpVisible = _c[1];
1967
- var _d = React.useState(false), showSuccessAnimation = _d[0], setShowSuccessAnimation = _d[1];
1968
- var _e = React.useState(null), authType = _e[0], setAuthType = _e[1];
1556
+ var _d = React.useState(""), value = _d[0], setValue = _d[1];
1557
+ var _e = React.useState(false), otpVisible = _e[0], setOtpVisible = _e[1];
1558
+ var _f = React.useState(false), showSuccessAnimation = _f[0], setShowSuccessAnimation = _f[1];
1559
+ var _g = React.useState(null), authType = _g[0], setAuthType = _g[1];
1969
1560
  var context = useCAMSContext();
1970
- var _f = context.authMode === "MSAL" && "sendEmailOTP" in context
1561
+ var _h = context.authMode === "MSAL" && "EmailOTP" in context
1971
1562
  ? context
1972
- : { sendEmailOTP: null, completeMFA: null, logout: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
1563
+ : { completeMFA: null, logout: function () { return __awaiter$1(void 0, void 0, void 0, function () { return __generator$1(this, function (_a) {
1973
1564
  return [2 /*return*/];
1974
- }); }); } }, sendEmailOTP = _f.sendEmailOTP, completeMFA = _f.completeMFA, logout = _f.logout;
1975
- var accessToken = context.authMode === "MSAL" ? context.accessToken : "";
1976
- var idToken = context.authMode === "MSAL" ? context.idToken : "";
1565
+ }); }); } }, completeMFA = _h.completeMFA, logout = _h.logout;
1977
1566
  var authenticate = useWebAuthn().authenticate;
1978
- var handleFIDOLogin = function () { return __awaiter(void 0, void 0, void 0, function () {
1979
- var options, assertionResponse, error_1;
1980
- return __generator(this, function (_a) {
1981
- switch (_a.label) {
1982
- case 0:
1983
- _a.trys.push([0, 4, , 5]);
1984
- // 1. Fetch authentication challenge from your server
1985
- console.log("Requesting authentication challenge from server...");
1986
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RetrieveAuthChallenge, {})];
1987
- case 1:
1988
- options = (_a.sent()).data;
1989
- console.log("Received challenge:", options);
1990
- // 2. Call the SDK to trigger the browser's passkey authentication UI
1991
- console.log("Calling SDK authenticate function...");
1992
- return [4 /*yield*/, authenticate(__assign(__assign({}, options), { userVerification: "discouraged" }))];
1993
- case 2:
1994
- assertionResponse = _a.sent();
1995
- console.log("Authentication assertion received from client:", assertionResponse);
1996
- // 3. Send the assertion back to the server for verification
1997
- console.log("Sending assertion to server for verification...");
1998
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.AuthChallengeVerify, assertionResponse)];
1999
- case 3:
2000
- _a.sent();
2001
- sonner.toast.success("🔑 Sign-in successful!");
2002
- return [3 /*break*/, 5];
2003
- case 4:
2004
- error_1 = _a.sent();
2005
- console.error("Authentication failed:", error_1);
2006
- sonner.toast.error("❌ Could not sign in.");
2007
- return [3 /*break*/, 5];
2008
- case 5: return [2 /*return*/];
2009
- }
2010
- });
2011
- }); };
2012
- var _g = useOTPHandler({
2013
- accessToken: accessToken || "",
2014
- idToken: idToken || "",
2015
- provider: "MSAL",
1567
+ var authenticator = new camsSdk.CAMSMFAAuthenticator();
1568
+ var _j = useOTPHandler({
1569
+ email: ((_c = (_b = context.user) === null || _b === void 0 ? void 0 : _b.profile) === null || _c === void 0 ? void 0 : _c.email) || context.email,
2016
1570
  appCode: context.appCode || "",
2017
- authenticationType: authType,
2018
- MFAEndpoint: MFAEndpoints.ValidateMFA,
1571
+ MFAEndpoint: MFAEndpoints.ValidateUserMFA,
2019
1572
  onAuthComplete: function (state, data) {
2020
- console.log("Completed Auth. Handling MFA", state);
1573
+ console.log("Completed Auth. Handling MFA", state, data);
2021
1574
  if (state) {
2022
1575
  // Call completeMFA to update context state
2023
1576
  if (completeMFA && data) {
@@ -2027,11 +1580,11 @@ var MFAOptions = function (_a) {
2027
1580
  });
2028
1581
  }
2029
1582
  setShowSuccessAnimation(true);
2030
- sonner.toast.success(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
1583
+ sonner.toast.success(jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntime.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
2031
1584
  setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(true); }, 2000);
2032
1585
  }
2033
1586
  else {
2034
- sonner.toast.error(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldClose, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Unable to Validate User. Please try again." })] }));
1587
+ sonner.toast.error(jsxRuntime.jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsxRuntime.jsx(lucideReact.ShieldClose, { className: "w-4 h-4" }), jsxRuntime.jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Unable to Validate User. Please try again." })] }));
2035
1588
  if (isMaxAttemptsReached) {
2036
1589
  setTimeout(function () {
2037
1590
  logout().then(function () {
@@ -2042,7 +1595,7 @@ var MFAOptions = function (_a) {
2042
1595
  }
2043
1596
  }
2044
1597
  },
2045
- }), handleSubmitOTP = _g.handleSubmitOTP, loading = _g.loading, setLoading = _g.setLoading, attemptCount = _g.attemptCount, remainingAttempts = _g.remainingAttempts, isMaxAttemptsReached = _g.isMaxAttemptsReached, resetAttempts = _g.resetAttempts;
1598
+ }), handleSubmitOTP = _j.handleSubmitOTP, loading = _j.loading, attemptCount = _j.attemptCount, remainingAttempts = _j.remainingAttempts, isMaxAttemptsReached = _j.isMaxAttemptsReached, resetAttempts = _j.resetAttempts;
2046
1599
  var handleGoBack = function () {
2047
1600
  setAuthType(null);
2048
1601
  setOtpVisible(false);
@@ -2051,55 +1604,36 @@ var MFAOptions = function (_a) {
2051
1604
  };
2052
1605
  // Show success animation if authentication is successful
2053
1606
  if (showSuccessAnimation) {
2054
- return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntimeExports.jsx(AuthSuccessAnimation, { onComplete: function () {
1607
+ return (jsxRuntime.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntime.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntime.jsx(AuthSuccessAnimation, { onComplete: function () {
2055
1608
  // Animation completed, can add additional logic here if needed
2056
1609
  } }) }) }));
2057
1610
  }
2058
- var content = jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
1611
+ var content = jsxRuntime.jsx(jsxRuntime.Fragment, {});
2059
1612
  if (!authType) {
2060
- content = (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-600 text-center mb-6", children: "Choose your preferred authentication method:" }), jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
2061
- var success;
2062
- return __generator(this, function (_a) {
2063
- switch (_a.label) {
2064
- case 0:
2065
- // resetAttempts();
2066
- setAuthType("EmailOTP");
2067
- setOtpVisible(true);
2068
- if (!sendEmailOTP) return [3 /*break*/, 2];
2069
- setLoading(true);
2070
- return [4 /*yield*/, sendEmailOTP()];
2071
- case 1:
2072
- success = _a.sent();
2073
- setLoading(false);
2074
- if (success) {
2075
- sonner.toast.success(jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: "OTP sent to your email address" })] }));
2076
- }
2077
- _a.label = 2;
2078
- case 2: return [2 /*return*/];
2079
- }
2080
- });
2081
- }); }, children: [jsxRuntimeExports.jsx(lucideReact.Mail, { className: "w-5 h-5" }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Email OTP" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Send code to your email" })] })] }), jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () {
1613
+ content = (jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsx("p", { className: "text-sm text-gray-600 text-center mb-6", children: "Choose your preferred authentication method:" }), jsxRuntime.jsxs("div", { className: "flex flex-col gap-3", children: [jsxRuntime.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all", onClick: function () {
2082
1614
  setAuthType("AuthenticatorCode");
2083
1615
  setOtpVisible(true);
2084
- }, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntimeExports.jsx(lucideReact.Shield, {}); } }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Authenticator App" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] }), usePassKey && (jsxRuntimeExports.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all",
1616
+ }, children: [jsxRuntime.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntime.jsx(lucideReact.Shield, {}); } }), jsxRuntime.jsxs("div", { className: "text-left", children: [jsxRuntime.jsx("div", { className: "font-medium", children: "Authenticator App" }), jsxRuntime.jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] }), usePassKey && (jsxRuntime.jsxs(Button, { variant: "outline", className: "w-full flex items-center justify-start gap-3 p-4 h-auto border-2 hover:border-[#506f4a] hover:bg-[#506f4a]/5 transition-all",
2085
1617
  // onClick={() => {
2086
1618
  // resetAttempts();
2087
1619
  // setAuthType("AuthenticatorCode");
2088
1620
  // setOtpVisible(true);
2089
1621
  // }}
2090
- onClick: handleFIDOLogin, disabled: context.isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 48 }), jsxRuntimeExports.jsxs("div", { className: "text-left", children: [jsxRuntimeExports.jsx("div", { className: "font-medium", children: "Continue with Passkey" }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: "Passkey" })] })] }))] })] }));
1622
+ onClick: function () {
1623
+ return authenticator.HandleFIDOLogin(MFAEndpoints.RetrieveAuthChallenge, MFAEndpoints.AuthChallengeVerify, authenticate);
1624
+ }, disabled: context.isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 48 }), jsxRuntime.jsxs("div", { className: "text-left", children: [jsxRuntime.jsx("div", { className: "font-medium", children: "Continue with Passkey" }), jsxRuntime.jsx("div", { className: "text-sm text-gray-500", children: "Passkey" })] })] }))] })] }));
2091
1625
  }
2092
1626
  else if (authType === "EmailOTP") {
2093
- content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
1627
+ content = (jsxRuntime.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
2094
1628
  setAuthType(null);
2095
1629
  setOtpVisible(false);
2096
1630
  setValue("");
2097
- }, children: jsxRuntimeExports.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
1631
+ }, children: jsxRuntime.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntime.jsx(DialogHeader, { className: "w-full", children: jsxRuntime.jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxRuntime.jsxs("div", { className: "space-y-6", children: [jsxRuntime.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntime.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
2098
1632
  }
2099
1633
  else if (authType === "AuthenticatorCode") {
2100
- content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxRuntimeExports.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntimeExports.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntimeExports.jsx(DialogHeader, { className: "w-full", children: jsxRuntimeExports.jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsxRuntimeExports.jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsxRuntimeExports.jsx(LoadingSpinner, {}) })) : (jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsx(CardDescription, { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsxRuntimeExports.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntimeExports.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
1634
+ content = (jsxRuntime.jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxRuntime.jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsxRuntime.jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsxRuntime.jsx(DialogHeader, { className: "w-full", children: jsxRuntime.jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsxRuntime.jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsxRuntime.jsx(LoadingSpinner, {}) })) : (jsxRuntime.jsxs("div", { className: "space-y-6", children: [jsxRuntime.jsx(CardDescription, { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsxRuntime.jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsxRuntime.jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
2101
1635
  }
2102
- return (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntimeExports.jsxs(Card, { className: "space-y-6 p-6 rounded-lg shadow-md", children: [jsxRuntimeExports.jsxs(CardHeader, { children: [jsxRuntimeExports.jsx("div", { className: "flex justify-center items", children: jsxRuntimeExports.jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 365, height: 365 }) }), jsxRuntimeExports.jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), jsxRuntimeExports.jsx(CardTitle, { className: "text-gray-300 text-base -tracking-wide text-center", children: "Your Microsoft account has been validated. Please complete two-factor authentication to continue." })] }), jsxRuntimeExports.jsx(CardContent, { children: content }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
1636
+ return (jsxRuntime.jsx("div", { className: "cams-sdk flex justify-center items-center h-dvh", children: jsxRuntime.jsxs(Card, { className: "space-y-6 p-6 rounded-lg shadow-md", children: [jsxRuntime.jsxs(CardHeader, { children: [jsxRuntime.jsx("div", { className: "flex justify-center items", children: jsxRuntime.jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 265, height: 265 }) }), jsxRuntime.jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), jsxRuntime.jsx(CardTitle, { className: "text-gray-300 text-base -tracking-wide text-center", children: "Your Microsoft account has been validated. Please complete two-factor authentication to continue." })] }), jsxRuntime.jsx(CardContent, { children: content }), jsxRuntime.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntime.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
2103
1637
  };
2104
1638
 
2105
1639
  var NIBSSLogo = "data:image/svg+xml,%3Csvg%20width%3D%22243%22%20height%3D%2293%22%20viewBox%3D%220%200%20243%2093%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%3Cpath%20d%3D%22M243%200H0V93H243V0Z%22%20fill%3D%22url%28%23pattern0%29%22%2F%3E%3Cdefs%3E%3Cpattern%20id%3D%22pattern0%22%20patternContentUnits%3D%22objectBoundingBox%22%20width%3D%221%22%20height%3D%221%22%3E%3Cuse%20xlink%3Ahref%3D%22%23image0%22%20transform%3D%22scale%280.001%200.0026178%29%22%2F%3E%3C%2Fpattern%3E%3Cimage%20id%3D%22image0%22%20width%3D%221000%22%20height%3D%22544%22%20xlink%3Ahref%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAA%2BgAAAIgCAYAAAAWb0OJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAdo5JREFUeNrs3T%2BP28jeIGrOeSe4F1jg9MFiAWejwd3IiXuym1mOHLr9CazGJjezO1%2FANrC57ehGi5ajG7odOrL8CaxJnL2wJjOwWIwOsOniXNIuzWhoUuKfokhRzwMI7T9qiSxWFetXVaxKEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Cj9IAoAkuXX%2F9ln64zz8Nft5VvC2dfpaZn%2F48u7TQqrB0ZTvSfpjEv46DT9X4ZVZpmV6LaUAEKAD9NNYzxrpd0IwPm34UZuA%2FUP4udDIh0GU8ayDbZa%2B7obyfVazPC90wgEgQAforrF%2BsdVYn3T4dVmj%2Fm36ukkb%2BCupDwct61n5fhSC87aygP0mfV3peANAgA7QrqE%2BCUH5g6T5CHmMYP11CNY18KHb8v4ilPnYsrL7Ki3Dz6Q0AAJ0gGYN9umADmdlNB06Le9l60bE5Dl1AAAAAAAAAAAAAAAAAAAAAOBgLBIHDN6t%2B7efJN9WYx%2B7bAGqKwvKQWE9kC0Cd510vxhcU9ke6s8tJAeAAB0Yc4P8TdLfNml9eW5LJ%2FiuLnifvs4HfqhZkH6Zlt%2BlqwZAE3%2BTBMBAG%2BTZfsafTzA4zzxNz%2F9z%2BprJCfDV9REE50k4xvfKLgBNGUEHhhicv0h%2FPJESX63S1%2FP0dWPqLCdQ9rf3M5%2BGnw%2BOJDjPe5mW2StXFQABOnCsjfNTndJe1Tx9fRCsM4CyWlZGJ%2BFV5m7Bv01HXmavlFcABOjAsTX4JyE4P5calWTPuC6ygD1t%2FN9IDiKVw2zmStZR9vetsnimXLYrq2kZ%2FUUyAAAAAAAAAAAAAAAAAAAAAAAAAADAkbGKO3BQYZ%2Fj98mfex1zGrJtprLV5t9adT5qeZqlP14oT0cp237tpWQAQIAOCM4ZQrD%2BKg1QlpKjUVmapj%2Buk917jjN8vygDAAjQgT4CirMQnNtPmW1ZcPIqC9jTQGUtOfaWo0kIzKdSYxRWIUiX9wH46t8kAXAI%2F%2BE%2F%2F6f%2FT1BBUcyZvi7S1%2F%2BT5pH%2FM32t%2Fte%2F%2Fw%2FByveB%2BVmaNv9v%2Bsd5YtR8TLKOy%2F8jzfPvJAUAGSPowCGCiyfJt%2BdkoYosCH3%2B5d2nlaT4Wn6epT8eJx4NGbN7aX5fSAYAfpQEwAFkgcVzyUANszQwfXnqU3%2FTNLgIf3wlS4zaRBIAAAAAAAAAAAAAAAAAAAAAANus4g5EFxa2st85Q7IKr%2FWXd5%2BWBywLWTk4C%2BXBKuxUsbCiO4AAHSBWQJIFIZ8FIxyBbIX4Ze7vvzb8rLtbf94E5NDEKg3Qf5YMAAJ0gBgBerbf%2BRMpAdDYZRqkzyUDwOn5myQAIgbnE8E5QGuPJAGAAB2graeSAKC1aejwBECADlBfaEzOpARAFOpTAAAAAAAAAAAAAAAAAAAAAAAAAADo0w%2BSAGjj1v3bLxJ7nwN05erLu08vJQPAabDNGtDWhSQA6MwjSQBwOoygA43dun%2F7PP3xUUoAdOofX959WksGgPEzgg60YWQHoHtTSQAgQAfYx%2FR2gO49kAQAp%2BFHSQA0cev%2B7Un6YxVeAHTH9HYAAAAAAAAAAAAAAAAAAAAAODH2QQdqCwvETaQEwMGsv7z7tJQMAONmFXegiReJLdYADmmRvu5JBoBxsw860MS5JAAAAAE60KNb92%2BfJaa3AwCAAB3ondFzAAAQoAMDMJUEAAAQn0XigLrmybfFigA4nLUkAAAAAAAAAAAAAAAAAAAAAIDT8YMkAKq6df92tsXaCykBcHhf3n26JxUAxs0q7kAdF4lt1gAAoBP2QQcAOAJhFhMAAnSAr%2B5IAoDenEkCAAE6gMYhAAAI0AEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADugHSQBUcev%2B7Wn6472UAOjN8y%2FvPj2TDADjZZs1AAAAEKADAFDRWhIACNABAOjfjSQAEKADZM4lAUBvll%2FefVpJBoBx%2B1ESAFUbh%2BnruWQA6K0OBgAAAAAAAAAAAAAAAAAAAABOxA%2BSAKji1v3b0%2FTH9AROdW6lZAAA%2BmAVd6CqLDh%2FOvJzXKfB%2BTOXGgCAPtgHHeBPN5IAAAABOkD%2FXkkCAAAE6AD9Wn1592kpGQAA6Itn0AG%2BaTS9%2Fb%2F%2F1%2F94kf44L%2FivdfrqOuBf%2F5f%2F9j977VRIz%2F%2FZAK7dIk2HReTzOkt%2FPDngOdzN%2Ff0q5rVNzyfLo2cjLLerNJ1Wqq%2BDlfcnI81HdS3TfHfTIh2fScJu6m4QoAOnZJ7dTMfc4Gr4ey%2FS16Sv4CR9%2FdxjYz0L%2Bp4e8bXbZdbjuXXR8fKmx3zadT78rtG%2FVT5%2BCz9XAoHW6TwJ9R1JctkiHfusW4bGui8gQAeaCluPraTEdwFqn0HPJGs09ziC%2BGgAl2HdZiRroOd2M7J8emjTHYF8lrZvs59pvlmrxWp5LAn%2BqHPmR15vDsGy7xlgMFSeQQc47obWeY%2FffTGA848enIeRwj7T9a3AqtM8e52%2Bfk%2Bv83W41uwvE9m09pmUaFfnhPw2lYRfWZQVBOgAowxQ7%2FbUYB%2FKqGwXjbw%2BA5FVBzMCLhTV0uv8OXseOASg7M5D0qh9nWNq%2B59MbwcBOsAoA9S%2BRnqHMHtg1dEUyTFNbxdYVQuaPoYyTTGzML5pPC07dALpLPtm7hETKOcZdKCSW%2FdvP0vG2ft%2F9eXdp5dHGqBmpj1971int%2Ffd8fI68ud53rWaSQjSL1s%2BXzw6aZpkdYzOi%2FblU2dZd%2FUcjIoRdODUNQ3yBjMSEhrQh%2Fy%2BMU9v7zOgXUXeWs2IXX3XtsAaVJkYmnmL3zW9%2Fc96biEZQIAOUGQZVqc%2F1gB149CjW0NosC87Wr1%2B1uM5efZ8GJ6GrbBOnsXh%2FhqcN52WHTpRJ5LwK6PnIEAHiN5QGNrzmIdeKO7iiK%2FdrkZ031NQY5%2BT54abuw754dQ9kQR%2FaLO7glkIf5pLAhCgA8RuKAyt4T491BeFoGUygHPuYgXgBz2eT%2Bzp7dk18txw%2ByD91J8ZFlj%2BWT5vWpTFmST8Vm93NPMJRsUicUDlBkr6WozofLLp7bWnKw50VeyzrBF4oIbPgwGcb%2FRG3gCe147d4SAgiFCukm97pj88xZMfUGfcELxWFqN4KwlAgA5Ekgaz88TUtKEEqEWmB7o%2BQ5g98Laj8%2Bqz4yX2gndGPiPli%2Bz54RNd1MojEn%2BaK4utre2QANWY4g5wfAFqkTtdf8GAZg%2BMbXp71AXvBriI4bE7udW3w7TsqUv%2F1aJp%2BQyLDSqL3wjOQYAOMNoAtcghGtNDmD3QeCXlHde17%2BntFocbtmkIWE%2BJLcHilE%2Bj5396JQlAgA4wxgC1zPkBFrQa6%2FT2Wc%2FnZHu14TuZTo8BdFgNSeNp2WYh%2FMXS4nBQnWfQgUpu3b%2BdNdrGsCr0%2Bsu7T01Xyx56ozW7PouOGu1DmD2wbrqS8h59jnLFnt4%2B5FkexyxL16sTOld56Js29Y1ZCH8yeg4CdKCj4O%2F9CM5jnr4uRxr4TJPuVtofxOrtsT9wANuRxZ7ebkptNyYH3CmhbwLLloGlWQh%2FsU66WTcERssUd%2BDUNJ0i%2FeAIzu1uh589hMZmF6Mws57PKVrDVVDQuenYTzBbsT6xqNlGNrul6WyrrF4xCyHUcbHXDQEBOsB4ZNPbmwZExxD4dDISPJDZA6sWjeVdRjO9XXDeuVMIXM3A%2BFOb2S0WaoyTjiBABxi5RsH5ET3Xexa22Bpjo72L6e19b0cWe0aAoKBbd8d8cuFxj5nL%2FId5w3ScJmYhbGQdqwvJAAJ0gDJjnt6%2BMY3caB%2FKtOkuprf33fEQc3p7FhCcK%2BK0IDjfCs5bTMvWUdZtvQ2jZ5E4oKpsevG9Yz6BL%2B8%2BLRr%2B6jFNHb4T%2BfOGcO5dbdHTZ0AS%2B7lMwVX3xt4BYnr7nxp15oaOMo%2BabNVzkgAE6EB3wW0WTCxO7byPcNuqaeTPG8LsgdcjvK6x93MXXHVvtIt%2BpeVhlpiWvbFqsZ3jTPL9GZzb%2BxyaMcUdYPgBah2TMC09RqN9KNPbb0Z4XWNOb%2B%2F7WXqOnw6eP1kcrv90hJNmBB1gt2OcrjiNFAAOIjiPPQozgI6H2NPbBQW0KQ%2BT5Pi3kFtE%2FKx5w3ScJcc%2FyyJaOraYhQACdEkAUNrgOrbp7Rt3IwXoQ5g98LaDzxzb9PYhdKQ8TF9NOx2ya7F5vvun8OchPu%2B9SMbp6QCO4TIN6OZHno5DmIXws2nlIEAHTsSt%2B7dnyfFOg7z88u5Tk0bLgyM939bBjentx3FOA%2BlEWkYYLbspyX%2BPE6vTd2Yg5Xx97MF5eMxk2vNhLATnIEAHTsskOc5pkKsmwfmAAtQmYlynIZz7PPJU8DFObx9Cp1n0Z01DGmVB2zy9ZtfJMBbfWifjM4QOnjFsxfV4jOUQ6IdF4oCxa9r4O9bp7ZtAtG2QPtbp7X0Heq8jXuMxz3LYDtYvk2Fs1%2FTrCOvHIUxvnx9zAg6kHK5G8IgAIEAHTkTThv2DIz%2FvxtOCB7KX77qjRYYejeicRrmIX4mrAZzrckwVY%2BjEm%2FQdnI9gWvYs6b8z1%2Bg5CNCBE%2FTTER7z8gSnt2%2FcPfbAr4OAJAtGzkd0TkOYVvv2EF8Sgri%2BA%2BRRBejJSB%2BP6MEQyuFLTRQQoAOnZ3KEx9y08Xcxgus1PfKGexfPpc7GEswOoLNh45BTz%2FsMkFdjWoAr5J%2B%2By0OWposjT8dpMoxZCGNcHwFOlkXigEq%2BvPt074RO98EIzuEsa4TXDSoGEvhlDfcugrExTW%2BfDSCPHTow%2BK3Hc10k4zKE%2FPN8BOlocTggOiPoAH8NUMcwvX1j2uB3xjq9Pet0mIzonIYwy%2BHtgb%2Bvz8dsPoysqus7%2F6yTYSz816ZOmQygvlwe%2BywEQIAOcAwBaix3jjTw62J6e9%2FnFXN6e9%2BdDV8DrI4W8dulz3O%2BGUulkOafWWJadgyzkdaVgAAdYFAejOhcpjUb7lmjve%2Fp7cuOnvXtszEdO5gdwrTaPgLWvvLmzcie8R1rJ9yh9V0O17ZWAwE6wKiNbHr714AmnFNVQzj31x1c1773tI%2FdiB7CdXp14LJ53uM1fDuWCiF0wk17PoybY19wL8xCODulMggcjkXigJ1u3b%2BdBQNvjuywL7%2B8%2B9QkKLoY4SXMAptFxfcOYWSti5HZvmdFROt0GEBnQ6arRfx26Wu0cmyjlE8HcAxjWNRsCHXlmPIlsMUIOjD04OaQQd6DEV6%2FacXAb5L0P709%2BsjaAGZFxA5mx9qJMtRrOJpRyoHMEFr1sHZB7HQ8T8xCAAToQI%2BObVT55su7T7WfFx3h9PaNuxXfNxvAsb7tKP%2F2OeIcLRgZUB49dND6tKdrmNUjL0dWl5uW3d7jEyyDgAAdGIIwvf3syA676fTJi5Fexqqj4qa3Dys%2FDjWPLg85chdGK5%2F0dK7zkS0O1%2Ff09iwt58ecgAOahbDQQgEBOnCaHh3Z8a6%2FvPtkevtfnYUgZ18QNOn5OKMHQyOc3j6EkbuDPT8crt91j8Hk87FUAmlaTgdQxm9GsrVa353Wo8mXQDGLxAG7%2FBpex2J1pIFc17LG%2Ba5AcQgdMV1Mb5%2F1HZBEDLCy4Op8ANfpkM8Pv%2BjxnF%2FZWi1%2Bmo4gHXvfWi3pZ4tDQIAODMGXd5%2BencipXoz8%2FO4M%2FPzXHS0c1XdQEnO0eTaE4PxQ09v%2F%2B3%2F9j9c9nnM282E0dV%2Fo3Ok7%2Fyx6WPk%2FdjpOE7MQgAMwxR1gvNPbN6Y7Gp1DmN4ePTgfwIjzcoSrtx9kP%2FCeg%2FPM5cjK%2F2wAxzCGrdWG8IiJ6e0gQAcYtxOY3p6ZhPMcauDXxdTXvoOSmHufD6ETJXPTcVnM8un7nq%2FdyxEuwNV3GV8d%2B17yocOv7%2FvEwtZqcBpMcQdO3exEznNaEmANYUXiLqa%2B9h2UxAxmhzBy19mK5qHz6Ek4zz4X4Mry4ahGKNO0zeq3Sc%2BHMYbR8yHcJ2ytBgJ04BTdun9701g%2BJqsv7z7NjzSQO5S7%2BaBxxNPb%2Bz6v2FuRDWGGx9sOrtE05MshnF%2FW%2BXA5wud7h1C%2FjWEv%2Bb47yVYdrdMBCNCBI5A1lp8e2TE3agAOaGXsQzgfaOO9i1Gh0SwOl%2BbRrDyeDSH%2F7Nuub4%2Bfkm%2BdJmcDLXNXx76IWUn9Nu35MI5%2BL%2FkwC6HvMvg6AQTowMl6fITH3LTxcnFC13WaNjT%2FNbBjWnb0TOWs5%2FOKOdI1lBkeT0dcNp4f%2BzPSA75mYwgszUIADsoiccAfbt2%2FnY1sHduIcja9venI1yNXfVyN9wGMOEfrdDiRBQz7Nh%2FTlmoDyzvLY19wb%2BtRjL7zqK3VQIAOnKhjHD1vNFp5YtPbR3Xt9uh7y7yx7X0%2BZtmK7ZcjPbchPBoxhkXNhnBPtDgcnBhT3IGvwuJwxxgQNG28GJnsOTiPPb19IKOG84ifZYZHdy5HOq19o%2B%2Fp7esRbK02hPpkMba1EQABOlDPvWM74C%2FvPjUN8gQ%2F%2FXrbwWf2PWp4E2sqqhke3QWO6evhCPc6384706T%2F3RnmI0jKWWJxOECADvQY6GYN18UpnKvgZxDGOL09ZqfDY1kkukUIzsf%2BPK9p2eNIx%2FXIZ3kAAnSAP5je3q%2Foix4NZDrqjTw6SFleuzqFYCd0PvZeDjraneGQ6ThN%2Bp%2BF4NlzEKADnAzT2%2FvVxfT22QCCkljT24cQHIwlMM%2BCnJcntAr2bADHYPQ8jrkiDAJ0gNEzvb3%2FoCkNlrqY3t53p8vbEZ3LWALz%2BbGP5B5hYLkawdZq2T2i98UmTzDvAgJ0IHPr%2Fu3r5AhH6768%2B9R0QTtTh%2FsVPTgfSKeL6e39y1a7fp2c6L7RaTmYJf0vavZ8BEk5G8AxWBwOBOjAiQbnk%2BQ4t1ZrEwwZnexXF9Nf%2B87DMae3DyHIOkbZNParE0%2BDvuu2ddLN4o%2BHZhYCIEAHevP0SI%2B70XRi09t7t%2BpoT98xTW9%2FIJs08iR0bpzaM%2Bebui2r16Y9H8bNsae7WQjAEPxNEsBpOuLR868NwYa%2FZ%2Bpwv6JP2wyByaTHc4q2FdJAVqI%2FZln6ZZ2OH9O0PLV0HMKiZmMILM1CAAToQG%2BOdfT8JuzZfoyNr1M37%2BAz%2B76mMRvTM1kkikn6epMG6deh02PUBtKxsxjB1mpDmIVwkusnAH9lijucdiN2cYTH3WgU1vT23i07asD3HdRavX24srxxnpb9eyMPerLz7LsjwtZq0hEQoANttFgF%2FZgbsfSni%2BntFz0HJtG2jNOB1JksTd%2BPPEgfwqJmRz0teyCzEG5srQZkTHEHToXRyX7NO%2FjMvhdUixmUPJZFug3Sx3hiaWA5TfrfJnMMW4LNkv5nIdhaDRCgA6dhAAuJnbroqzsPZMQr5vR2i8N1HKSneebFCM9rCB07L6Vja0c%2FCwEQoAPUYfR8PIHsdkA7lunt00QH0iE8CZ11oxAei%2Bi7Y2c%2Bgq3VLgZQ%2Fjx7DvzBM%2BhwQm7dv32e9D%2BNr6nVl3efVi2COXoKZJNutg0a0%2FR2HUiHk42ij2X9jdkAjmEMgeUQtlabK5qAAB1OLzifpD8%2BHvEpPMyC9Lq%2FZHp778Y6vT1mYKID6XCmWZ2Q5snlCM6l72nZy2NPx4HMQrixtRqwzRR3OB1Pj%2FjY11%2FefWo6Yml0sl9dTG%2Bf9XxOq1iBSRogZOdyJpucVGA7lnxjazXpCAjQgSZu3b89TY57m7F5i981OtmfdUcLH%2FXd6RLznB7IJgc3hjrh0QDK9nwE6dj3fXExktkcQESmuMNpeHrkx99o%2BxnT23sXvQE%2FkP3CX0c6lyFM1f8aJHT0udOB5suzY57mHuq1vtP26Ed9BzILwdZqgAAdTk0YPZ8e8Slki8M1bUib3j6%2Bxues7%2FwYMbCbDaF8pefT2aJpoUMlq3%2BymQJDGrnOjulYRy6HMC17PoL6aQhbq40hHQEBOlBTtvjMvSM%2F%2FqZMbx9HILttTNPbh9CB1Oney2keWIVgbh5Gfq%2BT%2FmdAZO4cY6EayKyLebiuRyvkxVHMxAEE6MCRaTH6fNRMb%2B%2Fd65Fe01jT2ycDCVQPNlU567BJzzvrLHw%2FgHM%2F1rphlpiWHcMQZiG8dJsAilgkDhgr09v7NR9hozrmrIAhBAjLQ4%2BEhu2krhSPoy4Di2NOwDALYdZ3%2FWhrNUCADpwa09vHF%2FjZ%2B3y451MnSM8CvFXP535%2BbIUqDSynSf8j%2F89HUD%2FNBnAMprcDAnTgdJjePr7GZ3pNs4C276m9N5HOZTqQ%2FHlzot%2BdJMe593zfo%2BfrAVy3MaTj8thnIQDd8gw6jNCt%2B7ffHGkD9C%2BNmC%2FvPjWdCjvE6e3L5K8L3k1HnAXnHXxm3%2FuFx5wVMIjF4XqeYvtPNXV1Yc2CISwOtz7ydMzScNLzYbySowEBOpxWcP4kGcf07rctfndo579OG7a%2FFDQWnyXHv0d954HfQJ4ZjTkrYAj5s%2B8ptoue8%2F6xLZ45G8AxjCGw7LtzbG1rNWAfU9xhXMH5ZEQBX6OplAOd3n4zkiChircdfObFsebHgvyZBVp9z27JgoS%2Bpyr3%2FQz4sY0E9z0tezGCrdUmA6hLBOeAAB1OzHVy%2FFPbvwauX959atoYHOL09lcjCRKqBD1dBH5jmt7%2BYADXaQjPEZ8lVA0sZwNIrzGMng9h5wTT2wEBOpyKW%2FdvZyMD05GcTptGzNCmt%2B%2FammtsAXoX09snA7imsfY%2BP0tOePX2nDs9f%2F8xzV7pu9NxNYAZFzHMBlA%2FrrRWAAE6nEZwnjX8r8cU6DUMgIawAFDl4C7intpDYXr7sAOETbA1hHzX9xT3o1ikLjyyM%2B35MI5%2B1NcsBOCYWCQORuDLu0%2FZqOU%2FpMQgpg%2FnzU8k7bt6rrnv0cObka3e3vv%2By2FWxKTnw1gcSbkawtZqY6jD%2Bk7Hla3VgKqMoANjMrTp7VUWVlqNJO2jN%2BJDINf3SOvbEZ1LJ9fpSMvp4MvdQB6JuBnB1mrnAyh7z92eAQE6cFLC9PahLTxVZbRyLAF6FyOzQ1jU6WZE57IcyDOwvY8KH8mzwLPEtOxR5LdkGAszAgJ0gIMa2vT2U2qUdfVc85hGDy0Ol3ztSJsmprcfS2C5OPZ1MsIshNmI6hFAgA5wNIY2vb1qo%2BzDCNI%2B%2Buj5QPazjzW9fQhB6dc8OYBjeDGAYxh8mRtInnmdHL%2FZAI7B9HagFovEwZG6df%2F2dGzn9OXdp0XDxuwQp7e%2FPaHsOO%2FgM8c0vX0Ii8P1PoqXltMnyTCewz%2BGmS1DWNRsnhy%2FIcxCWGmxAAJ0OAFNg9mRGtr09jr7Bh97462r55pNb4%2Br19HQMCPixYjza8y0mgwgzxz96PlAtt20tRpQmynuwBgMbnp7nWD%2ByNO%2Bi%2BntQ5gREWt6%2B2wA59LVFnh1gvP3A8mvxzCzZTaAY5iP4L7Q98yVVZ%2FlDhCgA%2FTV%2BB%2Fi9PZTGjXpoiHf94yImAv8DWF2x03P5fP9gMroMQSefU%2FLnh%2F7tGyzEAABOkB%2Fhja9vdYU2vS9iyNO%2B%2BjPNY9p1eWB7GOdOXiHUXbu6Sub0v5mQMH54gimt88GkF5jCCyHsIbFS7dnoAnPoAPHbmjT209p9PztSK9nrPOaDeBcVofcKit0SjwJAdLQZrYcQ%2BDZ97Ts5ZF3Gg6l7M1trQYI0IGTM9Dp7U2mE6%2BSYWzDVUdX%2B7z3Pr094nOjQ1i9%2FdUBymFWBqfh2s0Gml8Hvyp5eFZ%2FOvb8coB0nA3gvmBxOECADpykoU1vbzpqcowBehfT27M06H319ojnMoQtxdZhT%2B2YJuH1UzjH8yPIr8ewF3Xf07LXtlaLYnnIWSuAAB1gSIY2vf2U9j43vX3YQcLGtWriKEbPh7D2wtEH52EWQt8dRkbPAQE6cHoGOL29zdToD0n%2FU1sPda67PBrReV0opYPxfE9d8v7Iyt8gA8s0HX9PhvfIUR91yFxWAgToMM4A9FxjZ9DBXN4pNcrmHeT3SdL%2FyFes6e1ZsDdRRAdhuStgGshz30Nw02aF%2B4E89z0ERs8BATqM2AsNx6PSZoXo1Qmda5nHIzqvR4rDYFwdQb4bQ2ApHb%2BZSwKgLfugA7TXdlGgYwrQu9q262IA57UYybnwzctd13RA%2B9Qnx5z3B%2FLc9yCC8zazEAAE6ADxvHauzYUG%2FqTn84o1vX2WmOo7iKAz2b9y%2B4Vr9ZXRc%2FcBQIAOVLCWBEdj3uaXI47cDv5cB9zAj9W4fqA4DMLDCtsAPpVMX%2B8zjcu0WQh%2FWB1ZPQ4I0IEGfpUERyH6fuADtuxoCucQpre3nrYvWBmMq33X00J%2B0eqvWWIWQua5JAAE6ADDEGvf7NURnGsX09uHMM041tZqM8VhEAHnywrvs5BfnMDS9PZvsxBuJAMgQAcYQMMs4p63xxCgzzv4zCFMCbd6%2Bzhko%2BaX%2B94UZjrMJFeyaLm12jQxC%2BFrvXhCs6gAATrAoJ3SqEn0qfwDCZRiTW%2FPAhUrWfcny5sPK%2BbRJ5Lrq7YdUzqkvrH3OSBABxhhw2w58HN928FnDuF57Vij56b69huc36sxGiyw%2FNYxNW%2F6y2Yh%2FGFhazVAgA4wnAZuzKD6nwMPgLqYLTCE6e3zSJ9jcbh%2Bg%2FNKZTGseTCRbK07psxC%2BMboOSBABxhpw2zIzzB2Mb19MoCgNsqq9J7FPY7gPDB6%2Fs3Llr8vHb910locDhCgAwwlaI0dLA74XE1vF6wcfXA%2BkE6hIWi1qJlZCH8weg4I0AGGEpyf0HOH645GiYYQ1MY6L0HfwIPzYCbpogSWOqS%2B5cG5ZAAE6ADD0MWI8lBH0KM3Qgey4nms6e1Z0HemSBzuujUMzjMW8vuW75cty64OqQ4e%2BwEQoAM008mCaQNu7L3u4DMfj%2Bi8HigSB7NoGpzrSPnDqxGU3TGkI0CpHyUBQC1djpysBxZExF6pfmMII3CtO1nCVlNGEw%2FjeZoXn7X4fdOyvz2uMm%2F5GTPJ%2BHVrtaVkALpiBB2gntcdfvZy7OeaBrXZ1PZJz%2Be1jLSGgGDlANcqff3SJjgP07KnkrLdqK9ZCAe5BwAYQQeoIRtRXpzQ%2Bc47%2BMwhTJGNNT3VqGx3stkkr1qOmm88lZxRyrP8%2Fu0eMJcMQJeMoANU1%2FXIyZBG0JcdrVQ%2Fluntk6T%2Fhe7GHEj%2BEiM49xjCn3m%2BTXk2C%2BFg9wAAI%2BgANQOHLv1zzA3RsH9y31NkY60hYLGsbsrX88gdQ0PIc0PQdtaIWQiHuQcACNABKloeYO%2FzIa3k3kVDdAgrnsfaIs%2BobBxZmco6g%2BYdlS8dKS0fzTEL4c868QD3AAABOkBFh9hWZyhT3KOvVB8a%2BbMhnFuEc5km%2FS90d%2BxBeRYwvk3z2U1XXxKuk8cQkuR5y983C%2BEb09sBATrAgNyc0Lm%2B7eAzB%2FHseaSOB4tl1Q%2FIs86nD8lht6hynb7Nymlbd5mF8G0G1UIyAAJ0gGGYd7j3%2BV8agSNp0Bd50CJNYqV9rBEw032%2FD8BXW%2Fnn1%2FBzGQKbgz%2B6MaAZG0ddd4VtEc1COMwMKoCvfpAEMExheuZ0BKeyToa3v3ftAMSzhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwSLZZg4G5df%2F2m%2FTHmZQATsj6y7tPDyUDAKfuR0kAg3MhCYATcyUJACBJ%2FiYJAIAeLb68%2B%2FRSMgCAAB0A6NelJAAAAToA0K%2FnX959WkkGABCgAwD9yQJzU9sBAAAAAAAAAAAAAAAAAAAAAAAAAIBh%2BkESwLDcun%2F7X1IBGKn5l3ef7HsOACVsswYAHMpzSQAAAnQ4Crfu3z6XCsBIZaPnK8kAAAJ0OBZnkgAYKaPnACBABwB69tLoOQDs96MkgEHJGrBGmYDRBeiSAAAAAAAAAAAAAAAAAAAAAACguh8kAQzHrfu3J%2BmPmZQARsC%2B5wBQk1XcYViyAP2pZACO3DqxcjsA1GYfdAAgtudf3n1aSwYAEKADAP1ZpcG50XMAEKADAD17LgkAQIAOAPRr%2BeXdp7lkAIBmLBIHA2vcpq97kgE4UitJAAAAAAAAAAAAAAAAAAAAAADQ3g%2BSAIbj1v3b5%2BmPF1ICqOht%2Bpp%2Fefdp3UF9dJb%2BuEhfD9LX2Y63Xqbfv3IpAECADmML0Kfpj%2FdSAtgh2%2B3hVfq66SIwL6mbNoH6LPdfL9NjuHJJAECADgJ04JQs0tfzNCBe9FhHnYUg%2FXH6WqfH8ovLAgACdBhrgJ41fn%2BXEsCQAnMAQIAOpxqk%2F0sqAKlV8u35boE5AJyIHyUBDI7GOPAhDcyfSQYAAAAAAAAAAAAAAAAAAAAAgNNkFXcYmLAXOjBu2R7iS8kAAGyzijsMz3tJAOMOztPXQ8kAAOT9TRIAwMFko%2Bb37G0OABQxgg4Ahw3O15ICABCgw3HIGu9nkgFGZZ4G5peSAQDYxRR3GB4LR4HgHAA4QUbQYXiuEiPoMBZWawcAAAAAAAAAAAAAAAAAAAAAoLYfJAHQp1v3bz9Lf%2FyUviZSgyOWLQb3UDIAAAJ0YAyBerZy%2FXn6mqavO%2BHPgnaOIjhPX%2Fes1g4ACNCBMQftWYD%2BNH3NpAYD9ovgHAAQoAOnFKhfJ99G12FI5mlwfikZAAABOnBqgfpFCNTPpAYD8XMaoK8kAwAQw98kAXAs0kDoJguI0teN1GAA5oJzAAAAAAAAAAAAAAAAAAAAAAAAAACAkbLNGjAqt%2B7fzrZhm0kJOvL8y7tPzyQDANAF26wBo5IGT5eJbdjoxjp9vZQMAIAAHaC6LEhfSgYie%2FXl3ae1ZAAABOgAFYUg6p4gnYhWidFzAECADtAqSDfiSQzPjZ4DAF2zSBwwarfu3z5Pf1xICdqwMBwAAAAAAAAAAAAAAAAAAAAAAIdkkTjgpNy6f3uW%2FphICfaxMBwAcGg%2FSgLgxGTB%2BVPJwB7PJQEAcGj2QQdOzcvE3ujstg75BABAgA7QlS%2FvPmXB1yspwQ5XIZ8AAByUZ9CBk3Tr%2Fu3PiWfR%2Bd4iDc7vSQYAoA9G0IFT5RljilxJAgCgL0bQgZN16%2F7tqVRgy%2FrLu09LyQAAAAAAAAAAAAAAAAAAAAAAQN8sEgeQfF0w7jqx7dopev7l3aeFZAAAhuBHSQDw1dv09UYynJSF4BwAGBL7oAOk0kDtJv1xIyVOxjp9XUoGAECADjBMVyFwY%2Fyyqe0ryQAADIln0AG23Lp%2Fe5b%2BuJYSo5ZNbb8nGQAAATrA8IP0F%2BmPcykxWg%2FTAN1MCQAAAAAAAAAAAAAAAAAAAAAABssicQB73Lp%2Fe5L%2BmEiJo7T%2B8u7TUjIAAMfgR0kAsNdZ%2BnoTfnJcLtOXAB0AOAp%2FkwQAu4UR2EspcXReptduLhkAgGNhijtARbfu356lP66lxFGYp8G5ThUA4Kj8myQAqOZ%2F%2Ffv%2FWP6H%2F%2Fyfsmnu%2F7fUGLRFGpw%2FlAwAwLExxR2ghjTwu0p%2FzKXEYGWPIwjOAYCjZIo7QAO37t%2BeSoVhBuhf3n1aSwYAAAAAAAAAAAAAAAAAAAAAAI6ZReIAIrl1%2F%2FYksU%2F6IVx9efdpKRkAAAE6ALuC9PP0x%2Fv0dSY1opunr%2BdpcL6SFACAAB2AKkH6JP3xJn2dS43WsmD8Jn29EpgDAAJ0AJoE6dkI%2Bov0NZMae12lr2zK%2BiS81uHvK0E5ACBAByBWoP4kBOoUe5gG4TeSAQBAgA5wiCA9m%2BqeTXmfSI2%2FyBZ7eykZAAAAAAAAAAAAAAAAAAAAAAAAAAAAGByruAMMwK37t2fJt%2B3YzkZ6itm%2B5ve%2BvPu0drUBAAToAEMP0rPg%2FDp9XYzs1NYhOF%2B6ygAAAnSAYwrUpyFQnwjOAQAE6AD0H6g%2FS388To532vsqfT0UnAMACNABxhCkT5Jvz6Yf27T3m%2FR16ZlzAAABOsDYAvXzIwrSF2lgvnDVAAAAAACAo2MEHeDIhdXfs9H1yQG%2BLpuyfvPl3aeVlAcAEKADUByoZwH6NH3dSV%2Fn4dV2gblleP2afJu6bsE3AAABOgANgvazEKgnIXivEpBno%2BQro%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC39IAkAAACG4%2F%2F6afIi%2FXG%2B4y3r9PX2339bzXd8xiz98Tj3Ocv09WrX7xV8zkX641H6Otv659dFnxG%2B88HWe0uPM33vNBzf5r2r9PU8fe%2Bq4nFN0h9P09dk67uyc1tUOJ%2Fse6%2FS9y5jfa4AHQAAYJwB%2Bvv0x7TCW5dp4PhL7nezgPf9VmC%2BDoH5%2BVYwnAWbD9PfXVfoKHiyFUAnW4HrPP39y633Xqc%2FZhXfmwXJb7beexZe2fHcKwqcc8d1Hs5x8zvrre%2B6LOuAyP3evXzQHYLzj3U%2FN6a%2Fyf4AAACDlAWRP2y%2F0n%2F7R%2Fp6Hv7%2FPIxab9sE56vw%2B%2F9IX19%2FZkFmCDqz4P%2FpniB4shWcZ8Hpz9kr%2B8zwGbMwCr4ZDZ9tBdib926C8lkIjjcdCNfbn5v%2BzF7zEBi%2FqJAub8J75%2BH8tr%2FrOhx7%2FnwutoLzMtc7PvdFOHYBOgAAAEmSjXqnr2choM3c3QpCn4XgPAuUf8mPEIcR4E1w%2F2RPwLkJ%2FOfbI8fhMzd%2Fn%2BZ%2Bzre%2FM%2Fze5r0XWz%2Bz711sPjeM5F9tOg%2BKAuytc8zOL%2Fv%2F9faofPiszXdPtt5%2Flr7ebAX16x0dEtPw%2F1cFn3u2dQ4CdAAAAP6wzgejybdnxTOvyqavp%2F%2F%2BMv1xsxWol1mE93wo%2BL9%2F5v6%2BCu99u%2BM4k1yHwod8x8NWgD3d0UGRTX%2FPpvXfK%2Fjvog6H8xBYZ8f4MPk23T8peV9mWZB2b%2FOdIV35Ub4GAAA4HmEUebYdPIbR8E2wfrPr99MA9OG%2B7wgj4YuS%2F360HXzveOZ7e9R5letQKPrsX8P7J3uObVnwPU%2BSP2cPLHOdB388P56%2B9%2FGeAL2oQ2KZO3YBOgAAwIl5tHnOe0s2ijvdCj7nuQAz2bfIWsvOgesQqK63vrvMi%2FDeVVcLrKXH8zkXON%2FbHgEPq8LPj%2BWCC9ABAACGaVby71kAmo2SX%2B1bib2D4HxzTDtXgd96b%2Faehx0e1iq8NqvUv0m%2F%2B17V7doE6AAAAFSRLVa2GQ3PAtCnIQhdFATnnQbqueD8smxf8DDd%2FMVWcH7Z5Yh%2BtkL91vduVrB%2F0XGngAAdAADgxCy3AuFFGoQuQhB6sQl%2BtwLVZfr%2FmyB5WhZAh%2F9%2FFn7%2FZt9Icy7w%2FToavic4337vvS6D81ygvk6%2FP0uPj8kBVlvvilXcAQAAjkAIdjdbgGV7iz%2FJvWWzONyjPQF3tlBaNso8rRGcr0LAXSU4X%2B4Izjf%2FVvTdd8LP1Y5jyrZhe1Zw7jt%2Fr4LNcRWt1H4e4fMF6AAAACML0udbgfjT3J7hr7aC9%2FOSj8gC881%2B4Dd7vm474P6lbDS8RnCe%2BbUoEA6fsQnaFzuOKXvf09DJkHfRIpDefOe0YH%2F4B%2BHnh66vrynuAAAAx%2BUqBLOb570fhuA9mwZ%2FEwLVj%2Bmfs73Jb8L092kIajdB7NWeRd6eJX%2BOHGfB65PNFPotm9XZn1R47yI7vuz96f%2B9CIHwi%2FTvVyEgfhPOZ7E97T79v%2Fdbx5tN%2Bb9J%2Fy077kl4Lv4qTG%2BfhrTIvG7Q8ZF9RnYus%2BTbQnMPw789CWldpUNDgA4AAHBKsgA2BN9ZQHqR%2FvkiC1zDf2%2BeS88C8Wyk%2BWlBsHxZYduzB1t%2FflLyniwYnyd%2FHc1%2BsuMzF1vH%2BCYE8tvvL1rxfRp%2Bbo9qZwvDvQ%2FB9Cx3fvP03J616Pi4CN%2F5e%2B5zLw%2BxYr4AHQAAYFiyEeBsOvVqR5D%2BMgSQZ9vBawgiH4YR5SzI3p7q%2FiEEsKsKx%2FA2vHbZfM6rCp%2B32DrGbBT859CBMNk6tpcFQfDz8L7tc89mBPwSOga2nw9%2FvWtxvH1pG0bMfw6dDHe3PvfVoRa7%2B0HeBwAAYIhCR0M2Wv7zse5tXodF4gAAABiqbCr8%2FBSCcwAAABisHavRAwAAAAAAAAAAAAAAAAAAwKhF3Wbtv%2F%2FX%2F3j%2BX%2F7b%2F1yeWiKm5z3d%2BusqTYOVrHWQdD%2Bq%2FJblk%2FR4F64cQy4L6Wdl%2B6hOTrEuP8R1SsI%2BteoC5bSj75iE%2FLUawPmqS%2BK1L4%2BqbRny4eSU67osDbq%2BZof4jhFdj6w%2B2l5obpmm3Xqox%2Ftj5M97nybAw64LY%2Fods%2BTPDe0z87IMWue9NRpYF8m3jeunJe%2F5WpmmrywdPqSvm6aZIP2sZxGSbFF2TSp%2BfnbsyyaZOXb65477p%2FR12XOBf7JpcFc4vxfp%2B1%2Bl%2Fz%2Fv%2BJgucpXQX65%2FuOFPI35lJ5%2BffuazHQ2WKp%2B%2FDI2aZQdp%2FKzi9y8PcIPOrvfT9PVLpI%2FM8s51%2Brm%2FdH3zyqdj2TWv%2B949N%2BgnVfNapEbq45BfzwvuE1keeZu%2BXlZN64I6tYnVph4KxziLeNpfP7ugHopdz%2BTTYVG37RE7LSvkveuI5bTMi%2FT1KrRBqgR%2FndXV4fpn9717fdclkdpSSey2TEl9%2FiC0M88K6oyb9PU6%2Fe6bitfzZZu0LyrHRdd7qx55UFLXZWn1etfxxL5G28dZVvd3dd1DumVxwlXHAWdW3h8esmyVtHXWderfgvvOKmbbOKTN5hqcl92LtvLm5l68GEqHR%2BwAPUuQN6Ey7rLH9HE%2BANlxM6rz3n038qc1buabzDcLN6gs4z1vUFE%2BjdW4ifH56Xlk17VOkHmdv1lEbPQOoefrRY3z2zRWlgcoH9Md1%2F5BpBtVWf56FKHBn6VP2U2h1uen6b0KjZpXESvepzW%2F%2F3kXHTNbN%2BhJ9udIjeDzUH9le47e6%2FCmf55Lx1XZNQ8Nz0rv3ZNW73P3g3UX57h1XWYV0jp7PQqd21XqhUcRgqqsvG7y40XE%2B8wmgJgX1ENJhDphVzosGnzmi3wQ1MDziu%2F72knT5YhXCAouQoBe9V5x0VHbYjt%2FD6EuiZnHo3fqhXO4TvZ3an29xun7s3J2mavzVwXnuW7a7to6pu0yclUSwO1L30l4z%2BOiGKGgjm8rnwfOI31%2B1RjiQRK3g7Kr%2BqtKe%2FtpxfcmW22tRYV8vP258617UpvjnTZog07C6yJ8xk1os%2FU68%2BdvES%2FidCtIvw4NlK7ke%2FMWkd5beMNLX59DJTVpeLybnrvP4QZap3LsLDhv%2BPmb0bWP%2B67xZqpdLv3XESulScQ0alpx%2FeVGuKNneLKVF94fsnwU3Exip9mioLKLcXPdVZnWMQnl72PoaItV19X5%2FqzMdHHdn2ylx0Wkz9wc4zQ93usO8%2BmkxjU%2Fq%2FHeWsF57JtwqJM%2BNmggvC%2BqMyuU7yY%2B7Ejbtn7tqJ5ZFQS8bfPEWQfHtavBHrOclnUKtSmDTayHXpd00E5YRb52s1Bn1DnOiyQ3ABI6fm4KOmGaygfn2WzQl9t5LmsL1gx8N22g8z11fOxrFCsPLGtcn%2FOKdXrTdsgs6V7d478I13dfe%2Ben3N9%2Fa9sez74z3OfbpstFaC%2B%2BSHr0t44u4qbHtItMeV715lDnvUU3u3BDebMjg65CcJJ%2F7aqY3tQIEmIV7HUHn39eIdCcVOkoaFApXexopB3SpEbFPSm4QZ11UD6%2Ba3QWjNbEbqys9zSc2zTyizT9%2FE3n4UXk617VNGa9WNCzfTfSR29%2FzixGp0bFQHMZ6b1VgvNVR8H55ruK8sj2PWJZlj97CCrvRr6uyy4a3NvXqqjubDAqHaserPq9F7lAPbbtzrrVAdPg1yOoS2IHSauIdcaspNyvc3VGUTvuoiBN87MnJg06lZMQnOQ7NC%2F31Ktt6rrY7ZIPHXQArKsMMoU2xlmu3Md2qOBx2uL3drVzG9%2FTC9L76wDonmOtG6%2F1HV9EneKerwC%2F9pimmTn2M8JNg6LKGSA0fN%2BUVBjZZ2TP0dzsahBsPUdUdEPKgoSkwpTX%2FPfPw3c3btg0%2BPwsg%2F4Ufk4Kfj8rGM8qZu5WN7WtZ%2Fi2ZVNZXvZUfuqc37Qg7V4k8Z%2Bhr1LpPdwTxOaDyHs1Gs5FDaEmUxtXO8rmvs%2FfLMRVNsUsS%2FebiHVQUbk5D43Ti4J6cRZpuvt1QQAQIz9NCuqrVQdri9zJ%2Ff23SO%2Fdzi%2FnoRF5lisTXT0T%2B6agIZhNgf7uucvQaM43gl83KN9NnnHcrheu9jRe3%2Bf%2BfrmnrltWKPfnuQZm3fM4LwgIYtSVbdOySoN9GvFxlO18%2FrROZ0XXdfXA6pLlnnPLT4nd19ZaR7puk4JAK0vPwkeiQjC%2BPa15mc9%2FWdqGx6q20%2F5xnTIS6qb8Y3APc3n2RUEZepkUPMoZzvM61w56W3AfXewJSM9z9eqiRr68W1Av182HVa%2F73dyfo7ZRwyMFh5o9%2Bvcd7Z3Noms%2FJQVrJuyJEc5r1CO7YoI3OwLpm5DPdq4DFvL7Jl47ixWzDClAL%2BqFz3pMP0R%2B9rLTUZeSBt3mQl1WvbGEBTxuskXBkuLnirJnkfctRvDdTSfyje2nCp%2B%2FyPVS5W8mj3cE6H9v0qje4UlRJ0Hsxk6Liuu3Gmm9KR%2B%2FRX6WbbKv0tuVhwp62pc189yk5e%2FH%2BPzN35%2BVPNeXjShcFC2y07Cu%2B1ByDC9DeuaDtgdJy2etQoM%2Ff63OIq0SXdRw72JtkbMa9XOd9%2FYSnJcs0PSwLJ%2BFhvS95M8R9yrp%2B92ssLbla993hucKt98%2Fr%2Fi5ixrBYd3zaDw7bkeeetvhArf5OuMiifC8ZS54aVvOFx2cf1ld8kvk5%2FB31g%2Fhu1Y78mN%2BGvivB1p5%2FGmd%2Biksvpi952O4xzwsee%2Fz5K8duBdV1z7YCnr%2B8nm5BRonyfeDT5dldUP43nthCvJ5eO9NzWuUtMyvh8jv2%2BV7O%2B2jtVG31mA6lPM99eTmOl7WjBHO6tyHSvJp2QyOecizleqYcD7Z%2Ffh5iDMeh%2BP7tc8Avasp7tuum0yvqRNURnrvJuMXBefZ6MfPTQpzlunS1y8FN%2BMqz4udlQXLHV2zxZ5zyXoBr4qCgooFe9GyUnpaoTI8pDrnV1Y%2BnkaYcr3re35teU6rA%2F9%2B1M8Plf69ggZ8m97nys9DhzojP%2BWwVX1YMpMkSlnYUVd3sbbItEbQPa1z3UuC85uku5HzpKDR9HxfJ1A4lmxE%2BueKDZR8%2Bn%2FosoIr6rDrqJ760LIMNmlI3e24rtpVLu9GvEZPGtYp0y7Pf09d8qbHuqRKfux8cahw%2Fvkg92pf%2FRTqiSww31WX3RTc82YVDy3%2F3PmiYBAhX9fdVOy4uwx1cJPO8fNjuMbh3jPpsI16nXS8MFzTNlfVGKHtfWVHcJ59Ttb5d9mkAzArTyGv%2FxI%2Ba5X06BABehIq40lH3xNlivtWr2E%2B42cXuvU2CWGq%2FyKXyfettNrpDbTJ528vELKjsVRWsNctK6WqDa3BVVx7GlDXERexadvobNvw%2FSlCwznq54dGzE2H133fzeWmYnmp6umOz2j7fOvZnvOOstBTnQUkS9672hMY5IPzbGuchx3PtMk3wqo0WDeduOsDle%2B299tY6df2PO5GaGxPDpGWXTbYQ7ul6crUURdpqtkm7KUu6TD4i9KpUHOG5r57Xr59%2BahiZ89Frrw%2FrFDXva543I22PS1aT6rONW77%2BzU96qqNWjJzrjMlaxotI8QIje8rO4Lz7B7%2FS4xZfpsZH5Hbjf0E6BWCi5g9pnWCyjrvLZqGfhl5ev5lyIjz0MuzqHnTWUUseG0%2Bf9FFwa5RKS27aOxEqLhWO957qPLRttHZtuHbdUOn6ef%2FFum6177Rx5wWHr7%2FSe7Gtv39bVeN3bvFT6SVTSc16pTK7w3PaBYF55cd1wfnXdbXhw4qd3xfrBH7s5bnESMdJrnrtegoDYsa7GeRZk612WZp0nFdPRlgXVKlLbQ%2B0CNz0WYYlsi3XSe7Fukr2Kpu0wZeVyg7XQcyZy3zatd5fV97tHVZb7hLQ%2Bw8GitGaHNfKYvVot7jw2h6r1s5xxpBL8r8y4ILfd0yg1YOKmu%2B96KgAF3F3rc4fP9m%2BsW65wqlzU3tuxtaV4FaSaV0lfu8sx62W2u7FkLRKrPvY1%2FXBo3OKte2TrqsO073Q1egTZ6FnkYsy0VlId84mrb4%2FDt7GnmZJxFWY57WuPFXem%2FJashXXQfnJfmiq3x5qKCyLD%2BsuijHbeupBs8vTg9Yj5Q1zluNqkXYZqnrx5GGWJf0HbwdTGhv5tP80Z7AZ7see3mAwLvpNR7awMF23DEpuj9EeNT3aRJ%2FN4K6ZWPV8Pei3FcKZnh0EqsNRawA%2FbtFBJI%2FR4v%2FcqNq2WNaJ6is8978Md2UTNOIVWke4qbTSaATAuYqjaNJpOPPLww33yzoULERNISKq6ghVPhcdJu9Ygs6KVZtz6tBw%2Fms4wCi6efHCjSaNBRidVbNct%2B%2FCDemfO%2Fzg4j5%2BnVSvDJ828cy6iywuPe9JcH5ZVf1eJV8Gnv%2F2wMHlbHr8V311LplOqza1iM9NNhj3LPa3CuizXAbQF3Sdqp%2B122tqrpow3y3K09RvVSwKviyzqOdkdfRqXKN%2F1nz9%2B%2B0%2FP0Y1%2FBBi%2FKanznXVzv3Q5PfK2in1b6vlDzOM%2B%2FxHn80AXo%2B8683C1kUBVwtekzr3NgrBSvhWCa5z7wcwLXJN0p7f5a3pAK6qViwax9%2FwZSr7NpsbhpvIwYlMSquX%2BukdZhBURSkz0Iv4cEb020bvpEaztE%2FP1Ts%2Bd9dRCo3VW70jxre5PLnkO9IfF5yLtMWyfxdZ0LoBJgXvPd9iyC0zvTOnR0codO3KDifH7A%2BWMUMoPoMKuukfaR6atkyHVYDOa%2B6DfZJ08A0BFSTgV3XvuqSScu6vetn8cusC%2FJD1CAsBEb5a%2Fu04L6ab2c9rPlVTyMv%2Bhf7Gne94HLZvT5WB8x10o%2Faa4UUdNYs99UNFQdaniTfb4F2lYxYrAC9sOEQEj1mj2mdoLJqpZvvkXnV93MHB7qBNtmCrqgH622sgl3gRdm1KSjQ5x3fINqc33lJ%2BSjbd%2FdFw%2BlQbfPMEJ4L7eLz84uqLVo8H1yroRAaXNvXZdUwcMyfw2YmyWZWTv6Rj9r5Z9fz9QWLXG7yS9O1E6J0toYZJ%2Fln8n859JS3ki2CstGqmKtVH3Qhqw4XVmp7Hvnfb%2FJc%2FL59s7tqsLd%2BHKVgR5NVhDRcHyrv9FyXdBH8NXVTcu%2BPPVKaXyzuYpPOJTuCXFW4P94UXIP3HbbBpi3bFm1%2Fv2q5PM%2Bl0TrXAXPe4HPzbYhD3tuatLke7ypPTWZQhXxVtEvKEGK1wQfo07Ib7p4e07qFOeoe6AWrq2YXeyjTJQ79LO%2BqQuXzPpdeu4KNVsFawXTeVcFWH%2Fkb6SGnudc5v9L3hvQrynNvGlTmbRudbRu%2BkwgN56ifH0aa8g2e54doKJTsCVq7x7dkYbirPWWhyYySfSO0DwvO9zypuXBNnem1u94bgvNZLl3udTBVt6qia5vVSR8jbTV6qKCyan5oqu2IZYzHVSZdd3aUNNhf7wngq7guyHfrltf2w4HzzsHrklhtoVhCEFwWpEfr2AttjFXu2lxs5aXtsjCv2Ln5qiQdP8ee7l6UDnU62LtecHlH2%2BBD0rJDrmBQbJ0cdtR4kku3Rc12e1FeaXJfucj93mqsz51v%2BzHSTegvgWS%2BVyPrMQ2NzPPcRcqC9Dr70tapSKu897ve7QH1yOQzcTaFqO52Kq92LPKx96a2NTX4QUEByVzGKtgF3%2Fuiwne9zVUGD5LD9S7WOb%2FJrrTOnvUK5egid32ua5aPtg3qOy07hfKzCh6lx193IaRdz77drXJ8oa7J8sXjgob4vOlz8VUaCnu%2B%2B7Lhojv5BnlRz%2FGHXBDfJCCc7so%2F2Xem55c1rPOrpGePZfxW0IFWtW6u09G6KgnOs39%2F2GNw%2FnUl4%2FS45sn3C3dNwr0u%2B7%2BrFveYSUH5qtsR86HGdZp2FMS2DY4nEQKq84KgqO51eb2nkXhRUEbzdc%2FXXReqBgwFO5rchHz3eGB19RDrkqoB%2FuqA1cZlyM%2FnBXknm4HzPNIztq9zgV7Wnszn0WXV4C%2B7h2bHlnw%2Fo3IzE%2BImqTYS3%2BQaL1rWF1nea7Ig79We%2B0u%2BLr4JddMsF3PUuZ75hfuuQtnpPGPWGekO5ehJQX54WZAHmtxXHlXoIBKgt7jZZs%2Fbfsy9f9NjWvWZ7zo9pVXeOy0I%2BHpXMtrSpMH9vOrn5yqs82T%2F1i2XZYFOhMXK8tN5b0q%2BaxEhjWJUXKsa13JZ40ad%2FflNKDuHaFC3bTgX7XU5qfkZqxqfvx2gnCX7twhbtFzR%2B7zg%2Bv6r4jldNQnOS6bIvywJDhs3%2FIO9z9dn9Wj6uZchXya5Bl%2FVXu06AVZR4%2BpjLk2yfHpvCJ2roTM6SYpX187%2BLZte2rSj5nxffqwSoMfMDw1NW94f2gZlkyplu4J9jcR8wHsTGtc3ucAoS495hePOT0duM5o2iVBXL2vknd86qkvO%2B8xLEeqLLD%2FcS4r3dT4LHUePQnurzbG9zAVPk%2BSvgyDrpHxLtbJjfxY6tV6UdE7F6mBoO5t0WpCu0wbXarmnbF7kOq9WBZ1%2Ble%2FLoe14kWu%2FzA%2BYPb%2B7Txe0Z7NrcycpHsBblsQgtWZQlawhNJTdBToVY4p7pZttKPgPk%2BJFsZ41CFpbBUXhoucXKhjKRZ9E%2Bpxljc%2Bfbr12Bedfr%2BOeiqJOA7wo%2BM1PSb7aUWFu56ezSFNJOw0wapaPaZWV3UumcbXdIq3tVMEmfqsZoGzy7L7vznpy77U8tibntw43qUWD4LxozYddHQxtO6wmez5vu54sWzvhvMH3%2FFrjvfmZWOuhBOfbQXpJWd40DrMRpus6U1gjrgi%2FjJ0f2gbHLaerNnkuPlZaruo22Es6SarOgsh3XL%2BKuJZGE%2F%2Bs8fnLjuqSsxp1SRcBfpQgPX39kpSPrG6e7561%2BY6CTqDttHvepAMgBN%2F3StJt08HQ9tn0n1pe4793Wda3OiS%2BqytDutee5l62NsCBs2ZRe%2Bt97pV1zsxKgvOy%2B3KlumFXu%2FTAs1yOOkCvvF1OqACKGphPK1Q%2BsYOiaD2n2bSzUAk1eT3r6Oa5q%2BEyaVhBZYHGzxU6Mtqk7XcrVe8pjDcNGzsxK65ljbz4YUf5WCXFo%2BWzBuVjUTMPt2r4RtyHfhHx8zeNkp%2FrbBlTo6FQxeZG%2B7nB4j8vkmozSZKWDf%2ByhsNqT8OsqMFXpTFWZ4HFu3vK2lly%2BC0WqzRcs3rp5x2N7llSbx2WzoPKNvnhgEF%2F3cZdlfNqeo2XdRvsJfesvfk3dDw%2FyTVSnzVsr3RaVw%2B4LukiwI9ZZ2T3qF9K0nXzyFub1bzLZny02lY43JN%2BCe3DdUle%2BNgi3w1h4GBfvsrfa1%2B3vC%2Fntxd%2B3sPjW3ca%2Ft7LZHened37yjRWrHZsYkxxr%2FV8SJiKWfTsStbTttyRCSsHOhXfO6mZSfalQdOb%2FocKN50mI3Drmo3eSe5mtQ4V%2BjKp32PVaDGjooXhkv3P63xI%2FjqddHqAclPn%2FGotaLQ17S9%2FI74O0%2F4WHTWm2zZ8i3pQmwTFy4qfvw7nmK9%2F5qGRtexgD%2Fai79q%2B9n9P%2Fnw8pGy64p0q0%2BxDg3yWO9996XmTq1crl4UmC%2FHsWlskNNiq5rVVjfdehY6L89y9YzG0XvXQQMnWl3gVyvO0ID9VXYdlWnCtXzU4pmVX%2BaFhGar7mTEaa38vKMevI1%2F%2BfCP87XY6Zm2d7bTIOvn3dHy3XmxyT10fra5umHeuku9nx8SuS6q2hfqsM76OPIa1Bl4UnF%2FWWZ80eVQrtC0WBW2sywjHndVfz8I6G0%2BT8nU4mizi2fYa5%2BucywafUSeIXOfO8SZXfi%2F21L357YX%2F0g4%2B0CzRojbXvvT5ek%2FaVdYb1g2VB4EF6BFuuOHZlZ9yhXgz9e%2BXksZKnZ7SKkFRvtC36Tm92%2BJ3FxUKxiJysHFWcHOc5ILCsxbfW3uxspKF4aosqJQ%2FvibP3nZ5fpMG5WMeFuzJ3%2BQ25WPVQSXWNsD%2FruEcOc9OCxrVWcfV5%2BT79Sa62okhfy1f71iHYbNoyuPk%2B0WQPlR4lqxoi8EqnTvrre87q9DwL6vHq167ewXXICuD1zsakZPccS9qBhPZ537MlcfrpPpaDYdudK%2B2Gt35RX%2FOKwQhReX71w46oGLkh33aruAe47n4%2FLm97SAtL3IN9kVBwH6eC%2BhvSuqS%2FDoUL1se73nH7YvaeWfrWewu65Iq9ct6IHXGTQimixbeqruQ3q77%2BuuYjweFui7ruH2dfL9CfJOFb4uuceUAv2QRwHnMaxXq9bNcQP6XNKnZIffdAsk9PcI13VGOP2zlp2WNa9LkvnKenKi%2FtcyYbVbAvCoIbCahsVIlKFrFDIoiN9zrWFbIkJ3ugZ7d1Aq24kgKbgyNg7UKv5OfzruoElgU7AFd9P1dV1zLOmld8UZXd6%2FYtg3qtgF%2B24Z37c8PN61XBY2XveUxS8OsJ3rXq01jMDxXmDWgfi7IH0%2F3HNt3C8Ml1Vd%2BzR%2FT3SZ1QtWGargG95LitUWeFJxbnZVhC%2FdSDo2B%2FIjftMpaJn03ukvyw3mFYz%2F0YlZdbfPZ9jwmEToOOn3uuGCbqaL7WKVp7gV7nm%2FWtGij6%2B36GqVvg7pkGuE6tg3wu6wvNveQovUsnjZclyJG%2Baly7Nnn%2FlJU19VpV0a4xoeoN0tny%2BxI5wcl5ztLvt%2Bl4eB5smStkHtbr2fhNa85I6L3NR%2BOSdsR9MaZv0GPaeOteSpm8J9aVEY%2FV8z0z3KV03fbupU1SiMWvF0FJLvxX%2BcavdOaW6RNSm68%2ByrhWUGD%2B18NT7Oz7dbqnF%2BdYKTEZhua%2FMru1%2BH%2FYjaoY29lEvumMikp%2F1ngmh%2BlzsrYvml7F8n3jxHk0%2B8fbRsKoZ7Lj%2FhOyspVycJw2bn%2F3nBrlYuk2vTVxgvxhJH7q4L0fBEey7ipcB3rXPOvsyTCCv7TXKP1ps%2Bt1mrc9%2FI7mmR5%2BNmAGjZtF2bq6jxa%2FX6kfbPrNtg%2FlJSZ1VYeyDoMzwuOJd9xfVlx4aVdutrfvizv%2FNZRXXLWMi8cRbAQRtPXyfeDV1Xuc73VIztWqH8SVnev0kaZtDzeSct2UdV77L62Tzaj4Enudy4L6qbvVtbvKdt11Z7reiBnVNouEteqsFftMa0TtLYIiiYHSO%2F8Xn5v6zRKOyp4q63rMU%2Faj6I3KdgvIp%2FjdCAVV6uGUMjjlwV5OFuU8EXkRmfsrUxWHV%2FT1VYaNRlF3%2Ff%2Fy1gNhXAtlnvSe%2BM6qffs1978WnGk5bxlXs3qjqKRvetcndxmD%2FT8e4vKxpuWKwYfJEgvaHiV7kBxoKAyan6oWidGmK66Gsh57Wqwl80EW%2BxqH4SR%2BPw2SzcR2i9d19VDrEu6CP4OWWdkeWW%2BJ58dovw0qeseVigjVa%2FRh5bX%2BEPM8wt1dn7m57qkDbDK1ffnBe3g%2FMr6fT1y0VVHTpMym%2F%2FuO8mJaBugt14Bs2S64tfMujVVrE7QWjUoWhwwqNsU5EkuALrpoQGx7%2FPzN8ZpzUUpahXsgum8URqBHS6kUadxM217LXfsfPBka2X3tvsCtwoAOlxQqurnvywI1PZ1%2Buyb%2Br2KfKNf7amnivY97Spg6KSxGqZj3hSc53bQ3GaBxd8K8sDzgvN4mgxcaHCvKnba9LFXc%2FTgpcr2pzXvLYsI5xW1AVy1wR68LSunJWuyXEY4vkmXdXWsxn0HdUmV4%2Fww8Grj1b57yAHKT5O6blXwXZOKv36nZV5qu8r%2FPlWmt5el96NcvTHbrhs7XEuniq5GupvcV36reJ8UoO%2FJ%2FMuGBXieFD9jeV2wSvC%2B76naCFgV3Ly63K6naNGndYWC8c9DFrySUfTrLgp2yXTel6HRXfe12lNxxlLnWe0oldyOvWLLykfdm1DsbUxi3%2Fh3fn7JKPrFnk6a13vy0%2Bs9DYW6DfuzCr%2BfL2c3DcvComZnxHc3zhYjtJfJ7rVF6swq2fve0IjJn%2B%2BTjuvyWFYV81SnQWXH%2BSHmecR4Ln7ScVBWucEe6vXtc9ie7fI0%2BX6bpVUH16CLIO2s47rkTcm51P2eOz2UqzaBbtsyeN7j%2BS4j5dfVgX9%2Fn6qzZYrqgumOe%2F9lz9mtq07hJveV7%2BqAA65k36sfYyZ2mwKf7QEZbk4XuYr%2BuqBQ%2FbNGUPTPku9b5Z4ByzzeU8AaKRglXifliz51fQOtclPLP4ueFYhZxdUv6wRrRQvDXTVM4yQX7Fd99jZqsNggrauWj%2ByZ26xBMcv9Vxb45K%2FLry3zRNsAf91xmhcdX9mz6IuS9Jx3UG4a%2F35Yn2L7Pdnzlg8bloWL3M1%2F37Yu04j5NHvuMDvuj0nB2iJJuxkoZe%2FNvi%2B%2Flsl12HptyI3uqs%2FQdh1U7ssPsRq1bc8jxp7VXY%2Bo1Wmwb%2B4f279zsbV693Zd8CzS8U27PP8D1SXTUJe0DSK6fhY%2FdrmctPyIrtaViHUP7yJQzAeEi4jX47zgnr3akZ9vcuvInIdrOst9zssBrKMSfYp7i7qh6Jo9TQ40A6RPbUfQY2f%2Boh7T86TaIgxNAtz8zXMae%2BQlZMr86PmuZ0s6vYEmFWYYtHwWvVKwVrIwXJtew%2Fy1nES4obUNRqNey7Bw4rKgkfGk5fdMWt64u77x752JUDKKPo3Y09q4oRDyYWldGf7%2Fce7X2nQuLUqC9qrXf90yn2b5r2jLs1nJeys1RsveW%2FZMd%2FLnSNsQG9tnNfJU10HlvvwQ6%2FvankeMGXtdnVvtBnuQH1V7kHQwtX1L13sK91mXtF03ZdABerJ726tDBLsHvX%2B2XTA5wiK9%2Bzza0wat0k59nLv3Z%2Fn9%2BQDyWhdrnjSqG8I17zxWG1WA3kUv%2B9aCEvsu3CpSUPSq4N%2BuYwV2IY3yjcRF2bMlXT8fVnOF9ecFAe8sYsHON0JetjnX8D3fLabWQaO60vl1eC3vVShrbRu%2BdX%2B%2F73UT%2FshDBXngaYTr3nZnhad7btKNthjcU48u91zjXTfO1iO0O9ZOqNrAnNRpjIb0KrqJP%2Bk40M5GPN83%2BNV83bTckac6CyoPlR%2BK7g1JP9NVJ7l8s4iYbjEa7NNcG2be8R7ly6HnnQh1Sdu2UOw648X2Iq8t8teHQ5afsP3o54bt4LPc%2FXPZoL6IOmutgw6TtxV%2BJ%2F%2BeJ7nzvOp71lfMWTAR64ayWO088rkPaoHZNiPobW%2B2ZZXxKinuMd0b6NRdrCr837zgvN60DdJDw%2FB9vmJKile0bNQojVBAFjvSZp7UHEWvWrDDdN78lP8YvYaLGkFJ142bTq5llU6sBg26tg3frgOISp%2Ff4Sh644ZC6NSald1sShaGizFi9nZPQLjtThfXb8faIlW%2Bp8kUu6JV3V%2FEvolvN7STbx2wtfJYydobr3sKKg%2BWH5Jm25%2FuSoe6i2F2PaJWu8Fe0pm2fXyxH9Pqeputux3WJfOGdUkfba3CToH09TEEZRd1goFQv%2BTz1%2FxQ5Se02bL2bNWBmr%2FUwbm%2F3zQsT23XxlnGvJb5NmzF%2BmzXud%2B06ZjvsL0Vq55sfF8JaVu0aOT7WPf3MCL%2FcSwBemcrYO7pMV3UOKYqBeaqIANmn%2FOxScM%2BVMLvCyqlr1vK7ekdG8KzvIWBxKbg7qmc9xbssum8kXoN6wQlnQWKXTeEdux80PR72gYArRrOkT%2B%2FKCBsO4reqKEQGjX5xV8WufTN%2F%2F%2FLSDMtFgVl9%2FzQHSxhTYmy%2FBR1gcUdW%2FpcR86Pm2u7PTp%2FXaXBHd7zPvl%2BR495T0HlQfJD2%2FOINGNvMsAG%2B67OmaijaQfaru%2Bsw7rksmFdUqVOXx2gXG3vBz5JKm4vG8pOfibmvM59ok35CYNN2%2FfQyp2eJWsFVB2MabtgcttV%2Fnepu9bE9j2qqMx10RkXq%2F7%2F0NHn1i1zRR3wmyC98Uy5rVlwb5KBbbXYZpG4TlfAzHpM00TLemNnNb6ndiMgLERyr6DnZHPhsxvCq309W6H35UHB8W4H58uaFdK6QSfBrulDdRu981Ax5xfemrco2PnpvMsGC3ZVDUq%2BXpeIvZL58%2Fs1ZoDRoHxMCoLPVc3K6bzl708j5NlNPlhX%2BPxlhfI8z5XDryOcLUYe917LrefMs9fdcAMvWrn9Mhfk5QO155HyxyL9%2FHXuGKYl6dd2ZHOfh7nGaZVr2Wj0I5z3y1zwnC3G86LpApRl%2BbWgbsg6dS%2FL0i%2Fk5euCeuSqzvT2JuWr5jXtYuSpbXAcI%2FA7j1FXlaRlowZ72X0r%2BdaRN49cDs9j5KVk9%2BMYfdUldb%2Bn62fxy67z9n1pFjpNroqC7fB%2FWT2WX%2Fy0yX2iTXC0KGkbX5Xl0a21l74Lzmt0LExaXuOzCu2JfcrWkWjzuMHrgnR51fWe9DV0teZJq7phK1bLz0w%2BC51Gj0O5uNnXsRnywYNQb08i3%2BsGEaC3veFWuSCXoeE7bRgU%2FVrxe5ZZw6ogeNw0aqehsbvMFcS%2Fh0w33dOQu6zYU50vtLOSgH9fZXovRsMrFIhXuSBw14ruOwt2yXTeq4j5pWhl%2FrtJvJX561Rc5wcoH8%2FS8%2F0pl0faPqe1avn7mxHCun5OijvUJgVB7j7PC8pNm1U%2F88fQ5BnCTSfdaiugf1ojUGvaINwub9kN6eWeDpp1B%2Fl0HerX%2FI21Tvmpky%2BfF9x4s63X3sYKGMKKvMvccU5Cw3UV0n7T6L8T3jcp%2BKj5nkDsvODvTcrXD1XeFGG9ha7qw%2FzvZ%2Ffkf%2B35nZe5Tpk7BUF13VlW2XH%2FErPBHtof%2BftWF6Npk4K%2FN8lL%2F6iadw5Yl7Tdsm%2BRdK%2FovvQ1D4a6JDuGf261NcralZcNgrlJy%2Fx5kxTssJT%2B%2B9NcXfdTOO6iuu6m5m4E05Ztk%2Fzvv2h4zZ7l8vmkIP%2B06ZBbRtylIYbos2CKZlxUqL%2BzvPdDQV4sCtI3efw65MtFOO7fcvHhZE%2B89s8BXYeoU9y76nl4mPvsZRfHFBpJuxbgOgsX9unW68mei%2F08qTZyXnb8TdR5LrpKwStaeOtFyXTOfQX7uqBxGvvGeFNwA%2Byj4ur6Wb%2Fthtz2Nf%2FtwOV4EqtzJVbDomRtiWmDZ%2Bdilcssj%2F%2BSqweuC27S88h540NBGpztSd9O6vFw7g8L%2Fq1SWaszFbdkVffMm8iLwFzu6FSabd0nLnYE5%2FvWG7jT8T1hXx0XKz%2B0nVHUJB1%2B23NuTawKGpptG%2Bz59z%2FvaJulGHX1usZsj6HUJVXq9M4fHQn3pcsdx%2FNkq84oald%2BfYSn4YzAtqOilyXXM1%2FXzcrquqTG2ip115MqKZMxLCsE%2FrW28wx5dZVrwx28zVW1bERqozepexc70u%2BXZHen2jSXLzd5c7qnbp8nA9IoQC%2FI%2FOuuVh7camytK1QskzaV0NaFf96yws4u8s9Zr1jNdInRgPitavpUuamVLLxVtLXXzoLd5XTePUFJzO3W6lRcXT%2Frt3197m3l17rf0%2FY5rRgBxKLG51ct00V5q%2Faz6EXPbVZtyIZ6IOugu7fduCjYp7zJTbpuo7%2BscXGwrXdCebna9z0xVpEN3%2FW8oExeRzyfZSh7dY9vFRraVRqsnQSVexo2XeSHtsFbk3RY7jm3Jn6tkmYN2kNvt67Vy46KYIxFUzsZIOmqLqlapx9q3%2BnQCXvZoH2Zne8vLR7XazUqutXOqBusfX22OqvrapaJtjMcYrX5itLpQUnZbXJvfhlhUd9oOpwFM42U9n901mTtqlCWVi2P7Sbcj38e0GMGX%2F3YorAvDlERbyrPMK3pzZ6KdLV9sZpUuqESeRaeY9w8V35RoRJahIJ606SzIhSMRYTkWlT8%2FDoZ8WXBzf1OQafNvkBr%2B%2F%2FfdlQYFgXHcd62EBec37rGtVx1XD6211Go%2B12r3LEuWv5%2BjE6VXZ9f9Vnk7HGH5%2Fl8m12bmvXCpML5fcgd73LPd9zNfeaHLlbmDmlwk3z%2FvNau9P2147z6Mj2mO3saGesY95fwCMid%2FPlnZTlW3bPp1A2zMx4nu2db3IR6bx6jTm8Q%2FDUpzzHzQ9s6sUndFDMdyz4jX0e8bhJwhsfoLhsOdlQ5txjttLc95Z2mdUmVOv2gjfKwfswi1BcXO45%2Fs%2F%2Fz6wj3h7%2FUqU0%2BbxOkh7ru0Z6gaxHKwU3D%2FNw2xjiLUd5L7uP5z27SaZK1GbJ0bDJItUq6jb%2B6%2BOwm7cQqsyWze%2Bl8aw2waYX6YPM4Sfb5i763tdvlh%2BSIRF7wq0mAVnThl0O%2BwJyOPssH1Myr0wNsF9bHeZ0VBOnrQ43Qof5Wlxzd8Re1LVdDG80rS3t1nXvgEeTLoylTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH7AdJAAAAx%2Blfyb%2Bdpz%2Bm6eun9HWe%2B%2B9V%2Bvotfd38kPzvpdQCGO%2FN4F%2B510yqnNT1nxTkgamUqZ2On3Np%2BOxE8krj%2FJL%2B3pvc53wued%2BL3Ps%2BynFf0%2BWs4FpcDPh4pyX5p%2BrrY%2Fq6Vj8x0rL8rOA%2BsuuVvfeJ1INh%2B1ES0KTBVPDPemVPy7k8UFg28gH24ofkfy%2FKGlfpj8kJpGFZYPQoS58IeW%2FZ8n3K7rDTZhrhfLPXLC1zWX57mJbJtWxAGHX%2BS%2BdUmjeeHcmxZ0H20%2FR1VvNXs3tO1nn5ID3XeyO6lrPc%2FXSVnt9cLgdO6ab2JN8rK1VOLxCtMop5YmlSa1ZBycjg2QjT5cWO0ZxJzc8qGv19VvLe%2FPuMGhWX3d8HfrxvWo6g%2F8tMCiqWhY9HctzXkcrCixFdy9HPRuO0%2FE0S0MCd3N8XkuTk3M393ehk%2FZHJfPC%2BGunI3vmO%2F5tF%2BKxFQWOt0vvU30eRLvlysg7HXPbaVxedeySLY72PZcF5Sb15k74u09cv6X3kh%2ByV%2Fvkf6eth%2BpqXfNyTup2kA02TU5mNxgkxxZ0mPiTfFhxREZ6utyEfCH7Kg8flnoD7VDo5pjv%2BL5vm%2FqzNZ5U8QpCl%2B%2FPc%2B9RTf5bdX4%2Bh7IbgIT%2BrJHts5GGF383KYzYFuOj5%2Bgc7ghZOx7SgbTPkQPSiIDjP6rqHRfVguP9kgftN%2BrvZuV2XpMGxlwUdsgBAYePpfW6K3fWe9%2F9%2BAgvEnVeYZjlrkcamK4%2B7TF1UfaRhx2cUTQd%2BL3VPPm8V1U3nAz%2Fmz22OuaQsPBvBtfTIHaNjijtAHPmG0q87GhSTpGBkcIRpMq3wnkct0tio%2BLjdLfi3uuXkuWSkQl0y6Fk2YfR8kvvnec1jfjvSa3nHfYGxMcWdujeJSe4msc7fIMLzQOe5G98i9xnTgptN6R6dYbGtfGN%2FlXyb7rjac8znuWBotf07JZ%2B983jqnO%2FWzfV86%2F%2Bf7fnMsmOqes75311XvZEXnc92mhWkZ1EeyOeTfB7Y7NmaD1KzaeE3DfPm3utY5VrV%2FL6Ns4Jzyb9nO99NCxqHXadPWblbhzRaHaDhtAoB1mw7iM%2FOd1%2F%2BLOnU%2BLVi%2Fl1Web4%2FfMfFvnQvKF%2FLqusH5OuC7cCzSl7cV7YKviMrny%2Brlt0d33melK8nsGhajhoEUbW%2BJ8vX6fHHqkv21sFN07jK7%2B%2B7%2F%2B6oN%2BY7jrcoP65CnbBuUM%2BchWM4L6hnFjXyW9T7R8FnfveIUb5c78pre%2FJIF%2BXhboSAe9007zW4J37X1ir4rqJruAmwF2X5r%2BA4v8truWNZV7y%2FtLo%2FNiyfpZ%2B%2FoyztTB%2FgNAP0%2FBTTNwXvKVwlOKxa%2FX7PdNfr3GfNKuzx%2BWLPMX83lXhr%2F9DfK%2BwZer7n80tXRQ4r3v9eZXplWAX8usIx%2FSuk43mNc35f4xpf75pGF%2FYV3pn%2BBSt3f940Bitcz9%2Br7stc4zq%2BCe%2BNsgPBjr29d70udqTPx630%2Bdg2T%2BYbTRXK3d481TCdPhZch%2Bm%2Bcl8WSFSZ3lny%2BZM9nz2rmu51V%2BuvWbY%2F78v7u6ZzlpSF9zvq7%2BsI6bJdbp9Fzj%2BtV2Avmcp8XZJv6qyO%2FaZo14WiXQtq1iulj74UHN%2F7GvXGiwb15rOa9cybGPVMwXl%2BrHH%2F%2BFxUHvfsJlH4OS3v0b%2FH3DmipA6fNigL73Ov2Y7v%2BFjz%2Bu98fKnBvu0vSsrY51ir1ce8P5a1jyu2Y2c1y%2BfvFrsEdga7Be95U1CxzepUpqGC%2Bti2Ai5pnD1pUMFf7EiTNyXB4PuqjZ6CRnfV16zqzbzFTfZ6T6N5VuH7rxtsDbPvZnhe8zq%2BKWvgNigHFw2u1VnE9Pl935ZsIQ%2FW3aLq91hB%2Bq4t0UrK9r7zqRT41HkecU85LW101zn2kk66Ng3K9yX1zcd99U2N%2BuO8Zv0b%2FZnWqoF1hc95UiFweNF0y7b8tS%2F5vknDztHPuXrjY8G9sk69MWtwbZ9UKOcvYt27Ip3n7%2Fk0r1nOywYLfu9rK7OS438SuX33rEXn0s7gvsH9uuxzztp0jnd5fywZDKqTby9COv0eo20KnE5wXmnkqKBy%2BdigEqzdONwxAlT0%2Bf9qcExnJd%2FxuaAx8bHiSOpZg4ZDlVHE64YB%2Bvtd510SwJ9XGPlqcmO%2B3jOy96%2BG17F146ntaEykPPkiYudFaVDQor6YltUXJdfvWc28%2Bb5qh1nkNPq9yihTKNtt9iue1mgEftz3OVUXxarQQPxcId1i5J8n%2F2qxoOCe0bbJrrqyoIO5cgC7K983uL%2FOIterHxvUNfs6uD62qIsnJZ8bo37c17FcuWOixf0m2uJzJfkw6ihqyXlO2tT1FeuUyp1%2BDTvHJ13fH0vK78cDlE8LXoIA%2FfvKu2Il9ZcpkKEyP6s4Je5zaKhNt24E11UbtHsCqT%2BOZ6uxcVFz5HvSoNE0qdC4uS64wV1XraBLRuT3jUhPKzQ%2Bn5RN59%2FzOflzuwhpN9kx%2FetjjePcnqkx2UqzfdPELlqUhWdbr6Jz3P7%2FWcX0%2BX1z7Sukz%2FsdgefvJcd0XnAen7sYmdk3GlNwjJ%2F3fF7VWTNVZvmclZz3pr453yrf%2B6Z5X1ccBdzk0YuC6%2FWmYrmeNAhezsoC3hrHfV0SzJdNOZ5GyD%2FXbQOdkiD%2FzZ7%2F%2Fxiu%2BVlB2r%2BpeF%2BoXZ72dUDtqTf%2BuE9u3VvfV%2Bh4mFW5H9cMzovqmbIp%2BC86vH%2B8z1277fr4fUlbYPs12XE8v2%2B%2Fp8J5PuuiPs1d%2Fxfh%2B89afMd5w86lz2V14o66tiif7K0Lw%2FXYvk6fC%2FL1X65li%2FvjRdX7455OnM%2B5slblkZT3WzNedrZNRScgQH%2BxL4Da0bv5ZscI9McGI6hvKgbo73fc5M9qNg4%2F1zjfwkC7wnd83NVjveMmMKlwXNOaDcTPFdL9fcVG8c5zK%2BvYKWkU%2Fl5zuuSu3vtJhHJR65nniOnzvmLguW9a3qTNmgU1yujHCp1nFzUajhcV06lqvXC9o476%2F9k79%2BPGcSQOc6%2Fu%2F%2BVGMHQE5kRgOgJrIxg5AssRmI5AngikiUB2BJIjEBWBtBFIG8CVT%2FBBtxy4AXQ3IL%2Fm91WpXDsrUkCj0Q88Q4NpI2bfHgnlRfXrYUZ7M2fal2Gk3IMjJejLlEA00M%2FqgC2ZKZKRVvMdhg2pmfWZeGb0ysBg8ShV7sT3tqF295Rnnck%2B1pKZRe4qG893Y%2Fa0PMYsp3C1wlKbsCvs1jCy6k5jU9h9XxgLHM0%2FBiaDWoGecOqwRoIOAIgFtRPmKO9MMTKseaZkGG%2F2PkYqqROMaq8jRn%2FA2c8oSOwHjIBlmBpkM4PTiWc0OLbHeMkYAJpplr16nOc2U78YSd4bGJgphf1vzgwmK0Yd2txOn%2Bg%2FE82gQyDIq5h6XDLexTmkruEsX%2FWUgaOj0cGFQBDIOcySc7jjMpNcykTdKT19pGF8QodQtdzEQiDHVjOQGenbY6btmwjfyxksaBV%2Bj3V2hafvlYx6zhTtMk8ZZAnEEGNFWSaZfI12S9ycWhWi1e9IwjuKtOda4a%2B3goGZOtdgi7BPzBWDGzmeWRYAgF8%2BQdccDsY5zGqsODCqVS61lpxKOmEE43NlsrXWBIeBBKBltFcrKM%2BcGTQPGA6eG%2FgGbwjwtOeYKbNGE%2FQx3y0NxpfKJFojn0Yrn0SZVMyZ5hkz8Z4wAzbOKp%2B1ds89c5XHWhucxxKHBHvD7bvuCc8No8ytNABPGAxJ%2BUyIcvfrOlbqdcOQyVKQtG6ZJ1evFTZjrfB7c03fFuhhk6N%2Fcm8okN7CoJkNJwaNqiIjNgaYKfrAljFAMxEMdLSMFRGamLB25FczB8efhDYlm39U6slSGp9yblICAPxaybn2cLA2l2ONBPYzjvGWLL30zI43kfpuGTNZw5Q9v562aLWzBJlnJ8uE4G0bSU4mCYMa1RFPm14LZxy0gwwx%2Bcy0yyqpcmUIIDmJDOvKNeq6No0t0Sy3jLx%2FrulLgve3DHtTKW1GlUH3B5pl4krbm%2FJpM5Sp4t4%2BQOm%2FwH6MmHZjqLAZmtnfccQOr4VyDB0mVmr7J9fvcPxYbFCOOkvijeKy0tqcmfBwsaWg74UOwdwqtxOtuTP6GQcTjuYfEw6GzNGnRwX4lPwbIgBMXiSdvxX%2F6dxRT%2BK5BePdriFbZXrm1Pnvbl%2FmRaIcukh9v7tyIbhw%2Fnu3%2F0wFZdgIvtcPws8837tx%2Fvt2X4cNQwc2%2B%2B%2FtYnqy554T%2FO7%2FlD7dsY7cdV73xO%2F7qJS6GXXcxLs7ST%2Fa8yOTfKgZUW5i8uUV7MWC%2Brd9GV09NQH0tdO2NdNGxOzCBaHDkr4Xa%2BsLog%2BaQFQtt34Q6LE3HHvgPrtjPuf%2BfmnLeGr%2FUv1qlUF%2FTjPp4b21Z52wrpWtm6nz77aulPw3HhvUUe90ZW6D68rxUXeM9ovaVY%2FNeFDooNuerp3Z5Rrs1NQz4Is7Zv02ET%2ByIfTclNMkZTv7O4%2F270Lgk5KxvzU9xA9WDo21Q6EE8fkA1f3zrccv3jBs0o2jX%2Fee%2BGrjsaNm8NQk2J39zZWVn8Qu1Zw2fwX%2FyPJ3DHveMfS8lDwDkKCDz88pI7nJZaRizwSTlYCz%2F5EqhEjSYLhjvGaQkGj6kk3KqT1GnDQVIO4CdThjOAZtItBEdIeqx0Nic%2BZwbFL9peTTKX%2BnC%2BjU%2F4PIN7IXZwKZfN9%2F%2BrN0h8GYO4mNiA0QeoK0e2G9KmHyUhUvB8C0Oqq1N1z77cpyYNuRCgpDLI4wwLNj9lfznb8lyVJPLy5se9WpdTU2jxiUqfp22v6uqxvXmZJKn77EEoAm0ocaQhdqocwKom1T6imNPc6E%2BmraxLcqpHTtrE04Tawxfc1k3da5s21819Prsaf%2FXu0%2FLXNwqe77KRuDjZw29OnurS1HGWi7uvfujbXLwcFHW7%2BaiHk4MVdu%2F3iqsIG1IhYQx9gACTr4%2FHAModTx%2BQyO2Ei5TsUzsyk1ZLGE9MX%2FjzlkTwD0mJgk%2BAKv4Oy2L0AM1IGjA6dKmZ8KZW30RJJcNcrAT6q%2FsfeeMtqN9ZzzO6eZ%2B3uqbBpBPafFy9mYq17yyU00mogtqVP6HmMA4BiDIaE2lszWNZGBhX4dxoKEa1PIVpBw5FxRtntf1z9zCtbav3HxcmWOpK6rSPLeOPrXt4cjR%2BengqSyO4JtovTEHWDNruNOHz1T6pIk9mgEbfjsZ%2Fa68tXqSsOUu%2Fnc7J87l67eyCjX59n1fRmMn5wT%2BlC6iffhObsyoHQGIvq4cYM3mbaDVSeCvnZI%2Fs0WxcvACifJANSx%2FSN3oCC1T2vjB%2FAB%2BRdEAJiBDGcpEWu5UYaEjpMYaxJ%2FaX3qHAMSBX%2FJuq%2F%2BvpFX999cJ%2BsGiJ3PGXpWLXCSpNWRZC1ty4vEwZpcTrZRJohS%2BaTSJdgLqiyrSCDpDrZUvYT3jJloxGxJk1jPWPKSuw3c8ql0h7viyO41nnvqsbPPGPtgZsTO958%2FiperkroMA18i%2FUnQ0XUgYTgsuzV1vdx%2Fvto6S%2FTH%2FX9fnDa5cuR7LZCJJgHg2LxTbh0ysclQT7Z%2FEC6F%2Fyl22H9M%2B5%2FYduLI0vS5ecpZD8Rhc2IbY%2FvjdaCMHN1t%2BmVy%2Bo1pw7tYGfafS2szLq2959iJSWCvf8wev4p%2FFMTHOfq0JuYEHxTMoANtwMRJ0FeKd3eZnmlSkmDrFMqIAdXUtyScl9TIDphGekMF63ZEu3QCxCISIDaxcgu2HmgSV2rJK7ctK2VbafrGSpgodUr5xMo%2FtQHRe7YXfb4TydKV1R9uUBKzC78TOiyxC1eR91N9%2B7dMCaX0rANRe9i9mCOij5kE9d4np%2F1z2hlPaXmzBaI2yZkT7WUGH7xniFAHOEVs91%2BBerkrRr77BjYS9p1KbQYnaXB1cGET11ztUmbS8RVXtyT%2B1%2FaDu%2BKf7TexPd%2BH7Tptgp66Oiq26%2FasD1aM0Gv3xmM7JavuqMGCafHPnvnKkR81YHBT0FuRUmaTc%2FpHzVYSrT3X9GnwQcEMOtAkBzvisJtGGlQJ9xBJjdRZSoJOBOM%2FzfJp6pspiBkWzIN%2FPEH1wSlIlldynaFqdoI5q5Fy2uuNplzMxF8yIKFKPJiHLzaR5OA1obYjdJHArSPqNLB1r5TB94ohf25bN0Q5YrYq5%2FLDOuH9waXOVo9viHefmAPLIoMYxwgYz44sS3dPrpGFWYp8GdFT6WqvjrK9Vt5Dpz1aSdszznbRJA1Vkb4tLKuOc5JnoS%2FOukTYzqzf9WbXO6Y%2BcygZgz4SX1XE4rhAvFT3ZN04AzT3CfJ7PqTTbl85KejDcmvlYNJr%2BceGsK8bqa4XuvMhsMT9E4MZdMCBE5hEk%2FhMRoqb5NSR8oV%2BY0B83z3ITVNfr%2BFlBiKHPZOuM5gGHls4ZS2JgPwwUyZpK04gwl3u2kgTOm7CbvVlqAn8NOUuZCe4bzLKZ%2BME178L9K912s6023XGQJsr6x9EXSccGTOD9B3VpxjnRpSeciyEcogFXzdOG58nBoG%2BfumWmxrA%2BpMhl4FCJpp%2B1eU6bKs349nnO9MeDCS%2Bipi1rDw6HZvJ0ySVmmQ3ZRCII3tjh78F7Iw2ea4Fvrjh%2FAajP5LJ5v45k2iuI8luCl8y9annmCbwfXJwiau71ma6B%2Btdh%2Fy67eOXxGDoLsNg0jH9o0ZvcyT1u7c63wAgQQfvB9eYsK40U7yXk%2BRGkxXPzGZBHYjCDMapBDbnSHzNDGwnRL1iiTW1N%2F%2BCCFClcn9UJvHaAaDOeX9NXVtEBOPzIyURpA5EEomzI8rHDUAaZvBhnrly9Cr1dHzVPlIz0LQvz41TD26iwbElKyLJMv89ZfS7SpO8xHTUSZKbQBunLCWP2W%2F3%2F0evOvIcMFmkBozaPcICqEGFKaNcbSE7II60W%2FbWjL687xmJc6OwXzlOlaYGEDnXaob0pQq0q6aeUl%2FMtU1NoTsQjxo4XmXW30thnyL7ahG41cb0Y3dwyQ6w9NvvNrLnu2HIhsMiw2DSMf1jo2hvHBAHomCJ%2BzvFzE7sP3P3E%2Fj%2BmPj%2B0BcEUe%2BmlkEJlvFqgnJNEKG67q0XBMccGbU3kXJE2sNsKKN6ZX87VLYJEVx2jDucXWdhRuCHjuO6i%2Fx2w6yHxlFxZUn93piRnJdHDPilAxKNUmc4v%2FNCP2OnivdmOUrnPdMEu9Ukyjt2FeIiIXihgskbX98z%2F25tLpXUUckLVbYrhswmhG7cRnRgxWwPTiBbKQJ%2B6jC5xRH6VO4Eh5qBjK0UGBb6bTKbgA%2BKHQyX0vaNoqycQ%2BVcm1X64gxCXyqn7t9z6DjXrqbapsBhZbH%2BrloC7hm4Ka29kPZVt49zBoYWAX%2B7K%2FhXPB64YMrYLeuDcjAp1M5a%2F7jr%2B8eEc3dy9OnHAgDwJgm6SbifnE8oQX8iPr4EfUh9PzBQ4H63dJN44jsNo45r55mW8czSeWbMlN3hMyHKX1qZbInvzzyBu7i%2Bveep31l6Bkgaos5P9h0V47cGAVk8cYIOM%2BsT0xU76OO%2Bmzu7Ei2TlQNV%2FrmtY2PLMLBtHKrzMFMfpdqwsf2h6bePRz6N8neGTPlsfb8R0PcmUSYt8c5K8HwVabux1pbYfrv1yGnU06HG2pBtoBwzQd9ufQmD1d9gHbX21Wfrmb6j8chvSMg62DZC%2FZlo7Qjz%2FZS8J8L28fpLZn%2BQ%2BLtGIw%2BNzSOeGTH759bnR6w9XsfKk1DPkuvTKD9m26fu9fsyECOF7GnpiTsmR%2BgPz%2FYnJB9bnpFH9uvYhEDkt58YgzI%2BOz6KxBmu%2FVwz%2B%2FHW6lpFnXZ%2FLP%2FIiY%2BZsmly6TkA4PgJ%2BlwQnNYeY1inJv9EgLHUJPE5klyukQoFVU5iN498d0nVQ1NfQdC27JXLFwhvBclvE5KBMkiYaxIBQfkqQZ%2BIfbYpCaMwoPUG4G8sn6Vtw9Z%2BZ3usgQsbOP4k%2F4xBqW9wgh3wRPqeRIdGwvdvrWxa%2B9fXtycce5MgyzlzUMG1RZy%2BN%2BsnOUr9WWrrmjDwfUha%2BnXdMuo7iNmSgP3lJkkjaX%2BS2AzNAGKgf657Oh7yX8Mc9QzUtUzo%2ByVjoHDZq%2BckYnfLRH2tIrq4JVZCriNlr5i%2FPUqMG9aRvtb2Vn5uhTFszB7NX8M%2FEvZkqZk0OUafBgAcL0F%2FEowMk6O9wuS%2FZX53wnB8a42RYiT1LCPlGSXfCoPymcDRrxXtO1EkCiIHy0gkuUn%2BkjE7OVE68ZFAb0vPaoLQIMw4NWFUBCAvAtwE%2BbQC%2BVQKPQ%2FOJGSQyUzxjtCgUpVqS4R9b%2Buxr80R%2BnbLTCqXAllyVhxpyjsK6H%2BZ0e%2FNM%2FvVRlHXeSCxb5UziQOln5jntKmaAUSFHf6pL%2BWqp9QX%2B1YO%2BvqVcjAvW3IuKDf3MxFOJDSJcUOTUNZtxMbOpLb0GP6REx9nSuqTY07w8cAe9PeZnPsMoG%2B%2FlPRamkbwffe7nCvNVHeZM07qdctCXfdGyc7sATN7%2FTgnAZv3met2QqcYJ9%2F9a%2B%2FgvBU8YsplTkH9qjgtnqrHHedAJ89VeJwr1rgy4ex7PMjs%2BTqkIr5H%2BiAr892K%2B34FsfbrMsiHfTCM1YtzYR2NLE9ynGrvudt1pegbi4LeL%2B47RFK0H7HX93aRPvMsm0AZQ%2B%2BX7M807zoPXLVVJ9gbzl7Ha8E7F1Zf7jxttNGeuP4a1wjZduPeUHDwBecBPV5Efm9D6JnkaipXJo85bUbgGY4dltqZr4EzUzT1lNrHaaTMnfP9lmEnKLtxa%2FvzLpPOPssuoS8c7MulsEydNm7o9bXzQn6K%2FUFXFhHfK9lzfuiLXzP7R058nMOeJ8ec4OOBU9zfJ%2BS1V4HEzDizvzgO1s5A3QoCoVsi2XV5cBwqxwBunHdzjPiCeEd08ME6FHMqqXnezFxcWCNZ9t5r3vXADJx%2BKOpLOTAzKjrtlamfDG%2Fsx5T9MeWuURuQuokTN4EoCR3oPDrwoJDJg%2BPUYgHv4SqWa9vWtdNvFk4AoQ38WIGT1amGGghwgqHXko%2Bp%2B7lNdr7ZclG6buRwnyuIDOjKVPmuS6LtNrlsiQ2%2BW%2BJe30PbLXo284xhA933X%2B%2BfM4dgDW1wVfV0pLO6emiDWLD1qLE3Hlu%2F8PSpr3Z286KnM3079GDLunHsysx%2BvzvYqsx%2B777IjBlcsP32W%2FHzadO7fj36Ntf29TPbnpteH%2BLcXVwSus3lh0IebjzA0ZeVI%2FvYFXI7a2fqnhxdO9PX8c0R6qmxj%2BeePr%2Fx9A1jI%2B6sjz4j7GnfT6%2BOYFP7dv1rz67Xhf8w3E2vL95rr38tXh6OybmOlUrST%2ByKkTNb5r4tPPS5TU9%2BHPtt4rkTIgY46EAXGDDL6R9vlf1Tas%2BzxJwAAPBmaJfKgU%2BpC0Ps2wKJOlQe65BB8Evoj%2FggVACEOlbnPEixZ%2Fe23APeAAAAgJhjWT5lPlkYvHmSzbpqkBEcTyDRXzaAdQ9S4u6jHGPvH1DqXUvsZS0hGfABdHeiPfcCAAAAcJ0KrqL4%2FEEu9%2FTzieZaOvApdahRXgM5xOw5UOpcDV8EPqjuDnJfvwkAAACBOJY0f%2FIEPbRM1A7SzJBYgYhdmEdOem%2B5d5%2BDX16%2Fyr598dyhDN0B71F3K%2Be2EeoucqxCBOAN%2BA0iAJ8pmdv%2Fuen9kzn1%2BQ9I5mMnV%2Fs%2F1LJ2cwjMg%2FNv5kRfapZqak%2FWBr9oArX%2FY5amuwn54aT2v3v%2F9sXqUEno2%2FkxDoACH16%2FjL6EEnCjMyfQHfAOddfsKw8l4LB7AAAAkp3NDLMWn7JdJwn3qeJgG5B6l%2FAMe4dBQLfayB3KNaQEPqBvxbYwAAAAWZzNFifmftq2HSuSKgQXoK9DA8JGhD5r7BsGDL2ae%2FRnieQcvHPdXXp0d45BSQDeFixxB5%2FJ2bgJ%2BTThDlDw%2FtrXJNyH%2B1RN8FDZz8Z%2BJPfugl9Xj4bF%2F7ZDHO6%2FPSRRC%2FuXez85AAd9%2Btb7J2N7Hvr3qAPwTnV3XPx8j3hndXcB6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8V4ABALA3WNLN6D8xAAAAAElFTkSuQmCC%22%2F%3E%3C%2Fdefs%3E%3C%2Fsvg%3E";
@@ -2110,7 +1644,7 @@ var MicrosoftLogo = "data:image/svg+xml,%3Csvg%20width%3D%2225%22%20height%3D%22
2110
1644
 
2111
1645
  var Input = React__namespace.forwardRef(function (_a, ref) {
2112
1646
  var className = _a.className, type = _a.type, props = __rest(_a, ["className", "type"]);
2113
- return (jsxRuntimeExports.jsx("input", __assign({ type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref }, props)));
1647
+ return (jsxRuntime.jsx("input", __assign({ type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref }, props)));
2114
1648
  });
2115
1649
  Input.displayName = "Input";
2116
1650
 
@@ -2120,26 +1654,27 @@ var credentialsSchema = z.z.object({
2120
1654
  });
2121
1655
  var ADLoginModal = function (_a) {
2122
1656
  var open = _a.open, isLoading = _a.isLoading, setIsLoading = _a.setIsLoading, onOpenChange = _a.onOpenChange, onLogin = _a.onLogin;
2123
- var _b = React.useState("credentials"), step = _b[0], setStep = _b[1];
2124
- var _c = React.useState({
1657
+ var _b = React.useState("Credentials"), step = _b[0], setStep = _b[1];
1658
+ var _c = React.useState(false), showPassword = _c[0], setShowPassword = _c[1];
1659
+ var _d = React.useState({
2125
1660
  username: "",
2126
1661
  password: "",
2127
- }), credentials = _c[0], setCredentials = _c[1];
2128
- var _d = React.useState(""), mfaCode = _d[0], setMfaCode = _d[1];
1662
+ }), credentials = _d[0], setCredentials = _d[1];
1663
+ var _e = React.useState(""), MFACode = _e[0], setMFACode = _e[1];
2129
1664
  var form = reactHookForm.useForm({
2130
1665
  resolver: a$1(credentialsSchema),
2131
1666
  defaultValues: { username: "", password: "" },
2132
1667
  });
2133
- var handleCredentialsSubmit = function (values) { return __awaiter(void 0, void 0, void 0, function () {
2134
- return __generator(this, function (_a) {
1668
+ var handleCredentialsSubmit = function (values) { return __awaiter$1(void 0, void 0, void 0, function () {
1669
+ return __generator$1(this, function (_a) {
2135
1670
  setCredentials(values);
2136
- setStep("mfa");
1671
+ setStep("MFA");
2137
1672
  return [2 /*return*/];
2138
1673
  });
2139
1674
  }); };
2140
- var handleMFASubmit = function (code) { return __awaiter(void 0, void 0, void 0, function () {
1675
+ var handleMFASubmit = function (code) { return __awaiter$1(void 0, void 0, void 0, function () {
2141
1676
  var error_1;
2142
- return __generator(this, function (_a) {
1677
+ return __generator$1(this, function (_a) {
2143
1678
  switch (_a.label) {
2144
1679
  case 0:
2145
1680
  setIsLoading(true);
@@ -2150,13 +1685,14 @@ var ADLoginModal = function (_a) {
2150
1685
  username: credentials.username,
2151
1686
  password: credentials.password,
2152
1687
  MFACode: code,
1688
+ appCode: "",
2153
1689
  })];
2154
1690
  case 2:
2155
1691
  _a.sent();
2156
1692
  onOpenChange(false);
2157
- setStep("credentials");
1693
+ setStep("Credentials");
2158
1694
  form.reset();
2159
- setMfaCode("");
1695
+ setMFACode("");
2160
1696
  return [3 /*break*/, 5];
2161
1697
  case 3:
2162
1698
  error_1 = _a.sent();
@@ -2171,21 +1707,22 @@ var ADLoginModal = function (_a) {
2171
1707
  }); };
2172
1708
  var handleClose = function () {
2173
1709
  onOpenChange(false);
2174
- setStep("credentials");
1710
+ setStep("Credentials");
2175
1711
  form.reset();
2176
- setMfaCode("");
1712
+ setMFACode("");
1713
+ setShowPassword(false);
2177
1714
  };
2178
- return (jsxRuntimeExports.jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxRuntimeExports.jsxs(DialogContent, { className: "min-w-[50vw] max-w-[70vw]", children: [jsxRuntimeExports.jsx(DialogHeader, { children: jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "w-8 h-8 text-[#506f4a]" }), jsxRuntimeExports.jsx(DialogTitle, { className: "text-2xl", children: "Sign in with AD" })] }) }), step === "credentials" ? (jsxRuntimeExports.jsx(Form, __assign({}, form, { children: jsxRuntimeExports.jsxs("form", { onSubmit: form.handleSubmit(handleCredentialsSubmit), className: "space-y-4", children: [jsxRuntimeExports.jsx(FormField, { control: form.control, name: "username", render: function (_a) {
1715
+ return (jsxRuntime.jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxRuntime.jsxs(DialogContent, { className: "min-w-[50vw] max-w-[70vw]", children: [jsxRuntime.jsx(DialogHeader, { children: jsxRuntime.jsxs("div", { className: "flex items-center gap-4", children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "w-8 h-8 text-[#506f4a]" }), jsxRuntime.jsx(DialogTitle, { className: "text-xl", children: "Sign in with AD Credentials" })] }) }), step === "Credentials" ? (jsxRuntime.jsx(Form, __assign({}, form, { children: jsxRuntime.jsxs("form", { onSubmit: form.handleSubmit(handleCredentialsSubmit), className: "space-y-6", children: [jsxRuntime.jsx(FormField, { control: form.control, name: "username", render: function (_a) {
2179
1716
  var field = _a.field;
2180
- return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Username" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ className: "h-12", placeholder: "Enter your username" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
2181
- } }), jsxRuntimeExports.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
1717
+ return (jsxRuntime.jsxs(FormItem, { children: [jsxRuntime.jsx(FormLabel, { children: "Username" }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(Input, __assign({ className: "h-12", placeholder: "Enter your username" }, field)) }), jsxRuntime.jsx(FormMessage, {})] }));
1718
+ } }), jsxRuntime.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
2182
1719
  var field = _a.field;
2183
- return (jsxRuntimeExports.jsxs(FormItem, { children: [jsxRuntimeExports.jsx(FormLabel, { children: "Password" }), jsxRuntimeExports.jsx(FormControl, { children: jsxRuntimeExports.jsx(Input, __assign({ className: "h-12", type: "password", placeholder: "Enter your password" }, field)) }), jsxRuntimeExports.jsx(FormMessage, {})] }));
2184
- } }), jsxRuntimeExports.jsx(Button, { type: "submit", className: "w-full bg-[#506f4a] hover:bg-[#506f4a]/90", children: "Continue" })] }) }))) : (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsx(GenericOTPVerifier, { value: mfaCode, setValue: setMfaCode, setLoading: setIsLoading, isDisabled: isLoading, onChangeOTP: handleMFASubmit, fieldName: "AuthenticatorCode" }), isLoading && (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 text-sm text-muted-foreground", children: [jsxRuntimeExports.jsx(lucideReact.Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntimeExports.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
1720
+ return (jsxRuntime.jsxs(FormItem, { children: [jsxRuntime.jsx(FormLabel, { children: "Password" }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsxs("div", { className: "relative", children: [jsxRuntime.jsx(Input, __assign({ className: "h-12 pr-10", type: showPassword ? "text" : "password", placeholder: "Enter your password" }, field)), jsxRuntime.jsx("button", { type: "button", onClick: function () { return setShowPassword(!showPassword); }, className: "absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground", children: showPassword ? (jsxRuntime.jsx(lucideReact.EyeOff, { className: "w-5 h-5" })) : (jsxRuntime.jsx(lucideReact.Eye, { className: "w-5 h-5" })) })] }) }), jsxRuntime.jsx(FormMessage, {})] }));
1721
+ } }), jsxRuntime.jsx(Button, { type: "submit", className: "py-4 w-full bg-[#506f4a] hover:bg-[#506f4a]/90", children: "Continue" })] }) }))) : (jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsx(GenericOTPVerifier, { value: MFACode, setValue: setMFACode, setLoading: setIsLoading, isDisabled: isLoading, onChangeOTP: handleMFASubmit, fieldName: "AuthenticatorCode" }), isLoading && (jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 text-sm text-muted-foreground", children: [jsxRuntime.jsx(lucideReact.Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntime.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
2185
1722
  };
2186
1723
 
2187
1724
  var DefaultLoginPage = function (_a) {
2188
- var usePassKey = _a.usePassKey, useADLogin = _a.useADLogin, MFAEndpoints = _a.MFAEndpoints, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps;
1725
+ var usePassKey = _a.usePassKey, useADLogin = _a.useADLogin, MFAEndpoints = _a.MFAEndpoints, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, onADLoginSuccess = _a.onADLoginSuccess;
2189
1726
  var cardVariants = {
2190
1727
  hidden: { opacity: 0, scale: 0.8, y: 50 },
2191
1728
  visible: {
@@ -2199,22 +1736,45 @@ var DefaultLoginPage = function (_a) {
2199
1736
  var context = useCAMSContext();
2200
1737
  var login = context.login, isLoading = context.isLoading, authMode = context.authMode;
2201
1738
  var _b = React.useState(false), showADModal = _b[0], setShowADModal = _b[1];
1739
+ var _c = React.useState(false), showSuccessAnimation = _c[0], setShowSuccessAnimation = _c[1];
2202
1740
  var register = useWebAuthn().register;
2203
- var _c = useCredentialsHandler(function (state, data) { return __awaiter(void 0, void 0, void 0, function () {
2204
- return __generator(this, function (_a) {
1741
+ var authentication = new camsSdk.CAMSMFAAuthenticator();
1742
+ var _d = useCredentialsHandler(function (state, data) { return __awaiter$1(void 0, void 0, void 0, function () {
1743
+ return __generator$1(this, function (_a) {
2205
1744
  console.log(data);
2206
- if (state && data) {
2207
- context.isAuthenticated = true;
2208
- context.requiresMFA = false;
1745
+ if (state && data && data.isValid) {
1746
+ setShowSuccessAnimation(true);
1747
+ localStorage.setItem(context.storageKey, JSON.stringify({
1748
+ isAuthenticated: true,
1749
+ requiresMFA: false,
1750
+ accessToken: "Credentials",
1751
+ idToken: "Credentials",
1752
+ }));
2209
1753
  context.setUserProfile({
2210
- type: "AUTH_SUCCESS",
2211
- userProfile: __assign({}, data),
1754
+ state: "AUTH_SUCCESS",
1755
+ message: data.message,
1756
+ role: data.userInfo.role,
1757
+ profile: {
1758
+ id: data.userInfo.id,
1759
+ name: data.userInfo.name,
1760
+ email: data.userInfo.email,
1761
+ isMFAEnabled: data.userInfo.isMFAEnabled,
1762
+ tokens: data.tokens,
1763
+ },
2212
1764
  });
1765
+ setShowADModal(false);
1766
+ }
1767
+ else {
1768
+ sonner.toast.error("\u274C AD Login failed. ".concat((data === null || data === void 0 ? void 0 : data.message) || "Unknown error"));
2213
1769
  }
2214
1770
  return [2 /*return*/];
2215
1771
  });
2216
- }); }), handleSubmitCredentials = _c.handleSubmitCredentials, isCredAuthLoading = _c.loading, setIsCredAuthLoading = _c.setLoading;
1772
+ }); }), handleSubmitCredentials = _d.handleSubmitCredentials, isCredAuthLoading = _d.loading, setIsCredAuthLoading = _d.setLoading;
2217
1773
  var handleMSALLogin = function () {
1774
+ if (typeof window !== "undefined" && !window.crypto) {
1775
+ sonner.toast.error("Crypto API not available. Please use a modern browser.");
1776
+ return;
1777
+ }
2218
1778
  if (authMode === "MSAL") {
2219
1779
  login();
2220
1780
  }
@@ -2223,53 +1783,31 @@ var DefaultLoginPage = function (_a) {
2223
1783
  console.warn("Regular CAMS login requires configuration");
2224
1784
  }
2225
1785
  };
2226
- var handleRegister = function (data) { return __awaiter(void 0, void 0, void 0, function () {
2227
- var options, attestationResponse, error_1;
2228
- return __generator(this, function (_a) {
2229
- switch (_a.label) {
2230
- case 0:
2231
- _a.trys.push([0, 4, , 5]);
2232
- // 1. Fetch challenge from your server
2233
- console.log("Requesting registration challenge from server...");
2234
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterNewChallenge, __assign({}, data))];
2235
- case 1:
2236
- options = (_a.sent()).data;
2237
- console.log("Received challenge:", options);
2238
- // 2. Call the SDK to trigger the browser's passkey creation UI
2239
- console.log("Calling SDK register function...");
2240
- return [4 /*yield*/, register(options)];
2241
- case 2:
2242
- attestationResponse = _a.sent();
2243
- console.log("Passkey created on client:", attestationResponse);
2244
- // 3. Send the response back to the server for verification
2245
- console.log("Sending attestation to server for verification...");
2246
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterVerify + "?username=".concat(data.username), attestationResponse)];
2247
- case 3:
2248
- _a.sent();
2249
- sonner.toast.success("✅ Registration successful! Passkey created.");
2250
- return [3 /*break*/, 5];
2251
- case 4:
2252
- error_1 = _a.sent();
2253
- console.error("Registration failed:", error_1);
2254
- sonner.toast.error("❌ Could not create passkey.");
2255
- return [3 /*break*/, 5];
2256
- case 5: return [2 /*return*/];
2257
- }
2258
- });
2259
- }); };
2260
- return (jsxRuntimeExports.jsxs("main", { className: "min-h-screen bg-gray-50", children: [jsxRuntimeExports.jsx(framerMotion.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, children: jsxRuntimeExports.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntimeExports.jsxs(framerMotion.motion.div, { variants: cardVariants, initial: "hidden", animate: "visible", exit: "exit", className: "w-full max-w-md p-6 space-y-4 bg-gray-50 rounded-2xl shadow-2xl --dark:bg-gray-800", children: [jsxRuntimeExports.jsxs(CardHeader, { className: "text-center space-y-3", children: [jsxRuntimeExports.jsx("div", { className: "w-full flex items-center justify-center", children: jsxRuntimeExports.jsx("img", { src: NIBSSLogo, alt: "NIBSS Logo", width: 265, height: 265 }) }), jsxRuntimeExports.jsx(CardTitle, { className: "text-3xl font-bold --text-gray-900 --dark:text-white", children: "NIBSS CAMS" }), jsxRuntimeExports.jsx(CardTitle, { className: "text-gray-500 dark:text-gray-400 font-bold text-lg", children: "Centralized Authentication" })] }), jsxRuntimeExports.jsxs(CardAction, { className: "w-full flex flex-col items-center justify-center text-center text-gray-500 dark:text-gray-400 mb-6", children: [jsxRuntimeExports.jsx("img", { src: AuthLogo, alt: "Auth Logo", width: 365, height: 365 }), "Kindly use the below identity providers to authenticate"] }), jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsxs(Button
1786
+ if (showSuccessAnimation && useADLogin) {
1787
+ return (jsxRuntime.jsx("div", { className: "flex justify-center items-center h-dvh", children: jsxRuntime.jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsxRuntime.jsx(AuthSuccessAnimation, { onComplete: function () {
1788
+ onADLoginSuccess === null || onADLoginSuccess === void 0 ? void 0 : onADLoginSuccess();
1789
+ } }) }) }));
1790
+ }
1791
+ return (jsxRuntime.jsxs("main", { className: "cams-sdk min-h-screen bg-gray-50", children: [jsxRuntime.jsx(framerMotion.motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, children: jsxRuntime.jsx("div", { className: "flex h-screen items-center justify-center", children: jsxRuntime.jsxs(framerMotion.motion.div, { variants: cardVariants, initial: "hidden", animate: "visible", exit: "exit", className: "w-full max-w-md p-6 space-y-4 rounded-2xl shadow-2xl", children: [jsxRuntime.jsxs(CardHeader, { className: "text-center space-y-3", children: [jsxRuntime.jsx("div", { className: "w-full flex items-center justify-center", children: jsxRuntime.jsx("img", { src: NIBSSLogo, alt: "NIBSS Logo", width: 225, height: 225 }) }), jsxRuntime.jsx(CardTitle, { className: "text-3xl font-bold", children: "NIBSS CAMS" }), jsxRuntime.jsx(CardTitle, { className: "text-gray-500 dark:text-gray-400 font-bold text-lg", children: "Centralized Authentication" })] }), jsxRuntime.jsxs(CardAction, { className: "w-full flex flex-col items-center justify-center text-center text-gray-500 dark:text-gray-400 mb-8", children: [jsxRuntime.jsx("img", { src: AuthLogo, alt: "Auth Logo", width: 365, height: 365 }), "Use Below Identity Providers To Authenticate"] }), jsxRuntime.jsxs("div", { className: "space-y-4", children: [jsxRuntime.jsxs(Button
2261
1792
  // variant="outline"
2262
1793
  , {
2263
1794
  // variant="outline"
2264
- className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: handleMSALLogin, disabled: isLoading, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsxRuntimeExports.jsx("span", { className: "ml-2", children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), useADLogin && (jsxRuntimeExports.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return setShowADModal(true); }, disabled: isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntimeExports.jsx("span", { children: isLoading
1795
+ className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: handleMSALLogin, disabled: isLoading, children: [jsxRuntime.jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsxRuntime.jsx("span", { className: "ml-2", children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), useADLogin && (jsxRuntime.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return setShowADModal(true); }, disabled: isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntime.jsx("span", { children: isLoading
2265
1796
  ? "Logging in..."
2266
- : "Sign in with ActiveDirectory" })] })), usePassKey && (jsxRuntimeExports.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () { return handleRegister(PassKeysRegisterProps); }, disabled: isLoading, children: [jsxRuntimeExports.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntimeExports.jsx("span", { children: "Create a Passkey" })] }))] }), jsxRuntimeExports.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntimeExports.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }) }, "landing"), jsxRuntimeExports.jsx(ADLoginModal, { open: showADModal, onOpenChange: setShowADModal, isLoading: isCredAuthLoading, setIsLoading: setIsCredAuthLoading, onLogin: function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
1797
+ : "Sign in with ActiveDirectory" })] })), usePassKey && (jsxRuntime.jsxs(Button, { className: "w-full flex items-center justify-center cursor-pointer bg-[#506f4a] hover:bg-[#506f4a] rounded-lg border border-transparent px-5 py-8 text-base font-medium transition-colors duration-250", onClick: function () {
1798
+ return authentication.HandleRegister(MFAEndpoints.RegisterNewChallenge, MFAEndpoints.RegisterVerify +
1799
+ "?username=".concat(PassKeysRegisterProps.username), register, PassKeysRegisterProps);
1800
+ }, disabled: isLoading, children: [jsxRuntime.jsx(lucideReact.KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntime.jsx("span", { children: "Create a Passkey" })] }))] }), jsxRuntime.jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntime.jsx("span", { children: "Powered By NIBSS" })] })] }) }) }, "landing"), jsxRuntime.jsx(ADLoginModal, { open: showADModal, onOpenChange: setShowADModal, isLoading: context.isLoading || isCredAuthLoading, setIsLoading: setIsCredAuthLoading, onLogin: function (_a) { return __awaiter$1(void 0, [_a], void 0, function (_b) {
2267
1801
  var username = _b.username, password = _b.password, MFACode = _b.MFACode;
2268
- return __generator(this, function (_c) {
1802
+ return __generator$1(this, function (_c) {
2269
1803
  // Implement your AD login logic here
2270
- console.log("AD Login:", { username: username, password: password, MFACode: MFACode });
2271
- // Example: await adLoginService(username, password, mfaCode);
2272
- handleSubmitCredentials(CredentialsAuthEndpoint !== null && CredentialsAuthEndpoint !== void 0 ? CredentialsAuthEndpoint : "/api/auth/validate", { username: username, password: password, MFACode: MFACode }, context.appCode);
1804
+ console.log("AD Login:", { username: username, MFACode: MFACode });
1805
+ handleSubmitCredentials(CredentialsAuthEndpoint, {
1806
+ username: username,
1807
+ password: password,
1808
+ MFACode: MFACode,
1809
+ appCode: context.appCode,
1810
+ });
2273
1811
  return [2 /*return*/];
2274
1812
  });
2275
1813
  }); } })] }));
@@ -2277,24 +1815,25 @@ var DefaultLoginPage = function (_a) {
2277
1815
 
2278
1816
  var ErrorFallback = function (_a) {
2279
1817
  var message = _a.message;
2280
- return (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center min-h-screen bg-gray-50", children: jsxRuntimeExports.jsxs("div", { className: "bg-white p-6 rounded-lg shadow-lg border border-red-200 max-w-md", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [jsxRuntimeExports.jsx("svg", { className: "w-6 h-6 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Configuration Error" })] }), jsxRuntimeExports.jsx("p", { className: "text-red-600", children: message })] }) }));
1818
+ return (jsxRuntime.jsx("div", { className: "flex items-center justify-center min-h-screen bg-gray-50", children: jsxRuntime.jsxs("div", { className: "bg-white p-6 rounded-lg shadow-lg border border-red-200 max-w-md", children: [jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [jsxRuntime.jsx("svg", { className: "w-6 h-6 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Configuration Error" })] }), jsxRuntime.jsx("p", { className: "text-red-600", children: message })] }) }));
2281
1819
  };
2282
1820
 
2283
1821
  var MFAEndpointsSchema = z.object({
2284
- ValidateMFA: z.url("MFAEndpoint must be a valid URL"),
1822
+ ValidateUserMFA: z.url("ValidateUser MFA Endpoint must be a valid URL"),
2285
1823
  RegisterNewChallenge: z.url("MFA RegisterNewChallenge must be a valid URL"),
2286
1824
  RegisterVerify: z.url("MFA RegisterVerify must be a valid URL"),
2287
1825
  RetrieveAuthChallenge: z.url("MFA RetrieveAuthChallenge must be a valid URL"),
2288
1826
  AuthChallengeVerify: z.url("MFA AuthChallengeVerify must be a valid URL"),
2289
1827
  });
2290
1828
  var MFAGate = function (_a) {
2291
- var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? jsxRuntimeExports.jsx(LoadingSpinner, {}) : _b,
1829
+ var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? (jsxRuntime.jsx("div", { className: "h-screen flex items-center justify-center", children: jsxRuntime.jsx(LoadingSpinner, {}) })) : _b,
2292
1830
  // loginComponent: LoginComponent = DefaultLoginPage,
2293
1831
  _c = _a.usePassKey,
2294
1832
  // loginComponent: LoginComponent = DefaultLoginPage,
2295
- usePassKey = _c === void 0 ? false : _c, _d = _a.useADLogin, useADLogin = _d === void 0 ? false : _d, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, MFAEndpoints = _a.MFAEndpoints;
1833
+ usePassKey = _c === void 0 ? false : _c, _d = _a.useADLogin, useADLogin = _d === void 0 ? false : _d, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, MFAEndpoints = _a.MFAEndpoints, requiresMFA = _a.requiresMFA, onAuthSuccess = _a.onAuthSuccess, onAuthError = _a.onAuthError;
2296
1834
  var context = useCAMSContext();
2297
- var validatedMFAEndpoints = React.useMemo(function () {
1835
+ var _e = React.useState("Loading"), authState = _e[0], setAuthState = _e[1];
1836
+ var ValidatedMFAEndpoints = React.useMemo(function () {
2298
1837
  var parsed = MFAEndpointsSchema.safeParse(MFAEndpoints);
2299
1838
  if (!parsed.success) {
2300
1839
  camsSdk.Logger.error("Invalid MFAEndpoint", parsed.error);
@@ -2302,35 +1841,82 @@ var MFAGate = function (_a) {
2302
1841
  }
2303
1842
  return parsed.data;
2304
1843
  }, [MFAEndpoints]);
1844
+ // Extract the specific values we need from context for dependencies
1845
+ var contextRequiresMFA = "requiresMFA" in context ? context.requiresMFA : false;
1846
+ var contextAccessToken = "accessToken" in context ? context.accessToken : "";
2305
1847
  var handleComplete = React.useCallback(function (success) {
2306
- if (!success)
2307
- camsSdk.Logger.error("MFA authentication failed");
2308
- }, []);
2309
- var handleAuthFailed = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
2310
- return __generator(this, function (_a) {
2311
- switch (_a.label) {
2312
- case 0: return [4 /*yield*/, context.logout()];
1848
+ var _a;
1849
+ if (success && context.authMode === "MSAL") {
1850
+ var accessToken = "accessToken" in context ? context.accessToken : "";
1851
+ var idToken = "idToken" in context ? context.idToken : "";
1852
+ if (accessToken && idToken) {
1853
+ var tokens = { accessToken: accessToken, idToken: idToken };
1854
+ onAuthSuccess === null || onAuthSuccess === void 0 ? void 0 : onAuthSuccess(tokens);
1855
+ if ("onAuthSuccess" in context) {
1856
+ context.isAuthenticated = true;
1857
+ (_a = context.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(context, tokens);
1858
+ }
1859
+ }
1860
+ }
1861
+ else if (!success) {
1862
+ camsSdk.Logger.error("MFA authentication failed", { context: context || null });
1863
+ }
1864
+ }, [context, onAuthSuccess]);
1865
+ var handleAuthFailed = React.useCallback(function () { return __awaiter$1(void 0, void 0, void 0, function () {
1866
+ var _a;
1867
+ return __generator$1(this, function (_b) {
1868
+ switch (_b.label) {
1869
+ case 0:
1870
+ if (context.authMode === "MSAL" && context.error) {
1871
+ onAuthError === null || onAuthError === void 0 ? void 0 : onAuthError(context.error);
1872
+ if ("onAuthError" in context) {
1873
+ (_a = context.onAuthError) === null || _a === void 0 ? void 0 : _a.call(context, context.error);
1874
+ }
1875
+ }
1876
+ return [4 /*yield*/, context.logout()];
2313
1877
  case 1:
2314
- _a.sent();
1878
+ _b.sent();
2315
1879
  return [2 /*return*/];
2316
1880
  }
2317
1881
  });
2318
- }); }, [context.logout]);
1882
+ }); }, [context, onAuthError]);
1883
+ React.useEffect(function () {
1884
+ if (context.isLoading) {
1885
+ setAuthState("Loading");
1886
+ return;
1887
+ }
1888
+ if (!contextAccessToken) {
1889
+ setAuthState("Unauthenticated");
1890
+ return;
1891
+ }
1892
+ var shouldRequireMFA = requiresMFA !== null && requiresMFA !== void 0 ? requiresMFA : contextRequiresMFA;
1893
+ setAuthState(shouldRequireMFA ? "MFA_Required" : "Authenticated");
1894
+ }, [
1895
+ context.isLoading,
1896
+ contextRequiresMFA,
1897
+ contextAccessToken,
1898
+ requiresMFA,
1899
+ ]);
2319
1900
  if (useADLogin && !CredentialsAuthEndpoint)
2320
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
2321
- if (!validatedMFAEndpoints)
2322
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
1901
+ return jsxRuntime.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
1902
+ if (!ValidatedMFAEndpoints)
1903
+ return jsxRuntime.jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
2323
1904
  if (context.authMode !== "MSAL")
2324
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2325
- if (context.isLoading)
2326
- return fallback;
2327
- if (context.requiresMFA) {
2328
- return (jsxRuntimeExports.jsx(MFAOptions, { MFAEndpoints: validatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
2329
- }
2330
- if (!context.isAuthenticated) {
2331
- return (jsxRuntimeExports.jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: MFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint }));
1905
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1906
+ switch (authState) {
1907
+ case "Loading":
1908
+ return fallback;
1909
+ case "MFA_Required":
1910
+ return (jsxRuntime.jsx(MFAOptions, { MFAEndpoints: ValidatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
1911
+ case "Authenticated":
1912
+ return jsxRuntime.jsx(jsxRuntime.Fragment, { children: children });
1913
+ case "Unauthenticated":
1914
+ default:
1915
+ return (jsxRuntime.jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: ValidatedMFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint, onADLoginSuccess: function () {
1916
+ context.isAuthenticated = true;
1917
+ setAuthState("Authenticated");
1918
+ } }));
2332
1919
  }
2333
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2334
1920
  };
2335
1921
 
2336
1922
  exports.CAMSMSALProvider = CAMSMSALProvider;