@nibssplc/cams-sdk-react 1.0.0-rc.7 → 1.0.0-rc.71

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.esm.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import * as React from 'react';
2
- import React__default, { useState, useRef, useEffect, useCallback, createContext, useContext, useMemo } from 'react';
3
- import { CAMSSessionManager, isPopupWindow, CAMSMFAAuthenticator, Logger, CAMSError, CAMSErrorType } from '@nibssplc/cams-sdk';
2
+ import { useState, useRef, useEffect, useCallback, createContext, useContext, useMemo } from 'react';
3
+ import { CAMSSessionManager, isPopupWindow, Logger, CAMSError, CAMSErrorType, CAMSMFAAuthenticator } from '@nibssplc/cams-sdk';
4
4
  export * from '@nibssplc/cams-sdk';
5
5
  import { useMsal, useAccount, MsalProvider } from '@azure/msal-react';
6
6
  import { InteractionStatus, PublicClientApplication } from '@azure/msal-browser';
7
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
7
8
  import z$1, { z } from 'zod';
8
9
  import { OTPInput, OTPInputContext, REGEXP_ONLY_DIGITS } from 'input-otp';
9
- import { RectangleEllipsis, XIcon, CheckCircle, Mail, Shield, KeyIcon, ShieldCheck, ShieldClose, Loader2 } from 'lucide-react';
10
+ import { RectangleEllipsis, XIcon, CheckCircle, Shield, KeyIcon, ShieldCheck, ShieldClose, Loader2 } from 'lucide-react';
10
11
  import { appendErrors, FormProvider, Controller, useFormContext, useFormState, useForm } from 'react-hook-form';
11
12
  import { validateFieldsNatively, toNestErrors } from '@hookform/resolvers';
12
13
  import { clsx } from 'clsx';
@@ -17,8 +18,6 @@ import { cva } from 'class-variance-authority';
17
18
  import * as DialogPrimitive from '@radix-ui/react-dialog';
18
19
  import { toast } from 'sonner';
19
20
  import { motion } from 'framer-motion';
20
- import axios from 'axios';
21
- import https from 'https';
22
21
 
23
22
  /******************************************************************************
24
23
  Copyright (c) Microsoft Corporation.
@@ -60,7 +59,7 @@ function __rest(s, e) {
60
59
  return t;
61
60
  }
62
61
 
63
- function __awaiter(thisArg, _arguments, P, generator) {
62
+ function __awaiter$1(thisArg, _arguments, P, generator) {
64
63
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
65
64
  return new (P || (P = Promise))(function (resolve, reject) {
66
65
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -70,7 +69,7 @@ function __awaiter(thisArg, _arguments, P, generator) {
70
69
  });
71
70
  }
72
71
 
73
- function __generator(thisArg, body) {
72
+ function __generator$1(thisArg, body) {
74
73
  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);
75
74
  return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
76
75
  function verb(n) { return function (v) { return step([n, v]); }; }
@@ -167,10 +166,10 @@ function useCAMSAuth(options) {
167
166
  }
168
167
  }
169
168
  }, [options.storageKey]);
170
- var login = useCallback(function (config) { return __awaiter(_this, void 0, void 0, function () {
169
+ var login = useCallback(function (config) { return __awaiter$1(_this, void 0, void 0, function () {
171
170
  var loginConfig, userProfile, err_1, e, isPopupClosedError, restoredToken, userProfile;
172
171
  var _a, _b, _c;
173
- return __generator(this, function (_d) {
172
+ return __generator$1(this, function (_d) {
174
173
  switch (_d.label) {
175
174
  case 0:
176
175
  if (!sessionManagerRef.current)
@@ -218,8 +217,8 @@ function useCAMSAuth(options) {
218
217
  }
219
218
  });
220
219
  }); }, [options.idleTimeout]);
221
- var logout = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
222
- return __generator(this, function (_a) {
220
+ var logout = useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
221
+ return __generator$1(this, function (_a) {
223
222
  switch (_a.label) {
224
223
  case 0:
225
224
  if (!sessionManagerRef.current)
@@ -249,11 +248,154 @@ function useCAMSAuth(options) {
249
248
  };
250
249
  }
251
250
 
252
- var setCookie$1 = function (name, value, days) {
251
+ var _a;
252
+ // Crypto polyfill for MSAL browser compatibility
253
+ // Only apply if crypto.subtle is completely missing
254
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
255
+ // Ensure crypto object exists
256
+ if (!window.crypto) {
257
+ window.crypto = {};
258
+ }
259
+ // Polyfill getRandomValues
260
+ if (!window.crypto.getRandomValues) {
261
+ window.crypto.getRandomValues = function (array) {
262
+ var bytes = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
263
+ for (var i = 0; i < bytes.length; i++) {
264
+ bytes[i] = Math.floor(Math.random() * 256);
265
+ }
266
+ return array;
267
+ };
268
+ }
269
+ var sha256_1 = function (data) { return __awaiter(void 0, void 0, void 0, function () {
270
+ 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;
271
+ return __generator(this, function (_a) {
272
+ toUint8 = function (src) {
273
+ if (src instanceof ArrayBuffer)
274
+ return new Uint8Array(src);
275
+ if (ArrayBuffer.isView(src)) {
276
+ var view = src;
277
+ return new Uint8Array(view.buffer, view.byteOffset || 0, view.byteLength);
278
+ }
279
+ throw new TypeError("Unsupported BufferSource");
280
+ };
281
+ bytes = toUint8(data);
282
+ hash = new Uint32Array(8);
283
+ k = new Uint32Array([
284
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
285
+ 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
286
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
287
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
288
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
289
+ 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
290
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
291
+ 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
292
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
293
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
294
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,
295
+ ]);
296
+ hash[0] = 0x6a09e667;
297
+ hash[1] = 0xbb67ae85;
298
+ hash[2] = 0x3c6ef372;
299
+ hash[3] = 0xa54ff53a;
300
+ hash[4] = 0x510e527f;
301
+ hash[5] = 0x9b05688c;
302
+ hash[6] = 0x1f83d9ab;
303
+ hash[7] = 0x5be0cd19;
304
+ ml = bytes.length * 8;
305
+ msg = new Uint8Array(bytes.length + 64 + ((64 - ((bytes.length + 9) % 64)) % 64));
306
+ msg.set(bytes);
307
+ msg[bytes.length] = 0x80;
308
+ dv = new DataView(msg.buffer);
309
+ high = Math.floor(ml / 0x100000000);
310
+ low = ml >>> 0;
311
+ dv.setUint32(msg.length - 8, high, false);
312
+ dv.setUint32(msg.length - 4, low, false);
313
+ for (i = 0; i < msg.length; i += 64) {
314
+ w = new Uint32Array(64);
315
+ for (j = 0; j < 16; j++)
316
+ w[j] = new DataView(msg.buffer).getUint32(i + j * 4, false);
317
+ for (j = 16; j < 64; j++) {
318
+ s0 = ((w[j - 15] >>> 7) | (w[j - 15] << 25)) ^
319
+ ((w[j - 15] >>> 18) | (w[j - 15] << 14)) ^
320
+ (w[j - 15] >>> 3);
321
+ s1 = ((w[j - 2] >>> 17) | (w[j - 2] << 15)) ^
322
+ ((w[j - 2] >>> 19) | (w[j - 2] << 13)) ^
323
+ (w[j - 2] >>> 10);
324
+ w[j] = (w[j - 16] + s0 + w[j - 7] + s1) >>> 0;
325
+ }
326
+ a = hash[0], b = hash[1], c = hash[2], d = hash[3], e = hash[4], f = hash[5], g = hash[6], h = hash[7];
327
+ for (j = 0; j < 64; j++) {
328
+ S1 = ((e >>> 6) | (e << 26)) ^
329
+ ((e >>> 11) | (e << 21)) ^
330
+ ((e >>> 25) | (e << 7));
331
+ ch = (e & f) ^ (~e & g);
332
+ temp1 = (h + S1 + ch + k[j] + w[j]) >>> 0;
333
+ S0 = ((a >>> 2) | (a << 30)) ^
334
+ ((a >>> 13) | (a << 19)) ^
335
+ ((a >>> 22) | (a << 10));
336
+ maj = (a & b) ^ (a & c) ^ (b & c);
337
+ temp2 = (S0 + maj) >>> 0;
338
+ h = g;
339
+ g = f;
340
+ f = e;
341
+ e = (d + temp1) >>> 0;
342
+ d = c;
343
+ c = b;
344
+ b = a;
345
+ a = (temp1 + temp2) >>> 0;
346
+ }
347
+ hash[0] = (hash[0] + a) >>> 0;
348
+ hash[1] = (hash[1] + b) >>> 0;
349
+ hash[2] = (hash[2] + c) >>> 0;
350
+ hash[3] = (hash[3] + d) >>> 0;
351
+ hash[4] = (hash[4] + e) >>> 0;
352
+ hash[5] = (hash[5] + f) >>> 0;
353
+ hash[6] = (hash[6] + g) >>> 0;
354
+ hash[7] = (hash[7] + h) >>> 0;
355
+ }
356
+ result = new Uint8Array(32);
357
+ for (i = 0; i < 8; i++)
358
+ new DataView(result.buffer).setUint32(i * 4, hash[i], false);
359
+ return [2 /*return*/, result.buffer];
360
+ });
361
+ }); };
362
+ // Create the polyfilled subtle object
363
+ var polyfillSubtle = {
364
+ digest: function (algorithm, data) { return __awaiter(void 0, void 0, void 0, function () {
365
+ var alg;
366
+ return __generator(this, function (_a) {
367
+ alg = typeof algorithm === "string"
368
+ ? algorithm
369
+ : algorithm.name;
370
+ if (alg === "SHA-256")
371
+ return [2 /*return*/, sha256_1(data)];
372
+ throw new Error("Unsupported algorithm: ".concat(alg));
373
+ });
374
+ }); },
375
+ };
376
+ // Set the polyfilled subtle object
377
+ window.crypto.subtle = polyfillSubtle;
378
+ // Polyfill randomUUID
379
+ if (!window.crypto.randomUUID) {
380
+ window.crypto.randomUUID =
381
+ function () {
382
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
383
+ var r = (Math.random() * 16) | 0;
384
+ var v = c === "x" ? r : (r & 0x3) | 0x8;
385
+ return v.toString(16);
386
+ });
387
+ };
388
+ }
389
+ console.log("Crypto polyfill applied (native crypto.subtle not available)");
390
+ }
391
+
392
+ var setCookie = function (name, value, days) {
393
+ if (days === void 0) { days = 1; }
253
394
  var expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
395
+ console.log("Auth Cookie Expires >>>", { name: name, value: value, expires: expires });
254
396
  document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
255
397
  };
256
- var getCookie$1 = function (name) {
398
+ var getCookie = function (name) {
257
399
  var _a;
258
400
  return ((_a = document.cookie
259
401
  .split("; ")
@@ -264,23 +406,26 @@ var getCookie$1 = function (name) {
264
406
  .split("=")[1])
265
407
  : null;
266
408
  };
267
- var deleteCookie$1 = function (name) {
409
+ var deleteCookie = function (name) {
268
410
  document.cookie = name + "=; Max-Age=-99999999; path=/";
269
411
  };
270
412
 
271
413
  function useCAMSMSALAuth(options) {
272
414
  var _this = this;
273
- var storageKey = options.storageKey || "CAMS-MSAL-AUTH-SDK";
274
- var _a = useMsal(), instance = _a.instance, inProgress = _a.inProgress, accounts = _a.accounts;
415
+ 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;
416
+ var storageKey = optStorageKey || "CAMS-MSAL-AUTH-SDK";
417
+ var _b = useMsal(), instance = _b.instance, inProgress = _b.inProgress, accounts = _b.accounts;
275
418
  var account = useAccount(accounts[0] || {});
276
- var _b = useState(null), error = _b[0], setError = _b[1];
277
- var _c = useState(""), idToken = _c[0], setIdToken = _c[1];
278
- var _d = useState(""), accessToken = _d[0], setAccessToken = _d[1];
279
- var _e = useState(null), mfaAuthenticator = _e[0], setMfaAuthenticator = _e[1];
280
- var _f = useState(false), requiresMFA = _f[0], setRequiresMFA = _f[1];
419
+ var _c = useState(null), error = _c[0], setError = _c[1];
420
+ var _d = useState(""), idToken = _d[0], setIdToken = _d[1];
421
+ var _e = useState(""), accessToken = _e[0], setAccessToken = _e[1];
422
+ var _f = useState(""), email = _f[0], setEmail = _f[1];
423
+ // const [mfaAuthenticator, setMfaAuthenticator] =
424
+ // useState<CAMSMFAAuthenticator | null>(null);
425
+ var _g = useState(false), requiresMFA = _g[0], setRequiresMFA = _g[1];
281
426
  var isLoading = inProgress !== InteractionStatus.None;
282
427
  var isAuthenticated = !!account && !!accessToken && !requiresMFA;
283
- var scopes = options.scopes || ["openid", "profile", "email"];
428
+ var scopes = optScopes || ["openid", "profile", "email"];
284
429
  var isTokenValid = function (token) {
285
430
  try {
286
431
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -296,23 +441,17 @@ function useCAMSMSALAuth(options) {
296
441
  if (stored) {
297
442
  try {
298
443
  var _a = JSON.parse(stored), accessToken_1 = _a.accessToken, idToken_1 = _a.idToken, storedRequiresMFA = _a.requiresMFA, storedIsAuthenticated = _a.isAuthenticated;
444
+ // Restore MFA state
299
445
  if (accessToken_1 && isTokenValid(accessToken_1)) {
300
446
  setAccessToken(accessToken_1);
301
447
  setIdToken(idToken_1);
302
- // Restore MFA state
303
- if (storedRequiresMFA && !storedIsAuthenticated) {
304
- var mfaConfig = {
305
- accessToken: accessToken_1,
306
- idToken: idToken_1,
307
- appCode: options.appCode,
308
- provider: "MSAL",
309
- apiEndpoint: options.MFAEndpoint,
310
- };
311
- var authenticator = new CAMSMFAAuthenticator(mfaConfig);
312
- setMfaAuthenticator(authenticator);
313
- setRequiresMFA(true);
314
- }
315
- Logger.debug("App Code", { ">>>": options.appCode });
448
+ setRequiresMFA(storedRequiresMFA);
449
+ Logger.debug("Restored authentication state from storage", {
450
+ accessToken: accessToken_1,
451
+ idToken: idToken_1,
452
+ requiresMFA: storedRequiresMFA,
453
+ isAuthenticated: storedIsAuthenticated,
454
+ });
316
455
  }
317
456
  else {
318
457
  localStorage.removeItem(storageKey);
@@ -326,50 +465,26 @@ function useCAMSMSALAuth(options) {
326
465
  }
327
466
  }
328
467
  }, [accessToken, account, instance, options.storageKey]);
329
- // useEffect(() => {
330
- // const handleRedirect = async () => {
331
- // try {
332
- // const response = await instance.handleRedirectPromise();
333
- // if (response) {
334
- // const account = response.account;
335
- // instance.setActiveA ccount(account);
336
- // const tokenResponse = await instance.acq uireTokenSilent({
337
- // scopes,
338
- // account,
339
- // });
340
- // setToken(tokenResponse.accessToken);
341
- // setAccessToken(tokenResponse.accessToken);
342
- // setIdToken(tokenResponse.idTo ken);
343
- // options.onAuthSuccess?.(tokenR esponse.accessToken);
344
- // if (
345
- // typeof window !== "undefined" &&
346
- // process.env.NODE_ENV !== "test"
347
- // ) {
348
- // window.location.href = options.mfaUrl!;
349
- // }
350
- // }
351
- // } catch (err) {
352
- // console.error("Redirect handling failed:", err);
353
- // }
354
- // };
355
- // handleRedirect();
356
- // }, []);
357
- var login = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
358
- var response, mfaConfig, authenticator, err_1, camsError_1, camsError;
359
- var _a, _b, _c, _d;
360
- return __generator(this, function (_e) {
361
- switch (_e.label) {
468
+ var login = useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
469
+ var response, mfaConfig, authenticator, userConfig, err_1, camsError_1, camsError;
470
+ var _a;
471
+ return __generator$1(this, function (_b) {
472
+ switch (_b.label) {
362
473
  case 0:
474
+ if (inProgress !== InteractionStatus.None) {
475
+ Logger.warn("Authentication already in progress, ignoring duplicate call");
476
+ return [2 /*return*/];
477
+ }
363
478
  setError(null);
364
- _e.label = 1;
479
+ _b.label = 1;
365
480
  case 1:
366
- _e.trys.push([1, 3, , 4]);
481
+ _b.trys.push([1, 4, , 5]);
367
482
  return [4 /*yield*/, instance.loginPopup({
368
483
  scopes: scopes,
369
- prompt: options.prompt || "login",
484
+ prompt: prompt || "login",
370
485
  })];
371
486
  case 2:
372
- response = _e.sent();
487
+ response = _b.sent();
373
488
  console.log("Login Token response:", {
374
489
  accessToken: response.accessToken,
375
490
  idToken: response.idToken,
@@ -379,26 +494,33 @@ function useCAMSMSALAuth(options) {
379
494
  mfaConfig = {
380
495
  accessToken: response.accessToken,
381
496
  idToken: response.idToken,
382
- appCode: options.appCode,
383
497
  provider: "MSAL",
384
- apiEndpoint: options.MFAEndpoint,
498
+ APIAuthEndpoint: ValidateUserEndpoint,
385
499
  };
386
- authenticator = new CAMSMFAAuthenticator(mfaConfig);
387
- setMfaAuthenticator(authenticator);
388
- setRequiresMFA(true);
500
+ authenticator = new CAMSMFAAuthenticator();
501
+ return [4 /*yield*/, authenticator.GetUserMFAConfig(mfaConfig)];
502
+ case 3:
503
+ userConfig = _b.sent();
504
+ Logger.info("MFA Authenticator initialized:", userConfig);
389
505
  // Don't persist as authenticated until MFA is complete
390
- if (typeof window !== "undefined") {
506
+ if (typeof window !== "undefined" && userConfig.isValid) {
391
507
  localStorage.setItem(storageKey, JSON.stringify({
392
508
  isAuthenticated: false,
393
- requiresMFA: true,
509
+ requiresMFA: userConfig.userInfo.isMFAEnabled,
394
510
  accessToken: response.accessToken,
395
511
  idToken: response.idToken,
396
512
  }));
513
+ setEmail(userConfig.userInfo.email);
514
+ setRequiresMFA(userConfig.userInfo.isMFAEnabled);
515
+ }
516
+ return [3 /*break*/, 5];
517
+ case 4:
518
+ err_1 = _b.sent();
519
+ // Handle interaction_in_progress error
520
+ if (err_1.errorCode === "interaction_in_progress") {
521
+ Logger.warn("Interaction already in progress, please wait");
522
+ return [2 /*return*/];
397
523
  }
398
- (_a = options.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(options, response.accessToken);
399
- return [3 /*break*/, 4];
400
- case 3:
401
- err_1 = _e.sent();
402
524
  // Handle user cancellation gracefully
403
525
  if (err_1.errorCode === "user_cancelled") {
404
526
  Logger.error("User cancelled login");
@@ -407,25 +529,28 @@ function useCAMSMSALAuth(options) {
407
529
  }
408
530
  // If popup is blocked
409
531
  if (err_1.errorCode === "popup_window_error" ||
410
- ((_b = err_1.message) === null || _b === void 0 ? void 0 : _b.includes("popup"))) {
532
+ ((_a = err_1.message) === null || _a === void 0 ? void 0 : _a.includes("popup"))) {
411
533
  camsError_1 = new CAMSError(CAMSErrorType.POPUP_BLOCKED, "Popup blocked by browser. Please allow popups and try again.");
412
534
  setError(camsError_1);
413
- (_c = options.onAuthError) === null || _c === void 0 ? void 0 : _c.call(options, camsError_1);
414
535
  return [2 /*return*/];
415
536
  }
416
537
  camsError = new CAMSError(CAMSErrorType.API_VALIDATION_ERROR, "Login failed: " + err_1.message || err_1);
417
538
  setError(camsError);
418
- (_d = options.onAuthError) === null || _d === void 0 ? void 0 : _d.call(options, camsError);
419
- return [3 /*break*/, 4];
420
- case 4: return [2 /*return*/];
539
+ return [3 /*break*/, 5];
540
+ case 5: return [2 /*return*/];
421
541
  }
422
542
  });
423
- }); }, [instance, scopes, options]);
424
- var completeMFA = useCallback(function (data) { return __awaiter(_this, void 0, void 0, function () {
425
- return __generator(this, function (_a) {
426
- if (!mfaAuthenticator) {
427
- throw new CAMSError(CAMSErrorType.API_VALIDATION_ERROR, "MFA Authenticator not initialized");
428
- }
543
+ }); }, [
544
+ instance,
545
+ scopes,
546
+ prompt,
547
+ appCode,
548
+ ValidateUserEndpoint,
549
+ storageKey,
550
+ inProgress,
551
+ ]);
552
+ var completeMFA = useCallback(function (data) { return __awaiter$1(_this, void 0, void 0, function () {
553
+ return __generator$1(this, function (_a) {
429
554
  Logger.info("Completed MFA.. Setting State");
430
555
  try {
431
556
  // Update storage with complete authentication BEFORE setting state
@@ -436,7 +561,11 @@ function useCAMSMSALAuth(options) {
436
561
  accessToken: accessToken,
437
562
  idToken: idToken,
438
563
  }));
439
- setCookie$1("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({ type: "AUTH_SUCCESS", userProfile: __assign({}, data) }), 1);
564
+ setCookie("CAMS-MSAL-AUTH-SDK-PROFILE", JSON.stringify({
565
+ state: "AUTH_SUCCESS",
566
+ role: data.userInfo.role,
567
+ profile: __assign({}, data),
568
+ }), activeCookiePeriod);
440
569
  setRequiresMFA(false);
441
570
  // Set requiresMFA to false after storage update
442
571
  Logger.debug("MFA completed successfully, storage updated", {
@@ -455,22 +584,21 @@ function useCAMSMSALAuth(options) {
455
584
  }
456
585
  return [2 /*return*/];
457
586
  });
458
- }); }, [mfaAuthenticator, accessToken, idToken, storageKey]);
459
- var sendEmailOTP = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
460
- return __generator(this, function (_a) {
587
+ }); }, [accessToken, idToken, storageKey, activeCookiePeriod]);
588
+ var LoginADCredentials = useCallback(function (credentials, appCode, CredentialsAuthEndpoint) { return __awaiter$1(_this, void 0, void 0, function () {
589
+ var authenticator;
590
+ return __generator$1(this, function (_a) {
461
591
  switch (_a.label) {
462
592
  case 0:
463
- if (!mfaAuthenticator) {
464
- return [2 /*return*/, false];
465
- }
466
- return [4 /*yield*/, mfaAuthenticator.sendEmailOTP()];
593
+ authenticator = new CAMSMFAAuthenticator();
594
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
467
595
  case 1: return [2 /*return*/, _a.sent()];
468
596
  }
469
597
  });
470
- }); }, [mfaAuthenticator]);
471
- var logout = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
598
+ }); }, []);
599
+ var logout = useCallback(function () { return __awaiter$1(_this, void 0, void 0, function () {
472
600
  var err_2, camsError;
473
- return __generator(this, function (_a) {
601
+ return __generator$1(this, function (_a) {
474
602
  switch (_a.label) {
475
603
  case 0:
476
604
  _a.trys.push([0, 2, , 3]);
@@ -481,7 +609,6 @@ function useCAMSMSALAuth(options) {
481
609
  setAccessToken("");
482
610
  setIdToken("");
483
611
  setError(null);
484
- setMfaAuthenticator(null);
485
612
  setRequiresMFA(false);
486
613
  if (typeof window !== "undefined") {
487
614
  localStorage.removeItem(storageKey);
@@ -504,14 +631,15 @@ function useCAMSMSALAuth(options) {
504
631
  isAuthenticated: isAuthenticated,
505
632
  isLoading: isLoading,
506
633
  error: error,
634
+ email: email,
507
635
  idToken: idToken,
508
636
  accessToken: accessToken,
509
- appCode: options.appCode,
510
- mfaAuthenticator: mfaAuthenticator,
637
+ appCode: appCode,
511
638
  requiresMFA: requiresMFA,
512
639
  completeMFA: completeMFA,
513
- sendEmailOTP: sendEmailOTP,
640
+ LoginADCredentials: LoginADCredentials,
514
641
  setRequiresMFA: setRequiresMFA,
642
+ activeCookiePeriod: activeCookiePeriod,
515
643
  };
516
644
  }
517
645
 
@@ -554,10 +682,10 @@ function arrayBufferToBase64url(buffer) {
554
682
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
555
683
  */
556
684
  function register(options) {
557
- return __awaiter(this, void 0, void 0, function () {
685
+ return __awaiter$1(this, void 0, void 0, function () {
558
686
  var createOptions, credential, publicKeyCredential, attestationResponse, transports, err_1;
559
687
  var _a, _b, _c, _d, _e, _f, _g, _h, _j;
560
- return __generator(this, function (_k) {
688
+ return __generator$1(this, function (_k) {
561
689
  switch (_k.label) {
562
690
  case 0:
563
691
  _k.trys.push([0, 2, , 3]);
@@ -615,10 +743,10 @@ function register(options) {
615
743
  * @returns A promise that resolves to a JSON-serializable representation of the PublicKeyCredential.
616
744
  */
617
745
  function authenticate(options) {
618
- return __awaiter(this, void 0, void 0, function () {
746
+ return __awaiter$1(this, void 0, void 0, function () {
619
747
  var getOptions, credential, publicKeyCredential, assertionResponse;
620
748
  var _a;
621
- return __generator(this, function (_b) {
749
+ return __generator$1(this, function (_b) {
622
750
  switch (_b.label) {
623
751
  case 0:
624
752
  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) })); }) });
@@ -659,425 +787,6 @@ var useWebAuthn = function () {
659
787
  };
660
788
  };
661
789
 
662
- var jsxRuntime = {exports: {}};
663
-
664
- var reactJsxRuntime_production = {};
665
-
666
- /**
667
- * @license React
668
- * react-jsx-runtime.production.js
669
- *
670
- * Copyright (c) Meta Platforms, Inc. and affiliates.
671
- *
672
- * This source code is licensed under the MIT license found in the
673
- * LICENSE file in the root directory of this source tree.
674
- */
675
-
676
- var hasRequiredReactJsxRuntime_production;
677
-
678
- function requireReactJsxRuntime_production () {
679
- if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
680
- hasRequiredReactJsxRuntime_production = 1;
681
- var REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
682
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment");
683
- function jsxProd(type, config, maybeKey) {
684
- var key = null;
685
- void 0 !== maybeKey && (key = "" + maybeKey);
686
- void 0 !== config.key && (key = "" + config.key);
687
- if ("key" in config) {
688
- maybeKey = {};
689
- for (var propName in config)
690
- "key" !== propName && (maybeKey[propName] = config[propName]);
691
- } else maybeKey = config;
692
- config = maybeKey.ref;
693
- return {
694
- $$typeof: REACT_ELEMENT_TYPE,
695
- type: type,
696
- key: key,
697
- ref: void 0 !== config ? config : null,
698
- props: maybeKey
699
- };
700
- }
701
- reactJsxRuntime_production.Fragment = REACT_FRAGMENT_TYPE;
702
- reactJsxRuntime_production.jsx = jsxProd;
703
- reactJsxRuntime_production.jsxs = jsxProd;
704
- return reactJsxRuntime_production;
705
- }
706
-
707
- var reactJsxRuntime_development = {};
708
-
709
- /**
710
- * @license React
711
- * react-jsx-runtime.development.js
712
- *
713
- * Copyright (c) Meta Platforms, Inc. and affiliates.
714
- *
715
- * This source code is licensed under the MIT license found in the
716
- * LICENSE file in the root directory of this source tree.
717
- */
718
-
719
- var hasRequiredReactJsxRuntime_development;
720
-
721
- function requireReactJsxRuntime_development () {
722
- if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;
723
- hasRequiredReactJsxRuntime_development = 1;
724
- "production" !== process.env.NODE_ENV &&
725
- (function () {
726
- function getComponentNameFromType(type) {
727
- if (null == type) return null;
728
- if ("function" === typeof type)
729
- return type.$$typeof === REACT_CLIENT_REFERENCE
730
- ? null
731
- : type.displayName || type.name || null;
732
- if ("string" === typeof type) return type;
733
- switch (type) {
734
- case REACT_FRAGMENT_TYPE:
735
- return "Fragment";
736
- case REACT_PROFILER_TYPE:
737
- return "Profiler";
738
- case REACT_STRICT_MODE_TYPE:
739
- return "StrictMode";
740
- case REACT_SUSPENSE_TYPE:
741
- return "Suspense";
742
- case REACT_SUSPENSE_LIST_TYPE:
743
- return "SuspenseList";
744
- case REACT_ACTIVITY_TYPE:
745
- return "Activity";
746
- }
747
- if ("object" === typeof type)
748
- switch (
749
- ("number" === typeof type.tag &&
750
- console.error(
751
- "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
752
- ),
753
- type.$$typeof)
754
- ) {
755
- case REACT_PORTAL_TYPE:
756
- return "Portal";
757
- case REACT_CONTEXT_TYPE:
758
- return (type.displayName || "Context") + ".Provider";
759
- case REACT_CONSUMER_TYPE:
760
- return (type._context.displayName || "Context") + ".Consumer";
761
- case REACT_FORWARD_REF_TYPE:
762
- var innerType = type.render;
763
- type = type.displayName;
764
- type ||
765
- ((type = innerType.displayName || innerType.name || ""),
766
- (type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"));
767
- return type;
768
- case REACT_MEMO_TYPE:
769
- return (
770
- (innerType = type.displayName || null),
771
- null !== innerType
772
- ? innerType
773
- : getComponentNameFromType(type.type) || "Memo"
774
- );
775
- case REACT_LAZY_TYPE:
776
- innerType = type._payload;
777
- type = type._init;
778
- try {
779
- return getComponentNameFromType(type(innerType));
780
- } catch (x) {}
781
- }
782
- return null;
783
- }
784
- function testStringCoercion(value) {
785
- return "" + value;
786
- }
787
- function checkKeyStringCoercion(value) {
788
- try {
789
- testStringCoercion(value);
790
- var JSCompiler_inline_result = !1;
791
- } catch (e) {
792
- JSCompiler_inline_result = true;
793
- }
794
- if (JSCompiler_inline_result) {
795
- JSCompiler_inline_result = console;
796
- var JSCompiler_temp_const = JSCompiler_inline_result.error;
797
- var JSCompiler_inline_result$jscomp$0 =
798
- ("function" === typeof Symbol &&
799
- Symbol.toStringTag &&
800
- value[Symbol.toStringTag]) ||
801
- value.constructor.name ||
802
- "Object";
803
- JSCompiler_temp_const.call(
804
- JSCompiler_inline_result,
805
- "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
806
- JSCompiler_inline_result$jscomp$0
807
- );
808
- return testStringCoercion(value);
809
- }
810
- }
811
- function getTaskName(type) {
812
- if (type === REACT_FRAGMENT_TYPE) return "<>";
813
- if (
814
- "object" === typeof type &&
815
- null !== type &&
816
- type.$$typeof === REACT_LAZY_TYPE
817
- )
818
- return "<...>";
819
- try {
820
- var name = getComponentNameFromType(type);
821
- return name ? "<" + name + ">" : "<...>";
822
- } catch (x) {
823
- return "<...>";
824
- }
825
- }
826
- function getOwner() {
827
- var dispatcher = ReactSharedInternals.A;
828
- return null === dispatcher ? null : dispatcher.getOwner();
829
- }
830
- function UnknownOwner() {
831
- return Error("react-stack-top-frame");
832
- }
833
- function hasValidKey(config) {
834
- if (hasOwnProperty.call(config, "key")) {
835
- var getter = Object.getOwnPropertyDescriptor(config, "key").get;
836
- if (getter && getter.isReactWarning) return false;
837
- }
838
- return void 0 !== config.key;
839
- }
840
- function defineKeyPropWarningGetter(props, displayName) {
841
- function warnAboutAccessingKey() {
842
- specialPropKeyWarningShown ||
843
- ((specialPropKeyWarningShown = true),
844
- console.error(
845
- "%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)",
846
- displayName
847
- ));
848
- }
849
- warnAboutAccessingKey.isReactWarning = true;
850
- Object.defineProperty(props, "key", {
851
- get: warnAboutAccessingKey,
852
- configurable: true
853
- });
854
- }
855
- function elementRefGetterWithDeprecationWarning() {
856
- var componentName = getComponentNameFromType(this.type);
857
- didWarnAboutElementRef[componentName] ||
858
- ((didWarnAboutElementRef[componentName] = true),
859
- console.error(
860
- "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."
861
- ));
862
- componentName = this.props.ref;
863
- return void 0 !== componentName ? componentName : null;
864
- }
865
- function ReactElement(
866
- type,
867
- key,
868
- self,
869
- source,
870
- owner,
871
- props,
872
- debugStack,
873
- debugTask
874
- ) {
875
- self = props.ref;
876
- type = {
877
- $$typeof: REACT_ELEMENT_TYPE,
878
- type: type,
879
- key: key,
880
- props: props,
881
- _owner: owner
882
- };
883
- null !== (void 0 !== self ? self : null)
884
- ? Object.defineProperty(type, "ref", {
885
- enumerable: false,
886
- get: elementRefGetterWithDeprecationWarning
887
- })
888
- : Object.defineProperty(type, "ref", { enumerable: false, value: null });
889
- type._store = {};
890
- Object.defineProperty(type._store, "validated", {
891
- configurable: false,
892
- enumerable: false,
893
- writable: true,
894
- value: 0
895
- });
896
- Object.defineProperty(type, "_debugInfo", {
897
- configurable: false,
898
- enumerable: false,
899
- writable: true,
900
- value: null
901
- });
902
- Object.defineProperty(type, "_debugStack", {
903
- configurable: false,
904
- enumerable: false,
905
- writable: true,
906
- value: debugStack
907
- });
908
- Object.defineProperty(type, "_debugTask", {
909
- configurable: false,
910
- enumerable: false,
911
- writable: true,
912
- value: debugTask
913
- });
914
- Object.freeze && (Object.freeze(type.props), Object.freeze(type));
915
- return type;
916
- }
917
- function jsxDEVImpl(
918
- type,
919
- config,
920
- maybeKey,
921
- isStaticChildren,
922
- source,
923
- self,
924
- debugStack,
925
- debugTask
926
- ) {
927
- var children = config.children;
928
- if (void 0 !== children)
929
- if (isStaticChildren)
930
- if (isArrayImpl(children)) {
931
- for (
932
- isStaticChildren = 0;
933
- isStaticChildren < children.length;
934
- isStaticChildren++
935
- )
936
- validateChildKeys(children[isStaticChildren]);
937
- Object.freeze && Object.freeze(children);
938
- } else
939
- console.error(
940
- "React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."
941
- );
942
- else validateChildKeys(children);
943
- if (hasOwnProperty.call(config, "key")) {
944
- children = getComponentNameFromType(type);
945
- var keys = Object.keys(config).filter(function (k) {
946
- return "key" !== k;
947
- });
948
- isStaticChildren =
949
- 0 < keys.length
950
- ? "{key: someKey, " + keys.join(": ..., ") + ": ...}"
951
- : "{key: someKey}";
952
- didWarnAboutKeySpread[children + isStaticChildren] ||
953
- ((keys =
954
- 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}"),
955
- console.error(
956
- '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} />',
957
- isStaticChildren,
958
- children,
959
- keys,
960
- children
961
- ),
962
- (didWarnAboutKeySpread[children + isStaticChildren] = true));
963
- }
964
- children = null;
965
- void 0 !== maybeKey &&
966
- (checkKeyStringCoercion(maybeKey), (children = "" + maybeKey));
967
- hasValidKey(config) &&
968
- (checkKeyStringCoercion(config.key), (children = "" + config.key));
969
- if ("key" in config) {
970
- maybeKey = {};
971
- for (var propName in config)
972
- "key" !== propName && (maybeKey[propName] = config[propName]);
973
- } else maybeKey = config;
974
- children &&
975
- defineKeyPropWarningGetter(
976
- maybeKey,
977
- "function" === typeof type
978
- ? type.displayName || type.name || "Unknown"
979
- : type
980
- );
981
- return ReactElement(
982
- type,
983
- children,
984
- self,
985
- source,
986
- getOwner(),
987
- maybeKey,
988
- debugStack,
989
- debugTask
990
- );
991
- }
992
- function validateChildKeys(node) {
993
- "object" === typeof node &&
994
- null !== node &&
995
- node.$$typeof === REACT_ELEMENT_TYPE &&
996
- node._store &&
997
- (node._store.validated = 1);
998
- }
999
- var React = React__default,
1000
- REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"),
1001
- REACT_PORTAL_TYPE = Symbol.for("react.portal"),
1002
- REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"),
1003
- REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"),
1004
- REACT_PROFILER_TYPE = Symbol.for("react.profiler");
1005
- var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"),
1006
- REACT_CONTEXT_TYPE = Symbol.for("react.context"),
1007
- REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"),
1008
- REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"),
1009
- REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"),
1010
- REACT_MEMO_TYPE = Symbol.for("react.memo"),
1011
- REACT_LAZY_TYPE = Symbol.for("react.lazy"),
1012
- REACT_ACTIVITY_TYPE = Symbol.for("react.activity"),
1013
- REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"),
1014
- ReactSharedInternals =
1015
- React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,
1016
- hasOwnProperty = Object.prototype.hasOwnProperty,
1017
- isArrayImpl = Array.isArray,
1018
- createTask = console.createTask
1019
- ? console.createTask
1020
- : function () {
1021
- return null;
1022
- };
1023
- React = {
1024
- react_stack_bottom_frame: function (callStackForError) {
1025
- return callStackForError();
1026
- }
1027
- };
1028
- var specialPropKeyWarningShown;
1029
- var didWarnAboutElementRef = {};
1030
- var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(
1031
- React,
1032
- UnknownOwner
1033
- )();
1034
- var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
1035
- var didWarnAboutKeySpread = {};
1036
- reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
1037
- reactJsxRuntime_development.jsx = function (type, config, maybeKey, source, self) {
1038
- var trackActualOwner =
1039
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1040
- return jsxDEVImpl(
1041
- type,
1042
- config,
1043
- maybeKey,
1044
- false,
1045
- source,
1046
- self,
1047
- trackActualOwner
1048
- ? Error("react-stack-top-frame")
1049
- : unknownOwnerDebugStack,
1050
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1051
- );
1052
- };
1053
- reactJsxRuntime_development.jsxs = function (type, config, maybeKey, source, self) {
1054
- var trackActualOwner =
1055
- 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
1056
- return jsxDEVImpl(
1057
- type,
1058
- config,
1059
- maybeKey,
1060
- true,
1061
- source,
1062
- self,
1063
- trackActualOwner
1064
- ? Error("react-stack-top-frame")
1065
- : unknownOwnerDebugStack,
1066
- trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask
1067
- );
1068
- };
1069
- })();
1070
- return reactJsxRuntime_development;
1071
- }
1072
-
1073
- if (process.env.NODE_ENV === 'production') {
1074
- jsxRuntime.exports = requireReactJsxRuntime_production();
1075
- } else {
1076
- jsxRuntime.exports = requireReactJsxRuntime_development();
1077
- }
1078
-
1079
- var jsxRuntimeExports = jsxRuntime.exports;
1080
-
1081
790
  var CAMSContext$1 = createContext(null);
1082
791
  function useCAMSContext$1() {
1083
792
  var context = useContext(CAMSContext$1);
@@ -1091,37 +800,19 @@ function ProtectedRoute(_a) {
1091
800
  var children = _a.children, fallback = _a.fallback, redirectTo = _a.redirectTo;
1092
801
  var _b = useCAMSContext$1(), isAuthenticated = _b.isAuthenticated, isLoading = _b.isLoading;
1093
802
  if (isLoading) {
1094
- return fallback || jsxRuntimeExports.jsx("div", { children: "Loading..." });
803
+ return fallback || jsx("div", { className: 'h-screen flex items-center justify-center', children: "Loading..." });
1095
804
  }
1096
805
  if (!isAuthenticated) {
1097
806
  if (redirectTo && typeof window !== 'undefined') {
1098
807
  window.location.href = redirectTo;
1099
808
  return null;
1100
809
  }
1101
- return fallback || jsxRuntimeExports.jsx("div", { children: "Access denied. Please log in." });
810
+ return fallback || jsx("div", { children: "Access denied. Please log in." });
1102
811
  }
1103
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
812
+ return jsx(Fragment, { children: children });
1104
813
  }
1105
814
 
1106
815
  var CAMSMSALContext = createContext(null);
1107
- var setCookie = function (name, value, days) {
1108
- var expires = new Date(Date.now() + days * 864e5).toUTCString();
1109
- document.cookie = "".concat(name, "=").concat(encodeURIComponent(value), "; expires=").concat(expires, "; path=/; samesite=Lax");
1110
- };
1111
- var getCookie = function (name) {
1112
- var _a;
1113
- return ((_a = document.cookie
1114
- .split("; ")
1115
- .find(function (row) { return row.startsWith(name + "="); })) === null || _a === void 0 ? void 0 : _a.split("=")[1])
1116
- ? decodeURIComponent(document.cookie
1117
- .split("; ")
1118
- .find(function (row) { return row.startsWith(name + "="); })
1119
- .split("=")[1])
1120
- : null;
1121
- };
1122
- var deleteCookie = function (name) {
1123
- document.cookie = name + "=; Max-Age=-99999999; path=/";
1124
- };
1125
816
  var isTokenValid = function (token) {
1126
817
  try {
1127
818
  var payload = JSON.parse(atob(token.split(".")[1]));
@@ -1170,7 +861,7 @@ function CAMSMSALProviderInner(_a) {
1170
861
  localStorage.setItem(auth.storageKey, JSON.stringify({
1171
862
  accessToken: auth.accessToken,
1172
863
  idToken: auth.idToken,
1173
- appCode: auth.appCode
864
+ appCode: auth.appCode,
1174
865
  }));
1175
866
  }
1176
867
  }, [auth.accessToken, auth.idToken, auth.storageKey]);
@@ -1186,8 +877,8 @@ function CAMSMSALProviderInner(_a) {
1186
877
  }
1187
878
  }, [userProfile, profileStorageKey]);
1188
879
  // Enhanced logout that also clears profile
1189
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1190
- return __generator(this, function (_a) {
880
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
881
+ return __generator$1(this, function (_a) {
1191
882
  switch (_a.label) {
1192
883
  case 0: return [4 /*yield*/, auth.logout()];
1193
884
  case 1:
@@ -1201,12 +892,17 @@ function CAMSMSALProviderInner(_a) {
1201
892
  });
1202
893
  }); };
1203
894
  var value = useMemo(function () { return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile })); }, [auth, userProfile]);
1204
- return (jsxRuntimeExports.jsx(CAMSMSALContext.Provider, { value: value, children: children }));
895
+ return (jsx(CAMSMSALContext.Provider, { value: value, children: children }));
1205
896
  }
1206
897
  function CAMSMSALProvider(props) {
898
+ var _a;
1207
899
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
900
+ // Ensure crypto is available before creating MSAL instance
901
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
902
+ throw new Error("Crypto API not available. Polyfill failed to load.");
903
+ }
1208
904
  var instance = msalInstance || new PublicClientApplication(msalConfig);
1209
- return (jsxRuntimeExports.jsx(MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSMSALProviderInner, __assign({}, props)) }));
905
+ return (jsx(MsalProvider, { instance: instance, children: jsx(CAMSMSALProviderInner, __assign({}, props)) }));
1210
906
  }
1211
907
  function useCAMSMSALContext() {
1212
908
  var context = useContext(CAMSMSALContext);
@@ -1223,9 +919,9 @@ var ClientOnly = function (_a) {
1223
919
  setHasMounted(true);
1224
920
  }, []);
1225
921
  if (!hasMounted) {
1226
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: fallback });
922
+ return jsx(Fragment, { children: fallback });
1227
923
  }
1228
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
924
+ return jsx(Fragment, { children: children });
1229
925
  };
1230
926
 
1231
927
  var CAMSContext = createContext(null);
@@ -1246,15 +942,15 @@ function CAMSProviderCore(props) {
1246
942
  ? __assign(__assign({}, props), { appCode: appCode })
1247
943
  : { appCode: "" });
1248
944
  var msalAuth = useCAMSMSALAuth(mode === "MSAL"
1249
- ? __assign(__assign({}, props), { appCode: appCode })
1250
- : { appCode: "" });
945
+ ? __assign(__assign({}, props), { appCode: appCode, ValidateUserEndpoint: props.ValidateUserEndpoint })
946
+ : { appCode: "", ValidateUserEndpoint: "" });
1251
947
  var auth = mode === "REGULAR" ? regularAuth : msalAuth;
1252
948
  var profileStorageKey = "".concat(auth.storageKey, "-PROFILE");
1253
949
  var getInitialProfile = function () {
1254
950
  if (typeof window === "undefined")
1255
951
  return null;
1256
952
  try {
1257
- var storedProfile = getCookie$1(profileStorageKey);
953
+ var storedProfile = getCookie(profileStorageKey);
1258
954
  return storedProfile ? JSON.parse(storedProfile) : null;
1259
955
  }
1260
956
  catch (_a) {
@@ -1264,7 +960,7 @@ function CAMSProviderCore(props) {
1264
960
  var _a = useState(getInitialProfile), userProfile = _a[0], setUserProfile = _a[1];
1265
961
  useEffect(function () {
1266
962
  if (typeof window !== "undefined") {
1267
- var storedProfile = getCookie$1(profileStorageKey);
963
+ var storedProfile = getCookie(profileStorageKey);
1268
964
  if (storedProfile) {
1269
965
  try {
1270
966
  setUserProfile(JSON.parse(storedProfile));
@@ -1276,47 +972,41 @@ function CAMSProviderCore(props) {
1276
972
  useEffect(function () {
1277
973
  if (typeof window !== "undefined") {
1278
974
  if (userProfile) {
1279
- setCookie$1(profileStorageKey, JSON.stringify(userProfile), 1);
975
+ setCookie(profileStorageKey, JSON.stringify(userProfile), 1);
1280
976
  }
1281
977
  else {
1282
- deleteCookie$1(profileStorageKey);
978
+ deleteCookie(profileStorageKey);
1283
979
  }
1284
980
  }
1285
981
  }, [userProfile, profileStorageKey]);
1286
- var enhancedLogout = function () { return __awaiter(_this, void 0, void 0, function () {
1287
- return __generator(this, function (_a) {
982
+ var enhancedLogout = function () { return __awaiter$1(_this, void 0, void 0, function () {
983
+ return __generator$1(this, function (_a) {
1288
984
  switch (_a.label) {
1289
985
  case 0: return [4 /*yield*/, auth.logout()];
1290
986
  case 1:
1291
987
  _a.sent();
1292
988
  setUserProfile(null);
1293
989
  if (typeof window !== "undefined") {
1294
- deleteCookie$1(profileStorageKey);
990
+ deleteCookie(profileStorageKey);
1295
991
  }
1296
992
  return [2 /*return*/];
1297
993
  }
1298
994
  });
1299
995
  }); };
1300
- // Handle MFA completion for MSAL mode
1301
996
  useEffect(function () {
1302
997
  if (mode === "MSAL" &&
1303
998
  "requiresMFA" in auth &&
1304
999
  !auth.requiresMFA &&
1305
1000
  auth.isAuthenticated) {
1306
- // MFA completed, extract profile from localStorage
1307
1001
  var storedData = localStorage.getItem(auth.storageKey);
1308
1002
  if (storedData) {
1309
1003
  try {
1310
1004
  var parsed = JSON.parse(storedData);
1311
- console.log("Parsed storage data:", parsed);
1312
1005
  if (parsed.userProfile) {
1313
- console.log("Setting user profile:", parsed.userProfile);
1314
1006
  setUserProfile(parsed.userProfile);
1315
1007
  }
1316
1008
  }
1317
- catch (e) {
1318
- console.error("Error parsing stored data:", e);
1319
- }
1009
+ catch (_a) { }
1320
1010
  }
1321
1011
  }
1322
1012
  }, [
@@ -1327,25 +1017,32 @@ function CAMSProviderCore(props) {
1327
1017
  userProfile,
1328
1018
  ]);
1329
1019
  var value = useMemo(function () {
1330
- return (__assign(__assign({}, auth), { logout: enhancedLogout, userProfile: userProfile, setUserProfile: setUserProfile, authMode: mode }));
1331
- }, [auth, userProfile, mode]);
1332
- return jsxRuntimeExports.jsx(CAMSContext.Provider, { value: value, children: children });
1020
+ auth.logout; var authRest = __rest(auth, ["logout"]);
1021
+ return __assign(__assign({}, authRest), { logout: enhancedLogout, user: userProfile, setUserProfile: setUserProfile, authMode: mode, onAuthSuccess: mode === "MSAL"
1022
+ ? props.onAuthSuccess
1023
+ : undefined, onAuthError: mode === "MSAL" ? props.onAuthError : undefined });
1024
+ }, [auth, userProfile, mode, props]);
1025
+ return jsx(CAMSContext.Provider, { value: value, children: children });
1333
1026
  }
1334
1027
  function UnifiedCAMSProvider(props) {
1028
+ var _a;
1335
1029
  // Validate appCode is a valid GUID
1336
1030
  var appCodeValidation = GuidSchema.safeParse(props.appCode);
1337
1031
  if (!appCodeValidation.success) {
1338
- throw new Error("Invalid appCode: ".concat(appCodeValidation.error.issues[0].message));
1032
+ throw new Error("Invalid CAS APP CODE: ".concat(appCodeValidation.error.issues[0].message));
1339
1033
  }
1340
1034
  if (props.mode === "MSAL") {
1341
1035
  var msalConfig = props.msalConfig, msalInstance = props.msalInstance;
1036
+ if (typeof window !== "undefined" && !((_a = window.crypto) === null || _a === void 0 ? void 0 : _a.subtle)) {
1037
+ throw new Error("Crypto API not available. Polyfill failed to load.");
1038
+ }
1342
1039
  var instance = msalInstance || new PublicClientApplication(msalConfig);
1343
- return (jsxRuntimeExports.jsx(MsalProvider, { instance: instance, children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1040
+ return (jsx(MsalProvider, { instance: instance, children: jsx(CAMSProviderCore, __assign({}, props)) }));
1344
1041
  }
1345
- return (jsxRuntimeExports.jsx(ClientOnly, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(CAMSProviderCore, __assign({}, props)) }));
1042
+ return (jsx(ClientOnly, { fallback: jsx("div", { className: "h-screen flex items-center justify-center", children: "Loading..." }), children: jsx(CAMSProviderCore, __assign({}, props)) }));
1346
1043
  }
1347
1044
  // Backward compatibility exports
1348
- var CAMSProvider = function (props) { return (jsxRuntimeExports.jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1045
+ var CAMSProvider = function (props) { return (jsx(UnifiedCAMSProvider, __assign({}, props, { mode: "REGULAR" }))); };
1349
1046
 
1350
1047
  /** A special constant with type `never` */
1351
1048
  function $constructor(name, initializer, params) {
@@ -1491,30 +1188,30 @@ function cn() {
1491
1188
 
1492
1189
  function InputOTP(_a) {
1493
1190
  var className = _a.className, containerClassName = _a.containerClassName, props = __rest(_a, ["className", "containerClassName"]);
1494
- return (jsxRuntimeExports.jsx(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)));
1191
+ return (jsx(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)));
1495
1192
  }
1496
1193
  function InputOTPGroup(_a) {
1497
1194
  var className = _a.className, props = __rest(_a, ["className"]);
1498
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1195
+ return (jsx("div", __assign({ "data-slot": "input-otp-group", className: cn("flex items-center", className) }, props)));
1499
1196
  }
1500
1197
  function InputOTPSlot(_a) {
1501
1198
  var _b;
1502
1199
  var index = _a.index, className = _a.className, props = __rest(_a, ["index", "className"]);
1503
1200
  var inputOTPContext = React.useContext(OTPInputContext);
1504
1201
  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;
1505
- 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" }) }))] })));
1202
+ return (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 && (jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) }))] })));
1506
1203
  }
1507
1204
 
1508
1205
  function Label(_a) {
1509
1206
  var className = _a.className, props = __rest(_a, ["className"]);
1510
- return (jsxRuntimeExports.jsx(LabelPrimitive.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)));
1207
+ return (jsx(LabelPrimitive.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)));
1511
1208
  }
1512
1209
 
1513
1210
  var Form = FormProvider;
1514
1211
  var FormFieldContext = React.createContext({});
1515
1212
  var FormField = function (_a) {
1516
1213
  var props = __rest(_a, []);
1517
- return (jsxRuntimeExports.jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsxRuntimeExports.jsx(Controller, __assign({}, props)) }));
1214
+ return (jsx(FormFieldContext.Provider, { value: { name: props.name }, children: jsx(Controller, __assign({}, props)) }));
1518
1215
  };
1519
1216
  var useFormField = function () {
1520
1217
  var fieldContext = React.useContext(FormFieldContext);
@@ -1532,17 +1229,17 @@ var FormItemContext = React.createContext({});
1532
1229
  function FormItem(_a) {
1533
1230
  var className = _a.className, props = __rest(_a, ["className"]);
1534
1231
  var id = React.useId();
1535
- return (jsxRuntimeExports.jsx(FormItemContext.Provider, { value: { id: id }, children: jsxRuntimeExports.jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1232
+ return (jsx(FormItemContext.Provider, { value: { id: id }, children: jsx("div", __assign({ "data-slot": "form-item", className: cn("grid gap-2", className) }, props)) }));
1536
1233
  }
1537
1234
  function FormLabel(_a) {
1538
1235
  var className = _a.className, props = __rest(_a, ["className"]);
1539
1236
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId;
1540
- return (jsxRuntimeExports.jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1237
+ return (jsx(Label, __assign({ "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive", className), htmlFor: formItemId }, props)));
1541
1238
  }
1542
1239
  function FormControl(_a) {
1543
1240
  var props = __rest(_a, []);
1544
1241
  var _b = useFormField(), error = _b.error, formItemId = _b.formItemId, formDescriptionId = _b.formDescriptionId, formMessageId = _b.formMessageId;
1545
- return (jsxRuntimeExports.jsx(Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1242
+ return (jsx(Slot, __assign({ "data-slot": "form-control", id: formItemId, "aria-describedby": !error
1546
1243
  ? "".concat(formDescriptionId)
1547
1244
  : "".concat(formDescriptionId, " ").concat(formMessageId), "aria-invalid": !!error }, props)));
1548
1245
  }
@@ -1554,36 +1251,36 @@ function FormMessage(_a) {
1554
1251
  if (!body) {
1555
1252
  return null;
1556
1253
  }
1557
- return (jsxRuntimeExports.jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1254
+ return (jsx("p", __assign({ "data-slot": "form-message", id: formMessageId, className: cn("text-destructive text-sm", className) }, props, { children: body })));
1558
1255
  }
1559
1256
 
1560
1257
  function Card(_a) {
1561
1258
  var className = _a.className, props = __rest(_a, ["className"]);
1562
- 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)));
1259
+ return (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)));
1563
1260
  }
1564
1261
  function CardHeader(_a) {
1565
1262
  var className = _a.className, props = __rest(_a, ["className"]);
1566
- 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)));
1263
+ return (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)));
1567
1264
  }
1568
1265
  function CardTitle(_a) {
1569
1266
  var className = _a.className, props = __rest(_a, ["className"]);
1570
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1267
+ return (jsx("div", __assign({ "data-slot": "card-title", className: cn("leading-none font-semibold", className) }, props)));
1571
1268
  }
1572
1269
  function CardDescription(_a) {
1573
1270
  var className = _a.className, props = __rest(_a, ["className"]);
1574
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1271
+ return (jsx("div", __assign({ "data-slot": "card-description", className: cn("text-muted-foreground text-sm", className) }, props)));
1575
1272
  }
1576
1273
  function CardAction(_a) {
1577
1274
  var className = _a.className, props = __rest(_a, ["className"]);
1578
- 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)));
1275
+ return (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)));
1579
1276
  }
1580
1277
  function CardContent(_a) {
1581
1278
  var className = _a.className, props = __rest(_a, ["className"]);
1582
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1279
+ return (jsx("div", __assign({ "data-slot": "card-content", className: cn("px-6", className) }, props)));
1583
1280
  }
1584
1281
  function CardFooter(_a) {
1585
1282
  var className = _a.className, props = __rest(_a, ["className"]);
1586
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1283
+ return (jsx("div", __assign({ "data-slot": "card-footer", className: cn("flex items-center px-6 [.border-t]:pt-6", className) }, props)));
1587
1284
  }
1588
1285
 
1589
1286
  var GenericOTPVerifier = function (_a) {
@@ -1598,18 +1295,18 @@ var GenericOTPVerifier = function (_a) {
1598
1295
  resolver: a$1(Schema),
1599
1296
  defaultValues: (_c = {}, _c[fieldName] = "", _c),
1600
1297
  });
1601
- 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(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
1298
+ return (jsxs(Card, { className: "relative rounded space-y-4 p-0 m-0 py-8 space-x-6", children: [jsxs(CardHeader, { className: "flex items-center justify-center flex-col gap-2 mt-2 text-center mb-8", children: [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: jsx(RectangleEllipsis, {}) }), jsx(CardTitle, { className: "font-bold text-emerald-700 text-2xl", children: "One-Time-Password (OTP)" }), attemptCount > 0 && (jsx("div", { className: "text-sm mt-2 ".concat(isMaxAttemptsReached ? "text-red-600" : "text-orange-600"), children: isMaxAttemptsReached
1602
1299
  ? "Maximum attempts reached. Please try again later."
1603
- : "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) {
1300
+ : "Attempt ".concat(attemptCount, "/3 - ").concat(remainingAttempts, " attempts remaining") }))] }), jsx(CardContent, { className: "space-y-6", children: jsx("form", { className: "flex items-center justify-center my-4 ", children: jsx(Form, __assign({}, form, { children: jsx(FormField, { control: form.control, name: fieldName, render: function () { return (jsxs(FormItem, { className: "flex items-center justify-center flex-col gap-y-1 space-y-4", children: [jsx(FormControl, { children: jsx(InputOTP, { maxLength: 6, value: value, disabled: isMaxAttemptsReached, onChange: function (authenticationValue) {
1604
1301
  setValue(authenticationValue);
1605
1302
  if (authenticationValue.length === 6 &&
1606
1303
  !isMaxAttemptsReached) {
1607
1304
  setLoading === null || setLoading === void 0 ? void 0 : setLoading(true);
1608
1305
  onChangeOTP(authenticationValue);
1609
1306
  }
1610
- }, pattern: 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
1307
+ }, pattern: REGEXP_ONLY_DIGITS, children: jsx(InputOTPGroup, { className: "gap-3", children: __spreadArray([], Array(6), true).map(function (_, idx) { return (jsx(InputOTPSlot, { className: "border border-l-2 ".concat(isMaxAttemptsReached
1611
1308
  ? "opacity-50 cursor-not-allowed"
1612
- : ""), index: idx }, idx + 1)); }) }) }) }), jsxRuntimeExports.jsx(FormMessage, {})] })); } }) })) }) })] }));
1309
+ : ""), index: idx }, idx + 1)); }) }) }) }), jsx(FormMessage, {})] })); } }) })) }) })] }));
1613
1310
  };
1614
1311
 
1615
1312
  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";
@@ -1641,150 +1338,55 @@ var buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespa
1641
1338
  function Button(_a) {
1642
1339
  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"]);
1643
1340
  var Comp = asChild ? Slot : "button";
1644
- return (jsxRuntimeExports.jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1341
+ return (jsx(Comp, __assign({ "data-slot": "button", className: cn(buttonVariants({ variant: variant, size: size, className: className })) }, props)));
1645
1342
  }
1646
1343
 
1647
1344
  function Dialog(_a) {
1648
1345
  var props = __rest(_a, []);
1649
- return jsxRuntimeExports.jsx(DialogPrimitive.Root, __assign({ "data-slot": "dialog" }, props));
1346
+ return jsx(DialogPrimitive.Root, __assign({ "data-slot": "dialog" }, props));
1650
1347
  }
1651
1348
  function DialogPortal(_a) {
1652
1349
  var props = __rest(_a, []);
1653
- return jsxRuntimeExports.jsx(DialogPrimitive.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1350
+ return jsx(DialogPrimitive.Portal, __assign({ "data-slot": "dialog-portal" }, props));
1654
1351
  }
1655
1352
  function DialogOverlay(_a) {
1656
1353
  var className = _a.className, props = __rest(_a, ["className"]);
1657
- return (jsxRuntimeExports.jsx(DialogPrimitive.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)));
1354
+ return (jsx(DialogPrimitive.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)));
1658
1355
  }
1659
1356
  function DialogContent(_a) {
1660
1357
  var className = _a.className, children = _a.children, _b = _a.showCloseButton, showCloseButton = _b === void 0 ? true : _b, props = __rest(_a, ["className", "children", "showCloseButton"]);
1661
- return (jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsxRuntimeExports.jsx(DialogOverlay, {}), jsxRuntimeExports.jsxs(DialogPrimitive.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.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(XIcon, {}), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1358
+ return (jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [jsx(DialogOverlay, {}), jsxs(DialogPrimitive.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 && (jsxs(DialogPrimitive.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: [jsx(XIcon, {}), jsx("span", { className: "sr-only", children: "Close" })] }))] }))] }));
1662
1359
  }
1663
1360
  function DialogHeader(_a) {
1664
1361
  var className = _a.className, props = __rest(_a, ["className"]);
1665
- return (jsxRuntimeExports.jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1362
+ return (jsx("div", __assign({ "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className) }, props)));
1666
1363
  }
1667
1364
  function DialogTitle(_a) {
1668
1365
  var className = _a.className, props = __rest(_a, ["className"]);
1669
- return (jsxRuntimeExports.jsx(DialogPrimitive.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1366
+ return (jsx(DialogPrimitive.Title, __assign({ "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className) }, props)));
1670
1367
  }
1671
1368
 
1672
- 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})]})});
1673
-
1674
- function styleInject(css, ref) {
1675
- if ( ref === void 0 ) ref = {};
1676
- var insertAt = ref.insertAt;
1677
-
1678
- if (typeof document === 'undefined') { return; }
1679
-
1680
- var head = document.head || document.getElementsByTagName('head')[0];
1681
- var style = document.createElement('style');
1682
- style.type = 'text/css';
1683
-
1684
- if (insertAt === 'top') {
1685
- if (head.firstChild) {
1686
- head.insertBefore(style, head.firstChild);
1687
- } else {
1688
- head.appendChild(style);
1689
- }
1690
- } else {
1691
- head.appendChild(style);
1692
- }
1693
-
1694
- if (style.styleSheet) {
1695
- style.styleSheet.cssText = css;
1696
- } else {
1697
- style.appendChild(document.createTextNode(css));
1698
- }
1699
- }
1700
-
1701
- 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}";
1702
- styleInject(css_248z);
1369
+ 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})=>jsx("div",{className:a,style:{"--uib-size":r+"px","--uib-color":l,"--uib-speed":d+"s","--uib-stroke":o+"px"},children:jsxs("div",{className:i,children:[jsx("div",{className:c}),jsx("div",{className:c}),jsx("div",{className:c}),jsx("div",{className:c})]})});
1703
1370
 
1704
1371
  var LoadingSpinner = function (_a) {
1705
1372
  var loadingText = _a.loadingText;
1706
- return (jsxRuntimeExports.jsxs("div", { className: "flex flex-col justify-center items-center", 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..." }))] }));
1373
+ return (jsxs("div", { className: "flex flex-col justify-center items-center h-full w-full py-10", children: [jsx("script", { type: "module", defer: true, src: "https://cdn.jsdelivr.net/npm/ldrs/dist/auto/waveform.js" }), jsx(r, { size: "35", stroke: "3.5", speed: "1", color: "green" }), loadingText && (jsx("p", { className: "text-center font-semibold mt-3", children: "Loading..." }))] }));
1707
1374
  };
1708
1375
 
1709
1376
  var AuthSuccessAnimation = function (_a) {
1710
1377
  var onComplete = _a.onComplete;
1711
- return (jsxRuntimeExports.jsxs(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(motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsxRuntimeExports.jsx(CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxRuntimeExports.jsxs(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(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" })] }));
1378
+ return (jsxs(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: [jsx(motion.div, { initial: { scale: 0 }, animate: { scale: 1 }, transition: { delay: 0.2, duration: 0.6, type: "spring", stiffness: 200 }, children: jsx(CheckCircle, { className: "w-20 h-20 text-green-500" }) }), jsxs(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: [jsx("h2", { className: "text-2xl font-bold text-green-600", children: "Authentication Successful!" }), jsx("p", { className: "text-gray-600", children: "Redirecting you to the application..." })] }), jsx(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" })] }));
1712
1379
  };
1713
1380
 
1714
- // Function to parse userAgent and generate a device ID
1715
- var GenerateDeviceId = function () {
1716
- var _a;
1717
- if (typeof window === "undefined" || !window.navigator) {
1718
- return "unknown-device";
1719
- }
1720
- var userAgent = window.navigator.userAgent;
1721
- var deviceId = "";
1722
- // Parse browser, version, OS, and device type
1723
- var browserMatch = Array.from(userAgent.matchAll(/(Chrome|Firefox|Safari|Edge|Opera)\/([\d.]+)/gi));
1724
- var osMatch = Array.from(userAgent.matchAll(/\(([^)]+)\)/g));
1725
- var isMobile = /Mobile|Android|iPhone|iPad/i.test(userAgent);
1726
- // Browser info
1727
- if (browserMatch.length > 0) {
1728
- var _b = browserMatch[0], browserName = _b[1], browserVersion = _b[2];
1729
- var majorVersion = browserVersion.split(".")[0];
1730
- deviceId += "".concat(browserName, "-").concat(majorVersion);
1731
- }
1732
- else {
1733
- deviceId += "UnknownBrowser";
1734
- }
1735
- // OS info
1736
- if (osMatch.length > 0) {
1737
- var osInfo = osMatch[0][1]
1738
- .split(";")[0]
1739
- .trim()
1740
- .replace(/[\s/()]/g, "_");
1741
- deviceId += "_".concat(osInfo);
1742
- }
1743
- else {
1744
- deviceId += "_UnknownOS";
1745
- }
1746
- // Device type
1747
- deviceId += isMobile ? "_Mobile" : "_Desktop";
1748
- // Add a simple hash of userAgent for uniqueness
1749
- var hash = btoa(userAgent).slice(0, 8);
1750
- deviceId += "_".concat(hash);
1751
- return (_a = deviceId.replace(/[^a-zA-Z0-9-_]/g, "_")) !== null && _a !== void 0 ? _a : "unknown-device";
1752
- };
1753
- var APIHeaders = {
1754
- "X-DEVICE-ID": GenerateDeviceId(),
1755
- "X-API-VERSION": "1.0",
1756
- };
1757
-
1758
- // Creates an Axios instance with a base URL determined by the environment (production or development).
1759
- var axiosInstance = axios.create({
1760
- httpsAgent: new https.Agent({ rejectUnauthorized: false }),
1761
- headers: __assign({ "Content-Type": "application/json" }, APIHeaders),
1762
- });
1763
- // Intercepts outgoing requests to add authorization token, version header, and timeout settings.
1764
- axiosInstance.interceptors.request.use(function (config) {
1765
- var _a;
1766
- config.timeout = Number((_a = process.env.NEXT_PUBLIC_API_TIMEOUT) !== null && _a !== void 0 ? _a : 605000);
1767
- config.timeoutErrorMessage = "Operation Timed Out"; // Custom error message for timeouts.
1768
- return config; // Returns the modified request configuration.
1769
- }, function (axiosError) {
1770
- var _a, _b;
1771
- // Handles request errors.
1772
- return {
1773
- status: (_a = axiosError.response) === null || _a === void 0 ? void 0 : _a.status, // Extracts HTTP status from the error response.
1774
- message: axiosError.message, // Extracts the error message.
1775
- data: (_b = axiosError.response) === null || _b === void 0 ? void 0 : _b.data, // Extracts response data from the error.
1776
- };
1777
- });
1778
-
1779
1381
  var MAX_ATTEMPTS = 3;
1780
1382
  var useOTPHandler = function (_a) {
1781
- var provider = _a.provider, accessToken = _a.accessToken, idToken = _a.idToken, appCode = _a.appCode, authenticationType = _a.authenticationType, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1383
+ var email = _a.email, appCode = _a.appCode, instCode = _a.instCode, MFAEndpoint = _a.MFAEndpoint, onAuthComplete = _a.onAuthComplete;
1782
1384
  var _b = useState(false), loading = _b[0], setLoading = _b[1];
1783
1385
  var _c = useState(0), attemptCount = _c[0], setAttemptCount = _c[1];
1784
1386
  var _d = useState(false), isMaxAttemptsReached = _d[0], setIsMaxAttemptsReached = _d[1];
1785
- var handleSubmitOTP = useMemo(function () { return function (authenticationValue) { return __awaiter(void 0, void 0, void 0, function () {
1786
- var currentAttempt, response, error_1, currentAttempt;
1787
- return __generator(this, function (_a) {
1387
+ var handleSubmitOTP = useMemo(function () { return function (authenticationValue) { return __awaiter$1(void 0, void 0, void 0, function () {
1388
+ var currentAttempt, authentication, response, error_1, currentAttempt;
1389
+ return __generator$1(this, function (_a) {
1788
1390
  switch (_a.label) {
1789
1391
  case 0:
1790
1392
  if (isMaxAttemptsReached) {
@@ -1799,18 +1401,15 @@ var useOTPHandler = function (_a) {
1799
1401
  setLoading(true);
1800
1402
  currentAttempt = attemptCount + 1;
1801
1403
  setAttemptCount(currentAttempt);
1802
- if (authenticationType === null)
1803
- return [2 /*return*/, false];
1804
- return [4 /*yield*/, axiosInstance.post(MFAEndpoint || "/api/auth/verify-mfa", {
1805
- provider: provider,
1806
- accessToken: accessToken,
1807
- idToken: idToken,
1808
- authenticationType: authenticationType,
1809
- MFACode: authenticationValue,
1404
+ authentication = new CAMSMFAAuthenticator();
1405
+ return [4 /*yield*/, authentication.VerifyMFAOTP({
1810
1406
  appCode: appCode,
1811
- })];
1407
+ instCode: instCode,
1408
+ email: email,
1409
+ MFACode: authenticationValue,
1410
+ }, MFAEndpoint || "")];
1812
1411
  case 2:
1813
- response = (_a.sent()).data;
1412
+ response = _a.sent();
1814
1413
  if (response) {
1815
1414
  onAuthComplete(true, response);
1816
1415
  return [2 /*return*/, true];
@@ -1846,15 +1445,7 @@ var useOTPHandler = function (_a) {
1846
1445
  case 5: return [2 /*return*/];
1847
1446
  }
1848
1447
  });
1849
- }); }; }, [
1850
- accessToken,
1851
- idToken,
1852
- authenticationType,
1853
- onAuthComplete,
1854
- MFAEndpoint,
1855
- attemptCount,
1856
- isMaxAttemptsReached,
1857
- ]);
1448
+ }); }; }, [onAuthComplete, MFAEndpoint, attemptCount, isMaxAttemptsReached]);
1858
1449
  var resetAttempts = useCallback(function () {
1859
1450
  setAttemptCount(0);
1860
1451
  setIsMaxAttemptsReached(false);
@@ -1874,23 +1465,19 @@ var useCredentialsHandler = function (onAuthComplete) {
1874
1465
  var _b = useState(0), attemptCount = _b[0], setAttemptCount = _b[1];
1875
1466
  var _c = useState(false), isMaxAttemptsReached = _c[0], setIsMaxAttemptsReached = _c[1];
1876
1467
  var handleSubmitCredentials = useMemo(function () {
1877
- return function (CredAuthEndpoint, credentials, appCode) { return __awaiter(void 0, void 0, void 0, function () {
1878
- var currentAttempt, response, error_2, currentAttempt;
1879
- return __generator(this, function (_a) {
1468
+ return function (CredentialsAuthEndpoint, credentials) { return __awaiter$1(void 0, void 0, void 0, function () {
1469
+ var currentAttempt, authenticator, response, error_2, currentAttempt;
1470
+ return __generator$1(this, function (_a) {
1880
1471
  switch (_a.label) {
1881
1472
  case 0:
1882
1473
  _a.trys.push([0, 2, 3, 4]);
1883
1474
  setLoading(true);
1884
1475
  currentAttempt = attemptCount + 1;
1885
1476
  setAttemptCount(currentAttempt);
1886
- return [4 /*yield*/, axiosInstance.post(CredAuthEndpoint, {
1887
- username: credentials.username,
1888
- password: credentials.password,
1889
- MFACode: credentials.MFACode,
1890
- appCode: appCode,
1891
- })];
1477
+ authenticator = new CAMSMFAAuthenticator();
1478
+ return [4 /*yield*/, authenticator.LoginADCredentials(credentials, CredentialsAuthEndpoint)];
1892
1479
  case 1:
1893
- response = (_a.sent()).data;
1480
+ response = _a.sent();
1894
1481
  if (response) {
1895
1482
  onAuthComplete(true, response);
1896
1483
  return [2 /*return*/, true];
@@ -1913,10 +1500,6 @@ var useCredentialsHandler = function (onAuthComplete) {
1913
1500
  currentAttempt = attemptCount + 1;
1914
1501
  if (currentAttempt >= MAX_ATTEMPTS) {
1915
1502
  setIsMaxAttemptsReached(true);
1916
- onAuthComplete(false, error_2.response.data);
1917
- }
1918
- else {
1919
- onAuthComplete(false, error_2.response.data);
1920
1503
  }
1921
1504
  onAuthComplete(false, error_2.response.data);
1922
1505
  return [2 /*return*/, false];
@@ -1940,63 +1523,33 @@ var useCredentialsHandler = function (onAuthComplete) {
1940
1523
  };
1941
1524
 
1942
1525
  var MFAOptions = function (_a) {
1526
+ var _b, _c, _d, _e, _f;
1943
1527
  var onComplete = _a.onComplete, onAuthFailed = _a.onAuthFailed, MFAEndpoints = _a.MFAEndpoints, usePassKey = _a.usePassKey;
1944
- var _b = useState(""), value = _b[0], setValue = _b[1];
1945
- var _c = useState(false), otpVisible = _c[0], setOtpVisible = _c[1];
1946
- var _d = useState(false), showSuccessAnimation = _d[0], setShowSuccessAnimation = _d[1];
1947
- var _e = useState(null), authType = _e[0], setAuthType = _e[1];
1528
+ var _g = useState(""), value = _g[0], setValue = _g[1];
1529
+ var _h = useState(false), otpVisible = _h[0], setOtpVisible = _h[1];
1530
+ var _j = useState(false), showSuccessAnimation = _j[0], setShowSuccessAnimation = _j[1];
1531
+ var _k = useState(null), authType = _k[0], setAuthType = _k[1];
1948
1532
  var context = useCAMSContext();
1949
- var _f = context.authMode === "MSAL" && "sendEmailOTP" in context
1533
+ var _l = context.authMode === "MSAL" && "sendEmailOTP" in context
1950
1534
  ? context
1951
- : { sendEmailOTP: null, completeMFA: null, logout: function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
1535
+ : { completeMFA: null, logout: function () { return __awaiter$1(void 0, void 0, void 0, function () { return __generator$1(this, function (_a) {
1952
1536
  return [2 /*return*/];
1953
- }); }); } }, sendEmailOTP = _f.sendEmailOTP, completeMFA = _f.completeMFA, logout = _f.logout;
1954
- var accessToken = context.authMode === "MSAL" ? context.accessToken : "";
1955
- var idToken = context.authMode === "MSAL" ? context.idToken : "";
1537
+ }); }); } }, completeMFA = _l.completeMFA, logout = _l.logout;
1538
+ context.authMode === "MSAL" ? context.accessToken : "";
1539
+ context.authMode === "MSAL" ? context.idToken : "";
1956
1540
  var authenticate = useWebAuthn().authenticate;
1957
- var handleFIDOLogin = function () { return __awaiter(void 0, void 0, void 0, function () {
1958
- var options, assertionResponse, error_1;
1959
- return __generator(this, function (_a) {
1960
- switch (_a.label) {
1961
- case 0:
1962
- _a.trys.push([0, 4, , 5]);
1963
- // 1. Fetch authentication challenge from your server
1964
- console.log("Requesting authentication challenge from server...");
1965
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RetrieveAuthChallenge, {})];
1966
- case 1:
1967
- options = (_a.sent()).data;
1968
- console.log("Received challenge:", options);
1969
- // 2. Call the SDK to trigger the browser's passkey authentication UI
1970
- console.log("Calling SDK authenticate function...");
1971
- return [4 /*yield*/, authenticate(__assign(__assign({}, options), { userVerification: "discouraged" }))];
1972
- case 2:
1973
- assertionResponse = _a.sent();
1974
- console.log("Authentication assertion received from client:", assertionResponse);
1975
- // 3. Send the assertion back to the server for verification
1976
- console.log("Sending assertion to server for verification...");
1977
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.AuthChallengeVerify, assertionResponse)];
1978
- case 3:
1979
- _a.sent();
1980
- toast.success("🔑 Sign-in successful!");
1981
- return [3 /*break*/, 5];
1982
- case 4:
1983
- error_1 = _a.sent();
1984
- console.error("Authentication failed:", error_1);
1985
- toast.error("❌ Could not sign in.");
1986
- return [3 /*break*/, 5];
1987
- case 5: return [2 /*return*/];
1988
- }
1989
- });
1990
- }); };
1991
- var _g = useOTPHandler({
1992
- accessToken: accessToken || "",
1993
- idToken: idToken || "",
1994
- provider: "MSAL",
1541
+ var authenticator = new CAMSMFAAuthenticator();
1542
+ Logger.debug("User context:", {
1543
+ user: context.user,
1544
+ profile: (_b = context.user) === null || _b === void 0 ? void 0 : _b.profile,
1545
+ email: (_d = (_c = context.user) === null || _c === void 0 ? void 0 : _c.profile) === null || _d === void 0 ? void 0 : _d.email,
1546
+ });
1547
+ var _m = useOTPHandler({
1548
+ email: ((_f = (_e = context.user) === null || _e === void 0 ? void 0 : _e.profile) === null || _f === void 0 ? void 0 : _f.email) || context.email,
1995
1549
  appCode: context.appCode || "",
1996
- authenticationType: authType,
1997
- MFAEndpoint: MFAEndpoints.ValidateMFA,
1550
+ MFAEndpoint: MFAEndpoints.ValidateUserMFA,
1998
1551
  onAuthComplete: function (state, data) {
1999
- console.log("Completed Auth. Handling MFA", state);
1552
+ console.log("Completed Auth. Handling MFA", state, data);
2000
1553
  if (state) {
2001
1554
  // Call completeMFA to update context state
2002
1555
  if (completeMFA && data) {
@@ -2006,11 +1559,11 @@ var MFAOptions = function (_a) {
2006
1559
  });
2007
1560
  }
2008
1561
  setShowSuccessAnimation(true);
2009
- 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(ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
1562
+ toast.success(jsxs("div", { className: "flex items-center gap-2 text-sm text-green-600 bg-green-50 p-3 rounded-lg", children: [jsx(ShieldCheck, { className: "w-4 h-4" }), jsxs("span", { children: ["Multi-Factor Authentication Successful. ", data === null || data === void 0 ? void 0 : data.message] })] }));
2010
1563
  setTimeout(function () { return onComplete === null || onComplete === void 0 ? void 0 : onComplete(true); }, 2000);
2011
1564
  }
2012
1565
  else {
2013
- 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(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." })] }));
1566
+ toast.error(jsxs("div", { className: "flex items-center gap-2 text-sm text-red-600 bg-red-50 p-3 rounded-lg", children: [jsx(ShieldClose, { className: "w-4 h-4" }), jsx("span", { children: (data === null || data === void 0 ? void 0 : data.message) || "Unable to Validate User. Please try again." })] }));
2014
1567
  if (isMaxAttemptsReached) {
2015
1568
  setTimeout(function () {
2016
1569
  logout().then(function () {
@@ -2021,7 +1574,7 @@ var MFAOptions = function (_a) {
2021
1574
  }
2022
1575
  }
2023
1576
  },
2024
- }), handleSubmitOTP = _g.handleSubmitOTP, loading = _g.loading, setLoading = _g.setLoading, attemptCount = _g.attemptCount, remainingAttempts = _g.remainingAttempts, isMaxAttemptsReached = _g.isMaxAttemptsReached, resetAttempts = _g.resetAttempts;
1577
+ }), handleSubmitOTP = _m.handleSubmitOTP, loading = _m.loading, attemptCount = _m.attemptCount, remainingAttempts = _m.remainingAttempts, isMaxAttemptsReached = _m.isMaxAttemptsReached, resetAttempts = _m.resetAttempts;
2025
1578
  var handleGoBack = function () {
2026
1579
  setAuthType(null);
2027
1580
  setOtpVisible(false);
@@ -2030,55 +1583,36 @@ var MFAOptions = function (_a) {
2030
1583
  };
2031
1584
  // Show success animation if authentication is successful
2032
1585
  if (showSuccessAnimation) {
2033
- 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 () {
1586
+ return (jsx("div", { className: "flex justify-center items-center h-dvh", children: jsx(Card, { className: "mx-auto space-y-6 p-6 bg-white rounded-lg shadow-md", children: jsx(AuthSuccessAnimation, { onComplete: function () {
2034
1587
  // Animation completed, can add additional logic here if needed
2035
1588
  } }) }) }));
2036
1589
  }
2037
- var content = jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
1590
+ var content = jsx(Fragment, {});
2038
1591
  if (!authType) {
2039
- 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 () {
2040
- var success;
2041
- return __generator(this, function (_a) {
2042
- switch (_a.label) {
2043
- case 0:
2044
- // resetAttempts();
2045
- setAuthType("EmailOTP");
2046
- setOtpVisible(true);
2047
- if (!sendEmailOTP) return [3 /*break*/, 2];
2048
- setLoading(true);
2049
- return [4 /*yield*/, sendEmailOTP()];
2050
- case 1:
2051
- success = _a.sent();
2052
- setLoading(false);
2053
- if (success) {
2054
- 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(ShieldCheck, { className: "w-4 h-4" }), jsxRuntimeExports.jsx("span", { children: "OTP sent to your email address" })] }));
2055
- }
2056
- _a.label = 2;
2057
- case 2: return [2 /*return*/];
2058
- }
2059
- });
2060
- }); }, children: [jsxRuntimeExports.jsx(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 () {
1592
+ content = (jsxs("div", { className: "space-y-4", children: [jsx("p", { className: "text-sm text-gray-600 text-center mb-6", children: "Choose your preferred authentication method:" }), jsxs("div", { className: "flex flex-col gap-3", children: [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 () {
2061
1593
  setAuthType("AuthenticatorCode");
2062
1594
  setOtpVisible(true);
2063
- }, children: [jsxRuntimeExports.jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsxRuntimeExports.jsx(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",
1595
+ }, children: [jsx("img", { src: MicrosoftAuthenticatorImg, alt: "Authenticator", className: "rounded-full", width: 24, height: 24, onError: function () { return jsx(Shield, {}); } }), jsxs("div", { className: "text-left", children: [jsx("div", { className: "font-medium", children: "Authenticator App" }), jsx("div", { className: "text-sm text-gray-500", children: "Use Authenticator App" })] })] }), usePassKey && (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",
2064
1596
  // onClick={() => {
2065
1597
  // resetAttempts();
2066
1598
  // setAuthType("AuthenticatorCode");
2067
1599
  // setOtpVisible(true);
2068
1600
  // }}
2069
- onClick: handleFIDOLogin, disabled: context.isLoading, children: [jsxRuntimeExports.jsx(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" })] })] }))] })] }));
1601
+ onClick: function () {
1602
+ return authenticator.HandleFIDOLogin(MFAEndpoints.RetrieveAuthChallenge, MFAEndpoints.AuthChallengeVerify, authenticate);
1603
+ }, disabled: context.isLoading, children: [jsx(KeyIcon, { className: "text-[#506f4a]", size: 48 }), jsxs("div", { className: "text-left", children: [jsx("div", { className: "font-medium", children: "Continue with Passkey" }), jsx("div", { className: "text-sm text-gray-500", children: "Passkey" })] })] }))] })] }));
2070
1604
  }
2071
1605
  else if (authType === "EmailOTP") {
2072
- content = (jsxRuntimeExports.jsx(Dialog, { open: otpVisible, onOpenChange: function () {
1606
+ content = (jsx(Dialog, { open: otpVisible, onOpenChange: function () {
2073
1607
  setAuthType(null);
2074
1608
  setOtpVisible(false);
2075
1609
  setValue("");
2076
- }, 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" })] })] }) }));
1610
+ }, children: jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsx(DialogHeader, { className: "w-full", children: jsx(DialogTitle, { className: "text-center", children: "Email OTP" }) }), jsxs("div", { className: "space-y-6", children: [jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "EmailOTP", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] })] }) }));
2077
1611
  }
2078
1612
  else if (authType === "AuthenticatorCode") {
2079
- 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" })] }))] }) }));
1613
+ content = (jsx(Dialog, { open: otpVisible, onOpenChange: handleGoBack, children: jsxs(DialogContent, { className: "space-y-2 w-[425px] max-w-[80%]", children: [jsx("div", { className: "absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-lime-400 to-emerald-600" }), jsx(DialogHeader, { className: "w-full", children: jsx(DialogTitle, { className: "text-center", children: "Authenticator App" }) }), loading ? (jsx("div", { className: "p-3 h-full flex justify-center items-center", children: jsx(LoadingSpinner, {}) })) : (jsxs("div", { className: "space-y-6", children: [jsx(CardDescription, { className: "text-sm text-gray-600 text-center", children: "Enter the 6-digit Code from your Authenticator app" }), jsx(GenericOTPVerifier, { value: value, setValue: setValue, isDisabled: loading || isMaxAttemptsReached, onChangeOTP: function (code) { return handleSubmitOTP(code); }, fieldName: "AuthenticatorCode", attemptCount: attemptCount, remainingAttempts: remainingAttempts, isMaxAttemptsReached: isMaxAttemptsReached }), jsx(Button, { variant: "ghost", className: "w-full text-sm", onClick: handleGoBack, children: "\u2190 Choose different method" })] }))] }) }));
2080
1614
  }
2081
- 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(ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsxRuntimeExports.jsx("span", { children: "Powered By NIBSS" })] })] }) }));
1615
+ return (jsx("div", { className: "cams-sdk flex justify-center items-center h-dvh", children: jsxs(Card, { className: "space-y-6 p-6 rounded-lg shadow-md", children: [jsxs(CardHeader, { children: [jsx("div", { className: "flex justify-center items", children: jsx("img", { src: OTPAuthenticationImg, alt: "NIBSS Logo", width: 265, height: 265 }) }), jsx(CardTitle, { className: "text-3xl font-bold mb-6 text-center", children: "Two-Factor Authentication" }), 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." })] }), jsx(CardContent, { children: content }), jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsx(ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsx("span", { children: "Powered By NIBSS" })] })] }) }));
2082
1616
  };
2083
1617
 
2084
1618
  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";
@@ -2089,7 +1623,7 @@ var MicrosoftLogo = "data:image/svg+xml,%3Csvg%20width%3D%2225%22%20height%3D%22
2089
1623
 
2090
1624
  var Input = React.forwardRef(function (_a, ref) {
2091
1625
  var className = _a.className, type = _a.type, props = __rest(_a, ["className", "type"]);
2092
- 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)));
1626
+ return (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)));
2093
1627
  });
2094
1628
  Input.displayName = "Input";
2095
1629
 
@@ -2109,16 +1643,16 @@ var ADLoginModal = function (_a) {
2109
1643
  resolver: a$1(credentialsSchema),
2110
1644
  defaultValues: { username: "", password: "" },
2111
1645
  });
2112
- var handleCredentialsSubmit = function (values) { return __awaiter(void 0, void 0, void 0, function () {
2113
- return __generator(this, function (_a) {
1646
+ var handleCredentialsSubmit = function (values) { return __awaiter$1(void 0, void 0, void 0, function () {
1647
+ return __generator$1(this, function (_a) {
2114
1648
  setCredentials(values);
2115
1649
  setStep("mfa");
2116
1650
  return [2 /*return*/];
2117
1651
  });
2118
1652
  }); };
2119
- var handleMFASubmit = function (code) { return __awaiter(void 0, void 0, void 0, function () {
1653
+ var handleMFASubmit = function (code) { return __awaiter$1(void 0, void 0, void 0, function () {
2120
1654
  var error_1;
2121
- return __generator(this, function (_a) {
1655
+ return __generator$1(this, function (_a) {
2122
1656
  switch (_a.label) {
2123
1657
  case 0:
2124
1658
  setIsLoading(true);
@@ -2129,6 +1663,7 @@ var ADLoginModal = function (_a) {
2129
1663
  username: credentials.username,
2130
1664
  password: credentials.password,
2131
1665
  MFACode: code,
1666
+ appCode: "",
2132
1667
  })];
2133
1668
  case 2:
2134
1669
  _a.sent();
@@ -2154,13 +1689,13 @@ var ADLoginModal = function (_a) {
2154
1689
  form.reset();
2155
1690
  setMfaCode("");
2156
1691
  };
2157
- 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(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) {
1692
+ return (jsx(Dialog, { open: open, onOpenChange: handleClose, children: jsxs(DialogContent, { className: "min-w-[50vw] max-w-[70vw]", children: [jsx(DialogHeader, { children: jsxs("div", { className: "flex items-center gap-4", children: [jsx(KeyIcon, { className: "w-8 h-8 text-[#506f4a]" }), jsx(DialogTitle, { className: "text-xl", children: "Sign in with AD Credentials" })] }) }), step === "credentials" ? (jsx(Form, __assign({}, form, { children: jsxs("form", { onSubmit: form.handleSubmit(handleCredentialsSubmit), className: "space-y-6", children: [jsx(FormField, { control: form.control, name: "username", render: function (_a) {
2158
1693
  var field = _a.field;
2159
- 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, {})] }));
2160
- } }), jsxRuntimeExports.jsx(FormField, { control: form.control, name: "password", render: function (_a) {
1694
+ return (jsxs(FormItem, { children: [jsx(FormLabel, { children: "Username" }), jsx(FormControl, { children: jsx(Input, __assign({ className: "h-12", placeholder: "Enter your username" }, field)) }), jsx(FormMessage, {})] }));
1695
+ } }), jsx(FormField, { control: form.control, name: "password", render: function (_a) {
2161
1696
  var field = _a.field;
2162
- 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, {})] }));
2163
- } }), 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(Loader2, { className: "w-4 h-4 animate-spin" }), jsxRuntimeExports.jsx("span", { children: "Verifying..." })] }))] }))] }) }));
1697
+ return (jsxs(FormItem, { children: [jsx(FormLabel, { children: "Password" }), jsx(FormControl, { children: jsx(Input, __assign({ className: "h-12", type: "password", placeholder: "Enter your password" }, field)) }), jsx(FormMessage, {})] }));
1698
+ } }), jsx(Button, { type: "submit", className: "py-3 w-full bg-[#506f4a] hover:bg-[#506f4a]/90", children: "Continue" })] }) }))) : (jsxs("div", { className: "space-y-4", children: [jsx(GenericOTPVerifier, { value: mfaCode, setValue: setMfaCode, setLoading: setIsLoading, isDisabled: isLoading, onChangeOTP: handleMFASubmit, fieldName: "AuthenticatorCode" }), isLoading && (jsxs("div", { className: "flex items-center justify-center gap-2 text-sm text-muted-foreground", children: [jsx(Loader2, { className: "w-4 h-4 animate-spin" }), jsx("span", { children: "Verifying..." })] }))] }))] }) }));
2164
1699
  };
2165
1700
 
2166
1701
  var DefaultLoginPage = function (_a) {
@@ -2179,21 +1714,37 @@ var DefaultLoginPage = function (_a) {
2179
1714
  var login = context.login, isLoading = context.isLoading, authMode = context.authMode;
2180
1715
  var _b = useState(false), showADModal = _b[0], setShowADModal = _b[1];
2181
1716
  var register = useWebAuthn().register;
2182
- var _c = useCredentialsHandler(function (state, data) { return __awaiter(void 0, void 0, void 0, function () {
2183
- return __generator(this, function (_a) {
1717
+ var authentication = new CAMSMFAAuthenticator();
1718
+ var _c = useCredentialsHandler(function (state, data) { return __awaiter$1(void 0, void 0, void 0, function () {
1719
+ return __generator$1(this, function (_a) {
2184
1720
  console.log(data);
2185
- if (state && data) {
1721
+ if (state && data && data.isValid) {
2186
1722
  context.isAuthenticated = true;
2187
1723
  context.requiresMFA = false;
2188
1724
  context.setUserProfile({
2189
- type: "AUTH_SUCCESS",
2190
- userProfile: __assign({}, data),
1725
+ state: "AUTH_SUCCESS",
1726
+ message: data.message,
1727
+ role: data.userInfo.role,
1728
+ profile: {
1729
+ id: data.userInfo.id,
1730
+ name: data.userInfo.name,
1731
+ email: data.userInfo.email,
1732
+ isMFAEnabled: data.userInfo.isMFAEnabled,
1733
+ tokens: data.tokens,
1734
+ },
2191
1735
  });
2192
1736
  }
1737
+ else {
1738
+ toast.error("\u274C AD Login failed. ".concat((data === null || data === void 0 ? void 0 : data.message) || 'Unknown error'));
1739
+ }
2193
1740
  return [2 /*return*/];
2194
1741
  });
2195
1742
  }); }), handleSubmitCredentials = _c.handleSubmitCredentials, isCredAuthLoading = _c.loading, setIsCredAuthLoading = _c.setLoading;
2196
1743
  var handleMSALLogin = function () {
1744
+ if (typeof window !== "undefined" && !window.crypto) {
1745
+ toast.error("Crypto API not available. Please use a modern browser.");
1746
+ return;
1747
+ }
2197
1748
  if (authMode === "MSAL") {
2198
1749
  login();
2199
1750
  }
@@ -2202,53 +1753,21 @@ var DefaultLoginPage = function (_a) {
2202
1753
  console.warn("Regular CAMS login requires configuration");
2203
1754
  }
2204
1755
  };
2205
- var handleRegister = function (data) { return __awaiter(void 0, void 0, void 0, function () {
2206
- var options, attestationResponse, error_1;
2207
- return __generator(this, function (_a) {
2208
- switch (_a.label) {
2209
- case 0:
2210
- _a.trys.push([0, 4, , 5]);
2211
- // 1. Fetch challenge from your server
2212
- console.log("Requesting registration challenge from server...");
2213
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterNewChallenge, __assign({}, data))];
2214
- case 1:
2215
- options = (_a.sent()).data;
2216
- console.log("Received challenge:", options);
2217
- // 2. Call the SDK to trigger the browser's passkey creation UI
2218
- console.log("Calling SDK register function...");
2219
- return [4 /*yield*/, register(options)];
2220
- case 2:
2221
- attestationResponse = _a.sent();
2222
- console.log("Passkey created on client:", attestationResponse);
2223
- // 3. Send the response back to the server for verification
2224
- console.log("Sending attestation to server for verification...");
2225
- return [4 /*yield*/, axiosInstance.post(MFAEndpoints.RegisterVerify + "?username=".concat(data.username), attestationResponse)];
2226
- case 3:
2227
- _a.sent();
2228
- toast.success("✅ Registration successful! Passkey created.");
2229
- return [3 /*break*/, 5];
2230
- case 4:
2231
- error_1 = _a.sent();
2232
- console.error("Registration failed:", error_1);
2233
- toast.error("❌ Could not create passkey.");
2234
- return [3 /*break*/, 5];
2235
- case 5: return [2 /*return*/];
2236
- }
2237
- });
2238
- }); };
2239
- return (jsxRuntimeExports.jsxs("main", { className: "min-h-screen bg-gray-50", children: [jsxRuntimeExports.jsx(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(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
1756
+ return (jsxs("main", { className: "cams-sdk min-h-screen bg-gray-50", children: [jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, transition: { duration: 0.5 }, children: jsx("div", { className: "flex h-screen items-center justify-center", children: jsxs(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: [jsxs(CardHeader, { className: "text-center space-y-3", children: [jsx("div", { className: "w-full flex items-center justify-center", children: jsx("img", { src: NIBSSLogo, alt: "NIBSS Logo", width: 225, height: 225 }) }), jsx(CardTitle, { className: "text-3xl font-bold", children: "NIBSS CAMS" }), jsx(CardTitle, { className: "text-gray-500 dark:text-gray-400 font-bold text-lg", children: "Centralized Authentication" })] }), jsxs(CardAction, { className: "w-full flex flex-col items-center justify-center text-center text-gray-500 dark:text-gray-400 mb-8", children: [jsx("img", { src: AuthLogo, alt: "Auth Logo", width: 365, height: 365 }), "Use Below Identity Providers To Authenticate"] }), jsxs("div", { className: "space-y-4", children: [jsxs(Button
2240
1757
  // variant="outline"
2241
1758
  , {
2242
1759
  // variant="outline"
2243
- 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(KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsxRuntimeExports.jsx("span", { children: isLoading
1760
+ 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: [jsx("img", { src: MicrosoftLogo, alt: "Microsoft Logo", width: 35, height: 35 }), jsx("span", { className: "ml-2", children: isLoading ? "Logging in..." : "Sign in with Microsoft" })] }), useADLogin && (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: [jsx(KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsx("span", { children: isLoading
2244
1761
  ? "Logging in..."
2245
- : "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(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(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) {
1762
+ : "Sign in with ActiveDirectory" })] })), usePassKey && (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 () {
1763
+ return authentication.HandleRegister(MFAEndpoints.RegisterNewChallenge, MFAEndpoints.RegisterVerify +
1764
+ "?username=".concat(PassKeysRegisterProps.username), register, PassKeysRegisterProps);
1765
+ }, disabled: isLoading, children: [jsx(KeyIcon, { className: "text-[#506f4a]", size: 64 }), jsx("span", { children: "Create a Passkey" })] }))] }), jsxs(CardFooter, { className: "flex items-center justify-center mt-6 space-x-2 text-gray-400 text-sm", children: [jsx(ShieldCheck, { className: "w-4 h-4 text-[#506f4a] pulse-glow" }), jsx("span", { children: "Powered By NIBSS" })] })] }) }) }, "landing"), jsx(ADLoginModal, { open: showADModal, onOpenChange: setShowADModal, isLoading: isCredAuthLoading, setIsLoading: setIsCredAuthLoading, onLogin: function (_a) { return __awaiter$1(void 0, [_a], void 0, function (_b) {
2246
1766
  var username = _b.username, password = _b.password, MFACode = _b.MFACode;
2247
- return __generator(this, function (_c) {
1767
+ return __generator$1(this, function (_c) {
2248
1768
  // Implement your AD login logic here
2249
- console.log("AD Login:", { username: username, password: password, MFACode: MFACode });
2250
- // Example: await adLoginService(username, password, mfaCode);
2251
- handleSubmitCredentials(CredentialsAuthEndpoint !== null && CredentialsAuthEndpoint !== void 0 ? CredentialsAuthEndpoint : "/api/auth/validate", { username: username, password: password, MFACode: MFACode }, context.appCode);
1769
+ console.log("AD Login:", { username: username, MFACode: MFACode });
1770
+ handleSubmitCredentials(CredentialsAuthEndpoint, { username: username, password: password, MFACode: MFACode, appCode: context.appCode });
2252
1771
  return [2 /*return*/];
2253
1772
  });
2254
1773
  }); } })] }));
@@ -2256,23 +1775,24 @@ var DefaultLoginPage = function (_a) {
2256
1775
 
2257
1776
  var ErrorFallback = function (_a) {
2258
1777
  var message = _a.message;
2259
- 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 })] }) }));
1778
+ return (jsx("div", { className: "flex items-center justify-center min-h-screen bg-gray-50", children: jsxs("div", { className: "bg-white p-6 rounded-lg shadow-lg border border-red-200 max-w-md", children: [jsxs("div", { className: "flex items-center gap-3 mb-2", children: [jsx("svg", { className: "w-6 h-6 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Configuration Error" })] }), jsx("p", { className: "text-red-600", children: message })] }) }));
2260
1779
  };
2261
1780
 
2262
1781
  var MFAEndpointsSchema = z$1.object({
2263
- ValidateMFA: z$1.url("MFAEndpoint must be a valid URL"),
1782
+ ValidateUserMFA: z$1.url("ValidateUser MFA Endpoint must be a valid URL"),
2264
1783
  RegisterNewChallenge: z$1.url("MFA RegisterNewChallenge must be a valid URL"),
2265
1784
  RegisterVerify: z$1.url("MFA RegisterVerify must be a valid URL"),
2266
1785
  RetrieveAuthChallenge: z$1.url("MFA RetrieveAuthChallenge must be a valid URL"),
2267
1786
  AuthChallengeVerify: z$1.url("MFA AuthChallengeVerify must be a valid URL"),
2268
1787
  });
2269
1788
  var MFAGate = function (_a) {
2270
- var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? jsxRuntimeExports.jsx(LoadingSpinner, {}) : _b,
1789
+ var children = _a.children, _b = _a.fallback, fallback = _b === void 0 ? (jsx("div", { className: "h-screen flex items-center justify-center", children: jsx(LoadingSpinner, {}) })) : _b,
2271
1790
  // loginComponent: LoginComponent = DefaultLoginPage,
2272
1791
  _c = _a.usePassKey,
2273
1792
  // loginComponent: LoginComponent = DefaultLoginPage,
2274
- usePassKey = _c === void 0 ? false : _c, _d = _a.useADLogin, useADLogin = _d === void 0 ? false : _d, CredentialsAuthEndpoint = _a.CredentialsAuthEndpoint, PassKeysRegisterProps = _a.PassKeysRegisterProps, MFAEndpoints = _a.MFAEndpoints;
1793
+ 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;
2275
1794
  var context = useCAMSContext();
1795
+ var _e = useState("Loading"), authState = _e[0], setAuthState = _e[1];
2276
1796
  var validatedMFAEndpoints = useMemo(function () {
2277
1797
  var parsed = MFAEndpointsSchema.safeParse(MFAEndpoints);
2278
1798
  if (!parsed.success) {
@@ -2282,34 +1802,109 @@ var MFAGate = function (_a) {
2282
1802
  return parsed.data;
2283
1803
  }, [MFAEndpoints]);
2284
1804
  var handleComplete = useCallback(function (success) {
2285
- if (!success)
2286
- Logger.error("MFA authentication failed");
2287
- }, []);
2288
- var handleAuthFailed = useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
2289
- return __generator(this, function (_a) {
2290
- switch (_a.label) {
2291
- case 0: return [4 /*yield*/, context.logout()];
1805
+ var _a;
1806
+ if (success && context.authMode === "MSAL") {
1807
+ var accessToken = "accessToken" in context ? context.accessToken : "";
1808
+ var idToken = "idToken" in context ? context.idToken : "";
1809
+ if (accessToken && idToken) {
1810
+ var tokens = { accessToken: accessToken, idToken: idToken };
1811
+ onAuthSuccess === null || onAuthSuccess === void 0 ? void 0 : onAuthSuccess(tokens);
1812
+ if ("onAuthSuccess" in context) {
1813
+ (_a = context.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(context, tokens);
1814
+ }
1815
+ }
1816
+ }
1817
+ else if (!success) {
1818
+ Logger.error("MFA authentication failed", { context: context || null });
1819
+ }
1820
+ }, [context, onAuthSuccess]);
1821
+ var handleAuthFailed = useCallback(function () { return __awaiter$1(void 0, void 0, void 0, function () {
1822
+ var _a;
1823
+ return __generator$1(this, function (_b) {
1824
+ switch (_b.label) {
1825
+ case 0:
1826
+ if (context.authMode === "MSAL" && context.error) {
1827
+ onAuthError === null || onAuthError === void 0 ? void 0 : onAuthError(context.error);
1828
+ if ("onAuthError" in context) {
1829
+ (_a = context.onAuthError) === null || _a === void 0 ? void 0 : _a.call(context, context.error);
1830
+ }
1831
+ }
1832
+ return [4 /*yield*/, context.logout()];
2292
1833
  case 1:
2293
- _a.sent();
1834
+ _b.sent();
2294
1835
  return [2 /*return*/];
2295
1836
  }
2296
1837
  });
2297
- }); }, [context.logout]);
1838
+ }); }, [context, onAuthError]);
1839
+ useEffect(function () {
1840
+ if (context.isLoading) {
1841
+ setAuthState("Loading");
1842
+ return;
1843
+ }
1844
+ if (!context.isAuthenticated) {
1845
+ setAuthState("Unauthenticated");
1846
+ return;
1847
+ }
1848
+ // Small delay to ensure all context updates are processed
1849
+ var timer = setTimeout(function () {
1850
+ var shouldRequireMFA = requiresMFA !== null && requiresMFA !== void 0 ? requiresMFA : ("requiresMFA" in context ? context.requiresMFA : false);
1851
+ var accessToken = "accessToken" in context ? context.accessToken : "";
1852
+ if (shouldRequireMFA && accessToken) {
1853
+ setAuthState("MFA_Required");
1854
+ }
1855
+ else {
1856
+ setAuthState("Authenticated");
1857
+ }
1858
+ }, 50);
1859
+ return function () { return clearTimeout(timer); };
1860
+ }, [
1861
+ context.isLoading,
1862
+ context.isAuthenticated,
1863
+ // context["requiresMFA"],
1864
+ requiresMFA,
1865
+ context,
1866
+ ]);
2298
1867
  if (useADLogin && !CredentialsAuthEndpoint)
2299
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
1868
+ return jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
2300
1869
  if (!validatedMFAEndpoints)
2301
- return jsxRuntimeExports.jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
1870
+ return jsx(ErrorFallback, { message: "Invalid MFA Configuration." });
2302
1871
  if (context.authMode !== "MSAL")
2303
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2304
- if (context.isLoading)
2305
- return fallback;
2306
- if (context.requiresMFA) {
2307
- return (jsxRuntimeExports.jsx(MFAOptions, { MFAEndpoints: validatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
2308
- }
2309
- if (!context.isAuthenticated) {
2310
- return (jsxRuntimeExports.jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: MFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint }));
1872
+ return jsx(Fragment, { children: children });
1873
+ // if (!context.isAuthenticated) {
1874
+ // const shouldRequireMFA =
1875
+ // requiresMFA ?? ("requiresMFA" in context ? context.requiresMFA : false);
1876
+ // const accessToken = "accessToken" in context ? context.accessToken : "";
1877
+ // if (shouldRequireMFA && accessToken) {
1878
+ // return (
1879
+ // <MFAOptions
1880
+ // MFAEndpoints={validatedMFAEndpoints}
1881
+ // usePassKey={usePassKey}
1882
+ // onComplete={handleComplete}
1883
+ // onAuthFailed={handleAuthFailed}
1884
+ // />
1885
+ // );
1886
+ // }
1887
+ // return (
1888
+ // <DefaultLoginPage
1889
+ // usePassKey={usePassKey}
1890
+ // useADLogin={useADLogin}
1891
+ // MFAEndpoints={MFAEndpoints!}
1892
+ // PassKeysRegisterProps={PassKeysRegisterProps}
1893
+ // CredentialsAuthEndpoint={CredentialsAuthEndpoint}
1894
+ // />
1895
+ // );
1896
+ // }
1897
+ switch (authState) {
1898
+ case "Loading":
1899
+ return fallback;
1900
+ case "MFA_Required":
1901
+ return (jsx(MFAOptions, { MFAEndpoints: validatedMFAEndpoints, usePassKey: usePassKey, onComplete: handleComplete, onAuthFailed: handleAuthFailed }));
1902
+ case "Authenticated":
1903
+ return jsx(Fragment, { children: children });
1904
+ case "Unauthenticated":
1905
+ default:
1906
+ jsx(DefaultLoginPage, { usePassKey: usePassKey, useADLogin: useADLogin, MFAEndpoints: MFAEndpoints, PassKeysRegisterProps: PassKeysRegisterProps, CredentialsAuthEndpoint: CredentialsAuthEndpoint });
2311
1907
  }
2312
- return jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: children });
2313
1908
  };
2314
1909
 
2315
1910
  export { CAMSMSALProvider, CAMSProvider, ClientOnly, DefaultLoginPage, MFAGate, MFAOptions, ProtectedRoute, UnifiedCAMSProvider, authenticate, register, useCAMSAuth, useCAMSContext, useCAMSMSALAuth, useCAMSMSALContext, useWebAuthn };