@asante-org/atlascopco-vt-litesitegenerator 3.8.12 → 3.8.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../src/components/lsg/LsgButton/LsgButton.tsx","../node_modules/tslib/tslib.es6.js","../../src/components/lsg/LsgButton/LsgAemButton.tsx","../../src/components/lsg/LsgBanner/LsgBanner.tsx","../../src/components/lsg/LsgImage/LsgImage.tsx","../../src/components/lsg/LsgVideo/LsgVideo.tsx","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../../src/components/lsg/LsgCarousel/LsgCarouselController.ts","../../src/components/lsg/LsgCarousel/LsgCarousel.tsx","../../src/components/lsg/LsgCard/LsgCard.tsx","../../src/components/lsg/LsgGeneratedList/LsgGeneratedList.tsx","../../src/components/lsg/LsgPagination/LsgPagination.tsx","../../src/components/lsg/LsgBlogOverview/LsgBlogOverview.tsx","../../src/components/lsg/LsgBlogOverview/mapAemGeneratedListJson.ts","../../src/utils/lsgIconPaths.ts","../../src/utils/LsgIcon.tsx","../../src/components/lsg/LsgBreadcrumb/LsgBreadcrumb.tsx","../../src/components/lsg/LsgLogo/LsgLogo.tsx","../../src/components/lsg/LsgNavigation/LsgNavigation.tsx","../../src/components/lsg/LsgLanguageSwitcher/LsgLanguageSwitcher.tsx","../../src/components/lsg/LsgSearchTrigger/LsgSearchTrigger.tsx","../../src/components/lsg/LsgSearchOverlay/LsgSearchOverlay.tsx","../../src/components/lsg/LsgHeader/LsgHeader.tsx","../../src/components/lsg/LsgQuickLinks/LsgQuickLinks.tsx","../../src/components/lsg/LsgSocialMediaIcons/LsgSocialMediaIcons.tsx","../../src/components/lsg/LsgFooter/LsgFooter.tsx","../node_modules/embla-carousel-fade/esm/embla-carousel-fade.esm.js","../../src/components/lsg/LsgHero/LsgHeroController.ts","../../src/components/lsg/LsgHeroCard/LsgHeroCard.tsx","../../src/components/lsg/LsgHero/LsgHero.tsx","../../src/components/lsg/LsgTabs/LsgTabs.tsx","../../src/components/lsg/LsgTable/LsgTable.tsx","../../src/components/lsg/LsgFormFieldText/LsgFormFieldText.tsx","../../src/components/lsg/LsgFormFieldEmail/LsgFormFieldEmail.tsx","../node_modules/react-international-phone/dist/index.mjs","../../src/components/lsg/telPicker/telPicker.ts","../../src/components/lsg/LsgFormFieldTel/LsgFormFieldTel.tsx","../../src/components/lsg/LsgFormFieldSelect/LsgFormFieldSelect.tsx","../../src/components/lsg/LsgFormFieldCountry/LsgFormFieldCountry.tsx","../../src/components/lsg/LsgFormFieldTextarea/LsgFormFieldTextarea.tsx","../../src/components/lsg/LsgFormFieldConsent/LsgFormFieldConsent.tsx","../../src/components/lsg/LsgFormStep/LsgFormStep.tsx","../../src/components/lsg/LsgFormContainer/LsgFormContainer.tsx","../../src/components/lsg/LsgDownloadLibrary/vtbaFormEvents.ts","../../src/components/lsg/LsgDownloadLibrary/LsgDownloadLibraryController.ts","../../src/components/lsg/LsgDownloadLibrary/LsgDownloadLibrary.tsx","../../src/components/lsg/LsgDownloadLibrary/bootLsgDownloadLibrary.ts","../../src/components/lsg/LsgFormPolicyNotice/LsgFormPolicyNotice.tsx","../../src/themes/createThemeComponents.tsx","../../src/themes/theme-1/components.tsx","../../src/themes/theme-2/components.tsx","../../src/themes/theme-3/components.tsx"],"sourcesContent":["import React from \"react\";\nimport \"./LsgButton.scss\";\n\nexport type LsgButtonVariant = \"primary\" | \"secondary\" | \"tertiary\" | \"outlined-white\" | \"outlined-black\";\n\nexport interface LsgButtonProps {\n children?: React.ReactNode;\n variant?: LsgButtonVariant;\n disabled?: boolean;\n /** Renders an <a> element when provided */\n href?: string;\n onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n type?: \"button\" | \"submit\" | \"reset\";\n className?: string;\n /** Opens in a new tab when used with href */\n external?: boolean;\n}\n\nexport const LsgButton: React.FC<LsgButtonProps> = ({\n children,\n variant = \"primary\",\n disabled = false,\n href,\n onClick,\n type = \"button\",\n className = \"\",\n external = false,\n}) => {\n const classNames = [\n \"lsg-button\",\n `lsg-button--${variant}`,\n disabled ? \"lsg-button--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (href) {\n return (\n <a\n href={disabled ? undefined : href}\n className={classNames}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : (onClick as React.MouseEventHandler<HTMLAnchorElement>)}\n {...(external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n <span className=\"lsg-button__text\">{children}</span>\n </a>\n );\n }\n\n return (\n <button\n type={type}\n className={classNames}\n disabled={disabled}\n onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n >\n {children}\n </button>\n );\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n 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);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React from \"react\";\nimport type { LsgButtonVariant } from \"./LsgButton\";\nimport \"./LsgButton.scss\";\n\nexport interface LsgAemButtonProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"className\" | \"children\"> {\n /** LSG Button \"CTA type\" style — rendered as `button--{variant}` on the decoration div. */\n variant?: LsgButtonVariant;\n /** Extra classes on the `div.cmp-lsg-button` decoration div (e.g. grid column classes). */\n wrapperClassName?: string;\n /** Extra classes on the `a.lsg-button` element. */\n className?: string;\n /** Rendered inside the anchor, before `.lsg-button__text`. */\n icon?: React.ReactNode;\n /** Content of `.lsg-button__text`. */\n children?: React.ReactNode;\n}\n\n/**\n * The DOM AEM publishes for the LSG Button component (button.html wrapped by its\n * _cq_htmlTag decoration div, with the CTA type style class on that div):\n *\n * div.cmp-lsg-button.button--{variant} > div.lsg-button-container > a.lsg-button > span.lsg-button__text\n *\n * Components that embed a button in their own HTL emit this same structure, so the\n * theme's `.cmp-lsg-button.button--X .lsg-button` rules style it.\n */\nexport const LsgAemButton: React.FC<LsgAemButtonProps> = ({\n variant = \"primary\",\n wrapperClassName,\n className,\n icon,\n children,\n ...anchorProps\n}) => (\n <div className={[\"cmp-lsg-button\", `button--${variant}`, wrapperClassName].filter(Boolean).join(\" \")}>\n <div className=\"lsg-button-container\">\n <a className={[\"lsg-button\", className].filter(Boolean).join(\" \")} {...anchorProps}>\n {icon}\n <span className=\"lsg-button__text\">{children}</span>\n </a>\n </div>\n </div>\n);\n","import React, { useId } from \"react\";\nimport \"./LsgBanner.scss\";\nimport { LsgAemButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\n\nexport type LsgBannerLayout =\n | \"media-left\"\n | \"media-right\"\n | \"media-left-compact\"\n | \"media-right-compact\"\n | \"overlay\"\n | \"overlay-transparent\"\n | \"text-only\";\n\n/** Mirrors the AEM \"Background color\" style group on the banner policy. */\nexport type LsgBannerBackground =\n | \"white\"\n | \"light\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"dark\"\n | \"black\";\n\n/**\n * Mirrors the AEM \"Accent color (where supported)\" style group — same tokens as\n * the background. Only themes that draw a banner accent use it (currently T2/T3).\n */\nexport type LsgBannerAccent = LsgBannerBackground;\n\n/** Mirrors the LSG Title / Text \"colour\" style groups (`cmp-title__colour-*`, `cmp-text__colour-*`). */\nexport type LsgBannerTextColour = LsgBannerBackground;\n\nexport type LsgBannerMobileMediaPosition = \"top\" | \"bottom\";\nexport type LsgBannerMediaType = \"image\" | \"video\";\nexport type LsgBannerHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport interface LsgBannerCta {\n label: string;\n href?: string;\n external?: boolean;\n /** LSG Button \"CTA type\" style — rendered as `button--{variant}` on the decoration div. */\n variant?: LsgButtonVariant;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n}\n\nexport interface LsgBannerProps {\n /** Mandatory banner title. */\n heading: string;\n /** Figma/AEM pre-title. `eyebrow` remains as a backwards-compatible alias. */\n preTitle?: string;\n eyebrow?: string;\n /** Optional body copy. `copy` remains as a backwards-compatible alias. */\n body?: string;\n copy?: string;\n /** Up to three CTAs. Theme/AEM policy may choose to expose fewer. */\n ctas?: LsgBannerCta[];\n /** Backwards-compatible single CTA alias. */\n cta?: LsgBannerCta;\n /** Title / Text style-system colours, as an author would pick them in AEM. */\n preTitleColour?: LsgBannerTextColour;\n headingColour?: LsgBannerTextColour;\n bodyColour?: LsgBannerTextColour;\n /** Image/video presentation controlled by the Banner authoring layout. */\n mediaType?: LsgBannerMediaType;\n imageUrl?: string;\n imageAlt?: string;\n /** Banner link (Teaser \"Links\" tab). Wraps the image only, never the content. */\n mediaHref?: string;\n mediaTarget?: \"_self\" | \"_blank\";\n videoUrl?: string;\n videoPoster?: string;\n videoControls?: boolean;\n videoAutoPlay?: boolean;\n videoMuted?: boolean;\n videoLoop?: boolean;\n /** Desktop visual layout matching the Figma Banner variants. */\n layout?: LsgBannerLayout;\n /** Mobile stack order for split/compact layouts. */\n mobileMediaPosition?: LsgBannerMobileMediaPosition;\n /**\n * Background colour, mirroring the AEM \"Background color\" style group.\n * Left undefined on purpose so no class is emitted and the banner keeps its\n * default light background. Each option carries its own legible foreground.\n */\n background?: LsgBannerBackground;\n /**\n * Accent colour (rules, borders, pre-title), mirroring the AEM \"Accent color\"\n * style group. Left undefined so the theme's primary accent is kept; themes\n * without a banner accent ignore it.\n */\n accent?: LsgBannerAccent;\n /** Defaults to h2, the level `_cq_template` gives the heading Title. */\n headingTag?: LsgBannerHeadingTag;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// AEM markup helpers\n//\n// The banner's content region is a parsys in AEM, filled by _cq_template with\n// Group > Title / Text / Button components. These helpers reproduce the HTML\n// those components (and their Sling decoration divs) emit on publish, so the\n// theme CSS written here applies to AEM unchanged. Reference page:\n// /content/vtba/varovac/en (wcmmode=disabled).\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst GRID_COLUMN = \"aem-GridColumn aem-GridColumn--default--12\";\n\n/** vtba/components/lsg/structure/group — a responsivegrid with two wrappers. */\nconst AemGroup: React.FC<{ styleClasses?: string; children: React.ReactNode }> = ({\n styleClasses,\n children,\n}) => (\n <div className={[\"lsg-group\", styleClasses].filter(Boolean).join(\" \")}>\n <div className=\"layout-container-color-wrapper\">\n <div className=\"layout-container-spacing-wrapper aem-Grid aem-Grid--12 aem-Grid--default--12 \">\n {children}\n </div>\n </div>\n </div>\n);\n\n/**\n * AEM decoration class for a grid column: the component's own class, then either\n * its authored style classes or — when none are set — the component name.\n */\nfunction columnClassName(componentClass: string, name: string, styleClass?: string): string {\n return `${componentClass} ${styleClass ?? name} ${GRID_COLUMN}`;\n}\n\n/** vtba/components/lsg/content/title — type \"p\" is the pre-title. */\nconst AemTitle: React.FC<{\n tag: LsgBannerHeadingTag | \"p\";\n colour?: LsgBannerTextColour;\n children: React.ReactNode;\n}> = ({ tag: Tag, colour, children }) => (\n <div\n className={columnClassName(\n \"cmp-lsg-title\",\n \"title\",\n colour && `cmp-title__colour-${colour}`,\n )}\n >\n <Tag\n className={`cmp-title__element${Tag === \"p\" ? \" cmp-title__element--pretitle\" : \"\"}`}\n >\n {children}\n </Tag>\n </div>\n);\n\n/** vtba/components/lsg/content/text — core text v2 inside the decoration div. */\nconst AemText: React.FC<{ id: string; colour?: LsgBannerTextColour; children: React.ReactNode }> = ({\n id,\n colour,\n children,\n}) => (\n <div className={columnClassName(\"cmp-lsg-text\", \"text\", colour && `cmp-text__colour-${colour}`)}>\n <div id={id} className=\"cmp-text\">\n <p>{children}</p>\n </div>\n </div>\n);\n\n/** vtba/components/lsg/content/button — the variant is a style class on the decoration div. */\nconst AemButton: React.FC<{ cta: LsgBannerCta }> = ({ cta }) => (\n <LsgAemButton\n variant={cta.variant ?? \"primary\"}\n wrapperClassName={GRID_COLUMN}\n href={cta.href ?? \"#\"}\n target={cta.external ? \"_blank\" : undefined}\n rel={cta.external ? \"noopener noreferrer\" : undefined}\n onClick={cta.onClick}\n >\n {cta.label}\n </LsgAemButton>\n);\n\n/** Same extension mapping as BannerModel.getVideoMimeType. */\nfunction videoMimeType(url: string): string | undefined {\n const path = url.split(/[?#]/)[0].toLowerCase();\n if (path.endsWith(\".mp4\")) return \"video/mp4\";\n if (path.endsWith(\".webm\")) return \"video/webm\";\n if (path.endsWith(\".ogg\") || path.endsWith(\".ogv\")) return \"video/ogg\";\n return undefined;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgBanner\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgBanner: React.FC<LsgBannerProps> = ({\n heading,\n preTitle,\n eyebrow,\n body,\n copy,\n ctas,\n cta,\n preTitleColour,\n headingColour,\n bodyColour,\n mediaType,\n imageUrl,\n imageAlt = \"\",\n mediaHref,\n mediaTarget,\n videoUrl,\n videoPoster,\n videoControls = true,\n videoAutoPlay = false,\n videoMuted = true,\n videoLoop = false,\n layout = \"media-left\",\n mobileMediaPosition = \"top\",\n background,\n accent,\n headingTag = \"h2\",\n className,\n}) => {\n const textId = `text-${useId().replace(/[^a-zA-Z0-9]/g, \"\")}`;\n const resolvedPreTitle = preTitle ?? eyebrow;\n const resolvedBody = body ?? copy;\n const actions = (ctas?.length ? ctas : cta ? [cta] : []).slice(0, 3);\n const resolvedMediaType: LsgBannerMediaType =\n mediaType ?? (videoUrl ? \"video\" : \"image\");\n const hasMedia =\n layout !== \"text-only\" &&\n (resolvedMediaType === \"video\" ? Boolean(videoUrl) : Boolean(imageUrl));\n\n const picture = (\n <picture className=\"lsg-banner__image\">\n <img src={imageUrl} alt={imageAlt} loading=\"lazy\" />\n </picture>\n );\n\n return (\n // The Sling decoration div. Background / accent style-system classes land\n // here in AEM, not on the section.\n <div\n className={[\n \"banner teaser\",\n background && `lsg-banner--bg-${background}`,\n accent && `lsg-banner--accent-${accent}`,\n GRID_COLUMN,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <section\n className={`lsg-banner lsg-banner--${layout} lsg-banner--mobile-media-${mobileMediaPosition}`}\n data-lsg-is=\"banner\"\n data-lsg-banner-layout={layout}\n data-lsg-banner-mobile-media={mobileMediaPosition}\n data-lsg-banner-media={hasMedia ? resolvedMediaType : \"none\"}\n >\n <div className=\"lsg-banner__shell\">\n {hasMedia && (\n <div className=\"lsg-banner__media\">\n {resolvedMediaType === \"video\" && videoUrl ? (\n <video\n className=\"lsg-banner__video\"\n poster={videoPoster}\n autoPlay={videoAutoPlay}\n muted={videoMuted}\n loop={videoLoop}\n controls={videoControls}\n playsInline\n aria-label={imageAlt}\n >\n <source src={videoUrl} type={videoMimeType(videoUrl)} />\n </video>\n ) : mediaHref ? (\n <a className=\"lsg-banner__media-link\" href={mediaHref} target={mediaTarget}>\n {picture}\n </a>\n ) : (\n picture\n )}\n </div>\n )}\n\n <div className=\"lsg-banner__content\">\n <AemGroup styleClasses=\"lsg-group-display--flex lsg-group-direction--column lsg-group-gap--16\">\n {resolvedPreTitle && (\n <AemTitle tag=\"p\" colour={preTitleColour}>\n {resolvedPreTitle}\n </AemTitle>\n )}\n <AemTitle tag={headingTag} colour={headingColour}>\n {heading}\n </AemTitle>\n </AemGroup>\n\n {resolvedBody && (\n <AemGroup>\n <AemText id={textId} colour={bodyColour}>\n {resolvedBody}\n </AemText>\n </AemGroup>\n )}\n\n {actions.length > 0 && (\n <AemGroup styleClasses=\"lsg-group-display--flex lsg-group-gap--16\">\n {actions.map((action, index) => (\n <AemButton key={`${action.label}-${action.href ?? \"button\"}-${index}`} cta={action} />\n ))}\n </AemGroup>\n )}\n </div>\n </div>\n </section>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgImage.scss\";\n\nexport interface LsgImageTag {\n label: string;\n}\n\nexport interface LsgImageSource {\n /** Candidate set for this breakpoint. Maps to `<source srcset>`. */\n srcset: string;\n /** Media condition. Maps to `<source media>`. Omit for the fallback source. */\n media?: string;\n}\n\nexport interface LsgImageProps {\n /** Image URL rendered by the component. Maps to Core Image `src`. */\n imageUrl?: string;\n /** Alternative text for the image. Maps to Core Image `alt`. */\n imageAlt?: string;\n /** Candidate set for native adaptive loading. Maps to Core Image `srcset`. Ignored when `sources` is set, mirroring the AEM crops branch. */\n srcset?: string;\n /** Responsive `<source>` variants, as AEM emits from the Scene7 crop map. */\n sources?: LsgImageSource[];\n /** Intrinsic width of the image. Maps to Core Image `width`. */\n width?: number | string;\n /** Intrinsic height of the image. Maps to Core Image `height`. */\n height?: number | string;\n /** URI template used by AEM to request a rendition. Maps to Core Image `srcUriTemplate`. */\n srcUriTemplate?: string;\n /** Native lazy loading, as per the Core Image `disableLazyLoading` policy. Default: true. */\n lazyEnabled?: boolean;\n /** Render the title as the image tooltip instead of the caption. Maps to Core Image `displayPopupTitle`. */\n displayPopupTitle?: boolean;\n /** Component id. Maps to Core Image `id`. */\n id?: string;\n /** Serialised data layer payload. Maps to Core Image `data.json`. */\n dataLayer?: string;\n /** Asset UUID. Maps to Core Image `uuid`. */\n assetId?: string;\n /** Marks the image as a Dynamic Media image. Maps to Core Image `dmImage`. */\n dmImage?: boolean | string;\n /** Up to 3 tag pills overlaid on the image. */\n tags?: LsgImageTag[];\n /** Image title. Maps to the AEM Core Image caption/title. */\n title?: string;\n /** LSG-specific description revealed on hover/focus. */\n description?: string;\n /** Backward-compatible alias for description. */\n caption?: string;\n /** Optional image link. Maps to Core Image `imageLink`. */\n href?: string;\n className?: string;\n}\n\nfunction isSafeUrl(url: string | undefined): boolean {\n if (!url) return false;\n\n const lower = url.toLowerCase().trim();\n if (\n lower.startsWith(\"javascript:\") ||\n lower.startsWith(\"data:\") ||\n lower.startsWith(\"vbscript:\")\n ) {\n return false;\n }\n\n return (\n lower.startsWith(\"/\") ||\n lower.startsWith(\"http://\") ||\n lower.startsWith(\"https://\") ||\n lower.startsWith(\"mailto:\") ||\n lower.startsWith(\"tel:\") ||\n !lower.includes(\":\")\n );\n}\n\nexport const LsgImage: React.FC<LsgImageProps> = ({\n imageUrl,\n imageAlt = \"\",\n srcset,\n sources = [],\n width,\n height,\n srcUriTemplate,\n lazyEnabled = true,\n displayPopupTitle = false,\n id,\n dataLayer,\n assetId,\n dmImage,\n tags = [],\n title,\n description,\n caption,\n href,\n className = \"\",\n}) => {\n // Core Image v3 renders nothing without a src; the AEM LSG model gates on the\n // same condition via `model.ready`.\n if (!imageUrl) {\n return null;\n }\n\n const text = description ?? caption;\n\n const visibleTags: LsgImageTag[] = Array.isArray(tags)\n ? tags\n .filter(\n (tag): tag is LsgImageTag =>\n Boolean(tag) &&\n typeof tag.label === \"string\" &&\n tag.label.trim().length > 0,\n )\n .slice(0, 3)\n : [];\n\n const visibleSources: LsgImageSource[] = Array.isArray(sources)\n ? sources.filter(\n (source): source is LsgImageSource =>\n Boolean(source) &&\n typeof source.srcset === \"string\" &&\n source.srcset.trim().length > 0,\n )\n : [];\n\n const rootClass = [\"lsg-image\", \"cmp-image\", className]\n .filter(Boolean)\n .join(\" \");\n const safeHref = href && isSafeUrl(href) ? href : undefined;\n const linkLabel = title ? `View ${title}` : \"View image\";\n const showTitle = Boolean(title) && !displayPopupTitle;\n const showCaption = showTitle || Boolean(text);\n\n return (\n <div\n className={rootClass}\n id={id}\n data-cmp-data-layer={dataLayer}\n data-asset-id={assetId}\n data-cmp-dmimage={dmImage ? String(dmImage) : undefined}\n itemScope\n itemType=\"http://schema.org/ImageObject\"\n >\n <div className=\"lsg-image__media\">\n <div className=\"lsg-image__picture\">\n <picture>\n {visibleSources.map((source, index) => (\n <source\n key={`${source.media ?? \"default\"}-${index}`}\n media={source.media}\n srcSet={source.srcset}\n />\n ))}\n\n <img\n className=\"lsg-image__img cmp-image__image\"\n src={imageUrl}\n srcSet={visibleSources.length > 0 ? undefined : srcset}\n alt={imageAlt}\n title={displayPopupTitle ? title : undefined}\n width={width}\n height={height}\n data-cmp-src={srcUriTemplate}\n itemProp=\"contentUrl\"\n loading={lazyEnabled ? \"lazy\" : undefined}\n />\n </picture>\n </div>\n\n {safeHref && (\n <a\n className=\"lsg-image__link cmp-image__link\"\n href={safeHref}\n aria-label={linkLabel}\n data-cmp-clickable={dataLayer ? true : undefined}\n />\n )}\n\n {visibleTags.length > 0 && (\n <div className=\"lsg-image__tags\">\n {visibleTags.map((tag, index) => (\n <span\n key={`${tag.label}-${index}`}\n className=\"lsg-image__tag\"\n >\n {tag.label}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {showCaption && (\n <div className=\"lsg-image__caption\">\n {showTitle && (\n <p className=\"lsg-image__title cmp-image__title\" itemProp=\"caption\">\n {title}\n </p>\n )}\n {text && <p className=\"lsg-image__text\">{text}</p>}\n </div>\n )}\n\n {title && displayPopupTitle && <meta itemProp=\"caption\" content={title} />}\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./LsgVideo.scss\";\n\nexport interface LsgVideoTag {\n label: string;\n}\n\nexport type LsgVideoDisplayMode = \"inline\" | \"full-width\" | \"content\";\n\nexport interface LsgVideoProps {\n /** URL of the video thumbnail / poster image. Optional. */\n imageUrl?: string;\n /** Alt text for the poster image. */\n imageAlt?: string;\n /** Up to 3 tag pills overlaid on the poster. Extra entries are ignored. */\n tags?: LsgVideoTag[];\n /** Video title shown in the caption bar. Optional. */\n title?: string;\n /** Caption / description text below the title, revealed on hover / focus. */\n caption?: string;\n /** Href for the play action — used only when no video source is supplied. */\n href?: string;\n /** Fired when the play control is activated. */\n onPlay?: () => void;\n /** Native DAM/direct media URL, or an external YouTube/Vimeo URL. */\n videoUrl?: string;\n /** Autoplay the video/embed as soon as it renders. Default: false. */\n autoplay?: boolean;\n /** Loop playback. Default: false. */\n loop?: boolean;\n /** Mute playback. Default: false. */\n muted?: boolean;\n /** Show native/embed playback controls. Default: true. */\n controls?: boolean;\n /** Layout variant. Default: \"content\". */\n displayMode?: LsgVideoDisplayMode;\n /** Show or hide the tag pills overlay. Default: true. */\n showTags?: boolean;\n className?: string;\n}\n\ninterface EmbedInfo {\n provider: \"youtube\" | \"vimeo\";\n embedUrl: string;\n}\n\nfunction buildUrl(base: string, params: Record<string, string>): string {\n try {\n const url = new URL(base);\n Object.keys(params).forEach((key) => url.searchParams.set(key, params[key]));\n return url.toString();\n } catch {\n return base;\n }\n}\n\nfunction getEmbedInfo(\n videoUrl: string | undefined,\n opts: { autoplay: boolean; loop: boolean; muted: boolean; controls: boolean },\n): EmbedInfo | null {\n if (!videoUrl || typeof videoUrl !== \"string\") return null;\n\n try {\n const url = new URL(videoUrl);\n const host = url.hostname.replace(/^www\\./, \"\");\n const path = url.pathname;\n\n if (host === \"youtube.com\" || host === \"youtube-nocookie.com\" || host === \"youtu.be\") {\n let id: string | null = null;\n if (host === \"youtu.be\") {\n id = path.slice(1);\n } else if (path.startsWith(\"/embed/\") || path.startsWith(\"/shorts/\")) {\n id = path.split(\"/\")[2];\n } else if (path === \"/watch\") {\n id = url.searchParams.get(\"v\");\n }\n if (id && /^[A-Za-z0-9_-]{11}$/.test(id)) {\n const params: Record<string, string> = {\n autoplay: opts.autoplay ? \"1\" : \"0\",\n mute: opts.muted ? \"1\" : \"0\",\n controls: opts.controls ? \"1\" : \"0\",\n rel: \"0\",\n };\n if (opts.loop) { params.loop = \"1\"; params.playlist = id; }\n const baseHost = host === \"youtube-nocookie.com\" ? \"youtube-nocookie.com\" : \"youtube.com\";\n return { provider: \"youtube\", embedUrl: buildUrl(`https://www.${baseHost}/embed/${id}`, params) };\n }\n }\n\n if (host === \"vimeo.com\" || host === \"player.vimeo.com\") {\n let id: string | null = null;\n if (host === \"player.vimeo.com\" && path.startsWith(\"/video/\")) {\n id = path.split(\"/\")[2];\n } else {\n const match = path.match(/^\\/(\\d+)$/);\n if (match) id = match[1];\n }\n if (id && /^\\d+$/.test(id)) {\n const params: Record<string, string> = {\n autoplay: opts.autoplay ? \"1\" : \"0\",\n muted: opts.muted ? \"1\" : \"0\",\n loop: opts.loop ? \"1\" : \"0\",\n controls: opts.controls ? \"1\" : \"0\",\n };\n return { provider: \"vimeo\", embedUrl: buildUrl(`https://player.vimeo.com/video/${id}`, params) };\n }\n }\n } catch {\n return null;\n }\n return null;\n}\n\nfunction isSafeUrl(url: string | undefined): boolean {\n if (!url) return false;\n const lower = url.toLowerCase().trim();\n if (lower.startsWith(\"javascript:\") || lower.startsWith(\"data:\") || lower.startsWith(\"vbscript:\")) return false;\n return (\n lower.startsWith(\"/\") ||\n lower.startsWith(\"http://\") ||\n lower.startsWith(\"https://\") ||\n lower.startsWith(\"mailto:\") ||\n lower.startsWith(\"tel:\") ||\n !lower.includes(\":\")\n );\n}\n\nconst PlayIcon = (\n <svg\n className=\"lsg-video__play-svg\"\n width=\"60\"\n height=\"60\"\n viewBox=\"0 0 60 60\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"30\" cy=\"30\" r=\"30\" fill=\"currentColor\" fillOpacity=\"0.15\" />\n <polygon points=\"24,18 46,30 24,42\" fill=\"currentColor\" />\n </svg>\n);\n\nexport const LsgVideo: React.FC<LsgVideoProps> = ({\n imageUrl,\n imageAlt = \"\",\n tags = [],\n title,\n caption,\n href,\n onPlay,\n videoUrl,\n autoplay = false,\n loop = false,\n muted = false,\n controls = true,\n displayMode = \"content\",\n showTags = true,\n className = \"\",\n}) => {\n const [isRevealed, setIsRevealed] = useState(false);\n\n const hasVideoSource = typeof videoUrl === \"string\" && videoUrl.length > 0;\n const embedInfo = hasVideoSource ? getEmbedInfo(videoUrl, { autoplay, loop, muted, controls }) : null;\n const isEmbed = embedInfo !== null;\n const isNativeSource = hasVideoSource && !isEmbed;\n const showMedia = hasVideoSource && (autoplay || isRevealed);\n\n const visibleTags: LsgVideoTag[] =\n showTags && Array.isArray(tags)\n ? tags\n .filter(\n (tag): tag is LsgVideoTag =>\n Boolean(tag) && typeof tag.label === \"string\" && tag.label.trim().length > 0,\n )\n .slice(0, 3)\n : [];\n\n const handleActivate = (e: React.MouseEvent) => {\n if (hasVideoSource) {\n e.preventDefault();\n setIsRevealed(true);\n onPlay?.();\n return;\n }\n if (href && isSafeUrl(href)) return;\n if (onPlay) { e.preventDefault(); onPlay(); }\n };\n\n const playLabel = title ? `Play ${title}` : \"Play video\";\n const rootClass = [\"lsg-video\", `lsg-video--${displayMode}`, className].filter(Boolean).join(\" \");\n const showCaption = Boolean(title) || Boolean(caption);\n\n const renderPlayControl = () => {\n if (hasVideoSource) {\n return (\n <button type=\"button\" className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </button>\n );\n }\n if (href && isSafeUrl(href)) {\n return (\n <a href={href} className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </a>\n );\n }\n return (\n <button type=\"button\" className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </button>\n );\n };\n\n return (\n <div className={rootClass}>\n <div className=\"lsg-video__media\">\n {showMedia ? (\n isEmbed ? (\n <div className=\"lsg-video__embed\">\n <iframe\n className=\"lsg-video__iframe\"\n src={embedInfo!.embedUrl}\n title={title || \"Video\"}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n loading=\"lazy\"\n />\n </div>\n ) : (\n isNativeSource && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n className=\"lsg-video__native\"\n poster={imageUrl || undefined}\n controls={controls}\n autoPlay\n loop={loop}\n muted={muted}\n playsInline\n >\n <source src={videoUrl} />\n </video>\n )\n )\n ) : (\n <>\n <div className=\"lsg-video__poster\">\n {imageUrl && <img className=\"lsg-video__poster-img\" src={imageUrl} alt={imageAlt} loading=\"lazy\" />}\n </div>\n {visibleTags.length > 0 && (\n <div className=\"lsg-video__tags\">\n {visibleTags.map((tag, i) => (\n <span key={`${tag.label}-${i}`} className=\"lsg-video__tag\">\n {tag.label}\n </span>\n ))}\n </div>\n )}\n {renderPlayControl()}\n </>\n )}\n {/* Caption inside __media — positioned statically (T1) or absolutely at bottom (T2/T3) via CSS tokens */}\n {showCaption && (\n <div className=\"lsg-video__caption\">\n {title && <p className=\"lsg-video__title\">{title}</p>}\n {caption && <p className=\"lsg-video__text\">{caption}</p>}\n </div>\n )}\n </div>\n </div>\n );\n};\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\n\n/**\n * Framework-agnostic Embla controller shared by the React carousel and the AEM\n * clientlib runtime. Keep behaviour here so Storybook and server-rendered HTL\n * use exactly the same navigation and selected-state logic.\n */\nexport interface LsgCarouselControllerElements {\n prevBtn?: HTMLElement | null;\n nextBtn?: HTMLElement | null;\n paginationBtns?: Iterable<HTMLElement> | null;\n}\n\nexport type LsgCarouselDirection = \"ltr\" | \"rtl\";\n\nexport interface LsgCarouselControllerOptions {\n loop?: boolean;\n /**\n * Embla content direction. Media-left variants use RTL so the active media is\n * anchored on the right edge of the viewport and the adjacent slide peeks in\n * from the left, matching the mirrored Figma compositions.\n *\n * Embla requires the viewport/track CSS direction to match this value. The\n * React component sets `dir` on the viewport and the AEM boot path mirrors it.\n */\n direction?: LsgCarouselDirection;\n}\n\nexport class LsgCarouselController {\n private embla: EmblaCarouselType | null = null;\n private readonly els: LsgCarouselControllerElements;\n private readonly paginationBtns: HTMLElement[];\n private readonly paginationHandlers: Array<() => void>;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgCarouselControllerElements = {},\n options: LsgCarouselControllerOptions = {},\n ) {\n this.els = elements;\n this.paginationBtns = elements.paginationBtns\n ? Array.from(elements.paginationBtns)\n : [];\n\n this.embla = EmblaCarousel(viewport, {\n align: \"start\",\n // Every authored media item owns a pagination dot. `trimSnaps` can remove\n // the final snap when two-up/peek layouts do not have enough overflow,\n // leaving the last authored item only partially reachable. Keep all snaps\n // so dot/item indexes stay 1:1 for 2, 3, 4, ... media items.\n containScroll: false,\n direction: options.direction ?? \"ltr\",\n loop: options.loop ?? true,\n skipSnaps: false,\n slidesToScroll: 1,\n });\n\n this.paginationHandlers = this.paginationBtns.map((_, index) => () => {\n this.embla?.scrollTo(index);\n });\n\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.addEventListener(\"click\", this.paginationHandlers[index]);\n });\n\n this.embla.on(\"select\", this.syncSelectedState);\n this.embla.on(\"reInit\", this.syncSelectedState);\n this.syncSelectedState();\n }\n\n /**\n * Embla automatically falls back to non-looping mode when there is not enough\n * slide content to create a safe loop (most noticeable with two-up layouts and\n * only 2–3 authored items). Keep the arrow contract cyclic in that fallback:\n * when there is no native previous snap, jump to the final authored snap.\n */\n readonly scrollPrev = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollPrev()) {\n this.embla.scrollPrev();\n return;\n }\n\n const lastSnap = this.embla.scrollSnapList().length - 1;\n if (lastSnap >= 0) this.embla.scrollTo(lastSnap);\n };\n\n /** See `scrollPrev` for why the explicit wrap fallback is required. */\n readonly scrollNext = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollNext()) {\n this.embla.scrollNext();\n return;\n }\n\n if (this.embla.scrollSnapList().length > 0) this.embla.scrollTo(0);\n };\n\n private readonly syncSelectedState = (): void => {\n const selected = this.embla?.selectedScrollSnap() ?? 0;\n this.paginationBtns.forEach((button, index) => {\n const active = index === selected;\n button.classList.toggle(\"lsg-carousel__dot--active\", active);\n button.setAttribute(\"aria-current\", active ? \"true\" : \"false\");\n });\n };\n\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n destroy(): void {\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.removeEventListener(\"click\", this.paginationHandlers[index]);\n });\n if (this.embla) {\n this.embla.off(\"select\", this.syncSelectedState);\n this.embla.off(\"reInit\", this.syncSelectedState);\n this.embla.destroy();\n this.embla = null;\n }\n }\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { LsgButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\nimport { LsgImage } from \"../LsgImage\";\nimport { LsgVideo } from \"../LsgVideo\";\nimport { LsgCarouselController } from \"./LsgCarouselController\";\nimport type { LsgCarouselDirection } from \"./LsgCarouselController\";\nimport \"./LsgCarousel.scss\";\n\nexport type LsgCarouselLayout = \"media-right\" | \"media-left\" | \"full-width\";\nexport type LsgCarouselHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\nexport type LsgCarouselMediaType = \"image\" | \"video\";\n\nexport interface LsgCarouselItem {\n /** Stable author/item identifier where available. */\n id?: string;\n type?: LsgCarouselMediaType;\n imageUrl?: string;\n imageAlt?: string;\n videoUrl?: string;\n videoPoster?: string;\n videoControls?: boolean;\n videoAutoPlay?: boolean;\n videoMuted?: boolean;\n videoLoop?: boolean;\n /** Optional per-media label used by layouts/themes that show a badge. */\n label?: string;\n}\n\nexport interface LsgCarouselCta {\n label: string;\n href?: string;\n external?: boolean;\n variant?: LsgButtonVariant;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport interface LsgCarouselProps {\n /** Mandatory carousel title. */\n heading: string;\n preTitle?: string;\n body?: string;\n cta?: LsgCarouselCta;\n items: LsgCarouselItem[];\n /** Desktop content/media position from the Figma variants. */\n layout?: LsgCarouselLayout;\n headingTag?: LsgCarouselHeadingTag;\n ariaLabel?: string;\n className?: string;\n}\n\nconst mediaTypeFor = (item: LsgCarouselItem): LsgCarouselMediaType =>\n item.type ?? (item.videoUrl ? \"video\" : \"image\");\n\nconst directionForLayout = (layout: LsgCarouselLayout): LsgCarouselDirection =>\n layout === \"media-left\" ? \"rtl\" : \"ltr\";\n\nexport const LsgCarousel: React.FC<LsgCarouselProps> = ({\n heading,\n preTitle,\n body,\n cta,\n items = [],\n layout = \"media-right\",\n headingTag = \"h2\",\n ariaLabel = \"Media carousel\",\n className = \"\",\n}) => {\n const rootRef = useRef<HTMLElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const prevBtnRef = useRef<HTMLButtonElement>(null);\n const nextBtnRef = useRef<HTMLButtonElement>(null);\n const dotsRef = useRef<HTMLDivElement>(null);\n const controllerRef = useRef<LsgCarouselController | null>(null);\n const HeadingTag = headingTag;\n const isCarousel = items.length > 1;\n const carouselDirection = directionForLayout(layout);\n\n useEffect(() => {\n if (!viewportRef.current || !isCarousel) return;\n\n controllerRef.current = new LsgCarouselController(\n viewportRef.current,\n {\n prevBtn: prevBtnRef.current,\n nextBtn: nextBtnRef.current,\n paginationBtns:\n dotsRef.current?.querySelectorAll<HTMLElement>(\"[data-lsg-carousel-dot]\") ?? [],\n },\n { loop: true, direction: carouselDirection },\n );\n\n return () => {\n controllerRef.current?.destroy();\n controllerRef.current = null;\n };\n }, [carouselDirection, isCarousel, items.length]);\n\n const rootClasses = [\n \"lsg-carousel\",\n `lsg-carousel--${layout}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section\n ref={rootRef}\n className={rootClasses}\n data-lsg-is=\"carousel\"\n data-lsg-carousel-layout={layout}\n data-lsg-carousel-direction={carouselDirection}\n data-lsg-carousel-count={items.length}\n aria-label={ariaLabel}\n >\n <div className=\"lsg-carousel__shell\">\n <div className=\"lsg-carousel__content\">\n {preTitle && (\n <div className=\"lsg-carousel__pre-title\">\n <span className=\"lsg-carousel__pre-title-marker\" aria-hidden=\"true\" />\n <span>{preTitle}</span>\n </div>\n )}\n\n <HeadingTag className=\"lsg-carousel__heading\">{heading}</HeadingTag>\n\n {body && <p className=\"lsg-carousel__body\">{body}</p>}\n\n {cta && (\n <div className=\"lsg-carousel__actions\">\n <LsgButton\n className=\"lsg-carousel__cta\"\n href={cta.href}\n external={cta.external}\n variant={cta.variant ?? \"primary\"}\n onClick={cta.onClick}\n >\n {cta.label}\n </LsgButton>\n </div>\n )}\n </div>\n\n <div className=\"lsg-carousel__media-column\">\n <div className=\"lsg-carousel__viewport\" ref={viewportRef} dir={carouselDirection}>\n <div className=\"lsg-carousel__track\" role=\"list\">\n {items.map((item, index) => {\n const type = mediaTypeFor(item);\n const key = item.id ?? `${type}-${item.imageUrl ?? item.videoUrl ?? index}-${index}`;\n\n return (\n <article\n key={key}\n className=\"lsg-carousel__slide\"\n role=\"listitem\"\n aria-label={`Slide ${index + 1} of ${items.length}`}\n data-lsg-carousel-item\n >\n <div className=\"lsg-carousel__media\">\n {type === \"video\" && item.videoUrl ? (\n <LsgVideo\n videoUrl={item.videoUrl}\n imageUrl={item.videoPoster}\n imageAlt={item.imageAlt}\n controls={item.videoControls ?? true}\n autoplay={item.videoAutoPlay ?? false}\n muted={item.videoMuted ?? true}\n loop={item.videoLoop ?? false}\n displayMode=\"content\"\n showTags={false}\n className=\"lsg-carousel__video-component\"\n />\n ) : item.imageUrl ? (\n <LsgImage\n imageUrl={item.imageUrl}\n imageAlt={item.imageAlt}\n className=\"lsg-carousel__image-component\"\n />\n ) : (\n <div className=\"lsg-carousel__media-placeholder\" aria-hidden=\"true\" />\n )}\n\n {item.label && (\n <span className=\"lsg-carousel__media-label\">{item.label}</span>\n )}\n </div>\n </article>\n );\n })}\n </div>\n </div>\n\n {isCarousel && (\n <div className=\"lsg-carousel__navigation\" aria-label=\"Carousel navigation\">\n <button\n ref={prevBtnRef}\n className=\"lsg-carousel__arrow lsg-carousel__arrow--prev\"\n type=\"button\"\n aria-label=\"Previous slide\"\n data-lsg-carousel-prev\n >\n <span className=\"lsg-carousel__arrow-icon\" aria-hidden=\"true\" />\n </button>\n\n <div className=\"lsg-carousel__pagination\" ref={dotsRef}>\n {items.map((item, index) => (\n <button\n key={item.id ?? `dot-${index}`}\n className={`lsg-carousel__dot${index === 0 ? \" lsg-carousel__dot--active\" : \"\"}`}\n type=\"button\"\n aria-label={`Go to slide ${index + 1}`}\n aria-current={index === 0 ? \"true\" : \"false\"}\n data-lsg-carousel-dot\n />\n ))}\n </div>\n\n <button\n ref={nextBtnRef}\n className=\"lsg-carousel__arrow lsg-carousel__arrow--next\"\n type=\"button\"\n aria-label=\"Next slide\"\n data-lsg-carousel-next\n >\n <span className=\"lsg-carousel__arrow-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n};\n","import React from \"react\";\nimport \"./LsgCard.scss\";\n\nexport type LsgCardVariant = \"withImage\" | \"onlyText\" | \"withIcon\";\nexport type LsgCardColumns = 2 | 3 | 4 | 5;\n\nexport interface LsgCardCta {\n label: string;\n href: string;\n external?: boolean;\n}\n\nexport interface LsgCardProps {\n title: string;\n preTitle?: string;\n subtitle?: string;\n description?: string;\n imageUrl?: string;\n imageAlt?: string;\n iconUrl?: string;\n iconAlt?: string;\n /** Makes the complete card interactive when provided. */\n href?: string;\n cta?: LsgCardCta;\n variant?: LsgCardVariant;\n className?: string;\n}\n\nfunction cardVariantClass(variant: LsgCardVariant): string {\n switch (variant) {\n case \"onlyText\":\n return \"lsg-card--only-text\";\n case \"withIcon\":\n return \"lsg-card--with-icon\";\n case \"withImage\":\n default:\n return \"lsg-card--with-image\";\n }\n}\n\nexport const LsgCard: React.FC<LsgCardProps> = ({\n title,\n preTitle,\n subtitle,\n description,\n imageUrl,\n imageAlt = \"\",\n iconUrl,\n iconAlt = \"\",\n href,\n cta,\n variant = \"withImage\",\n className,\n}) => {\n const resolvedIconUrl = iconUrl ?? imageUrl;\n const actionLabel = cta?.label ?? \"Read more\";\n const cardClassName = [\"lsg-card\", cardVariantClass(variant), className]\n .filter(Boolean)\n .join(\" \");\n\n const content = (\n <>\n {variant === \"withImage\" && imageUrl && (\n <div className=\"lsg-card__media\">\n <img src={imageUrl} alt={imageAlt} loading=\"lazy\" />\n </div>\n )}\n <div className=\"lsg-card__content\">\n {variant === \"withIcon\" && resolvedIconUrl && (\n <div className=\"lsg-card__icon\" aria-hidden={iconAlt ? undefined : true}>\n <img src={resolvedIconUrl} alt={iconAlt} loading=\"lazy\" />\n </div>\n )}\n <div className=\"lsg-card__top\">\n {preTitle && (\n <span className=\"lsg-card__pre-title\">\n <span className=\"lsg-card__pre-title-dot\" aria-hidden=\"true\" />\n <span className=\"lsg-card__pre-title-text\">{preTitle}</span>\n <span className=\"lsg-card__pre-title-arrow\" aria-hidden=\"true\">→</span>\n </span>\n )}\n <h3 className=\"lsg-card__title\">{title}</h3>\n {subtitle && <h4 className=\"lsg-card__subtitle\">{subtitle}</h4>}\n </div>\n <div className=\"lsg-card__bottom\">\n {description && <p className=\"lsg-card__description\">{description}</p>}\n {(href || cta) && (\n href ? (\n <span className=\"lsg-card__cta\" aria-hidden=\"true\">\n <span className=\"lsg-card__cta-label\">{actionLabel}</span>\n <span className=\"lsg-card__cta-arrow\" aria-hidden=\"true\">→</span>\n </span>\n ) : (\n <a\n className=\"lsg-card__cta\"\n href={cta?.href}\n target={cta?.external ? \"_blank\" : undefined}\n rel={cta?.external ? \"noreferrer noopener\" : undefined}\n >\n <span className=\"lsg-card__cta-label\">{actionLabel}</span>\n <span className=\"lsg-card__cta-arrow\" aria-hidden=\"true\">→</span>\n </a>\n )\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <article className={cardClassName} data-lsg-card-variant={variant}>\n {href ? (\n <a href={href} className=\"lsg-card__link\" aria-label={title}>\n {content}\n </a>\n ) : (\n <div className=\"lsg-card__link\">{content}</div>\n )}\n </article>\n );\n};\n\nexport interface LsgCardsProps {\n cards: LsgCardProps[];\n columns?: LsgCardColumns;\n className?: string;\n}\n\n/** Renders the AEM/Storybook compatible responsive card grid. */\nexport const LsgCards: React.FC<LsgCardsProps> = ({\n cards,\n columns = 3,\n className,\n}) => {\n const listClassName = [\n \"lsg-cards\",\n `lsg-cards--cols-${columns}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <ul className={listClassName} data-columns={columns}>\n {cards.map((card, index) => (\n <li className=\"lsg-cards__item\" key={card.href ?? card.cta?.href ?? `${card.title}-${index}`}>\n <LsgCard {...card} />\n </li>\n ))}\n </ul>\n );\n};\n","import React from \"react\";\nimport { LsgCard } from \"../LsgCard\";\nimport type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\n\n/** One listed page. Field comments name the AEM `SimplePageModel` source. */\nexport interface LsgGeneratedListItem {\n /** `page.path` + `.html` */\n href: string;\n /** `referenceTitle` */\n title: string;\n /** `referencePreTitle` */\n preTitle?: string;\n /** `referenceSubtitle` */\n subtitle?: string;\n /** `referenceText` */\n description?: string;\n /** `referenceImage` — used as the media image or the icon, per `cardVariant`. */\n imageUrl?: string;\n /** Defaults to `title`, as the HTL does. */\n imageAlt?: string;\n}\n\nexport interface LsgGeneratedListProps {\n items: LsgGeneratedListItem[];\n /** Applies to every card in the list, as the AEM dialog does. */\n cardVariant?: LsgCardVariant;\n maxColumns?: LsgCardColumns;\n className?: string;\n}\n\n/**\n * Mirrors AEM `vtba/components/content/generated-list` in \"LSG Card\" mode,\n * including its `cq:htmlTag` wrapper. Card styling comes from LsgCard.\n */\nexport const LsgGeneratedList: React.FC<LsgGeneratedListProps> = ({\n items,\n cardVariant = \"withImage\",\n maxColumns = 3,\n className,\n}) => {\n const wrapperClassName = [\"c-row--divider\", \"generated-list\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={wrapperClassName}>\n <div className=\"generated-list-container\">\n <ul\n className={`generated-list-container__ul lsg-cards lsg-cards--cols-${maxColumns}`}\n data-total-items={items.length}\n data-item-per-row={maxColumns}\n data-columns={maxColumns}\n >\n {items.map((item, index) => (\n <li className=\"lsg-cards__item\" key={`${item.href}-${index}`}>\n <LsgCard {...item} imageAlt={item.imageAlt ?? item.title} variant={cardVariant} />\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgPagination.scss\";\n\nexport type LsgPaginationRangeItem = number | \"ellipsis\";\n\nexport interface LsgPaginationLabels {\n nav: string;\n first: string;\n previous: string;\n next: string;\n last: string;\n page: (page: number) => string;\n}\n\nexport interface LsgPaginationProps {\n /** 1-based. */\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n /** Pages shown either side of the current one when truncating. */\n siblingCount?: number;\n /**\n * Collapses runs of page numbers into \"…\" (page 10 of 20 → 1 … 9 10 11 … 20).\n * Turn off to list every page.\n */\n truncate?: boolean;\n /** Shows the First and Last controls. */\n showFirstLast?: boolean;\n labels?: Partial<LsgPaginationLabels>;\n className?: string;\n}\n\nconst DEFAULT_LABELS: LsgPaginationLabels = {\n nav: \"Pagination\",\n first: \"First\",\n previous: \"Previous\",\n next: \"Next\",\n last: \"Last\",\n page: (page) => `Page ${page}`,\n};\n\n/**\n * Page numbers to show: always the first and last page plus the current page\n * ± `siblingCount`. A gap of a single page shows that page rather than \"…\".\n * Page 2 of 6 → [1, 2, 3, \"ellipsis\", 6].\n */\nexport function getLsgPaginationRange(\n currentPage: number,\n totalPages: number,\n siblingCount = 1,\n): LsgPaginationRangeItem[] {\n if (totalPages < 1) {\n return [];\n }\n\n const current = Math.min(Math.max(currentPage, 1), totalPages);\n const pages = new Set<number>([1, totalPages]);\n for (let page = current - siblingCount; page <= current + siblingCount; page += 1) {\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n\n const sorted = Array.from(pages).sort((a, b) => a - b);\n const range: LsgPaginationRangeItem[] = [];\n sorted.forEach((page, index) => {\n const previous = sorted[index - 1];\n if (previous !== undefined) {\n if (page - previous === 2) {\n range.push(previous + 1);\n } else if (page - previous > 2) {\n range.push(\"ellipsis\");\n }\n }\n range.push(page);\n });\n return range;\n}\n\ntype ControlKind = \"first\" | \"previous\" | \"next\" | \"last\";\n\n// Left-pointing glyphs on a 24×24 grid; next/last mirror them. Each control\n// carries every glyph its themes need and theme CSS shows one: theme 1 uses\n// the chevrons (‹ «), theme 2 the bar (|<), theme 3 the arrow (←).\nconst GLYPHS: Record<\"previous\" | \"first\", Record<string, string>> = {\n previous: {\n chevron: \"M14.5 6.5 9 12l5.5 5.5\",\n arrow: \"M19 12H5M11 6l-6 6 6 6\",\n },\n first: {\n \"chevron-double\": \"M12 6.5 6.5 12l5.5 5.5M18 6.5 12.5 12l5.5 5.5\",\n bar: \"M7 6.5v11M16.5 6.5 11 12l5.5 5.5\",\n },\n};\n\nconst PaginationIcon: React.FC<{ kind: ControlKind }> = ({ kind }) => {\n const glyphs = GLYPHS[kind === \"first\" || kind === \"last\" ? \"first\" : \"previous\"];\n const mirrored = kind === \"next\" || kind === \"last\";\n\n return (\n <svg\n className=\"lsg-pagination__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <g transform={mirrored ? \"matrix(-1 0 0 1 24 0)\" : undefined}>\n {Object.entries(glyphs).map(([name, d]) => (\n <path key={name} className={`lsg-pagination__glyph lsg-pagination__glyph--${name}`} d={d} />\n ))}\n </g>\n </svg>\n );\n};\n\nexport const LsgPagination: React.FC<LsgPaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n truncate = true,\n showFirstLast = false,\n labels,\n className,\n}) => {\n if (totalPages <= 1) {\n return null;\n }\n\n const text = { ...DEFAULT_LABELS, ...labels };\n const current = Math.min(Math.max(currentPage, 1), totalPages);\n const goTo = (page: number) => {\n if (page !== current && page >= 1 && page <= totalPages) {\n onPageChange(page);\n }\n };\n\n const control = (kind: ControlKind, target: number, disabled: boolean) => {\n const label = <span className=\"lsg-pagination__label\">{text[kind]}</span>;\n const iconFirst = kind === \"first\" || kind === \"previous\";\n\n return (\n <li className={`lsg-pagination__item lsg-pagination__item--${kind}`}>\n <button\n type=\"button\"\n className={`lsg-pagination__control lsg-pagination__control--${kind}`}\n disabled={disabled}\n onClick={() => goTo(target)}\n >\n {iconFirst && <PaginationIcon kind={kind} />}\n {label}\n {!iconFirst && <PaginationIcon kind={kind} />}\n </button>\n </li>\n );\n };\n\n return (\n <nav className={[\"lsg-pagination\", className].filter(Boolean).join(\" \")} aria-label={text.nav}>\n <ul className=\"lsg-pagination__list\">\n {showFirstLast && control(\"first\", 1, current === 1)}\n {control(\"previous\", current - 1, current === 1)}\n {(truncate\n ? getLsgPaginationRange(current, totalPages, siblingCount)\n : Array.from({ length: totalPages }, (_, index) => index + 1)\n ).map((item, index) =>\n item === \"ellipsis\" ? (\n <li\n key={`ellipsis-${index}`}\n className=\"lsg-pagination__item lsg-pagination__ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </li>\n ) : (\n <li key={item} className=\"lsg-pagination__item\">\n <button\n type=\"button\"\n className=\"lsg-pagination__page\"\n aria-label={text.page(item)}\n aria-current={item === current ? \"page\" : undefined}\n onClick={() => goTo(item)}\n >\n {/* data-text lets CSS reserve the bold width, so hover doesn't shift the row. */}\n <span className=\"lsg-pagination__page-text\" data-text={item}>\n {item}\n </span>\n </button>\n </li>\n ),\n )}\n {control(\"next\", current + 1, current === totalPages)}\n {showFirstLast && control(\"last\", totalPages, current === totalPages)}\n </ul>\n </nav>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { LsgCards } from \"../LsgCard\";\nimport type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\nimport type { LsgGeneratedListItem } from \"../LsgGeneratedList\";\nimport { LsgPagination } from \"../LsgPagination\";\nimport type { LsgPaginationLabels } from \"../LsgPagination\";\nimport \"./LsgBlogOverview.scss\";\n\nexport interface LsgBlogOverviewProps {\n items: LsgGeneratedListItem[];\n /** Applies to every card, as the AEM dialog does. */\n cardVariant?: LsgCardVariant;\n maxColumns?: LsgCardColumns;\n /** Rows of cards per page; the page size is `maxColumns × rows`. */\n rows?: number;\n paginationLabels?: Partial<LsgPaginationLabels>;\n /** Shows the pagination's First and Last controls. */\n showFirstLast?: boolean;\n /** Collapses long runs of page numbers into \"…\". */\n truncatePages?: boolean;\n /** Announced to screen readers after a page change. */\n statusLabel?: (page: number, totalPages: number) => string;\n className?: string;\n}\n\nconst defaultStatusLabel = (page: number, totalPages: number) => `Page ${page} of ${totalPages}`;\n\n/**\n * Client-side, paginated card list for the AEM Generated List when \"Enable\n * client-side React rendering\" is on. ac-react-app mounts it into the\n * component's placeholder; see mapAemGeneratedListJson for the data.\n */\nexport const LsgBlogOverview: React.FC<LsgBlogOverviewProps> = ({\n items,\n cardVariant = \"withImage\",\n maxColumns = 3,\n rows = 3,\n paginationLabels,\n showFirstLast = false,\n truncatePages = true,\n statusLabel = defaultStatusLabel,\n className,\n}) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const [page, setPage] = useState(1);\n const [status, setStatus] = useState(\"\");\n\n const pageSize = Math.max(1, maxColumns * Math.max(1, rows));\n const totalPages = Math.max(1, Math.ceil(items.length / pageSize));\n // Clamped on read, so a shorter item list never strands the user on an empty page.\n const currentPage = Math.min(page, totalPages);\n const pageItems = items.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (nextPage: number) => {\n setPage(nextPage);\n setStatus(statusLabel(nextPage, totalPages));\n\n // Bring the list back into view when its top has scrolled off the screen.\n const root = rootRef.current;\n if (root && root.getBoundingClientRect().top < 0) {\n const reduceMotion = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n root.scrollIntoView({ behavior: reduceMotion ? \"auto\" : \"smooth\", block: \"start\" });\n }\n };\n\n return (\n <div ref={rootRef} className={[\"lsg-blog-overview\", className].filter(Boolean).join(\" \")}>\n <LsgCards\n columns={maxColumns}\n cards={pageItems.map((item) => ({\n ...item,\n imageAlt: item.imageAlt ?? item.title,\n variant: cardVariant,\n }))}\n />\n <LsgPagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n labels={paginationLabels}\n showFirstLast={showFirstLast}\n truncate={truncatePages}\n />\n <p className=\"lsg-visually-hidden\" aria-live=\"polite\">\n {status}\n </p>\n </div>\n );\n};\n","import type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\nimport type { LsgGeneratedListItem } from \"../LsgGeneratedList\";\n\n/** One page in the AEM Generated List JSON (`GeneratedListModel.getReactJson()`). Missing values are \"\". */\nexport interface LsgAemGeneratedListItemJson {\n /** JCR path without an extension. */\n path?: string;\n referencePreTitle?: string;\n referenceTitle?: string;\n referenceSubtitle?: string;\n referenceText?: string;\n /** Raw DAM path. */\n referenceImage?: string;\n \"jcr:title\"?: string;\n /** ISO-8601 instant. */\n \"jcr:created\"?: string;\n /** cq:tags IDs. */\n tags?: string[];\n}\n\n/** The JSON in the Generated List's `<script data-lsg-generated-list-data>`. */\nexport interface LsgAemGeneratedListJson {\n title?: string;\n displayAs?: string;\n cardVariant?: string;\n /** \"2\"–\"5\"; a string in the AEM output. */\n maxColumns?: string | number;\n centered?: boolean;\n narrowWidth?: boolean;\n items?: LsgAemGeneratedListItemJson[];\n}\n\nexport interface LsgAemGeneratedListData {\n items: LsgGeneratedListItem[];\n cardVariant: LsgCardVariant;\n maxColumns: LsgCardColumns;\n}\n\nconst CARD_VARIANTS: readonly LsgCardVariant[] = [\"withImage\", \"onlyText\", \"withIcon\"];\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/** Trimmed string, or undefined for anything empty or not a string. */\nconst text = (value: unknown): string | undefined =>\n typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n\nfunction toColumns(value: unknown): LsgCardColumns {\n const columns = Number.parseInt(String(value), 10);\n return columns >= 2 && columns <= 5 ? (columns as LsgCardColumns) : 3;\n}\n\nfunction toCardVariant(value: unknown): LsgCardVariant {\n return CARD_VARIANTS.find((variant) => variant === value) ?? \"withImage\";\n}\n\nfunction toItem(raw: unknown): LsgGeneratedListItem | null {\n if (!isRecord(raw)) {\n return null;\n }\n\n const path = text(raw.path);\n const title = text(raw.referenceTitle) ?? text(raw[\"jcr:title\"]);\n if (!path || !title) {\n return null;\n }\n\n const image = text(raw.referenceImage);\n return {\n // The HTL adds the extension with `@ extension='html'`; the JSON doesn't.\n href: path.endsWith(\".html\") ? path : `${path}.html`,\n title,\n preTitle: text(raw.referencePreTitle),\n subtitle: text(raw.referenceSubtitle),\n description: text(raw.referenceText),\n // DAM file names can contain spaces.\n imageUrl: image ? encodeURI(image) : undefined,\n };\n}\n\n/**\n * Maps the AEM Generated List JSON to LsgBlogOverview props. Tolerates missing\n * or malformed fields and never throws on the shape; items without a path or\n * title are dropped.\n */\nexport function mapAemGeneratedListJson(json: unknown): LsgAemGeneratedListData {\n const data = isRecord(json) ? json : {};\n const items = Array.isArray(data.items)\n ? data.items.map(toItem).filter((item): item is LsgGeneratedListItem => item !== null)\n : [];\n\n return {\n items,\n cardVariant: toCardVariant(data.cardVariant),\n maxColumns: toColumns(data.maxColumns),\n };\n}\n","export type LsgIconName =\n | \"bars\"\n | \"chevronLeft\"\n | \"chevronRight\"\n | \"close\"\n | \"globe\"\n | \"home\"\n | \"search\";\n\nexport const LSG_ICON_PATHS: Record<LsgIconName, string> = {\n bars:\n \"M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z\",\n chevronLeft:\n \"M169.4 297.4C156.9 309.9 156.9 330.2 169.4 342.7L361.4 534.7C373.9 547.2 394.2 547.2 406.7 534.7C419.2 522.2 419.2 501.9 406.7 489.4L237.3 320L406.6 150.6C419.1 138.1 419.1 117.8 406.6 105.3C394.1 92.8 373.8 92.8 361.3 105.3L169.3 297.3z\",\n chevronRight:\n \"M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z\",\n close:\n \"M504.6 148.5C515.9 134.9 514.1 114.7 500.5 103.4C486.9 92.1 466.7 93.9 455.4 107.5L320 270L184.6 107.5C173.3 93.9 153.1 92.1 139.5 103.4C125.9 114.7 124.1 134.9 135.4 148.5L278.3 320L135.4 491.5C124.1 505.1 125.9 525.3 139.5 536.6C153.1 547.9 173.3 546.1 184.6 532.5L320 370L455.4 532.5C466.7 546.1 486.9 547.9 500.5 536.6C514.1 525.3 515.9 505.1 504.6 491.5L361.7 320L504.6 148.5z\",\n globe:\n \"M367.2 477C345.7 520.7 325.8 528 320 528C314.2 528 294.3 520.7 272.8 477C255.8 442.5 243.6 395.4 240.7 344L399.3 344C396.3 395.5 384.1 442.6 367.2 477zM399.3 296L240.7 296C243.7 244.5 255.9 197.4 272.8 163C294.3 119.3 314.2 112 320 112C325.8 112 345.7 119.3 367.2 163C384.2 197.5 396.4 244.6 399.3 296zM447.4 344L526.6 344C518 418.6 469.9 481.3 403.8 510.4C427.8 467.6 444.1 408 447.4 344zM526.6 296L447.4 296C444.1 232 427.8 172.4 403.8 129.6C469.9 158.8 518 221.4 526.6 296zM192.6 296L113.4 296C122 221.4 170.1 158.7 236.2 129.6C212.2 172.4 195.9 232 192.6 296zM113.4 344L192.6 344C195.9 408 212.2 467.6 236.2 510.4C170.1 481.2 122 418.6 113.4 344zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576z\",\n home: \"M96 320L320 128L544 320H480V528H352V384H288V528H160V320H96z\",\n search:\n \"M480 272C480 317.9 465.1 360.3 440 394.7L566.6 521.4C579.1 533.9 579.1 554.2 566.6 566.7C554.1 579.2 533.8 579.2 521.3 566.7L394.7 440C360.3 465.1 317.9 480 272 480C157.1 480 64 386.9 64 272C64 157.1 157.1 64 272 64C386.9 64 480 157.1 480 272zM272 416C351.5 416 416 351.5 416 272C416 192.5 351.5 128 272 128C192.5 128 128 192.5 128 272C128 351.5 192.5 416 272 416z\",\n};\n\n","import React from \"react\";\nimport { LSG_ICON_PATHS } from \"./lsgIconPaths\";\nimport type { LsgIconName } from \"./lsgIconPaths\";\n\nexport interface LsgIconProps {\n name: LsgIconName;\n className?: string;\n}\n\nexport const LsgIcon: React.FC<LsgIconProps> = ({ name, className }) => (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 640 640\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d={LSG_ICON_PATHS[name]} />\n </svg>\n);\n","import React from \"react\";\nimport { LsgIcon } from \"../../../utils\";\nimport \"./LsgBreadcrumb.scss\";\n\nexport interface LsgBreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport interface LsgBreadcrumbProps {\n /** Breadcrumb items ordered from the nearest ancestor to the current page. */\n items?: LsgBreadcrumbItem[];\n /** Mirrors the AEM \"Show Breadcrumbs\" configuration. */\n showBreadcrumbs?: boolean;\n /** Mirrors the AEM \"Include Home Link\" configuration. */\n includeHome?: boolean;\n /** URL used by the home icon link. */\n homeHref?: string;\n /** Accessible label for the icon-only home link. */\n homeLabel?: string;\n className?: string;\n}\n\nfunction isSafeHref(href: string | undefined): boolean {\n if (!href) return false;\n\n const value = href.trim().toLowerCase();\n if (\n value.startsWith(\"javascript:\") ||\n value.startsWith(\"data:\") ||\n value.startsWith(\"vbscript:\")\n ) {\n return false;\n }\n\n return (\n value.startsWith(\"/\") ||\n value.startsWith(\"#\") ||\n value.startsWith(\"http://\") ||\n value.startsWith(\"https://\") ||\n !value.includes(\":\")\n );\n}\n\nconst BreadcrumbSeparator: React.FC = () => (\n <li className=\"lsg-breadcrumb__separator\" aria-hidden=\"true\">\n <LsgIcon name=\"chevronRight\" className=\"lsg-breadcrumb__separator-icon\" />\n </li>\n);\n\nexport const LsgBreadcrumb: React.FC<LsgBreadcrumbProps> = ({\n items = [],\n showBreadcrumbs = true,\n includeHome = true,\n homeHref = \"/\",\n homeLabel = \"Home\",\n className = \"\",\n}) => {\n if (!showBreadcrumbs) return null;\n\n const visibleItems = Array.isArray(items)\n ? items.filter(\n (item): item is LsgBreadcrumbItem =>\n Boolean(item) && typeof item.label === \"string\" && item.label.trim().length > 0,\n )\n : [];\n\n if (!includeHome && visibleItems.length === 0) return null;\n\n const rootClassName = [\"lsg-breadcrumb\", className].filter(Boolean).join(\" \");\n const safeHomeHref = isSafeHref(homeHref) ? homeHref : \"/\";\n\n return (\n <nav className={rootClassName} aria-label=\"Breadcrumb\">\n <ol className=\"lsg-breadcrumb__list\">\n {includeHome && (\n <li className=\"lsg-breadcrumb__item lsg-breadcrumb__item--home\">\n <a className=\"lsg-breadcrumb__home\" href={safeHomeHref} aria-label={homeLabel}>\n <LsgIcon name=\"home\" className=\"lsg-breadcrumb__home-icon\" />\n </a>\n </li>\n )}\n\n {visibleItems.map((item, index) => {\n const isCurrent = index === visibleItems.length - 1;\n const safeHref = isSafeHref(item.href) ? item.href : undefined;\n\n return (\n <React.Fragment key={`${item.label}-${index}`}>\n {(includeHome || index > 0) && <BreadcrumbSeparator />}\n <li\n className={[\n \"lsg-breadcrumb__item\",\n isCurrent ? \"lsg-breadcrumb__item--current\" : \"lsg-breadcrumb__item--ancestor\",\n ].join(\" \")}\n >\n {isCurrent ? (\n <span className=\"lsg-breadcrumb__current\" aria-current=\"page\">\n <span className=\"lsg-breadcrumb__current-marker\" aria-hidden=\"true\" />\n <span className=\"lsg-breadcrumb__label\">{item.label}</span>\n </span>\n ) : safeHref ? (\n <a className=\"lsg-breadcrumb__link\" href={safeHref}>\n {item.label}\n </a>\n ) : (\n <span className=\"lsg-breadcrumb__ancestor\">{item.label}</span>\n )}\n </li>\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n","import React from \"react\";\nimport \"./LsgLogo.scss\";\n\nexport interface LsgLogoProps {\n /** Image src. When omitted, renders a text logo. */\n src?: string;\n alt?: string;\n href?: string;\n width?: number;\n height?: number;\n /** Fallback text shown when no src is provided */\n text?: string;\n}\n\nexport const LsgLogo: React.FC<LsgLogoProps> = ({\n src,\n alt = \"Logo\",\n href = \"/\",\n width,\n height = 40,\n text = \"Atlas Copco\",\n}) => {\n const content = src ? (\n <img\n src={src}\n alt={alt}\n width={width}\n height={height}\n className=\"lsg-logo__image\"\n />\n ) : (\n <span className=\"lsg-logo__text\">{text}</span>\n );\n\n return (\n <a href={href} className=\"lsg-logo\" aria-label={src ? alt : undefined}>\n {content}\n </a>\n );\n};\n","import React from \"react\";\nimport \"./LsgNavigation.scss\";\n\nexport interface LsgNavItem {\n label: string;\n href: string;\n current?: boolean;\n open?: boolean;\n children?: LsgNavItem[];\n}\n\nexport interface LsgNavigationProps {\n items: LsgNavItem[];\n /** Accessible label for the <nav> landmark */\n label?: string;\n variant?: \"simple\" | \"dropdown\" | \"mega\";\n onItemClick?: (item: LsgNavItem, level: number) => void;\n onItemHover?: (item: LsgNavItem, level: number) => void;\n}\n\nexport const LsgNavigation: React.FC<LsgNavigationProps> = ({\n items,\n label = \"Main navigation\",\n variant = \"simple\",\n onItemClick,\n onItemHover,\n}) => {\n const renderItems = (navItems: LsgNavItem[], level = 0) => (\n <ul className={level === 0 ? \"lsg-nav__list\" : \"lsg-nav__dropdown\"} role=\"list\">\n {navItems.map((item) => {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <li\n key={`${item.href}-${level}`}\n className={[\n \"lsg-nav__item\",\n hasChildren ? \"lsg-nav__item--has-children\" : \"\",\n item.open ? \"lsg-nav__item--open\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => {\n if (onItemHover && hasChildren) {\n onItemHover(item, level);\n }\n }}\n >\n <a\n href={item.href}\n onClick={(event) => {\n if (onItemClick && hasChildren) {\n event.preventDefault();\n onItemClick(item, level);\n }\n }}\n className={[\"lsg-nav__link\", item.current ? \"lsg-nav__link--current\" : \"\"]\n .filter(Boolean)\n .join(\" \")}\n aria-current={item.current ? \"page\" : undefined}\n aria-expanded={variant === \"dropdown\" && hasChildren ? item.open : undefined}\n >\n <p>{item.label}</p>\n {hasChildren && (\n <span className=\"lsg-nav__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 10 5\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\">\n <path\n d=\"M1 0.5L5 4.5L9 0.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n </a>\n {hasChildren && renderItems(item.children || [], level + 1)}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav className={[\"lsg-nav\", `lsg-nav--${variant}`].join(\" \")} aria-label={label}>\n {renderItems(items)}\n </nav>\n );\n};\n","import React, { useState, useRef, useEffect, useId } from \"react\";\nimport \"./LsgLanguageSwitcher.scss\";\nimport { LsgIcon } from \"../../../utils\";\n\nexport interface LsgLanguage {\n code: string;\n label: string;\n href: string;\n}\n\nexport interface LsgLanguageSwitcherProps {\n currentLanguage: string;\n languages: LsgLanguage[];\n /** Accessible label for the trigger button */\n label?: string;\n /** Called when a language is selected. Prevents link navigation when provided. */\n onLanguageChange?: (language: LsgLanguage) => void;\n}\n\nconst ChevronIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"2 4 6 8 10 4\" />\n </svg>\n);\n\n/**\n * Language Switcher\n *\n * Hydrated: state managed by React (useState).\n * Clientlib-only: driven by lsg-clientlib.js targeting [data-lsg-lang-switcher].\n */\nexport const LsgLanguageSwitcher: React.FC<LsgLanguageSwitcherProps> = ({\n currentLanguage,\n languages,\n label = \"Select language\",\n onLanguageChange,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const reactId = useId();\n const triggerId = `lsg-lang-trigger-${reactId}`;\n const dropdownId = `lsg-lang-dropdown-${reactId}`;\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handleClick = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [isOpen]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [isOpen]);\n\n return (\n <div className=\"lsg-lang-switcher\" ref={containerRef} data-lsg-lang-switcher>\n <button\n id={triggerId}\n type=\"button\"\n className=\"lsg-lang-switcher__trigger\"\n aria-label={label}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={dropdownId}\n onClick={() => setIsOpen((prev) => !prev)}\n >\n <LsgIcon name=\"globe\" className=\"lsg-lang-switcher__globe\" />\n <span className=\"lsg-lang-switcher__current\">{currentLanguage}</span>\n <ChevronIcon />\n </button>\n\n {isOpen && (\n <ul\n id={dropdownId}\n className=\"lsg-lang-switcher__dropdown\"\n role=\"listbox\"\n aria-labelledby={triggerId}\n >\n {languages.map((lang) => (\n <li key={lang.code} className=\"lsg-lang-switcher__option\" role=\"option\">\n <a\n href={lang.href}\n className={[\n \"lsg-lang-switcher__option-link\",\n lang.code === currentLanguage ? \"lsg-lang-switcher__option-link--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-current={lang.code === currentLanguage ? true : undefined}\n onClick={(event) => {\n if (!onLanguageChange) return;\n\n event.preventDefault();\n onLanguageChange(lang);\n setIsOpen(false);\n }}\n >\n {lang.label}\n </a>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgSearchTrigger.scss\";\n\nexport interface LsgSearchTriggerProps {\n /** Accessible label for the button */\n label?: string;\n /** id of the search overlay this button controls */\n targetId?: string;\n onClick?: () => void;\n}\n\nconst SearchIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nexport const LsgSearchTrigger: React.FC<LsgSearchTriggerProps> = ({\n label = \"Open search\",\n targetId,\n onClick,\n}) => {\n return (\n <button\n type=\"button\"\n className=\"lsg-search-trigger\"\n aria-label={label}\n aria-haspopup=\"dialog\"\n aria-controls={targetId}\n onClick={onClick}\n data-lsg-search-trigger\n >\n <SearchIcon />\n </button>\n );\n};\n","import React, { useEffect, useRef } from \"react\";\nimport \"./LsgSearchOverlay.scss\";\n\nexport interface LsgSearchOverlayProps {\n id?: string;\n placeholder?: string;\n /** Accessible label for the search input */\n label?: string;\n isOpen?: boolean;\n onClose?: () => void;\n onSearch?: (query: string) => void;\n}\n\nconst SearchIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\n/**\n * Search Overlay\n *\n * Hydrated: isOpen/onClose controlled by parent (e.g. LsgHeader).\n * Clientlib-only: driven by lsg-clientlib.js targeting [data-lsg-search-overlay].\n * The CSS class lsg-search-overlay--open drives visibility in both modes.\n */\nexport const LsgSearchOverlay: React.FC<LsgSearchOverlayProps> = ({\n id = \"lsg-search-overlay\",\n placeholder = \"Search…\",\n label = \"Search\",\n isOpen = false,\n onClose,\n onSearch,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = `${id}-input`;\n\n // Focus the input when overlay opens\n useEffect(() => {\n if (isOpen) inputRef.current?.focus();\n }, [isOpen]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [isOpen, onClose]);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const query = inputRef.current?.value ?? \"\";\n if (query.trim()) onSearch?.(query.trim());\n };\n\n const overlayClass = [\"lsg-search-overlay\", isOpen ? \"lsg-search-overlay--open\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n id={id}\n className={overlayClass}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={label}\n data-lsg-search-overlay\n >\n {/* Backdrop close */}\n <div\n className=\"lsg-search-overlay__backdrop\"\n aria-hidden=\"true\"\n onClick={onClose}\n style={{ position: \"absolute\", inset: 0, cursor: \"default\" }}\n />\n <div className=\"lsg-search-overlay__panel\">\n <form className=\"lsg-search-overlay__form\" role=\"search\" onSubmit={handleSubmit}>\n <label htmlFor={inputId} className=\"lsg-search-overlay__label\">\n <SearchIcon />\n <span className=\"lsg-visually-hidden\">{label}</span>\n </label>\n <input\n id={inputId}\n ref={inputRef}\n type=\"search\"\n className=\"lsg-search-overlay__input\"\n placeholder={placeholder}\n autoComplete=\"off\"\n />\n <button type=\"submit\" className=\"lsg-search-overlay__submit\" aria-label=\"Submit search\">\n <SearchIcon />\n </button>\n <button\n type=\"button\"\n className=\"lsg-search-overlay__close\"\n aria-label=\"Close search\"\n onClick={onClose}\n >\n <CloseIcon />\n </button>\n </form>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport \"./LsgHeader.scss\";\nimport { LsgLogo, LsgLogoProps } from \"../LsgLogo\";\nimport { LsgNavigation, LsgNavItem } from \"../LsgNavigation\";\nimport { LsgLanguage, LsgLanguageSwitcher } from \"../LsgLanguageSwitcher\";\nimport { LsgSearchOverlay } from \"../LsgSearchOverlay\";\nimport { LsgIcon, LsgIconName } from \"../../../utils\";\n\nexport type LsgHeaderSize = \"full-width\" | \"medium\" | \"narrow\";\n\nexport interface LsgHeaderProps {\n logo?: LsgLogoProps;\n navItems?: LsgNavItem[];\n languages?: LsgLanguage[];\n currentLanguage?: string;\n onLanguageChange?: (language: LsgLanguage) => void;\n searchLabel?: string;\n searchPlaceholder?: string;\n variant?: \"simple\" | \"dropdown\" | \"mega\";\n /**\n * Width of the header bar, mirroring the AEM `./headerSize` dialog select.\n * Left undefined on purpose so no modifier class is emitted and the theme's\n * own header width applies. Styled for theme 1 only.\n */\n size?: LsgHeaderSize;\n menuOpen?: boolean;\n mobileLevel?: 0 | 1 | 2 | 3 | 4;\n activePath?: string[];\n mobileSelectedLabel?: string;\n onMenuToggle?: () => void;\n onNavItemHover?: (item: LsgNavItem, level: number) => void;\n onDropdownClose?: () => void;\n onMegaItemHover?: (item: LsgNavItem, level: number) => void;\n onMobileItemClick?: (item: LsgNavItem, level: number) => void;\n onMobileBreadcrumbClick?: (level: 0 | 1 | 2 | 3 | 4) => void;\n children?: React.ReactNode;\n}\n\nconst SEARCH_OVERLAY_ID = \"lsg-header-search-overlay\";\n\nconst LsgHeaderIcon: React.FC<{ name: LsgIconName; className?: string }> = ({\n name,\n className,\n}) => {\n return (\n <LsgIcon\n name={name}\n className={[\"lsg-header__icon\", `lsg-header__icon--${name}`, className || \"\"]\n .filter(Boolean)\n .join(\" \")}\n />\n );\n};\n\nconst getItemByPath = (\n items: LsgNavItem[],\n activePath: string[],\n depth: number\n): LsgNavItem | undefined => {\n let currentItems = items;\n let currentItem: LsgNavItem | undefined;\n\n for (let i = 0; i <= depth; i += 1) {\n currentItem = currentItems.find((item) => item.label === activePath[i]);\n currentItems = currentItem?.children || [];\n }\n\n return currentItem;\n};\n\nconst getItemsAtLevel = (\n items: LsgNavItem[],\n activePath: string[],\n level: number\n): LsgNavItem[] => {\n if (level <= 1) {\n return items;\n }\n\n return getItemByPath(items, activePath, level - 2)?.children || [];\n};\n\nconst getMegaColumns = (\n items: LsgNavItem[],\n activePath: string[],\n maxDepth = 4\n): LsgNavItem[][] => {\n const columns: LsgNavItem[][] = [items];\n let currentItems = items;\n\n activePath.slice(0, maxDepth - 1).forEach((label) => {\n const activeItem = currentItems.find((item) => item.label === label);\n\n if (activeItem?.children?.length) {\n columns.push(activeItem.children);\n currentItems = activeItem.children;\n }\n });\n\n return columns.slice(0, maxDepth);\n};\n\nconst isCurrentOrActiveAtLevel = (item: LsgNavItem, activePath: string[], level: number) =>\n item.current || activePath[level] === item.label;\n\nconst isSelectedAtLevel = (item: LsgNavItem, activePath: string[], level: number) =>\n activePath[level] === item.label;\n\nconst hasOpenNavItem = (items: LsgNavItem[]): boolean =>\n items.some((item) => item.open || hasOpenNavItem(item.children || []));\n\nconst clearMegaMenuBranch = (scope: ParentNode): void => {\n if (scope instanceof HTMLElement) {\n scope.classList.remove(\"lsg-header__mega-item--open\");\n scope.classList.remove(\"lsg-header__mega-column--open\");\n }\n\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--open\").forEach((item) => {\n item.classList.remove(\"lsg-header__mega-item--open\");\n });\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-column--open\").forEach((column) => {\n column.classList.remove(\"lsg-header__mega-column--open\");\n });\n};\n\nconst activateMegaMenuItem = (item: HTMLElement): void => {\n const parentColumn = item.parentElement;\n\n if (parentColumn) {\n Array.from(parentColumn.children).forEach((openItem) => {\n if (openItem !== item) {\n clearMegaMenuBranch(openItem as HTMLElement);\n }\n });\n }\n\n item.classList.add(\"lsg-header__mega-item--open\");\n item\n .querySelector<HTMLElement>(\":scope > .lsg-header__mega-column\")\n ?.classList.add(\"lsg-header__mega-column--open\");\n};\n\nconst HeaderActionButton: React.FC<{\n label: string;\n icon: LsgIconName;\n onClick?: () => void;\n controls?: string;\n className?: string;\n}> = ({ label, icon, onClick, controls, className }) => (\n <button\n type=\"button\"\n className={[\"lsg-header__icon-button\", className || \"\"].filter(Boolean).join(\" \")}\n aria-label={label}\n aria-controls={controls}\n onClick={onClick}\n data-lsg-search-trigger={icon === \"search\" ? \"\" : undefined}\n >\n <LsgHeaderIcon name={icon} />\n </button>\n);\n\nexport const LsgHeader: React.FC<LsgHeaderProps> = ({\n logo,\n navItems = [],\n languages = [],\n currentLanguage = \"EN\",\n onLanguageChange,\n searchLabel = \"Open search\",\n searchPlaceholder = \"Search products, documents...\",\n variant = \"simple\",\n size,\n menuOpen = false,\n mobileLevel = 0,\n activePath = [],\n mobileSelectedLabel,\n onMenuToggle,\n onNavItemHover,\n onDropdownClose,\n onMegaItemHover,\n onMobileItemClick,\n onMobileBreadcrumbClick,\n children,\n}) => {\n const [searchOpen, setSearchOpen] = useState(false);\n const headerRef = useRef<HTMLElement>(null);\n const mobileOpen = menuOpen || mobileLevel > 0;\n const columns = children ? [] : getMegaColumns(navItems, activePath);\n const mobileItems = getItemsAtLevel(navItems, activePath, mobileLevel || 1);\n const mobileBackLabel = activePath[activePath.length - 1] || \"menu\";\n const dropdownOpen = variant === \"dropdown\" && hasOpenNavItem(navItems);\n\n useEffect(() => {\n if (!menuOpen && !dropdownOpen) {\n return undefined;\n }\n\n const closeOnOutsidePointerDown = (event: MouseEvent | TouchEvent) => {\n if (headerRef.current?.contains(event.target as Node)) {\n return;\n }\n\n if (menuOpen) {\n onMenuToggle?.();\n }\n\n if (dropdownOpen) {\n onDropdownClose?.();\n }\n };\n\n document.addEventListener(\"mousedown\", closeOnOutsidePointerDown);\n document.addEventListener(\"touchstart\", closeOnOutsidePointerDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", closeOnOutsidePointerDown);\n document.removeEventListener(\"touchstart\", closeOnOutsidePointerDown);\n };\n }, [dropdownOpen, menuOpen, onDropdownClose, onMenuToggle]);\n\n useEffect(() => {\n if (variant !== \"mega\" || !children || !menuOpen || !headerRef.current) {\n return undefined;\n }\n\n const megaItems = Array.from(\n headerRef.current.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--has-children\")\n );\n const removeListeners = megaItems.map((item) => {\n const onMouseEnter = () => activateMegaMenuItem(item);\n const onFocusIn = () => activateMegaMenuItem(item);\n\n item.addEventListener(\"mouseenter\", onMouseEnter);\n item.addEventListener(\"focusin\", onFocusIn);\n\n return () => {\n item.removeEventListener(\"mouseenter\", onMouseEnter);\n item.removeEventListener(\"focusin\", onFocusIn);\n };\n });\n\n return () => {\n removeListeners.forEach((removeListener) => removeListener());\n if (headerRef.current) {\n clearMegaMenuBranch(headerRef.current);\n }\n };\n }, [children, menuOpen, variant]);\n\n const openSearch = () => setSearchOpen(true);\n\n const renderActions = (showMenu = false) => (\n <div className=\"lsg-header__actions\">\n {showMenu && variant === \"mega\" && (\n <>\n <button\n type=\"button\"\n className=\"lsg-header__menu-trigger\"\n aria-label={menuOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n data-lsg-menu-trigger\n >\n <LsgHeaderIcon name={menuOpen ? \"close\" : \"bars\"} />\n <span>{menuOpen ? \"CLOSE\" : \"MENU\"}</span>\n </button>\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n </>\n )}\n <HeaderActionButton\n label={searchLabel}\n icon=\"search\"\n controls={SEARCH_OVERLAY_ID}\n onClick={openSearch}\n />\n {languages.length > 0 && (\n <LsgLanguageSwitcher\n currentLanguage={currentLanguage}\n languages={languages}\n label={`Current language: ${currentLanguage}`}\n onLanguageChange={onLanguageChange}\n />\n )}\n </div>\n );\n\n const renderMegaPanel = () => (\n <div className=\"lsg-header__mega-panel\">\n <div className=\"lsg-header__mega-inner\">\n {columns.map((columnItems, columnIndex) => (\n <ul key={`mega-column-${columnIndex}`} className=\"lsg-header__mega-column\" role=\"list\">\n {columnItems.map((item) => {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <li\n key={`${item.href}-${columnIndex}`}\n className={[\n \"lsg-header__mega-item\",\n hasChildren ? \"lsg-header__mega-item--has-children\" : \"\",\n isSelectedAtLevel(item, activePath, columnIndex)\n ? \"lsg-header__mega-item--active\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => {\n if (onMegaItemHover && hasChildren) {\n onMegaItemHover(item, columnIndex);\n }\n }}\n >\n <a href={item.href} className=\"lsg-header__mega-link\">\n <span>{item.label}</span>\n {hasChildren && <LsgHeaderIcon name=\"chevronRight\" />}\n </a>\n </li>\n );\n })}\n </ul>\n ))}\n </div>\n </div>\n );\n\n const renderMobileMenu = () => (\n <div className=\"lsg-header__mobile-panel\">\n {variant === \"dropdown\" ? (\n <LsgNavigation\n items={navItems}\n variant=\"dropdown\"\n onItemClick={(item, level) => onMobileItemClick?.(item, level + 1)}\n />\n ) : (\n <>\n {variant === \"mega\" && mobileLevel > 1 && (\n <nav className=\"lsg-header__mobile-back\" aria-label=\"Menu navigation\">\n <button\n type=\"button\"\n className=\"lsg-header__mobile-back-button\"\n aria-label={`Back to ${mobileBackLabel}`}\n onClick={() =>\n onMobileBreadcrumbClick?.(Math.max(1, mobileLevel - 1) as 1 | 2 | 3 | 4)\n }\n >\n <LsgHeaderIcon name=\"chevronRight\" />\n <span>Back to {mobileBackLabel}</span>\n </button>\n </nav>\n )}\n\n <ul className=\"lsg-header__mobile-list\" role=\"list\">\n {mobileItems.map((item, index) => {\n const hasChildren = Boolean(item.children?.length);\n const isSelected = mobileSelectedLabel\n ? item.label === mobileSelectedLabel\n : isCurrentOrActiveAtLevel(item, activePath, Math.max(0, mobileLevel - 1));\n\n return (\n <li\n key={`${item.href}-mobile-${index}`}\n className={[\n \"lsg-header__mobile-item\",\n hasChildren ? \"lsg-header__mobile-item--has-children\" : \"\",\n isSelected ? \"lsg-header__mobile-item--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <a\n href={item.href}\n className=\"lsg-header__mobile-link\"\n onClick={(event) => {\n if (onMobileItemClick && hasChildren) {\n event.preventDefault();\n onMobileItemClick(item, Math.max(1, mobileLevel || 1));\n }\n }}\n >\n <span>{item.label}</span>\n {hasChildren && <LsgHeaderIcon name=\"chevronRight\" />}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n )}\n </div>\n );\n\n return (\n <>\n <LsgSearchOverlay\n id={SEARCH_OVERLAY_ID}\n isOpen={searchOpen}\n onClose={() => setSearchOpen(false)}\n placeholder={searchPlaceholder}\n />\n <header\n ref={headerRef}\n className={[\n \"lsg-header\",\n `lsg-header--${variant}`,\n size ? `lsg-header--size-${size}` : \"\",\n menuOpen ? \"lsg-header--menu-open\" : \"\",\n `lsg-header--mobile-level-${mobileLevel}`,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <div className=\"lsg-header__inner\">\n <div className=\"lsg-logo-decorator\">\n <div className=\"lsg-logo\">\n <LsgLogo {...logo} />\n </div>\n </div>\n\n {variant !== \"mega\" && navItems.length > 0 && (\n <div className=\"lsg-header__nav\">\n <LsgNavigation items={navItems} variant={variant} onItemHover={onNavItemHover} />\n </div>\n )}\n\n {variant === \"mega\" && (\n <div className=\"lsg-header__desktop-menu\">{renderActions(true)}</div>\n )}\n\n {variant !== \"mega\" && (\n <div className=\"lsg-header__desktop-actions\">\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n {renderActions(false)}\n </div>\n )}\n\n <div className=\"lsg-header__mobile-actions\">\n <HeaderActionButton\n label={searchLabel}\n icon=\"search\"\n controls={SEARCH_OVERLAY_ID}\n onClick={openSearch}\n />\n {languages.length > 0 && (\n <LsgLanguageSwitcher\n currentLanguage={currentLanguage}\n languages={languages}\n label={`Current language: ${currentLanguage}`}\n onLanguageChange={onLanguageChange}\n />\n )}\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n <button\n type=\"button\"\n className=\"lsg-header__icon-button\"\n aria-label={mobileOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={mobileOpen}\n onClick={onMenuToggle}\n data-lsg-menu-trigger\n >\n <LsgHeaderIcon name={mobileOpen ? \"close\" : \"bars\"} />\n </button>\n </div>\n </div>\n\n {variant === \"mega\" && menuOpen && (children || renderMegaPanel())}\n {mobileOpen && renderMobileMenu()}\n </header>\n\n \n </>\n );\n};\n","import React from \"react\";\nimport \"./LsgQuickLinks.scss\";\n\nexport interface LsgQuickLink {\n label: string;\n href: string;\n}\n\nexport interface LsgQuickLinksProps {\n heading?: string;\n links: LsgQuickLink[];\n}\n\nexport const LsgQuickLinks: React.FC<LsgQuickLinksProps> = ({ heading, links }) => {\n return (\n <nav className=\"lsg-quick-links\" aria-label={heading ?? \"Quick links\"}>\n {heading && <p className=\"lsg-quick-links__heading\" aria-hidden=\"true\">{heading}</p>}\n <ul className=\"lsg-quick-links__list\" role=\"list\">\n {links.map((link) => (\n <li key={link.href} className=\"lsg-quick-links__item\">\n <a href={link.href} className=\"lsg-quick-links__link\">\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import React from \"react\";\nimport \"./LsgSocialMediaIcons.scss\";\n\nexport type LsgSocialPlatform =\n | \"linkedin\"\n | \"twitter\"\n | \"facebook\"\n | \"instagram\"\n | \"youtube\";\n\nexport interface LsgSocialItem {\n platform: LsgSocialPlatform;\n href: string;\n /** Screen-reader label, e.g. \"Atlas Copco on LinkedIn\" */\n label: string;\n}\n\nexport interface LsgSocialMediaIconsProps {\n items: LsgSocialItem[];\n}\n\nconst platformIcons: Record<LsgSocialPlatform, React.ReactElement> = {\n linkedin: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.95v5.66H9.34V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.07 2.07 0 1 1 0-4.14 2.07 2.07 0 0 1 0 4.14zM7.12 20.45H3.55V9h3.57v11.45z\" />\n </svg>\n ),\n twitter: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n ),\n facebook: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047V9.41c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.97h-1.513c-1.491 0-1.956.93-1.956 1.874v2.25h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z\" />\n </svg>\n ),\n instagram: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.406-11.845a1.44 1.44 0 1 0 0 2.881 1.44 1.44 0 0 0 0-2.881z\" />\n </svg>\n ),\n youtube: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />\n </svg>\n ),\n};\n\nexport const LsgSocialMediaIcons: React.FC<LsgSocialMediaIconsProps> = ({ items }) => {\n return (\n <ul className=\"lsg-social-icons\" role=\"list\">\n {items.map((item) => (\n <li key={item.platform} className=\"lsg-social-icons__item\">\n <a\n href={item.href}\n className=\"lsg-social-icons__link\"\n aria-label={item.label}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {platformIcons[item.platform]}\n </a>\n </li>\n ))}\n </ul>\n );\n};\n","import React from \"react\";\nimport \"./LsgFooter.scss\";\nimport { LsgLogo, LsgLogoProps } from \"../LsgLogo\";\n\nexport interface LsgFooterNavItem {\n label: string;\n href: string;\n}\n\nexport interface LsgFooterContact {\n address?: string;\n phone?: string;\n fax?: string;\n email?: string;\n}\n\nexport interface LsgFooterColHeadings {\n contact?: string;\n quickLinks?: string;\n about?: string;\n contactAlt?: string;\n}\n\nexport interface LsgFooterProps {\n variant?: \"simple\" | \"complex\";\n /** 2-row simple variant (brand line top row, cookie+copyright+AI bottom row) */\n simpleTwoRow?: boolean;\n /** Brand line shown in simple 2-row top or complex footer below logo */\n brandLine?: string;\n /** Column layout for complex variant. Default: \"2col\" */\n complexColumns?: \"2col\" | \"3col\";\n /** Show \"This Website Is Translated With AI\" badge */\n showAiBadge?: boolean;\n /** Cookie settings link text (shown in 2-row simple or complex bottom bar) */\n cookieSetting?: string;\n logo?: LsgLogoProps;\n navItems?: LsgFooterNavItem[];\n contact?: LsgFooterContact;\n quickLinks?: LsgFooterNavItem[];\n copyright?: string;\n /** Column headings for complex footer */\n colHeadings?: LsgFooterColHeadings;\n /** Social icon links shown in complex footer */\n socialLinks?: {\n platform: \"facebook\" | \"twitter\" | \"linkedin\" | \"youtube\" | \"instagram\";\n href: string;\n }[];\n /** Where to show social icons in complex variant: \"body\" | \"bottom-bar\". Default: \"body\" */\n socialPosition?: \"body\" | \"bottom-bar\";\n className?: string;\n}\n\nconst PhoneIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Pro v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. */}\n <path\n d=\"M252.6 259L304.4 208L208.4 48L64.4 128L64.4 144C64.4 382.6 257.8 576 496.4 576L512.4 576L592.4 432L432.4 336L381.4 387.8C322.2 365 275.4 318.2 252.6 259zM440.1 396.6L527.9 449.3L484.3 527.8C281.9 521.5 118.9 358.6 112.6 156.1L191.1 112.5L243.8 200.3C226.8 217.1 211 232.6 196.5 246.9L207.8 276.3C235.5 348.2 292.3 404.9 364.1 432.6L393.5 443.9C407.8 429.4 423.3 413.6 440.1 396.6z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst FaxIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M16 6h-1V2H5v4H4c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h1v2h10v-2h1c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zM7 4h6v2H7V4zm6 12H7v-4h6v4zm3-5H4V8h12v3z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst MailIcon = () => (\n <svg\n width=\"24\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Pro v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. */}\n <path\n d=\"M88 128L64 128L64 512L576 512L576 128L88 128zM528 192L528 196.1L320 353.9L112 196.1L112 176L528 176L528 192zM528 256.3L528 464L112 464L112 256.3L305.5 403.1L320 414.1L334.5 403.1L528 256.3z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst LocationIcon = () => (\n <svg\n width=\"18\"\n height=\"21\"\n viewBox=\"0 0 18 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9 0C5.13 0 2 3.13 2 7c0 5.25 7 13 7 13s7-7.75 7-13C16 3.13 12.87 0 9 0zm0 9.5C7.62 9.5 6.5 8.38 6.5 7S7.62 4.5 9 4.5 11.5 5.62 11.5 7 10.38 9.5 9 9.5z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst AiBadge = () => (\n <span className=\"lsg-footer__ai-badge\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M2 12h20M12 2a15.3 15.3 0 0 1 0 20M12 2a15.3 15.3 0 0 0 0 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </svg>\n This Website Is Translated With AI\n </span>\n);\n\nconst SocialIcon: React.FC<{ platform: string }> = ({ platform }) => {\n const icons: Record<string, React.ReactNode> = {\n facebook: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M240 363.3L240 576L356 576L356 363.3L442.5 363.3L460.5 265.5L356 265.5L356 230.9C356 179.2 376.3 159.4 428.7 159.4C445 159.4 458.1 159.8 465.7 160.6L465.7 71.9C451.4 68 416.4 64 396.2 64C289.3 64 240 114.5 240 223.4L240 265.5L174 265.5L174 363.3L240 363.3z\" />\n </svg>\n ),\n twitter: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n ),\n linkedin: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z\" />\n </svg>\n ),\n youtube: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z\" />\n </svg>\n ),\n instagram: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M320.3 205C256.8 204.8 205.2 256.2 205 319.7C204.8 383.2 256.2 434.8 319.7 435C383.2 435.2 434.8 383.8 435 320.3C435.2 256.8 383.8 205.2 320.3 205zM319.7 245.4C360.9 245.2 394.4 278.5 394.6 319.7C394.8 360.9 361.5 394.4 320.3 394.6C279.1 394.8 245.6 361.5 245.4 320.3C245.2 279.1 278.5 245.6 319.7 245.4zM413.1 200.3C413.1 185.5 425.1 173.5 439.9 173.5C454.7 173.5 466.7 185.5 466.7 200.3C466.7 215.1 454.7 227.1 439.9 227.1C425.1 227.1 413.1 215.1 413.1 200.3zM542.8 227.5C541.1 191.6 532.9 159.8 506.6 133.6C480.4 107.4 448.6 99.2 412.7 97.4C375.7 95.3 264.8 95.3 227.8 97.4C192 99.1 160.2 107.3 133.9 133.5C107.6 159.7 99.5 191.5 97.7 227.4C95.6 264.4 95.6 375.3 97.7 412.3C99.4 448.2 107.6 480 133.9 506.2C160.2 532.4 191.9 540.6 227.8 542.4C264.8 544.5 375.7 544.5 412.7 542.4C448.6 540.7 480.4 532.5 506.6 506.2C532.8 480 541 448.2 542.8 412.3C544.9 375.3 544.9 264.5 542.8 227.5zM495 452C487.2 471.6 472.1 486.7 452.4 494.6C422.9 506.3 352.9 503.6 320.3 503.6C287.7 503.6 217.6 506.2 188.2 494.6C168.6 486.8 153.5 471.7 145.6 452C133.9 422.5 136.6 352.5 136.6 319.9C136.6 287.3 134 217.2 145.6 187.8C153.4 168.2 168.5 153.1 188.2 145.2C217.7 133.5 287.7 136.2 320.3 136.2C352.9 136.2 423 133.6 452.4 145.2C472 153 487.1 168.1 495 187.8C506.7 217.3 504 287.3 504 319.9C504 352.5 506.7 422.6 495 452z\" />\n </svg>\n ),\n };\n return <>{icons[platform] ?? null}</>;\n};\n\nconst SocialIconsRow: React.FC<{ links: NonNullable<LsgFooterProps[\"socialLinks\"]> }> = ({\n links,\n}) => (\n <div className=\"lsg-footer__bottom-social\">\n {links.map((l) => (\n <a\n key={l.platform}\n href={l.href}\n aria-label={l.platform}\n style={{ color: \"inherit\", display: \"inline-flex\", alignItems: \"center\", opacity: 0.8 }}\n >\n <SocialIcon platform={l.platform} />\n </a>\n ))}\n </div>\n);\n\nexport const LsgFooter: React.FC<LsgFooterProps> = ({\n variant = \"simple\",\n simpleTwoRow = false,\n brandLine = \"Part of Atlas Copco Group\",\n complexColumns = \"2col\",\n showAiBadge = false,\n cookieSetting,\n logo,\n navItems = [],\n contact,\n quickLinks = [],\n copyright,\n colHeadings,\n socialLinks,\n socialPosition = \"body\",\n className = \"\",\n}) => {\n const year = new Date().getFullYear();\n const copyrightText = copyright ?? `© ${year} Brand - Part of Atlas Copco Group`;\n\n // ── Simple footer ──────────────────────────────────────────────────────────\n if (variant === \"simple\") {\n if (simpleTwoRow) {\n return (\n <footer\n className={`lsg-footer lsg-footer--simple lsg-footer--simple-tworow${\n className ? ` ${className}` : \"\"\n }`}\n >\n <div className=\"lsg-footer__simple-top\">\n <div className=\"lsg-footer__brand-line\">\n <span>{brandLine}</span>\n </div>\n {navItems.length > 0 && (\n <nav className=\"lsg-footer__simple-nav\" aria-label=\"Footer navigation\">\n {navItems.map((item, i) => (\n <React.Fragment key={item.href}>\n {i > 0 && (\n <span className=\"lsg-footer__pipe\" aria-hidden=\"true\">\n |\n </span>\n )}\n <a href={item.href} className=\"lsg-footer__simple-nav-item\">\n {item.label}\n </a>\n </React.Fragment>\n ))}\n </nav>\n )}\n </div>\n <div className=\"lsg-footer__simple-bottom\">\n <div className=\"lsg-footer__simple-bottom-left\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && (\n <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n )\n }\n </div>\n {showAiBadge && <AiBadge />}\n </div>\n </footer>\n );\n }\n\n return (\n <footer className={`lsg-footer lsg-footer--simple${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__simple-inner\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n <div className=\"lsg-footer__brand-line\">\n <span>{brandLine}</span>\n </div>\n {navItems.length > 0 && (\n <nav className=\"lsg-footer__simple-nav\" aria-label=\"Footer navigation\">\n {navItems.map((item, i) => (\n <React.Fragment key={item.href}>\n {i > 0 && (\n <>\n <span className=\"lsg-footer__pipe\" aria-hidden=\"true\">\n |\n </span>\n <hr className=\"lsg-footer__mobile-divider\" aria-hidden=\"true\" />\n </>\n )}\n <a href={item.href} className=\"lsg-footer__simple-nav-item\">\n {item.label}\n </a>\n </React.Fragment>\n ))}\n </nav>\n )}\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n }\n </div>\n </footer>\n );\n }\n\n // ── Complex footer ─────────────────────────────────────────────────────────\n const is3col = complexColumns === \"3col\";\n const headings = {\n contact: colHeadings?.contact ?? \"CONTACT\",\n quickLinks: colHeadings?.quickLinks ?? (is3col ? \"Quicklinks\" : \"QUICK LINKS\"),\n about: colHeadings?.about ?? \"About brand\",\n contactAlt: colHeadings?.contactAlt ?? \"Contact\",\n };\n\n const bottomTopBar = (\n <>\n <div className=\"lsg-footer__bottom-top\">\n <div className=\"lsg-footer__brand-line\">\n <span>\n Discover how the Atlas Copco Group enables technology that transforms the future.\n </span>\n </div>\n <div className=\"lsg-footer__body-social\">\n {socialPosition === \"body\" && socialLinks && socialLinks.length > 0 && (\n <SocialIconsRow links={socialLinks} />\n )}\n </div>\n </div>\n </>\n );\n\n const bottomBar = (\n <>\n <hr className=\"lsg-footer__bottom-divider\" />\n <div className=\"lsg-footer__bottom\">\n <div className=\"lsg-footer__bottom-left\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n }\n\n {is3col && showAiBadge && <AiBadge />}\n </div>\n {!is3col && showAiBadge && <AiBadge />}\n {socialPosition === \"bottom-bar\" && socialLinks && socialLinks.length > 0 && (\n <SocialIconsRow links={socialLinks} />\n )}\n </div>\n </>\n );\n\n if (is3col) {\n return (\n <footer className={`lsg-footer lsg-footer--complex${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__complex-inner\">\n {logo && (\n <div className=\"lsg-footer__logo-col\">\n <LsgLogo {...logo} />\n {brandLine && <span className=\"lsg-footer__brand-line\">{brandLine}</span>}\n </div>\n )}\n <div className=\"lsg-footer__content-cols lsg-footer__content-cols--3col\">\n <div className=\"lsg-footer__about-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.about}</h3>\n {contact?.address && (\n <div className=\"lsg-footer__address\">\n <LocationIcon />\n <p>{contact.address}</p>\n </div>\n )}\n </div>\n <div className=\"lsg-footer__contact-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.contactAlt}</h3>\n <div className=\"lsg-footer__contact-items\">\n {contact?.phone && (\n <div className=\"lsg-footer__contact-item\">\n <PhoneIcon />\n <span>{contact.phone}</span>\n </div>\n )}\n {contact?.fax && (\n <div className=\"lsg-footer__contact-item\">\n <FaxIcon />\n <span>{contact.fax}</span>\n </div>\n )}\n {contact?.email && (\n <div className=\"lsg-footer__contact-item\">\n <MailIcon />\n <a href={`mailto:${contact.email}`}>{contact.email}</a>\n </div>\n )}\n </div>\n </div>\n {quickLinks.length > 0 && (\n <div className=\"lsg-footer__quicklinks-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.quickLinks}</h3>\n <ul className=\"lsg-footer__quicklinks-list\">\n {quickLinks.map((link, i) => (\n <li key={link.href ?? i} className=\"lsg-footer__quicklink-item\">\n <a href={link.href} className=\"lsg-footer__quicklink\">\n {link.label}\n </a>\n <hr className=\"lsg-footer__divider\" />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n {bottomTopBar}\n {bottomBar}\n </footer>\n );\n }\n\n return (\n <footer className={`lsg-footer lsg-footer--complex${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__complex-inner\">\n {logo && (\n <div className=\"lsg-footer__logo-col\">\n <LsgLogo {...logo} />\n {brandLine && <span className=\"lsg-footer__brand-line\">{brandLine}</span>}\n </div>\n )}\n <div className=\"lsg-footer__content-cols\">\n {contact && (\n <div className=\"lsg-footer__contact-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.contact}</h3>\n {contact.address && (\n <div className=\"lsg-footer__address\">\n <LocationIcon />\n <p>{contact.address}</p>\n </div>\n )}\n <hr className=\"lsg-footer__divider\" />\n <div className=\"lsg-footer__contact-items\">\n {contact.phone && (\n <div className=\"lsg-footer__contact-item\">\n <PhoneIcon />\n <span>{contact.phone}</span>\n </div>\n )}\n {contact.fax && (\n <div className=\"lsg-footer__contact-item\">\n <FaxIcon />\n <span>{contact.fax}</span>\n </div>\n )}\n {contact.email && (\n <div className=\"lsg-footer__contact-item\">\n <MailIcon />\n <a href={`mailto:${contact.email}`}>{contact.email}</a>\n </div>\n )}\n </div>\n </div>\n )}\n {quickLinks.length > 0 && (\n <div className=\"lsg-footer__quicklinks-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.quickLinks}</h3>\n <ul className=\"lsg-footer__quicklinks-list\">\n {quickLinks.map((link, i) => (\n <li key={link.href ?? i} className=\"lsg-footer__quicklink-item\">\n <a href={link.href} className=\"lsg-footer__quicklink\">\n {link.label}\n </a>\n <hr className=\"lsg-footer__divider\" />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n {bottomTopBar}\n {bottomBar}\n </footer>\n );\n};\n","function clampNumber(number, min, max) {\n return Math.min(Math.max(number, min), max);\n}\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction Fade(userOptions = {}) {\n const fullOpacity = 1;\n const noOpacity = 0;\n const fadeFriction = 0.68;\n let emblaApi;\n let opacities = [];\n let fadeToNextDistance;\n let distanceFromPointerDown = 0;\n let fadeVelocity = 0;\n let progress = 0;\n let shouldFadePair = false;\n let defaultSettledBehaviour;\n let defaultProgressBehaviour;\n function init(emblaApiInstance) {\n emblaApi = emblaApiInstance;\n const selectedSnap = emblaApi.selectedScrollSnap();\n const {\n scrollBody,\n containerRect,\n axis\n } = emblaApi.internalEngine();\n const containerSize = axis.measureSize(containerRect);\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500);\n shouldFadePair = false;\n opacities = emblaApi.scrollSnapList().map((_, index) => index === selectedSnap ? fullOpacity : noOpacity);\n defaultSettledBehaviour = scrollBody.settled;\n defaultProgressBehaviour = emblaApi.scrollProgress;\n scrollBody.settled = settled;\n emblaApi.scrollProgress = scrollProgress;\n emblaApi.on('select', select).on('slideFocus', fadeToSelectedSnapInstantly).on('pointerDown', pointerDown).on('pointerUp', pointerUp);\n disableScroll();\n fadeToSelectedSnapInstantly();\n }\n function destroy() {\n const {\n scrollBody\n } = emblaApi.internalEngine();\n scrollBody.settled = defaultSettledBehaviour;\n emblaApi.scrollProgress = defaultProgressBehaviour;\n emblaApi.off('select', select).off('slideFocus', fadeToSelectedSnapInstantly).off('pointerDown', pointerDown).off('pointerUp', pointerUp);\n emblaApi.slideNodes().forEach(slideNode => {\n const slideStyle = slideNode.style;\n slideStyle.opacity = '';\n slideStyle.transform = '';\n slideStyle.pointerEvents = '';\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style');\n });\n }\n function fadeToSelectedSnapInstantly() {\n const selectedSnap = emblaApi.selectedScrollSnap();\n setOpacities(selectedSnap, fullOpacity);\n }\n function pointerUp() {\n shouldFadePair = false;\n }\n function pointerDown() {\n shouldFadePair = false;\n distanceFromPointerDown = 0;\n fadeVelocity = 0;\n }\n function select() {\n const duration = emblaApi.internalEngine().scrollBody.duration();\n fadeVelocity = duration ? 0 : fullOpacity;\n shouldFadePair = true;\n if (!duration) fadeToSelectedSnapInstantly();\n }\n function getSlideTransform(position) {\n const {\n axis\n } = emblaApi.internalEngine();\n const translateAxis = axis.scroll.toUpperCase();\n return `translate${translateAxis}(${axis.direction(position)}px)`;\n }\n function disableScroll() {\n const {\n translate,\n slideLooper\n } = emblaApi.internalEngine();\n translate.clear();\n translate.toggleActive(false);\n slideLooper.loopPoints.forEach(({\n translate\n }) => {\n translate.clear();\n translate.toggleActive(false);\n });\n }\n function lockExcessiveScroll(fadeIndex) {\n const {\n scrollSnaps,\n location,\n target\n } = emblaApi.internalEngine();\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return;\n location.set(scrollSnaps[fadeIndex]);\n target.set(location);\n }\n function setOpacities(fadeIndex, velocity) {\n const scrollSnaps = emblaApi.scrollSnapList();\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity);\n const currentOpacity = opacities[indexA];\n const isFadeIndex = indexA === fadeIndex;\n const nextOpacity = isFadeIndex ? currentOpacity + absVelocity : currentOpacity - absVelocity;\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity);\n opacities[indexA] = clampedOpacity;\n const fadePair = isFadeIndex && shouldFadePair;\n const indexB = emblaApi.previousScrollSnap();\n if (fadePair) opacities[indexB] = 1 - clampedOpacity;\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity);\n setOpacity(indexA);\n });\n }\n function setOpacity(index) {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index];\n const {\n scrollSnaps,\n containerRect\n } = emblaApi.internalEngine();\n const opacity = opacities[index];\n slidesInSnap.forEach(slideIndex => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style;\n const roundedOpacity = parseFloat(opacity.toFixed(2));\n const hasOpacity = roundedOpacity > noOpacity;\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2;\n const transform = getSlideTransform(position);\n if (hasOpacity) slideStyle.transform = transform;\n slideStyle.opacity = roundedOpacity.toString();\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none';\n if (!hasOpacity) slideStyle.transform = transform;\n });\n }\n function setProgress(fadeIndex, opacity) {\n const {\n index,\n dragHandler,\n scrollSnaps\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const snapFraction = 1 / (scrollSnaps.length - 1);\n let indexA = fadeIndex;\n let indexB = pointerDown ? emblaApi.selectedScrollSnap() : emblaApi.previousScrollSnap();\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1;\n indexA = indexB;\n indexB = index.clone().set(indexB).add(reverseSign).get();\n }\n const currentPosition = indexB * snapFraction;\n const diffPosition = (indexA - indexB) * snapFraction;\n progress = currentPosition + diffPosition * opacity;\n }\n function getFadeIndex() {\n const {\n dragHandler,\n index,\n scrollBody\n } = emblaApi.internalEngine();\n const selectedSnap = emblaApi.selectedScrollSnap();\n if (!dragHandler.pointerDown()) return selectedSnap;\n const directionSign = Math.sign(scrollBody.velocity());\n const distanceSign = Math.sign(distanceFromPointerDown);\n const nextSnap = index.clone().set(selectedSnap).add(directionSign * -1).get();\n if (!directionSign || !distanceSign) return null;\n return distanceSign === directionSign ? nextSnap : selectedSnap;\n }\n function fade(emblaApi) {\n const {\n dragHandler,\n scrollBody\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const velocity = scrollBody.velocity();\n const duration = scrollBody.duration();\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n if (pointerDown) {\n if (!velocity) return;\n distanceFromPointerDown += velocity;\n fadeVelocity = Math.abs(velocity / fadeToNextDistance);\n lockExcessiveScroll(fadeIndex);\n }\n if (!pointerDown) {\n if (!duration || noFadeIndex) return;\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration;\n fadeVelocity *= fadeFriction;\n }\n if (noFadeIndex) return;\n setOpacities(fadeIndex, fadeVelocity);\n }\n function settled() {\n const {\n target,\n location\n } = emblaApi.internalEngine();\n const diffToTarget = target.get() - location.get();\n const notReachedTarget = Math.abs(diffToTarget) >= 1;\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n fade(emblaApi);\n if (noFadeIndex || notReachedTarget) return false;\n return opacities[fadeIndex] > 0.999;\n }\n function scrollProgress() {\n return progress;\n }\n const self = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n };\n return self;\n}\nFade.globalOptions = undefined;\n\nexport { Fade as default };\n//# sourceMappingURL=embla-carousel-fade.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\nimport EmblaCarouselFade from \"embla-carousel-fade\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroController — shared vanilla JS carousel controller\n// ─────────────────────────────────────────────────────────────────────────────\n//\n// Single source of truth for carousel behaviour. Used by:\n// 1. The React LsgHero component (via useEffect + refs)\n// 2. The AEM clientlib initHero function (directly on server-rendered DOM)\n//\n// This means carousel logic is written once and behaves identically in both\n// Storybook and AEM — no React-specific wrappers, no divergence.\n//\n// Usage:\n// const controller = new LsgHeroController(viewportEl, elements, options);\n// // later when unmounting:\n// controller.destroy();\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroControllerTransition = \"slide\" | \"fade\";\n\nexport interface LsgHeroControllerOptions {\n /** Slide transition style. Defaults to \"slide\". */\n transition?: LsgHeroControllerTransition;\n /** Enable autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n}\n\nexport interface LsgHeroControllerElements {\n /** Previous-slide button. */\n prevBtn?: HTMLElement | null;\n /** Next-slide button. */\n nextBtn?: HTMLElement | null;\n /** Scroll-down trigger button. */\n scrollDownBtn?: HTMLElement | null;\n /** Element to scroll into view when scroll-down is triggered. */\n scrollDownTarget?: HTMLElement | null;\n}\n\nexport class LsgHeroController {\n private embla: EmblaCarouselType | null = null;\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private contentObserver: ResizeObserver | null = null;\n private rafId: ReturnType<typeof requestAnimationFrame> | null = null;\n private readonly opts: Required<LsgHeroControllerOptions>;\n private readonly els: LsgHeroControllerElements;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgHeroControllerElements = {},\n options: LsgHeroControllerOptions = {}\n ) {\n this.opts = {\n transition: options.transition ?? \"slide\",\n autoplay: options.autoplay ?? true,\n autoplayInterval: options.autoplayInterval ?? 5000,\n };\n this.els = elements;\n this.mount(viewport);\n }\n\n private mount(viewport: HTMLElement): void {\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.addEventListener(\"click\", this.handleScrollDown);\n\n // First frame lets React's initial paint settle; second guarantees that\n // async-injected stylesheets (e.g. --lsg-hero-axis) have been computed.\n this.rafId = requestAnimationFrame(() => {\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n if (!viewport.isConnected) return;\n\n const section = viewport.closest<HTMLElement>(\"[data-lsg-is='hero']\");\n const axis: \"x\" | \"y\" =\n section && getComputedStyle(section).getPropertyValue(\"--lsg-hero-axis\").trim() === \"y\"\n ? \"y\"\n : \"x\";\n\n const plugins = this.opts.transition === \"fade\" ? [EmblaCarouselFade()] : [];\n this.embla = EmblaCarousel(viewport, { loop: true, axis }, plugins);\n\n if (this.opts.autoplay) {\n this.startAutoplay();\n this.embla.on(\"pointerDown\", this.stopAutoplay);\n this.embla.on(\"pointerUp\", this.startAutoplay);\n }\n\n // Sync the first slide's content-wrapper height to a CSS custom property\n // on the section root so the controls column can match it dynamically.\n const contentWrapper = section?.querySelector<HTMLElement>(\".lsg-hero-card__content-wrapper\");\n if (section && contentWrapper && typeof ResizeObserver !== \"undefined\") {\n const setHeight = (el: Element): void => {\n (section as HTMLElement).style.setProperty(\n \"--lsg-hero-content-height\",\n `${(el as HTMLElement).offsetHeight}px`\n );\n };\n setHeight(contentWrapper);\n this.contentObserver = new ResizeObserver((entries) => {\n setHeight(entries[0].target);\n });\n this.contentObserver.observe(contentWrapper);\n }\n\n // For vertical carousels the section height (100svh) cascades from a\n // useEffect-set data-lsg-theme attribute, which may land one frame after\n // this RAF. Re-measure so Embla has the correct slide dimensions.\n if (axis === \"y\") {\n requestAnimationFrame(() => {\n if (viewport.isConnected) this.embla?.reInit();\n });\n }\n });\n });\n }\n\n readonly scrollPrev = (): void => {\n this.embla?.scrollPrev();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n readonly scrollNext = (): void => {\n this.embla?.scrollNext();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n private readonly handleScrollDown = (): void => {\n this.els.scrollDownTarget?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n /** Start the autoplay interval (resets any existing timer). */\n readonly startAutoplay = (): void => {\n this.stopAutoplay();\n this.autoplayTimer = setInterval(this.scrollNext, this.opts.autoplayInterval);\n };\n\n /** Clear the autoplay interval. */\n readonly stopAutoplay = (): void => {\n if (this.autoplayTimer !== null) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n };\n\n /** Direct access to the underlying Embla instance for advanced usage. */\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n /** Tear down event listeners, autoplay, and the Embla instance. */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.stopAutoplay();\n this.contentObserver?.disconnect();\n this.contentObserver = null;\n if (this.embla) {\n this.embla.off(\"pointerDown\", this.stopAutoplay);\n this.embla.off(\"pointerUp\", this.startAutoplay);\n this.embla.destroy();\n this.embla = null;\n }\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.removeEventListener(\"click\", this.handleScrollDown);\n }\n}\n","import React, { useState } from \"react\";\nimport \"./LsgHeroCard.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Token names that map to `--lsg-color-*` custom properties. */\nexport type LsgHeroColorToken =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"light\"\n | \"dark\"\n | \"black\"\n | \"white\";\n\nexport interface LsgHeroCardProps {\n /** DAM/CDN URL for the background image. Used as poster/fallback for video. */\n imageSrc?: string;\n /** Alt text for the image. */\n imageAlt?: string;\n /** DAM/CDN URL for an mp4/webm video asset. */\n videoSrc?: string;\n /** YouTube video ID only (e.g. \"dQw4w9WgXcQ\"). */\n youtubeId?: string;\n /** Vimeo video ID only (e.g. \"148751763\"). */\n vimeoId?: string;\n /**\n * Background colour token for this card. Always tints the content text-box\n * (`lsg-hero-card--bg-{token}`). When the card has NO image/video, it instead\n * fills the whole card as a solid colour (`lsg-hero-card--fill-{token}`) with a\n * transparent content box.\n */\n cardBackground?: LsgHeroColorToken;\n /** Text colour token for this card's content (`lsg-hero-card--color-{token}`). */\n cardColor?: LsgHeroColorToken;\n /**\n * Content slot rendered on top of the media layer inside the white text-box\n * overlay. In AEM this is the parsys (container) inside each hero-card.\n * Accepts any LSG components: Title, Text, Button, etc.\n */\n children?: React.ReactNode;\n /** Index within the parent carousel — used for accessible label. */\n index?: number;\n /** Total slide count from the parent — used for accessible label. */\n total?: number;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroCard\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgHeroCard: React.FC<LsgHeroCardProps> = ({\n imageSrc,\n imageAlt = \"\",\n videoSrc,\n youtubeId,\n vimeoId,\n cardBackground,\n cardColor,\n children,\n index,\n total,\n className = \"\",\n}) => {\n const [videoReady, setVideoReady] = useState(false);\n\n // Video source priority: YouTube > Vimeo > DAM\n const hasYoutube = Boolean(youtubeId);\n const hasVimeo = !hasYoutube && Boolean(vimeoId);\n const hasDam = !hasYoutube && !hasVimeo && Boolean(videoSrc);\n\n // No image/video → the card renders as a solid colour (fill) instead of a\n // media backdrop; with media, cardBackground tints the content text-box.\n const hasMedia = Boolean(imageSrc || videoSrc || youtubeId || vimeoId);\n\n const youtubeEmbedSrc = youtubeId\n ? `https://www.youtube.com/embed/${youtubeId}?autoplay=1&mute=1&loop=1&controls=0&disablekb=1&fs=0&iv_load_policy=3&modestbranding=1&playlist=${youtubeId}&rel=0`\n : undefined;\n\n const vimeoEmbedSrc = vimeoId\n ? `https://player.vimeo.com/video/${vimeoId}?autoplay=1&loop=1&background=1&muted=1`\n : undefined;\n\n const ariaLabel =\n index !== undefined && total !== undefined\n ? `Slide ${index + 1} of ${total}`\n : undefined;\n\n const articleClasses = [\n \"lsg-hero-card\",\n // Background: tint the content box when there's media; fill the whole card when there isn't.\n cardBackground &&\n (hasMedia\n ? `lsg-hero-card--bg-${cardBackground}`\n : `lsg-hero-card--fill-${cardBackground}`),\n cardColor && `lsg-hero-card--color-${cardColor}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <article className={articleClasses} role=\"listitem\" aria-label={ariaLabel}>\n {/* ── Media layer ──────────────────────────────────────────────────── */}\n <div className=\"lsg-hero-card__media\" aria-hidden=\"true\">\n {imageSrc && (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n className=\"lsg-hero-card__image\"\n src={imageSrc}\n alt={imageAlt}\n loading=\"eager\"\n />\n )}\n\n {hasDam && (\n <video\n className={`lsg-hero-card__video${videoReady ? \" lsg-hero-card__video--ready\" : \"\"}`}\n autoPlay\n muted\n loop\n playsInline\n onCanPlay={() => setVideoReady(true)}\n >\n <source src={videoSrc} />\n </video>\n )}\n\n {hasYoutube && (\n <div className=\"lsg-hero-card__video-embed lsg-hero-card__video-embed--youtube\">\n <iframe\n src={youtubeEmbedSrc}\n title=\"Hero background video\"\n allow=\"autoplay\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n </div>\n )}\n\n {hasVimeo && (\n <div className=\"lsg-hero-card__video-embed lsg-hero-card__video-embed--vimeo\">\n <iframe\n src={vimeoEmbedSrc}\n title=\"Hero background video\"\n allow=\"autoplay\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n </div>\n )}\n </div>\n\n {/* ── Content slot (text-box overlay) ──────────────────────────────── */}\n <div className=\"lsg-hero-card__content layout-container--medium\">\n <div className=\"lsg-hero-card__content-wrapper\">\n {children}\n </div>\n </div>\n </article>\n );\n};\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { LsgHeroController } from \"./LsgHeroController\";\nimport { LsgHeroCard } from \"../LsgHeroCard/LsgHeroCard\";\nimport type { LsgHeroCardProps, LsgHeroColorToken } from \"../LsgHeroCard/LsgHeroCard\";\nimport \"./LsgHero.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroHeight = \"full\" | \"75vh\";\nexport type LsgHeroTransition = \"slide\" | \"fade\";\n\n/** Colour token type now lives on the card; re-exported here for back-compat. */\nexport type { LsgHeroColorToken };\n\n/**\n * A single hero slide. All media/content props are forwarded directly to\n * LsgHeroCard — see LsgHeroCardProps for full documentation.\n */\nexport type LsgHeroSlide = Omit<LsgHeroCardProps, \"index\" | \"total\">;\n\nexport interface LsgHeroProps {\n slides: LsgHeroSlide[];\n /** Minimum height of the hero. Defaults to \"full\" (100vh). */\n height?: LsgHeroHeight;\n /** Show previous/next arrow controls (only in carousel mode). */\n showArrows?: boolean;\n /** Slide transition. Defaults to \"slide\". */\n transition?: LsgHeroTransition;\n /** Render a scroll-down affordance at the bottom of the hero. */\n enableScrollDown?: boolean;\n /** Label for the scroll-down button. Icon-only when omitted. */\n scrollDownText?: string;\n /** Enable carousel autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHero\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgHero: React.FC<LsgHeroProps> = ({\n slides = [],\n height = \"full\",\n showArrows = true,\n transition = \"slide\",\n enableScrollDown = false,\n scrollDownText,\n autoplay = true,\n autoplayInterval = 5000,\n className = \"\",\n}) => {\n const isCarousel = slides.length > 1;\n\n // ── Refs ──────────────────────────────────────────────────────────────────\n const sectionRef = useRef<HTMLElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const prevBtnRef = useRef<HTMLButtonElement>(null);\n const nextBtnRef = useRef<HTMLButtonElement>(null);\n const controllerRef = useRef<LsgHeroController | null>(null);\n\n // ── Controller init (vanilla JS — same logic as AEM clientlib) ────────────\n useEffect(() => {\n if (!viewportRef.current || !isCarousel) return;\n\n controllerRef.current = new LsgHeroController(\n viewportRef.current,\n {\n prevBtn: showArrows ? prevBtnRef.current : undefined,\n nextBtn: showArrows ? nextBtnRef.current : undefined,\n },\n { transition, autoplay, autoplayInterval },\n );\n\n return () => {\n controllerRef.current?.destroy();\n controllerRef.current = null;\n };\n }, [isCarousel, showArrows, transition, autoplay, autoplayInterval]);\n\n // ── Scroll-down ───────────────────────────────────────────────────────────\n const handleScrollDown = useCallback(() => {\n const next = sectionRef.current?.nextElementSibling as HTMLElement | null;\n next?.scrollIntoView({ behavior: \"smooth\" });\n }, []);\n\n // ── Class names ───────────────────────────────────────────────────────────\n const sectionClasses = [\n \"lsg-hero\",\n `lsg-hero--${height}`,\n `lsg-hero--${transition}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n // ── Render ────────────────────────────────────────────────────────────────\n return (\n <section\n ref={sectionRef}\n className={sectionClasses}\n data-lsg-is=\"hero\"\n data-lsg-carousel={String(isCarousel)}\n data-lsg-transition={transition}\n data-lsg-arrows={String(showArrows)}\n >\n {/* Embla viewport */}\n <div className=\"lsg-hero__viewport\" ref={viewportRef}>\n <div className=\"lsg-hero__slides\" role=\"list\">\n {slides.map((slide, index) => (\n <LsgHeroCard\n key={index}\n {...slide}\n index={index}\n total={slides.length}\n />\n ))}\n </div>\n </div>\n\n {/* Carousel controls */}\n {isCarousel && showArrows && (\n <div className=\"lsg-hero__controls-wrap\">\n <nav className=\"lsg-hero__controls\" aria-label=\"Hero navigation\">\n <button\n ref={prevBtnRef}\n className=\"lsg-hero__prev\"\n type=\"button\"\n aria-label=\"Previous slide\"\n >\n <span className=\"lsg-hero__arrow-icon\" aria-hidden=\"true\" />\n </button>\n <button\n ref={nextBtnRef}\n className=\"lsg-hero__next\"\n type=\"button\"\n aria-label=\"Next slide\"\n >\n <span className=\"lsg-hero__arrow-icon\" aria-hidden=\"true\" />\n </button>\n </nav>\n </div>\n )}\n\n {/* Scroll-down affordance */}\n {enableScrollDown && (\n <div className=\"lsg-hero__scroll-down\">\n <button\n className=\"lsg-hero__scroll-down-btn\"\n type=\"button\"\n aria-label={scrollDownText ?? \"Scroll down\"}\n onClick={handleScrollDown}\n >\n {scrollDownText && (\n <span className=\"lsg-hero__scroll-down-text\">{scrollDownText}</span>\n )}\n <span className=\"lsg-hero__scroll-down-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n )}\n </section>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport \"./LsgTabs.scss\";\n\n// Matches $lsg-tabs-accordion-breakpoint in LsgTabs.scss ($breakpoint-sm - 1px)\n// and MOBILE_MEDIA_QUERY in lsg-clientlib-runtime.ts.\nconst MOBILE_MEDIA_QUERY = \"(max-width: 767px)\";\n\n// Sub-pixel layout rounding when comparing scroll offsets against extents\nconst SCROLL_EPSILON = 1;\n\nconst CHEVRON_SVG = (\n <svg\n className=\"lsg-tabs__tab-icon-svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M3 6L8 11L13 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport interface LsgTabsItem {\n id: string;\n title: string;\n content: React.ReactNode;\n}\n\nexport type LsgTabsVariant = \"default\" | \"vertical\";\n\nexport interface LsgTabsProps {\n items: LsgTabsItem[];\n /** Id of the initially selected tab. Defaults to the first item. */\n activeId?: string;\n /** Visual variant. Default: \"default\" */\n variant?: LsgTabsVariant;\n /** Value of aria-label on the tablist. */\n accessibilityLabel?: string;\n className?: string;\n}\n\nexport const LsgTabs: React.FC<LsgTabsProps> = ({\n items,\n activeId,\n variant = \"default\",\n accessibilityLabel,\n className = \"\",\n}) => {\n const [selectedId, setSelectedId] = useState<string>(activeId ?? items[0]?.id ?? \"\");\n // Below the breakpoint the tabs render as a single-open accordion and the open\n // header can be collapsed. Tracked separately from selection so exactly one tab\n // stays selected at every width — resizing back to desktop just reveals it again.\n const [collapsed, setCollapsed] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n // Scroll-arrow state. The arrows themselves are ::before / ::after on the root\n // (see LsgTabs.scss) — these only say whether there is more to reveal.\n const [scrollStart, setScrollStart] = useState(false);\n const [scrollEnd, setScrollEnd] = useState(false);\n\n const tabRefs = useRef<Record<string, HTMLLIElement | null>>({});\n const stripRef = useRef<HTMLOListElement | null>(null);\n\n const isVertical = variant === \"vertical\";\n\n const selectedIndex = Math.max(\n 0,\n items.findIndex((item) => item.id === selectedId)\n );\n\n useEffect(() => {\n const mql = window.matchMedia(MOBILE_MEDIA_QUERY);\n const sync = (): void => setIsMobile(mql.matches);\n sync();\n mql.addEventListener(\"change\", sync);\n return () => mql.removeEventListener(\"change\", sync);\n }, []);\n\n const updateArrows = (): void => {\n const strip = stripRef.current;\n // Below the breakpoint this is an accordion — nothing scrolls, so the arrows\n // must not be offered.\n if (!strip || isMobile) {\n setScrollStart(false);\n setScrollEnd(false);\n return;\n }\n\n const offset = isVertical ? strip.scrollTop : strip.scrollLeft;\n const visible = isVertical ? strip.clientHeight : strip.clientWidth;\n const total = isVertical ? strip.scrollHeight : strip.scrollWidth;\n\n setScrollStart(offset > SCROLL_EPSILON);\n setScrollEnd(offset + visible < total - SCROLL_EPSILON);\n };\n\n useEffect(() => {\n updateArrows();\n }, [isMobile, isVertical, items, selectedIndex]);\n\n useEffect(() => {\n const strip = stripRef.current;\n if (!strip || typeof ResizeObserver === \"undefined\") return;\n // The strip can start overflowing because its container changed, with no\n // viewport resize at all.\n const observer = new ResizeObserver(() => updateArrows());\n observer.observe(strip);\n return () => observer.disconnect();\n }, [isMobile, isVertical]);\n\n useEffect(() => {\n // A late web-font swap widens the labels, growing scrollWidth without changing\n // the strip's own box — so ResizeObserver may never fire. Re-measure once the\n // fonts have settled, otherwise the arrows can be stale on first paint.\n let cancelled = false;\n document.fonts?.ready.then(() => {\n if (!cancelled) updateArrows();\n });\n return () => {\n cancelled = true;\n };\n }, [isMobile, isVertical]);\n\n const scrollStrip = (direction: -1 | 1): void => {\n const strip = stripRef.current;\n if (!strip) return;\n // A step just under one viewport keeps a sliver of context in view\n const visible = isVertical ? strip.clientHeight : strip.clientWidth;\n const step = Math.max(visible * 0.8, 1);\n if (isVertical) {\n strip.scrollTop += direction * step;\n } else {\n strip.scrollLeft += direction * step;\n }\n };\n\n // The arrows are pseudo-elements painted above the strip, so a click on one\n // hit-tests to the root rather than to a tab or panel. Nothing else on the root\n // is clickable, which is what makes this unambiguous.\n const onRootClick = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (event.target !== event.currentTarget) return;\n const strip = stripRef.current;\n if (!strip) return;\n\n const rect = strip.getBoundingClientRect();\n const beforeMidpoint = isVertical\n ? event.clientY < rect.top + rect.height / 2\n : event.clientX < rect.left + rect.width / 2;\n\n scrollStrip(beforeMidpoint ? -1 : 1);\n };\n\n const select = (index: number, moveFocus: boolean): void => {\n const item = items[index];\n if (!item) return;\n setSelectedId(item.id);\n setCollapsed(false);\n const tab = tabRefs.current[item.id];\n // Arrow-key navigation can land on a tab that is scrolled out of the strip\n tab?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n if (moveFocus) tab?.focus();\n };\n\n const press = (index: number): void => {\n if (isMobile && index === selectedIndex) {\n setCollapsed((prev) => !prev);\n return;\n }\n select(index, false);\n };\n\n // Roving tabindex keyboard model for role=\"tab\" — see bootLsgTabs for the AEM twin.\n const onKeyDown = (event: React.KeyboardEvent<HTMLLIElement>, index: number): void => {\n const last = items.length - 1;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n select(selectedIndex === last ? 0 : selectedIndex + 1, true);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n select(selectedIndex === 0 ? last : selectedIndex - 1, true);\n break;\n case \"Home\":\n event.preventDefault();\n select(0, true);\n break;\n case \"End\":\n event.preventDefault();\n select(last, true);\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n press(index);\n break;\n default:\n break;\n }\n };\n\n const rootClass = [\n \"lsg-tabs\",\n isVertical ? \"lsg-tabs--vertical\" : \"\",\n scrollStart ? \"lsg-tabs--scroll-start\" : \"\",\n scrollEnd ? \"lsg-tabs--scroll-end\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={rootClass} onClick={onRootClick}>\n <ol\n ref={stripRef}\n className=\"lsg-tabs__tablist\"\n role=\"tablist\"\n aria-label={accessibilityLabel}\n aria-multiselectable=\"false\"\n onScroll={updateArrows}\n >\n {items.map((item, index) => {\n const isActive = index === selectedIndex;\n return (\n <li\n key={item.id}\n ref={(node) => {\n tabRefs.current[item.id] = node;\n }}\n role=\"tab\"\n id={`lsg-tab-${item.id}`}\n className={`lsg-tabs__tab${isActive ? \" lsg-tabs__tab--active\" : \"\"}`}\n aria-controls={`lsg-tabpanel-${item.id}`}\n aria-selected={isActive}\n // Desktop is a tab strip — aria-selected carries the state there, and\n // the collapsed class has no styling, so aria-expanded would mislead.\n aria-expanded={isMobile ? isActive && !collapsed : undefined}\n tabIndex={isActive ? 0 : -1}\n onClick={() => press(index)}\n onKeyDown={(event) => onKeyDown(event, index)}\n >\n <span className=\"lsg-tabs__tab-label\">{item.title}</span>\n <span className=\"lsg-tabs__tab-icon\" aria-hidden=\"true\">\n {CHEVRON_SVG}\n </span>\n </li>\n );\n })}\n </ol>\n\n {items.map((item, index) => {\n const isActive = index === selectedIndex;\n return (\n <div\n key={item.id}\n id={`lsg-tabpanel-${item.id}`}\n role=\"tabpanel\"\n aria-labelledby={`lsg-tab-${item.id}`}\n tabIndex={0}\n className={[\n \"lsg-tabs__panel\",\n isActive ? \"lsg-tabs__panel--active\" : \"\",\n isActive && collapsed ? \"lsg-tabs__panel--collapsed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {item.content}\n </div>\n );\n })}\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgTable.scss\";\n\nexport type LsgTableColor =\n | \"white\"\n | \"black\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"light\"\n | \"dark\";\n\nexport type LsgTableCell = React.ReactNode;\n\nexport interface LsgTableProps {\n headers: LsgTableCell[];\n rows: LsgTableCell[][];\n headerBackground?: LsgTableColor;\n accentColors?: LsgTableColor;\n noAlternatingRows?: boolean;\n caption?: React.ReactNode;\n id?: string;\n className?: string;\n}\n\n/**\n * Storybook representation of the AEM LSG table markup.\n * It deliberately emits the same Style System class contract as AEM.\n */\nexport const LsgTable: React.FC<LsgTableProps> = ({\n headers,\n rows,\n headerBackground = \"primary\",\n accentColors = \"black\",\n noAlternatingRows = false,\n caption,\n id,\n className,\n}) => {\n const wrapperClassName = [\n \"table-focus\",\n `background-color-${headerBackground}`,\n `accent-color-${accentColors}`,\n `no-alternating-rows-${noAlternatingRows}`,\n className,\n ].filter(Boolean).join(\" \");\n\n // Three-column Figma examples fill the available width. Wider datasets keep\n // equal-width columns but receive a practical minimum width so mobile can\n // scroll horizontally instead of crushing every column.\n const tableStyle: React.CSSProperties | undefined =\n headers.length > 3 ? { minWidth: `${headers.length * 120}px` } : undefined;\n\n return (\n <>\n {caption ? <div className=\"table-caption\">{caption}</div> : null}\n <div id={id} className={wrapperClassName}>\n <table style={tableStyle}>\n <tbody>\n <tr>\n {headers.map((cell, index) => (\n <td key={`header-${index}`}>{cell}</td>\n ))}\n </tr>\n {rows.map((row, rowIndex) => (\n <tr key={`row-${rowIndex}`}>\n {row.map((cell, cellIndex) => (\n <td key={`cell-${rowIndex}-${cellIndex}`}>{cell}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldText.scss\";\n\nexport interface LsgFormFieldTextProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n /** Shows inline error text and marks the input invalid */\n error?: string;\n autocomplete?: string;\n minLength?: number;\n maxLength?: number;\n name?: string;\n}\n\nexport const LsgFormFieldText: React.FC<LsgFormFieldTextProps> = ({\n id = \"field-text\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n autocomplete,\n minLength,\n maxLength,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--text\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <input\n type=\"text\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete={autocomplete}\n minLength={minLength}\n maxLength={maxLength}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldEmail.scss\";\n\nexport interface LsgFormFieldEmailProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n maxLength?: number;\n name?: string;\n}\n\nexport const LsgFormFieldEmail: React.FC<LsgFormFieldEmailProps> = ({\n id = \"field-email\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n maxLength,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--email\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <input\n type=\"email\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete=\"email\"\n maxLength={maxLength}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import B,{useMemo as We,useRef as qe,useState as Je}from\"react\";var M=[[\"Afghanistan\",\"af\",\"93\"],[\"Albania\",\"al\",\"355\"],[\"Algeria\",\"dz\",\"213\"],[\"Andorra\",\"ad\",\"376\"],[\"Angola\",\"ao\",\"244\"],[\"Antigua and Barbuda\",\"ag\",\"1268\"],[\"Argentina\",\"ar\",\"54\",{default:\"(..) .... ....\",\"/^11/\":\"(..) .... ....\",\"/^15/\":\"(..) ... ....\",\"/^(2|3|4|5)/\":\"(.) .... ....\",\"/^9/\":\"(.) .... .....\"},0],[\"Armenia\",\"am\",\"374\",\".. ......\"],[\"Aruba\",\"aw\",\"297\"],[\"Australia\",\"au\",\"61\",{default:\". .... ....\",\"/^4/\":\"... ... ...\",\"/^5(?!50)/\":\"... ... ...\",\"/^1(3|8)00/\":\".... ... ...\",\"/^13/\":\".. .. ..\",\"/^180/\":\"... ....\"},0,[]],[\"Austria\",\"at\",\"43\"],[\"Azerbaijan\",\"az\",\"994\",\"(..) ... .. ..\"],[\"Bahamas\",\"bs\",\"1242\"],[\"Bahrain\",\"bh\",\"973\",\".... ....\"],[\"Bangladesh\",\"bd\",\"880\"],[\"Barbados\",\"bb\",\"1246\"],[\"Belarus\",\"by\",\"375\",\"(..) ... .. ..\"],[\"Belgium\",\"be\",\"32\",\"... .. .. ..\"],[\"Belize\",\"bz\",\"501\"],[\"Benin\",\"bj\",\"229\"],[\"Bhutan\",\"bt\",\"975\"],[\"Bolivia\",\"bo\",\"591\"],[\"Bosnia and Herzegovina\",\"ba\",\"387\"],[\"Botswana\",\"bw\",\"267\"],[\"Brazil\",\"br\",\"55\",\"(..) .....-....\"],[\"British Indian Ocean Territory\",\"io\",\"246\"],[\"Brunei\",\"bn\",\"673\"],[\"Bulgaria\",\"bg\",\"359\"],[\"Burkina Faso\",\"bf\",\"226\"],[\"Burundi\",\"bi\",\"257\"],[\"Cambodia\",\"kh\",\"855\"],[\"Cameroon\",\"cm\",\"237\"],[\"Canada\",\"ca\",\"1\",\"(...) ...-....\",1,[\"204\",\"226\",\"236\",\"249\",\"250\",\"289\",\"306\",\"343\",\"365\",\"387\",\"403\",\"416\",\"418\",\"431\",\"437\",\"438\",\"450\",\"506\",\"514\",\"519\",\"548\",\"579\",\"581\",\"587\",\"604\",\"613\",\"639\",\"647\",\"672\",\"705\",\"709\",\"742\",\"778\",\"780\",\"782\",\"807\",\"819\",\"825\",\"867\",\"873\",\"902\",\"905\"]],[\"Cape Verde\",\"cv\",\"238\"],[\"Caribbean Netherlands\",\"bq\",\"599\",\"\",1],[\"Cayman Islands\",\"ky\",\"1\",\"... ... ....\",4,[\"345\"]],[\"Central African Republic\",\"cf\",\"236\"],[\"Chad\",\"td\",\"235\"],[\"Chile\",\"cl\",\"56\"],[\"China\",\"cn\",\"86\",\"... .... ....\"],[\"Colombia\",\"co\",\"57\",\"... ... ....\"],[\"Comoros\",\"km\",\"269\"],[\"Congo\",\"cd\",\"243\"],[\"Congo\",\"cg\",\"242\"],[\"Costa Rica\",\"cr\",\"506\",\"....-....\"],[\"C\\xF4te d'Ivoire\",\"ci\",\"225\",\".. .. .. .. ..\"],[\"Croatia\",\"hr\",\"385\"],[\"Cuba\",\"cu\",\"53\"],[\"Cura\\xE7ao\",\"cw\",\"599\",\"\",0],[\"Cyprus\",\"cy\",\"357\",\".. ......\"],[\"Czech Republic\",\"cz\",\"420\",\"... ... ...\"],[\"Denmark\",\"dk\",\"45\",\".. .. .. ..\"],[\"Djibouti\",\"dj\",\"253\",\".. .. ....\"],[\"Dominica\",\"dm\",\"1767\"],[\"Dominican Republic\",\"do\",\"1\",\"(...) ...-....\",2,[\"809\",\"829\",\"849\"]],[\"Ecuador\",\"ec\",\"593\"],[\"Egypt\",\"eg\",\"20\"],[\"El Salvador\",\"sv\",\"503\",\"....-....\"],[\"Equatorial Guinea\",\"gq\",\"240\"],[\"Eritrea\",\"er\",\"291\"],[\"Estonia\",\"ee\",\"372\",\".... ......\"],[\"Ethiopia\",\"et\",\"251\",\".. ... ....\"],[\"Faroe Islands\",\"fo\",\"298\",\".. .. ..\"],[\"Fiji\",\"fj\",\"679\"],[\"Finland\",\"fi\",\"358\",\".. ... .. ..\"],[\"France\",\"fr\",\"33\",\". .. .. .. ..\"],[\"French Guiana\",\"gf\",\"594\",\"... .. .. ..\"],[\"French Polynesia\",\"pf\",\"689\",{\"/^44/\":\".. .. ..\",\"/^80[0-5]/\":\"... .. .. ..\",default:\".. .. .. ..\"}],[\"Gabon\",\"ga\",\"241\"],[\"Gambia\",\"gm\",\"220\"],[\"Georgia\",\"ge\",\"995\"],[\"Germany\",\"de\",\"49\",\"... .........\"],[\"Ghana\",\"gh\",\"233\"],[\"Gibraltar\",\"gi\",\"350\"],[\"Greece\",\"gr\",\"30\"],[\"Greenland\",\"gl\",\"299\",\".. .. ..\"],[\"Grenada\",\"gd\",\"1473\"],[\"Guadeloupe\",\"gp\",\"590\",\"... .. .. ..\",0],[\"Guam\",\"gu\",\"1671\"],[\"Guatemala\",\"gt\",\"502\",\"....-....\"],[\"Guinea\",\"gn\",\"224\"],[\"Guinea-Bissau\",\"gw\",\"245\"],[\"Guyana\",\"gy\",\"592\"],[\"Haiti\",\"ht\",\"509\",\"....-....\"],[\"Honduras\",\"hn\",\"504\"],[\"Hong Kong\",\"hk\",\"852\",\".... ....\"],[\"Hungary\",\"hu\",\"36\"],[\"Iceland\",\"is\",\"354\",\"... ....\"],[\"India\",\"in\",\"91\",\".....-.....\"],[\"Indonesia\",\"id\",\"62\"],[\"Iran\",\"ir\",\"98\",\"... ... ....\"],[\"Iraq\",\"iq\",\"964\"],[\"Ireland\",\"ie\",\"353\",\".. .......\"],[\"Israel\",\"il\",\"972\",\"... ... ....\"],[\"Italy\",\"it\",\"39\",\"... .......\",0],[\"Jamaica\",\"jm\",\"1876\"],[\"Japan\",\"jp\",\"81\",\".. .... ....\"],[\"Jordan\",\"jo\",\"962\"],[\"Kazakhstan\",\"kz\",\"7\",\"... ...-..-..\",0],[\"Kenya\",\"ke\",\"254\"],[\"Kiribati\",\"ki\",\"686\"],[\"Kosovo\",\"xk\",\"383\"],[\"Kuwait\",\"kw\",\"965\",\".... ....\"],[\"Kyrgyzstan\",\"kg\",\"996\",\"... ... ...\"],[\"Laos\",\"la\",\"856\"],[\"Latvia\",\"lv\",\"371\",\".. ... ...\"],[\"Lebanon\",\"lb\",\"961\"],[\"Lesotho\",\"ls\",\"266\"],[\"Liberia\",\"lr\",\"231\"],[\"Libya\",\"ly\",\"218\"],[\"Liechtenstein\",\"li\",\"423\"],[\"Lithuania\",\"lt\",\"370\"],[\"Luxembourg\",\"lu\",\"352\"],[\"Macau\",\"mo\",\"853\"],[\"Macedonia\",\"mk\",\"389\"],[\"Madagascar\",\"mg\",\"261\"],[\"Malawi\",\"mw\",\"265\"],[\"Malaysia\",\"my\",\"60\",\"..-....-....\"],[\"Maldives\",\"mv\",\"960\"],[\"Mali\",\"ml\",\"223\"],[\"Malta\",\"mt\",\"356\"],[\"Marshall Islands\",\"mh\",\"692\"],[\"Martinique\",\"mq\",\"596\",\"... .. .. ..\"],[\"Mauritania\",\"mr\",\"222\"],[\"Mauritius\",\"mu\",\"230\"],[\"Mayotte\",\"yt\",\"262\",\"... .. .. ..\",1,[\"269\",\"639\"]],[\"Mexico\",\"mx\",\"52\",\"... ... ....\",0],[\"Micronesia\",\"fm\",\"691\"],[\"Moldova\",\"md\",\"373\",\"(..) ..-..-..\"],[\"Monaco\",\"mc\",\"377\"],[\"Mongolia\",\"mn\",\"976\"],[\"Montenegro\",\"me\",\"382\"],[\"Morocco\",\"ma\",\"212\"],[\"Mozambique\",\"mz\",\"258\"],[\"Myanmar\",\"mm\",\"95\"],[\"Namibia\",\"na\",\"264\"],[\"Nauru\",\"nr\",\"674\"],[\"Nepal\",\"np\",\"977\"],[\"Netherlands\",\"nl\",\"31\",{\"/^06/\":\"(.). .........\",\"/^6/\":\". .........\",\"/^0(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/\":\"(.).. ........\",\"/^(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/\":\".. ........\",\"/^0/\":\"(.)... .......\",default:\"... .......\"}],[\"New Caledonia\",\"nc\",\"687\"],[\"New Zealand\",\"nz\",\"64\",\"...-...-....\"],[\"Nicaragua\",\"ni\",\"505\"],[\"Niger\",\"ne\",\"227\"],[\"Nigeria\",\"ng\",\"234\"],[\"North Korea\",\"kp\",\"850\"],[\"Norway\",\"no\",\"47\",\"... .. ...\"],[\"Oman\",\"om\",\"968\",\".... ....\"],[\"Pakistan\",\"pk\",\"92\",\"...-.......\"],[\"Palau\",\"pw\",\"680\"],[\"Palestine\",\"ps\",\"970\"],[\"Panama\",\"pa\",\"507\"],[\"Papua New Guinea\",\"pg\",\"675\"],[\"Paraguay\",\"py\",\"595\"],[\"Peru\",\"pe\",\"51\"],[\"Philippines\",\"ph\",\"63\",\"... ... ....\"],[\"Poland\",\"pl\",\"48\",\"...-...-...\"],[\"Portugal\",\"pt\",\"351\"],[\"Puerto Rico\",\"pr\",\"1\",\"(...) ...-....\",3,[\"787\",\"939\"]],[\"Qatar\",\"qa\",\"974\",\".... ....\"],[\"R\\xE9union\",\"re\",\"262\",\"... .. .. ..\",0],[\"Romania\",\"ro\",\"40\"],[\"Russia\",\"ru\",\"7\",\"(...) ...-..-..\",1],[\"Rwanda\",\"rw\",\"250\"],[\"Saint Kitts and Nevis\",\"kn\",\"1869\"],[\"Saint Lucia\",\"lc\",\"1758\"],[\"Saint Pierre & Miquelon\",\"pm\",\"508\",{\"/^708/\":\"... ... ...\",\"/^8/\":\"... .. .. ..\",default:\".. .. ..\"}],[\"Saint Vincent and the Grenadines\",\"vc\",\"1784\"],[\"Samoa\",\"ws\",\"685\"],[\"San Marino\",\"sm\",\"378\"],[\"S\\xE3o Tom\\xE9 and Pr\\xEDncipe\",\"st\",\"239\"],[\"Saudi Arabia\",\"sa\",\"966\",\".. ... ....\"],[\"Senegal\",\"sn\",\"221\"],[\"Serbia\",\"rs\",\"381\"],[\"Seychelles\",\"sc\",\"248\"],[\"Sierra Leone\",\"sl\",\"232\"],[\"Singapore\",\"sg\",\"65\",\"....-....\"],[\"Slovakia\",\"sk\",\"421\"],[\"Slovenia\",\"si\",\"386\"],[\"Solomon Islands\",\"sb\",\"677\"],[\"Somalia\",\"so\",\"252\"],[\"South Africa\",\"za\",\"27\"],[\"South Korea\",\"kr\",\"82\",\"... .... ....\"],[\"South Sudan\",\"ss\",\"211\"],[\"Spain\",\"es\",\"34\",\"... ... ...\"],[\"Sri Lanka\",\"lk\",\"94\"],[\"Sudan\",\"sd\",\"249\"],[\"Suriname\",\"sr\",\"597\"],[\"Swaziland\",\"sz\",\"268\"],[\"Sweden\",\"se\",\"46\",\"... ... ...\"],[\"Switzerland\",\"ch\",\"41\",\".. ... .. ..\"],[\"Syria\",\"sy\",\"963\"],[\"Taiwan\",\"tw\",\"886\"],[\"Tajikistan\",\"tj\",\"992\"],[\"Tanzania\",\"tz\",\"255\"],[\"Thailand\",\"th\",\"66\"],[\"Timor-Leste\",\"tl\",\"670\"],[\"Togo\",\"tg\",\"228\"],[\"Tonga\",\"to\",\"676\"],[\"Trinidad and Tobago\",\"tt\",\"1868\"],[\"Tunisia\",\"tn\",\"216\"],[\"Turkey\",\"tr\",\"90\",\"... ... .. ..\"],[\"Turkmenistan\",\"tm\",\"993\"],[\"Tuvalu\",\"tv\",\"688\"],[\"Uganda\",\"ug\",\"256\"],[\"Ukraine\",\"ua\",\"380\",\"(..) ... .. ..\"],[\"United Arab Emirates\",\"ae\",\"971\",{default:\".. ... ....\",\"/^5[024568]/\":\".. ... ....\",\"/^[234679]/\":\". ... ....\"}],[\"United Kingdom\",\"gb\",\"44\",\".... ......\"],[\"United States\",\"us\",\"1\",\"(...) ...-....\",0],[\"Uruguay\",\"uy\",\"598\"],[\"Uzbekistan\",\"uz\",\"998\",\".. ... .. ..\"],[\"Vanuatu\",\"vu\",\"678\"],[\"Vatican City\",\"va\",\"39\",\".. .... ....\",1],[\"Venezuela\",\"ve\",\"58\"],[\"Vietnam\",\"vn\",\"84\"],[\"Wallis & Futuna\",\"wf\",\"681\",\".. .. ..\"],[\"Yemen\",\"ye\",\"967\"],[\"Zambia\",\"zm\",\"260\"],[\"Zimbabwe\",\"zw\",\"263\"]];var Ne=\"react-international-phone-\",de=(...t)=>t.filter(e=>!!e).join(\" \").trim(),Me=(...t)=>de(...t).split(\" \").map(e=>`${Ne}${e}`).join(\" \"),S=({addPrefix:t,rawClassNames:e})=>de(Me(...t),...e);var ce=({value:t,mask:e,maskSymbol:n,offset:s=0,trimNonMaskCharsLeftover:r=!1,allowMaskOverflow:a=!1})=>{if(t.length<s)return t;let p=t.slice(0,s),i=t.slice(s),o=e.split(\"\").filter(d=>d===n).length,u=i.slice(0,o),l=a?i.slice(o):\"\",m=p,y=0;for(let d of e.split(\"\")){if(y>=u.length){if(!r&&d!==n){m+=d;continue}break}d===n?(m+=u[y],y+=1):m+=d}return m+l};var O=t=>t?/^\\d+$/.test(t):!1;var V=t=>t.replace(/\\D/g,\"\");var pe=(t,e)=>{let n=t.style.display;n!==\"block\"&&(t.style.display=\"block\");let s=t.getBoundingClientRect(),r=e.getBoundingClientRect(),a=r.top-s.top,p=s.bottom-r.bottom;a>=0&&p>=0||(Math.abs(a)<Math.abs(p)?t.scrollTop+=a:t.scrollTop-=p),t.style.display=n};var Re=t=>{let{name:e,iso2:n,dialCode:s,format:r,priority:a,areaCodes:p}=t,i=[e,n,s,r,a,p];for(let o=0;o<i.length;o+=1){if(o===0)continue;let u=i[o-1],l=i[o];if(u===void 0&&l!==void 0){let m=JSON.stringify(i,(y,d)=>d===void 0?\"__undefined\":d).replace(/\"__undefined\"/g,\"undefined\");throw new Error(`[react-international-phone] invalid country values passed to buildCountryData. Check ${u} in: ${m}`)}}return i.filter(o=>o!==void 0)};import{useCallback as re,useEffect as xe,useMemo as $e,useRef as Fe,useState as ze}from\"react\";var me=()=>typeof window>\"u\"?!1:window.navigator.userAgent.toLowerCase().includes(\"macintosh\");var fe=({phone:t,dialCode:e,prefix:n=\"+\",charAfterDialCode:s=\" \"})=>{if(!t||!e)return t;let r=t;return r.startsWith(n)&&(r=r.replace(n,\"\")),r.startsWith(e)?(r=r.replace(e,\"\"),r.startsWith(s)&&(r=r.replace(s,\"\")),r):t};var Ce=(t,e)=>{let n=e.disableDialCodeAndPrefix?!1:e.forceDialCode,s=e.disableDialCodeAndPrefix?!1:e.insertDialCodeOnEmpty,r=t,a=u=>e.trimNonDigitsEnd?u.trim():u;if(!r)return s&&!r.length||n?a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`):a(r);if(r=V(r),r===e.dialCode&&!e.disableDialCodeAndPrefix)return a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(e.dialCode.startsWith(r)&&!e.disableDialCodeAndPrefix)return a(n?`${e.prefix}${e.dialCode}${e.charAfterDialCode}`:`${e.prefix}${r}`);if(!r.startsWith(e.dialCode)&&!e.disableDialCodeAndPrefix){if(n)return a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(r.length<e.dialCode.length)return a(`${e.prefix}${r}`)}let p=()=>{let u=e.dialCode.length,l=r.slice(0,u),m=r.slice(u);return{phoneLeftSide:l,phoneRightSide:m}},{phoneLeftSide:i,phoneRightSide:o}=p();return i=`${e.prefix}${i}${e.charAfterDialCode}`,o=ce({value:o,mask:e.mask,maskSymbol:e.maskChar,trimNonMaskCharsLeftover:e.trimNonDigitsEnd||e.disableDialCodeAndPrefix&&o.length===0,allowMaskOverflow:e.allowMaskOverflow}),e.disableDialCodeAndPrefix&&(i=\"\"),a(`${i}${o}`)};var he=({phoneBeforeInput:t,phoneAfterInput:e,phoneAfterFormatted:n,cursorPositionAfterInput:s,leftOffset:r=0,deletion:a})=>{if(s<r)return r;if(!t)return n.length;let p=null;for(let l=s-1;l>=0;l-=1)if(O(e[l])){p=l;break}if(p===null){for(let l=0;l<e.length;l+=1)if(O(n[l]))return l;return e.length}let i=0;for(let l=0;l<p;l+=1)O(e[l])&&(i+=1);let o=0,u=0;for(let l=0;l<n.length&&(o+=1,O(n[l])&&(u+=1),!(u>=i+1));l+=1);if(a!==\"backward\")for(;!O(n[o])&&o<n.length;)o+=1;return o};var G=({phone:t,prefix:e})=>t?`${e}${V(t)}`:\"\";function W({value:t,country:e,insertDialCodeOnEmpty:n,trimNonDigitsEnd:s,countries:r,prefix:a,charAfterDialCode:p,forceDialCode:i,disableDialCodeAndPrefix:o,defaultMask:u,countryGuessingEnabled:l,disableFormatting:m,allowMaskOverflow:y}){let d=t;o&&(d=d.startsWith(`${a}`)?d:`${a}${e.dialCode}${d}`);let w=l?ee({phone:d,countries:r,currentCountryIso2:e?.iso2}):void 0,f=w?.country??e,v=Ce(d,{prefix:a,mask:Y({phone:d,country:f,defaultMask:u,disableFormatting:m}),maskChar:J,dialCode:f.dialCode,trimNonDigitsEnd:s,charAfterDialCode:p,forceDialCode:i,insertDialCodeOnEmpty:n,disableDialCodeAndPrefix:o,allowMaskOverflow:y}),g=l&&!w?.fullDialCodeMatch?e:f;return{phone:G({phone:o?`${g.dialCode}${v}`:v,prefix:a}),inputValue:v,country:g}}var _e=t=>{if(t?.toLocaleLowerCase().includes(\"delete\")??!1)return t?.toLocaleLowerCase().includes(\"forward\")?\"forward\":\"backward\"},ye=(t,{country:e,insertDialCodeOnEmpty:n,phoneBeforeInput:s,prefix:r,charAfterDialCode:a,forceDialCode:p,disableDialCodeAndPrefix:i,countryGuessingEnabled:o,defaultMask:u,disableFormatting:l,countries:m,allowMaskOverflow:y})=>{let d=t.nativeEvent,w=d.inputType,f=_e(w),v=!!w?.startsWith(\"insertFrom\"),g=w===\"insertText\",D=d?.data||void 0,I=t.target.value,_=t.target.selectionStart??0;if(w?.includes(\"history\"))return{inputValue:s,phone:G({phone:s,prefix:r}),cursorPosition:s.length,country:e};if(g&&!O(D)&&I!==r)return{inputValue:s,phone:G({phone:i?`${e.dialCode}${s}`:s,prefix:r}),cursorPosition:_-(D?.length??0),country:e};if(p&&!I.startsWith(`${r}${e.dialCode}`)&&!v){let b=I?s:`${r}${e.dialCode}${a}`;return{inputValue:b,phone:G({phone:b,prefix:r}),cursorPosition:r.length+e.dialCode.length+a.length,country:e}}let{phone:c,inputValue:C,country:h}=W({value:I,country:e,trimNonDigitsEnd:f===\"backward\",insertDialCodeOnEmpty:n,countryGuessingEnabled:o,countries:m,prefix:r,charAfterDialCode:a,forceDialCode:p,disableDialCodeAndPrefix:i,disableFormatting:l,defaultMask:u,allowMaskOverflow:y}),P=he({cursorPositionAfterInput:_,phoneBeforeInput:s,phoneAfterInput:I,phoneAfterFormatted:C,leftOffset:p?r.length+e.dialCode.length+a.length:0,deletion:f});return{phone:c,inputValue:C,cursorPosition:P,country:h}};import{useCallback as te,useRef as ve,useState as Ee}from\"react\";var ge=(t,e)=>{let n=Object.keys(t),s=Object.keys(e);if(n.length!==s.length)return!1;for(let r of n)if(t[r]!==e[r])return!1;return!0};import{useCallback as Te,useMemo as Ae,useRef as be}from\"react\";var we=()=>{let t=be(),e=be(Date.now()),n=Te(()=>{let s=Date.now(),r=t.current?s-e.current:void 0;return t.current=e.current,e.current=s,r},[]);return Ae(()=>({check:n}),[n])};var Le={size:20,overrideLastItemDebounceMS:-1};function Pe(t,e){let{size:n,overrideLastItemDebounceMS:s,onChange:r}={...Le,...e},[a,p]=Ee(t),i=ve([a]),o=ve(0),u=we(),l=te((d,w)=>{let f=i.current[o.current];if(d===f||typeof d==\"object\"&&typeof f==\"object\"&&ge(d,f))return;let v=s>0,g=u.check(),E=v&&g!==void 0?g>s:!0;if(w?.overrideLastItem!==void 0?w.overrideLastItem:!E)i.current=[...i.current.slice(0,o.current),d];else{let I=i.current.length>=n;i.current=[...i.current.slice(I?1:0,o.current+1),d],I||(o.current+=1)}p(d),r?.(d)},[r,s,n,u]),m=te(()=>{if(o.current<=0)return{success:!1};let d=i.current[o.current-1];return p(d),o.current-=1,r?.(d),{success:!0,value:d}},[r]),y=te(()=>{if(o.current+1>=i.current.length)return{success:!1};let d=i.current[o.current+1];return p(d),o.current+=1,r?.(d),{success:!0,value:d}},[r]);return[a,l,m,y]}var J=\".\",R={defaultCountry:\"us\",value:\"\",prefix:\"+\",defaultMask:\"............\",charAfterDialCode:\" \",historySaveDebounceMS:200,disableCountryGuess:!1,disableDialCodePrefill:!1,forceDialCode:!1,disableDialCodeAndPrefix:!1,disableFormatting:!1,allowMaskOverflow:!1,countries:M,preferredCountries:[]},oe=({defaultCountry:t=R.defaultCountry,value:e=R.value,countries:n=R.countries,prefix:s=R.prefix,defaultMask:r=R.defaultMask,charAfterDialCode:a=R.charAfterDialCode,historySaveDebounceMS:p=R.historySaveDebounceMS,disableCountryGuess:i=R.disableCountryGuess,disableDialCodePrefill:o=R.disableDialCodePrefill,forceDialCode:u=R.forceDialCode,disableDialCodeAndPrefix:l=R.disableDialCodeAndPrefix,disableFormatting:m=R.disableFormatting,allowMaskOverflow:y=R.allowMaskOverflow,onChange:d,inputRef:w})=>{let g={countries:n,prefix:s,charAfterDialCode:a,forceDialCode:l?!1:u,disableDialCodeAndPrefix:l,defaultMask:r,countryGuessingEnabled:!i,disableFormatting:m,allowMaskOverflow:y},E=Fe(null),D=w||E,I=x=>{Promise.resolve().then(()=>{typeof window>\"u\"||D.current!==document?.activeElement||D.current?.setSelectionRange(x,x)})},_=re(x=>z({value:x,field:\"iso2\",countries:n}),[n]),c=re(({inputValue:x,phone:T,country:k})=>{if(!d)return;let F=_(k);d({phone:T,inputValue:x,country:F})},[_,d]),[{phone:C,inputValue:h,country:P},b,L,$]=Pe(()=>{let x=z({value:t,field:\"iso2\",countries:n});x||console.error(`[react-international-phone]: can not find a country with \"${t}\" iso2 code`);let T=x||z({value:\"us\",field:\"iso2\",countries:n}),{phone:k,inputValue:F,country:U}=W({value:e,country:T,insertDialCodeOnEmpty:!o,...g});return I(F.length),{phone:k,inputValue:F,country:U.iso2}},{overrideLastItemDebounceMS:p,onChange:c}),A=$e(()=>_(P),[P,_]);xe(()=>{let x=D.current;if(!x)return;let T=k=>{if(!k.key)return;let F=k.ctrlKey,U=k.metaKey,Ie=k.shiftKey;if(k.key.toLowerCase()===\"z\"){if(me()){if(!U)return}else if(!F)return;Ie?$():L()}};return x.addEventListener(\"keydown\",T),()=>{x.removeEventListener(\"keydown\",T)}},[D,L,$]);let K=x=>{x.preventDefault();let{phone:T,inputValue:k,country:F,cursorPosition:U}=ye(x,{country:A,phoneBeforeInput:h,insertDialCodeOnEmpty:!1,...g});return b({inputValue:k,phone:T,country:F.iso2}),I(U),e},Q=re((x,T={focusOnInput:!1})=>{let k=z({value:x,field:\"iso2\",countries:n});if(!k){console.error(`[react-international-phone]: can not find a country with \"${x}\" iso2 code`);return}let F=l?\"\":`${s}${k.dialCode}${a}`;b({inputValue:F,phone:`${s}${k.dialCode}`,country:k.iso2}),T.focusOnInput&&Promise.resolve().then(()=>{D.current?.focus()})},[n,l,s,a,b,D]),[X,j]=ze(!1);return xe(()=>{if(!X){j(!0),e!==C&&d?.({inputValue:h,phone:C,country:A});return}if(e===C)return;let{phone:x,inputValue:T,country:k}=W({value:e,country:A,insertDialCodeOnEmpty:!o,...g});b({phone:x,inputValue:T,country:k.iso2})},[e]),{phone:C,inputValue:h,country:A,setCountry:Q,handlePhoneValueChange:K,inputRef:D}};var Y=({phone:t,country:e,defaultMask:n=\"............\",disableFormatting:s=!1})=>{let r=e.format,a=i=>s?i.replace(new RegExp(`[^${J}]`,\"g\"),\"\"):i;if(!r)return a(n);if(typeof r==\"string\")return a(r);if(!r.default)return console.error(`[react-international-phone]: default mask for ${e.iso2} is not provided`),a(n);let p=Object.keys(r).find(i=>{if(i===\"default\")return!1;if(!(i.charAt(0)===\"/\"&&i.charAt(i.length-1)===\"/\"))return console.error(`[react-international-phone]: format regex \"${i}\" for ${e.iso2} is not valid`),!1;let u=new RegExp(i.substring(1,i.length-1)),l=t.replace(e.dialCode,\"\");return u.test(V(l))});return a(p?r[p]:r.default)};var N=t=>{let[e,n,s,r,a,p]=t;return{name:e,iso2:n,dialCode:s,format:r,priority:a,areaCodes:p}};var Oe=t=>`Field \"${t}\" is not supported`,z=({field:t,value:e,countries:n=M})=>{if([\"priority\"].includes(t))throw new Error(Oe(t));let s=n.find(r=>{let a=N(r);return e===a[t]});if(s)return N(s)};var ee=({phone:t,countries:e=M,currentCountryIso2:n})=>{let s={country:void 0,fullDialCodeMatch:!1};if(!t)return s;let r=V(t);if(!r)return s;let a=s,p=({country:i,fullDialCodeMatch:o})=>{let u=i.dialCode===a.country?.dialCode,l=(i.priority??0)<(a.country?.priority??0);(!u||l)&&(a={country:i,fullDialCodeMatch:o})};for(let i of e){let o=N(i),{dialCode:u,areaCodes:l}=o;if(r.startsWith(u)){let m=a.country?Number(u)>=Number(a.country.dialCode):!0;if(l){let y=r.substring(u.length);for(let d of l)if(y.startsWith(d))return{country:o,fullDialCodeMatch:!0}}(m||u===r||!a.fullDialCodeMatch)&&p({country:o,fullDialCodeMatch:!0})}a.fullDialCodeMatch||r.length<u.length&&u.startsWith(r)&&(!a.country||Number(u)<=Number(a.country.dialCode))&&p({country:o,fullDialCodeMatch:!1})}if(n){let i=z({value:n,field:\"iso2\",countries:e});if(!i)return a;let u=i?(m=>{if(!m?.areaCodes)return!1;let y=r.substring(m.dialCode.length);return m.areaCodes.some(d=>d.startsWith(y))})(i):!1;!!a&&a.country?.dialCode===i.dialCode&&a.country!==i&&a.fullDialCodeMatch&&(!i.areaCodes||u)&&(a={country:i,fullDialCodeMatch:!0})}return a};import Se from\"react\";var Ve=(t,e)=>{let n=parseInt(t,16);return Number(n+e).toString(16)},He=\"abcdefghijklmnopqrstuvwxyz\",je=\"1f1e6\",De=He.split(\"\").reduce((t,e,n)=>({...t,[e]:Ve(je,n)}),{}),Be=t=>[De[t[0]],De[t[1]]].join(\"-\"),q=({iso2:t,size:e,src:n,protocol:s=\"https\",disableLazyLoading:r,className:a,style:p,...i})=>{if(!t)return Se.createElement(\"img\",{className:S({addPrefix:[\"flag-emoji\"],rawClassNames:[a]}),width:e,height:e,...i});let o=()=>{if(n)return n;let u=Be(t);return`${s}://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${u}.svg`};return Se.createElement(\"img\",{className:S({addPrefix:[\"flag-emoji\"],rawClassNames:[a]}),src:o(),width:e,height:e,draggable:!1,\"data-country\":t,loading:r?void 0:\"lazy\",style:{width:e,height:e,...p},alt:\"\",...i})};import H,{useCallback as ne,useEffect as ae,useMemo as Ge,useRef as ie,useState as Ke}from\"react\";var Ue=1e3,se=({show:t,dialCodePrefix:e=\"+\",selectedCountry:n,countries:s=M,preferredCountries:r=[],flags:a,onSelect:p,onClose:i,...o})=>{let u=ie(null),l=ie(),m=Ge(()=>{if(!r||!r.length)return s;let c=[],C=[...s];for(let h of r){let P=C.findIndex(b=>N(b).iso2===h);if(P!==-1){let b=C.splice(P,1)[0];c.push(b)}}return c.concat(C)},[s,r]),y=ie({updatedAt:void 0,value:\"\"}),d=c=>{let C=y.current.updatedAt&&new Date().getTime()-y.current.updatedAt.getTime()>Ue;y.current={value:C?c:`${y.current.value}${c}`,updatedAt:new Date};let h=m.findIndex(P=>N(P).name.toLowerCase().startsWith(y.current.value));h!==-1&&v(h)},w=ne(c=>m.findIndex(C=>N(C).iso2===c),[m]),[f,v]=Ke(w(n)),g=()=>{l.current!==n&&v(w(n))},E=ne(c=>{v(w(c.iso2)),p?.(c)},[p,w]),D=c=>{let C=m.length-1,h=P=>c===\"prev\"?P-1:c===\"next\"?P+1:c===\"last\"?C:0;v(P=>{let b=h(P);return b<0?0:b>C?C:b})},I=c=>{if(c.stopPropagation(),c.key===\"Enter\"){c.preventDefault();let C=N(m[f]);E(C);return}if(c.key===\"Escape\"){i?.();return}if(c.key===\"ArrowUp\"){c.preventDefault(),D(\"prev\");return}if(c.key===\"ArrowDown\"){c.preventDefault(),D(\"next\");return}if(c.key===\"PageUp\"){c.preventDefault(),D(\"first\");return}if(c.key===\"PageDown\"){c.preventDefault(),D(\"last\");return}c.key===\" \"&&c.preventDefault(),c.key.length===1&&!c.altKey&&!c.ctrlKey&&!c.metaKey&&d(c.key.toLocaleLowerCase())},_=ne(()=>{if(!u.current||f===void 0)return;let c=N(m[f]).iso2;if(c===l.current)return;let C=u.current.querySelector(`[data-country=\"${c}\"]`);C&&(pe(u.current,C),l.current=c)},[f,m]);return ae(()=>{_()},[f,_]),ae(()=>{u.current&&(t?u.current.focus():g())},[t]),ae(()=>{g()},[n]),H.createElement(\"ul\",{ref:u,role:\"listbox\",className:S({addPrefix:[\"country-selector-dropdown\"],rawClassNames:[o.className]}),style:{display:t?\"block\":\"none\",...o.style},onKeyDown:I,onBlur:i,tabIndex:-1,\"aria-activedescendant\":`react-international-phone__${N(m[f]).iso2}-option`},m.map((c,C)=>{let h=N(c),P=h.iso2===n,b=C===f,L=r.includes(h.iso2),$=C===r.length-1,A=a?.find(K=>K.iso2===h.iso2);return H.createElement(H.Fragment,{key:h.iso2},H.createElement(\"li\",{\"data-country\":h.iso2,role:\"option\",\"aria-selected\":P,\"aria-label\":`${h.name} ${e}${h.dialCode}`,id:`react-international-phone__${h.iso2}-option`,className:S({addPrefix:[\"country-selector-dropdown__list-item\",L&&\"country-selector-dropdown__list-item--preferred\",P&&\"country-selector-dropdown__list-item--selected\",b&&\"country-selector-dropdown__list-item--focused\"],rawClassNames:[o.listItemClassName,L&&o.listItemPreferredClassName,P&&o.listItemSelectedClassName,b&&o.listItemFocusedClassName]}),onClick:()=>E(h),style:o.listItemStyle,title:h.name},H.createElement(q,{iso2:h.iso2,src:A?.src,className:S({addPrefix:[\"country-selector-dropdown__list-item-flag-emoji\"],rawClassNames:[o.listItemFlagClassName]}),style:o.listItemFlagStyle}),H.createElement(\"span\",{className:S({addPrefix:[\"country-selector-dropdown__list-item-country-name\"],rawClassNames:[o.listItemCountryNameClassName]}),style:o.listItemCountryNameStyle},h.name),H.createElement(\"span\",{className:S({addPrefix:[\"country-selector-dropdown__list-item-dial-code\"],rawClassNames:[o.listItemDialCodeClassName]}),style:o.listItemDialCodeStyle},e,h.dialCode)),$?H.createElement(\"hr\",{className:S({addPrefix:[\"country-selector-dropdown__preferred-list-divider\"],rawClassNames:[o.preferredListDividerClassName]}),style:o.preferredListDividerStyle}):null)}))};var le=B.memo(({selectedCountry:t,onSelect:e,disabled:n,hideDropdown:s,countries:r=M,preferredCountries:a=[],flags:p,renderButtonWrapper:i,...o})=>{let[u,l]=Je(!1),m=We(()=>{if(t)return z({value:t,field:\"iso2\",countries:r})},[r,t]),y=qe(null),d=f=>{f.key&&[\"ArrowUp\",\"ArrowDown\"].includes(f.key)&&(f.preventDefault(),l(!0))},w=()=>{let f={title:m?.name,onClick:()=>l(g=>!g),onMouseDown:g=>g.preventDefault(),onKeyDown:d,disabled:s||n,role:\"combobox\",\"aria-label\":\"Country selector\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":u},v=B.createElement(\"div\",{className:S({addPrefix:[\"country-selector-button__button-content\"],rawClassNames:[o.buttonContentWrapperClassName]}),style:o.buttonContentWrapperStyle},B.createElement(q,{iso2:t,src:p?.find(g=>g.iso2===t)?.src,className:S({addPrefix:[\"country-selector-button__flag-emoji\",n&&\"country-selector-button__flag-emoji--disabled\"],rawClassNames:[o.flagClassName]}),style:{visibility:t?\"visible\":\"hidden\",...o.flagStyle}}),!s&&B.createElement(\"div\",{className:S({addPrefix:[\"country-selector-button__dropdown-arrow\",n&&\"country-selector-button__dropdown-arrow--disabled\",u&&\"country-selector-button__dropdown-arrow--active\"],rawClassNames:[o.dropdownArrowClassName]}),style:o.dropdownArrowStyle}));return i?i({children:v,rootProps:f}):B.createElement(\"button\",{...f,type:\"button\",className:S({addPrefix:[\"country-selector-button\",u&&\"country-selector-button--active\",n&&\"country-selector-button--disabled\",s&&\"country-selector-button--hide-dropdown\"],rawClassNames:[o.buttonClassName]}),\"data-country\":t,style:o.buttonStyle},v)};return B.createElement(\"div\",{className:S({addPrefix:[\"country-selector\"],rawClassNames:[o.className]}),style:o.style,ref:y},w(),B.createElement(se,{show:u,countries:r,preferredCountries:a,flags:p,onSelect:f=>{l(!1),e?.(f)},selectedCountry:t,onClose:()=>{l(!1)},...o.dropdownStyleProps}))});import Ze from\"react\";var ue=({dialCode:t,prefix:e,disabled:n,style:s,className:r})=>Ze.createElement(\"div\",{className:S({addPrefix:[\"dial-code-preview\",n&&\"dial-code-preview--disabled\"],rawClassNames:[r]}),style:s},`${e}${t}`);import Z,{forwardRef as Qe,useCallback as ke,useImperativeHandle as Xe}from\"react\";var Ye=Qe(({value:t,onChange:e,countries:n=M,preferredCountries:s,hideDropdown:r,showDisabledDialCodeAndPrefix:a,disableFocusAfterCountrySelect:p,flags:i,style:o,className:u,inputStyle:l,inputClassName:m,countrySelectorStyleProps:y,dialCodePreviewStyleProps:d,inputProps:w,placeholder:f,disabled:v,name:g,onFocus:E,onBlur:D,required:I,autoFocus:_,...c},C)=>{let h=ke(j=>{e?.(j.phone,{country:j.country,inputValue:j.inputValue})},[e]),{phone:P,inputValue:b,inputRef:L,country:$,setCountry:A,handlePhoneValueChange:K}=oe({value:t,countries:n,...c,onChange:h}),Q=c.disableDialCodeAndPrefix&&a&&$?.dialCode,X=ke(j=>{A(j.iso2,{focusOnInput:!p})},[A,p]);return Xe(C,()=>L.current?Object.assign(L.current,{setCountry:A,state:{phone:P,inputValue:b,country:$}}):null,[L,A,P,b,$]),Z.createElement(\"div\",{ref:C,className:S({addPrefix:[\"input-container\"],rawClassNames:[u]}),style:o},Z.createElement(le,{onSelect:X,flags:i,selectedCountry:$?.iso2,countries:n,preferredCountries:s,disabled:v,hideDropdown:r,...y}),Q&&Z.createElement(ue,{dialCode:$.dialCode,prefix:c.prefix??\"+\",disabled:v,...d}),Z.createElement(\"input\",{onChange:K,value:b,type:\"tel\",ref:L,className:S({addPrefix:[\"input\",v&&\"input--disabled\"],rawClassNames:[m]}),placeholder:f,disabled:v,style:l,name:g,onFocus:E,onBlur:D,autoFocus:_,required:I,...w}))});export{le as CountrySelector,se as CountrySelectorDropdown,ue as DialCodePreview,q as FlagImage,Ye as PhoneInput,Re as buildCountryData,M as defaultCountries,Y as getActiveFormattingMask,z as getCountry,ee as guessCountryByPartialPhoneNumber,N as parseCountry,fe as removeDialCode,oe as usePhoneInput};\n","/**\n * Vanilla emoji-flag + dial-code picker for VTBA form tel fields.\n *\n * Framework-agnostic: this is the single source of truth for the phone flag\n * picker. It is used two ways:\n * 1. In AEM (server-rendered HTL) via the ac-react-app form runtime, which\n * calls {@link initTelPickers} on DOM-ready.\n * 2. In Storybook via the React {@link ../LsgFormFieldTel} component, which\n * calls it from a `useEffect`.\n *\n * It enhances `.cmp-vtba-form__field--tel input[type=\"tel\"]` with a country\n * toggle (Unicode emoji flag + dial code) and a searchable dropdown. Emoji flags\n * mean no image assets to ship. Country/dial-code data is reused from\n * `react-international-phone` (data only — no React needed at runtime here).\n *\n * DOM strategy (so it is safe inside React too): if the input already sits in a\n * `.cmp-vtba-tel` wrapper (React renders one), the picker only *appends* the\n * toggle + dropdown and never moves the React-managed input. Otherwise (plain\n * AEM markup) it creates the wrapper and moves the input in.\n *\n * On submit, the field value is the full international number\n * (`+<dialCode><nationalDigits>`) via {@link getTelValue}.\n */\nimport { defaultCountries } from \"react-international-phone\";\nimport \"./telPicker.scss\";\n\ninterface TelCountry {\n name: string;\n iso2: string;\n dialCode: string;\n}\n\n/** `defaultCountries` items are tuples `[name, iso2, dialCode, format?, ...]`. */\nconst COUNTRIES: TelCountry[] = (defaultCountries as unknown[])\n .map((c) => {\n const t = c as string[];\n return { name: t[0], iso2: t[1], dialCode: t[2] };\n })\n .filter((c: TelCountry) => !!c.iso2 && !!c.dialCode);\n\nconst DEFAULT_ISO2 = \"gb\";\n\n/** Converts an ISO-2 country code to its Unicode regional-indicator flag emoji. */\nfunction flagEmoji(iso2: string): string {\n return iso2\n .toUpperCase()\n .replace(/[A-Z]/g, (ch) => String.fromCodePoint(0x1f1e6 + ch.charCodeAt(0) - 65));\n}\n\nfunction findCountry(iso2: string): TelCountry | undefined {\n const target = (iso2 || \"\").toLowerCase();\n for (let i = 0; i < COUNTRIES.length; i++) {\n if (COUNTRIES[i].iso2 === target) {\n return COUNTRIES[i];\n }\n }\n return undefined;\n}\n\n/**\n * Enhances every tel field under {@code root} (or {@code root} itself when it is\n * a tel field). Idempotent per input. Works whether {@code root} is the whole\n * form (AEM) or a single field element (React component).\n */\nexport function initTelPickers(root: ParentNode | null): void {\n if (!root) {\n return;\n }\n const inputs = root.querySelectorAll(\"input[type='tel']\");\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i] as HTMLInputElement;\n if (input.closest(\".cmp-vtba-form__field--tel\")) {\n enhance(input);\n }\n }\n}\n\n/**\n * Full international number for a picker-enhanced tel input:\n * `+<dialCode><nationalDigits>`. Falls back to the raw value if not enhanced.\n */\nexport function getTelValue(input: HTMLInputElement): string {\n const dial = input.getAttribute(\"data-dial-code\");\n if (!dial) {\n return input.value;\n }\n const national = (input.value || \"\").replace(/\\D/g, \"\");\n return national ? \"+\" + dial + national : \"\";\n}\n\nfunction enhance(input: HTMLInputElement): void {\n if (input.getAttribute(\"data-tel-picker\") === \"true\" || !input.parentElement) {\n return;\n }\n input.setAttribute(\"data-tel-picker\", \"true\");\n\n const initialIso2 = (input.getAttribute(\"data-country\") || DEFAULT_ISO2).toLowerCase();\n let selected = findCountry(initialIso2) || findCountry(DEFAULT_ISO2) || COUNTRIES[0];\n\n // Reuse a pre-rendered wrapper (React) — append-only, never move the input.\n // Otherwise create the wrapper and move the input (plain vanilla markup).\n let wrapper: HTMLElement;\n if (input.parentElement.classList.contains(\"cmp-vtba-tel\")) {\n wrapper = input.parentElement;\n } else {\n wrapper = document.createElement(\"div\");\n wrapper.className = \"cmp-vtba-tel\";\n input.parentElement.insertBefore(wrapper, input);\n wrapper.appendChild(input);\n }\n\n const toggle = document.createElement(\"button\");\n toggle.type = \"button\";\n toggle.className = \"cmp-vtba-tel__toggle\";\n toggle.setAttribute(\"aria-haspopup\", \"listbox\");\n toggle.setAttribute(\"aria-expanded\", \"false\");\n\n const dropdown = document.createElement(\"div\");\n dropdown.className = \"cmp-vtba-tel__dropdown\";\n dropdown.hidden = true;\n\n const search = document.createElement(\"input\");\n search.type = \"text\";\n search.className = \"cmp-vtba-tel__search\";\n search.placeholder = \"Search\";\n search.setAttribute(\"aria-label\", \"Search countries\");\n\n const list = document.createElement(\"ul\");\n list.className = \"cmp-vtba-tel__list\";\n list.setAttribute(\"role\", \"listbox\");\n\n dropdown.appendChild(search);\n dropdown.appendChild(list);\n\n // Toggle goes before the input; dropdown after — both inside the wrapper.\n wrapper.insertBefore(toggle, input);\n wrapper.appendChild(dropdown);\n\n function applySelected(country: TelCountry): void {\n selected = country;\n input.setAttribute(\"data-dial-code\", country.dialCode);\n input.setAttribute(\"data-iso2\", country.iso2);\n toggle.textContent = \"\";\n const flag = document.createElement(\"span\");\n flag.className = \"cmp-vtba-tel__flag\";\n flag.setAttribute(\"aria-hidden\", \"true\");\n flag.textContent = flagEmoji(country.iso2);\n const code = document.createElement(\"span\");\n code.className = \"cmp-vtba-tel__code\";\n code.textContent = \"+\" + country.dialCode;\n toggle.appendChild(flag);\n toggle.appendChild(code);\n toggle.setAttribute(\n \"aria-label\",\n \"Country calling code: \" + country.name + \" +\" + country.dialCode\n );\n }\n\n function renderList(filter: string): void {\n list.textContent = \"\";\n const f = filter.trim().toLowerCase();\n const digits = f.replace(/[^0-9]/g, \"\");\n for (let i = 0; i < COUNTRIES.length; i++) {\n const c = COUNTRIES[i];\n const match =\n !f ||\n c.name.toLowerCase().indexOf(f) !== -1 ||\n c.iso2 === f ||\n (!!digits && c.dialCode.indexOf(digits) === 0);\n if (!match) {\n continue;\n }\n const li = document.createElement(\"li\");\n li.className = \"cmp-vtba-tel__option\";\n li.setAttribute(\"role\", \"option\");\n li.tabIndex = -1;\n li.setAttribute(\"data-iso2\", c.iso2);\n li.setAttribute(\"aria-selected\", c.iso2 === selected.iso2 ? \"true\" : \"false\");\n li.textContent = flagEmoji(c.iso2) + \" \" + c.name + \" +\" + c.dialCode;\n li.addEventListener(\"click\", () => {\n applySelected(c);\n close();\n input.focus();\n });\n list.appendChild(li);\n }\n }\n\n function open(): void {\n dropdown.hidden = false;\n toggle.setAttribute(\"aria-expanded\", \"true\");\n search.value = \"\";\n renderList(\"\");\n search.focus();\n }\n function close(): void {\n dropdown.hidden = true;\n toggle.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle.addEventListener(\"click\", () => {\n if (dropdown.hidden) {\n open();\n } else {\n close();\n }\n });\n\n search.addEventListener(\"input\", () => renderList(search.value));\n search.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Escape\") {\n close();\n toggle.focus();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const first = list.querySelector(\".cmp-vtba-tel__option\") as HTMLElement | null;\n if (first) {\n first.focus();\n }\n }\n });\n\n list.addEventListener(\"keydown\", (e) => {\n const opts = Array.prototype.slice.call(\n list.querySelectorAll(\".cmp-vtba-tel__option\")\n ) as HTMLElement[];\n const idx = opts.indexOf(document.activeElement as HTMLElement);\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n (opts[idx + 1] || opts[0]).focus();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n if (idx <= 0) {\n search.focus();\n } else {\n opts[idx - 1].focus();\n }\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const iso2 = (document.activeElement as HTMLElement).getAttribute(\"data-iso2\");\n const c = iso2 ? findCountry(iso2) : undefined;\n if (c) {\n applySelected(c);\n close();\n input.focus();\n }\n } else if (e.key === \"Escape\") {\n close();\n toggle.focus();\n }\n });\n\n document.addEventListener(\"click\", (e) => {\n if (!wrapper.contains(e.target as Node)) {\n close();\n }\n });\n\n applySelected(selected);\n}\n","import React, { useEffect, useRef } from \"react\";\nimport \"./LsgFormFieldTel.scss\";\nimport { initTelPickers } from \"../telPicker\";\n\nexport interface LsgFormFieldTelProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n name?: string;\n /** ISO-2 country to preselect in the flag picker (e.g. \"gb\", \"us\"). */\n defaultCountry?: string;\n}\n\nexport const LsgFormFieldTel: React.FC<LsgFormFieldTelProps> = ({\n id = \"field-tel\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n minLength,\n maxLength,\n pattern,\n name,\n defaultCountry,\n}) => {\n const fieldRef = useRef<HTMLDivElement>(null);\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy =\n [helpId, error ? errorId : undefined].filter(Boolean).join(\" \") || undefined;\n\n // Enhance the tel input with the shared emoji-flag + dial-code picker.\n // The input is pre-wrapped in `.cmp-vtba-tel`, so the picker appends its\n // toggle/dropdown without moving the React-managed input.\n useEffect(() => {\n initTelPickers(fieldRef.current);\n }, []);\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--tel\" ref={fieldRef}>\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <span className=\"cmp-vtba-tel\">\n <input\n type=\"tel\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete=\"tel\"\n minLength={minLength}\n maxLength={maxLength}\n pattern={pattern}\n data-country={defaultCountry}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n </span>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldSelect.scss\";\n\nexport interface LsgFormSelectOption {\n value: string;\n label: string;\n}\n\nexport interface LsgFormFieldSelectProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n options?: LsgFormSelectOption[];\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nexport const LsgFormFieldSelect: React.FC<LsgFormFieldSelectProps> = ({\n id = \"field-select\",\n label,\n helpText,\n placeholder = \"Please select\",\n defaultValue = \"\",\n options = [],\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--select\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <div className=\"cmp-vtba-form__select-wrapper\">\n <select\n className=\"cmp-vtba-form__select\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldCountry.scss\";\n\nexport interface LsgFormFieldCountryOption {\n value: string;\n label: string;\n}\n\nexport interface LsgFormFieldCountryProps {\n id?: string;\n label: string;\n helpText?: string;\n defaultValue?: string;\n /** Fixture list; in AEM this is populated from /bin/vtba/country-list.json at runtime */\n countries?: LsgFormFieldCountryOption[];\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nconst COUNTRY_FIXTURE: LsgFormFieldCountryOption[] = [\n { value: \"us\", label: \"United States\" },\n { value: \"gb\", label: \"United Kingdom\" },\n { value: \"de\", label: \"Germany\" },\n { value: \"fr\", label: \"France\" },\n { value: \"se\", label: \"Sweden\" },\n { value: \"jp\", label: \"Japan\" },\n { value: \"cn\", label: \"China\" },\n { value: \"in\", label: \"India\" },\n { value: \"br\", label: \"Brazil\" },\n { value: \"au\", label: \"Australia\" },\n];\n\nexport const LsgFormFieldCountry: React.FC<LsgFormFieldCountryProps> = ({\n id = \"field-country\",\n label,\n helpText,\n defaultValue = \"\",\n countries = COUNTRY_FIXTURE,\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--country\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <div className=\"cmp-vtba-form__select-wrapper\">\n <select\n className=\"cmp-vtba-form__select\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n data-country-list=\"true\"\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n >\n <option value=\"\">Select a country</option>\n {countries.map((c) => (\n <option key={c.value} value={c.value}>\n {c.label}\n </option>\n ))}\n </select>\n </div>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldTextarea.scss\";\n\nexport interface LsgFormFieldTextareaProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n autocomplete?: string;\n maxLength?: number;\n rows?: number;\n name?: string;\n}\n\nexport const LsgFormFieldTextarea: React.FC<LsgFormFieldTextareaProps> = ({\n id = \"field-textarea\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n autocomplete,\n maxLength,\n rows = 4,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--textarea\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <textarea\n className=\"cmp-vtba-form__textarea\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete={autocomplete}\n maxLength={maxLength}\n rows={rows}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldConsent.scss\";\n\nexport interface LsgFormFieldConsentProps {\n id?: string;\n /** Consent label — may contain inline HTML (use dangerouslySetInnerHTML) */\n label: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nexport const LsgFormFieldConsent: React.FC<LsgFormFieldConsentProps> = ({\n id = \"field-consent\",\n label,\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const errorId = `${id}-error`;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--consent\">\n <div className=\"cmp-vtba-form__consent\">\n <input\n type=\"checkbox\"\n className=\"cmp-vtba-form__checkbox\"\n id={id}\n name={name}\n value=\"true\"\n data-consent=\"\"\n aria-describedby={error ? errorId : undefined}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {/* eslint-disable-next-line react/no-danger -- mirrors AEM rich-text label output */}\n <label\n className=\"cmp-vtba-form__consent-label\"\n htmlFor={id}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n </div>\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormStep.scss\";\n\nexport interface LsgFormStepProps {\n title?: string;\n description?: string;\n children?: React.ReactNode;\n /** Matches data-step-id on the AEM fieldset */\n stepId?: string;\n}\n\nexport const LsgFormStep: React.FC<LsgFormStepProps> = ({\n title,\n description,\n children,\n stepId,\n}) => (\n <fieldset\n className=\"cmp-vtba-form__step\"\n data-form-step=\"\"\n data-step-id={stepId}\n >\n {title && <legend className=\"cmp-vtba-form__step-legend\">{title}</legend>}\n {description && (\n <p className=\"cmp-vtba-form__step-description\">{description}</p>\n )}\n <div className=\"cmp-vtba-form__fields\">{children}</div>\n </fieldset>\n);\n","import React from \"react\";\nimport \"./LsgFormContainer.scss\";\n\nexport interface LsgFormContainerProps {\n title?: string;\n /** Multi-step mode shows the progress indicator */\n multiStep?: boolean;\n /** 1-based index of the active step */\n currentStep?: number;\n steps?: string[];\n children?: React.ReactNode;\n /** Shows the form-level error banner */\n formError?: string;\n /** Shows the success message and hides the form */\n successMessage?: string;\n}\n\nexport const LsgFormContainer: React.FC<LsgFormContainerProps> = ({\n title,\n multiStep = false,\n currentStep = 1,\n steps = [],\n children,\n formError,\n successMessage,\n}) => (\n <div className=\"cmp-vtba-form\" data-vtba-form=\"\">\n <form\n className=\"cmp-vtba-form__form\"\n method=\"post\"\n noValidate\n aria-label={title}\n hidden={!!successMessage}\n >\n {title && <h2 className=\"cmp-vtba-form__title\">{title}</h2>}\n\n {multiStep && steps.length > 0 && (\n <nav className=\"cmp-vtba-form__progress\" aria-label=\"Form progress\">\n <ol className=\"cmp-vtba-form__progress-list\">\n {steps.map((stepTitle, i) => (\n <li\n key={i}\n className=\"cmp-vtba-form__progress-step\"\n data-step-index={i}\n aria-current={i + 1 === currentStep ? \"step\" : undefined}\n >\n <span className=\"cmp-vtba-form__progress-number\">{i + 1}</span>\n <span className=\"cmp-vtba-form__progress-title\">{stepTitle}</span>\n </li>\n ))}\n </ol>\n </nav>\n )}\n\n <div className=\"cmp-vtba-form__steps\">{children}</div>\n\n <div className=\"cmp-vtba-form__actions\">\n {multiStep && (\n <button type=\"button\" className=\"cmp-vtba-form__prev\" data-form-prev=\"\" hidden={currentStep <= 1}>\n Back\n </button>\n )}\n {multiStep && currentStep < (steps.length || 1) ? (\n <button type=\"button\" className=\"cmp-vtba-form__next lsg-button lsg-button--primary\" data-form-next=\"\">\n Continue\n </button>\n ) : (\n <button type=\"submit\" className=\"cmp-vtba-form__submit lsg-button lsg-button--primary\" data-form-submit=\"\">\n Submit\n </button>\n )}\n </div>\n\n {/* Live regions, always present (hidden when empty) as in the HTL. */}\n <p className=\"cmp-vtba-form__error\" data-form-error=\"\" role=\"alert\" aria-live=\"assertive\" hidden={!formError}>\n {formError}\n </p>\n </form>\n\n {/* Outside the <form>, as in the HTL: the runtime hides the form on success. */}\n <div className=\"cmp-vtba-form__success\" data-form-success=\"\" role=\"status\" aria-live=\"polite\" hidden={!successMessage}>\n {successMessage}\n </div>\n </div>\n);\n","/**\n * Events the VTBA form-builder runtime (ac-react-app formBuilder.ts) dispatches on\n * the form's `[data-vtba-form]` root. Both bubble.\n *\n * `success` is cancelable: a listener that calls `preventDefault()` takes over the\n * success UI and the form's success redirect is skipped. `success` only fires\n * once HubSpot has accepted the submission.\n *\n * The runtime keeps its own copy of these names (so it builds against older\n * package versions); keep the two in sync.\n */\nexport const VTBA_FORM_EVENTS = {\n success: \"vtba-form:success\",\n error: \"vtba-form:error\",\n} as const;\n\nexport interface VtbaFormSuccessDetail {\n formId: string;\n trackingName: string;\n}\n\nexport interface VtbaFormErrorDetail {\n formId: string;\n /** HTTP status of the submission; 0 for a network error. */\n status: number;\n}\n","import { VTBA_FORM_EVENTS } from \"./vtbaFormEvents\";\n\n/**\n * Vanilla controller for the LSG Download Library. The same class drives the AEM\n * markup (booted from the theme clientlib by bootLsgDownloadLibrary) and the\n * Storybook component (created in a useEffect).\n *\n * - Language picker: a button + listbox popup under the download button; picking a\n * language swaps the download URL.\n * - Gating: when the library has a form overlay, the first download opens the\n * <dialog> holding the VTBA form instead. The download only starts once the form\n * runtime reports a HubSpot success (\"vtba-form:success\"). The unlock is then kept\n * in sessionStorage per form page, so later downloads gated by the same form go\n * straight through for the rest of the session.\n * - Tracking: every download pushes `lsg_download` to the GTM dataLayer and\n * dispatches a bubbling `lsg-download:download` event. Nothing is re-submitted to\n * HubSpot.\n */\n\nexport const LSG_DOWNLOAD_EVENT = \"lsg-download:download\";\nexport const LSG_DOWNLOAD_UNLOCK_KEY_PREFIX = \"lsg-download-unlocked:\";\n\nconst SELECTORS = {\n item: \"[data-lsg-download-item]\",\n trigger: \"[data-lsg-download-trigger]\",\n picker: \"[data-lsg-download-language-picker]\",\n toggle: \"[data-lsg-download-language-toggle]\",\n list: '[role=\"listbox\"]',\n option: '[role=\"option\"]',\n current: \"[data-lsg-download-language-current]\",\n dialog: \"[data-lsg-download-dialog]\",\n dialogClose: \"[data-lsg-download-dialog-close]\",\n dialogAsset: \"[data-lsg-download-dialog-asset]\",\n dialogForm: \"[data-lsg-download-dialog-form]\",\n dialogSuccess: \"[data-lsg-download-dialog-success]\",\n successLink: \"[data-lsg-download-success-link]\",\n form: \".cmp-vtba-form__form\",\n hiddenField: \"input[data-lsg-download-field]\",\n focusable: 'input:not([type=\"hidden\"]):not([disabled]), select:not([disabled]), textarea:not([disabled])',\n} as const;\n\nconst POPUP_BLOCKED_CLASS = \"lsg-download-library__dialog--popup-blocked\";\nconst ACTIVE_OPTION_CLASS = \"is-active\";\n\n/** Unlocks that couldn't be written to storage still hold for this page view. */\nconst memoryUnlocks = new Set<string>();\n\nexport type LsgDownloadUnlockedBy = \"none\" | \"session\" | \"form\";\n\nexport interface LsgDownloadTrackingDetail {\n title: string;\n /** Absolute URL of the file (selected language). */\n url: string;\n type: string;\n language: string;\n action: string;\n external: boolean;\n gated: boolean;\n formPath: string;\n /** \"none\" = not gated, \"session\" = unlocked earlier this session, \"form\" = just submitted. */\n unlockedBy: LsgDownloadUnlockedBy;\n libraryId: string;\n}\n\nexport interface LsgDownloadLibraryControllerOptions {\n /** Defaults to window.sessionStorage (null when unavailable). */\n storage?: Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null;\n /** Defaults to window.dataLayer (created if missing). */\n dataLayer?: { push: (entry: object) => unknown };\n /** Defaults to window.open. Stories can stub it to simulate a popup blocker. */\n openWindow?: (url: string) => Window | null;\n}\n\ninterface DownloadSnapshot {\n title: string;\n url: string;\n type: string;\n language: string;\n action: string;\n external: boolean;\n download: boolean;\n newTab: boolean;\n}\n\nfunction defaultStorage(): Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null {\n try {\n return window.sessionStorage;\n } catch (e) {\n return null;\n }\n}\n\n/** Forgets the unlock for one form page (Storybook \"reset\", QA). */\nexport function resetLsgDownloadUnlock(\n formPath: string,\n storage: Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null = defaultStorage(),\n): void {\n const key = LSG_DOWNLOAD_UNLOCK_KEY_PREFIX + formPath;\n memoryUnlocks.delete(key);\n try {\n storage?.removeItem(key);\n } catch (e) {\n // ignore\n }\n}\n\nfunction toArray<T extends Element>(list: NodeListOf<T>): T[] {\n return Array.prototype.slice.call(list) as T[];\n}\n\nfunction absoluteUrl(href: string): string {\n try {\n return new URL(href, window.location.href).href;\n } catch (e) {\n return href;\n }\n}\n\nexport class LsgDownloadLibraryController {\n private readonly root: HTMLElement;\n private readonly options: LsgDownloadLibraryControllerOptions;\n private readonly dialog: HTMLDialogElement | null;\n private pending: { snapshot: DownloadSnapshot; trigger: HTMLAnchorElement } | null = null;\n private completed: DownloadSnapshot | null = null;\n private openPicker: HTMLElement | null = null;\n private pointerDownOnBackdrop = false;\n\n constructor(root: HTMLElement, options: LsgDownloadLibraryControllerOptions = {}) {\n this.root = root;\n this.options = options;\n this.dialog = root.querySelector<HTMLDialogElement>(SELECTORS.dialog);\n }\n\n init(): void {\n if (this.root.dataset.lsgDownloadReady === \"true\") {\n return;\n }\n this.root.dataset.lsgDownloadReady = \"true\";\n this.root.addEventListener(\"click\", this.onClick);\n this.root.addEventListener(\"keydown\", this.onKeyDown);\n if (this.dialog) {\n this.dialog.addEventListener(\"pointerdown\", this.onDialogPointerDown);\n this.dialog.addEventListener(\"close\", this.onDialogClose);\n this.dialog.addEventListener(VTBA_FORM_EVENTS.success, this.onFormSuccess);\n }\n if (this.isGated() && this.isUnlocked()) {\n this.stripGateAria();\n }\n }\n\n destroy(): void {\n this.closePicker(false);\n this.root.removeEventListener(\"click\", this.onClick);\n this.root.removeEventListener(\"keydown\", this.onKeyDown);\n if (this.dialog) {\n this.dialog.removeEventListener(\"pointerdown\", this.onDialogPointerDown);\n this.dialog.removeEventListener(\"close\", this.onDialogClose);\n this.dialog.removeEventListener(VTBA_FORM_EVENTS.success, this.onFormSuccess);\n if (this.dialog.open) {\n this.dialog.close();\n }\n }\n this.pending = null;\n delete this.root.dataset.lsgDownloadReady;\n }\n\n // ── Gate state ────────────────────────────────────────────────────────────\n\n isGated(): boolean {\n return this.root.dataset.lsgDownloadGated === \"true\" && this.dialog !== null;\n }\n\n isUnlocked(): boolean {\n const key = this.unlockKey();\n if (memoryUnlocks.has(key)) {\n return true;\n }\n try {\n return !!this.storage() && this.storage()!.getItem(key) === \"1\";\n } catch (e) {\n return false;\n }\n }\n\n unlock(): void {\n const key = this.unlockKey();\n memoryUnlocks.add(key);\n try {\n this.storage()?.setItem(key, \"1\");\n } catch (e) {\n // Storage full/blocked: the in-memory unlock still covers this page view.\n }\n }\n\n /** Keyed by form page path: libraries gated by the same form share one unlock. */\n private unlockKey(): string {\n return (\n LSG_DOWNLOAD_UNLOCK_KEY_PREFIX +\n (this.root.dataset.lsgDownloadFormPath || this.root.dataset.lsgDownloadLibraryId || \"\")\n );\n }\n\n private storage(): Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null {\n return this.options.storage !== undefined ? this.options.storage : defaultStorage();\n }\n\n /** Once unlocked, the download links no longer open a dialog. */\n private stripGateAria(): void {\n toArray(this.root.querySelectorAll<HTMLElement>(SELECTORS.trigger)).forEach((trigger) => {\n trigger.removeAttribute(\"aria-haspopup\");\n trigger.removeAttribute(\"aria-controls\");\n });\n }\n\n // ── Events ────────────────────────────────────────────────────────────────\n\n private onClick = (event: MouseEvent): void => {\n const target = event.target;\n if (!(target instanceof Element)) {\n return;\n }\n\n // Backdrop: clicks on ::backdrop target the <dialog> itself. Requiring the\n // pointerdown there too stops a text selection dragged out of a field closing it.\n if (this.dialog && target === this.dialog) {\n if (this.pointerDownOnBackdrop) {\n this.closeGate();\n }\n this.pointerDownOnBackdrop = false;\n return;\n }\n if (target.closest(SELECTORS.dialogClose)) {\n this.closeGate();\n return;\n }\n if (target.closest(SELECTORS.successLink)) {\n if (this.completed) {\n this.track(this.completed, \"form\");\n }\n return;\n }\n\n const toggle = target.closest<HTMLElement>(SELECTORS.toggle);\n if (toggle) {\n const picker = toggle.closest<HTMLElement>(SELECTORS.picker);\n if (picker) {\n if (this.openPicker === picker) {\n this.closePicker(true);\n } else {\n this.showPicker(picker);\n }\n }\n return;\n }\n\n const option = target.closest<HTMLElement>(SELECTORS.option);\n if (option) {\n const item = option.closest<HTMLElement>(SELECTORS.item);\n if (item) {\n this.selectVariant(item, option);\n }\n this.closePicker(true);\n return;\n }\n\n const trigger = target.closest<HTMLAnchorElement>(SELECTORS.trigger);\n if (trigger) {\n this.onTrigger(event, trigger);\n }\n };\n\n private onTrigger(event: MouseEvent, trigger: HTMLAnchorElement): void {\n const item = trigger.closest<HTMLElement>(SELECTORS.item);\n if (!item) {\n return;\n }\n const snapshot = this.snapshot(item, trigger);\n if (!this.isGated()) {\n this.track(snapshot, \"none\");\n return;\n }\n if (this.isUnlocked()) {\n this.track(snapshot, \"session\");\n return;\n }\n // No <dialog> support: fail open rather than block the download.\n if (!this.dialog || typeof this.dialog.showModal !== \"function\") {\n this.track(snapshot, \"none\");\n return;\n }\n event.preventDefault();\n this.openGate(item, trigger);\n }\n\n private onKeyDown = (event: KeyboardEvent): void => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if (target.matches(SELECTORS.toggle) && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n const picker = target.closest<HTMLElement>(SELECTORS.picker);\n if (picker) {\n event.preventDefault();\n this.showPicker(picker);\n }\n return;\n }\n\n if (!this.openPicker || !target.matches(SELECTORS.list)) {\n return;\n }\n const options = this.pickerOptions(this.openPicker);\n const active = this.openPicker.querySelector<HTMLElement>(\".\" + ACTIVE_OPTION_CLASS);\n const index = active ? options.indexOf(active) : -1;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.setActiveOption(options[Math.min(index + 1, options.length - 1)]);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n this.setActiveOption(options[Math.max(index - 1, 0)]);\n break;\n case \"Home\":\n event.preventDefault();\n this.setActiveOption(options[0]);\n break;\n case \"End\":\n event.preventDefault();\n this.setActiveOption(options[options.length - 1]);\n break;\n case \"Enter\":\n case \" \": {\n event.preventDefault();\n const item = this.openPicker.closest<HTMLElement>(SELECTORS.item);\n if (active && item) {\n this.selectVariant(item, active);\n }\n this.closePicker(true);\n break;\n }\n case \"Escape\":\n event.preventDefault();\n event.stopPropagation();\n this.closePicker(true);\n break;\n case \"Tab\":\n this.closePicker(false);\n break;\n default:\n break;\n }\n };\n\n private onDocumentPointerDown = (event: PointerEvent): void => {\n if (this.openPicker && event.target instanceof Node && !this.openPicker.contains(event.target)) {\n this.closePicker(false);\n }\n };\n\n private onDialogPointerDown = (event: PointerEvent): void => {\n this.pointerDownOnBackdrop = event.target === this.dialog;\n };\n\n private onDialogClose = (): void => {\n const trigger = this.pending ? this.pending.trigger : null;\n this.pending = null;\n this.completed = null;\n if (trigger && trigger.isConnected) {\n trigger.focus();\n }\n };\n\n private onFormSuccess = (event: Event): void => {\n if (!this.pending || !this.dialog) {\n return;\n }\n // We own the success UI: skip the runtime's redirect / inline message.\n event.preventDefault();\n\n const { snapshot } = this.pending;\n this.unlock();\n this.stripGateAria();\n this.completed = snapshot;\n\n const link = this.dialog.querySelector<HTMLAnchorElement>(SELECTORS.successLink);\n if (link) {\n link.setAttribute(\"href\", snapshot.url);\n this.setLinkBehaviour(link, snapshot);\n }\n this.setRegions(false);\n\n // Straight away, while the submit click still counts as user activation.\n const started = this.startDownload(snapshot);\n if (started) {\n this.track(snapshot, \"form\");\n this.focusSuccessHeading();\n } else {\n this.dialog.classList.add(POPUP_BLOCKED_CLASS);\n if (link) {\n link.focus();\n }\n }\n };\n\n // ── Gate dialog ───────────────────────────────────────────────────────────\n\n openGate(item: HTMLElement, trigger: HTMLAnchorElement): void {\n if (!this.dialog) {\n return;\n }\n this.closePicker(false);\n const snapshot = this.snapshot(item, trigger);\n this.pending = { snapshot, trigger };\n this.completed = null;\n\n const asset = this.dialog.querySelector<HTMLElement>(SELECTORS.dialogAsset);\n if (asset) {\n asset.textContent = snapshot.title;\n }\n this.syncHiddenFields(snapshot);\n this.dialog.classList.remove(POPUP_BLOCKED_CLASS);\n this.setRegions(true);\n\n if (!this.dialog.open) {\n this.dialog.showModal();\n }\n this.focusFirstField();\n }\n\n closeGate(): void {\n if (this.dialog && this.dialog.open) {\n this.dialog.close();\n }\n }\n\n private setRegions(showForm: boolean): void {\n if (!this.dialog) {\n return;\n }\n const form = this.dialog.querySelector<HTMLElement>(SELECTORS.dialogForm);\n const success = this.dialog.querySelector<HTMLElement>(SELECTORS.dialogSuccess);\n if (form) {\n form.hidden = !showForm;\n }\n if (success) {\n success.hidden = showForm;\n }\n }\n\n private focusFirstField(): void {\n const region = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogForm) : null;\n if (!region) {\n return;\n }\n const fields = toArray(region.querySelectorAll<HTMLElement>(SELECTORS.focusable));\n for (let i = 0; i < fields.length; i++) {\n if (fields[i].getClientRects().length > 0) {\n fields[i].focus();\n return;\n }\n }\n }\n\n private focusSuccessHeading(): void {\n const success = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogSuccess) : null;\n const heading = success ? success.querySelector<HTMLElement>(\"[tabindex]\") : null;\n if (heading) {\n heading.focus();\n }\n }\n\n /**\n * Hidden inputs carrying the requested document to HubSpot, only for the\n * properties the policy names (data-lsg-download-hs-*). The form runtime collects\n * every named input at submit time.\n */\n private syncHiddenFields(snapshot: DownloadSnapshot): void {\n const form = this.dialog ? this.dialog.querySelector<HTMLFormElement>(SELECTORS.form) : null;\n if (!form) {\n return;\n }\n const fields: Array<{ key: string; property?: string; value: string }> = [\n { key: \"title\", property: this.root.dataset.lsgDownloadHsTitle, value: snapshot.title },\n { key: \"url\", property: this.root.dataset.lsgDownloadHsUrl, value: snapshot.url },\n { key: \"language\", property: this.root.dataset.lsgDownloadHsLanguage, value: snapshot.language },\n ];\n fields.forEach(({ key, property, value }) => {\n let input = form.querySelector<HTMLInputElement>(`input[data-lsg-download-field=\"${key}\"]`);\n if (!property) {\n if (input) {\n input.remove();\n }\n return;\n }\n if (!input) {\n input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.setAttribute(\"data-lsg-download-field\", key);\n form.appendChild(input);\n }\n input.name = property;\n input.setAttribute(\"data-hs-property\", property);\n input.value = value;\n });\n }\n\n private startDownload(snapshot: DownloadSnapshot): boolean {\n if (snapshot.newTab) {\n const opener = this.options.openWindow || ((url: string) => window.open(url, \"_blank\"));\n const win = opener(snapshot.url);\n if (!win) {\n return false;\n }\n try {\n win.opener = null;\n } catch (e) {\n // cross-origin: nothing to do\n }\n return true;\n }\n const anchor = document.createElement(\"a\");\n anchor.href = snapshot.url;\n if (snapshot.download) {\n anchor.setAttribute(\"download\", \"\");\n }\n anchor.style.display = \"none\";\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n return true;\n }\n\n private setLinkBehaviour(link: HTMLAnchorElement, snapshot: DownloadSnapshot): void {\n if (snapshot.download) {\n link.setAttribute(\"download\", \"\");\n } else {\n link.removeAttribute(\"download\");\n }\n if (snapshot.newTab) {\n link.setAttribute(\"target\", \"_blank\");\n link.setAttribute(\"rel\", \"noopener noreferrer\");\n } else {\n link.removeAttribute(\"target\");\n link.removeAttribute(\"rel\");\n }\n }\n\n // ── Language picker ───────────────────────────────────────────────────────\n\n selectVariant(item: HTMLElement, option: HTMLElement): void {\n const url = option.getAttribute(\"data-lsg-download-url\") || \"\";\n const language = option.getAttribute(\"data-lsg-download-language\") || \"\";\n const list = option.closest<HTMLElement>(SELECTORS.list);\n if (list) {\n toArray(list.querySelectorAll<HTMLElement>(SELECTORS.option)).forEach((other) => {\n other.setAttribute(\"aria-selected\", other === option ? \"true\" : \"false\");\n });\n }\n item.setAttribute(\"data-lsg-download-url\", url);\n item.setAttribute(\"data-lsg-download-language\", language);\n const trigger = item.querySelector<HTMLAnchorElement>(SELECTORS.trigger);\n if (trigger && url) {\n trigger.setAttribute(\"href\", url);\n }\n const current = item.querySelector<HTMLElement>(SELECTORS.current);\n if (current) {\n current.textContent = (option.textContent || \"\").trim();\n }\n }\n\n private pickerOptions(picker: HTMLElement): HTMLElement[] {\n return toArray(picker.querySelectorAll<HTMLElement>(SELECTORS.option));\n }\n\n private showPicker(picker: HTMLElement): void {\n this.closePicker(false);\n const toggle = picker.querySelector<HTMLElement>(SELECTORS.toggle);\n const list = picker.querySelector<HTMLElement>(SELECTORS.list);\n if (!toggle || !list) {\n return;\n }\n this.openPicker = picker;\n list.hidden = false;\n toggle.setAttribute(\"aria-expanded\", \"true\");\n const options = this.pickerOptions(picker);\n const selected = list.querySelector<HTMLElement>('[aria-selected=\"true\"]') || options[0];\n this.setActiveOption(selected);\n list.focus();\n document.addEventListener(\"pointerdown\", this.onDocumentPointerDown, true);\n }\n\n private closePicker(returnFocus: boolean): void {\n const picker = this.openPicker;\n if (!picker) {\n return;\n }\n this.openPicker = null;\n document.removeEventListener(\"pointerdown\", this.onDocumentPointerDown, true);\n const toggle = picker.querySelector<HTMLElement>(SELECTORS.toggle);\n const list = picker.querySelector<HTMLElement>(SELECTORS.list);\n if (list) {\n list.hidden = true;\n list.removeAttribute(\"aria-activedescendant\");\n }\n this.pickerOptions(picker).forEach((option) => option.classList.remove(ACTIVE_OPTION_CLASS));\n if (toggle) {\n toggle.setAttribute(\"aria-expanded\", \"false\");\n if (returnFocus) {\n toggle.focus();\n }\n }\n }\n\n private setActiveOption(option: HTMLElement | undefined): void {\n if (!option || !this.openPicker) {\n return;\n }\n const list = this.openPicker.querySelector<HTMLElement>(SELECTORS.list);\n this.pickerOptions(this.openPicker).forEach((other) => {\n other.classList.toggle(ACTIVE_OPTION_CLASS, other === option);\n });\n if (list && option.id) {\n list.setAttribute(\"aria-activedescendant\", option.id);\n }\n option.scrollIntoView({ block: \"nearest\" });\n }\n\n // ── Tracking ──────────────────────────────────────────────────────────────\n\n private snapshot(item: HTMLElement, trigger: HTMLAnchorElement): DownloadSnapshot {\n const data = item.dataset;\n return {\n title: data.lsgDownloadTitle || \"\",\n url: absoluteUrl(trigger.getAttribute(\"href\") || data.lsgDownloadUrl || \"\"),\n type: data.lsgDownloadType || \"\",\n language: data.lsgDownloadLanguage || \"\",\n action: data.lsgDownloadAction || \"\",\n external: data.lsgDownloadExternal === \"true\",\n download: trigger.hasAttribute(\"download\"),\n newTab: trigger.getAttribute(\"target\") === \"_blank\",\n };\n }\n\n private track(snapshot: DownloadSnapshot, unlockedBy: LsgDownloadUnlockedBy): void {\n const detail: LsgDownloadTrackingDetail = {\n title: snapshot.title,\n url: snapshot.url,\n type: snapshot.type,\n language: snapshot.language,\n action: snapshot.action,\n external: snapshot.external,\n gated: this.isGated(),\n formPath: this.root.dataset.lsgDownloadFormPath || \"\",\n unlockedBy,\n libraryId: this.root.dataset.lsgDownloadLibraryId || \"\",\n };\n try {\n this.dataLayer().push({ event: \"lsg_download\", download: detail });\n } catch (e) {\n // Tracking must never block the download.\n }\n this.root.dispatchEvent(new CustomEvent(LSG_DOWNLOAD_EVENT, { bubbles: true, detail }));\n }\n\n private dataLayer(): { push: (entry: object) => unknown } {\n if (this.options.dataLayer) {\n return this.options.dataLayer;\n }\n const w = window as unknown as { dataLayer?: object[] };\n w.dataLayer = w.dataLayer || [];\n return w.dataLayer;\n }\n}\n","import React, { useEffect, useId, useRef } from \"react\";\nimport { LsgAemButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\nimport { LsgDownloadLibraryController } from \"./LsgDownloadLibraryController\";\nimport type { LsgDownloadLibraryControllerOptions } from \"./LsgDownloadLibraryController\";\nimport \"./LsgDownloadLibrary.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types — mirror LsgDownloadLibraryModel / LsgDownloadItem / LsgDownloadVariant\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** \"open\" for PDFs and external links (new tab), \"download\" for everything else. */\nexport type LsgDownloadAction = \"download\" | \"open\";\nexport type LsgDownloadSource = \"children\" | \"static\" | \"staticExternal\";\n/** Policy \"Download button display\": a square icon, or a text button. */\nexport type LsgDownloadCtaDisplay = \"icon\" | \"label\";\n/** Palette tokens offered by the policy's \"Background color\" and \"Accent color\" style groups. */\nexport type LsgDownloadColour = \"white\" | \"light\" | \"primary\" | \"secondary\" | \"tertiary\" | \"dark\" | \"black\";\nexport type LsgDownloadAccent = LsgDownloadColour;\nexport type LsgDownloadBackground = LsgDownloadColour;\nexport type LsgDownloadTextColour = LsgDownloadColour;\n\nexport interface LsgDownloadVariant {\n languageCode: string;\n languageLabel: string;\n url: string;\n selected?: boolean;\n}\n\nexport interface LsgDownloadItem {\n id: string;\n title: string;\n url: string;\n type?: string;\n size?: string;\n description?: string;\n tags?: string[];\n imageUrl?: string;\n external?: boolean;\n action: LsgDownloadAction;\n /** Selected variant first (the model always orders them that way). */\n variants?: LsgDownloadVariant[];\n}\n\nexport interface LsgDownloadLibraryStrings {\n /** `{0}` = document title. */\n download: string;\n /** `{0}` = document title. */\n open: string;\n /** Visible text of a label-display button. */\n downloadLabel: string;\n openLabel: string;\n /** Appended (visually hidden) to a label-display \"Open\" button. */\n newTab: string;\n language: string;\n type: string;\n size: string;\n close: string;\n dialogTitle: string;\n successTitle: string;\n successText: string;\n successLinkLabel: string;\n /** `{0}` = form page path. Author (edit mode) only. */\n authorNote: string;\n emptyPlaceholder: string;\n}\n\n/** Same defaults as the HTL (i18n keys / dialog emptyText). */\nexport const LSG_DOWNLOAD_LIBRARY_STRINGS: LsgDownloadLibraryStrings = {\n download: \"Download {0}\",\n open: \"Open {0} (opens in a new tab)\",\n downloadLabel: \"Download\",\n openLabel: \"Open\",\n newTab: \"(opens in a new tab)\",\n language: \"Language\",\n type: \"Type\",\n size: \"Size\",\n close: \"Close\",\n dialogTitle: \"Complete the form to download\",\n successTitle: \"Thank you\",\n successText: \"Your download should start automatically. If it does not, use the button below.\",\n successLinkLabel: \"Download now\",\n authorNote: \"Gated by form page: {0}\",\n emptyPlaceholder: \"Configure Download Library\",\n};\n\nexport interface LsgDownloadLibraryHubspotProperties {\n title?: string;\n url?: string;\n language?: string;\n}\n\nexport interface LsgDownloadLibraryProps {\n items: LsgDownloadItem[];\n /** AEM `overlayId` (\"lsg-download-overlay-<hash>\"); also the dialog id. */\n libraryId?: string;\n source?: LsgDownloadSource;\n /** True when a valid LSG overlay (form) page is configured. */\n gated?: boolean;\n /** Overlay page path; also the session unlock key. */\n formPath?: string;\n /**\n * Policy \"Download button style\" — shape only: \"primary\" = filled, \"secondary\" = outlined\n * (the colour comes from `accent`). Other LSG Button types still render, for old policies.\n */\n ctaVariant?: LsgButtonVariant;\n /** Policy \"Download button display\". */\n ctaDisplay?: LsgDownloadCtaDisplay;\n /** Policy \"Background color\" (`lsg-download-library--bg-{token}`): the card background. */\n background?: LsgDownloadBackground;\n /** Policy \"Text color\" (`lsg-download-library--text-{token}`): all text (dropdown included) and the download icon. */\n textColour?: LsgDownloadTextColour;\n /**\n * Policy \"Accent color\" (`lsg-download-library--accent-{token}`): download button, dropdown\n * background, theme-2 rule and title hover, theme-3 title band. Unset keeps each theme's default.\n */\n accent?: LsgDownloadAccent;\n /** Policy HubSpot hidden-field property names. Leave empty to send nothing. */\n hubspotProperties?: LsgDownloadLibraryHubspotProperties;\n strings?: Partial<LsgDownloadLibraryStrings>;\n /** Stands in for the overlay page's form (`data-sly-resource` in AEM). */\n form?: React.ReactNode;\n /** AEM edit mode: no JS hook, no dialog, author note instead. */\n isEditMode?: boolean;\n /** Style-system classes on the outer section. */\n className?: string;\n controllerOptions?: LsgDownloadLibraryControllerOptions;\n}\n\nconst GRID_COLUMN = \"aem-GridColumn aem-GridColumn--default--12\";\n\nconst format = (template: string, value: string): string => template.replace(\"{0}\", value);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgDownloadLibrary — DOM is a 1:1 copy of download-library.html\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgDownloadLibrary: React.FC<LsgDownloadLibraryProps> = ({\n items,\n libraryId,\n source = \"static\",\n gated = false,\n formPath = \"\",\n ctaVariant = \"primary\",\n ctaDisplay = \"icon\",\n background,\n textColour,\n accent,\n hubspotProperties = {},\n strings: stringOverrides,\n form,\n isEditMode = false,\n className,\n controllerOptions,\n}) => {\n const strings = { ...LSG_DOWNLOAD_LIBRARY_STRINGS, ...stringOverrides };\n const reactId = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n const libId = libraryId ?? `lsg-download-overlay-${reactId}`;\n const isGated = gated && !isEditMode;\n const ready = items.length > 0;\n const labelCta = ctaDisplay === \"label\";\n const rootRef = useRef<HTMLDivElement>(null);\n\n // ── Controller (same class the AEM clientlib boots) ───────────────────────\n useEffect(() => {\n if (isEditMode || !rootRef.current) return;\n const controller = new LsgDownloadLibraryController(rootRef.current, controllerOptions);\n controller.init();\n return () => controller.destroy();\n }, [isEditMode, controllerOptions]);\n\n return (\n <section\n className={[\n \"lsg-download-library\",\n GRID_COLUMN,\n background && `lsg-download-library--bg-${background}`,\n textColour && `lsg-download-library--text-${textColour}`,\n accent && `lsg-download-library--accent-${accent}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <div\n ref={rootRef}\n className=\"lsg-download-library__container\"\n data-lsg-is={isEditMode ? undefined : \"download-library\"}\n data-lsg-download-library-id={libId}\n data-lsg-download-source={source}\n data-lsg-download-gated={isGated ? \"true\" : \"false\"}\n data-lsg-download-form-path={isGated ? formPath : undefined}\n data-lsg-download-dialog-id={isGated ? libId : undefined}\n data-lsg-download-hs-title={hubspotProperties.title || undefined}\n data-lsg-download-hs-url={hubspotProperties.url || undefined}\n data-lsg-download-hs-language={hubspotProperties.language || undefined}\n >\n {ready && (\n <ul className=\"lsg-download-library__items\" role=\"list\">\n {items.map((item, index) => {\n const iid = `${libId}-item-${index}`;\n const isOpen = item.action === \"open\";\n const newTab = !!item.external || isOpen;\n const variants = item.variants ?? [];\n const current = variants[0];\n\n return (\n <li className=\"lsg-download-library__item\" key={item.id}>\n <article\n className=\"lsg-download-library__card\"\n aria-labelledby={`${iid}-title`}\n data-lsg-download-item=\"\"\n data-lsg-download-id={item.id}\n data-lsg-download-title={item.title}\n data-lsg-download-type={item.type}\n data-lsg-download-action={item.action}\n data-lsg-download-external={item.external ? \"true\" : \"false\"}\n data-lsg-download-url={item.url}\n data-lsg-download-language={current?.languageCode}\n >\n <div\n className={`lsg-download-library__media${\n item.imageUrl ? \"\" : \" lsg-download-library__media--placeholder\"\n }`}\n >\n {item.imageUrl ? (\n <img\n className=\"lsg-download-library__image\"\n src={item.imageUrl}\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n ) : (\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--document\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n\n <div className=\"lsg-download-library__body\">\n <h3 className=\"lsg-download-library__title\" id={`${iid}-title`}>\n {item.title}\n </h3>\n {item.description && (\n <p className=\"lsg-download-library__description\">{item.description}</p>\n )}\n {(item.type || item.size) && (\n <dl className=\"lsg-download-library__meta\">\n {item.type && (\n <div className=\"lsg-download-library__meta-item lsg-download-library__meta-item--type\">\n <dt className=\"lsg-visually-hidden\">{strings.type}</dt>\n <dd>{item.type}</dd>\n </div>\n )}\n {item.size && (\n <div className=\"lsg-download-library__meta-item lsg-download-library__meta-item--size\">\n <dt className=\"lsg-visually-hidden\">{strings.size}</dt>\n <dd>{item.size}</dd>\n </div>\n )}\n </dl>\n )}\n </div>\n\n <div className=\"lsg-download-library__actions\">\n <LsgAemButton\n variant={ctaVariant}\n wrapperClassName=\"lsg-download-library__cta\"\n className={`${labelCta ? \"\" : \"lsg-button--icon \"}lsg-download-library__trigger`}\n href={item.url}\n data-lsg-download-trigger=\"\"\n aria-haspopup={isGated ? \"dialog\" : undefined}\n aria-controls={isGated ? libId : undefined}\n download={!item.external && !isOpen ? \"\" : undefined}\n target={newTab ? \"_blank\" : undefined}\n rel={newTab ? \"noopener noreferrer\" : undefined}\n icon={\n labelCta ? undefined : (\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--download\"\n aria-hidden=\"true\"\n />\n )\n }\n >\n {labelCta ? (\n <>\n {isOpen ? strings.openLabel : strings.downloadLabel}\n <span className=\"lsg-visually-hidden\">\n {\" \"}\n {item.title}\n {isOpen && ` ${strings.newTab}`}\n </span>\n </>\n ) : (\n <span className=\"lsg-visually-hidden\">\n {format(isOpen ? strings.open : strings.download, item.title)}\n </span>\n )}\n </LsgAemButton>\n\n {variants.length > 1 && (\n <div className=\"lsg-download-library__language\" data-lsg-download-language-picker=\"\">\n <span className=\"lsg-visually-hidden\" id={`${iid}-lang-label`}>\n {strings.language}\n </span>\n <button\n type=\"button\"\n className=\"lsg-download-library__language-toggle\"\n id={`${iid}-lang-toggle`}\n aria-haspopup=\"listbox\"\n aria-expanded=\"false\"\n aria-controls={`${iid}-lang-list`}\n aria-labelledby={`${iid}-lang-label ${iid}-lang-toggle`}\n data-lsg-download-language-toggle=\"\"\n >\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--chevron\"\n aria-hidden=\"true\"\n />\n <span\n className=\"lsg-download-library__language-current\"\n data-lsg-download-language-current=\"\"\n >\n {current?.languageLabel}\n </span>\n </button>\n <ul\n className=\"lsg-download-library__language-list\"\n id={`${iid}-lang-list`}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={`${iid}-lang-label`}\n hidden\n >\n {variants.map((variant, variantIndex) => (\n <li\n key={variant.languageCode}\n className=\"lsg-download-library__language-option\"\n role=\"option\"\n id={`${iid}-lang-${variantIndex}`}\n aria-selected={variant.selected ? \"true\" : \"false\"}\n data-lsg-download-language={variant.languageCode}\n data-lsg-download-url={variant.url}\n >\n {variant.languageLabel}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </article>\n </li>\n );\n })}\n </ul>\n )}\n\n {!ready && isEditMode && (\n <div className=\"cq-placeholder\" data-emptytext={strings.emptyPlaceholder} />\n )}\n {gated && isEditMode && (\n <p className=\"lsg-download-library__author-note\">{format(strings.authorNote, formPath)}</p>\n )}\n\n {isGated && (\n <dialog\n className=\"lsg-download-library__dialog\"\n id={libId}\n aria-labelledby={`${libId}-title`}\n data-lsg-download-dialog=\"\"\n >\n <div className=\"lsg-download-library__dialog-panel\">\n <div className=\"lsg-download-library__dialog-header\">\n <h2 className=\"lsg-download-library__dialog-title\" id={`${libId}-title`}>\n {strings.dialogTitle}\n </h2>\n <p className=\"lsg-download-library__dialog-asset\" data-lsg-download-dialog-asset=\"\" />\n <button\n type=\"button\"\n className=\"lsg-download-library__dialog-close\"\n aria-label={strings.close}\n data-lsg-download-dialog-close=\"\"\n >\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--close\"\n aria-hidden=\"true\"\n />\n </button>\n </div>\n <div className=\"lsg-download-library__dialog-form\" data-lsg-download-dialog-form=\"\">\n {form}\n </div>\n <div className=\"lsg-download-library__dialog-success\" data-lsg-download-dialog-success=\"\" hidden>\n <h3 className=\"lsg-download-library__dialog-success-title\" tabIndex={-1}>\n {strings.successTitle}\n </h3>\n <p className=\"lsg-download-library__dialog-success-text\">{strings.successText}</p>\n <LsgAemButton\n variant={ctaVariant}\n wrapperClassName=\"lsg-download-library__success-cta\"\n className=\"lsg-download-library__success-link\"\n href=\"#\"\n data-lsg-download-success-link=\"\"\n >\n {strings.successLinkLabel}\n </LsgAemButton>\n </div>\n </div>\n </dialog>\n )}\n </div>\n </section>\n );\n};\n","import { LsgDownloadLibraryController } from \"./LsgDownloadLibraryController\";\n\n/**\n * AEM entry: wires every published download library on the page. The HTL leaves\n * out data-lsg-is in edit mode, so authors get the static markup. Safe to call more\n * than once (the controller marks its root as ready).\n */\nexport function bootLsgDownloadLibrary(root: Window = window): void {\n root.document\n .querySelectorAll<HTMLElement>('[data-lsg-is=\"download-library\"]')\n .forEach((element) => new LsgDownloadLibraryController(element).init());\n}\n","import React from \"react\";\nimport \"./LsgFormPolicyNotice.scss\";\n\nexport interface LsgFormPolicyNoticeProps {\n /** HTML content from AEM rich-text editor */\n text: string;\n /** AEM style policy — adds cmp-text--policy-notice-icon modifier */\n policyNoticeIcon?: boolean;\n}\n\nexport const LsgFormPolicyNotice: React.FC<LsgFormPolicyNoticeProps> = ({\n text,\n policyNoticeIcon = false,\n}) => (\n <div\n className={[\n \"cmp-text\",\n policyNoticeIcon ? \"cmp-text--policy-notice-icon\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n // eslint-disable-next-line react/no-danger -- mirrors AEM rich-text output\n dangerouslySetInnerHTML={{ __html: text }}\n />\n);\n","import React from \"react\";\n\nimport {\n LsgBanner,\n LsgBreadcrumb,\n LsgButton,\n LsgCard,\n LsgCards,\n LsgGeneratedList,\n LsgPagination,\n LsgBlogOverview,\n LsgCarousel,\n LsgFooter,\n LsgFormContainer,\n LsgFormFieldConsent,\n LsgFormFieldCountry,\n LsgFormFieldEmail,\n LsgFormFieldSelect,\n LsgFormFieldTel,\n LsgFormFieldText,\n LsgFormFieldTextarea,\n LsgFormPolicyNotice,\n LsgFormStep,\n LsgHeader,\n LsgHero,\n LsgTabs,\n LsgTable,\n LsgLanguageSwitcher,\n LsgLogo,\n LsgNavigation,\n LsgQuickLinks,\n LsgSearchOverlay,\n LsgSearchTrigger,\n LsgSocialMediaIcons,\n} from \"../components/lsg\";\n\nconst BASE_COMPONENTS = {\n LsgButton,\n LsgBanner,\n LsgCarousel,\n LsgCard,\n LsgCards,\n LsgGeneratedList,\n LsgPagination,\n LsgBlogOverview,\n LsgBreadcrumb,\n LsgLogo,\n LsgNavigation,\n LsgLanguageSwitcher,\n LsgSearchTrigger,\n LsgSearchOverlay,\n LsgHeader,\n LsgQuickLinks,\n LsgSocialMediaIcons,\n LsgFooter,\n LsgHero,\n LsgTabs,\n LsgTable,\n LsgFormContainer,\n LsgFormFieldText,\n LsgFormFieldEmail,\n LsgFormFieldTel,\n LsgFormFieldSelect,\n LsgFormFieldCountry,\n LsgFormFieldTextarea,\n LsgFormFieldConsent,\n LsgFormPolicyNotice,\n LsgFormStep,\n} as const;\n\ntype BaseComponents = typeof BASE_COMPONENTS;\n\nfunction createThemeComponent<Props extends object>(\n themeName: string,\n componentName: string,\n Component: React.ComponentType<Props>,\n): React.FC<Props> {\n const WrappedComponent: React.FC<Props> = (props) => (\n <div\n className={[\n \"lsg-themed-component\",\n `lsg-themed-component--${themeName}`,\n `lsg-themed-component--${componentName}`,\n ].join(\" \")}\n >\n <Component {...props} />\n </div>\n );\n\n WrappedComponent.displayName = `${themeName}-${componentName}`;\n\n return WrappedComponent;\n}\n\nexport function createThemeComponents(themeName: string): BaseComponents {\n return {\n LsgButton: createThemeComponent(themeName, \"button\", BASE_COMPONENTS.LsgButton),\n LsgBanner: createThemeComponent(themeName, \"banner\", BASE_COMPONENTS.LsgBanner),\n LsgCarousel: createThemeComponent(themeName, \"carousel\", BASE_COMPONENTS.LsgCarousel),\n LsgCard: createThemeComponent(themeName, \"card\", BASE_COMPONENTS.LsgCard),\n LsgCards: createThemeComponent(themeName, \"cards\", BASE_COMPONENTS.LsgCards),\n LsgGeneratedList: createThemeComponent(\n themeName,\n \"generated-list\",\n BASE_COMPONENTS.LsgGeneratedList,\n ),\n LsgPagination: createThemeComponent(themeName, \"pagination\", BASE_COMPONENTS.LsgPagination),\n LsgBlogOverview: createThemeComponent(\n themeName,\n \"blog-overview\",\n BASE_COMPONENTS.LsgBlogOverview,\n ),\n LsgBreadcrumb: createThemeComponent(themeName, \"breadcrumb\", BASE_COMPONENTS.LsgBreadcrumb),\n LsgLogo: createThemeComponent(themeName, \"logo\", BASE_COMPONENTS.LsgLogo),\n LsgNavigation: createThemeComponent(themeName, \"navigation\", BASE_COMPONENTS.LsgNavigation),\n LsgLanguageSwitcher: createThemeComponent(\n themeName,\n \"language-switcher\",\n BASE_COMPONENTS.LsgLanguageSwitcher,\n ),\n LsgSearchTrigger: createThemeComponent(\n themeName,\n \"search-trigger\",\n BASE_COMPONENTS.LsgSearchTrigger,\n ),\n LsgSearchOverlay: createThemeComponent(\n themeName,\n \"search-overlay\",\n BASE_COMPONENTS.LsgSearchOverlay,\n ),\n LsgHeader: createThemeComponent(themeName, \"header\", BASE_COMPONENTS.LsgHeader),\n LsgQuickLinks: createThemeComponent(themeName, \"quick-links\", BASE_COMPONENTS.LsgQuickLinks),\n LsgSocialMediaIcons: createThemeComponent(\n themeName,\n \"social-media-icons\",\n BASE_COMPONENTS.LsgSocialMediaIcons,\n ),\n LsgFooter: createThemeComponent(themeName, \"footer\", BASE_COMPONENTS.LsgFooter),\n LsgHero: createThemeComponent(themeName, \"hero\", BASE_COMPONENTS.LsgHero),\n LsgFormContainer: createThemeComponent(themeName, \"form-container\", BASE_COMPONENTS.LsgFormContainer),\n LsgFormFieldText: createThemeComponent(themeName, \"form-field-text\", BASE_COMPONENTS.LsgFormFieldText),\n LsgFormFieldEmail: createThemeComponent(themeName, \"form-field-email\", BASE_COMPONENTS.LsgFormFieldEmail),\n LsgFormFieldTel: createThemeComponent(themeName, \"form-field-tel\", BASE_COMPONENTS.LsgFormFieldTel),\n LsgFormFieldSelect: createThemeComponent(themeName, \"form-field-select\", BASE_COMPONENTS.LsgFormFieldSelect),\n LsgFormFieldCountry: createThemeComponent(themeName, \"form-field-country\", BASE_COMPONENTS.LsgFormFieldCountry),\n LsgFormFieldTextarea: createThemeComponent(themeName, \"form-field-textarea\", BASE_COMPONENTS.LsgFormFieldTextarea),\n LsgFormFieldConsent: createThemeComponent(themeName, \"form-field-consent\", BASE_COMPONENTS.LsgFormFieldConsent),\n LsgFormPolicyNotice: createThemeComponent(themeName, \"form-policy-notice\", BASE_COMPONENTS.LsgFormPolicyNotice),\n LsgFormStep: createThemeComponent(themeName, \"form-step\", BASE_COMPONENTS.LsgFormStep),\n LsgTabs: createThemeComponent(themeName, \"tabs\", BASE_COMPONENTS.LsgTabs),\n LsgTable: createThemeComponent(themeName, \"table\", BASE_COMPONENTS.LsgTable),\n };\n}\n","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme1Components = createThemeComponents(\"theme-1\");\n\nexport const {\n LsgButton: Theme1LsgButton,\n LsgBanner: Theme1LsgBanner,\n LsgCarousel: Theme1LsgCarousel,\n LsgCard: Theme1LsgCard,\n LsgCards: Theme1LsgCards,\n LsgGeneratedList: Theme1LsgGeneratedList,\n LsgPagination: Theme1LsgPagination,\n LsgBlogOverview: Theme1LsgBlogOverview,\n LsgBreadcrumb: Theme1LsgBreadcrumb,\n LsgLogo: Theme1LsgLogo,\n LsgNavigation: Theme1LsgNavigation,\n LsgLanguageSwitcher: Theme1LsgLanguageSwitcher,\n LsgSearchTrigger: Theme1LsgSearchTrigger,\n LsgSearchOverlay: Theme1LsgSearchOverlay,\n LsgHeader: Theme1LsgHeader,\n LsgQuickLinks: Theme1LsgQuickLinks,\n LsgSocialMediaIcons: Theme1LsgSocialMediaIcons,\n LsgFooter: Theme1LsgFooter,\n LsgHero: Theme1LsgHero,\n LsgTabs: Theme1LsgTabs,\n LsgTable: Theme1LsgTable,\n // Form components\n LsgFormContainer: Theme1LsgFormContainer,\n LsgFormFieldText: Theme1LsgFormFieldText,\n LsgFormFieldEmail: Theme1LsgFormFieldEmail,\n LsgFormFieldTel: Theme1LsgFormFieldTel,\n LsgFormFieldTextarea: Theme1LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme1LsgFormFieldSelect,\n LsgFormFieldCountry: Theme1LsgFormFieldCountry,\n LsgFormFieldConsent: Theme1LsgFormFieldConsent,\n LsgFormPolicyNotice: Theme1LsgFormPolicyNotice,\n LsgFormStep: Theme1LsgFormStep,\n} = theme1Components;","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme2Components = createThemeComponents(\"theme-2\");\n\nexport const {\n LsgButton: Theme2LsgButton,\n LsgBanner: Theme2LsgBanner,\n LsgCarousel: Theme2LsgCarousel,\n LsgCard: Theme2LsgCard,\n LsgCards: Theme2LsgCards,\n LsgGeneratedList: Theme2LsgGeneratedList,\n LsgPagination: Theme2LsgPagination,\n LsgBlogOverview: Theme2LsgBlogOverview,\n LsgBreadcrumb: Theme2LsgBreadcrumb,\n LsgLogo: Theme2LsgLogo,\n LsgNavigation: Theme2LsgNavigation,\n LsgLanguageSwitcher: Theme2LsgLanguageSwitcher,\n LsgSearchTrigger: Theme2LsgSearchTrigger,\n LsgSearchOverlay: Theme2LsgSearchOverlay,\n LsgHeader: Theme2LsgHeader,\n LsgQuickLinks: Theme2LsgQuickLinks,\n LsgSocialMediaIcons: Theme2LsgSocialMediaIcons,\n LsgFooter: Theme2LsgFooter,\n LsgHero: Theme2LsgHero,\n LsgTable: Theme2LsgTable,\n // Form components\n LsgFormContainer: Theme2LsgFormContainer,\n LsgFormFieldText: Theme2LsgFormFieldText,\n LsgFormFieldEmail: Theme2LsgFormFieldEmail,\n LsgFormFieldTel: Theme2LsgFormFieldTel,\n LsgFormFieldTextarea: Theme2LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme2LsgFormFieldSelect,\n LsgFormFieldCountry: Theme2LsgFormFieldCountry,\n LsgFormFieldConsent: Theme2LsgFormFieldConsent,\n LsgFormStep: Theme2LsgFormStep,\n} = theme2Components;","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme3Components = createThemeComponents(\"theme-3\");\n\nexport const {\n LsgButton: Theme3LsgButton,\n LsgBanner: Theme3LsgBanner,\n LsgCarousel: Theme3LsgCarousel,\n LsgCard: Theme3LsgCard,\n LsgCards: Theme3LsgCards,\n LsgGeneratedList: Theme3LsgGeneratedList,\n LsgPagination: Theme3LsgPagination,\n LsgBlogOverview: Theme3LsgBlogOverview,\n LsgBreadcrumb: Theme3LsgBreadcrumb,\n LsgLogo: Theme3LsgLogo,\n LsgNavigation: Theme3LsgNavigation,\n LsgLanguageSwitcher: Theme3LsgLanguageSwitcher,\n LsgSearchTrigger: Theme3LsgSearchTrigger,\n LsgSearchOverlay: Theme3LsgSearchOverlay,\n LsgHeader: Theme3LsgHeader,\n LsgQuickLinks: Theme3LsgQuickLinks,\n LsgSocialMediaIcons: Theme3LsgSocialMediaIcons,\n LsgFooter: Theme3LsgFooter,\n LsgHero: Theme3LsgHero,\n LsgTable: Theme3LsgTable,\n // Form components\n LsgFormContainer: Theme3LsgFormContainer,\n LsgFormFieldText: Theme3LsgFormFieldText,\n LsgFormFieldEmail: Theme3LsgFormFieldEmail,\n LsgFormFieldTel: Theme3LsgFormFieldTel,\n LsgFormFieldTextarea: Theme3LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme3LsgFormFieldSelect,\n LsgFormFieldCountry: Theme3LsgFormFieldCountry,\n LsgFormFieldConsent: Theme3LsgFormFieldConsent,\n LsgFormStep: Theme3LsgFormStep,\n} = theme3Components;"],"names":["LsgButton","_a","children","_b","variant","_c","disabled","href","onClick","_d","type","_e","className","_f","external","classNames","concat","filter","Boolean","join","React","createElement","_extends","undefined","target","rel","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","SuppressedError","error","suppressed","message","Error","name","LsgAemButton","wrapperClassName","icon","anchorProps","GRID_COLUMN","AemGroup","styleClasses","columnClassName","componentClass","styleClass","AemTitle","Tag","colour","AemText","id","AemButton","cta","label","videoMimeType","url","path","split","toLowerCase","endsWith","LsgBanner","heading","preTitle","eyebrow","body","copy","ctas","preTitleColour","headingColour","bodyColour","mediaType","imageUrl","imageAlt","mediaHref","mediaTarget","videoUrl","videoPoster","videoControls","videoAutoPlay","videoMuted","videoLoop","_g","layout","_h","mobileMediaPosition","background","accent","_j","headingTag","textId","useId","replace","resolvedPreTitle","resolvedBody","actions","slice","resolvedMediaType","hasMedia","picture","src","alt","loading","poster","autoPlay","muted","loop","controls","playsInline","tag","map","action","index","key","isSafeUrl","lower","trim","startsWith","includes","LsgImage","srcset","sources","width","height","srcUriTemplate","lazyEnabled","displayPopupTitle","dataLayer","assetId","dmImage","tags","title","description","caption","text","visibleTags","Array","isArray","visibleSources","source","rootClass","safeHref","linkLabel","showTitle","showCaption","String","itemScope","itemType","media","srcSet","itemProp","content","buildUrl","base","params","url_1","URL","keys","forEach","searchParams","set","toString","getEmbedInfo","opts","host","hostname","pathname","get","test","autoplay","mute","playlist","baseHost","provider","embedUrl","match","PlayIcon","viewBox","fill","xmlns","focusable","cx","cy","r","fillOpacity","points","LsgVideo","onPlay","displayMode","showTags","_k","_l","useState","isRevealed","setIsRevealed","hasVideoSource","embedInfo","isEmbed","isNativeSource","showMedia","handleActivate","preventDefault","playLabel","renderPlayControl","allow","referrerPolicy","allowFullScreen","Fragment","isNumber","subject","isString","isBoolean","isObject","mathAbs","Math","abs","mathSign","sign","deltaAbs","valueB","valueA","factorAbs","diff","roundToTwoDecimals","num","round","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","arrayFromNumber","startAt","from","_","object","objectsMergeDeep","objectA","objectB","reduce","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","LsgCarouselController","viewport","elements","options","_this","embla","scrollPrev","canScrollPrev","lastSnap","scrollSnapList","scrollTo","scrollNext","canScrollNext","syncSelectedState","selected","selectedScrollSnap","paginationBtns","button","active","classList","toggle","setAttribute","els","EmblaCarousel","align","containScroll","direction","skipSnaps","slidesToScroll","paginationHandlers","prevBtn","addEventListener","nextBtn","on","defineProperty","destroy","removeEventListener","off","mediaTypeFor","item","directionForLayout","LsgCarousel","items","ariaLabel","rootRef","useRef","viewportRef","prevBtnRef","nextBtnRef","dotsRef","controllerRef","HeadingTag","isCarousel","carouselDirection","useEffect","current","querySelectorAll","rootClasses","ref","dir","role","cardVariantClass","LsgCard","subtitle","iconUrl","iconAlt","resolvedIconUrl","actionLabel","cardClassName","LsgCards","cards","columns","listClassName","card","LsgGeneratedList","cardVariant","maxColumns","DEFAULT_LABELS","nav","first","previous","next","last","page","getLsgPaginationRange","currentPage","totalPages","siblingCount","min","pages","Set","add","sorted","sort","a","b","range","push","GLYPHS","chevron","arrow","bar","PaginationIcon","kind","glyphs","mirrored","transform","entries","d","LsgPagination","onPageChange","truncate","showFirstLast","labels","goTo","control","iconFirst","defaultStatusLabel","LsgBlogOverview","rows","paginationLabels","truncatePages","statusLabel","setPage","status","setStatus","pageSize","ceil","pageItems","handlePageChange","nextPage","root","getBoundingClientRect","top","reduceMotion","window","matchMedia","matches","scrollIntoView","behavior","block","CARD_VARIANTS","isRecord","value","toColumns","parseInt","toCardVariant","find","toItem","raw","referenceTitle","image","referenceImage","referencePreTitle","referenceSubtitle","referenceText","encodeURI","mapAemGeneratedListJson","json","data","LSG_ICON_PATHS","bars","chevronLeft","chevronRight","close","globe","home","search","LsgIcon","isSafeHref","BreadcrumbSeparator","LsgBreadcrumb","showBreadcrumbs","includeHome","homeHref","homeLabel","visibleItems","rootClassName","safeHomeHref","isCurrent","LsgLogo","LsgNavigation","onItemClick","onItemHover","renderItems","navItems","level","hasChildren","open","onMouseEnter","event","preserveAspectRatio","stroke","strokeWidth","strokeLinecap","strokeLinejoin","ChevronIcon","LsgLanguageSwitcher","currentLanguage","languages","onLanguageChange","isOpen","setIsOpen","containerRef","reactId","triggerId","dropdownId","handleClick","contains","document","handleKey","prev","lang","code","SearchIcon","x1","y1","x2","y2","LsgSearchTrigger","targetId","CloseIcon","LsgSearchOverlay","placeholder","onClose","onSearch","inputRef","inputId","focus","handleSubmit","query","overlayClass","style","position","inset","cursor","onSubmit","htmlFor","autoComplete","SEARCH_OVERLAY_ID","LsgHeaderIcon","getItemByPath","activePath","depth","currentItems","currentItem","getItemsAtLevel","getMegaColumns","maxDepth","activeItem","isCurrentOrActiveAtLevel","isSelectedAtLevel","hasOpenNavItem","some","clearMegaMenuBranch","scope","HTMLElement","remove","column","activateMegaMenuItem","parentColumn","parentElement","openItem","querySelector","HeaderActionButton","LsgHeader","logo","searchLabel","searchPlaceholder","size","menuOpen","mobileLevel","mobileSelectedLabel","onMenuToggle","onNavItemHover","onDropdownClose","onMegaItemHover","onMobileItemClick","onMobileBreadcrumbClick","searchOpen","setSearchOpen","headerRef","mobileOpen","mobileItems","mobileBackLabel","dropdownOpen","closeOnOutsidePointerDown","megaItems","removeListeners","onFocusIn","removeListener","openSearch","renderActions","showMenu","renderMegaPanel","columnItems","columnIndex","renderMobileMenu","isSelected","LsgQuickLinks","links","link","platformIcons","linkedin","twitter","facebook","instagram","youtube","LsgSocialMediaIcons","platform","PhoneIcon","FaxIcon","MailIcon","LocationIcon","AiBadge","SocialIcon","icons","SocialIconsRow","l","color","display","alignItems","opacity","LsgFooter","simpleTwoRow","brandLine","complexColumns","showAiBadge","cookieSetting","contact","_m","quickLinks","copyright","colHeadings","socialLinks","_o","socialPosition","_p","year","Date","getFullYear","copyrightText","is3col","headings","about","contactAlt","bottomTopBar","bottomBar","address","phone","fax","email","clampNumber","number","isNaN","LsgHeroController","autoplayTimer","contentObserver","rafId","startAutoplay","handleScrollDown","scrollDownTarget","stopAutoplay","setInterval","autoplayInterval","clearInterval","transition","mount","scrollDownBtn","requestAnimationFrame","isConnected","section","closest","axis","getComputedStyle","getPropertyValue","plugins","EmblaCarouselFade","contentWrapper","ResizeObserver","setHeight_1","el","setProperty","offsetHeight","observe","reInit","cancelAnimationFrame","disconnect","LsgHeroCard","imageSrc","videoSrc","youtubeId","vimeoId","cardBackground","cardColor","total","videoReady","setVideoReady","hasYoutube","hasVimeo","hasDam","youtubeEmbedSrc","vimeoEmbedSrc","articleClasses","onCanPlay","tabIndex","LsgHero","slides","showArrows","enableScrollDown","scrollDownText","sectionRef","useCallback","nextElementSibling","sectionClasses","slide","MOBILE_MEDIA_QUERY","SCROLL_EPSILON","CHEVRON_SVG","LsgTabs","activeId","accessibilityLabel","selectedId","setSelectedId","collapsed","setCollapsed","isMobile","setIsMobile","scrollStart","setScrollStart","scrollEnd","setScrollEnd","tabRefs","stripRef","isVertical","selectedIndex","findIndex","mql","sync","updateArrows","strip","offset","scrollTop","scrollLeft","visible","clientHeight","clientWidth","scrollHeight","scrollWidth","observer","cancelled","fonts","ready","then","scrollStrip","step","onRootClick","currentTarget","rect","beforeMidpoint","clientY","clientX","left","select","moveFocus","tab","inline","press","onKeyDown","onScroll","isActive","node","LsgTable","headers","headerBackground","accentColors","noAlternatingRows","tableStyle","minWidth","cell","row","rowIndex","cellIndex","LsgFormFieldText","helpText","defaultValue","required","autocomplete","minLength","maxLength","helpId","errorId","ariaDescribedBy","hidden","LsgFormFieldEmail","be","Te","Ae","Ee","ve","te","Fe","re","$e","xe","ze","Se","ie","Ge","ne","Ke","ae","H","B","Je","We","qe","Ze","Qe","ke","Xe","Z","COUNTRIES","defaultCountries","c","iso2","dialCode","DEFAULT_ISO2","flagEmoji","toUpperCase","ch","fromCodePoint","charCodeAt","findCountry","initTelPickers","inputs","input","enhance","getTelValue","dial","getAttribute","national","initialIso2","wrapper","insertBefore","appendChild","dropdown","list","applySelected","country","textContent","flag","renderList","f","digits","li","idx","activeElement","LsgFormFieldTel","pattern","defaultCountry","fieldRef","LsgFormFieldSelect","opt","COUNTRY_FIXTURE","LsgFormFieldCountry","countries","LsgFormFieldTextarea","LsgFormFieldConsent","dangerouslySetInnerHTML","__html","LsgFormStep","stepId","LsgFormContainer","multiStep","currentStep","steps","formError","successMessage","method","noValidate","stepTitle","VTBA_FORM_EVENTS","success","LSG_DOWNLOAD_EVENT","LSG_DOWNLOAD_UNLOCK_KEY_PREFIX","SELECTORS","trigger","picker","option","dialog","dialogClose","dialogAsset","dialogForm","dialogSuccess","successLink","form","hiddenField","POPUP_BLOCKED_CLASS","ACTIVE_OPTION_CLASS","memoryUnlocks","defaultStorage","sessionStorage","toArray","absoluteUrl","location","LsgDownloadLibraryController","pending","completed","openPicker","pointerDownOnBackdrop","Element","closeGate","track","closePicker","showPicker","selectVariant","onTrigger","pickerOptions","setActiveOption","stopPropagation","onDocumentPointerDown","Node","onDialogPointerDown","onDialogClose","onFormSuccess","snapshot","unlock","stripGateAria","setLinkBehaviour","setRegions","started","startDownload","focusSuccessHeading","init","dataset","lsgDownloadReady","isGated","isUnlocked","lsgDownloadGated","unlockKey","has","storage","getItem","setItem","lsgDownloadFormPath","lsgDownloadLibraryId","removeAttribute","showModal","openGate","asset","syncHiddenFields","focusFirstField","showForm","region","fields","getClientRects","property","lsgDownloadHsTitle","lsgDownloadHsUrl","lsgDownloadHsLanguage","language","newTab","opener_1","openWindow","win","opener","anchor","download","click","other","returnFocus","lsgDownloadTitle","lsgDownloadUrl","lsgDownloadType","lsgDownloadLanguage","lsgDownloadAction","lsgDownloadExternal","hasAttribute","unlockedBy","detail","gated","formPath","libraryId","dispatchEvent","CustomEvent","bubbles","w","LSG_DOWNLOAD_LIBRARY_STRINGS","downloadLabel","openLabel","dialogTitle","successTitle","successText","successLinkLabel","authorNote","emptyPlaceholder","format","template","LsgDownloadLibrary","ctaVariant","ctaDisplay","textColour","hubspotProperties","stringOverrides","isEditMode","controllerOptions","strings","libId","labelCta","controller","iid","variants","languageCode","decoding","languageLabel","variantIndex","bootLsgDownloadLibrary","element","LsgFormPolicyNotice","policyNoticeIcon","BASE_COMPONENTS","createThemeComponent","themeName","componentName","Component","WrappedComponent","props","displayName","createThemeComponents","theme1Components","Theme1LsgButton","Theme1LsgBanner","Theme1LsgCarousel","Theme1LsgCard","Theme1LsgCards","Theme1LsgGeneratedList","Theme1LsgPagination","Theme1LsgBlogOverview","Theme1LsgBreadcrumb","Theme1LsgLogo","Theme1LsgNavigation","Theme1LsgLanguageSwitcher","Theme1LsgSearchTrigger","Theme1LsgSearchOverlay","Theme1LsgHeader","Theme1LsgQuickLinks","Theme1LsgSocialMediaIcons","Theme1LsgFooter","Theme1LsgHero","Theme1LsgTable","theme2Components","Theme2LsgButton","Theme2LsgBanner","Theme2LsgCarousel","Theme2LsgCard","Theme2LsgCards","Theme2LsgGeneratedList","Theme2LsgPagination","Theme2LsgBlogOverview","Theme2LsgBreadcrumb","Theme2LsgLogo","Theme2LsgNavigation","Theme2LsgLanguageSwitcher","Theme2LsgSearchTrigger","Theme2LsgSearchOverlay","Theme2LsgHeader","Theme2LsgQuickLinks","Theme2LsgSocialMediaIcons","Theme2LsgFooter","Theme2LsgHero","Theme2LsgTable","theme3Components","Theme3LsgButton","Theme3LsgBanner","Theme3LsgCarousel","Theme3LsgCard","Theme3LsgCards","Theme3LsgGeneratedList","Theme3LsgPagination","Theme3LsgBlogOverview","Theme3LsgBreadcrumb","Theme3LsgLogo","Theme3LsgNavigation","Theme3LsgLanguageSwitcher","Theme3LsgSearchTrigger","Theme3LsgSearchOverlay","Theme3LsgHeader","Theme3LsgQuickLinks","Theme3LsgSocialMediaIcons","Theme3LsgFooter","Theme3LsgHero","Theme3LsgTable"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjEA,IAAAC,qBAAA,gBAAA,YAAA;AAME,EAAA,SAAAA,qBAAAA,CACEC,QAAqB,EACrBC,QAA4C,EAC5CC,OAA0C,EAAA;AAD1C,IAAA,IAAAD,QAAA,KAAA,MAAA,EAAA;MAAAA,QAAA,GAAA,EAA4C;AAAA,IAAA;AAC5C,IAAA,IAAAC,OAAA,KAAA,MAAA,EAAA;MAAAA,OAAA,GAAA,EAA0C;AAAA,IAAA;IAH5C,IAAAC,KAAA,GAAA,IAAA;;IALQ,IAAA,CAAAC,KAAK,GAA6B,IAAI;AA2C9C;;;;;AAKG;IACM,IAAA,CAAAC,UAAU,GAAG,YAAA;AACpB,MAAA,IAAI,CAACF,KAAI,CAACC,KAAK,EAAE;AAEjB,MAAA,IAAID,KAAI,CAACC,KAAK,CAACE,aAAa,EAAE,EAAE;AAC9BH,QAAAA,KAAI,CAACC,KAAK,CAACC,UAAU,EAAE;AACvB,QAAA;AACD,MAAA;AAED,MAAA,IAAME,QAAQ,GAAGJ,KAAI,CAACC,KAAK,CAACI,cAAc,EAAE,CAAC/O,MAAM,GAAG,CAAC;MACvD,IAAI8O,QAAQ,IAAI,CAAC,EAAEJ,KAAI,CAACC,KAAK,CAACK,QAAQ,CAACF,QAAQ,CAAC;IAClD,CAAC;AAED;IACS,IAAA,CAAAG,UAAU,GAAG,YAAA;AACpB,MAAA,IAAI,CAACP,KAAI,CAACC,KAAK,EAAE;AAEjB,MAAA,IAAID,KAAI,CAACC,KAAK,CAACO,aAAa,EAAE,EAAE;AAC9BR,QAAAA,KAAI,CAACC,KAAK,CAACM,UAAU,EAAE;AACvB,QAAA;AACD,MAAA;AAED,MAAA,IAAIP,KAAI,CAACC,KAAK,CAACI,cAAc,EAAE,CAAC/O,MAAM,GAAG,CAAC,EAAE0O,KAAI,CAACC,KAAK,CAACK,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAEgB,IAAA,CAAAG,iBAAiB,GAAG,YAAA;;AACnC,MAAA,IAAMC,QAAQ,GAAG,CAAAnR,EAAA,GAAA,CAAAF,EAAA,GAAA2Q,KAAI,CAACC,KAAK,MAAA,IAAA,IAAA5Q,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEsR,kBAAkB,EAAE,MAAA,IAAA,IAAApR,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,CAAC;MACtDyQ,KAAI,CAACY,cAAc,CAAC5G,OAAO,CAAC,UAAC6G,MAAM,EAAE3J,KAAK,EAAA;AACxC,QAAA,IAAM4J,MAAM,GAAG5J,KAAK,KAAKwJ,QAAQ;QACjCG,MAAM,CAACE,SAAS,CAACC,MAAM,CAAC,2BAA2B,EAAEF,MAAM,CAAC;QAC5DD,MAAM,CAACI,YAAY,CAAC,cAAc,EAAEH,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAChE,MAAA,CAAC,CAAC;IACJ,CAAC;IAtEC,IAAI,CAACI,GAAG,GAAGpB,QAAQ;AACnB,IAAA,IAAI,CAACc,cAAc,GAAGd,QAAQ,CAACc,cAAc,GACzClI,KAAK,CAACoG,IAAI,CAACgB,QAAQ,CAACc,cAAc,CAAC,GACnC,EAAE;AAEN,IAAA,IAAI,CAACX,KAAK,GAAGkB,aAAa,CAACtB,QAAQ,EAAE;AACnCuB,MAAAA,KAAK,EAAE,OAAO;AACd;AACA;AACA;AACA;AACAC,MAAAA,aAAa,EAAE,KAAK;AACpBC,MAAAA,SAAS,EAAE,CAAAjS,EAAA,GAAA0Q,OAAO,CAACuB,SAAS,mCAAI,KAAK;AACrC1K,MAAAA,IAAI,EAAE,CAAArH,EAAA,GAAAwQ,OAAO,CAACnJ,IAAI,mCAAI,IAAI;AAC1B2K,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,cAAc,EAAE;AACjB,KAAA,CAAC;AAEF,IAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACb,cAAc,CAAC5J,GAAG,CAAC,UAAC+H,CAAC,EAAE7H,KAAK;AAAK,MAAA,OAAA,YAAA;;QAC9D,CAAA7H,EAAA,GAAA2Q,KAAI,CAACC,KAAK,MAAA,IAAA,IAAA5Q,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiR,QAAQ,CAACpJ,KAAK,CAAC;MAC7B,CAAC;AAF+D,IAAA,CAE/D,CAAC;IAEF,CAAAzH,EAAA,GAAA,IAAI,CAACyR,GAAG,CAACQ,OAAO,MAAA,IAAA,IAAAjS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEkS,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACzB,UAAU,CAAC;IAC5D,CAAArQ,EAAA,GAAA,IAAI,CAACqR,GAAG,CAACU,OAAO,MAAA,IAAA,IAAA/R,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE8R,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACpB,UAAU,CAAC;IAC5D,IAAI,CAACK,cAAc,CAAC5G,OAAO,CAAC,UAAC6G,MAAM,EAAE3J,KAAK,EAAA;MACxC2J,MAAM,CAACc,gBAAgB,CAAC,OAAO,EAAE3B,KAAI,CAACyB,kBAAkB,CAACvK,KAAK,CAAC,CAAC;AAClE,IAAA,CAAC,CAAC;IAEF,IAAI,CAAC+I,KAAK,CAAC4B,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACpB,iBAAiB,CAAC;IAC/C,IAAI,CAACR,KAAK,CAAC4B,EAAE,CAAC,QAAQ,EAAE,IAAI,CAACpB,iBAAiB,CAAC;IAC/C,IAAI,CAACA,iBAAiB,EAAE;AAC1B,EAAA;EAyCA1P,MAAA,CAAA+Q,cAAA,CAAIlC,qBAAA,CAAApO,SAAA,EAAA,UAAQ,EAAA;IAAZiJ,GAAA,EAAA,YAAA;MACE,OAAO,IAAI,CAACwF,KAAK;IACnB,CAAC;;;AAAA,GAAA,CAAA;AAEDL,EAAAA,qBAAA,CAAApO,SAAA,CAAAuQ,OAAO,GAAP,YAAA;IAAA,IAAA/B,KAAA,GAAA,IAAA;;IACE,CAAA3Q,EAAA,GAAA,IAAI,CAAC6R,GAAG,CAACQ,OAAO,MAAA,IAAA,IAAArS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE2S,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC9B,UAAU,CAAC;IAC/D,CAAA3Q,EAAA,GAAA,IAAI,CAAC2R,GAAG,CAACU,OAAO,MAAA,IAAA,IAAArS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEyS,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACzB,UAAU,CAAC;IAC/D,IAAI,CAACK,cAAc,CAAC5G,OAAO,CAAC,UAAC6G,MAAM,EAAE3J,KAAK,EAAA;MACxC2J,MAAM,CAACmB,mBAAmB,CAAC,OAAO,EAAEhC,KAAI,CAACyB,kBAAkB,CAACvK,KAAK,CAAC,CAAC;AACrE,IAAA,CAAC,CAAC;IACF,IAAI,IAAI,CAAC+I,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACgC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAACxB,iBAAiB,CAAC;MAChD,IAAI,CAACR,KAAK,CAACgC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAACxB,iBAAiB,CAAC;AAChD,MAAA,IAAI,CAACR,KAAK,CAAC8B,OAAO,EAAE;MACpB,IAAI,CAAC9B,KAAK,GAAG,IAAI;AAClB,IAAA;EACH,CAAC;AACH,EAAA,OAAAL,qBAAC;AAAD,CAAC;;AC7ED,IAAMsC,YAAY,GAAG,UAACC,IAAqB,EAAA;AAAA,EAAA,IAAA9S,EAAA;EACzC,OAAA,CAAAA,EAAA,GAAA8S,IAAI,CAACrS,IAAI,MAAA,IAAA,IAAAT,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAK8S,IAAI,CAACrN,QAAQ,GAAG,OAAO,GAAG,OAAQ;AAAA,CAAA;AAElD,IAAMsN,kBAAkB,GAAG,UAAC/M,MAAyB,EAAA;AACnD,EAAA,OAAAA,MAAM,KAAK,YAAY,GAAG,KAAK,GAAG,KAAK;AAAvC,CAAuC;IAE5BgN,WAAW,GAA+B,UAAChT,EAUvD,EAAA;;MATC2E,OAAO,GAAA3E,EAAA,CAAA2E,OAAA;IACPC,QAAQ,GAAA5E,EAAA,CAAA4E,QAAA;IACRE,IAAI,GAAA9E,EAAA,CAAA8E,IAAA;IACJZ,GAAG,GAAAlE,EAAA,CAAAkE,GAAA;IACH9D,EAAA,GAAAJ,EAAA,CAAAiT,KAAU;IAAVA,KAAK,GAAA7S,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA;IACVI,EAAA,GAAAR,EAAA,CAAAgG,MAAsB;IAAtBA,MAAM,GAAAxF,EAAA,KAAA,MAAA,GAAG,aAAa,GAAAA,EAAA;IACtBE,kBAAiB;IAAjB4F,UAAU,mBAAG,IAAI,GAAA5F,EAAA;IACjBE,EAAA,GAAAZ,EAAA,CAAAkT,SAA4B;IAA5BA,SAAS,GAAAtS,EAAA,KAAA,MAAA,GAAG,gBAAgB,KAAA;IAC5BmF,EAAA,GAAA/F,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAAoF,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;AAEd,EAAA,IAAMoN,OAAO,GAAGC,MAAM,CAAc,IAAI,CAAC;AACzC,EAAA,IAAMC,WAAW,GAAGD,MAAM,CAAiB,IAAI,CAAC;AAChD,EAAA,IAAME,UAAU,GAAGF,MAAM,CAAoB,IAAI,CAAC;AAClD,EAAA,IAAMG,UAAU,GAAGH,MAAM,CAAoB,IAAI,CAAC;AAClD,EAAA,IAAMI,OAAO,GAAGJ,MAAM,CAAiB,IAAI,CAAC;AAC5C,EAAA,IAAMK,aAAa,GAAGL,MAAM,CAA+B,IAAI,CAAC;EAChE,IAAMM,UAAU,GAAGpN,UAAU;AAC7B,EAAA,IAAMqN,UAAU,GAAGV,KAAK,CAAChR,MAAM,GAAG,CAAC;AACnC,EAAA,IAAM2R,iBAAiB,GAAGb,kBAAkB,CAAC/M,MAAM,CAAC;AAEpD6N,EAAAA,SAAS,CAAC,YAAA;;AACR,IAAA,IAAI,CAACR,WAAW,CAACS,OAAO,IAAI,CAACH,UAAU,EAAE;IAEzCF,aAAa,CAACK,OAAO,GAAG,IAAIvD,qBAAqB,CAC/C8C,WAAW,CAACS,OAAO,EACnB;MACEzB,OAAO,EAAEiB,UAAU,CAACQ,OAAO;MAC3BvB,OAAO,EAAEgB,UAAU,CAACO,OAAO;AAC3BvC,MAAAA,cAAc,EACZ,CAAArR,EAAA,GAAA,CAAAF,EAAA,GAAAwT,OAAO,CAACM,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE+T,gBAAgB,CAAc,yBAAyB,CAAC,MAAA,IAAA,IAAA7T,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI;KAChF,EACD;AAAEqH,MAAAA,IAAI,EAAE,IAAI;AAAE0K,MAAAA,SAAS,EAAE2B;AAAiB,KAAE,CAC7C;AAED,IAAA,OAAO,YAAA;;MACL,CAAA5T,EAAA,GAAAyT,aAAa,CAACK,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE0S,OAAO,EAAE;MAChCe,aAAa,CAACK,OAAO,GAAG,IAAI;IAC9B,CAAC;EACH,CAAC,EAAE,CAACF,iBAAiB,EAAED,UAAU,EAAEV,KAAK,CAAChR,MAAM,CAAC,CAAC;EAEjD,IAAM+R,WAAW,GAAG,CAClB,cAAc,EACd,gBAAA,CAAAjT,MAAA,CAAiBiF,MAAM,CAAE,EACzBrF,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEd,OAAQ;AACbxS,IAAAA,SAAS,EAAEqT,WAAY;AACvB,IAAA,aAAA,EAAY,UAAU;AACtB,IAAA,0BAAA,EAA0BhO,MAAO;AACjC,IAAA,6BAAA,EAA6B4N,iBAAkB;IAC/C,yBAAA,EAAyBX,KAAK,CAAChR,MAAO;IACtC,YAAA,EAAYiR;GAAU,eAEtB/R,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAqB,eAClCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAuB,GAAA,EACnCiE,QAAQ,iBACPzD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAyB,eACtCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,gCAAgC;IAAC,aAAA,EAAY;AAAM,GAAA,CACnE,eAAAQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAOwD,QAAe,CACnB,CACN,eAEDzD,KAAA,CAAAC,aAAA,CAACsS,UAAU,EAAA;AAAC/S,IAAAA,SAAS,EAAC;AAAuB,GAAA,EAAEgE,OAAoB,CAEnE,EAACG,IAAI,iBAAI3D,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;AAAoB,GAAA,EAAEmE,IAAQ,CAAC,EAEpDZ,GAAG,iBACF/C,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAuB,GAAA,eACpCQ,KAAA,CAAAC,aAAA,CAACrB,SAAS,EAAA;AACRY,IAAAA,SAAS,EAAC,mBAAmB;IAC7BL,IAAI,EAAE4D,GAAG,CAAC5D,IAAK;IACfO,QAAQ,EAAEqD,GAAG,CAACrD,QAAS;AACvBV,IAAAA,OAAO,EAAE,MAAA+D,GAAG,CAAC/D,OAAO,MAAA,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,SAAU;IAClCK,OAAO,EAAE2D,GAAG,CAAC3D;GAAQ,EAEpB2D,GAAG,CAACC,KACI,CACR,CAEJ,CAEL,eAAAhD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA4B,eACzCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,wBAAwB;AAACsT,IAAAA,GAAG,EAAEZ,WAAY;AAACa,IAAAA,GAAG,EAAEN;GAAkB,eAC/EzS,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,qBAAqB;AAACwT,IAAAA,IAAI,EAAC;GAAM,EAC7ClB,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;;AACrB,IAAA,IAAMpH,IAAI,GAAGoS,YAAY,CAACC,IAAI,CAAC;AAC/B,IAAA,IAAMhL,GAAG,GAAG,CAAA9H,EAAA,GAAA8S,IAAI,CAAC9O,EAAE,MAAA,IAAA,IAAAhE,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAA,CAAAe,MAAA,CAAGN,IAAI,EAAA,GAAA,CAAA,CAAAM,MAAA,CAAI,CAAAX,EAAA,GAAA,CAAAF,EAAA,GAAA4S,IAAI,CAACzN,QAAQ,MAAA,IAAA,IAAAnF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI4S,IAAI,CAACrN,QAAQ,mCAAIoC,KAAK,EAAA,GAAA,CAAA,CAAA9G,MAAA,CAAI8G,KAAK,CAAE;IAEpF,oBACE1G,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACE0G,MAAAA,GAAG,EAAEA,GAAI;AACTnH,MAAAA,SAAS,EAAC,qBAAqB;AAC/BwT,MAAAA,IAAI,EAAC,UAAU;AACf,MAAA,YAAA,EAAY,QAAA,CAAApT,MAAA,CAAS8G,KAAK,GAAG,CAAC,EAAA,MAAA,CAAA,CAAA9G,MAAA,CAAOkS,KAAK,CAAChR,MAAM,CAAG;AACpD,MAAA,wBAAA,EAAA;KAAsB,eAEtBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAAqB,KAAA,EACjCF,IAAI,KAAK,OAAO,IAAIqS,IAAI,CAACrN,QAAQ,gBAChCtE,KAAA,CAAAC,aAAA,CAACmL,QAAQ,EAAA;MACP9G,QAAQ,EAAEqN,IAAI,CAACrN,QAAS;MACxBJ,QAAQ,EAAEyN,IAAI,CAACpN,WAAY;MAC3BJ,QAAQ,EAAEwN,IAAI,CAACxN,QAAS;AACxBkC,MAAAA,QAAQ,EAAE,MAAAsL,IAAI,CAACnN,aAAa,MAAA,IAAA,IAAAnF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAK;AACrC8K,MAAAA,QAAQ,EAAE,CAAA5K,EAAA,GAAAoS,IAAI,CAAClN,aAAa,MAAA,IAAA,IAAAlF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,KAAM;AACtC4G,MAAAA,KAAK,EAAE,CAAA1G,EAAA,GAAAkS,IAAI,CAACjN,UAAU,MAAA,IAAA,IAAAjF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAK;AAC/B2G,MAAAA,IAAI,EAAE,CAAAxB,EAAA,GAAA+M,IAAI,CAAChN,SAAS,MAAA,IAAA,IAAAC,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,KAAM;AAC9B0G,MAAAA,WAAW,EAAC,SAAS;AACrBC,MAAAA,QAAQ,EAAE,KAAM;AAChB/L,MAAAA,SAAS,EAAC;KAA+B,CACzC,GACAmS,IAAI,CAACzN,QAAQ,gBACflE,KAAA,CAAAC,aAAA,CAACgH,QAAQ,EAAA;MACP/C,QAAQ,EAAEyN,IAAI,CAACzN,QAAS;MACxBC,QAAQ,EAAEwN,IAAI,CAACxN,QAAS;AACxB3E,MAAAA,SAAS,EAAC;AAA+B,KAAA,CACzC,gBAEFQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC,iCAAiC;MAAC,aAAA,EAAY;KAAM,CACpE,EAEAmS,IAAI,CAAC3O,KAAK,iBACThD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAA2B,KAAA,EAAEmS,IAAI,CAAC3O,KAAY,CAE7D,CACE,CAAC;EAEd,CAAC,CACE,CACF,CAEL,EAACwP,UAAU,iBACTxS,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,0BAA0B;IAAC,YAAA,EAAW;GAAqB,eACxEQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEX,UAAW;AAChB3S,IAAAA,SAAS,EAAC,+CAA+C;AACzDF,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAW,gBAAgB;AAC3B,IAAA,wBAAA,EAAA;GAAsB,eAEtBU,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,0BAA0B;IAAC,aAAA,EAAY;AAAM,GAAA,CACvD,CAER,eAAAQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,0BAA0B;AAACsT,IAAAA,GAAG,EAAET;GAAQ,EACpDP,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;;IAAK,oBAC1B1G,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;MACE0G,GAAG,EAAE,CAAA9H,EAAA,GAAA8S,IAAI,CAAC9O,EAAE,MAAA,IAAA,IAAAhE,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,MAAA,CAAAe,MAAA,CAAO8G,KAAK,CAAG;AAC/BlH,MAAAA,SAAS,EAAE,mBAAA,CAAAI,MAAA,CAAoB8G,KAAK,KAAK,CAAC,GAAG,4BAA4B,GAAG,EAAE,CAAG;AACjFpH,MAAAA,IAAI,EAAC,QAAQ;AACb,MAAA,YAAA,EAAY,cAAA,CAAAM,MAAA,CAAe8G,KAAK,GAAG,CAAC,CAAG;AACvC,MAAA,cAAA,EAAcA,KAAK,KAAK,CAAC,GAAG,MAAM,GAAG,OAAQ;AAC7C,MAAA,uBAAA,EAAA;AAAqB,KAAA,CACrB;AACH,EAAA,CAAA,CACE,CAEL,eAAA1G,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEV,UAAW;AAChB5S,IAAAA,SAAS,EAAC,+CAA+C;AACzDF,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAW,YAAY;AACvB,IAAA,wBAAA,EAAA;GAAsB,eAEtBU,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,0BAA0B;IAAC,aAAA,EAAY;AAAM,GAAA,CACvD,CACL,CAEJ,CACF,CACE,CAAC;AAEd;;AC7MA,SAASyT,gBAAgBA,CAACjU,OAAuB,EAAA;AAC/C,EAAA,QAAQA,OAAO;AACb,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,qBAAqB;AAC9B,IAAA,KAAK,UAAU;AACb,MAAA,OAAO,qBAAqB;AAC9B,IAAA,KAAK,WAAW;AAChB,IAAA;AACE,MAAA,OAAO,sBAAsB;AAChC;AACH;IAEakU,OAAO,GAA2B,UAACrU,EAa/C,EAAA;;MAZCgJ,KAAK,GAAAhJ,EAAA,CAAAgJ,KAAA;IACLpE,QAAQ,GAAA5E,EAAA,CAAA4E,QAAA;IACR0P,QAAQ,GAAAtU,EAAA,CAAAsU,QAAA;IACRrL,WAAW,GAAAjJ,EAAA,CAAAiJ,WAAA;IACX5D,QAAQ,GAAArF,EAAA,CAAAqF,QAAA;IACRjF,EAAA,GAAAJ,EAAA,CAAAsF,QAAa;IAAbA,QAAQ,GAAAlF,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA;IACbmU,OAAO,aAAA;IACP/T,EAAA,GAAAR,EAAA,CAAAwU,OAAY;IAAZA,OAAO,GAAAhU,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACZF,IAAI,GAAAN,EAAA,CAAAM,IAAA;IACJ4D,GAAG,GAAAlE,EAAA,CAAAkE,GAAA;IACHxD,eAAqB;IAArBP,OAAO,mBAAG,WAAW,GAAAO,EAAA;IACrBC,SAAS,GAAAX,EAAA,CAAAW,SAAA;AAET,EAAA,IAAM8T,eAAe,GAAGF,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAPA,OAAO,GAAIlP,QAAQ;AAC3C,EAAA,IAAMqP,WAAW,GAAG,CAAAxU,EAAA,GAAAgE,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAEC,KAAK,MAAA,IAAA,IAAAjE,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,WAAW;EAC7C,IAAMyU,aAAa,GAAG,CAAC,UAAU,EAAEP,gBAAgB,CAACjU,OAAO,CAAC,EAAEQ,SAAS,CAAC,CACrEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;AAEZ,EAAA,IAAMkJ,OAAO,gBACXjJ,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,EACGzN,OAAO,KAAK,WAAW,IAAIkF,QAAQ,iBAClClE,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAiB,eAC9BQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK6F,IAAAA,GAAG,EAAE5B,QAAS;AAAC6B,IAAAA,GAAG,EAAE5B,QAAS;AAAC6B,IAAAA,OAAO,EAAC;AAAM,GAAA,CAC9C,CACN,eACDhG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAmB,EAC/BR,OAAO,KAAK,UAAU,IAAIsU,eAAe,iBACxCtT,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,gBAAgB;IAAC,aAAA,EAAa6T,OAAO,GAAGlT,SAAS,GAAG;GAAK,eACtEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK6F,IAAAA,GAAG,EAAEwN,eAAgB;AAACvN,IAAAA,GAAG,EAAEsN,OAAQ;AAACrN,IAAAA,OAAO,EAAC;AAAM,GAAA,CACpD,CACN,eACDhG,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAe,GAAA,EAC3BiE,QAAQ,iBACPzD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;GAAqB,eACnCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;IAAC,aAAA,EAAY;AAAM,GAAA,CAC5D,eAAAQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAA0B,GAAA,EAAEiE,QAAe,CAC3D,eAAAzD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,2BAA2B;IAAC,aAAA,EAAY;AAAM,GAAA,EAAC,QAAO,CAClE,CACP,eACDQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAiB,GAAA,EAAEqI,KAAU,CAC3C,EAACsL,QAAQ,iBAAInT,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAoB,GAAA,EAAE2T,QAAa,CAC3D,CACL,eAAAnT,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAkB,GAAA,EAC9BsI,WAAW,iBAAI9H,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;AAAuB,GAAA,EAAEsI,WAAe,CAAC,EACrE,CAAC3I,IAAI,IAAI4D,GAAG,MACX5D,IAAI,gBACFa,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,eAAe;IAAC,aAAA,EAAY;GAAM,eAChDQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAAqB,GAAA,EAAE+T,WAAkB,CACzD,eAAAvT,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;IAAC,aAAA,EAAY;AAAM,GAAA,EAAC,QAAO,CAC5D,CAAC,gBAEPQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AACET,IAAAA,SAAS,EAAC,eAAe;AACzBL,IAAAA,IAAI,EAAE4D,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAE5D,IAAK;IAChBiB,MAAM,EAAE,CAAA2C,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAErD,QAAQ,IAAG,QAAQ,GAAGS,SAAU;AAC7CE,IAAAA,GAAG,EAAE,CAAA0C,GAAG,KAAA,IAAA,IAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAErD,QAAQ,IAAG,qBAAqB,GAAGS;GAAU,eAEvDH,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAAqB,GAAA,EAAE+T,WAAkB,CACzD,eAAAvT,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;IAAC,aAAA,EAAY;AAAM,GAAA,EAAC,QAAO,CAC/D,CACJ,CAEA,CACF,CACP,CACD;EAED,oBACEQ,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AAAST,IAAAA,SAAS,EAAEgU,aAAc;IAAC,uBAAA,EAAuBxU;AAAQ,GAAA,EAC/DG,IAAI,gBACHa,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGd,IAAAA,IAAI,EAAEA,IAAK;AAACK,IAAAA,SAAS,EAAC,gBAAgB;IAAC,YAAA,EAAYqI;AAAM,GAAA,EACzDoB,OACA,CAAC,gBAEJjJ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAgB,EAAEyJ,OAAa,CAEzC,CAAC;AAEd;AAQA;IACawK,QAAQ,GAA4B,UAAC5U,EAIjD,EAAA;MAHC6U,KAAK,GAAA7U,EAAA,CAAA6U,KAAA;IACL3U,EAAA,GAAAF,EAAA,CAAA8U,OAAW;IAAXA,OAAO,mBAAG,CAAC,GAAA5U,EAAA;IACXS,SAAS,GAAAX,EAAA,CAAAW,SAAA;EAET,IAAMoU,aAAa,GAAG,CACpB,WAAW,EACX,kBAAA,CAAAhU,MAAA,CAAmB+T,OAAO,CAAE,EAC5BnU,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAEoU,aAAc;IAAC,cAAA,EAAcD;GAAQ,EACjDD,KAAK,CAAClN,GAAG,CAAC,UAACqN,IAAI,EAAEnN,KAAK,EAAA;;IAAK,oBAC1B1G,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC,iBAAiB;AAACmH,MAAAA,GAAG,EAAE,CAAA1H,EAAA,GAAA,CAAAJ,EAAA,GAAAgV,IAAI,CAAC1U,IAAI,MAAA,IAAA,IAAAN,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,CAAAE,EAAA,GAAA8U,IAAI,CAAC9Q,GAAG,MAAA,IAAA,IAAAhE,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEI,IAAI,MAAA,IAAA,IAAAF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAA,CAAAW,MAAA,CAAGiU,IAAI,CAAChM,KAAK,EAAA,GAAA,CAAA,CAAAjI,MAAA,CAAI8G,KAAK;KAAG,eAC3F1G,KAAA,CAAAC,aAAA,CAACiT,OAAO,EAAKW,IAAK,CAChB,CAAC;AACN,EAAA,CAAA,CACC,CAAC;AAET;;ACzHA;;;AAGG;IACUC,gBAAgB,GAAoC,UAACjV,EAKjE,EAAA;AAJC,EAAA,IAAAiT,KAAK,WAAA;IACL/S,EAAA,GAAAF,EAAA,CAAAkV,WAAyB;IAAzBA,WAAW,mBAAG,WAAW,GAAAhV,EAAA;IACzBE,EAAA,GAAAJ,EAAA,CAAAmV,UAAc;IAAdA,UAAU,GAAA/U,EAAA,KAAA,MAAA,GAAG,CAAC,GAAAA,EAAA;IACdO,SAAS,GAAAX,EAAA,CAAAW,SAAA;AAET,EAAA,IAAMwC,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,EAAExC,SAAS,CAAC,CACrEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAEwC;GAAiB,eAC/BhC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACET,IAAAA,SAAS,EAAE,yDAAA,CAAAI,MAAA,CAA0DoU,UAAU,CAAG;IAClF,kBAAA,EAAkBlC,KAAK,CAAChR,MAAO;AAC/B,IAAA,mBAAA,EAAmBkT,UAAW;IAC9B,cAAA,EAAcA;GAAW,EAExBlC,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;;IAAK,oBAC1B1G,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC,iBAAiB;AAACmH,MAAAA,GAAG,EAAE,EAAA,CAAA/G,MAAA,CAAG+R,IAAI,CAACxS,IAAI,cAAIuH,KAAK;KAAG,eAC3D1G,KAAA,CAAAC,aAAA,CAACiT,OAAO,EAAAhT,QAAA,KAAKyR,IAAI,EAAA;AAAExN,MAAAA,QAAQ,EAAE,CAAAtF,EAAA,GAAA8S,IAAI,CAACxN,QAAQ,MAAA,IAAA,IAAAtF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI8S,IAAI,CAAC9J,KAAM;AAAC7I,MAAAA,OAAO,EAAE+U;AAAY,KAAA,CAAA,CAC7E,CAAC;EACN,CAAA,CACC,CACD,CACF,CAAC;AAEV;;AC9BA,IAAME,cAAc,GAAwB;AAC1CC,EAAAA,GAAG,EAAE,YAAY;AACjBC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,IAAI,EAAE,UAACA,IAAI,EAAA;AAAK,IAAA,OAAA,OAAA,CAAA3U,MAAA,CAAQ2U,IAAI,CAAE;AAAd,EAAA;CACjB;AAED;;;;AAIG;SACaC,qBAAqBA,CACnCC,WAAmB,EACnBC,UAAkB,EAClBC,YAAgB,EAAA;AAAhB,EAAA,IAAAA,YAAA,KAAA,MAAA,EAAA;AAAAA,IAAAA,YAAA,GAAA,CAAgB;AAAA,EAAA;EAEhB,IAAID,UAAU,GAAG,CAAC,EAAE;AAClB,IAAA,OAAO,EAAE;AACV,EAAA;AAED,EAAA,IAAM/B,OAAO,GAAG3F,IAAI,CAAC4H,GAAG,CAAC5H,IAAI,CAACkB,GAAG,CAACuG,WAAW,EAAE,CAAC,CAAC,EAAEC,UAAU,CAAC;EAC9D,IAAMG,KAAK,GAAG,IAAIC,GAAG,CAAS,CAAC,CAAC,EAAEJ,UAAU,CAAC,CAAC;AAC9C,EAAA,KAAK,IAAIH,IAAI,GAAG5B,OAAO,GAAGgC,YAAY,EAAEJ,IAAI,IAAI5B,OAAO,GAAGgC,YAAY,EAAEJ,IAAI,IAAI,CAAC,EAAE;AACjF,IAAA,IAAIA,IAAI,IAAI,CAAC,IAAIA,IAAI,IAAIG,UAAU,EAAE;AACnCG,MAAAA,KAAK,CAACE,GAAG,CAACR,IAAI,CAAC;AAChB,IAAA;AACF,EAAA;AAED,EAAA,IAAMS,MAAM,GAAG9M,KAAK,CAACoG,IAAI,CAACuG,KAAK,CAAC,CAACI,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC,EAAA;IAAK,OAAAD,CAAC,GAAGC,CAAC;AAAL,EAAA,CAAK,CAAC;EACtD,IAAMC,KAAK,GAA6B,EAAE;AAC1CJ,EAAAA,MAAM,CAACxL,OAAO,CAAC,UAAC+K,IAAI,EAAE7N,KAAK,EAAA;AACzB,IAAA,IAAM0N,QAAQ,GAAGY,MAAM,CAACtO,KAAK,GAAG,CAAC,CAAC;IAClC,IAAI0N,QAAQ,KAAKjU,SAAS,EAAE;AAC1B,MAAA,IAAIoU,IAAI,GAAGH,QAAQ,KAAK,CAAC,EAAE;AACzBgB,QAAAA,KAAK,CAACC,IAAI,CAACjB,QAAQ,GAAG,CAAC,CAAC;AACzB,MAAA,CAAA,MAAM,IAAIG,IAAI,GAAGH,QAAQ,GAAG,CAAC,EAAE;AAC9BgB,QAAAA,KAAK,CAACC,IAAI,CAAC,UAAU,CAAC;AACvB,MAAA;AACF,IAAA;AACDD,IAAAA,KAAK,CAACC,IAAI,CAACd,IAAI,CAAC;AAClB,EAAA,CAAC,CAAC;AACF,EAAA,OAAOa,KAAK;AACd;AAIA;AACA;AACA;AACA,IAAME,MAAM,GAAyD;AACnElB,EAAAA,QAAQ,EAAE;AACRmB,IAAAA,OAAO,EAAE,wBAAwB;AACjCC,IAAAA,KAAK,EAAE;GACR;AACDrB,EAAAA,KAAK,EAAE;AACL,IAAA,gBAAgB,EAAE,+CAA+C;AACjEsB,IAAAA,GAAG,EAAE;AACN;CACF;AAED,IAAMC,cAAc,GAAoC,UAAC7W,EAAQ,EAAA;AAAN,EAAA,IAAA8W,IAAI,GAAA9W,EAAA,CAAA8W,IAAA;AAC7D,EAAA,IAAMC,MAAM,GAAGN,MAAM,CAACK,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;EACjF,IAAME,QAAQ,GAAGF,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,MAAM;EAEnD,oBACE3V,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,IAAAA,SAAS,EAAC,sBAAsB;AAChCqL,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,WAAW;AACnB,IAAA,aAAA,EAAY,MAAM;AAClBG,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAG6V,IAAAA,SAAS,EAAED,QAAQ,GAAG,uBAAuB,GAAG1V;GAAU,EAC1DI,MAAM,CAACwV,OAAO,CAACH,MAAM,CAAC,CAACpP,GAAG,CAAC,UAAC3H,EAAS,EAAA;QAARiD,IAAI,GAAAjD,EAAA,CAAA,CAAA,CAAA;AAAEmX,MAAAA,CAAC,GAAAnX,EAAA,CAAA,CAAA,CAAA;IAAM,oBACzCmB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM0G,MAAAA,GAAG,EAAE7E,IAAK;AAACtC,MAAAA,SAAS,EAAE,+CAAA,CAAAI,MAAA,CAAgDkC,IAAI,CAAG;AAACkU,MAAAA,CAAC,EAAEA;AAAE,KAAA,CAAG;EADnD,CAE1C,CACA,CACA,CAAC;AAEV,CAAC;IAEYC,aAAa,GAAiC,UAACpX,EAS3D,EAAA;AARC,EAAA,IAAA4V,WAAW,GAAA5V,EAAA,CAAA4V,WAAA;IACXC,UAAU,GAAA7V,EAAA,CAAA6V,UAAA;IACVwB,YAAY,GAAArX,EAAA,CAAAqX,YAAA;IACZnX,EAAA,GAAAF,EAAA,CAAA8V,YAAgB;IAAhBA,YAAY,GAAA5V,EAAA,KAAA,MAAA,GAAG,CAAC,KAAA;IAChBE,EAAA,GAAAJ,EAAA,CAAAsX,QAAe;IAAfA,QAAQ,GAAAlX,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACfI,qBAAqB;IAArB+W,aAAa,GAAA/W,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IACrBgX,MAAM,GAAAxX,EAAA,CAAAwX,MAAA;IACN7W,SAAS,GAAAX,EAAA,CAAAW,SAAA;EAET,IAAIkV,UAAU,IAAI,CAAC,EAAE;AACnB,IAAA,OAAO,IAAI;AACZ,EAAA;AAED,EAAA,IAAM1M,IAAI,GAAA1H,QAAA,CAAAA,QAAA,CAAA,EAAA,EAAQ2T,cAAc,CAAA,EAAKoC,MAAM,CAAE;AAC7C,EAAA,IAAM1D,OAAO,GAAG3F,IAAI,CAAC4H,GAAG,CAAC5H,IAAI,CAACkB,GAAG,CAACuG,WAAW,EAAE,CAAC,CAAC,EAAEC,UAAU,CAAC;AAC9D,EAAA,IAAM4B,IAAI,GAAG,UAAC/B,IAAY,EAAA;IACxB,IAAIA,IAAI,KAAK5B,OAAO,IAAI4B,IAAI,IAAI,CAAC,IAAIA,IAAI,IAAIG,UAAU,EAAE;MACvDwB,YAAY,CAAC3B,IAAI,CAAC;AACnB,IAAA;EACH,CAAC;EAED,IAAMgC,OAAO,GAAG,UAACZ,IAAiB,EAAEvV,MAAc,EAAElB,QAAiB,EAAA;AACnE,IAAA,IAAM8D,KAAK,gBAAGhD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAAuB,KAAA,EAAEwI,IAAI,CAAC2N,IAAI,CAAQ,CAAC;IACzE,IAAMa,SAAS,GAAGb,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,UAAU;IAEzD,oBACE3V,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAE,6CAAA,CAAAI,MAAA,CAA8C+V,IAAI;KAAG,eAClE3V,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,MAAAA,IAAI,EAAC,QAAQ;AACbE,MAAAA,SAAS,EAAE,mDAAA,CAAAI,MAAA,CAAoD+V,IAAI,CAAG;AACtEzW,MAAAA,QAAQ,EAAEA,QAAS;MACnBE,OAAO,EAAE,YAAA;QAAM,OAAAkX,IAAI,CAAClW,MAAM,CAAC;AAAZ,MAAA;AAAa,KAAA,EAE3BoW,SAAS,iBAAIxW,KAAA,CAAAC,aAAA,CAACyV,cAAc,EAAA;AAACC,MAAAA,IAAI,EAAEA;KAAK,CAAG,EAC3C3S,KAAK,EACL,CAACwT,SAAS,iBAAIxW,KAAA,CAAAC,aAAA,CAACyV,cAAc,EAAA;AAACC,MAAAA,IAAI,EAAEA;KAAK,CACpC,CACN,CAAC;EAET,CAAC;EAED,oBACE3V,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAE,CAAC,gBAAgB,EAAEA,SAAS,CAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAE;AAAC,IAAA,YAAA,EAAYiI,IAAI,CAACkM;GAAI,eAC5FlU,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAsB,GAAA,EACjC4W,aAAa,IAAIG,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE5D,OAAO,KAAK,CAAC,CAAC,EACnD4D,OAAO,CAAC,UAAU,EAAE5D,OAAO,GAAG,CAAC,EAAEA,OAAO,KAAK,CAAC,CAAC,EAC/C,CAACwD,QAAQ,GACN3B,qBAAqB,CAAC7B,OAAO,EAAE+B,UAAU,EAAEC,YAAY,CAAC,GACxDzM,KAAK,CAACoG,IAAI,CAAC;AAAExN,IAAAA,MAAM,EAAE4T;AAAU,GAAE,EAAE,UAACnG,CAAC,EAAE7H,KAAK,EAAA;IAAK,OAAAA,KAAK,GAAG,CAAC;EAAT,CAAS,CAAC,EAC7DF,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;AAChB,IAAA,OAAAiL,IAAI,KAAK,UAAU,gBACjB3R,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE0G,MAAAA,GAAG,EAAE,WAAA,CAAA/G,MAAA,CAAY8G,KAAK,CAAG;AACzBlH,MAAAA,SAAS,EAAC,+CAA+C;MACzD,aAAA,EAAY;AAAM,KAAA,EAElB,QACE,CAAC,gBAELQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,MAAAA,GAAG,EAAEgL,IAAK;AAACnS,MAAAA,SAAS,EAAC;KAAsB,eAC7CQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,MAAAA,IAAI,EAAC,QAAQ;AACbE,MAAAA,SAAS,EAAC,sBAAsB;AAChC,MAAA,YAAA,EAAYwI,IAAI,CAACuM,IAAI,CAAC5C,IAAI,CAAE;AAC5B,MAAA,cAAA,EAAcA,IAAI,KAAKgB,OAAO,GAAG,MAAM,GAAGxS,SAAU;MACpDf,OAAO,EAAE,YAAA;QAAM,OAAAkX,IAAI,CAAC3E,IAAI,CAAC;AAAV,MAAA;KAAW,eAG1B3R,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,2BAA2B;MAAC,WAAA,EAAWmS;KAAK,EACzDA,IACG,CACA,CACN,CACL;AAvBD,EAAA,CAuBC,CACF,EACA4E,OAAO,CAAC,MAAM,EAAE5D,OAAO,GAAG,CAAC,EAAEA,OAAO,KAAK+B,UAAU,CAAC,EACpD0B,aAAa,IAAIG,OAAO,CAAC,MAAM,EAAE7B,UAAU,EAAE/B,OAAO,KAAK+B,UAAU,CAClE,CACD,CAAC;AAEV;;AC5KA,IAAM+B,kBAAkB,GAAG,UAAClC,IAAY,EAAEG,UAAkB,EAAA;AAAK,EAAA,OAAA,OAAA,CAAA9U,MAAA,CAAQ2U,IAAI,EAAA,MAAA,CAAA,CAAA3U,MAAA,CAAO8U,UAAU,CAAE;AAA/B,CAA+B;AAEhG;;;;AAIG;IACUgC,eAAe,GAAmC,UAAC7X,EAU/D,EAAA;MATCiT,KAAK,GAAAjT,EAAA,CAAAiT,KAAA;IACL/S,EAAA,GAAAF,EAAA,CAAAkV,WAAyB;IAAzBA,WAAW,GAAAhV,EAAA,KAAA,MAAA,GAAG,WAAW,GAAAA,EAAA;IACzBE,EAAA,GAAAJ,EAAA,CAAAmV,UAAc;IAAdA,UAAU,GAAA/U,EAAA,KAAA,MAAA,GAAG,CAAC,KAAA;IACdI,EAAA,GAAAR,EAAA,CAAA8X,IAAQ;IAARA,IAAI,GAAAtX,EAAA,KAAA,MAAA,GAAG,CAAC,GAAAA,EAAA;IACRuX,gBAAgB,sBAAA;IAChBrX,EAAA,GAAAV,EAAA,CAAAuX,aAAqB;IAArBA,aAAa,GAAA7W,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACrBE,EAAA,GAAAZ,EAAA,CAAAgY,aAAoB;IAApBA,aAAa,GAAApX,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACpBmF,mBAAgC;IAAhCkS,WAAW,mBAAGL,kBAAkB,GAAA7R,EAAA;IAChCpF,SAAS,GAAAX,EAAA,CAAAW,SAAA;AAET,EAAA,IAAMwS,OAAO,GAAGC,MAAM,CAAiB,IAAI,CAAC;AACtC,EAAA,IAAAnN,EAAA,GAAkB4G,QAAQ,CAAC,CAAC,CAAC;AAA5B6I,IAAAA,IAAI,GAAAzP,EAAA,CAAA,CAAA,CAAA;AAAEiS,IAAAA,OAAO,GAAAjS,EAAA,CAAA,CAAA,CAAe;AAC7B,EAAA,IAAAI,EAAA,GAAsBwG,QAAQ,CAAC,EAAE,CAAC;AAAjCsL,IAAAA,MAAM,GAAA9R,EAAA,CAAA,CAAA,CAAA;AAAE+R,IAAAA,SAAS,GAAA/R,EAAA,CAAA,CAAA,CAAgB;AAExC,EAAA,IAAMgS,QAAQ,GAAGlK,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAE8F,UAAU,GAAGhH,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAEyI,IAAI,CAAC,CAAC;AAC5D,EAAA,IAAMjC,UAAU,GAAG1H,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAElB,IAAI,CAACmK,IAAI,CAACrF,KAAK,CAAChR,MAAM,GAAGoW,QAAQ,CAAC,CAAC;AAClE;EACA,IAAMzC,WAAW,GAAGzH,IAAI,CAAC4H,GAAG,CAACL,IAAI,EAAEG,UAAU,CAAC;AAC9C,EAAA,IAAM0C,SAAS,GAAGtF,KAAK,CAACpM,KAAK,CAAC,CAAC+O,WAAW,GAAG,CAAC,IAAIyC,QAAQ,EAAEzC,WAAW,GAAGyC,QAAQ,CAAC;AAEnF,EAAA,IAAMG,gBAAgB,GAAG,UAACC,QAAgB,EAAA;;IACxCP,OAAO,CAACO,QAAQ,CAAC;AACjBL,IAAAA,SAAS,CAACH,WAAW,CAACQ,QAAQ,EAAE5C,UAAU,CAAC,CAAC;AAE5C;AACA,IAAA,IAAM6C,IAAI,GAAGvF,OAAO,CAACW,OAAO;IAC5B,IAAI4E,IAAI,IAAIA,IAAI,CAACC,qBAAqB,EAAE,CAACC,GAAG,GAAG,CAAC,EAAE;AAChD,MAAA,IAAMC,YAAY,GAAG,CAAA7Y,EAAA,GAAA8Y,MAAM,CAACC,UAAU,MAAA,IAAA,IAAA/Y,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAAqC,IAAA,CAAAyW,MAAA,EAAG,kCAAkC,CAAA,CAAEE,OAAO;MACpFN,IAAI,CAACO,cAAc,CAAC;AAAEC,QAAAA,QAAQ,EAAEL,YAAY,GAAG,MAAM,GAAG,QAAQ;AAAEM,QAAAA,KAAK,EAAE;AAAO,OAAE,CAAC;AACpF,IAAA;EACH,CAAC;EAED,oBACEhY,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK6S,IAAAA,GAAG,EAAEd,OAAQ;AAACxS,IAAAA,SAAS,EAAE,CAAC,mBAAmB,EAAEA,SAAS,CAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG;AAAE,GAAA,eACvFC,KAAA,CAAAC,aAAA,CAACwT,QAAQ,EAAA;AACPE,IAAAA,OAAO,EAAEK,UAAW;AACpBN,IAAAA,KAAK,EAAE0D,SAAS,CAAC5Q,GAAG,CAAC,UAACmL,IAAI,EAAA;;MAAK,6BAC1BA,IAAI,CAAA,EAAA;AACPxN,QAAAA,QAAQ,EAAE,CAAAtF,EAAA,GAAA8S,IAAI,CAACxN,QAAQ,MAAA,IAAA,IAAAtF,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI8S,IAAI,CAAC9J,KAAK;AACrC7I,QAAAA,OAAO,EAAE+U;;IACT,CAAA;AAAE,GAAA,CAEN,eAAA/T,KAAA,CAAAC,aAAA,CAACgW,aAAa,EAAA;AACZxB,IAAAA,WAAW,EAAEA,WAAY;AACzBC,IAAAA,UAAU,EAAEA,UAAW;AACvBwB,IAAAA,YAAY,EAAEmB,gBAAiB;AAC/BhB,IAAAA,MAAM,EAAEO,gBAAiB;AACzBR,IAAAA,aAAa,EAAEA,aAAc;AAC7BD,IAAAA,QAAQ,EAAEU;AAAc,GAAA,CAE1B,eAAA7W,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC,qBAAqB;IAAC,WAAA,EAAU;GAAQ,EAClDwX,MACA,CACA,CAAC;AAEV;;AClDA,IAAMiB,aAAa,GAA8B,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC;AAEtF,IAAMC,QAAQ,GAAG,UAACC,KAAc,EAAA;AAC9B,EAAA,OAAA,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,IAAI,CAACjQ,KAAK,CAACC,OAAO,CAACgQ,KAAK,CAAC;AAApE,CAAoE;AAEtE;AACA,IAAMnQ,IAAI,GAAG,UAACmQ,KAAc,EAAA;AAC1B,EAAA,OAAA,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACrR,IAAI,EAAE,GAAGqR,KAAK,CAACrR,IAAI,EAAE,GAAG3G,SAAS;AAApE,CAAoE;AAEtE,SAASiY,SAASA,CAACD,KAAc,EAAA;AAC/B,EAAA,IAAMxE,OAAO,GAAG5F,MAAM,CAACsK,QAAQ,CAAC1P,MAAM,CAACwP,KAAK,CAAC,EAAE,EAAE,CAAC;EAClD,OAAOxE,OAAO,IAAI,CAAC,IAAIA,OAAO,IAAI,CAAC,GAAIA,OAA0B,GAAG,CAAC;AACvE;AAEA,SAAS2E,aAAaA,CAACH,KAAc,EAAA;;EACnC,OAAO,MAAAF,aAAa,CAACM,IAAI,CAAC,UAACvZ,OAAO,EAAA;IAAK,OAAAA,OAAO,KAAKmZ,KAAK;EAAjB,CAAiB,CAAC,MAAA,IAAA,IAAAtZ,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,WAAW;AAC1E;AAEA,SAAS2Z,MAAMA,CAACC,GAAY,EAAA;;AAC1B,EAAA,IAAI,CAACP,QAAQ,CAACO,GAAG,CAAC,EAAE;AAClB,IAAA,OAAO,IAAI;AACZ,EAAA;AAED,EAAA,IAAMtV,IAAI,GAAG6E,IAAI,CAACyQ,GAAG,CAACtV,IAAI,CAAC;EAC3B,IAAM0E,KAAK,GAAG,CAAAhJ,EAAA,GAAAmJ,IAAI,CAACyQ,GAAG,CAACC,cAAc,CAAC,MAAA,IAAA,IAAA7Z,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAImJ,IAAI,CAACyQ,GAAG,CAAC,WAAW,CAAC,CAAC;AAChE,EAAA,IAAI,CAACtV,IAAI,IAAI,CAAC0E,KAAK,EAAE;AACnB,IAAA,OAAO,IAAI;AACZ,EAAA;AAED,EAAA,IAAM8Q,KAAK,GAAG3Q,IAAI,CAACyQ,GAAG,CAACG,cAAc,CAAC;EACtC,OAAO;AACL;AACAzZ,IAAAA,IAAI,EAAEgE,IAAI,CAACG,QAAQ,CAAC,OAAO,CAAC,GAAGH,IAAI,GAAG,EAAA,CAAAvD,MAAA,CAAGuD,IAAI,EAAA,OAAA,CAAO;AACpD0E,IAAAA,KAAK,EAAAA,KAAA;AACLpE,IAAAA,QAAQ,EAAEuE,IAAI,CAACyQ,GAAG,CAACI,iBAAiB,CAAC;AACrC1F,IAAAA,QAAQ,EAAEnL,IAAI,CAACyQ,GAAG,CAACK,iBAAiB,CAAC;AACrChR,IAAAA,WAAW,EAAEE,IAAI,CAACyQ,GAAG,CAACM,aAAa,CAAC;AACpC;AACA7U,IAAAA,QAAQ,EAAEyU,KAAK,GAAGK,SAAS,CAACL,KAAK,CAAC,GAAGxY;GACtC;AACH;AAEA;;;;AAIG;AACG,SAAU8Y,uBAAuBA,CAACC,IAAa,EAAA;EACnD,IAAMC,IAAI,GAAGjB,QAAQ,CAACgB,IAAI,CAAC,GAAGA,IAAI,GAAG,EAAE;EACvC,IAAMpH,KAAK,GAAG5J,KAAK,CAACC,OAAO,CAACgR,IAAI,CAACrH,KAAK,CAAC,GACnCqH,IAAI,CAACrH,KAAK,CAACtL,GAAG,CAACgS,MAAM,CAAC,CAAC3Y,MAAM,CAAC,UAAC8R,IAAI,EAAA;IAAmC,OAAAA,IAAI,KAAK,IAAI;EAAb,CAAa,CAAC,GACpF,EAAE;EAEN,OAAO;AACLG,IAAAA,KAAK,EAAAA,KAAA;AACLiC,IAAAA,WAAW,EAAEuE,aAAa,CAACa,IAAI,CAACpF,WAAW,CAAC;AAC5CC,IAAAA,UAAU,EAAEoE,SAAS,CAACe,IAAI,CAACnF,UAAU;GACtC;AACH;;ACvFO,IAAMoF,cAAc,GAAgC;AACzDC,EAAAA,IAAI,EACF,kZAAkZ;AACpZC,EAAAA,WAAW,EACT,+OAA+O;AACjPC,EAAAA,YAAY,EACV,+OAA+O;AACjPC,EAAAA,KAAK,EACH,+XAA+X;AACjYC,EAAAA,KAAK,EACH,+vBAA+vB;AACjwBC,EAAAA,IAAI,EAAE,6DAA6D;AACnEC,EAAAA,MAAM,EACJ;CACH;;ACdM,IAAMC,OAAO,GAA2B,UAAC/a,EAAmB,EAAA;MAAjBiD,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;IAAEtC,SAAS,GAAAX,EAAA,CAAAW,SAAA;EAAO,oBACtEQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,IAAAA,SAAS,EAAEA,SAAU;AACrBqL,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,aAAa;AACrB,IAAA,aAAA,EAAY,MAAM;AAClBG,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;IAAM+V,CAAC,EAAEoD,cAAc,CAACtX,IAAI;AAAE,GAAA,CAC3B,CAAC;AATgE,CAUvE;;ACID,SAAS+X,UAAUA,CAAC1a,IAAwB,EAAA;AAC1C,EAAA,IAAI,CAACA,IAAI,EAAE,OAAO,KAAK;EAEvB,IAAMgZ,KAAK,GAAGhZ,IAAI,CAAC2H,IAAI,EAAE,CAACzD,WAAW,EAAE;EACvC,IACE8U,KAAK,CAACpR,UAAU,CAAC,aAAa,CAAC,IAC/BoR,KAAK,CAACpR,UAAU,CAAC,OAAO,CAAC,IACzBoR,KAAK,CAACpR,UAAU,CAAC,WAAW,CAAC,EAC7B;AACA,IAAA,OAAO,KAAK;AACb,EAAA;AAED,EAAA,OACEoR,KAAK,CAACpR,UAAU,CAAC,GAAG,CAAC,IACrBoR,KAAK,CAACpR,UAAU,CAAC,GAAG,CAAC,IACrBoR,KAAK,CAACpR,UAAU,CAAC,SAAS,CAAC,IAC3BoR,KAAK,CAACpR,UAAU,CAAC,UAAU,CAAC,IAC5B,CAACoR,KAAK,CAACnR,QAAQ,CAAC,GAAG,CAAC;AAExB;AAEA,IAAM8S,mBAAmB,GAAa,YAAA;EAAM,oBAC1C9Z,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,2BAA2B;IAAC,aAAA,EAAY;AAAM,GAAA,eAC1DQ,KAAA,CAAAC,aAAA,CAAC2Z,OAAO,EAAA;AAAC9X,IAAAA,IAAI,EAAC,cAAc;AAACtC,IAAAA,SAAS,EAAC;AAAgC,GAAA,CACrE,CAAC;AAHqC,CAI3C;IAEYua,aAAa,GAAiC,UAAClb,EAO3D,EAAA;AANC,EAAA,IAAAE,EAAA,GAAAF,EAAA,CAAAiT,KAAU;IAAVA,KAAK,GAAA/S,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACVE,EAAA,GAAAJ,EAAA,CAAAmb,eAAsB;IAAtBA,eAAe,GAAA/a,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACtBI,mBAAkB;IAAlB4a,WAAW,mBAAG,IAAI,GAAA5a,EAAA;IAClBE,EAAA,GAAAV,EAAA,CAAAqb,QAAc;IAAdA,QAAQ,GAAA3a,EAAA,KAAA,MAAA,GAAG,GAAG,GAAAA,EAAA;IACdE,iBAAkB;IAAlB0a,SAAS,GAAA1a,EAAA,KAAA,MAAA,GAAG,MAAM,KAAA;IAClBmF,EAAA,GAAA/F,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAAoF,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;AAEd,EAAA,IAAI,CAACoV,eAAe,EAAE,OAAO,IAAI;AAEjC,EAAA,IAAMI,YAAY,GAAGlS,KAAK,CAACC,OAAO,CAAC2J,KAAK,CAAC,GACrCA,KAAK,CAACjS,MAAM,CACV,UAAC8R,IAAI,EAAA;IACH,OAAA7R,OAAO,CAAC6R,IAAI,CAAC,IAAI,OAAOA,IAAI,CAAC3O,KAAK,KAAK,QAAQ,IAAI2O,IAAI,CAAC3O,KAAK,CAAC8D,IAAI,EAAE,CAAChG,MAAM,GAAG,CAAC;EAA/E,CAA+E,CAClF,GACD,EAAE;EAEN,IAAI,CAACmZ,WAAW,IAAIG,YAAY,CAACtZ,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;AAE1D,EAAA,IAAMuZ,aAAa,GAAG,CAAC,gBAAgB,EAAE7a,SAAS,CAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;EAC7E,IAAMua,YAAY,GAAGT,UAAU,CAACK,QAAQ,CAAC,GAAGA,QAAQ,GAAG,GAAG;EAE1D,oBACEla,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAE6a,aAAc;IAAC,YAAA,EAAW;GAAY,eACpDra,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAsB,GAAA,EACjCya,WAAW,iBACVja,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;GAAiD,eAC7DQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC,sBAAsB;AAACL,IAAAA,IAAI,EAAEmb,YAAa;IAAC,YAAA,EAAYH;AAAU,GAAA,eAC5Ena,KAAA,CAAAC,aAAA,CAAC2Z,OAAO,EAAA;AAAC9X,IAAAA,IAAI,EAAC,MAAM;AAACtC,IAAAA,SAAS,EAAC;AAA2B,GAAA,CACzD,CACD,CACL,EAEA4a,YAAY,CAAC5T,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;IAC5B,IAAM6T,SAAS,GAAG7T,KAAK,KAAK0T,YAAY,CAACtZ,MAAM,GAAG,CAAC;AACnD,IAAA,IAAMyH,QAAQ,GAAGsR,UAAU,CAAClI,IAAI,CAACxS,IAAI,CAAC,GAAGwS,IAAI,CAACxS,IAAI,GAAGgB,SAAS;AAE9D,IAAA,oBACEH,KAAA,CAAAC,aAAA,CAACD,KAAK,CAACyM,QAAQ,EAAA;AAAC9F,MAAAA,GAAG,EAAE,EAAA,CAAA/G,MAAA,CAAG+R,IAAI,CAAC3O,KAAK,cAAI0D,KAAK;AAAG,KAAA,EAC3C,CAACuT,WAAW,IAAIvT,KAAK,GAAG,CAAC,kBAAK1G,KAAA,CAAAC,aAAA,CAAC6Z,mBAAmB,EAAA,KAAG,eACtD9Z,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACET,MAAAA,SAAS,EAAE,CACT,sBAAsB,EACtB+a,SAAS,GAAG,+BAA+B,GAAG,gCAAgC,CAC/E,CAACxa,IAAI,CAAC,GAAG;AAAE,KAAA,EAEXwa,SAAS,gBACRva,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,yBAAyB;MAAC,cAAA,EAAa;KAAM,eAC3DQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,gCAAgC;MAAC,aAAA,EAAY;AAAM,KAAA,CACnE,eAAAQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;KAAuB,EAAEmS,IAAI,CAAC3O,KAAY,CACtD,CAAC,GACLuF,QAAQ,gBACVvI,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,MAAAA,SAAS,EAAC,sBAAsB;AAACL,MAAAA,IAAI,EAAEoJ;AAAS,KAAA,EAChDoJ,IAAI,CAAC3O,KACL,CAAC,gBAEJhD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAA0B,KAAA,EAAEmS,IAAI,CAAC3O,KAAY,CAE7D,CACU,CAAC;EAErB,CAAC,CACC,CACD,CAAC;AAEV;;ICrGawX,OAAO,GAA2B,UAAC3b,EAO/C,EAAA;AANC,EAAA,IAAAiH,GAAG,GAAAjH,EAAA,CAAAiH,GAAA;IACH/G,EAAA,GAAAF,EAAA,CAAAkH,GAAY;IAAZA,GAAG,GAAAhH,EAAA,KAAA,MAAA,GAAG,MAAM,GAAAA,EAAA;IACZE,EAAA,GAAAJ,EAAA,CAAAM,IAAU;IAAVA,IAAI,mBAAG,GAAG,GAAAF,EAAA;IACVmI,KAAK,GAAAvI,EAAA,CAAAuI,KAAA;IACL/H,EAAA,GAAAR,EAAA,CAAAwI,MAAW;IAAXA,MAAM,GAAAhI,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACXE,EAAA,GAAAV,EAAA,CAAAmJ,IAAoB;IAApBA,IAAI,GAAAzI,EAAA,KAAA,MAAA,GAAG,aAAa,GAAAA,EAAA;AAEpB,EAAA,IAAM0J,OAAO,GAAGnD,GAAG,gBACjB9F,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE6F,IAAAA,GAAG,EAAEA,GAAI;AACTC,IAAAA,GAAG,EAAEA,GAAI;AACTqB,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,MAAM,EAAEA,MAAO;AACf7H,IAAAA,SAAS,EAAC;AAAiB,GAAA,CAC3B,gBAEFQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAAgB,GAAA,EAAEwI,IAAW,CAC9C;EAED,oBACEhI,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGd,IAAAA,IAAI,EAAEA,IAAK;AAACK,IAAAA,SAAS,EAAC,UAAU;IAAC,YAAA,EAAYsG,GAAG,GAAGC,GAAG,GAAG5F;AAAU,GAAA,EACnE8I,OACA,CAAC;AAER;;ICnBawR,aAAa,GAAiC,UAAC5b,EAM3D,EAAA;MALCiT,KAAK,GAAAjT,EAAA,CAAAiT,KAAA;IACL/S,EAAA,GAAAF,EAAA,CAAAmE,KAAyB;IAAzBA,KAAK,GAAAjE,EAAA,KAAA,MAAA,GAAG,iBAAiB,KAAA;IACzBE,EAAA,GAAAJ,EAAA,CAAAG,OAAkB;IAAlBA,OAAO,GAAAC,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,EAAA;IAClByb,WAAW,GAAA7b,EAAA,CAAA6b,WAAA;IACXC,WAAW,GAAA9b,EAAA,CAAA8b,WAAA;AAEX,EAAA,IAAMC,WAAW,GAAG,UAACC,QAAsB,EAAEC,KAAS,EAAA;AAAT,IAAA,IAAAA,KAAA,KAAA,MAAA,EAAA;AAAAA,MAAAA,KAAA,GAAA,CAAS;AAAA,IAAA;IAAK,oBACzD9a,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAEsb,KAAK,KAAK,CAAC,GAAG,eAAe,GAAG,mBAAoB;AAAC9H,MAAAA,IAAI,EAAC;AAAM,KAAA,EAC5E6H,QAAQ,CAACrU,GAAG,CAAC,UAACmL,IAAI,EAAA;;MACjB,IAAMoJ,WAAW,GAAGjb,OAAO,CAAC,CAAAjB,EAAA,GAAA8S,IAAI,CAAC7S,QAAQ,MAAA,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiC,MAAM,CAAC;MAElD,oBACEd,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE0G,QAAAA,GAAG,EAAE,EAAA,CAAA/G,MAAA,CAAG+R,IAAI,CAACxS,IAAI,cAAI2b,KAAK,CAAG;QAC7Btb,SAAS,EAAE,CACT,eAAe,EACfub,WAAW,GAAG,6BAA6B,GAAG,EAAE,EAChDpJ,IAAI,CAACqJ,IAAI,GAAG,qBAAqB,GAAG,EAAE,CACvC,CACEnb,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAE;QACbkb,YAAY,EAAE,YAAA;UACZ,IAAIN,WAAW,IAAII,WAAW,EAAE;AAC9BJ,YAAAA,WAAW,CAAChJ,IAAI,EAAEmJ,KAAK,CAAC;AACzB,UAAA;AACH,QAAA;OAAE,eAEF9a,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;QACEd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAChBC,QAAAA,OAAO,EAAE,UAAC8b,KAAK,EAAA;UACb,IAAIR,WAAW,IAAIK,WAAW,EAAE;YAC9BG,KAAK,CAAC/O,cAAc,EAAE;AACtBuO,YAAAA,WAAW,CAAC/I,IAAI,EAAEmJ,KAAK,CAAC;AACzB,UAAA;QACH,CAAE;QACFtb,SAAS,EAAE,CAAC,eAAe,EAAEmS,IAAI,CAACgB,OAAO,GAAG,wBAAwB,GAAG,EAAE,CAAC,CACvE9S,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAE;AACb,QAAA,cAAA,EAAc4R,IAAI,CAACgB,OAAO,GAAG,MAAM,GAAGxS,SAAU;QAChD,eAAA,EAAenB,OAAO,KAAK,UAAU,IAAI+b,WAAW,GAAGpJ,IAAI,CAACqJ,IAAI,GAAG7a;AAAU,OAAA,eAE7EH,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI0R,IAAI,CAAC3O,KAAS,CAClB,EAAC+X,WAAW,iBACV/a,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,QAAAA,SAAS,EAAC,kBAAkB;QAAC,aAAA,EAAY;OAAM,eACnDQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,QAAAA,OAAO,EAAC,UAAU;AAACwQ,QAAAA,mBAAmB,EAAC,eAAe;AAACrQ,QAAAA,SAAS,EAAC;OAAO,eAC3E9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,QAAAA,CAAC,EAAC,oBAAoB;AACtBpL,QAAAA,IAAI,EAAC,MAAM;AACXwQ,QAAAA,MAAM,EAAC,cAAc;AACrBC,QAAAA,WAAW,EAAC,KAAK;AACjBC,QAAAA,aAAa,EAAC,OAAO;AACrBC,QAAAA,cAAc,EAAC;AAAO,OAAA,CAErB,CACD,CAEP,CACH,EAACR,WAAW,IAAIH,WAAW,CAACjJ,IAAI,CAAC7S,QAAQ,IAAI,EAAE,EAAEgc,KAAK,GAAG,CAAC,CACxD,CAAC;AAET,IAAA,CAAC,CACC,CAAC;EAvDoD,CAwD1D;EAED,oBACE9a,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAE,CAAC,SAAS,EAAE,WAAA,CAAAI,MAAA,CAAYZ,OAAO,CAAE,CAAC,CAACe,IAAI,CAAC,GAAG,CAAE;IAAC,YAAA,EAAYiD;AAAM,GAAA,EAC7E4X,WAAW,CAAC9I,KAAK,CACf,CAAC;AAEV;;ACvEA,IAAM0J,WAAW,GAAG,YAAA;EAAM,oBACxBxb,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE4K,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXwQ,IAAAA,MAAM,EAAC,cAAc;AACrBC,IAAAA,WAAW,EAAC,KAAK;AACjBC,IAAAA,aAAa,EAAC,OAAO;AACrBC,IAAAA,cAAc,EAAC,OAAO;AACtB,IAAA,aAAA,EAAY,MAAM;AAClBzQ,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,UAAA,EAAA;AAAUkL,IAAAA,MAAM,EAAC;AAAc,GAAA,CAC5B,CAAC;AAbkB,CAczB;AAED;;;;;AAKG;IACUsQ,mBAAmB,GAAuC,UAAC5c,EAKvE,EAAA;AAJC,EAAA,IAAA6c,eAAe,GAAA7c,EAAA,CAAA6c,eAAA;IACfC,SAAS,GAAA9c,EAAA,CAAA8c,SAAA;IACT5c,EAAA,GAAAF,EAAA,CAAAmE,KAAyB;IAAzBA,KAAK,GAAAjE,EAAA,KAAA,MAAA,GAAG,iBAAiB,GAAAA,EAAA;IACzB6c,gBAAgB,GAAA/c,EAAA,CAAA+c,gBAAA;AAEV,EAAA,IAAA3c,EAAA,GAAsByM,QAAQ,CAAC,KAAK,CAAC;AAApCmQ,IAAAA,MAAM,GAAA5c,EAAA,CAAA,CAAA,CAAA;AAAE6c,IAAAA,SAAS,GAAA7c,EAAA,CAAA,CAAA,CAAmB;AAC3C,EAAA,IAAM8c,YAAY,GAAG9J,MAAM,CAAiB,IAAI,CAAC;AACjD,EAAA,IAAM+J,OAAO,GAAG3W,KAAK,EAAE;AACvB,EAAA,IAAM4W,SAAS,GAAG,mBAAA,CAAArc,MAAA,CAAoBoc,OAAO,CAAE;AAC/C,EAAA,IAAME,UAAU,GAAG,oBAAA,CAAAtc,MAAA,CAAqBoc,OAAO,CAAE;AAEjD;AACAtJ,EAAAA,SAAS,CAAC,YAAA;IACR,IAAI,CAACmJ,MAAM,EAAE;AACb,IAAA,IAAMM,WAAW,GAAG,UAAC9a,CAAa,EAAA;AAChC,MAAA,IAAI0a,YAAY,CAACpJ,OAAO,IAAI,CAACoJ,YAAY,CAACpJ,OAAO,CAACyJ,QAAQ,CAAC/a,CAAC,CAACjB,MAAc,CAAC,EAAE;QAC5E0b,SAAS,CAAC,KAAK,CAAC;AACjB,MAAA;IACH,CAAC;AACDO,IAAAA,QAAQ,CAAClL,gBAAgB,CAAC,WAAW,EAAEgL,WAAW,CAAC;AACnD,IAAA,OAAO,YAAA;AAAM,MAAA,OAAAE,QAAQ,CAAC7K,mBAAmB,CAAC,WAAW,EAAE2K,WAAW,CAAC;IAAtD,CAAsD;AACrE,EAAA,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;AAEZ;AACAnJ,EAAAA,SAAS,CAAC,YAAA;IACR,IAAI,CAACmJ,MAAM,EAAE;AACb,IAAA,IAAMS,SAAS,GAAG,UAACjb,CAAgB,EAAA;MACjC,IAAIA,CAAC,CAACsF,GAAG,KAAK,QAAQ,EAAEmV,SAAS,CAAC,KAAK,CAAC;IAC1C,CAAC;AACDO,IAAAA,QAAQ,CAAClL,gBAAgB,CAAC,SAAS,EAAEmL,SAAS,CAAC;AAC/C,IAAA,OAAO,YAAA;AAAM,MAAA,OAAAD,QAAQ,CAAC7K,mBAAmB,CAAC,SAAS,EAAE8K,SAAS,CAAC;IAAlD,CAAkD;AACjE,EAAA,CAAC,EAAE,CAACT,MAAM,CAAC,CAAC;EAEZ,oBACE7b,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,mBAAmB;AAACsT,IAAAA,GAAG,EAAEiJ,YAAa;AAAC,IAAA,wBAAA,EAAA;GAAsB,eAC1E/b,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE4C,IAAAA,EAAE,EAAEoZ,SAAU;AACd3c,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,4BAA4B;AACtC,IAAA,YAAA,EAAYwD,KAAM;AAClB,IAAA,eAAA,EAAc,SAAS;AACvB,IAAA,eAAA,EAAe6Y,MAAO;AACtB,IAAA,eAAA,EAAeK,UAAW;IAC1B9c,OAAO,EAAE,YAAA;AAAM,MAAA,OAAA0c,SAAS,CAAC,UAACS,IAAI,EAAA;AAAK,QAAA,OAAA,CAACA,IAAI;AAAL,MAAA,CAAK,CAAC;AAA1B,IAAA;AAA2B,GAAA,eAE1Cvc,KAAA,CAAAC,aAAA,CAAC2Z,OAAO,EAAA;AAAC9X,IAAAA,IAAI,EAAC,OAAO;AAACtC,IAAAA,SAAS,EAAC;AAA0B,GAAA,CAC1D,eAAAQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAA4B,GAAA,EAAEkc,eAAsB,CACpE,eAAA1b,KAAA,CAAAC,aAAA,CAACub,WAAW,EAAA,IAAA,CACN,CAER,EAACK,MAAM,iBACL7b,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE4C,IAAAA,EAAE,EAAEqZ,UAAW;AACf1c,IAAAA,SAAS,EAAC,6BAA6B;AACvCwT,IAAAA,IAAI,EAAC,SAAS;IACd,iBAAA,EAAiBiJ;AAAU,GAAA,EAE1BN,SAAS,CAACnV,GAAG,CAAC,UAACgW,IAAI,EAAA;IAAK,oBACvBxc,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;MAAI0G,GAAG,EAAE6V,IAAI,CAACC,IAAK;AAACjd,MAAAA,SAAS,EAAC,2BAA2B;AAACwT,MAAAA,IAAI,EAAC;KAAQ,eACrEhT,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;MACEd,IAAI,EAAEqd,IAAI,CAACrd,IAAK;MAChBK,SAAS,EAAE,CACT,gCAAgC,EAChCgd,IAAI,CAACC,IAAI,KAAKf,eAAe,GAAG,wCAAwC,GAAG,EAAE,CAC9E,CACE7b,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAE;MACb,cAAA,EAAcyc,IAAI,CAACC,IAAI,KAAKf,eAAe,GAAG,IAAI,GAAGvb,SAAU;AAC/Df,MAAAA,OAAO,EAAE,UAAC8b,KAAK,EAAA;QACb,IAAI,CAACU,gBAAgB,EAAE;QAEvBV,KAAK,CAAC/O,cAAc,EAAE;QACtByP,gBAAgB,CAACY,IAAI,CAAC;QACtBV,SAAS,CAAC,KAAK,CAAC;AAClB,MAAA;AAAE,KAAA,EAEDU,IAAI,CAACxZ,KACL,CACD,CAAC;EArBkB,CAsBxB,CACC,CAEH,CAAC;AAEV;;ACnHA,IAAM0Z,YAAU,GAAG,YAAA;EAAM,oBACvB1c,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE4K,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXwQ,IAAAA,MAAM,EAAC,cAAc;AACrBC,IAAAA,WAAW,EAAC,GAAG;AACfC,IAAAA,aAAa,EAAC,OAAO;AACrBC,IAAAA,cAAc,EAAC,OAAO;AACtB,IAAA,aAAA,EAAY,MAAM;AAClBzQ,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ8K,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,CAAC,EAAC;AAAG,GAAA,CAC7B,eAAAjL,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM0c,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,OAAO;AAACC,IAAAA,EAAE,EAAC;AAAO,GAAA,CACxC,CAAC;AAdiB,CAexB;IAEYC,gBAAgB,GAAoC,UAACle,EAIjE,EAAA;MAHCE,EAAA,GAAAF,EAAA,CAAAmE,KAAqB;IAArBA,KAAK,GAAAjE,EAAA,KAAA,MAAA,GAAG,aAAa,GAAAA,EAAA;IACrBie,QAAQ,GAAAne,EAAA,CAAAme,QAAA;IACR5d,OAAO,GAAAP,EAAA,CAAAO,OAAA;EAEP,oBACEY,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,oBAAoB;AAC9B,IAAA,YAAA,EAAYwD,KAAM;AAClB,IAAA,eAAA,EAAc,QAAQ;AACtB,IAAA,eAAA,EAAega,QAAS;AACxB5d,IAAAA,OAAO,EAAEA,OAAQ;AACjB,IAAA,yBAAA,EAAA;AAAuB,GAAA,eAEvBY,KAAA,CAAAC,aAAA,CAACyc,YAAU,EAAA,IAAA,CACL,CAAC;AAEb;;ACjCA,IAAMA,UAAU,GAAG,YAAA;EAAM,oBACvB1c,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE4K,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXwQ,IAAAA,MAAM,EAAC,cAAc;AACrBC,IAAAA,WAAW,EAAC,GAAG;AACfC,IAAAA,aAAa,EAAC,OAAO;AACrBC,IAAAA,cAAc,EAAC,OAAO;AACtB,IAAA,aAAA,EAAY,MAAM;AAClBzQ,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ8K,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,CAAC,EAAC;AAAG,GAAA,CAC7B,eAAAjL,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM0c,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,OAAO;AAACC,IAAAA,EAAE,EAAC;AAAO,GAAA,CACxC,CAAC;AAdiB,CAexB;AAED,IAAMG,SAAS,GAAG,YAAA;EAAM,oBACtBjd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE4K,IAAAA,KAAK,EAAC,4BAA4B;AAClCF,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXwQ,IAAAA,MAAM,EAAC,cAAc;AACrBC,IAAAA,WAAW,EAAC,GAAG;AACfC,IAAAA,aAAa,EAAC,OAAO;AACrBC,IAAAA,cAAc,EAAC,OAAO;AACtB,IAAA,aAAA,EAAY,MAAM;AAClBzQ,IAAAA,SAAS,EAAC;GAAO,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM0c,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,GAAG;AAACC,IAAAA,EAAE,EAAC,GAAG;AAACC,IAAAA,EAAE,EAAC;AAAI,GAAA,CACnC,eAAA9c,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM0c,IAAAA,EAAE,EAAC,GAAG;AAACC,IAAAA,EAAE,EAAC,GAAG;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC;AAAI,GAAA,CAChC,CAAC;AAdgB,CAevB;AAED;;;;;;AAMG;IACUI,gBAAgB,GAAoC,UAACre,EAOjE,EAAA;AANC,EAAA,IAAAE,EAAA,GAAAF,EAAA,CAAAgE,EAAyB;IAAzBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,oBAAoB,GAAAA,EAAA;IACzBE,EAAA,GAAAJ,EAAA,CAAAse,WAAuB;IAAvBA,WAAW,GAAAle,EAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,EAAA;IACvBI,EAAA,GAAAR,EAAA,CAAAmE,KAAgB;IAAhBA,KAAK,GAAA3D,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,EAAA;IAChBE,EAAA,GAAAV,EAAA,CAAAgd,MAAc;IAAdA,MAAM,GAAAtc,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACd6d,OAAO,GAAAve,EAAA,CAAAue,OAAA;IACPC,QAAQ,GAAAxe,EAAA,CAAAwe,QAAA;AAER,EAAA,IAAMC,QAAQ,GAAGrL,MAAM,CAAmB,IAAI,CAAC;EAC/C,IAAMsL,OAAO,GAAG,EAAA,CAAA3d,MAAA,CAAGiD,EAAE,WAAQ;AAE7B;AACA6P,EAAAA,SAAS,CAAC,YAAA;;IACR,IAAImJ,MAAM,EAAE,CAAAhd,EAAA,GAAAye,QAAQ,CAAC3K,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE2e,KAAK,EAAE;AACvC,EAAA,CAAC,EAAE,CAAC3B,MAAM,CAAC,CAAC;AAEZ;AACAnJ,EAAAA,SAAS,CAAC,YAAA;IACR,IAAI,CAACmJ,MAAM,EAAE;AACb,IAAA,IAAMS,SAAS,GAAG,UAACjb,CAAgB,EAAA;MACjC,IAAIA,CAAC,CAACsF,GAAG,KAAK,QAAQ,EAAEyW,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,EAAI;IACrC,CAAC;AACDf,IAAAA,QAAQ,CAAClL,gBAAgB,CAAC,SAAS,EAAEmL,SAAS,CAAC;AAC/C,IAAA,OAAO,YAAA;AAAM,MAAA,OAAAD,QAAQ,CAAC7K,mBAAmB,CAAC,SAAS,EAAE8K,SAAS,CAAC;IAAlD,CAAkD;AACjE,EAAA,CAAC,EAAE,CAACT,MAAM,EAAEuB,OAAO,CAAC,CAAC;AAErB,EAAA,IAAMK,YAAY,GAAG,UAACpc,CAAmC,EAAA;;IACvDA,CAAC,CAAC8K,cAAc,EAAE;AAClB,IAAA,IAAMuR,KAAK,GAAG,CAAA3e,EAAA,GAAA,CAAAF,EAAA,GAAAye,QAAQ,CAAC3K,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEsZ,KAAK,MAAA,IAAA,IAAApZ,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAE;IAC3C,IAAI2e,KAAK,CAAC5W,IAAI,EAAE,EAAEuW,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,MAAA,GAAA,MAAA,GAARA,QAAQ,CAAGK,KAAK,CAAC5W,IAAI,EAAE,CAAC;EAC5C,CAAC;EAED,IAAM6W,YAAY,GAAG,CAAC,oBAAoB,EAAE9B,MAAM,GAAG,0BAA0B,GAAG,EAAE,CAAC,CAClFhc,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE4C,IAAAA,EAAE,EAAEA,EAAG;AACPrD,IAAAA,SAAS,EAAEme,YAAa;AACxB3K,IAAAA,IAAI,EAAC,QAAQ;AACb,IAAA,YAAA,EAAW,MAAM;AACjB,IAAA,YAAA,EAAYhQ,KAAM;AAClB,IAAA,yBAAA,EAAA;GAAuB,eAGvBhD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,IAAAA,SAAS,EAAC,8BAA8B;AACxC,IAAA,aAAA,EAAY,MAAM;AAClBJ,IAAAA,OAAO,EAAEge,OAAQ;AACjBQ,IAAAA,KAAK,EAAE;AAAEC,MAAAA,QAAQ,EAAE,UAAU;AAAEC,MAAAA,KAAK,EAAE,CAAC;AAAEC,MAAAA,MAAM,EAAE;AAAS;AAAG,GAAA,CAE/D,eAAA/d,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA2B,eACxCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,0BAA0B;AAACwT,IAAAA,IAAI,EAAC,QAAQ;AAACgL,IAAAA,QAAQ,EAAEP;GAAa,eAC9Ezd,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOge,IAAAA,OAAO,EAAEV,OAAQ;AAAC/d,IAAAA,SAAS,EAAC;GAA2B,eAC5DQ,KAAA,CAAAC,aAAA,CAACyc,UAAU,MAAA,CACX,eAAA1c,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAAqB,GAAA,EAAEwD,KAAY,CAC9C,CACP,eAAAhD,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACE4C,IAAAA,EAAE,EAAE0a,OAAQ;AACZzK,IAAAA,GAAG,EAAEwK,QAAS;AACdhe,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,2BAA2B;AACrC2d,IAAAA,WAAW,EAAEA,WAAY;AACzBe,IAAAA,YAAY,EAAC;AAAK,GAAA,CAEpB,eAAAle,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQX,IAAAA,IAAI,EAAC,QAAQ;AAACE,IAAAA,SAAS,EAAC,4BAA4B;IAAC,YAAA,EAAW;GAAe,eACrFQ,KAAA,CAAAC,aAAA,CAACyc,UAAU,EAAA,IAAA,CACL,CACR,eAAA1c,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,2BAA2B;AACrC,IAAA,YAAA,EAAW,cAAc;AACzBJ,IAAAA,OAAO,EAAEge;GAAQ,eAEjBpd,KAAA,CAAAC,aAAA,CAACgd,SAAS,MAAA,CACJ,CACJ,CACH,CACF,CAAC;AAEV;;ACjGA,IAAMkB,iBAAiB,GAAG,2BAA2B;AAErD,IAAMC,aAAa,GAAwD,UAACvf,EAG3E,EAAA;MAFCiD,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;IACJtC,SAAS,GAAAX,EAAA,CAAAW,SAAA;AAET,EAAA,oBACEQ,KAAA,CAAAC,aAAA,CAAC2Z,OAAO,EAAA;AACN9X,IAAAA,IAAI,EAAEA,IAAK;IACXtC,SAAS,EAAE,CAAC,kBAAkB,EAAE,oBAAA,CAAAI,MAAA,CAAqBkC,IAAI,CAAE,EAAEtC,SAAS,IAAI,EAAE,CAAC,CAC1EK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;AAAE,GAAA,CACb;AAEN,CAAC;AAED,IAAMse,aAAa,GAAG,UACpBvM,KAAmB,EACnBwM,UAAoB,EACpBC,KAAa,EAAA;EAEb,IAAIC,YAAY,GAAG1M,KAAK;AACxB,EAAA,IAAI2M,WAAmC;0BAE9B9d,CAAC,EAAA;AACR8d,IAAAA,WAAW,GAAGD,YAAY,CAACjG,IAAI,CAAC,UAAC5G,IAAI;AAAK,MAAA,OAAAA,IAAI,CAAC3O,KAAK,KAAKsb,UAAU,CAAC3d,CAAC,CAAC;AAA5B,IAAA,CAA4B,CAAC;AACvE6d,IAAAA,YAAY,GAAG,CAAAC,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAE3f,QAAQ,KAAI,EAAE;;AAF5C,EAAA,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI4d,KAAK,EAAE5d,CAAC,IAAI,CAAC,EAAA;YAAzBA,CAAC,CAAA;AAGT,EAAA;AAED,EAAA,OAAO8d,WAAW;AACpB,CAAC;AAED,IAAMC,eAAe,GAAG,UACtB5M,KAAmB,EACnBwM,UAAoB,EACpBxD,KAAa,EAAA;;EAEb,IAAIA,KAAK,IAAI,CAAC,EAAE;AACd,IAAA,OAAOhJ,KAAK;AACb,EAAA;AAED,EAAA,OAAO,CAAA,CAAAjT,EAAA,GAAAwf,aAAa,CAACvM,KAAK,EAAEwM,UAAU,EAAExD,KAAK,GAAG,CAAC,CAAC,MAAA,IAAA,IAAAjc,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEC,QAAQ,KAAI,EAAE;AACpE,CAAC;AAED,IAAM6f,cAAc,GAAG,UACrB7M,KAAmB,EACnBwM,UAAoB,EACpBM,QAAY,EAAA;AAAZ,EAAA,IAAAA,QAAA,KAAA,MAAA,EAAA;AAAAA,IAAAA,QAAA,GAAA,CAAY;AAAA,EAAA;AAEZ,EAAA,IAAMjL,OAAO,GAAmB,CAAC7B,KAAK,CAAC;EACvC,IAAI0M,YAAY,GAAG1M,KAAK;AAExBwM,EAAAA,UAAU,CAAC5Y,KAAK,CAAC,CAAC,EAAEkZ,QAAQ,GAAG,CAAC,CAAC,CAACpV,OAAO,CAAC,UAACxG,KAAK,EAAA;;IAC9C,IAAM6b,UAAU,GAAGL,YAAY,CAACjG,IAAI,CAAC,UAAC5G,IAAI,EAAA;AAAK,MAAA,OAAAA,IAAI,CAAC3O,KAAK,KAAKA,KAAK;AAApB,IAAA,CAAoB,CAAC;AAEpE,IAAA,IAAI,CAAAnE,EAAA,GAAAggB,UAAU,KAAA,IAAA,IAAVA,UAAU,KAAA,MAAA,GAAA,MAAA,GAAVA,UAAU,CAAE/f,QAAQ,MAAA,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiC,MAAM,EAAE;AAChC6S,MAAAA,OAAO,CAAC0B,IAAI,CAACwJ,UAAU,CAAC/f,QAAQ,CAAC;MACjC0f,YAAY,GAAGK,UAAU,CAAC/f,QAAQ;AACnC,IAAA;AACH,EAAA,CAAC,CAAC;AAEF,EAAA,OAAO6U,OAAO,CAACjO,KAAK,CAAC,CAAC,EAAEkZ,QAAQ,CAAC;AACnC,CAAC;AAED,IAAME,wBAAwB,GAAG,UAACnN,IAAgB,EAAE2M,UAAoB,EAAExD,KAAa,EAAA;EACrF,OAAAnJ,IAAI,CAACgB,OAAO,IAAI2L,UAAU,CAACxD,KAAK,CAAC,KAAKnJ,IAAI,CAAC3O,KAAK;AAAhD,CAAgD;AAElD,IAAM+b,iBAAiB,GAAG,UAACpN,IAAgB,EAAE2M,UAAoB,EAAExD,KAAa,EAAA;AAC9E,EAAA,OAAAwD,UAAU,CAACxD,KAAK,CAAC,KAAKnJ,IAAI,CAAC3O,KAAK;AAAhC,CAAgC;AAElC,IAAMgc,cAAc,GAAG,UAAClN,KAAmB,EAAA;AACzC,EAAA,OAAAA,KAAK,CAACmN,IAAI,CAAC,UAACtN,IAAI,EAAA;IAAK,OAAAA,IAAI,CAACqJ,IAAI,IAAIgE,cAAc,CAACrN,IAAI,CAAC7S,QAAQ,IAAI,EAAE,CAAC;AAAhD,EAAA,CAAgD,CAAC;AAAtE,CAAsE;AAExE,IAAMogB,mBAAmB,GAAG,UAACC,KAAiB,EAAA;EAC5C,IAAIA,KAAK,YAAYC,WAAW,EAAE;AAChCD,IAAAA,KAAK,CAAC5O,SAAS,CAAC8O,MAAM,CAAC,6BAA6B,CAAC;AACrDF,IAAAA,KAAK,CAAC5O,SAAS,CAAC8O,MAAM,CAAC,+BAA+B,CAAC;AACxD,EAAA;EAEDF,KAAK,CAACvM,gBAAgB,CAAc,8BAA8B,CAAC,CAACpJ,OAAO,CAAC,UAACmI,IAAI,EAAA;AAC/EA,IAAAA,IAAI,CAACpB,SAAS,CAAC8O,MAAM,CAAC,6BAA6B,CAAC;AACtD,EAAA,CAAC,CAAC;EACFF,KAAK,CAACvM,gBAAgB,CAAc,gCAAgC,CAAC,CAACpJ,OAAO,CAAC,UAAC8V,MAAM,EAAA;AACnFA,IAAAA,MAAM,CAAC/O,SAAS,CAAC8O,MAAM,CAAC,+BAA+B,CAAC;AAC1D,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,IAAME,oBAAoB,GAAG,UAAC5N,IAAiB,EAAA;;AAC7C,EAAA,IAAM6N,YAAY,GAAG7N,IAAI,CAAC8N,aAAa;AAEvC,EAAA,IAAID,YAAY,EAAE;AAChBtX,IAAAA,KAAK,CAACoG,IAAI,CAACkR,YAAY,CAAC1gB,QAAQ,CAAC,CAAC0K,OAAO,CAAC,UAACkW,QAAQ,EAAA;MACjD,IAAIA,QAAQ,KAAK/N,IAAI,EAAE;QACrBuN,mBAAmB,CAACQ,QAAuB,CAAC;AAC7C,MAAA;AACH,IAAA,CAAC,CAAC;AACH,EAAA;AAED/N,EAAAA,IAAI,CAACpB,SAAS,CAACwE,GAAG,CAAC,6BAA6B,CAAC;EACjD,CAAAlW,EAAA,GAAA8S,IAAI,CACDgO,aAAa,CAAc,mCAAmC,CAAC,MAAA,IAAA,IAAA9gB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAC9D0R,SAAS,CAACwE,GAAG,CAAC,+BAA+B,CAAC;AACpD,CAAC;AAED,IAAM6K,kBAAkB,GAMnB,UAAC/gB,EAA6C,EAAA;AAA3C,EAAA,IAAAmE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IAAEf,IAAI,GAAApD,EAAA,CAAAoD,IAAA;IAAE7C,OAAO,GAAAP,EAAA,CAAAO,OAAA;IAAEiH,QAAQ,GAAAxH,EAAA,CAAAwH,QAAA;IAAE7G,SAAS,GAAAX,EAAA,CAAAW,SAAA;EAAO,oBACtDQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAE,CAAC,yBAAyB,EAAEA,SAAS,IAAI,EAAE,CAAC,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAE;AAClF,IAAA,YAAA,EAAYiD,KAAM;AAClB,IAAA,eAAA,EAAeqD,QAAS;AACxBjH,IAAAA,OAAO,EAAEA,OAAQ;AACjB,IAAA,yBAAA,EAAyB6C,IAAI,KAAK,QAAQ,GAAG,EAAE,GAAG9B;AAAU,GAAA,eAE5DH,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,IAAAA,IAAI,EAAEG;AAAK,GAAA,CACpB,CAAC;AAV6C,CAWvD;IAEY4d,SAAS,GAA6B,UAAChhB,EAqBnD,EAAA;MApBCihB,IAAI,GAAAjhB,EAAA,CAAAihB,IAAA;IACJ/gB,EAAA,GAAAF,EAAA,CAAAgc,QAAa;IAAbA,QAAQ,GAAA9b,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA;IACbE,EAAA,GAAAJ,EAAA,CAAA8c,SAAc;IAAdA,SAAS,GAAA1c,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACdI,uBAAsB;IAAtBqc,eAAe,mBAAG,IAAI,GAAArc,EAAA;IACtBuc,gBAAgB,GAAA/c,EAAA,CAAA+c,gBAAA;IAChBrc,EAAA,GAAAV,EAAA,CAAAkhB,WAA2B;IAA3BA,WAAW,GAAAxgB,EAAA,KAAA,MAAA,GAAG,aAAa,KAAA;IAC3BE,EAAA,GAAAZ,EAAA,CAAAmhB,iBAAmD;IAAnDA,iBAAiB,GAAAvgB,EAAA,KAAA,MAAA,GAAG,+BAA+B,GAAAA,EAAA;IACnDmF,eAAkB;IAAlB5F,OAAO,mBAAG,QAAQ,GAAA4F,EAAA;IAClBqb,IAAI,GAAAphB,EAAA,CAAAohB,IAAA;IACJnb,EAAA,GAAAjG,EAAA,CAAAqhB,QAAgB;IAAhBA,QAAQ,GAAApb,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IAChBI,EAAA,GAAArG,EAAA,CAAAshB,WAAe;IAAfA,WAAW,GAAAjb,EAAA,KAAA,MAAA,GAAG,CAAC,GAAAA,EAAA;IACfsG,kBAAe;IAAf8S,UAAU,mBAAG,EAAE,GAAA9S,EAAA;IACf4U,mBAAmB,GAAAvhB,EAAA,CAAAuhB,mBAAA;IACnBC,YAAY,GAAAxhB,EAAA,CAAAwhB,YAAA;IACZC,cAAc,GAAAzhB,EAAA,CAAAyhB,cAAA;IACdC,eAAe,GAAA1hB,EAAA,CAAA0hB,eAAA;IACfC,eAAe,GAAA3hB,EAAA,CAAA2hB,eAAA;IACfC,iBAAiB,GAAA5hB,EAAA,CAAA4hB,iBAAA;IACjBC,uBAAuB,GAAA7hB,EAAA,CAAA6hB,uBAAA;IACvB5hB,QAAQ,GAAAD,EAAA,CAAAC,QAAA;AAEF,EAAA,IAAA2M,EAAA,GAA8BC,QAAQ,CAAC,KAAK,CAAC;AAA5CiV,IAAAA,UAAU,GAAAlV,EAAA,CAAA,CAAA,CAAA;AAAEmV,IAAAA,aAAa,GAAAnV,EAAA,CAAA,CAAA,CAAmB;AACnD,EAAA,IAAMoV,SAAS,GAAG5O,MAAM,CAAc,IAAI,CAAC;AAC3C,EAAA,IAAM6O,UAAU,GAAGZ,QAAQ,IAAIC,WAAW,GAAG,CAAC;EAC9C,IAAMxM,OAAO,GAAG7U,QAAQ,GAAG,EAAE,GAAG6f,cAAc,CAAC9D,QAAQ,EAAEyD,UAAU,CAAC;EACpE,IAAMyC,WAAW,GAAGrC,eAAe,CAAC7D,QAAQ,EAAEyD,UAAU,EAAE6B,WAAW,IAAI,CAAC,CAAC;EAC3E,IAAMa,eAAe,GAAG1C,UAAU,CAACA,UAAU,CAACxd,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;EACnE,IAAMmgB,YAAY,GAAGjiB,OAAO,KAAK,UAAU,IAAIggB,cAAc,CAACnE,QAAQ,CAAC;AAEvEnI,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAI,CAACwN,QAAQ,IAAI,CAACe,YAAY,EAAE;AAC9B,MAAA,OAAO9gB,SAAS;AACjB,IAAA;AAED,IAAA,IAAM+gB,yBAAyB,GAAG,UAAChG,KAA8B,EAAA;;MAC/D,IAAI,CAAArc,EAAA,GAAAgiB,SAAS,CAAClO,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEud,QAAQ,CAAClB,KAAK,CAAC9a,MAAc,CAAC,EAAE;AACrD,QAAA;AACD,MAAA;AAED,MAAA,IAAI8f,QAAQ,EAAE;AACZG,QAAAA,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAA,MAAA,GAAA,MAAA,GAAZA,YAAY,EAAI;AACjB,MAAA;AAED,MAAA,IAAIY,YAAY,EAAE;AAChBV,QAAAA,eAAe,KAAA,IAAA,IAAfA,eAAe,KAAA,MAAA,GAAA,MAAA,GAAfA,eAAe,EAAI;AACpB,MAAA;IACH,CAAC;AAEDlE,IAAAA,QAAQ,CAAClL,gBAAgB,CAAC,WAAW,EAAE+P,yBAAyB,CAAC;AACjE7E,IAAAA,QAAQ,CAAClL,gBAAgB,CAAC,YAAY,EAAE+P,yBAAyB,CAAC;AAElE,IAAA,OAAO,YAAA;AACL7E,MAAAA,QAAQ,CAAC7K,mBAAmB,CAAC,WAAW,EAAE0P,yBAAyB,CAAC;AACpE7E,MAAAA,QAAQ,CAAC7K,mBAAmB,CAAC,YAAY,EAAE0P,yBAAyB,CAAC;IACvE,CAAC;EACH,CAAC,EAAE,CAACD,YAAY,EAAEf,QAAQ,EAAEK,eAAe,EAAEF,YAAY,CAAC,CAAC;AAE3D3N,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAI1T,OAAO,KAAK,MAAM,IAAI,CAACF,QAAQ,IAAI,CAACohB,QAAQ,IAAI,CAACW,SAAS,CAAClO,OAAO,EAAE;AACtE,MAAA,OAAOxS,SAAS;AACjB,IAAA;AAED,IAAA,IAAMghB,SAAS,GAAGjZ,KAAK,CAACoG,IAAI,CAC1BuS,SAAS,CAAClO,OAAO,CAACC,gBAAgB,CAAc,sCAAsC,CAAC,CACxF;IACD,IAAMwO,eAAe,GAAGD,SAAS,CAAC3a,GAAG,CAAC,UAACmL,IAAI,EAAA;AACzC,MAAA,IAAMsJ,YAAY,GAAG,YAAA;QAAM,OAAAsE,oBAAoB,CAAC5N,IAAI,CAAC;MAA1B,CAA0B;AACrD,MAAA,IAAM0P,SAAS,GAAG,YAAA;QAAM,OAAA9B,oBAAoB,CAAC5N,IAAI,CAAC;MAA1B,CAA0B;AAElDA,MAAAA,IAAI,CAACR,gBAAgB,CAAC,YAAY,EAAE8J,YAAY,CAAC;AACjDtJ,MAAAA,IAAI,CAACR,gBAAgB,CAAC,SAAS,EAAEkQ,SAAS,CAAC;AAE3C,MAAA,OAAO,YAAA;AACL1P,QAAAA,IAAI,CAACH,mBAAmB,CAAC,YAAY,EAAEyJ,YAAY,CAAC;AACpDtJ,QAAAA,IAAI,CAACH,mBAAmB,CAAC,SAAS,EAAE6P,SAAS,CAAC;MAChD,CAAC;AACH,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,YAAA;AACLD,MAAAA,eAAe,CAAC5X,OAAO,CAAC,UAAC8X,cAAc,EAAA;QAAK,OAAAA,cAAc,EAAE;AAAhB,MAAA,CAAgB,CAAC;MAC7D,IAAIT,SAAS,CAAClO,OAAO,EAAE;AACrBuM,QAAAA,mBAAmB,CAAC2B,SAAS,CAAClO,OAAO,CAAC;AACvC,MAAA;IACH,CAAC;EACH,CAAC,EAAE,CAAC7T,QAAQ,EAAEohB,QAAQ,EAAElhB,OAAO,CAAC,CAAC;AAEjC,EAAA,IAAMuiB,UAAU,GAAG,YAAA;IAAM,OAAAX,aAAa,CAAC,IAAI,CAAC;EAAnB,CAAmB;AAE5C,EAAA,IAAMY,aAAa,GAAG,UAACC,QAAgB,EAAA;AAAhB,IAAA,IAAAA,QAAA,KAAA,MAAA,EAAA;AAAAA,MAAAA,QAAA,GAAA,KAAgB;AAAA,IAAA;IAAK,oBAC1CzhB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAAqB,KAAA,EACjCiiB,QAAQ,IAAIziB,OAAO,KAAK,MAAM,iBAC7BgB,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,eACEzM,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,MAAAA,IAAI,EAAC,QAAQ;AACbE,MAAAA,SAAS,EAAC,0BAA0B;AACpC,MAAA,YAAA,EAAY0gB,QAAQ,GAAG,YAAY,GAAG,WAAY;AAClD,MAAA,eAAA,EAAeA,QAAS;AACxB9gB,MAAAA,OAAO,EAAEihB,YAAa;AACtB,MAAA,uBAAA,EAAA;AAAqB,KAAA,eAErBrgB,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,MAAAA,IAAI,EAAEoe,QAAQ,GAAG,OAAO,GAAG;AAAO,KAAA,CACjD,eAAAlgB,KAAA,CAAAC,aAAA,eAAOigB,QAAQ,GAAG,OAAO,GAAG,MAAa,CACnC,CACR,eAAAlgB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,uBAAuB;MAAC,aAAA,EAAY;KAAM,EACxD,GACI,CACR,CACD,eACDQ,KAAA,CAAAC,aAAA,CAAC2f,kBAAkB,EAAA;AACjB5c,MAAAA,KAAK,EAAE+c,WAAY;AACnB9d,MAAAA,IAAI,EAAC,QAAQ;AACboE,MAAAA,QAAQ,EAAE8X,iBAAkB;AAC5B/e,MAAAA,OAAO,EAAEmiB;AAAW,KAAA,CAEtB,EAAC5F,SAAS,CAAC7a,MAAM,GAAG,CAAC,iBACnBd,KAAA,CAAAC,aAAA,CAACwb,mBAAmB,EAAA;AAClBC,MAAAA,eAAe,EAAEA,eAAgB;AACjCC,MAAAA,SAAS,EAAEA,SAAU;AACrB3Y,MAAAA,KAAK,EAAE,4BAAqB0Y,eAAe,CAAG;AAC9CE,MAAAA,gBAAgB,EAAEA;AAAiB,KAAA,CAGpC,CAAC;EAlCoC,CAmC3C;AAED,EAAA,IAAM8F,eAAe,GAAG,YAAA;IAAM,oBAC5B1hB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAwB,eACrCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAwB,EACpCmU,OAAO,CAACnN,GAAG,CAAC,UAACmb,WAAW,EAAEC,WAAW,EAAA;MAAK,oBACzC5hB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,QAAAA,GAAG,EAAE,cAAA,CAAA/G,MAAA,CAAegiB,WAAW,CAAG;AAACpiB,QAAAA,SAAS,EAAC,yBAAyB;AAACwT,QAAAA,IAAI,EAAC;AAAM,OAAA,EACnF2O,WAAW,CAACnb,GAAG,CAAC,UAACmL,IAAI,EAAA;;QACpB,IAAMoJ,WAAW,GAAGjb,OAAO,CAAC,CAAAjB,EAAA,GAAA8S,IAAI,CAAC7S,QAAQ,MAAA,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiC,MAAM,CAAC;QAElD,oBACEd,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE0G,UAAAA,GAAG,EAAE,EAAA,CAAA/G,MAAA,CAAG+R,IAAI,CAACxS,IAAI,cAAIyiB,WAAW,CAAG;AACnCpiB,UAAAA,SAAS,EAAE,CACT,uBAAuB,EACvBub,WAAW,GAAG,qCAAqC,GAAG,EAAE,EACxDgE,iBAAiB,CAACpN,IAAI,EAAE2M,UAAU,EAAEsD,WAAW,CAAC,GAC5C,+BAA+B,GAC/B,EAAE,CACP,CACE/hB,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAE;UACbkb,YAAY,EAAE,YAAA;YACZ,IAAIuF,eAAe,IAAIzF,WAAW,EAAE;AAClCyF,cAAAA,eAAe,CAAC7O,IAAI,EAAEiQ,WAAW,CAAC;AACnC,YAAA;AACH,UAAA;SAAE,eAEF5hB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;UAAGd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAACK,UAAAA,SAAS,EAAC;AAAuB,SAAA,eACnDQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO0R,IAAI,CAAC3O,KAAY,CACxB,EAAC+X,WAAW,iBAAI/a,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,UAAAA,IAAI,EAAC;SAAc,CACjD,CACD,CAAC;AAET,MAAA,CAAC,CACC,CAAC;IA9BoC,CA+B1C,CACE,CACF,CAAC;EApCsB,CAqC7B;AAED,EAAA,IAAM+f,gBAAgB,GAAG,YAAA;IAAM,oBAC7B7hB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAA0B,EACtCR,OAAO,KAAK,UAAU,gBACrBgB,KAAA,CAAAC,aAAA,CAACwa,aAAa,EAAA;AACZ3I,MAAAA,KAAK,EAAE+I,QAAS;AAChB7b,MAAAA,OAAO,EAAC,UAAU;AAClB0b,MAAAA,WAAW,EAAE,UAAC/I,IAAI,EAAEmJ,KAAK,EAAA;AAAK,QAAA,OAAA2F,iBAAiB,KAAA,IAAA,IAAjBA,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAjBA,iBAAiB,CAAG9O,IAAI,EAAEmJ,KAAK,GAAG,CAAC,CAAC;AAApC,MAAA;KAAqC,CACnE,gBAEF9a,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,EACGzN,OAAO,KAAK,MAAM,IAAImhB,WAAW,GAAG,CAAC,iBACpCngB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC,yBAAyB;MAAC,YAAA,EAAW;KAAiB,eACnEQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,MAAAA,IAAI,EAAC,QAAQ;AACbE,MAAAA,SAAS,EAAC,gCAAgC;AAC1C,MAAA,YAAA,EAAY,kBAAWwhB,eAAe,CAAG;MACzC5hB,OAAO,EAAE,YAAA;QACP,OAAAshB,uBAAuB,KAAA,IAAA,IAAvBA,uBAAuB,KAAA,MAAA,GAAA,MAAA,GAAvBA,uBAAuB,CAAG1T,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAEiS,WAAW,GAAG,CAAC,CAAkB,CAAC;AAAxE,MAAA;AACD,KAAA,eAEDngB,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,MAAAA,IAAI,EAAC;AAAc,KAAA,CAClC,eAAA9B,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAM,UAAQ,EAAC+gB,eAAsB,CAC/B,CACL,CACN,eAEDhhB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC,yBAAyB;AAACwT,MAAAA,IAAI,EAAC;KAAM,EAChD+N,WAAW,CAACva,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;;MAC3B,IAAMqU,WAAW,GAAGjb,OAAO,CAAC,CAAAjB,EAAA,GAAA8S,IAAI,CAAC7S,QAAQ,MAAA,IAAA,IAAAD,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiC,MAAM,CAAC;MAClD,IAAMghB,UAAU,GAAG1B,mBAAmB,GAClCzO,IAAI,CAAC3O,KAAK,KAAKod,mBAAmB,GAClCtB,wBAAwB,CAACnN,IAAI,EAAE2M,UAAU,EAAEtR,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAEiS,WAAW,GAAG,CAAC,CAAC,CAAC;MAE5E,oBACEngB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE0G,QAAAA,GAAG,EAAE,EAAA,CAAA/G,MAAA,CAAG+R,IAAI,CAACxS,IAAI,qBAAWuH,KAAK,CAAG;QACpClH,SAAS,EAAE,CACT,yBAAyB,EACzBub,WAAW,GAAG,uCAAuC,GAAG,EAAE,EAC1D+G,UAAU,GAAG,iCAAiC,GAAG,EAAE,CACpD,CACEjiB,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;OAAE,eAEbC,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;QACEd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAChBK,QAAAA,SAAS,EAAC,yBAAyB;AACnCJ,QAAAA,OAAO,EAAE,UAAC8b,KAAK,EAAA;UACb,IAAIuF,iBAAiB,IAAI1F,WAAW,EAAE;YACpCG,KAAK,CAAC/O,cAAc,EAAE;AACtBsU,YAAAA,iBAAiB,CAAC9O,IAAI,EAAE3E,IAAI,CAACkB,GAAG,CAAC,CAAC,EAAEiS,WAAW,IAAI,CAAC,CAAC,CAAC;AACvD,UAAA;AACH,QAAA;AAAE,OAAA,eAEFngB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO0R,IAAI,CAAC3O,KAAY,CACxB,EAAC+X,WAAW,iBAAI/a,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,QAAAA,IAAI,EAAC;OAAc,CACjD,CACD,CAAC;IAET,CAAC,CACC,CACN,CAEC,CAAC;EA/DuB,CAgE9B;AAED,EAAA,oBACE9B,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,eACKzM,KAAA,CAAAC,aAAA,CAACid,gBAAgB,EAAA;AAClBra,IAAAA,EAAE,EAAEsb,iBAAkB;AACtBtC,IAAAA,MAAM,EAAE8E,UAAW;IACnBvD,OAAO,EAAE,YAAA;MAAM,OAAAwD,aAAa,CAAC,KAAK,CAAC;IAApB,CAAqB;AACpCzD,IAAAA,WAAW,EAAE6C;AAAkB,GAAA,CAEjC,eAAAhgB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6S,IAAAA,GAAG,EAAE+N,SAAU;AACfrhB,IAAAA,SAAS,EAAE,CACT,YAAY,EACZ,cAAA,CAAAI,MAAA,CAAeZ,OAAO,CAAE,EACxBihB,IAAI,GAAG,mBAAA,CAAArgB,MAAA,CAAoBqgB,IAAI,CAAE,GAAG,EAAE,EACtCC,QAAQ,GAAG,uBAAuB,GAAG,EAAE,EACvC,2BAAA,CAAAtgB,MAAA,CAA4BugB,WAAW,CAAE,CAC1C,CACEtgB,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;GAAE,eAEbC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAmB,eAChCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAoB,eACjCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAU,eACvBQ,KAAA,CAAAC,aAAA,CAACua,OAAO,EAAKsF,IAAK,CACf,CACF,CAEL,EAAC9gB,OAAO,KAAK,MAAM,IAAI6b,QAAQ,CAAC/Z,MAAM,GAAG,CAAC,iBACxCd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAiB,GAAA,eAC9BQ,KAAA,CAAAC,aAAA,CAACwa,aAAa,EAAA;AAAC3I,IAAAA,KAAK,EAAE+I,QAAS;AAAC7b,IAAAA,OAAO,EAAEA,OAAQ;AAAC2b,IAAAA,WAAW,EAAE2F;GAAe,CAC3E,CACN,EAEAthB,OAAO,KAAK,MAAM,iBACjBgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA0B,GAAA,EAAEgiB,aAAa,CAAC,IAAI,CAAO,CACrE,EAEAxiB,OAAO,KAAK,MAAM,iBACjBgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA6B,eAC1CQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,uBAAuB;IAAC,aAAA,EAAY;GAAM,EACxD,GACI,CACN,EAACgiB,aAAa,CAAC,KAAK,CACjB,CACN,eAEDxhB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA4B,GAAA,eACzCQ,KAAA,CAAAC,aAAA,CAAC2f,kBAAkB,EAAA;AACjB5c,IAAAA,KAAK,EAAE+c,WAAY;AACnB9d,IAAAA,IAAI,EAAC,QAAQ;AACboE,IAAAA,QAAQ,EAAE8X,iBAAkB;AAC5B/e,IAAAA,OAAO,EAAEmiB;AAAW,GAAA,CAEtB,EAAC5F,SAAS,CAAC7a,MAAM,GAAG,CAAC,iBACnBd,KAAA,CAAAC,aAAA,CAACwb,mBAAmB,EAAA;AAClBC,IAAAA,eAAe,EAAEA,eAAgB;AACjCC,IAAAA,SAAS,EAAEA,SAAU;AACrB3Y,IAAAA,KAAK,EAAE,4BAAqB0Y,eAAe,CAAG;AAC9CE,IAAAA,gBAAgB,EAAEA;AAAiB,GAAA,CAEtC,eACD5b,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,uBAAuB;IAAC,aAAA,EAAY;AAAM,GAAA,EACxD,GACI,CACN,eAAAQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,yBAAyB;AACnC,IAAA,YAAA,EAAYshB,UAAU,GAAG,YAAY,GAAG,WAAY;AACpD,IAAA,eAAA,EAAeA,UAAW;AAC1B1hB,IAAAA,OAAO,EAAEihB,YAAa;AACtB,IAAA,uBAAA,EAAA;AAAqB,GAAA,eAErBrgB,KAAA,CAAAC,aAAA,CAACme,aAAa,EAAA;AAACtc,IAAAA,IAAI,EAAEgf,UAAU,GAAG,OAAO,GAAG;GAAO,CAC7C,CACL,CACF,CAEL,EAAC9hB,OAAO,KAAK,MAAM,IAAIkhB,QAAQ,KAAKphB,QAAQ,IAAI4iB,eAAe,EAAE,CAAC,EACjEZ,UAAU,IAAIe,gBAAgB,EACzB,CAGV,CAAG;AAEP;;IC/caE,aAAa,GAAiC,UAACljB,EAAkB,EAAA;MAAhB2E,OAAO,GAAA3E,EAAA,CAAA2E,OAAA;IAAEwe,KAAK,GAAAnjB,EAAA,CAAAmjB,KAAA;EAC1E,oBACEhiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,iBAAiB;IAAC,YAAA,EAAYgE,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAPA,OAAO,GAAI;AAAc,GAAA,EACnEA,OAAO,iBAAIxD,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC,0BAA0B;IAAC,aAAA,EAAY;AAAM,GAAA,EAAEgE,OAAW,CAAC,eACpFxD,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,uBAAuB;AAACwT,IAAAA,IAAI,EAAC;AAAM,GAAA,EAC9CgP,KAAK,CAACxb,GAAG,CAAC,UAACyb,IAAI,EAAA;IAAK,oBACnBjiB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;MAAI0G,GAAG,EAAEsb,IAAI,CAAC9iB,IAAK;AAACK,MAAAA,SAAS,EAAC;KAAuB,eACnDQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;MAAGd,IAAI,EAAE8iB,IAAI,CAAC9iB,IAAK;AAACK,MAAAA,SAAS,EAAC;AAAuB,KAAA,EAClDyiB,IAAI,CAACjf,KACL,CACD,CAAC;EALc,CAMpB,CACC,CACD,CAAC;AAEV;;ACPA,IAAMkf,aAAa,GAAkD;EACnEC,QAAQ,eACNniB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,IAAAA,OAAO,EAAC,WAAW;AAACE,IAAAA,KAAK,EAAC,4BAA4B;AAAC,IAAA,aAAA,EAAY,MAAM;AAACC,IAAAA,SAAS,EAAC;GAAO,eAC9F9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,IAAAA,CAAC,EAAC;AAA2P,GAAA,CAChQ,CACN;EACDoM,OAAO,eACLpiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,IAAAA,OAAO,EAAC,WAAW;AAACE,IAAAA,KAAK,EAAC,4BAA4B;AAAC,IAAA,aAAA,EAAY,MAAM;AAACC,IAAAA,SAAS,EAAC;GAAO,eAC9F9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,IAAAA,CAAC,EAAC;AAA6J,GAAA,CAClK,CACN;EACDqM,QAAQ,eACNriB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,IAAAA,OAAO,EAAC,WAAW;AAACE,IAAAA,KAAK,EAAC,4BAA4B;AAAC,IAAA,aAAA,EAAY,MAAM;AAACC,IAAAA,SAAS,EAAC;GAAO,eAC9F9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,IAAAA,CAAC,EAAC;AAAuR,GAAA,CAC5R,CACN;EACDsM,SAAS,eACPtiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,IAAAA,OAAO,EAAC,WAAW;AAACE,IAAAA,KAAK,EAAC,4BAA4B;AAAC,IAAA,aAAA,EAAY,MAAM;AAACC,IAAAA,SAAS,EAAC;GAAO,eAC9F9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,IAAAA,CAAC,EAAC;AAA23B,GAAA,CACh4B,CACN;EACDuM,OAAO,eACLviB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK0K,IAAAA,OAAO,EAAC,WAAW;AAACE,IAAAA,KAAK,EAAC,4BAA4B;AAAC,IAAA,aAAA,EAAY,MAAM;AAACC,IAAAA,SAAS,EAAC;GAAO,eAC9F9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,IAAAA,CAAC,EAAC;AAA8V,GAAA,CACnW;CAER;IAEYwM,mBAAmB,GAAuC,UAAC3jB,EAAS,EAAA;AAAP,EAAA,IAAAiT,KAAK,GAAAjT,EAAA,CAAAiT,KAAA;EAC7E,oBACE9R,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,kBAAkB;AAACwT,IAAAA,IAAI,EAAC;AAAM,GAAA,EACzClB,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAA;IAAK,oBACnB3R,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;MAAI0G,GAAG,EAAEgL,IAAI,CAAC8Q,QAAS;AAACjjB,MAAAA,SAAS,EAAC;KAAwB,eACxDQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;MACEd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAChBK,MAAAA,SAAS,EAAC,wBAAwB;MAClC,YAAA,EAAYmS,IAAI,CAAC3O,KAAM;AACvB5C,MAAAA,MAAM,EAAC,QAAQ;AACfC,MAAAA,GAAG,EAAC;AAAqB,KAAA,EAExB6hB,aAAa,CAACvQ,IAAI,CAAC8Q,QAAQ,CAC3B,CACD,CAAC;AAXc,EAAA,CAYpB,CACC,CAAC;AAET;;ACfA,IAAMC,SAAS,GAAG,YAAA;EAAM,oBACtB1iB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,IAAAA,KAAK,EAAC,IAAI;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXsD,IAAAA,OAAO,EAAC,aAAa;AACrBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,KAAK,EAAC,4BAA4B;IAClC,aAAA,EAAY;GAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,IAAAA,CAAC,EAAC,8XAA8X;AAChYpL,IAAAA,IAAI,EAAC;AAAc,GAAA,CAElB,CAAC;AAdgB,CAevB;AAED,IAAM+X,OAAO,GAAG,YAAA;EAAM,oBACpB3iB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,IAAAA,KAAK,EAAC,IAAI;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXsD,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,KAAK,EAAC,4BAA4B;IAClC,aAAA,EAAY;GAAM,eAElB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,IAAAA,CAAC,EAAC,yIAAyI;AAC3IpL,IAAAA,IAAI,EAAC;AAAc,GAAA,CAElB,CAAC;AAbc,CAcrB;AAED,IAAMgY,QAAQ,GAAG,YAAA;EAAM,oBACrB5iB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,IAAAA,KAAK,EAAC,IAAI;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXsD,IAAAA,OAAO,EAAC,aAAa;AACrBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,KAAK,EAAC,4BAA4B;IAClC,aAAA,EAAY;GAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,IAAAA,CAAC,EAAC,+LAA+L;AACjMpL,IAAAA,IAAI,EAAC;AAAc,GAAA,CAElB,CAAC;AAde,CAetB;AAED,IAAMiY,YAAY,GAAG,YAAA;EAAM,oBACzB7iB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,IAAAA,KAAK,EAAC,IAAI;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXsD,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,KAAK,EAAC,4BAA4B;IAClC,aAAA,EAAY;GAAM,eAElB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,IAAAA,CAAC,EAAC,yJAAyJ;AAC3JpL,IAAAA,IAAI,EAAC;AAAc,GAAA,CAElB,CAAC;AAbmB,CAc1B;AAED,IAAMkY,OAAO,GAAG,YAAA;EAAM,oBACpB9iB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;GAAsB,eACpCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,IAAAA,KAAK,EAAC,IAAI;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXsD,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,IAAI,EAAC,MAAM;AACXC,IAAAA,KAAK,EAAC,4BAA4B;IAClC,aAAA,EAAY;GAAM,eAElB7K,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ8K,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,EAAE,EAAC,IAAI;AAACC,IAAAA,CAAC,EAAC,IAAI;AAACmQ,IAAAA,MAAM,EAAC,cAAc;AAACC,IAAAA,WAAW,EAAC;AAAK,GAAA,CACtE,eAAArb,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,IAAAA,CAAC,EAAC,8DAA8D;AAChEoF,IAAAA,MAAM,EAAC,cAAc;AACrBC,IAAAA,WAAW,EAAC;GAAK,CAEhB,CACL,EAAA,oCACI,CAAC;AAlBa,CAmBrB;AAED,IAAM0H,UAAU,GAAmC,UAAClkB,EAAY,EAAA;;AAAV,EAAA,IAAA4jB,QAAQ,GAAA5jB,EAAA,CAAA4jB,QAAA;AAC5D,EAAA,IAAMO,KAAK,GAAoC;IAC7CX,QAAQ,eACNriB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,MAAAA,KAAK,EAAC,IAAI;AACVC,MAAAA,MAAM,EAAC,IAAI;AACXsD,MAAAA,OAAO,EAAC,aAAa;AACrBC,MAAAA,IAAI,EAAC,cAAc;AACnBC,MAAAA,KAAK,EAAC,4BAA4B;MAClC,aAAA,EAAY;KAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,MAAAA,CAAC,EAAC;AAAkQ,KAAA,CACvQ,CACN;IACDoM,OAAO,eACLpiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,MAAAA,KAAK,EAAC,IAAI;AACVC,MAAAA,MAAM,EAAC,IAAI;AACXsD,MAAAA,OAAO,EAAC,WAAW;AACnBC,MAAAA,IAAI,EAAC,cAAc;AACnBC,MAAAA,KAAK,EAAC,4BAA4B;MAClC,aAAA,EAAY;KAAM,eAElB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,MAAAA,CAAC,EAAC;AAA6J,KAAA,CAClK,CACN;IACDmM,QAAQ,eACNniB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,MAAAA,KAAK,EAAC,IAAI;AACVC,MAAAA,MAAM,EAAC,IAAI;AACXsD,MAAAA,OAAO,EAAC,aAAa;AACrBC,MAAAA,IAAI,EAAC,cAAc;AACnBC,MAAAA,KAAK,EAAC,4BAA4B;MAClC,aAAA,EAAY;KAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,MAAAA,CAAC,EAAC;AAAugB,KAAA,CAC5gB,CACN;IACDuM,OAAO,eACLviB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,MAAAA,KAAK,EAAC,IAAI;AACVC,MAAAA,MAAM,EAAC,IAAI;AACXsD,MAAAA,OAAO,EAAC,aAAa;AACrBC,MAAAA,IAAI,EAAC,cAAc;AACnBC,MAAAA,KAAK,EAAC,4BAA4B;MAClC,aAAA,EAAY;KAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,MAAAA,CAAC,EAAC;AAAic,KAAA,CACtc,CACN;IACDsM,SAAS,eACPtiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACEmH,MAAAA,KAAK,EAAC,IAAI;AACVC,MAAAA,MAAM,EAAC,IAAI;AACXsD,MAAAA,OAAO,EAAC,aAAa;AACrBC,MAAAA,IAAI,EAAC,cAAc;AACnBC,MAAAA,KAAK,EAAC,4BAA4B;MAClC,aAAA,EAAY;KAAM,eAGlB7K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAM+V,MAAAA,CAAC,EAAC;AAA2xC,KAAA,CAChyC;GAER;EACD,oBAAOhW,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,EAAG,CAAA1N,EAAA,GAAAikB,KAAK,CAACP,QAAQ,CAAC,MAAA,IAAA,IAAA1jB,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,IAAK,CAAG;AACvC,CAAC;AAED,IAAMkkB,cAAc,GAAoE,UAACpkB,EAExF,EAAA;AADC,EAAA,IAAAmjB,KAAK,GAAAnjB,EAAA,CAAAmjB,KAAA;EACD,oBACJhiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA2B,GAAA,EACvCwiB,KAAK,CAACxb,GAAG,CAAC,UAAC0c,CAAC,EAAA;IAAK,oBAChBljB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;MACE0G,GAAG,EAAEuc,CAAC,CAACT,QAAS;MAChBtjB,IAAI,EAAE+jB,CAAC,CAAC/jB,IAAK;MACb,YAAA,EAAY+jB,CAAC,CAACT,QAAS;AACvB7E,MAAAA,KAAK,EAAE;AAAEuF,QAAAA,KAAK,EAAE,SAAS;AAAEC,QAAAA,OAAO,EAAE,aAAa;AAAEC,QAAAA,UAAU,EAAE,QAAQ;AAAEC,QAAAA,OAAO,EAAE;AAAG;AAAG,KAAA,eAExFtjB,KAAA,CAAAC,aAAA,CAAC8iB,UAAU,EAAA;MAACN,QAAQ,EAAES,CAAC,CAACT;AAAS,KAAA,CAChC,CAAC;AARY,EAAA,CASjB,CACE,CAAC;AAZF,CAaL;IAEYc,SAAS,GAA6B,UAAC1kB,EAgBnD,EAAA;;AAfC,EAAA,IAAAY,EAAA,GAAAZ,EAAA,CAAAG,OAAkB;IAAlBA,OAAO,GAAAS,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,EAAA;IAClBmF,EAAA,GAAA/F,EAAA,CAAA2kB,YAAoB;IAApBA,YAAY,GAAA5e,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACpBE,EAAA,GAAAjG,EAAA,CAAA4kB,SAAuC;IAAvCA,SAAS,GAAA3e,EAAA,KAAA,MAAA,GAAG,2BAA2B,GAAAA,EAAA;IACvCI,sBAAuB;IAAvBwe,cAAc,GAAAxe,EAAA,KAAA,MAAA,GAAG,MAAM,KAAA;IACvBsG,EAAA,GAAA3M,EAAA,CAAA8kB,WAAmB;IAAnBA,WAAW,mBAAG,KAAK,GAAAnY,EAAA;IACnBoY,aAAa,GAAA/kB,EAAA,CAAA+kB,aAAA;IACb9D,IAAI,GAAAjhB,EAAA,CAAAihB,IAAA;IACJrU,EAAA,GAAA5M,EAAA,CAAAgc,QAAa;IAAbA,QAAQ,GAAApP,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACboY,OAAO,GAAAhlB,EAAA,CAAAglB,OAAA;IACPC,EAAA,GAAAjlB,EAAA,CAAAklB,UAAe;IAAfA,UAAU,GAAAD,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACfE,SAAS,GAAAnlB,EAAA,CAAAmlB,SAAA;IACTC,WAAW,iBAAA;IACXC,WAAW,GAAArlB,EAAA,CAAAqlB,WAAA;IACXC,sBAAuB;IAAvBC,cAAc,GAAAD,EAAA,KAAA,MAAA,GAAG,MAAM,KAAA;IACvBE,EAAA,GAAAxlB,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAA6kB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;EAEd,IAAMC,IAAI,GAAG,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;EACrC,IAAMC,aAAa,GAAGT,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,MAAA,GAATA,SAAS,GAAI,SAAA,CAAApkB,MAAA,CAAK0kB,IAAI,EAAA,oCAAA,CAAoC;AAEhF;EACA,IAAItlB,OAAO,KAAK,QAAQ,EAAE;AACxB,IAAA,IAAIwkB,YAAY,EAAE;MAChB,oBACExjB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACET,QAAAA,SAAS,EAAE,iEACTA,SAAS,GAAG,GAAA,CAAAI,MAAA,CAAIJ,SAAS,CAAE,GAAG,EAAE;OAC/B,eAEHQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC;OAAwB,eACrCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC;AAAwB,OAAA,eACrCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAOwjB,SAAgB,CACpB,CACL,EAAC5I,QAAQ,CAAC/Z,MAAM,GAAG,CAAC,iBAClBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC,wBAAwB;QAAC,YAAA,EAAW;OAAmB,EACnEqb,QAAQ,CAACrU,GAAG,CAAC,UAACmL,IAAI,EAAEhR,CAAC,EAAA;AAAK,QAAA,oBACzBX,KAAA,CAAAC,aAAA,CAACD,KAAK,CAACyM,QAAQ,EAAA;UAAC9F,GAAG,EAAEgL,IAAI,CAACxS;AAAK,SAAA,EAC5BwB,CAAC,GAAG,CAAC,iBACJX,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,UAAAA,SAAS,EAAC,kBAAkB;UAAC,aAAA,EAAY;AAAM,SAAA,EACnD,GACI,CACP,eACDQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;UAAGd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAACK,UAAAA,SAAS,EAAC;AAA6B,SAAA,EACxDmS,IAAI,CAAC3O,KACL,CACW,CAAC;AAVQ,MAAA,CAW1B,CACE,CAEJ,CACL,eAAAhD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC;OAA2B,eACxCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,QAAAA,SAAS,EAAC;OAAgC,eAC7CQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,QAAAA,SAAS,EAAC;AAAuB,OAAA,EAAEilB,aAAiB,CACvD;AACE;MACAb,aAAa,iBACX5jB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,QAAAA,SAAS,EAAC;AAA2B,OAAA,EAAEokB,aAAsB,CAGtE,CACL,EAACD,WAAW,iBAAI3jB,KAAA,CAAAC,aAAA,CAAC6iB,OAAO,EAAA,KACrB,CACC,CAAC;AAEZ,IAAA;IAED,oBACE9iB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,MAAAA,SAAS,EAAE,uCAAgCA,SAAS,GAAG,GAAA,CAAAI,MAAA,CAAIJ,SAAS,CAAE,GAAG,EAAE;KAAG,eACpFQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,MAAAA,SAAS,EAAC;AAAuB,KAAA,EAAEilB,aAAiB,CACvD,eAAAzkB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAAwB,KAAA,eACrCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAOwjB,SAAgB,CACpB,CACL,EAAC5I,QAAQ,CAAC/Z,MAAM,GAAG,CAAC,iBAClBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC,wBAAwB;MAAC,YAAA,EAAW;KAAmB,EACnEqb,QAAQ,CAACrU,GAAG,CAAC,UAACmL,IAAI,EAAEhR,CAAC,EAAA;AAAK,MAAA,oBACzBX,KAAA,CAAAC,aAAA,CAACD,KAAK,CAACyM,QAAQ,EAAA;QAAC9F,GAAG,EAAEgL,IAAI,CAACxS;AAAK,OAAA,EAC5BwB,CAAC,GAAG,CAAC,iBACJX,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,eACEzM,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,QAAAA,SAAS,EAAC,kBAAkB;QAAC,aAAA,EAAY;AAAM,OAAA,EACnD,GACI,CACN,eAAAQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,QAAAA,SAAS,EAAC,4BAA4B;QAAC,aAAA,EAAY;AAAM,OAAA,CAC/D,CACD,eACDQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;QAAGd,IAAI,EAAEwS,IAAI,CAACxS,IAAK;AAACK,QAAAA,SAAS,EAAC;AAA6B,OAAA,EACxDmS,IAAI,CAAC3O,KACL,CACW,CAAC;AAbQ,IAAA,CAc1B,CACE,CACN;AAEC;IACA4gB,aAAa,iBAAI5jB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,MAAAA,SAAS,EAAC;KAA2B,EAAEokB,aAAsB,CAErF,CACC,CAAC;AAEZ,EAAA;AAED;AACA,EAAA,IAAMc,MAAM,GAAGhB,cAAc,KAAK,MAAM;AACxC,EAAA,IAAMiB,QAAQ,GAAG;AACfd,IAAAA,OAAO,EAAE,CAAA9kB,EAAA,GAAAklB,WAAW,KAAA,IAAA,IAAXA,WAAW,uBAAXA,WAAW,CAAEJ,OAAO,MAAA,IAAA,IAAA9kB,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,SAAS;AAC1CglB,IAAAA,UAAU,EAAE,MAAAE,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,GAAA,MAAA,GAAXA,WAAW,CAAEF,UAAU,MAAA,IAAA,IAAA9kB,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAKylB,MAAM,GAAG,YAAY,GAAG,aAAc;AAC9EE,IAAAA,KAAK,EAAE,CAAAvlB,EAAA,GAAA4kB,WAAW,KAAA,IAAA,IAAXA,WAAW,uBAAXA,WAAW,CAAEW,KAAK,MAAA,IAAA,IAAAvlB,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,aAAa;AAC1CwlB,IAAAA,UAAU,EAAE,CAAAtlB,EAAA,GAAA0kB,WAAW,KAAA,IAAA,IAAXA,WAAW,uBAAXA,WAAW,CAAEY,UAAU,MAAA,IAAA,IAAAtlB,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI;GACxC;AAED,EAAA,IAAMulB,YAAY,gBAChB9kB,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,eACEzM,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAwB,eACrCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAwB,eACrCQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EACE,mFACI,CACH,CACL,eAAAD,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAyB,GAAA,EACrC4kB,cAAc,KAAK,MAAM,IAAIF,WAAW,IAAIA,WAAW,CAACpjB,MAAM,GAAG,CAAC,iBACjEd,KAAA,CAAAC,aAAA,CAACgjB,cAAc,EAAA;AAACjB,IAAAA,KAAK,EAAEkC;GAAY,CAElC,CACF,CACP,CACD;AAED,EAAA,IAAMa,SAAS,gBACb/kB,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,eACEzM,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAA4B,GAAA,CAC1C,eAAAQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAoB,eACjCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAyB,eACtCQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;AAAuB,GAAA,EAAEilB,aAAiB,CACvD;AACE;EACAb,aAAa,iBAAI5jB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,IAAAA,SAAS,EAAC;GAA2B,EAAEokB,aAAsB,CAAC,EAGxFc,MAAM,IAAIf,WAAW,iBAAI3jB,KAAA,CAAAC,aAAA,CAAC6iB,OAAO,EAAA,IAAA,CAC/B,CACL,EAAC,CAAC4B,MAAM,IAAIf,WAAW,iBAAI3jB,KAAA,CAAAC,aAAA,CAAC6iB,OAAO,EAAA,IAAA,CAAG,EACrCsB,cAAc,KAAK,YAAY,IAAIF,WAAW,IAAIA,WAAW,CAACpjB,MAAM,GAAG,CAAC,iBACvEd,KAAA,CAAAC,aAAA,CAACgjB,cAAc,EAAA;AAACjB,IAAAA,KAAK,EAAEkC;GAAY,CAElC,CACP,CACD;AAED,EAAA,IAAIQ,MAAM,EAAE;IACV,oBACE1kB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,MAAAA,SAAS,EAAE,wCAAiCA,SAAS,GAAG,GAAA,CAAAI,MAAA,CAAIJ,SAAS,CAAE,GAAG,EAAE;KAAG,eACrFQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAA2B,KAAA,EACvCsgB,IAAI,iBACH9f,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAAsB,KAAA,eACnCQ,KAAA,CAAAC,aAAA,CAACua,OAAO,EAAKsF,IAAK,CAClB,EAAC2D,SAAS,iBAAIzjB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAAwB,KAAA,EAAEikB,SAAgB,CACrE,CACN,eACDzjB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAyD,eACtEQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAuB,eACpCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;KAAyB,EAAEmlB,QAAQ,CAACC,KAAU,CAC5D,EAAC,CAAAf,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEmB,OAAO,kBACfhlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAqB,eAClCQ,KAAA,CAAAC,aAAA,CAAC4iB,YAAY,EAAA,IAAA,CACb,eAAA7iB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI4jB,OAAO,CAACmB,OAAW,CACpB,CAEJ,CACL,eAAAhlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAyB,eACtCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;AAAyB,KAAA,EAAEmlB,QAAQ,CAACE,UAAe,CACjE,eAAA7kB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAA2B,KAAA,EACvC,CAAAqkB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEoB,KAAK,kBACbjlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAA0B,KAAA,eACvCQ,KAAA,CAAAC,aAAA,CAACyiB,SAAS,MAAA,CACV,eAAA1iB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO4jB,OAAO,CAACoB,KAAY,CACxB,CACN,EACA,CAAApB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEqB,GAAG,kBACXllB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAA0B,KAAA,eACvCQ,KAAA,CAAAC,aAAA,CAAC0iB,OAAO,MAAA,CACR,eAAA3iB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO4jB,OAAO,CAACqB,GAAU,CACtB,CACN,EACA,CAAArB,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEsB,KAAK,kBACbnlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAAC2iB,QAAQ,MAAA,CACT,eAAA5iB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGd,MAAAA,IAAI,EAAE,SAAA,CAAAS,MAAA,CAAUikB,OAAO,CAACsB,KAAK;AAAG,KAAA,EAAEtB,OAAO,CAACsB,KAAS,CACnD,CAEJ,CACF,CACL,EAACpB,UAAU,CAACjjB,MAAM,GAAG,CAAC,iBACpBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAA4B,eACzCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;AAAyB,KAAA,EAAEmlB,QAAQ,CAACZ,UAAe,CACjE,eAAA/jB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;KAA6B,EACxCukB,UAAU,CAACvd,GAAG,CAAC,UAACyb,IAAI,EAAEthB,CAAC,EAAA;;MAAK,oBAC3BX,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,QAAAA,GAAG,EAAE,CAAA9H,EAAA,GAAAojB,IAAI,CAAC9iB,IAAI,mCAAIwB,CAAE;AAACnB,QAAAA,SAAS,EAAC;OAA4B,eAC7DQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;QAAGd,IAAI,EAAE8iB,IAAI,CAAC9iB,IAAK;AAACK,QAAAA,SAAS,EAAC;AAAuB,OAAA,EAClDyiB,IAAI,CAACjf,KACL,CACH,eAAAhD,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,QAAAA,SAAS,EAAC;AAAqB,OAAA,CACjC,CAAC;IACN,CAAA,CACC,CACD,CAEJ,CACF,CACL,EAACslB,YAAY,EACZC,SACK,CAAC;AAEZ,EAAA;EAED,oBACE/kB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,IAAAA,SAAS,EAAE,wCAAiCA,SAAS,GAAG,GAAA,CAAAI,MAAA,CAAIJ,SAAS,CAAE,GAAG,EAAE;GAAG,eACrFQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA2B,GAAA,EACvCsgB,IAAI,iBACH9f,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAsB,GAAA,eACnCQ,KAAA,CAAAC,aAAA,CAACua,OAAO,EAAKsF,IAAK,CAClB,EAAC2D,SAAS,iBAAIzjB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAAwB,GAAA,EAAEikB,SAAgB,CACrE,CACN,eACDzjB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA0B,GAAA,EACtCqkB,OAAO,iBACN7jB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAyB,eACtCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;GAAyB,EAAEmlB,QAAQ,CAACd,OAAY,CAC9D,EAACA,OAAO,CAACmB,OAAO,iBACdhlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAqB,eAClCQ,KAAA,CAAAC,aAAA,CAAC4iB,YAAY,EAAA,IAAA,CACb,eAAA7iB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI4jB,OAAO,CAACmB,OAAW,CACpB,CACN,eACDhlB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAqB,GAAA,CACnC,eAAAQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAA2B,GAAA,EACvCqkB,OAAO,CAACoB,KAAK,iBACZjlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAACyiB,SAAS,MAAA,CACV,eAAA1iB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO4jB,OAAO,CAACoB,KAAY,CACxB,CACN,EACApB,OAAO,CAACqB,GAAG,iBACVllB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAAC0iB,OAAO,MAAA,CACR,eAAA3iB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO4jB,OAAO,CAACqB,GAAU,CACtB,CACN,EACArB,OAAO,CAACsB,KAAK,iBACZnlB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA0B,eACvCQ,KAAA,CAAAC,aAAA,CAAC2iB,QAAQ,MAAA,CACT,eAAA5iB,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGd,IAAAA,IAAI,EAAE,SAAA,CAAAS,MAAA,CAAUikB,OAAO,CAACsB,KAAK;AAAG,GAAA,EAAEtB,OAAO,CAACsB,KAAS,CACnD,CAEJ,CACF,CACN,EACApB,UAAU,CAACjjB,MAAM,GAAG,CAAC,iBACpBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA4B,eACzCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAyB,GAAA,EAAEmlB,QAAQ,CAACZ,UAAe,CACjE,eAAA/jB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;GAA6B,EACxCukB,UAAU,CAACvd,GAAG,CAAC,UAACyb,IAAI,EAAEthB,CAAC,EAAA;;IAAK,oBAC3BX,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,MAAAA,GAAG,EAAE,CAAA9H,EAAA,GAAAojB,IAAI,CAAC9iB,IAAI,mCAAIwB,CAAE;AAACnB,MAAAA,SAAS,EAAC;KAA4B,eAC7DQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;MAAGd,IAAI,EAAE8iB,IAAI,CAAC9iB,IAAK;AAACK,MAAAA,SAAS,EAAC;AAAuB,KAAA,EAClDyiB,IAAI,CAACjf,KACL,CACH,eAAAhD,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;AAAqB,KAAA,CACjC,CAAC;EACN,CAAA,CACC,CACD,CAEJ,CACF,CACL,EAACslB,YAAY,EACZC,SACK,CAAC;AAEb;;ACvfgBK,SAAAA,WAAWA,CAACC,MAAc,EAAEzQ,GAAW,EAAE1G,GAAW,EAAA;AAClE,EAAA,OAAOlB,IAAI,CAAC4H,GAAG,CAAC5H,IAAI,CAACkB,GAAG,CAACmX,MAAM,EAAEzQ,GAAG,CAAC,EAAE1G,GAAG,CAAC;AAC7C;AAEM,SAAUxB,QAAQA,CAACyL,KAAoB,EAAA;EAC3C,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACmN,KAAK,CAACnN,KAAK,CAAC;AACnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACoCA,IAAAoN,iBAAA,gBAAA,YAAA;AAQE,EAAA,SAAAA,iBAAAA,CACElW,QAAqB,EACrBC,QAAwC,EACxCC,OAAsC,EAAA;AADtC,IAAA,IAAAD,QAAA,KAAA,MAAA,EAAA;MAAAA,QAAA,GAAA,EAAwC;AAAA,IAAA;AACxC,IAAA,IAAAC,OAAA,KAAA,MAAA,EAAA;MAAAA,OAAA,GAAA,EAAsC;AAAA,IAAA;IAHxC,IAAAC,KAAA,GAAA,IAAA;;IAPQ,IAAA,CAAAC,KAAK,GAA6B,IAAI;IACtC,IAAA,CAAA+V,aAAa,GAA0C,IAAI;IAC3D,IAAA,CAAAC,eAAe,GAA0B,IAAI;IAC7C,IAAA,CAAAC,KAAK,GAAoD,IAAI;IA0E5D,IAAA,CAAAhW,UAAU,GAAG,YAAA;;MACpB,CAAA7Q,EAAA,GAAA2Q,KAAI,CAACC,KAAK,MAAA,IAAA,IAAA5Q,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE6Q,UAAU,EAAE;MACxB,IAAIF,KAAI,CAAC3F,IAAI,CAACM,QAAQ,EAAEqF,KAAI,CAACmW,aAAa,EAAE;IAC9C,CAAC;IAEQ,IAAA,CAAA5V,UAAU,GAAG,YAAA;;MACpB,CAAAlR,EAAA,GAAA2Q,KAAI,CAACC,KAAK,MAAA,IAAA,IAAA5Q,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEkR,UAAU,EAAE;MACxB,IAAIP,KAAI,CAAC3F,IAAI,CAACM,QAAQ,EAAEqF,KAAI,CAACmW,aAAa,EAAE;IAC9C,CAAC;IAEgB,IAAA,CAAAC,gBAAgB,GAAG,YAAA;;MAClC,CAAA/mB,EAAA,GAAA2Q,KAAI,CAACkB,GAAG,CAACmV,gBAAgB,MAAA,IAAA,IAAAhnB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEiZ,cAAc,CAAC;AAAEC,QAAAA,QAAQ,EAAE;AAAQ,OAAE,CAAC;IACnE,CAAC;AAED;IACS,IAAA,CAAA4N,aAAa,GAAG,YAAA;MACvBnW,KAAI,CAACsW,YAAY,EAAE;AACnBtW,MAAAA,KAAI,CAACgW,aAAa,GAAGO,WAAW,CAACvW,KAAI,CAACO,UAAU,EAAEP,KAAI,CAAC3F,IAAI,CAACmc,gBAAgB,CAAC;IAC/E,CAAC;AAED;IACS,IAAA,CAAAF,YAAY,GAAG,YAAA;AACtB,MAAA,IAAItW,KAAI,CAACgW,aAAa,KAAK,IAAI,EAAE;AAC/BS,QAAAA,aAAa,CAACzW,KAAI,CAACgW,aAAa,CAAC;QACjChW,KAAI,CAACgW,aAAa,GAAG,IAAI;AAC1B,MAAA;IACH,CAAC;IA3FC,IAAI,CAAC3b,IAAI,GAAG;AACVqc,MAAAA,UAAU,EAAE,CAAArnB,EAAA,GAAA0Q,OAAO,CAAC2W,UAAU,mCAAI,OAAO;AACzC/b,MAAAA,QAAQ,EAAE,CAAApL,EAAA,GAAAwQ,OAAO,CAACpF,QAAQ,mCAAI,IAAI;AAClC6b,MAAAA,gBAAgB,EAAE,CAAA/mB,EAAA,GAAAsQ,OAAO,CAACyW,gBAAgB,mCAAI;KAC/C;IACD,IAAI,CAACtV,GAAG,GAAGpB,QAAQ;AACnB,IAAA,IAAI,CAAC6W,KAAK,CAAC9W,QAAQ,CAAC;AACtB,EAAA;AAEQkW,EAAAA,iBAAA,CAAAvkB,SAAA,CAAAmlB,KAAK,GAAb,UAAc9W,QAAqB,EAAA;IAAnC,IAAAG,KAAA,GAAA,IAAA;;IACE,CAAA3Q,EAAA,GAAA,IAAI,CAAC6R,GAAG,CAACQ,OAAO,MAAA,IAAA,IAAArS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEsS,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACzB,UAAU,CAAC;IAC5D,CAAA3Q,EAAA,GAAA,IAAI,CAAC2R,GAAG,CAACU,OAAO,MAAA,IAAA,IAAArS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEoS,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACpB,UAAU,CAAC;IAC5D,CAAA9Q,EAAA,GAAA,IAAI,CAACyR,GAAG,CAAC0V,aAAa,MAAA,IAAA,IAAAnnB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEkS,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACyU,gBAAgB,CAAC;AAExE;AACA;AACA,IAAA,IAAI,CAACF,KAAK,GAAGW,qBAAqB,CAAC,YAAA;AACjC7W,MAAAA,KAAI,CAACkW,KAAK,GAAGW,qBAAqB,CAAC,YAAA;QACjC7W,KAAI,CAACkW,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAACrW,QAAQ,CAACiX,WAAW,EAAE;AAE3B,QAAA,IAAMC,OAAO,GAAGlX,QAAQ,CAACmX,OAAO,CAAc,sBAAsB,CAAC;QACrE,IAAMC,IAAI,GACRF,OAAO,IAAIG,gBAAgB,CAACH,OAAO,CAAC,CAACI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC7f,IAAI,EAAE,KAAK,GAAG,GACnF,GAAG,GACH,GAAG;AAET,QAAA,IAAM8f,OAAO,GAAGpX,KAAI,CAAC3F,IAAI,CAACqc,UAAU,KAAK,MAAM,GAAG,CAACW,IAAiB,EAAE,CAAC,GAAG,EAAE;AAC5ErX,QAAAA,KAAI,CAACC,KAAK,GAAGkB,aAAa,CAACtB,QAAQ,EAAE;AAAEjJ,UAAAA,IAAI,EAAE,IAAI;AAAEqgB,UAAAA,IAAI,EAAAA;SAAE,EAAEG,OAAO,CAAC;AAEnE,QAAA,IAAIpX,KAAI,CAAC3F,IAAI,CAACM,QAAQ,EAAE;UACtBqF,KAAI,CAACmW,aAAa,EAAE;UACpBnW,KAAI,CAACC,KAAK,CAAC4B,EAAE,CAAC,aAAa,EAAE7B,KAAI,CAACsW,YAAY,CAAC;UAC/CtW,KAAI,CAACC,KAAK,CAAC4B,EAAE,CAAC,WAAW,EAAE7B,KAAI,CAACmW,aAAa,CAAC;AAC/C,QAAA;AAED;AACA;AACA,QAAA,IAAMmB,cAAc,GAAGP,OAAO,KAAA,IAAA,IAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAE5G,aAAa,CAAc,iCAAiC,CAAC;QAC7F,IAAI4G,OAAO,IAAIO,cAAc,IAAI,OAAOC,cAAc,KAAK,WAAW,EAAE;AACtE,UAAA,IAAMC,WAAS,GAAG,UAACC,EAAW,EAAA;AAC3BV,YAAAA,OAAuB,CAAC3I,KAAK,CAACsJ,WAAW,CACxC,2BAA2B,EAC3B,EAAA,CAAAtnB,MAAA,CAAIqnB,EAAkB,CAACE,YAAY,EAAA,IAAA,CAAI,CACxC;UACH,CAAC;UACDH,WAAS,CAACF,cAAc,CAAC;UACzBtX,KAAI,CAACiW,eAAe,GAAG,IAAIsB,cAAc,CAAC,UAAChR,OAAO,EAAA;AAChDiR,YAAAA,WAAS,CAACjR,OAAO,CAAC,CAAC,CAAC,CAAC3V,MAAM,CAAC;AAC9B,UAAA,CAAC,CAAC;AACFoP,UAAAA,KAAI,CAACiW,eAAe,CAAC2B,OAAO,CAACN,cAAc,CAAC;AAC7C,QAAA;AAED;AACA;AACA;QACA,IAAIL,IAAI,KAAK,GAAG,EAAE;AAChBJ,UAAAA,qBAAqB,CAAC,YAAA;;YACpB,IAAIhX,QAAQ,CAACiX,WAAW,EAAE,CAAAznB,EAAA,GAAA2Q,KAAI,CAACC,KAAK,MAAA,IAAA,IAAA5Q,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEwoB,MAAM,EAAE;AAChD,UAAA,CAAC,CAAC;AACH,QAAA;AACH,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;EACJ,CAAC;EA+BD9mB,MAAA,CAAA+Q,cAAA,CAAIiU,iBAAA,CAAAvkB,SAAA,EAAA,UAAQ,EAAA;AADZ;IACAiJ,GAAA,EAAA,YAAA;MACE,OAAO,IAAI,CAACwF,KAAK;IACnB,CAAC;;;AAAA,GAAA,CAAA;AAED;AACA8V,EAAAA,iBAAA,CAAAvkB,SAAA,CAAAuQ,OAAO,GAAP,YAAA;;AACE,IAAA,IAAI,IAAI,CAACmU,KAAK,KAAK,IAAI,EAAE;AACvB4B,MAAAA,oBAAoB,CAAC,IAAI,CAAC5B,KAAK,CAAC;MAChC,IAAI,CAACA,KAAK,GAAG,IAAI;AAClB,IAAA;IACD,IAAI,CAACI,YAAY,EAAE;IACnB,CAAAjnB,EAAA,GAAA,IAAI,CAAC4mB,eAAe,MAAA,IAAA,IAAA5mB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE0oB,UAAU,EAAE;IAClC,IAAI,CAAC9B,eAAe,GAAG,IAAI;IAC3B,IAAI,IAAI,CAAChW,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACgC,GAAG,CAAC,aAAa,EAAE,IAAI,CAACqU,YAAY,CAAC;MAChD,IAAI,CAACrW,KAAK,CAACgC,GAAG,CAAC,WAAW,EAAE,IAAI,CAACkU,aAAa,CAAC;AAC/C,MAAA,IAAI,CAAClW,KAAK,CAAC8B,OAAO,EAAE;MACpB,IAAI,CAAC9B,KAAK,GAAG,IAAI;AAClB,IAAA;IACD,CAAA1Q,EAAA,GAAA,IAAI,CAAC2R,GAAG,CAACQ,OAAO,MAAA,IAAA,IAAAnS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEyS,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC9B,UAAU,CAAC;IAC/D,CAAAzQ,EAAA,GAAA,IAAI,CAACyR,GAAG,CAACU,OAAO,MAAA,IAAA,IAAAnS,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEuS,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACzB,UAAU,CAAC;IAC/D,CAAA1Q,EAAA,GAAA,IAAI,CAACqR,GAAG,CAAC0V,aAAa,MAAA,IAAA,IAAA/mB,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEmS,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACoU,gBAAgB,CAAC;EAC7E,CAAC;AACH,EAAA,OAAAL,iBAAC;AAAD,CAAC;;AC1HD;AACA;AACA;IAEaiC,WAAW,GAA+B,UAAC3oB,EAYvD,EAAA;AAXC,EAAA,IAAA4oB,QAAQ,cAAA;IACR1oB,EAAA,GAAAF,EAAA,CAAAsF,QAAa;IAAbA,QAAQ,mBAAG,EAAE,GAAApF,EAAA;IACb2oB,QAAQ,cAAA;IACRC,SAAS,eAAA;IACTC,OAAO,aAAA;IACPC,cAAc,GAAAhpB,EAAA,CAAAgpB,cAAA;IACdC,SAAS,GAAAjpB,EAAA,CAAAipB,SAAA;IACThpB,QAAQ,GAAAD,EAAA,CAAAC,QAAA;IACR4H,KAAK,GAAA7H,EAAA,CAAA6H,KAAA;IACLqhB,KAAK,WAAA;IACL9oB,EAAA,GAAAJ,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAAP,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;AAER,EAAA,IAAAI,EAAA,GAA8BqM,QAAQ,CAAC,KAAK,CAAC;AAA5Csc,IAAAA,UAAU,GAAA3oB,EAAA,CAAA,CAAA,CAAA;AAAE4oB,IAAAA,aAAa,GAAA5oB,EAAA,CAAA,CAAA,CAAmB;AAEnD;AACA,EAAA,IAAM6oB,UAAU,GAAGpoB,OAAO,CAAC6nB,SAAS,CAAC;EACrC,IAAMQ,QAAQ,GAAG,CAACD,UAAU,IAAIpoB,OAAO,CAAC8nB,OAAO,CAAC;EAChD,IAAMQ,MAAM,GAAG,CAACF,UAAU,IAAI,CAACC,QAAQ,IAAIroB,OAAO,CAAC4nB,QAAQ,CAAC;AAE5D;AACA;EACA,IAAM9hB,QAAQ,GAAG9F,OAAO,CAAC2nB,QAAQ,IAAIC,QAAQ,IAAIC,SAAS,IAAIC,OAAO,CAAC;EAEtE,IAAMS,eAAe,GAAGV,SAAS,GAC7B,gCAAA,CAAA/nB,MAAA,CAAiC+nB,SAAS,EAAA,mGAAA,CAAA,CAAA/nB,MAAA,CAAoG+nB,SAAS,EAAA,QAAA,CAAQ,GAC/JxnB,SAAS;AAEb,EAAA,IAAMmoB,aAAa,GAAGV,OAAO,GACzB,iCAAA,CAAAhoB,MAAA,CAAkCgoB,OAAO,EAAA,yCAAA,CAAyC,GAClFznB,SAAS;EAEb,IAAM4R,SAAS,GACbrL,KAAK,KAAKvG,SAAS,IAAI4nB,KAAK,KAAK5nB,SAAS,GACtC,QAAA,CAAAP,MAAA,CAAS8G,KAAK,GAAG,CAAC,EAAA,MAAA,CAAA,CAAA9G,MAAA,CAAOmoB,KAAK,CAAE,GAChC5nB,SAAS;EAEf,IAAMooB,cAAc,GAAG,CACrB,eAAe;AACf;AACAV,EAAAA,cAAc,KACXjiB,QAAQ,GACL,oBAAA,CAAAhG,MAAA,CAAqBioB,cAAc,CAAE,GACrC,sBAAA,CAAAjoB,MAAA,CAAuBioB,cAAc,CAAE,CAAC,EAC9CC,SAAS,IAAI,uBAAA,CAAAloB,MAAA,CAAwBkoB,SAAS,CAAE,EAChDtoB,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AAAST,IAAAA,SAAS,EAAE+oB,cAAe;AAACvV,IAAAA,IAAI,EAAC,UAAU;IAAC,YAAA,EAAYjB;GAAU,eAExE/R,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,sBAAsB;IAAC,aAAA,EAAY;AAAM,GAAA,EACrDioB,QAAQ;AAAA;AACP;AACAznB,EAAAA,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,IAAAA,SAAS,EAAC,sBAAsB;AAChCsG,IAAAA,GAAG,EAAE2hB,QAAS;AACd1hB,IAAAA,GAAG,EAAE5B,QAAS;AACd6B,IAAAA,OAAO,EAAC;AAAO,GAAA,CAElB,EAEAoiB,MAAM,iBACLpoB,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;IACET,SAAS,EAAE,8BAAuBwoB,UAAU,GAAG,8BAA8B,GAAG,EAAE,CAAG;IACrF9hB,QAAQ,EAAA,IAAA;IACRC,KAAK,EAAA,IAAA;IACLC,IAAI,EAAA,IAAA;IACJE,WAAW,EAAA,IAAA;IACXkiB,SAAS,EAAE,YAAA;MAAM,OAAAP,aAAa,CAAC,IAAI,CAAC;AAAnB,IAAA;GAAoB,eAErCjoB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQ6F,IAAAA,GAAG,EAAE4hB;AAAS,GAAA,CACjB,CACR,EAEAQ,UAAU,iBACTloB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAgE,eAC7EQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6F,IAAAA,GAAG,EAAEuiB,eAAgB;AACrBxgB,IAAAA,KAAK,EAAC,uBAAuB;AAC7ByE,IAAAA,KAAK,EAAC,UAAU;AAChB,IAAA,aAAA,EAAY,MAAM;AAClBmc,IAAAA,QAAQ,EAAE;AAAG,GAAA,CAEZ,CACN,EAEAN,QAAQ,iBACPnoB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA8D,eAC3EQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6F,IAAAA,GAAG,EAAEwiB,aAAc;AACnBzgB,IAAAA,KAAK,EAAC,uBAAuB;AAC7ByE,IAAAA,KAAK,EAAC,UAAU;AAChB,IAAA,aAAA,EAAY,MAAM;AAClBmc,IAAAA,QAAQ,EAAE;AAAG,GAAA,CAEZ,CAEJ,CAEL,eACAzoB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAiD,eAC9DQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAgC,EAC5CV,QACE,CACF,CACE,CAAC;AAEd;;AC3HA;AACA;AACA;IAEa4pB,OAAO,GAA2B,UAAC7pB,EAU/C,EAAA;MATCE,EAAA,GAAAF,EAAA,CAAA8pB,MAAW;IAAXA,MAAM,GAAA5pB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACXE,EAAA,GAAAJ,EAAA,CAAAwI,MAAe;IAAfA,MAAM,GAAApI,EAAA,KAAA,MAAA,GAAG,MAAM,GAAAA,EAAA;IACfI,kBAAiB;IAAjBupB,UAAU,GAAAvpB,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACjBE,EAAA,GAAAV,EAAA,CAAAqnB,UAAoB;IAApBA,UAAU,GAAA3mB,EAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,EAAA;IACpBE,EAAA,GAAAZ,EAAA,CAAAgqB,gBAAwB;IAAxBA,gBAAgB,GAAAppB,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACxBqpB,cAAc,GAAAjqB,EAAA,CAAAiqB,cAAA;IACdlkB,EAAA,GAAA/F,EAAA,CAAAsL,QAAe;IAAfA,QAAQ,GAAAvF,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACfE,EAAA,GAAAjG,EAAA,CAAAmnB,gBAAuB;IAAvBA,gBAAgB,GAAAlhB,EAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,EAAA;IACvBI,EAAA,GAAArG,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAA0F,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;AAEd,EAAA,IAAMsN,UAAU,GAAGmW,MAAM,CAAC7nB,MAAM,GAAG,CAAC;AAEpC;AACA,EAAA,IAAMioB,UAAU,GAAG9W,MAAM,CAAc,IAAI,CAAC;AAC5C,EAAA,IAAMC,WAAW,GAAGD,MAAM,CAAiB,IAAI,CAAC;AAChD,EAAA,IAAME,UAAU,GAAGF,MAAM,CAAoB,IAAI,CAAC;AAClD,EAAA,IAAMG,UAAU,GAAGH,MAAM,CAAoB,IAAI,CAAC;AAClD,EAAA,IAAMK,aAAa,GAAGL,MAAM,CAA2B,IAAI,CAAC;AAE5D;AACAS,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAI,CAACR,WAAW,CAACS,OAAO,IAAI,CAACH,UAAU,EAAE;IAEzCF,aAAa,CAACK,OAAO,GAAG,IAAI4S,iBAAiB,CAC3CrT,WAAW,CAACS,OAAO,EACnB;AACEzB,MAAAA,OAAO,EAAE0X,UAAU,GAAGzW,UAAU,CAACQ,OAAO,GAAGxS,SAAS;AACpDiR,MAAAA,OAAO,EAAEwX,UAAU,GAAGxW,UAAU,CAACO,OAAO,GAAGxS;KAC5C,EACD;AAAE+lB,MAAAA,UAAU,EAAAA,UAAA;AAAE/b,MAAAA,QAAQ,EAAAA,QAAA;AAAE6b,MAAAA,gBAAgB,EAAAA;AAAA,KAAE,CAC3C;AAED,IAAA,OAAO,YAAA;;MACL,CAAAnnB,EAAA,GAAAyT,aAAa,CAACK,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE0S,OAAO,EAAE;MAChCe,aAAa,CAACK,OAAO,GAAG,IAAI;IAC9B,CAAC;AACH,EAAA,CAAC,EAAE,CAACH,UAAU,EAAEoW,UAAU,EAAE1C,UAAU,EAAE/b,QAAQ,EAAE6b,gBAAgB,CAAC,CAAC;AAEpE;AACA,EAAA,IAAMJ,gBAAgB,GAAGoD,WAAW,CAAC,YAAA;;IACnC,IAAM3U,IAAI,GAAG,CAAAxV,EAAA,GAAAkqB,UAAU,CAACpW,OAAO,MAAA,IAAA,IAAA9T,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAEoqB,kBAAwC;AACzE5U,IAAAA,IAAI,KAAA,IAAA,IAAJA,IAAI,KAAA,MAAA,GAAA,MAAA,GAAJA,IAAI,CAAEyD,cAAc,CAAC;AAAEC,MAAAA,QAAQ,EAAE;AAAQ,KAAE,CAAC;EAC9C,CAAC,EAAE,EAAE,CAAC;AAEN;AACA,EAAA,IAAMmR,cAAc,GAAG,CACrB,UAAU,EACV,YAAA,CAAAtpB,MAAA,CAAayH,MAAM,CAAE,EACrB,YAAA,CAAAzH,MAAA,CAAasmB,UAAU,CAAE,EACzB1mB,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;AAEZ;EACA,oBACEC,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEiW,UAAW;AAChBvpB,IAAAA,SAAS,EAAE0pB,cAAe;AAC1B,IAAA,aAAA,EAAY,MAAM;IAClB,mBAAA,EAAmBvgB,MAAM,CAAC6J,UAAU,CAAE;AACtC,IAAA,qBAAA,EAAqB0T,UAAW;IAChC,iBAAA,EAAiBvd,MAAM,CAACigB,UAAU;GAAE,eAGpC5oB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,oBAAoB;AAACsT,IAAAA,GAAG,EAAEZ;GAAY,eACnDlS,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,kBAAkB;AAACwT,IAAAA,IAAI,EAAC;GAAM,EAC1C2V,MAAM,CAACniB,GAAG,CAAC,UAAC2iB,KAAK,EAAEziB,KAAK,EAAA;AAAK,IAAA,oBAC5B1G,KAAA,CAAAC,aAAA,CAACunB,WAAW,EAAAtnB,QAAA,CAAA;AACVyG,MAAAA,GAAG,EAAED;AAAM,KAAA,EACPyiB,KAAK,EAAA;AACTziB,MAAAA,KAAK,EAAEA,KAAM;MACbqhB,KAAK,EAAEY,MAAM,CAAC7nB;AAAO,KAAA,CAAA,CACrB;EAN0B,CAO7B,CACE,CACF,CAEL,EACC0R,UAAU,IAAIoW,UAAU,iBACvB5oB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAyB,eACtCQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,oBAAoB;IAAC,YAAA,EAAW;GAAiB,eAC9DQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEX,UAAW;AAChB3S,IAAAA,SAAS,EAAC,gBAAgB;AAC1BF,IAAAA,IAAI,EAAC,QAAQ;IACb,YAAA,EAAW;GAAgB,eAE3BU,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,sBAAsB;IAAC,aAAA,EAAY;AAAM,GAAA,CACnD,CACR,eAAAQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEV,UAAW;AAChB5S,IAAAA,SAAS,EAAC,gBAAgB;AAC1BF,IAAAA,IAAI,EAAC,QAAQ;IACb,YAAA,EAAW;GAAY,eAEvBU,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,sBAAsB;IAAC,aAAA,EAAY;GAAM,CACnD,CACL,CACF,CACN,EAGAqpB,gBAAgB,iBACf7oB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAuB,eACpCQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACET,IAAAA,SAAS,EAAC,2BAA2B;AACrCF,IAAAA,IAAI,EAAC,QAAQ;IACb,YAAA,EAAYwpB,cAAc,KAAA,IAAA,IAAdA,cAAc,KAAA,MAAA,GAAdA,cAAc,GAAI,aAAc;AAC5C1pB,IAAAA,OAAO,EAAEwmB;AAAiB,GAAA,EAEzBkD,cAAc,iBACb9oB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;AAA4B,GAAA,EAAEspB,cAAqB,CACpE,eACD9oB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,4BAA4B;IAAC,aAAA,EAAY;GAAM,CACzD,CACL,CAEA,CAAC;AAEd;;ACnKA;AACA;AACA,IAAM4pB,kBAAkB,GAAG,oBAAoB;AAE/C;AACA,IAAMC,cAAc,GAAG,CAAC;AAExB,IAAMC,WAAW,gBACftpB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,EAAAA,SAAS,EAAC,wBAAwB;AAClC4H,EAAAA,KAAK,EAAC,IAAI;AACVC,EAAAA,MAAM,EAAC,IAAI;AACXsD,EAAAA,OAAO,EAAC,WAAW;AACnBC,EAAAA,IAAI,EAAC,MAAM;AACXC,EAAAA,KAAK,EAAC,4BAA4B;AAClC,EAAA,aAAA,EAAY,MAAM;AAClBC,EAAAA,SAAS,EAAC;AAAO,CAAA,eAEjB9K,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACE+V,EAAAA,CAAC,EAAC,gBAAgB;AAClBoF,EAAAA,MAAM,EAAC,cAAc;AACrBC,EAAAA,WAAW,EAAC,KAAK;AACjBC,EAAAA,aAAa,EAAC,OAAO;AACrBC,EAAAA,cAAc,EAAC;AAAO,CAAA,CAErB,CACN;AAqBM,IAAMgO,OAAO,GAA2B,UAAC1qB,EAM/C,EAAA;;MALCiT,KAAK,GAAAjT,EAAA,CAAAiT,KAAA;IACL0X,QAAQ,GAAA3qB,EAAA,CAAA2qB,QAAA;IACRnqB,EAAA,GAAAR,EAAA,CAAAG,OAAmB;IAAnBA,OAAO,GAAAK,EAAA,KAAA,MAAA,GAAG,SAAS,KAAA;IACnBoqB,kBAAkB,wBAAA;IAClBlqB,EAAA,GAAAV,EAAA,CAAAW,SAAc;IAAdA,SAAS,GAAAD,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;EAER,IAAAE,EAAA,GAA8BiM,QAAQ,CAAS,CAAAzM,EAAA,GAAAuqB,QAAQ,KAAA,IAAA,IAARA,QAAQ,KAAA,MAAA,GAARA,QAAQ,GAAI,CAAAzqB,EAAA,GAAA+S,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA/S,EAAA,KAAA,MAAA,GAAA,MAAA,GAAAA,EAAA,CAAE8D,EAAE,MAAA,IAAA,IAAA5D,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAE,CAAC;AAA7EyqB,IAAAA,UAAU,GAAAjqB,EAAA,CAAA,CAAA,CAAA;AAAEkqB,IAAAA,aAAa,GAAAlqB,EAAA,CAAA,CAAA,CAAoD;AACpF;AACA;AACA;AACM,EAAA,IAAAmF,EAAA,GAA4B8G,QAAQ,CAAC,KAAK,CAAC;AAA1Cke,IAAAA,SAAS,GAAAhlB,EAAA,CAAA,CAAA,CAAA;AAAEilB,IAAAA,YAAY,GAAAjlB,EAAA,CAAA,CAAA,CAAmB;AAC3C,EAAA,IAAAE,EAAA,GAA0B4G,QAAQ,CAAC,KAAK,CAAC;AAAxCoe,IAAAA,QAAQ,GAAAhlB,EAAA,CAAA,CAAA,CAAA;AAAEilB,IAAAA,WAAW,GAAAjlB,EAAA,CAAA,CAAA,CAAmB;AAC/C;AACA;AACM,EAAA,IAAAI,EAAA,GAAgCwG,QAAQ,CAAC,KAAK,CAAC;AAA9Cse,IAAAA,WAAW,GAAA9kB,EAAA,CAAA,CAAA,CAAA;AAAE+kB,IAAAA,cAAc,GAAA/kB,EAAA,CAAA,CAAA,CAAmB;AAC/C,EAAA,IAAAsG,EAAA,GAA4BE,QAAQ,CAAC,KAAK,CAAC;AAA1Cwe,IAAAA,SAAS,GAAA1e,EAAA,CAAA,CAAA,CAAA;AAAE2e,IAAAA,YAAY,GAAA3e,EAAA,CAAA,CAAA,CAAmB;AAEjD,EAAA,IAAM4e,OAAO,GAAGnY,MAAM,CAAuC,EAAE,CAAC;AAChE,EAAA,IAAMoY,QAAQ,GAAGpY,MAAM,CAA0B,IAAI,CAAC;AAEtD,EAAA,IAAMqY,UAAU,GAAGtrB,OAAO,KAAK,UAAU;AAEzC,EAAA,IAAMurB,aAAa,GAAGvd,IAAI,CAACkB,GAAG,CAC5B,CAAC,EACD4D,KAAK,CAAC0Y,SAAS,CAAC,UAAC7Y,IAAI,EAAA;AAAK,IAAA,OAAAA,IAAI,CAAC9O,EAAE,KAAK6mB,UAAU;AAAtB,EAAA,CAAsB,CAAC,CAClD;AAEDhX,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAM+X,GAAG,GAAG9S,MAAM,CAACC,UAAU,CAACwR,kBAAkB,CAAC;AACjD,IAAA,IAAMsB,IAAI,GAAG,YAAA;AAAY,MAAA,OAAAX,WAAW,CAACU,GAAG,CAAC5S,OAAO,CAAC;IAAxB,CAAwB;AACjD6S,IAAAA,IAAI,EAAE;AACND,IAAAA,GAAG,CAACtZ,gBAAgB,CAAC,QAAQ,EAAEuZ,IAAI,CAAC;AACpC,IAAA,OAAO,YAAA;AAAM,MAAA,OAAAD,GAAG,CAACjZ,mBAAmB,CAAC,QAAQ,EAAEkZ,IAAI,CAAC;IAAvC,CAAuC;EACtD,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,IAAMC,YAAY,GAAG,YAAA;AACnB,IAAA,IAAMC,KAAK,GAAGP,QAAQ,CAAC1X,OAAO;AAC9B;AACA;AACA,IAAA,IAAI,CAACiY,KAAK,IAAId,QAAQ,EAAE;MACtBG,cAAc,CAAC,KAAK,CAAC;MACrBE,YAAY,CAAC,KAAK,CAAC;AACnB,MAAA;AACD,IAAA;IAED,IAAMU,MAAM,GAAGP,UAAU,GAAGM,KAAK,CAACE,SAAS,GAAGF,KAAK,CAACG,UAAU;IAC9D,IAAMC,OAAO,GAAGV,UAAU,GAAGM,KAAK,CAACK,YAAY,GAAGL,KAAK,CAACM,WAAW;IACnE,IAAMnD,KAAK,GAAGuC,UAAU,GAAGM,KAAK,CAACO,YAAY,GAAGP,KAAK,CAACQ,WAAW;AAEjEnB,IAAAA,cAAc,CAACY,MAAM,GAAGxB,cAAc,CAAC;IACvCc,YAAY,CAACU,MAAM,GAAGG,OAAO,GAAGjD,KAAK,GAAGsB,cAAc,CAAC;EACzD,CAAC;AAED3W,EAAAA,SAAS,CAAC,YAAA;AACRiY,IAAAA,YAAY,EAAE;EAChB,CAAC,EAAE,CAACb,QAAQ,EAAEQ,UAAU,EAAExY,KAAK,EAAEyY,aAAa,CAAC,CAAC;AAEhD7X,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAMkY,KAAK,GAAGP,QAAQ,CAAC1X,OAAO;AAC9B,IAAA,IAAI,CAACiY,KAAK,IAAI,OAAO7D,cAAc,KAAK,WAAW,EAAE;AACrD;AACA;AACA,IAAA,IAAMsE,QAAQ,GAAG,IAAItE,cAAc,CAAC,YAAA;MAAM,OAAA4D,YAAY,EAAE;AAAd,IAAA,CAAc,CAAC;AACzDU,IAAAA,QAAQ,CAACjE,OAAO,CAACwD,KAAK,CAAC;AACvB,IAAA,OAAO,YAAA;AAAM,MAAA,OAAAS,QAAQ,CAAC9D,UAAU,EAAE;IAArB,CAAqB;AACpC,EAAA,CAAC,EAAE,CAACuC,QAAQ,EAAEQ,UAAU,CAAC,CAAC;AAE1B5X,EAAAA,SAAS,CAAC,YAAA;;AACR;AACA;AACA;IACA,IAAI4Y,SAAS,GAAG,KAAK;IACrB,CAAAzsB,EAAA,GAAAwd,QAAQ,CAACkP,KAAK,0CAAEC,KAAK,CAACC,IAAI,CAAC,YAAA;AACzB,MAAA,IAAI,CAACH,SAAS,EAAEX,YAAY,EAAE;AAChC,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,YAAA;AACLW,MAAAA,SAAS,GAAG,IAAI;IAClB,CAAC;AACH,EAAA,CAAC,EAAE,CAACxB,QAAQ,EAAEQ,UAAU,CAAC,CAAC;AAE1B,EAAA,IAAMoB,WAAW,GAAG,UAAC5a,SAAiB,EAAA;AACpC,IAAA,IAAM8Z,KAAK,GAAGP,QAAQ,CAAC1X,OAAO;IAC9B,IAAI,CAACiY,KAAK,EAAE;AACZ;IACA,IAAMI,OAAO,GAAGV,UAAU,GAAGM,KAAK,CAACK,YAAY,GAAGL,KAAK,CAACM,WAAW;IACnE,IAAMS,IAAI,GAAG3e,IAAI,CAACkB,GAAG,CAAC8c,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC;AACvC,IAAA,IAAIV,UAAU,EAAE;AACdM,MAAAA,KAAK,CAACE,SAAS,IAAIha,SAAS,GAAG6a,IAAI;AACpC,IAAA,CAAA,MAAM;AACLf,MAAAA,KAAK,CAACG,UAAU,IAAIja,SAAS,GAAG6a,IAAI;AACrC,IAAA;EACH,CAAC;AAED;AACA;AACA;AACA,EAAA,IAAMC,WAAW,GAAG,UAAC1Q,KAAuC,EAAA;AAC1D,IAAA,IAAIA,KAAK,CAAC9a,MAAM,KAAK8a,KAAK,CAAC2Q,aAAa,EAAE;AAC1C,IAAA,IAAMjB,KAAK,GAAGP,QAAQ,CAAC1X,OAAO;IAC9B,IAAI,CAACiY,KAAK,EAAE;AAEZ,IAAA,IAAMkB,IAAI,GAAGlB,KAAK,CAACpT,qBAAqB,EAAE;AAC1C,IAAA,IAAMuU,cAAc,GAAGzB,UAAU,GAC7BpP,KAAK,CAAC8Q,OAAO,GAAGF,IAAI,CAACrU,GAAG,GAAGqU,IAAI,CAACzkB,MAAM,GAAG,CAAC,GAC1C6T,KAAK,CAAC+Q,OAAO,GAAGH,IAAI,CAACI,IAAI,GAAGJ,IAAI,CAAC1kB,KAAK,GAAG,CAAC;AAE9CskB,IAAAA,WAAW,CAACK,cAAc,GAAG,EAAE,GAAG,CAAC,CAAC;EACtC,CAAC;AAED,EAAA,IAAMI,MAAM,GAAG,UAACzlB,KAAa,EAAE0lB,SAAkB,EAAA;AAC/C,IAAA,IAAMza,IAAI,GAAGG,KAAK,CAACpL,KAAK,CAAC;IACzB,IAAI,CAACiL,IAAI,EAAE;AACXgY,IAAAA,aAAa,CAAChY,IAAI,CAAC9O,EAAE,CAAC;IACtBgnB,YAAY,CAAC,KAAK,CAAC;IACnB,IAAMwC,GAAG,GAAGjC,OAAO,CAACzX,OAAO,CAAChB,IAAI,CAAC9O,EAAE,CAAC;AACpC;AACAwpB,IAAAA,GAAG,aAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAEvU,cAAc,CAAC;AAAEE,MAAAA,KAAK,EAAE,SAAS;AAAEsU,MAAAA,MAAM,EAAE;AAAS,KAAE,CAAC;AAC5D,IAAA,IAAIF,SAAS,EAAEC,GAAG,aAAHA,GAAG,KAAA,MAAA,GAAA,MAAA,GAAHA,GAAG,CAAE7O,KAAK,EAAE;EAC7B,CAAC;AAED,EAAA,IAAM+O,KAAK,GAAG,UAAC7lB,KAAa,EAAA;AAC1B,IAAA,IAAIojB,QAAQ,IAAIpjB,KAAK,KAAK6jB,aAAa,EAAE;MACvCV,YAAY,CAAC,UAACtN,IAAI,EAAA;AAAK,QAAA,OAAA,CAACA,IAAI;AAAL,MAAA,CAAK,CAAC;AAC7B,MAAA;AACD,IAAA;AACD4P,IAAAA,MAAM,CAACzlB,KAAK,EAAE,KAAK,CAAC;EACtB,CAAC;AAED;AACA,EAAA,IAAM8lB,SAAS,GAAG,UAACtR,KAAyC,EAAExU,KAAa,EAAA;AACzE,IAAA,IAAM4N,IAAI,GAAGxC,KAAK,CAAChR,MAAM,GAAG,CAAC;IAE7B,QAAQoa,KAAK,CAACvU,GAAG;AACf,MAAA,KAAK,YAAY;AACjB,MAAA,KAAK,WAAW;QACduU,KAAK,CAAC/O,cAAc,EAAE;AACtBggB,QAAAA,MAAM,CAAC5B,aAAa,KAAKjW,IAAI,GAAG,CAAC,GAAGiW,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC;AAC5D,QAAA;AACF,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,SAAS;QACZrP,KAAK,CAAC/O,cAAc,EAAE;AACtBggB,QAAAA,MAAM,CAAC5B,aAAa,KAAK,CAAC,GAAGjW,IAAI,GAAGiW,aAAa,GAAG,CAAC,EAAE,IAAI,CAAC;AAC5D,QAAA;AACF,MAAA,KAAK,MAAM;QACTrP,KAAK,CAAC/O,cAAc,EAAE;AACtBggB,QAAAA,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC;AACf,QAAA;AACF,MAAA,KAAK,KAAK;QACRjR,KAAK,CAAC/O,cAAc,EAAE;AACtBggB,QAAAA,MAAM,CAAC7X,IAAI,EAAE,IAAI,CAAC;AAClB,QAAA;AACF,MAAA,KAAK,OAAO;AACZ,MAAA,KAAK,GAAG;QACN4G,KAAK,CAAC/O,cAAc,EAAE;QACtBogB,KAAK,CAAC7lB,KAAK,CAAC;AACZ,QAAA;AAGH;EACH,CAAC;AAED,EAAA,IAAM4B,SAAS,GAAG,CAChB,UAAU,EACVgiB,UAAU,GAAG,oBAAoB,GAAG,EAAE,EACtCN,WAAW,GAAG,wBAAwB,GAAG,EAAE,EAC3CE,SAAS,GAAG,sBAAsB,GAAG,EAAE,EACvC1qB,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC;EAEZ,oBACEC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAE8I,SAAU;AAAClJ,IAAAA,OAAO,EAAEwsB;GAAY,eAC9C5rB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEuX,QAAS;AACd7qB,IAAAA,SAAS,EAAC,mBAAmB;AAC7BwT,IAAAA,IAAI,EAAC,SAAS;AACd,IAAA,YAAA,EAAYyW,kBAAmB;AAC/B,IAAA,sBAAA,EAAqB,OAAO;AAC5BgD,IAAAA,QAAQ,EAAE9B;GAAa,EAEtB7Y,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;AACrB,IAAA,IAAMgmB,QAAQ,GAAGhmB,KAAK,KAAK6jB,aAAa;IACxC,oBACEvqB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;MACE0G,GAAG,EAAEgL,IAAI,CAAC9O,EAAG;AACbiQ,MAAAA,GAAG,EAAE,UAAC6Z,IAAI,EAAA;QACRvC,OAAO,CAACzX,OAAO,CAAChB,IAAI,CAAC9O,EAAE,CAAC,GAAG8pB,IAAI;MACjC,CAAE;AACF3Z,MAAAA,IAAI,EAAC,KAAK;MACVnQ,EAAE,EAAE,UAAA,CAAAjD,MAAA,CAAW+R,IAAI,CAAC9O,EAAE,CAAG;MACzBrD,SAAS,EAAE,eAAA,CAAAI,MAAA,CAAgB8sB,QAAQ,GAAG,wBAAwB,GAAG,EAAE,CAAG;AACtE,MAAA,eAAA,EAAe,uBAAgB/a,IAAI,CAAC9O,EAAE,CAAG;MACzC,eAAA,EAAe6pB;AACf;AACA;AAAA;AACA,MAAA,eAAA,EAAe5C,QAAQ,GAAG4C,QAAQ,IAAI,CAAC9C,SAAS,GAAGzpB,SAAU;AAC7DsoB,MAAAA,QAAQ,EAAEiE,QAAQ,GAAG,CAAC,GAAG,EAAG;MAC5BttB,OAAO,EAAE,YAAA;QAAM,OAAAmtB,KAAK,CAAC7lB,KAAK,CAAC;MAAZ,CAAa;AAC5B8lB,MAAAA,SAAS,EAAE,UAACtR,KAAK,EAAA;AAAK,QAAA,OAAAsR,SAAS,CAACtR,KAAK,EAAExU,KAAK,CAAC;AAAvB,MAAA;KAAwB,eAE9C1G,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAAqB,KAAA,EAAEmS,IAAI,CAAC9J,KAAY,CACxD,eAAA7H,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,oBAAoB;MAAC,aAAA,EAAY;KAAM,EACpD8pB,WACG,CACJ,CAAC;EAET,CAAC,CACC,CAEJ,EAACxX,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;AACrB,IAAA,IAAMgmB,QAAQ,GAAGhmB,KAAK,KAAK6jB,aAAa;IACxC,oBACEvqB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;MACE0G,GAAG,EAAEgL,IAAI,CAAC9O,EAAG;MACbA,EAAE,EAAE,eAAA,CAAAjD,MAAA,CAAgB+R,IAAI,CAAC9O,EAAE,CAAG;AAC9BmQ,MAAAA,IAAI,EAAC,UAAU;AACf,MAAA,iBAAA,EAAiB,UAAA,CAAApT,MAAA,CAAW+R,IAAI,CAAC9O,EAAE,CAAG;AACtC4lB,MAAAA,QAAQ,EAAE,CAAE;MACZjpB,SAAS,EAAE,CACT,iBAAiB,EACjBktB,QAAQ,GAAG,yBAAyB,GAAG,EAAE,EACzCA,QAAQ,IAAI9C,SAAS,GAAG,4BAA4B,GAAG,EAAE,CAC1D,CACE/pB,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;KAAE,EAEZ4R,IAAI,CAAC1I,OACH,CAAC;AAEV,EAAA,CAAC,CACE,CAAC;AAEV,CAAC;;ACnQD;;;AAGG;IACU2jB,QAAQ,GAA4B,UAAC/tB,EASjD,EAAA;AARC,EAAA,IAAAguB,OAAO,GAAAhuB,EAAA,CAAAguB,OAAA;IACPlW,IAAI,GAAA9X,EAAA,CAAA8X,IAAA;IACJ5X,EAAA,GAAAF,EAAA,CAAAiuB,gBAA4B;IAA5BA,gBAAgB,GAAA/tB,EAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,EAAA;IAC5BE,EAAA,GAAAJ,EAAA,CAAAkuB,YAAsB;IAAtBA,YAAY,GAAA9tB,EAAA,KAAA,MAAA,GAAG,OAAO,GAAAA,EAAA;IACtBI,EAAA,GAAAR,EAAA,CAAAmuB,iBAAyB;IAAzBA,iBAAiB,mBAAG,KAAK,GAAA3tB,EAAA;IACzB0I,OAAO,aAAA;IACPlF,EAAE,GAAAhE,EAAA,CAAAgE,EAAA;IACFrD,SAAS,GAAAX,EAAA,CAAAW,SAAA;AAET,EAAA,IAAMwC,gBAAgB,GAAG,CACvB,aAAa,EACb,mBAAA,CAAApC,MAAA,CAAoBktB,gBAAgB,CAAE,EACtC,eAAA,CAAAltB,MAAA,CAAgBmtB,YAAY,CAAE,EAC9B,sBAAA,CAAAntB,MAAA,CAAuBotB,iBAAiB,CAAE,EAC1CxtB,SAAS,CACV,CAACK,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;AAE3B;AACA;AACA;AACA,EAAA,IAAMktB,UAAU,GACdJ,OAAO,CAAC/rB,MAAM,GAAG,CAAC,GAAG;IAAEosB,QAAQ,EAAE,EAAA,CAAAttB,MAAA,CAAGitB,OAAO,CAAC/rB,MAAM,GAAG,GAAG,EAAA,IAAA;AAAI,GAAE,GAAGX,SAAS;AAE5E,EAAA,oBACEH,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,EACG1E,OAAO,gBAAG/H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAe,GAAA,EAAEuI,OAAa,CAAC,GAAG,IAAI,eAChE/H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAK4C,IAAAA,EAAE,EAAEA,EAAG;AAACrD,IAAAA,SAAS,EAAEwC;GAAiB,eACvChC,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAO2d,IAAAA,KAAK,EAAEqP;AAAW,GAAA,eACvBjtB,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA,IAAA,eACED,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EACG4sB,OAAO,CAACrmB,GAAG,CAAC,UAAC2mB,IAAI,EAAEzmB,KAAK,EAAA;IAAK,oBAC5B1G,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,MAAAA,GAAG,EAAE,SAAA,CAAA/G,MAAA,CAAU8G,KAAK;AAAG,KAAA,EAAEymB,IAAS,CAAC;EADX,CAE7B,CACC,CACJ,EAACxW,IAAI,CAACnQ,GAAG,CAAC,UAAC4mB,GAAG,EAAEC,QAAQ,EAAA;IAAK,oBAC3BrtB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,MAAAA,GAAG,EAAE,MAAA,CAAA/G,MAAA,CAAOytB,QAAQ;KAAG,EACxBD,GAAG,CAAC5mB,GAAG,CAAC,UAAC2mB,IAAI,EAAEG,SAAS,EAAA;MAAK,oBAC5BttB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAI0G,QAAAA,GAAG,EAAE,OAAA,CAAA/G,MAAA,CAAQytB,QAAQ,EAAA,GAAA,CAAA,CAAAztB,MAAA,CAAI0tB,SAAS;AAAG,OAAA,EAAEH,IAAS,CAAC;AADzB,IAAA,CAE7B,CACC,CAAC;AALsB,EAAA,CAM5B,CACI,CACF,CACJ,CACP,CAAG;AAEP;;ACzDO,IAAMI,gBAAgB,GAAoC,UAAC1uB,EAajE,EAAA;MAZCE,EAAA,GAAAF,EAAA,CAAAgE,EAAiB;IAAjBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,YAAY,KAAA;IACjBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACLwqB,QAAQ,GAAA3uB,EAAA,CAAA2uB,QAAA;IACRrQ,WAAW,GAAAte,EAAA,CAAAse,WAAA;IACXle,EAAA,GAAAJ,EAAA,CAAA4uB,YAAiB;IAAjBA,YAAY,GAAAxuB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACjBI,EAAA,GAAAR,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAruB,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IAChBE,EAAA,GAAAV,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAK,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBmC,KAAK,WAAA;IACLisB,YAAY,GAAA9uB,EAAA,CAAA8uB,YAAA;IACZC,SAAS,GAAA/uB,EAAA,CAAA+uB,SAAA;IACTC,SAAS,GAAAhvB,EAAA,CAAAgvB,SAAA;IACT/rB,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;AAEJ,EAAA,IAAMgsB,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GAAG,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAC1DN,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;EAEzB,oBACEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAiD,eAC9DQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,MAAM;AACXE,IAAAA,SAAS,EAAC,sBAAsB;AAChCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3BtQ,IAAAA,WAAW,EAAEA,WAAY;AACzBe,IAAAA,YAAY,EAAEyP,YAAa;AAC3BC,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,SAAS,EAAEA,SAAU;AACrB,IAAA,kBAAA,EAAkBG,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;AAAS,GAAA,CAErB,EAACsuB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;AChEM,IAAMwsB,iBAAiB,GAAqC,UAACrvB,EAWnE,EAAA;AAVC,EAAA,IAAAE,EAAA,GAAAF,EAAA,CAAAgE,EAAkB;IAAlBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,aAAa,GAAAA,EAAA;IAClBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACLwqB,QAAQ,GAAA3uB,EAAA,CAAA2uB,QAAA;IACRrQ,WAAW,GAAAte,EAAA,CAAAse,WAAA;IACXle,oBAAiB;IAAjBwuB,YAAY,mBAAG,EAAE,GAAAxuB,EAAA;IACjBI,EAAA,GAAAR,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAruB,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IAChBE,EAAA,GAAAV,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAK,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBmC,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLmsB,SAAS,GAAAhvB,EAAA,CAAAgvB,SAAA;IACT/rB,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;AAEJ,EAAA,IAAMgsB,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GAAG,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAC1DN,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;EAEzB,oBACEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAkD,eAC/DQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,OAAO;AACZE,IAAAA,SAAS,EAAC,sBAAsB;AAChCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3BtQ,IAAAA,WAAW,EAAEA,WAAY;AACzBe,IAAAA,YAAY,EAAC,OAAO;AACpB2P,IAAAA,SAAS,EAAEA,SAAU;AACrB,IAAA,kBAAA,EAAkBG,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;AAAS,GAAA,CAErB,EAACsuB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;AC1E+D,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,aAAa,CAAC,yHAAyH,CAAC,gBAAgB,CAAC,wHAAwH,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC,CAAghB,IAAI,EAAE,CAAC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA2N,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAkE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,OAAM,MAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,MAAE,CAAC,OAAM,KAAE,CAAC,CAAiE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAACysB,MAAE,EAAE,CAAC,CAAC,CAACA,MAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAACC,WAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAOC,OAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,QAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,MAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,MAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAACC,WAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,WAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,KAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,WAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAM,CAAC,OAAO,CAAC,KAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAE,CAAC,sBAAsB,CAAC,KAAE,CAAC,aAAa,CAAC,KAAE,CAAC,wBAAwB,CAAC,KAAE,CAAC,iBAAiB,CAAC,KAAE,CAAC,iBAAiB,CAAC,KAAE,CAAC,SAAS,CAAC,CAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,MAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAACC,WAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,WAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,0DAA0D,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,OAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,SAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACF,WAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,0DAA0D,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,GAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACG,QAAE,CAAC,KAAE,CAAC,CAAC,OAAOD,SAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,8CAA8C,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAM,MAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,2CAA2C,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAE,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAE,CAAC,EAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAE,CAAC,EAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,OAAM,MAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,QAAQ,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAE,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAuB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAOE,KAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,EAAE,CAAC,CAAC,qDAAqD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAOA,KAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAE,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAmG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAACC,MAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAACA,MAAE,EAAE,CAAC,CAAC,CAACC,OAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACD,MAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAACE,WAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,QAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAACD,WAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,CAAC,CAAC,CAAC,CAACA,WAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOE,SAAE,CAAC,IAAI,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,SAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,SAAE,CAAC,IAAI,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,KAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,2BAA2B,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAOA,KAAC,CAAC,aAAa,CAACA,KAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,2BAA2B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,sCAAsC,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,EAAE,gDAAgD,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,iDAAiD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,mDAAmD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,gDAAgD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,mDAAmD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAACC,KAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,QAAE,CAAC,KAAE,CAAC,CAAC,CAAC,CAACC,OAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,MAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAACH,KAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,yCAAyC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,qCAAqC,CAAC,CAAC,EAAE,+CAA+C,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,yCAAyC,CAAC,CAAC,EAAE,mDAAmD,CAAC,CAAC,EAAE,iDAAiD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,EAAE,wCAAwC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOA,KAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAACA,KAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAE,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAuB,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAGI,KAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,6BAA6B,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAA2FC,UAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAACC,WAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAACA,WAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAOC,mBAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACC,KAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAEA,KAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAACA,KAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;ACAp70B;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAUH;AACA,IAAMC,SAAS,GAAkBC,CAA8B,CAC5DvpB,GAAG,CAAC,UAACwpB,CAAC,EAAA;EACL,IAAMvvB,CAAC,GAAGuvB,CAAa;EACvB,OAAO;AAAEluB,IAAAA,IAAI,EAAErB,CAAC,CAAC,CAAC,CAAC;AAAEwvB,IAAAA,IAAI,EAAExvB,CAAC,CAAC,CAAC,CAAC;IAAEyvB,QAAQ,EAAEzvB,CAAC,CAAC,CAAC;GAAG;AACnD,CAAC,CAAC,CACDZ,MAAM,CAAC,UAACmwB,CAAa;EAAK,OAAA,CAAC,CAACA,CAAC,CAACC,IAAI,IAAI,CAAC,CAACD,CAAC,CAACE,QAAQ;AAAxB,CAAwB,CAAC;AAEtD,IAAMC,YAAY,GAAG,IAAI;AAEzB;AACA,SAASC,SAASA,CAACH,IAAY,EAAA;AAC7B,EAAA,OAAOA,IAAI,CACRI,WAAW,EAAE,CACb/qB,OAAO,CAAC,QAAQ,EAAE,UAACgrB,EAAE;AAAK,IAAA,OAAA3nB,MAAM,CAAC4nB,aAAa,CAAC,OAAO,GAAGD,EAAE,CAACE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAArD,EAAA,CAAqD,CAAC;AACrF;AAEA,SAASC,WAAWA,CAACR,IAAY,EAAA;EAC/B,IAAM7vB,MAAM,GAAG,CAAC6vB,IAAI,IAAI,EAAE,EAAE5sB,WAAW,EAAE;AACzC,EAAA,KAAK,IAAI1C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmvB,SAAS,CAAChvB,MAAM,EAAEH,CAAC,EAAE,EAAE;IACzC,IAAImvB,SAAS,CAACnvB,CAAC,CAAC,CAACsvB,IAAI,KAAK7vB,MAAM,EAAE;MAChC,OAAO0vB,SAAS,CAACnvB,CAAC,CAAC;AACpB,IAAA;AACF,EAAA;AACD,EAAA,OAAOR,SAAS;AAClB;AAEA;;;;AAIG;AACG,SAAUuwB,cAAcA,CAACnZ,IAAuB,EAAA;EACpD,IAAI,CAACA,IAAI,EAAE;AACT,IAAA;AACD,EAAA;AACD,EAAA,IAAMoZ,MAAM,GAAGpZ,IAAI,CAAC3E,gBAAgB,CAAC,mBAAmB,CAAC;AACzD,EAAA,KAAK,IAAIjS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgwB,MAAM,CAAC7vB,MAAM,EAAEH,CAAC,EAAE,EAAE;AACtC,IAAA,IAAMiwB,KAAK,GAAGD,MAAM,CAAChwB,CAAC,CAAqB;AAC3C,IAAA,IAAIiwB,KAAK,CAACpK,OAAO,CAAC,4BAA4B,CAAC,EAAE;MAC/CqK,OAAO,CAACD,KAAK,CAAC;AACf,IAAA;AACF,EAAA;AACH;AAEA;;;AAGG;AACG,SAAUE,WAAWA,CAACF,KAAuB,EAAA;AACjD,EAAA,IAAMG,IAAI,GAAGH,KAAK,CAACI,YAAY,CAAC,gBAAgB,CAAC;EACjD,IAAI,CAACD,IAAI,EAAE;IACT,OAAOH,KAAK,CAACzY,KAAK;AACnB,EAAA;AACD,EAAA,IAAM8Y,QAAQ,GAAG,CAACL,KAAK,CAACzY,KAAK,IAAI,EAAE,EAAE7S,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EACvD,OAAO2rB,QAAQ,GAAG,GAAG,GAAGF,IAAI,GAAGE,QAAQ,GAAG,EAAE;AAC9C;AAEA,SAASJ,OAAOA,CAACD,KAAuB,EAAA;AACtC,EAAA,IAAIA,KAAK,CAACI,YAAY,CAAC,iBAAiB,CAAC,KAAK,MAAM,IAAI,CAACJ,KAAK,CAACnR,aAAa,EAAE;AAC5E,IAAA;AACD,EAAA;AACDmR,EAAAA,KAAK,CAACngB,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAE7C,EAAA,IAAMygB,WAAW,GAAG,CAACN,KAAK,CAACI,YAAY,CAAC,cAAc,CAAC,IAAIb,YAAY,EAAE9sB,WAAW,EAAE;AACtF,EAAA,IAAI6M,QAAQ,GAAGugB,WAAW,CAACS,WAAW,CAAC,IAAIT,WAAW,CAACN,YAAY,CAAC,IAAIL,SAAS,CAAC,CAAC,CAAC;AAEpF;AACA;AACA,EAAA,IAAIqB,OAAoB;EACxB,IAAIP,KAAK,CAACnR,aAAa,CAAClP,SAAS,CAAC6L,QAAQ,CAAC,cAAc,CAAC,EAAE;IAC1D+U,OAAO,GAAGP,KAAK,CAACnR,aAAa;AAC9B,EAAA,CAAA,MAAM;AACL0R,IAAAA,OAAO,GAAG9U,QAAQ,CAACpc,aAAa,CAAC,KAAK,CAAC;IACvCkxB,OAAO,CAAC3xB,SAAS,GAAG,cAAc;IAClCoxB,KAAK,CAACnR,aAAa,CAAC2R,YAAY,CAACD,OAAO,EAAEP,KAAK,CAAC;AAChDO,IAAAA,OAAO,CAACE,WAAW,CAACT,KAAK,CAAC;AAC3B,EAAA;AAED,EAAA,IAAMpgB,MAAM,GAAG6L,QAAQ,CAACpc,aAAa,CAAC,QAAQ,CAAC;EAC/CuQ,MAAM,CAAClR,IAAI,GAAG,QAAQ;EACtBkR,MAAM,CAAChR,SAAS,GAAG,sBAAsB;AACzCgR,EAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC;AAC/CD,EAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAE7C,EAAA,IAAM6gB,QAAQ,GAAGjV,QAAQ,CAACpc,aAAa,CAAC,KAAK,CAAC;EAC9CqxB,QAAQ,CAAC9xB,SAAS,GAAG,wBAAwB;EAC7C8xB,QAAQ,CAACrD,MAAM,GAAG,IAAI;AAEtB,EAAA,IAAMtU,MAAM,GAAG0C,QAAQ,CAACpc,aAAa,CAAC,OAAO,CAAC;EAC9C0Z,MAAM,CAACra,IAAI,GAAG,MAAM;EACpBqa,MAAM,CAACna,SAAS,GAAG,sBAAsB;EACzCma,MAAM,CAACwD,WAAW,GAAG,QAAQ;AAC7BxD,EAAAA,MAAM,CAAClJ,YAAY,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAErD,EAAA,IAAM8gB,IAAI,GAAGlV,QAAQ,CAACpc,aAAa,CAAC,IAAI,CAAC;EACzCsxB,IAAI,CAAC/xB,SAAS,GAAG,oBAAoB;AACrC+xB,EAAAA,IAAI,CAAC9gB,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;AAEpC6gB,EAAAA,QAAQ,CAACD,WAAW,CAAC1X,MAAM,CAAC;AAC5B2X,EAAAA,QAAQ,CAACD,WAAW,CAACE,IAAI,CAAC;AAE1B;AACAJ,EAAAA,OAAO,CAACC,YAAY,CAAC5gB,MAAM,EAAEogB,KAAK,CAAC;AACnCO,EAAAA,OAAO,CAACE,WAAW,CAACC,QAAQ,CAAC;EAE7B,SAASE,aAAaA,CAACC,OAAmB,EAAA;AACxCvhB,IAAAA,QAAQ,GAAGuhB,OAAO;IAClBb,KAAK,CAACngB,YAAY,CAAC,gBAAgB,EAAEghB,OAAO,CAACvB,QAAQ,CAAC;IACtDU,KAAK,CAACngB,YAAY,CAAC,WAAW,EAAEghB,OAAO,CAACxB,IAAI,CAAC;IAC7Czf,MAAM,CAACkhB,WAAW,GAAG,EAAE;AACvB,IAAA,IAAMC,IAAI,GAAGtV,QAAQ,CAACpc,aAAa,CAAC,MAAM,CAAC;IAC3C0xB,IAAI,CAACnyB,SAAS,GAAG,oBAAoB;AACrCmyB,IAAAA,IAAI,CAAClhB,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACxCkhB,IAAI,CAACD,WAAW,GAAGtB,SAAS,CAACqB,OAAO,CAACxB,IAAI,CAAC;AAC1C,IAAA,IAAMxT,IAAI,GAAGJ,QAAQ,CAACpc,aAAa,CAAC,MAAM,CAAC;IAC3Cwc,IAAI,CAACjd,SAAS,GAAG,oBAAoB;AACrCid,IAAAA,IAAI,CAACiV,WAAW,GAAG,GAAG,GAAGD,OAAO,CAACvB,QAAQ;AACzC1f,IAAAA,MAAM,CAAC6gB,WAAW,CAACM,IAAI,CAAC;AACxBnhB,IAAAA,MAAM,CAAC6gB,WAAW,CAAC5U,IAAI,CAAC;AACxBjM,IAAAA,MAAM,CAACC,YAAY,CACjB,YAAY,EACZ,wBAAwB,GAAGghB,OAAO,CAAC3vB,IAAI,GAAG,IAAI,GAAG2vB,OAAO,CAACvB,QAAQ,CAClE;AACH,EAAA;EAEA,SAAS0B,UAAUA,CAAC/xB,MAAc,EAAA;IAChC0xB,IAAI,CAACG,WAAW,GAAG,EAAE;IACrB,IAAMG,CAAC,GAAGhyB,MAAM,CAACiH,IAAI,EAAE,CAACzD,WAAW,EAAE;IACrC,IAAMyuB,MAAM,GAAGD,CAAC,CAACvsB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;4BAC9B3E,CAAC,EAAA;AACR,MAAA,IAAMqvB,CAAC,GAAGF,SAAS,CAACnvB,CAAC,CAAC;AACtB,MAAA,IAAM8J,KAAK,GACT,CAAConB,CAAC,IACF7B,CAAC,CAACluB,IAAI,CAACuB,WAAW,EAAE,CAAC/B,OAAO,CAACuwB,CAAC,CAAC,KAAK,EAAE,IACtC7B,CAAC,CAACC,IAAI,KAAK4B,CAAC,IACX,CAAC,CAACC,MAAM,IAAI9B,CAAC,CAACE,QAAQ,CAAC5uB,OAAO,CAACwwB,MAAM,CAAC,KAAK,CAAE;MAChD,IAAI,CAACrnB,KAAK,EAAE;;AAEX,MAAA;AACD,MAAA,IAAMsnB,EAAE,GAAG1V,QAAQ,CAACpc,aAAa,CAAC,IAAI,CAAC;MACvC8xB,EAAE,CAACvyB,SAAS,GAAG,sBAAsB;AACrCuyB,MAAAA,EAAE,CAACthB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;AACjCshB,MAAAA,EAAE,CAACtJ,QAAQ,GAAG,EAAE;MAChBsJ,EAAE,CAACthB,YAAY,CAAC,WAAW,EAAEuf,CAAC,CAACC,IAAI,CAAC;AACpC8B,MAAAA,EAAE,CAACthB,YAAY,CAAC,eAAe,EAAEuf,CAAC,CAACC,IAAI,KAAK/f,QAAQ,CAAC+f,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;MAC7E8B,EAAE,CAACL,WAAW,GAAGtB,SAAS,CAACJ,CAAC,CAACC,IAAI,CAAC,GAAG,IAAI,GAAGD,CAAC,CAACluB,IAAI,GAAG,KAAK,GAAGkuB,CAAC,CAACE,QAAQ;AACvE6B,MAAAA,EAAE,CAAC5gB,gBAAgB,CAAC,OAAO,EAAE,YAAA;QAC3BqgB,aAAa,CAACxB,CAAC,CAAC;AAChBxW,QAAAA,KAAK,EAAE;QACPoX,KAAK,CAACpT,KAAK,EAAE;AACf,MAAA,CAAC,CAAC;AACF+T,MAAAA,IAAI,CAACF,WAAW,CAACU,EAAE,CAAC;;AAtBtB,IAAA,KAAK,IAAIpxB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmvB,SAAS,CAAChvB,MAAM,EAAEH,CAAC,EAAE,EAAA;cAAhCA,CAAC,CAAA;AAuBT,IAAA;AACH,EAAA;EAEA,SAASqa,IAAIA,GAAA;IACXsW,QAAQ,CAACrD,MAAM,GAAG,KAAK;AACvBzd,IAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAC5CkJ,MAAM,CAACxB,KAAK,GAAG,EAAE;IACjByZ,UAAU,CAAC,EAAE,CAAC;IACdjY,MAAM,CAAC6D,KAAK,EAAE;AAChB,EAAA;EACA,SAAShE,KAAKA,GAAA;IACZ8X,QAAQ,CAACrD,MAAM,GAAG,IAAI;AACtBzd,IAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAC/C,EAAA;AAEAD,EAAAA,MAAM,CAACW,gBAAgB,CAAC,OAAO,EAAE,YAAA;IAC/B,IAAImgB,QAAQ,CAACrD,MAAM,EAAE;AACnBjT,MAAAA,IAAI,EAAE;AACP,IAAA,CAAA,MAAM;AACLxB,MAAAA,KAAK,EAAE;AACR,IAAA;AACH,EAAA,CAAC,CAAC;AAEFG,EAAAA,MAAM,CAACxI,gBAAgB,CAAC,OAAO,EAAE;AAAM,IAAA,OAAAygB,UAAU,CAACjY,MAAM,CAACxB,KAAK,CAAC;AAAxB,EAAA,CAAwB,CAAC;AAChEwB,EAAAA,MAAM,CAACxI,gBAAgB,CAAC,SAAS,EAAE,UAAC9P,CAAC,EAAA;AACnC,IAAA,IAAIA,CAAC,CAACsF,GAAG,KAAK,QAAQ,EAAE;AACtB6S,MAAAA,KAAK,EAAE;MACPhJ,MAAM,CAACgN,KAAK,EAAE;AACf,IAAA,CAAA,MAAM,IAAInc,CAAC,CAACsF,GAAG,KAAK,WAAW,EAAE;MAChCtF,CAAC,CAAC8K,cAAc,EAAE;AAClB,MAAA,IAAMgI,KAAK,GAAGod,IAAI,CAAC5R,aAAa,CAAC,uBAAuB,CAAuB;AAC/E,MAAA,IAAIxL,KAAK,EAAE;QACTA,KAAK,CAACqJ,KAAK,EAAE;AACd,MAAA;AACF,IAAA;AACH,EAAA,CAAC,CAAC;AAEF+T,EAAAA,IAAI,CAACpgB,gBAAgB,CAAC,SAAS,EAAE,UAAC9P,CAAC,EAAA;AACjC,IAAA,IAAMwI,IAAI,GAAG3B,KAAK,CAAClH,SAAS,CAAC0E,KAAK,CAACxE,IAAI,CACrCqwB,IAAI,CAAC3e,gBAAgB,CAAC,uBAAuB,CAAC,CAC9B;IAClB,IAAMof,GAAG,GAAGnoB,IAAI,CAACvI,OAAO,CAAC+a,QAAQ,CAAC4V,aAA4B,CAAC;AAC/D,IAAA,IAAI5wB,CAAC,CAACsF,GAAG,KAAK,WAAW,EAAE;MACzBtF,CAAC,CAAC8K,cAAc,EAAE;AAClB,MAAA,CAACtC,IAAI,CAACmoB,GAAG,GAAG,CAAC,CAAC,IAAInoB,IAAI,CAAC,CAAC,CAAC,EAAE2T,KAAK,EAAE;AACnC,IAAA,CAAA,MAAM,IAAInc,CAAC,CAACsF,GAAG,KAAK,SAAS,EAAE;MAC9BtF,CAAC,CAAC8K,cAAc,EAAE;MAClB,IAAI6lB,GAAG,IAAI,CAAC,EAAE;QACZrY,MAAM,CAAC6D,KAAK,EAAE;AACf,MAAA,CAAA,MAAM;QACL3T,IAAI,CAACmoB,GAAG,GAAG,CAAC,CAAC,CAACxU,KAAK,EAAE;AACtB,MAAA;AACF,IAAA,CAAA,MAAM,IAAInc,CAAC,CAACsF,GAAG,KAAK,OAAO,IAAItF,CAAC,CAACsF,GAAG,KAAK,GAAG,EAAE;MAC7CtF,CAAC,CAAC8K,cAAc,EAAE;MAClB,IAAM8jB,IAAI,GAAI5T,QAAQ,CAAC4V,aAA6B,CAACjB,YAAY,CAAC,WAAW,CAAC;MAC9E,IAAMhB,CAAC,GAAGC,IAAI,GAAGQ,WAAW,CAACR,IAAI,CAAC,GAAG9vB,SAAS;AAC9C,MAAA,IAAI6vB,CAAC,EAAE;QACLwB,aAAa,CAACxB,CAAC,CAAC;AAChBxW,QAAAA,KAAK,EAAE;QACPoX,KAAK,CAACpT,KAAK,EAAE;AACd,MAAA;AACF,IAAA,CAAA,MAAM,IAAInc,CAAC,CAACsF,GAAG,KAAK,QAAQ,EAAE;AAC7B6S,MAAAA,KAAK,EAAE;MACPhJ,MAAM,CAACgN,KAAK,EAAE;AACf,IAAA;AACH,EAAA,CAAC,CAAC;AAEFnB,EAAAA,QAAQ,CAAClL,gBAAgB,CAAC,OAAO,EAAE,UAAC9P,CAAC,EAAA;IACnC,IAAI,CAAC8vB,OAAO,CAAC/U,QAAQ,CAAC/a,CAAC,CAACjB,MAAc,CAAC,EAAE;AACvCoZ,MAAAA,KAAK,EAAE;AACR,IAAA;AACH,EAAA,CAAC,CAAC;EAEFgY,aAAa,CAACthB,QAAQ,CAAC;AACzB;;AC9OO,IAAMgiB,eAAe,GAAmC,UAACrzB,EAc/D,EAAA;MAbCE,EAAA,GAAAF,EAAA,CAAAgE,EAAgB;IAAhBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,WAAW,GAAAA,EAAA;IAChBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACLwqB,QAAQ,GAAA3uB,EAAA,CAAA2uB,QAAA;IACRrQ,WAAW,GAAAte,EAAA,CAAAse,WAAA;IACXle,EAAA,GAAAJ,EAAA,CAAA4uB,YAAiB;IAAjBA,YAAY,GAAAxuB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACjBI,EAAA,GAAAR,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAruB,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBE,EAAA,GAAAV,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAK,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBmC,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLksB,SAAS,eAAA;IACTC,SAAS,GAAAhvB,EAAA,CAAAgvB,SAAA;IACTsE,OAAO,GAAAtzB,EAAA,CAAAszB,OAAA;IACPrwB,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;IACJswB,cAAc,GAAAvzB,EAAA,CAAAuzB,cAAA;AAEd,EAAA,IAAMC,QAAQ,GAAGpgB,MAAM,CAAiB,IAAI,CAAC;AAC7C,EAAA,IAAM6b,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GACnB,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAACN,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;AAE9E;AACA;AACA;AACAuS,EAAAA,SAAS,CAAC,YAAA;AACRge,IAAAA,cAAc,CAAC2B,QAAQ,CAAC1f,OAAO,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE3S,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,gDAAgD;AAACsT,IAAAA,GAAG,EAAEuf;GAAS,eAC5EryB,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC;GAAc,eAC5BQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,KAAK;AACVE,IAAAA,SAAS,EAAC,sBAAsB;AAChCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3BtQ,IAAAA,WAAW,EAAEA,WAAY;AACzBe,IAAAA,YAAY,EAAC,KAAK;AAClB0P,IAAAA,SAAS,EAAEA,SAAU;AACrBC,IAAAA,SAAS,EAAEA,SAAU;AACrBsE,IAAAA,OAAO,EAAEA,OAAQ;AACjB,IAAA,cAAA,EAAcC,cAAe;AAC7B,IAAA,kBAAA,EAAkBpE,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;AAAS,GAAA,CAEjB,CACN,EAACsuB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;ACzEM,IAAM4wB,kBAAkB,GAAsC,UAACzzB,EAWrE,EAAA;MAVCE,EAAA,GAAAF,EAAA,CAAAgE,EAAmB;IAAnBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,cAAc,KAAA;IACnBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACLwqB,QAAQ,GAAA3uB,EAAA,CAAA2uB,QAAA;IACRvuB,EAAA,GAAAJ,EAAA,CAAAse,WAA6B;IAA7BA,WAAW,GAAAle,EAAA,KAAA,MAAA,GAAG,eAAe,GAAAA,EAAA;IAC7BI,EAAA,GAAAR,EAAA,CAAA4uB,YAAiB;IAAjBA,YAAY,GAAApuB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACjBE,EAAA,GAAAV,EAAA,CAAA0Q,OAAY;IAAZA,OAAO,GAAAhQ,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACZE,EAAA,GAAAZ,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAjuB,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBmF,EAAA,GAAA/F,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAA0F,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBlD,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLI,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;AAEJ,EAAA,IAAMgsB,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GAAG,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAC1DN,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;EAEzB,oBACEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAmD,eAChEQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA+B,eAC5CQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACET,IAAAA,SAAS,EAAC,uBAAuB;AACjCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3B,IAAA,kBAAA,EAAkBO,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;GAAS,eAEnBc,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQkY,IAAAA,KAAK,EAAC;GAAE,EAAEgF,WAAoB,CACtC,EAAC5N,OAAO,CAAC/I,GAAG,CAAC,UAAC+rB,GAAG,EAAA;IAAK,oBACpBvyB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;MAAQ0G,GAAG,EAAE4rB,GAAG,CAACpa,KAAM;MAACA,KAAK,EAAEoa,GAAG,CAACpa;KAAM,EACtCoa,GAAG,CAACvvB,KACC,CAAC;EAHW,CAIrB,CACK,CACL,CACL,EAACwqB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;AC/DD,IAAM8wB,eAAe,GAAgC,CACnD;AAAEra,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAe,CAAE,EACvC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAgB,CAAE,EACxC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAS,CAAE,EACjC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAQ,CAAE,EAChC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAQ,CAAE,EAChC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAO,CAAE,EAC/B;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAO,CAAE,EAC/B;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAO,CAAE,EAC/B;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAQ,CAAE,EAChC;AAAEmV,EAAAA,KAAK,EAAE,IAAI;AAAEnV,EAAAA,KAAK,EAAE;AAAW,CAAE,CACpC;AAEM,IAAMyvB,mBAAmB,GAAuC,UAAC5zB,EAUvE,EAAA;MATCE,EAAA,GAAAF,EAAA,CAAAgE,EAAoB;IAApBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,eAAe,KAAA;IACpBiE,KAAK,WAAA;IACLwqB,QAAQ,cAAA;IACRvuB,EAAA,GAAAJ,EAAA,CAAA4uB,YAAiB;IAAjBA,YAAY,GAAAxuB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACjBI,iBAA2B;IAA3BqzB,SAAS,mBAAGF,eAAe,GAAAnzB,EAAA;IAC3BE,EAAA,GAAAV,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAnuB,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IAChBE,EAAA,GAAAZ,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAO,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBiC,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLI,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;AAEJ,EAAA,IAAMgsB,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GAAG,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAC1DN,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;EAEzB,oBACEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAoD,eACjEQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAA+B,eAC5CQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACET,IAAAA,SAAS,EAAC,uBAAuB;AACjCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3B,IAAA,mBAAA,EAAkB,MAAM;AACxB,IAAA,kBAAA,EAAkBO,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;GAAS,eAEnBc,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQkY,IAAAA,KAAK,EAAC;GAAE,EAAC,kBAAwB,CACzC,EAACua,SAAS,CAAClsB,GAAG,CAAC,UAACwpB,CAAC,EAAA;IAAK,oBACpBhwB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;MAAQ0G,GAAG,EAAEqpB,CAAC,CAAC7X,KAAM;MAACA,KAAK,EAAE6X,CAAC,CAAC7X;KAAM,EAClC6X,CAAC,CAAChtB,KACG,CAAC;EAHW,CAIrB,CACK,CACL,CACL,EAACwqB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;AC/EM,IAAMixB,oBAAoB,GAAwC,UAAC9zB,EAazE,EAAA;MAZCE,EAAA,GAAAF,EAAA,CAAAgE,EAAqB;IAArBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,gBAAgB,GAAAA,EAAA;IACrBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACLwqB,QAAQ,GAAA3uB,EAAA,CAAA2uB,QAAA;IACRrQ,WAAW,GAAAte,EAAA,CAAAse,WAAA;IACXle,EAAA,GAAAJ,EAAA,CAAA4uB,YAAiB;IAAjBA,YAAY,GAAAxuB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACjBI,EAAA,GAAAR,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAruB,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBE,EAAA,GAAAV,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAK,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBmC,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLisB,YAAY,kBAAA;IACZE,SAAS,GAAAhvB,EAAA,CAAAgvB,SAAA;IACTpuB,EAAA,GAAAZ,EAAA,CAAA8X,IAAQ;IAARA,IAAI,GAAAlX,EAAA,KAAA,MAAA,GAAG,CAAC,GAAAA,EAAA;IACRqC,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;AAEJ,EAAA,IAAMgsB,MAAM,GAAGN,QAAQ,GAAG,EAAA,CAAA5tB,MAAA,CAAGiD,EAAE,EAAA,OAAA,CAAO,GAAG1C,SAAS;EAClD,IAAM4tB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAC7B,IAAMmrB,eAAe,GAAG,CAACF,MAAM,EAAEpsB,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAS,CAAC,CAC1DN,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG,CAAC,IAAII,SAAS;EAEzB,oBACEH,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAqD,eAClEQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AAAOT,IAAAA,SAAS,EAAC,sBAAsB;AAACye,IAAAA,OAAO,EAAEpb;AAAG,GAAA,EACjDG,KAAK,EACL0qB,QAAQ,iBACP1tB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,yBAAyB;AAACqI,IAAAA,KAAK,EAAC;AAAU,GAAA,EACxD,GACI,CAEH,CACP,eAAA7H,KAAA,CAAAC,aAAA,CAAA,UAAA,EAAA;AACET,IAAAA,SAAS,EAAC,yBAAyB;AACnCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACX2rB,IAAAA,YAAY,EAAEA,YAAa;AAC3BtQ,IAAAA,WAAW,EAAEA,WAAY;AACzBe,IAAAA,YAAY,EAAEyP,YAAa;AAC3BE,IAAAA,SAAS,EAAEA,SAAU;AACrBlX,IAAAA,IAAI,EAAEA,IAAK;AACX,IAAA,kBAAA,EAAkBqX,eAAgB;AAClC,IAAA,cAAA,EAActsB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;AAAS,GAAA,CAErB,EAACsuB,QAAQ,iBACPxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,IAAAA,SAAS,EAAC,qBAAqB;AAACqD,IAAAA,EAAE,EAAEirB;AAAO,GAAA,EAC9CN,QACG,CACP,eACDxtB,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;ACjEM,IAAMkxB,mBAAmB,GAAuC,UAAC/zB,EAOvE,EAAA;MANCE,EAAA,GAAAF,EAAA,CAAAgE,EAAoB;IAApBA,EAAE,GAAA9D,EAAA,KAAA,MAAA,GAAG,eAAe,GAAAA,EAAA;IACpBiE,KAAK,GAAAnE,EAAA,CAAAmE,KAAA;IACL/D,EAAA,GAAAJ,EAAA,CAAA6uB,QAAgB;IAAhBA,QAAQ,GAAAzuB,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBI,EAAA,GAAAR,EAAA,CAAAK,QAAgB;IAAhBA,QAAQ,GAAAG,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IAChBqC,KAAK,GAAA7C,EAAA,CAAA6C,KAAA;IACLI,IAAI,GAAAjD,EAAA,CAAAiD,IAAA;EAEJ,IAAMisB,OAAO,GAAG,EAAA,CAAAnuB,MAAA,CAAGiD,EAAE,WAAQ;EAE7B,oBACE7C,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAoD,eACjEQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAwB,eACrCQ,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,UAAU;AACfE,IAAAA,SAAS,EAAC,yBAAyB;AACnCqD,IAAAA,EAAE,EAAEA,EAAG;AACPf,IAAAA,IAAI,EAAEA,IAAK;AACXqW,IAAAA,KAAK,EAAC,MAAM;AACZ,IAAA,cAAA,EAAa,EAAE;AACf,IAAA,kBAAA,EAAkBzW,KAAK,GAAGqsB,OAAO,GAAG5tB,SAAU;AAC9C,IAAA,cAAA,EAAcuB,KAAK,GAAG,MAAM,GAAGvB,SAAU;AACzCutB,IAAAA,QAAQ,EAAEA,QAAS;AACnBxuB,IAAAA,QAAQ,EAAEA;AAAS,GAAA,CAErB,eACAc,KAAA,CAAAC,aAAA,CAAA,OAAA,EAAA;AACET,IAAAA,SAAS,EAAC,8BAA8B;AACxCye,IAAAA,OAAO,EAAEpb,EAAG;AACZgwB,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE9vB;AAAK;AAAG,GAAA,CAE1C,CACL,eAAAhD,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,4BAA4B;AACtCqD,IAAAA,EAAE,EAAEkrB,OAAQ;AACZ/a,IAAAA,IAAI,EAAC,OAAO;AACZ,IAAA,WAAA,EAAU,WAAW;AACrBib,IAAAA,MAAM,EAAE,CAACvsB;GAAM,EAEdA,KACG,CACH,CAAC;AAEV,CAAC;;AC7CM,IAAMqxB,WAAW,GAA+B,UAACl0B,EAKvD,EAAA;MAJCgJ,KAAK,GAAAhJ,EAAA,CAAAgJ,KAAA;IACLC,WAAW,GAAAjJ,EAAA,CAAAiJ,WAAA;IACXhJ,QAAQ,GAAAD,EAAA,CAAAC,QAAA;IACRk0B,MAAM,GAAAn0B,EAAA,CAAAm0B,MAAA;EACF,oBACJhzB,KAAA,CAAAC,aAAA,CAAA,UAAA,EAAA;AACET,IAAAA,SAAS,EAAC,qBAAqB;AAC/B,IAAA,gBAAA,EAAe,EAAE;IACjB,cAAA,EAAcwzB;AAAO,GAAA,EAEpBnrB,KAAK,iBAAI7H,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQT,IAAAA,SAAS,EAAC;AAA4B,GAAA,EAAEqI,KAAc,CAAC,EACxEC,WAAW,iBACV9H,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;AAAiC,GAAA,EAAEsI,WAAe,CAChE,eACD9H,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAuB,EAAEV,QAAc,CAC9C,CAAC;AAXP,CAYL;;ACXM,IAAMm0B,gBAAgB,GAAoC,UAACp0B,EAQjE,EAAA;AAPC,EAAA,IAAAgJ,KAAK,GAAAhJ,EAAA,CAAAgJ,KAAA;IACL9I,EAAA,GAAAF,EAAA,CAAAq0B,SAAiB;IAAjBA,SAAS,GAAAn0B,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACjBE,EAAA,GAAAJ,EAAA,CAAAs0B,WAAe;IAAfA,WAAW,mBAAG,CAAC,GAAAl0B,EAAA;IACfI,EAAA,GAAAR,EAAA,CAAAu0B,KAAU;IAAVA,KAAK,GAAA/zB,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACVP,QAAQ,GAAAD,EAAA,CAAAC,QAAA;IACRu0B,SAAS,GAAAx0B,EAAA,CAAAw0B,SAAA;IACTC,cAAc,GAAAz0B,EAAA,CAAAy0B,cAAA;EACV,oBACJtzB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,eAAe;IAAC,gBAAA,EAAe;GAAE,eAC9CQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,qBAAqB;AAC/B+zB,IAAAA,MAAM,EAAC,MAAM;IACbC,UAAU,EAAA,IAAA;AACV,IAAA,YAAA,EAAY3rB,KAAM;IAClBomB,MAAM,EAAE,CAAC,CAACqF;AAAe,GAAA,EAExBzrB,KAAK,iBAAI7H,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;AAAsB,GAAA,EAAEqI,KAAU,CAAC,EAE1DqrB,SAAS,IAAIE,KAAK,CAACtyB,MAAM,GAAG,CAAC,iBAC5Bd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,yBAAyB;IAAC,YAAA,EAAW;GAAe,eACjEQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC;GAA8B,EACzC4zB,KAAK,CAAC5sB,GAAG,CAAC,UAACitB,SAAS,EAAE9yB,CAAC,EAAA;IAAK,oBAC3BX,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACE0G,MAAAA,GAAG,EAAEhG,CAAE;AACPnB,MAAAA,SAAS,EAAC,8BAA8B;AACxC,MAAA,iBAAA,EAAiBmB,CAAE;AACnB,MAAA,cAAA,EAAcA,CAAC,GAAG,CAAC,KAAKwyB,WAAW,GAAG,MAAM,GAAGhzB;KAAU,eAEzDH,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;AAAgC,KAAA,EAAEmB,CAAC,GAAG,CAAQ,CAC9D,eAAAX,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;KAA+B,EAAEi0B,SAAgB,CAC/D,CAAC;AATsB,EAAA,CAU5B,CACC,CACD,CACN,eAEDzzB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAsB,GAAA,EAAEV,QAAc,CAErD,eAAAkB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;AAAwB,GAAA,EACpC0zB,SAAS,iBACRlzB,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQX,IAAAA,IAAI,EAAC,QAAQ;AAACE,IAAAA,SAAS,EAAC,qBAAqB;AAAC,IAAA,gBAAA,EAAe,EAAE;IAACyuB,MAAM,EAAEkF,WAAW,IAAI;AAAE,GAAA,EAC/F,MACM,CACT,EACAD,SAAS,IAAIC,WAAW,IAAIC,KAAK,CAACtyB,MAAM,IAAI,CAAC,CAAC,gBAC7Cd,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQX,IAAAA,IAAI,EAAC,QAAQ;AAACE,IAAAA,SAAS,EAAC,oDAAoD;IAAC,gBAAA,EAAe;AAAE,GAAA,EACpG,UACM,CAAC,gBAETQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AAAQX,IAAAA,IAAI,EAAC,QAAQ;AAACE,IAAAA,SAAS,EAAC,sDAAsD;IAAC,kBAAA,EAAiB;AAAE,GAAA,EACxG,QACM,CAEP,CAEL,eACAQ,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC,sBAAsB;AAAC,IAAA,iBAAA,EAAgB,EAAE;AAACwT,IAAAA,IAAI,EAAC,OAAO;AAAC,IAAA,WAAA,EAAU,WAAW;AAACib,IAAAA,MAAM,EAAE,CAACoF;AAAU,GAAA,EAC1GA,SACA,CACC,CAEN,eACArzB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,wBAAwB;AAAC,IAAA,mBAAA,EAAkB,EAAE;AAACwT,IAAAA,IAAI,EAAC,QAAQ;AAAC,IAAA,WAAA,EAAU,QAAQ;AAACib,IAAAA,MAAM,EAAE,CAACqF;GAAe,EACnHA,cACE,CACF,CAAC;AA1DF,CA2DL;;ACpFD;;;;;;;;;;AAUG;AACI,IAAMI,gBAAgB,GAAG;AAC9BC,EAAAA,OAAO,EAAE,mBAAmB;AAC5BjyB,EAAAA,KAAK,EAAE;;;ACXT;;;;;;;;;;;;;;;AAeG;AAEI,IAAMkyB,kBAAkB,GAAG;AAC3B,IAAMC,8BAA8B,GAAG;AAE9C,IAAMC,SAAS,GAAG;AAChBniB,EAAAA,IAAI,EAAE,0BAA0B;AAChCoiB,EAAAA,OAAO,EAAE,6BAA6B;AACtCC,EAAAA,MAAM,EAAE,qCAAqC;AAC7CxjB,EAAAA,MAAM,EAAE,qCAAqC;AAC7C+gB,EAAAA,IAAI,EAAE,kBAAkB;AACxB0C,EAAAA,MAAM,EAAE,iBAAiB;AACzBthB,EAAAA,OAAO,EAAE,sCAAsC;AAC/CuhB,EAAAA,MAAM,EAAE,4BAA4B;AACpCC,EAAAA,WAAW,EAAE,kCAAkC;AAC/CC,EAAAA,WAAW,EAAE,kCAAkC;AAC/CC,EAAAA,UAAU,EAAE,iCAAiC;AAC7CC,EAAAA,aAAa,EAAE,oCAAoC;AACnDC,EAAAA,WAAW,EAAE,kCAAkC;AAC/CC,EAAAA,IAAI,EAAE,sBAAsB;AAC5BC,EACA3pB,SAAS,EAAE;CACH;AAEV,IAAM4pB,mBAAmB,GAAG,6CAA6C;AACzE,IAAMC,mBAAmB,GAAG,WAAW;AAEvC;AACA,IAAMC,aAAa,GAAG,IAAI9f,GAAG,EAAU;AAuCvC,SAAS+f,cAAcA,GAAA;EACrB,IAAI;IACF,OAAOld,MAAM,CAACmd,cAAc;EAC7B,CAAA,CAAC,OAAOzzB,CAAC,EAAE;AACV,IAAA,OAAO,IAAI;AACZ,EAAA;AACH;AAgBA,SAAS0zB,OAAOA,CAAoBxD,IAAmB,EAAA;EACrD,OAAOrpB,KAAK,CAAClH,SAAS,CAAC0E,KAAK,CAACxE,IAAI,CAACqwB,IAAI,CAAQ;AAChD;AAEA,SAASyD,WAAWA,CAAC71B,IAAY,EAAA;EAC/B,IAAI;AACF,IAAA,OAAO,IAAImK,GAAG,CAACnK,IAAI,EAAEwY,MAAM,CAACsd,QAAQ,CAAC91B,IAAI,CAAC,CAACA,IAAI;EAChD,CAAA,CAAC,OAAOkC,CAAC,EAAE;AACV,IAAA,OAAOlC,IAAI;AACZ,EAAA;AACH;AAEA,IAAA+1B,4BAAA,gBAAA,YAAA;AASE,EAAA,SAAAA,4BAAAA,CAAY3d,IAAiB,EAAEhI,OAAiD,EAAA;AAAjD,IAAA,IAAAA,OAAA,KAAA,MAAA,EAAA;MAAAA,OAAA,GAAA,EAAiD;AAAA,IAAA;IAAhF,IAAAC,KAAA,GAAA,IAAA;IALQ,IAAA,CAAA2lB,OAAO,GAAsE,IAAI;IACjF,IAAA,CAAAC,SAAS,GAA4B,IAAI;IACzC,IAAA,CAAAC,UAAU,GAAuB,IAAI;IACrC,IAAA,CAAAC,qBAAqB,GAAG,KAAK;AAyFrC;AAEQ,IAAA,IAAA,CAAAl2B,OAAO,GAAG,UAAC8b,KAAiB,EAAA;AAClC,MAAA,IAAM9a,MAAM,GAAG8a,KAAK,CAAC9a,MAAM;AAC3B,MAAA,IAAI,EAAEA,MAAM,YAAYm1B,OAAO,CAAC,EAAE;AAChC,QAAA;AACD,MAAA;AAED;AACA;MACA,IAAI/lB,KAAI,CAAC0kB,MAAM,IAAI9zB,MAAM,KAAKoP,KAAI,CAAC0kB,MAAM,EAAE;QACzC,IAAI1kB,KAAI,CAAC8lB,qBAAqB,EAAE;UAC9B9lB,KAAI,CAACgmB,SAAS,EAAE;AACjB,QAAA;QACDhmB,KAAI,CAAC8lB,qBAAqB,GAAG,KAAK;AAClC,QAAA;AACD,MAAA;MACD,IAAIl1B,MAAM,CAAComB,OAAO,CAACsN,SAAS,CAACK,WAAW,CAAC,EAAE;QACzC3kB,KAAI,CAACgmB,SAAS,EAAE;AAChB,QAAA;AACD,MAAA;MACD,IAAIp1B,MAAM,CAAComB,OAAO,CAACsN,SAAS,CAACS,WAAW,CAAC,EAAE;QACzC,IAAI/kB,KAAI,CAAC4lB,SAAS,EAAE;UAClB5lB,KAAI,CAACimB,KAAK,CAACjmB,KAAI,CAAC4lB,SAAS,EAAE,MAAM,CAAC;AACnC,QAAA;AACD,QAAA;AACD,MAAA;MAED,IAAM5kB,MAAM,GAAGpQ,MAAM,CAAComB,OAAO,CAAcsN,SAAS,CAACtjB,MAAM,CAAC;AAC5D,MAAA,IAAIA,MAAM,EAAE;QACV,IAAMwjB,MAAM,GAAGxjB,MAAM,CAACgW,OAAO,CAAcsN,SAAS,CAACE,MAAM,CAAC;AAC5D,QAAA,IAAIA,MAAM,EAAE;AACV,UAAA,IAAIxkB,KAAI,CAAC6lB,UAAU,KAAKrB,MAAM,EAAE;AAC9BxkB,YAAAA,KAAI,CAACkmB,WAAW,CAAC,IAAI,CAAC;AACvB,UAAA,CAAA,MAAM;AACLlmB,YAAAA,KAAI,CAACmmB,UAAU,CAAC3B,MAAM,CAAC;AACxB,UAAA;AACF,QAAA;AACD,QAAA;AACD,MAAA;MAED,IAAMC,MAAM,GAAG7zB,MAAM,CAAComB,OAAO,CAAcsN,SAAS,CAACG,MAAM,CAAC;AAC5D,MAAA,IAAIA,MAAM,EAAE;QACV,IAAMtiB,IAAI,GAAGsiB,MAAM,CAACzN,OAAO,CAAcsN,SAAS,CAACniB,IAAI,CAAC;AACxD,QAAA,IAAIA,IAAI,EAAE;AACRnC,UAAAA,KAAI,CAAComB,aAAa,CAACjkB,IAAI,EAAEsiB,MAAM,CAAC;AACjC,QAAA;AACDzkB,QAAAA,KAAI,CAACkmB,WAAW,CAAC,IAAI,CAAC;AACtB,QAAA;AACD,MAAA;MAED,IAAM3B,OAAO,GAAG3zB,MAAM,CAAComB,OAAO,CAAoBsN,SAAS,CAACC,OAAO,CAAC;AACpE,MAAA,IAAIA,OAAO,EAAE;AACXvkB,QAAAA,KAAI,CAACqmB,SAAS,CAAC3a,KAAK,EAAE6Y,OAAO,CAAC;AAC/B,MAAA;IACH,CAAC;AAyBO,IAAA,IAAA,CAAAvH,SAAS,GAAG,UAACtR,KAAoB,EAAA;AACvC,MAAA,IAAM9a,MAAM,GAAG8a,KAAK,CAAC9a,MAAM;AAC3B,MAAA,IAAI,EAAEA,MAAM,YAAYgf,WAAW,CAAC,EAAE;AACpC,QAAA;AACD,MAAA;MAED,IAAIhf,MAAM,CAACyX,OAAO,CAACic,SAAS,CAACtjB,MAAM,CAAC,KAAK0K,KAAK,CAACvU,GAAG,KAAK,WAAW,IAAIuU,KAAK,CAACvU,GAAG,KAAK,SAAS,CAAC,EAAE;QAC9F,IAAMqtB,MAAM,GAAG5zB,MAAM,CAAComB,OAAO,CAAcsN,SAAS,CAACE,MAAM,CAAC;AAC5D,QAAA,IAAIA,MAAM,EAAE;UACV9Y,KAAK,CAAC/O,cAAc,EAAE;AACtBqD,UAAAA,KAAI,CAACmmB,UAAU,CAAC3B,MAAM,CAAC;AACxB,QAAA;AACD,QAAA;AACD,MAAA;AAED,MAAA,IAAI,CAACxkB,KAAI,CAAC6lB,UAAU,IAAI,CAACj1B,MAAM,CAACyX,OAAO,CAACic,SAAS,CAACvC,IAAI,CAAC,EAAE;AACvD,QAAA;AACD,MAAA;MACD,IAAMhiB,OAAO,GAAGC,KAAI,CAACsmB,aAAa,CAACtmB,KAAI,CAAC6lB,UAAU,CAAC;MACnD,IAAM/kB,MAAM,GAAGd,KAAI,CAAC6lB,UAAU,CAAC1V,aAAa,CAAc,GAAG,GAAGgV,mBAAmB,CAAC;AACpF,MAAA,IAAMjuB,KAAK,GAAG4J,MAAM,GAAGf,OAAO,CAACjO,OAAO,CAACgP,MAAM,CAAC,GAAG,EAAE;MAEnD,QAAQ4K,KAAK,CAACvU,GAAG;AACf,QAAA,KAAK,WAAW;UACduU,KAAK,CAAC/O,cAAc,EAAE;UACtBqD,KAAI,CAACumB,eAAe,CAACxmB,OAAO,CAACvC,IAAI,CAAC4H,GAAG,CAAClO,KAAK,GAAG,CAAC,EAAE6I,OAAO,CAACzO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACtE,UAAA;AACF,QAAA,KAAK,SAAS;UACZoa,KAAK,CAAC/O,cAAc,EAAE;AACtBqD,UAAAA,KAAI,CAACumB,eAAe,CAACxmB,OAAO,CAACvC,IAAI,CAACkB,GAAG,CAACxH,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrD,UAAA;AACF,QAAA,KAAK,MAAM;UACTwU,KAAK,CAAC/O,cAAc,EAAE;AACtBqD,UAAAA,KAAI,CAACumB,eAAe,CAACxmB,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,UAAA;AACF,QAAA,KAAK,KAAK;UACR2L,KAAK,CAAC/O,cAAc,EAAE;UACtBqD,KAAI,CAACumB,eAAe,CAACxmB,OAAO,CAACA,OAAO,CAACzO,MAAM,GAAG,CAAC,CAAC,CAAC;AACjD,UAAA;AACF,QAAA,KAAK,OAAO;AACZ,QAAA,KAAK,GAAG;AAAE,UAAA;YACRoa,KAAK,CAAC/O,cAAc,EAAE;YACtB,IAAMwF,IAAI,GAAGnC,KAAI,CAAC6lB,UAAU,CAAC7O,OAAO,CAAcsN,SAAS,CAACniB,IAAI,CAAC;YACjE,IAAIrB,MAAM,IAAIqB,IAAI,EAAE;AAClBnC,cAAAA,KAAI,CAAComB,aAAa,CAACjkB,IAAI,EAAErB,MAAM,CAAC;AACjC,YAAA;AACDd,YAAAA,KAAI,CAACkmB,WAAW,CAAC,IAAI,CAAC;AACtB,YAAA;AACD,UAAA;AACD,QAAA,KAAK,QAAQ;UACXxa,KAAK,CAAC/O,cAAc,EAAE;UACtB+O,KAAK,CAAC8a,eAAe,EAAE;AACvBxmB,UAAAA,KAAI,CAACkmB,WAAW,CAAC,IAAI,CAAC;AACtB,UAAA;AACF,QAAA,KAAK,KAAK;AACRlmB,UAAAA,KAAI,CAACkmB,WAAW,CAAC,KAAK,CAAC;AACvB,UAAA;AAGH;IACH,CAAC;AAEO,IAAA,IAAA,CAAAO,qBAAqB,GAAG,UAAC/a,KAAmB,EAAA;MAClD,IAAI1L,KAAI,CAAC6lB,UAAU,IAAIna,KAAK,CAAC9a,MAAM,YAAY81B,IAAI,IAAI,CAAC1mB,KAAI,CAAC6lB,UAAU,CAACjZ,QAAQ,CAAClB,KAAK,CAAC9a,MAAM,CAAC,EAAE;AAC9FoP,QAAAA,KAAI,CAACkmB,WAAW,CAAC,KAAK,CAAC;AACxB,MAAA;IACH,CAAC;AAEO,IAAA,IAAA,CAAAS,mBAAmB,GAAG,UAACjb,KAAmB,EAAA;MAChD1L,KAAI,CAAC8lB,qBAAqB,GAAGpa,KAAK,CAAC9a,MAAM,KAAKoP,KAAI,CAAC0kB,MAAM;IAC3D,CAAC;IAEO,IAAA,CAAAkC,aAAa,GAAG,YAAA;AACtB,MAAA,IAAMrC,OAAO,GAAGvkB,KAAI,CAAC2lB,OAAO,GAAG3lB,KAAI,CAAC2lB,OAAO,CAACpB,OAAO,GAAG,IAAI;MAC1DvkB,KAAI,CAAC2lB,OAAO,GAAG,IAAI;MACnB3lB,KAAI,CAAC4lB,SAAS,GAAG,IAAI;AACrB,MAAA,IAAIrB,OAAO,IAAIA,OAAO,CAACzN,WAAW,EAAE;QAClCyN,OAAO,CAACvW,KAAK,EAAE;AAChB,MAAA;IACH,CAAC;AAEO,IAAA,IAAA,CAAA6Y,aAAa,GAAG,UAACnb,KAAY,EAAA;MACnC,IAAI,CAAC1L,KAAI,CAAC2lB,OAAO,IAAI,CAAC3lB,KAAI,CAAC0kB,MAAM,EAAE;AACjC,QAAA;AACD,MAAA;AACD;MACAhZ,KAAK,CAAC/O,cAAc,EAAE;AAEd,MAAA,IAAAmqB,QAAQ,GAAK9mB,KAAI,CAAC2lB,OAAO,SAAjB;MAChB3lB,KAAI,CAAC+mB,MAAM,EAAE;MACb/mB,KAAI,CAACgnB,aAAa,EAAE;MACpBhnB,KAAI,CAAC4lB,SAAS,GAAGkB,QAAQ;MAEzB,IAAMrU,IAAI,GAAGzS,KAAI,CAAC0kB,MAAM,CAACvU,aAAa,CAAoBmU,SAAS,CAACS,WAAW,CAAC;AAChF,MAAA,IAAItS,IAAI,EAAE;QACRA,IAAI,CAACxR,YAAY,CAAC,MAAM,EAAE6lB,QAAQ,CAACpzB,GAAG,CAAC;AACvCsM,QAAAA,KAAI,CAACinB,gBAAgB,CAACxU,IAAI,EAAEqU,QAAQ,CAAC;AACtC,MAAA;AACD9mB,MAAAA,KAAI,CAACknB,UAAU,CAAC,KAAK,CAAC;AAEtB;AACA,MAAA,IAAMC,OAAO,GAAGnnB,KAAI,CAAConB,aAAa,CAACN,QAAQ,CAAC;AAC5C,MAAA,IAAIK,OAAO,EAAE;AACXnnB,QAAAA,KAAI,CAACimB,KAAK,CAACa,QAAQ,EAAE,MAAM,CAAC;QAC5B9mB,KAAI,CAACqnB,mBAAmB,EAAE;AAC3B,MAAA,CAAA,MAAM;QACLrnB,KAAI,CAAC0kB,MAAM,CAAC3jB,SAAS,CAACwE,GAAG,CAAC2f,mBAAmB,CAAC;AAC9C,QAAA,IAAIzS,IAAI,EAAE;UACRA,IAAI,CAACzE,KAAK,EAAE;AACb,QAAA;AACF,MAAA;IACH,CAAC;IArRC,IAAI,CAACjG,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAChI,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC2kB,MAAM,GAAG3c,IAAI,CAACoI,aAAa,CAAoBmU,SAAS,CAACI,MAAM,CAAC;AACvE,EAAA;AAEAgB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA81B,IAAI,GAAJ,YAAA;IACE,IAAI,IAAI,CAACvf,IAAI,CAACwf,OAAO,CAACC,gBAAgB,KAAK,MAAM,EAAE;AACjD,MAAA;AACD,IAAA;AACD,IAAA,IAAI,CAACzf,IAAI,CAACwf,OAAO,CAACC,gBAAgB,GAAG,MAAM;IAC3C,IAAI,CAACzf,IAAI,CAACpG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC/R,OAAO,CAAC;IACjD,IAAI,CAACmY,IAAI,CAACpG,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACqb,SAAS,CAAC;IACrD,IAAI,IAAI,CAAC0H,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC/iB,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAACglB,mBAAmB,CAAC;MACrE,IAAI,CAACjC,MAAM,CAAC/iB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAACilB,aAAa,CAAC;AACzD,MAAA,IAAI,CAAClC,MAAM,CAAC/iB,gBAAgB,CAACuiB,gBAAgB,CAACC,OAAO,EAAE,IAAI,CAAC0C,aAAa,CAAC;AAC3E,IAAA;IACD,IAAI,IAAI,CAACY,OAAO,EAAE,IAAI,IAAI,CAACC,UAAU,EAAE,EAAE;MACvC,IAAI,CAACV,aAAa,EAAE;AACrB,IAAA;EACH,CAAC;AAEDtB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAuQ,OAAO,GAAP,YAAA;AACE,IAAA,IAAI,CAACmkB,WAAW,CAAC,KAAK,CAAC;IACvB,IAAI,CAACne,IAAI,CAAC/F,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAACpS,OAAO,CAAC;IACpD,IAAI,CAACmY,IAAI,CAAC/F,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACgb,SAAS,CAAC;IACxD,IAAI,IAAI,CAAC0H,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAAC1iB,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC2kB,mBAAmB,CAAC;MACxE,IAAI,CAACjC,MAAM,CAAC1iB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC4kB,aAAa,CAAC;AAC5D,MAAA,IAAI,CAAClC,MAAM,CAAC1iB,mBAAmB,CAACkiB,gBAAgB,CAACC,OAAO,EAAE,IAAI,CAAC0C,aAAa,CAAC;AAC7E,MAAA,IAAI,IAAI,CAACnC,MAAM,CAAClZ,IAAI,EAAE;AACpB,QAAA,IAAI,CAACkZ,MAAM,CAAC1a,KAAK,EAAE;AACpB,MAAA;AACF,IAAA;IACD,IAAI,CAAC2b,OAAO,GAAG,IAAI;AACnB,IAAA,OAAO,IAAI,CAAC5d,IAAI,CAACwf,OAAO,CAACC,gBAAgB;EAC3C,CAAC;AAED;AAEA9B,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAi2B,OAAO,GAAP,YAAA;AACE,IAAA,OAAO,IAAI,CAAC1f,IAAI,CAACwf,OAAO,CAACI,gBAAgB,KAAK,MAAM,IAAI,IAAI,CAACjD,MAAM,KAAK,IAAI;EAC9E,CAAC;AAEDgB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAk2B,UAAU,GAAV,YAAA;AACE,IAAA,IAAMvwB,GAAG,GAAG,IAAI,CAACywB,SAAS,EAAE;AAC5B,IAAA,IAAIxC,aAAa,CAACyC,GAAG,CAAC1wB,GAAG,CAAC,EAAE;AAC1B,MAAA,OAAO,IAAI;AACZ,IAAA;IACD,IAAI;AACF,MAAA,OAAO,CAAC,CAAC,IAAI,CAAC2wB,OAAO,EAAE,IAAI,IAAI,CAACA,OAAO,EAAG,CAACC,OAAO,CAAC5wB,GAAG,CAAC,KAAK,GAAG;IAChE,CAAA,CAAC,OAAOtF,CAAC,EAAE;AACV,MAAA,OAAO,KAAK;AACb,IAAA;EACH,CAAC;AAED6zB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAu1B,MAAM,GAAN,YAAA;;AACE,IAAA,IAAM5vB,GAAG,GAAG,IAAI,CAACywB,SAAS,EAAE;AAC5BxC,IAAAA,aAAa,CAAC7f,GAAG,CAACpO,GAAG,CAAC;IACtB,IAAI;MACF,CAAA9H,EAAA,GAAA,IAAI,CAACy4B,OAAO,EAAE,MAAA,IAAA,IAAAz4B,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,EAAA,CAAE24B,OAAO,CAAC7wB,GAAG,EAAE,GAAG,CAAC;IAClC,CAAA,CAAC,OAAOtF,CAAC,EAAE;AACV;AAAA,IAAA;EAEJ,CAAC;AAED;AACQ6zB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAo2B,SAAS,GAAjB,YAAA;AACE,IAAA,OACEvD,8BAA8B,IAC7B,IAAI,CAACtc,IAAI,CAACwf,OAAO,CAACU,mBAAmB,IAAI,IAAI,CAAClgB,IAAI,CAACwf,OAAO,CAACW,oBAAoB,IAAI,EAAE,CAAC;EAE3F,CAAC;AAEOxC,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAs2B,OAAO,GAAf,YAAA;AACE,IAAA,OAAO,IAAI,CAAC/nB,OAAO,CAAC+nB,OAAO,KAAKn3B,SAAS,GAAG,IAAI,CAACoP,OAAO,CAAC+nB,OAAO,GAAGzC,cAAc,EAAE;EACrF,CAAC;AAED;AACQK,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAw1B,aAAa,GAArB,YAAA;AACEzB,IAAAA,OAAO,CAAC,IAAI,CAACxd,IAAI,CAAC3E,gBAAgB,CAAckhB,SAAS,CAACC,OAAO,CAAC,CAAC,CAACvqB,OAAO,CAAC,UAACuqB,OAAO,EAAA;AAClFA,MAAAA,OAAO,CAAC4D,eAAe,CAAC,eAAe,CAAC;AACxC5D,MAAAA,OAAO,CAAC4D,eAAe,CAAC,eAAe,CAAC;AAC1C,IAAA,CAAC,CAAC;EACJ,CAAC;EA2DOzC,4BAAA,CAAAl0B,SAAA,CAAA60B,SAAS,GAAjB,UAAkB3a,KAAiB,EAAE6Y,OAA0B,EAAA;IAC7D,IAAMpiB,IAAI,GAAGoiB,OAAO,CAACvN,OAAO,CAAcsN,SAAS,CAACniB,IAAI,CAAC;IACzD,IAAI,CAACA,IAAI,EAAE;AACT,MAAA;AACD,IAAA;IACD,IAAM2kB,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC3kB,IAAI,EAAEoiB,OAAO,CAAC;AAC7C,IAAA,IAAI,CAAC,IAAI,CAACkD,OAAO,EAAE,EAAE;AACnB,MAAA,IAAI,CAACxB,KAAK,CAACa,QAAQ,EAAE,MAAM,CAAC;AAC5B,MAAA;AACD,IAAA;AACD,IAAA,IAAI,IAAI,CAACY,UAAU,EAAE,EAAE;AACrB,MAAA,IAAI,CAACzB,KAAK,CAACa,QAAQ,EAAE,SAAS,CAAC;AAC/B,MAAA;AACD,IAAA;AACD;AACA,IAAA,IAAI,CAAC,IAAI,CAACpC,MAAM,IAAI,OAAO,IAAI,CAACA,MAAM,CAAC0D,SAAS,KAAK,UAAU,EAAE;AAC/D,MAAA,IAAI,CAACnC,KAAK,CAACa,QAAQ,EAAE,MAAM,CAAC;AAC5B,MAAA;AACD,IAAA;IACDpb,KAAK,CAAC/O,cAAc,EAAE;AACtB,IAAA,IAAI,CAAC0rB,QAAQ,CAAClmB,IAAI,EAAEoiB,OAAO,CAAC;EAC9B,CAAC;AAmHD;EAEAmB,4BAAA,CAAAl0B,SAAA,CAAA62B,QAAQ,GAAR,UAASlmB,IAAiB,EAAEoiB,OAA0B,EAAA;AACpD,IAAA,IAAI,CAAC,IAAI,CAACG,MAAM,EAAE;AAChB,MAAA;AACD,IAAA;AACD,IAAA,IAAI,CAACwB,WAAW,CAAC,KAAK,CAAC;IACvB,IAAMY,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC3kB,IAAI,EAAEoiB,OAAO,CAAC;IAC7C,IAAI,CAACoB,OAAO,GAAG;AAAEmB,MAAAA,QAAQ,UAAA;AAAEvC,MAAAA,OAAO,EAAAA;KAAE;IACpC,IAAI,CAACqB,SAAS,GAAG,IAAI;IAErB,IAAM0C,KAAK,GAAG,IAAI,CAAC5D,MAAM,CAACvU,aAAa,CAAcmU,SAAS,CAACM,WAAW,CAAC;AAC3E,IAAA,IAAI0D,KAAK,EAAE;AACTA,MAAAA,KAAK,CAACpG,WAAW,GAAG4E,QAAQ,CAACzuB,KAAK;AACnC,IAAA;AACD,IAAA,IAAI,CAACkwB,gBAAgB,CAACzB,QAAQ,CAAC;IAC/B,IAAI,CAACpC,MAAM,CAAC3jB,SAAS,CAAC8O,MAAM,CAACqV,mBAAmB,CAAC;AACjD,IAAA,IAAI,CAACgC,UAAU,CAAC,IAAI,CAAC;AAErB,IAAA,IAAI,CAAC,IAAI,CAACxC,MAAM,CAAClZ,IAAI,EAAE;AACrB,MAAA,IAAI,CAACkZ,MAAM,CAAC0D,SAAS,EAAE;AACxB,IAAA;IACD,IAAI,CAACI,eAAe,EAAE;EACxB,CAAC;AAED9C,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAw0B,SAAS,GAAT,YAAA;IACE,IAAI,IAAI,CAACtB,MAAM,IAAI,IAAI,CAACA,MAAM,CAAClZ,IAAI,EAAE;AACnC,MAAA,IAAI,CAACkZ,MAAM,CAAC1a,KAAK,EAAE;AACpB,IAAA;EACH,CAAC;AAEO0b,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA01B,UAAU,GAAlB,UAAmBuB,QAAiB,EAAA;AAClC,IAAA,IAAI,CAAC,IAAI,CAAC/D,MAAM,EAAE;AAChB,MAAA;AACD,IAAA;IACD,IAAMM,IAAI,GAAG,IAAI,CAACN,MAAM,CAACvU,aAAa,CAAcmU,SAAS,CAACO,UAAU,CAAC;IACzE,IAAMV,OAAO,GAAG,IAAI,CAACO,MAAM,CAACvU,aAAa,CAAcmU,SAAS,CAACQ,aAAa,CAAC;AAC/E,IAAA,IAAIE,IAAI,EAAE;AACRA,MAAAA,IAAI,CAACvG,MAAM,GAAG,CAACgK,QAAQ;AACxB,IAAA;AACD,IAAA,IAAItE,OAAO,EAAE;MACXA,OAAO,CAAC1F,MAAM,GAAGgK,QAAQ;AAC1B,IAAA;EACH,CAAC;AAEO/C,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAg3B,eAAe,GAAvB,YAAA;AACE,IAAA,IAAME,MAAM,GAAG,IAAI,CAAChE,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvU,aAAa,CAAcmU,SAAS,CAACO,UAAU,CAAC,GAAG,IAAI;IAChG,IAAI,CAAC6D,MAAM,EAAE;AACX,MAAA;AACD,IAAA;AACD,IAAA,IAAMC,MAAM,GAAGpD,OAAO,CAACmD,MAAM,CAACtlB,gBAAgB,CAAckhB,SAAS,CAAChpB,SAAS,CAAC,CAAC;AACjF,IAAA,KAAK,IAAInK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGw3B,MAAM,CAACr3B,MAAM,EAAEH,CAAC,EAAE,EAAE;AACtC,MAAA,IAAIw3B,MAAM,CAACx3B,CAAC,CAAC,CAACy3B,cAAc,EAAE,CAACt3B,MAAM,GAAG,CAAC,EAAE;AACzCq3B,QAAAA,MAAM,CAACx3B,CAAC,CAAC,CAAC6c,KAAK,EAAE;AACjB,QAAA;AACD,MAAA;AACF,IAAA;EACH,CAAC;AAEO0X,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA61B,mBAAmB,GAA3B,YAAA;AACE,IAAA,IAAMlD,OAAO,GAAG,IAAI,CAACO,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvU,aAAa,CAAcmU,SAAS,CAACQ,aAAa,CAAC,GAAG,IAAI;IACpG,IAAM9wB,OAAO,GAAGmwB,OAAO,GAAGA,OAAO,CAAChU,aAAa,CAAc,YAAY,CAAC,GAAG,IAAI;AACjF,IAAA,IAAInc,OAAO,EAAE;MACXA,OAAO,CAACga,KAAK,EAAE;AAChB,IAAA;EACH,CAAC;AAED;;;;AAIG;AACK0X,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA+2B,gBAAgB,GAAxB,UAAyBzB,QAA0B,EAAA;AACjD,IAAA,IAAM9B,IAAI,GAAG,IAAI,CAACN,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvU,aAAa,CAAkBmU,SAAS,CAACU,IAAI,CAAC,GAAG,IAAI;IAC5F,IAAI,CAACA,IAAI,EAAE;AACT,MAAA;AACD,IAAA;IACD,IAAM2D,MAAM,GAA6D,CACvE;AAAExxB,MAAAA,GAAG,EAAE,OAAO;AAAE0xB,MAAAA,QAAQ,EAAE,IAAI,CAAC9gB,IAAI,CAACwf,OAAO,CAACuB,kBAAkB;MAAEngB,KAAK,EAAEme,QAAQ,CAACzuB;AAAK,KAAE,EACvF;AAAElB,MAAAA,GAAG,EAAE,KAAK;AAAE0xB,MAAAA,QAAQ,EAAE,IAAI,CAAC9gB,IAAI,CAACwf,OAAO,CAACwB,gBAAgB;MAAEpgB,KAAK,EAAEme,QAAQ,CAACpzB;AAAG,KAAE,EACjF;AAAEyD,MAAAA,GAAG,EAAE,UAAU;AAAE0xB,MAAAA,QAAQ,EAAE,IAAI,CAAC9gB,IAAI,CAACwf,OAAO,CAACyB,qBAAqB;MAAErgB,KAAK,EAAEme,QAAQ,CAACmC;AAAQ,KAAE,CACjG;AACDN,IAAAA,MAAM,CAAC3uB,OAAO,CAAC,UAAC3K,EAAwB,EAAA;AAAtB,MAAA,IAAA8H,GAAG,SAAA;QAAE0xB,QAAQ,GAAAx5B,EAAA,CAAAw5B,QAAA;QAAElgB,KAAK,GAAAtZ,EAAA,CAAAsZ,KAAA;AACpC,MAAA,IAAIyY,KAAK,GAAG4D,IAAI,CAAC7U,aAAa,CAAmB,kCAAA,CAAA/f,MAAA,CAAkC+G,GAAG,EAAA,KAAA,CAAI,CAAC;MAC3F,IAAI,CAAC0xB,QAAQ,EAAE;AACb,QAAA,IAAIzH,KAAK,EAAE;UACTA,KAAK,CAACvR,MAAM,EAAE;AACf,QAAA;AACD,QAAA;AACD,MAAA;MACD,IAAI,CAACuR,KAAK,EAAE;AACVA,QAAAA,KAAK,GAAGvU,QAAQ,CAACpc,aAAa,CAAC,OAAO,CAAC;QACvC2wB,KAAK,CAACtxB,IAAI,GAAG,QAAQ;AACrBsxB,QAAAA,KAAK,CAACngB,YAAY,CAAC,yBAAyB,EAAE9J,GAAG,CAAC;AAClD6tB,QAAAA,IAAI,CAACnD,WAAW,CAACT,KAAK,CAAC;AACxB,MAAA;MACDA,KAAK,CAAC9uB,IAAI,GAAGu2B,QAAQ;AACrBzH,MAAAA,KAAK,CAACngB,YAAY,CAAC,kBAAkB,EAAE4nB,QAAQ,CAAC;MAChDzH,KAAK,CAACzY,KAAK,GAAGA,KAAK;AACrB,IAAA,CAAC,CAAC;EACJ,CAAC;AAEO+c,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA41B,aAAa,GAArB,UAAsBN,QAA0B,EAAA;IAC9C,IAAIA,QAAQ,CAACoC,MAAM,EAAE;MACnB,IAAMC,QAAM,GAAG,IAAI,CAACppB,OAAO,CAACqpB,UAAU,IAAK,UAAC11B,GAAW,EAAA;AAAK,QAAA,OAAAyU,MAAM,CAACqD,IAAI,CAAC9X,GAAG,EAAE,QAAQ,CAAC;MAA1B,CAA2B;AACvF,MAAA,IAAM21B,GAAG,GAAGF,QAAM,CAACrC,QAAQ,CAACpzB,GAAG,CAAC;MAChC,IAAI,CAAC21B,GAAG,EAAE;AACR,QAAA,OAAO,KAAK;AACb,MAAA;MACD,IAAI;QACFA,GAAG,CAACC,MAAM,GAAG,IAAI;MAClB,CAAA,CAAC,OAAOz3B,CAAC,EAAE;AACV;AAAA,MAAA;AAEF,MAAA,OAAO,IAAI;AACZ,IAAA;AACD,IAAA,IAAM03B,MAAM,GAAG1c,QAAQ,CAACpc,aAAa,CAAC,GAAG,CAAC;AAC1C84B,IAAAA,MAAM,CAAC55B,IAAI,GAAGm3B,QAAQ,CAACpzB,GAAG;IAC1B,IAAIozB,QAAQ,CAAC0C,QAAQ,EAAE;AACrBD,MAAAA,MAAM,CAACtoB,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;AACpC,IAAA;AACDsoB,IAAAA,MAAM,CAACnb,KAAK,CAACwF,OAAO,GAAG,MAAM;AAC7B/G,IAAAA,QAAQ,CAAC1Y,IAAI,CAAC0tB,WAAW,CAAC0H,MAAM,CAAC;IACjCA,MAAM,CAACE,KAAK,EAAE;IACdF,MAAM,CAAC1Z,MAAM,EAAE;AACf,IAAA,OAAO,IAAI;EACb,CAAC;EAEO6V,4BAAA,CAAAl0B,SAAA,CAAAy1B,gBAAgB,GAAxB,UAAyBxU,IAAuB,EAAEqU,QAA0B,EAAA;IAC1E,IAAIA,QAAQ,CAAC0C,QAAQ,EAAE;AACrB/W,MAAAA,IAAI,CAACxR,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;AAClC,IAAA,CAAA,MAAM;AACLwR,MAAAA,IAAI,CAAC0V,eAAe,CAAC,UAAU,CAAC;AACjC,IAAA;IACD,IAAIrB,QAAQ,CAACoC,MAAM,EAAE;AACnBzW,MAAAA,IAAI,CAACxR,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACrCwR,MAAAA,IAAI,CAACxR,YAAY,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAChD,IAAA,CAAA,MAAM;AACLwR,MAAAA,IAAI,CAAC0V,eAAe,CAAC,QAAQ,CAAC;AAC9B1V,MAAAA,IAAI,CAAC0V,eAAe,CAAC,KAAK,CAAC;AAC5B,IAAA;EACH,CAAC;AAED;EAEAzC,4BAAA,CAAAl0B,SAAA,CAAA40B,aAAa,GAAb,UAAcjkB,IAAiB,EAAEsiB,MAAmB,EAAA;IAClD,IAAM/wB,GAAG,GAAG+wB,MAAM,CAACjD,YAAY,CAAC,uBAAuB,CAAC,IAAI,EAAE;IAC9D,IAAMyH,QAAQ,GAAGxE,MAAM,CAACjD,YAAY,CAAC,4BAA4B,CAAC,IAAI,EAAE;IACxE,IAAMO,IAAI,GAAG0C,MAAM,CAACzN,OAAO,CAAcsN,SAAS,CAACvC,IAAI,CAAC;AACxD,IAAA,IAAIA,IAAI,EAAE;AACRwD,MAAAA,OAAO,CAACxD,IAAI,CAAC3e,gBAAgB,CAAckhB,SAAS,CAACG,MAAM,CAAC,CAAC,CAACzqB,OAAO,CAAC,UAAC0vB,KAAK,EAAA;AAC1EA,QAAAA,KAAK,CAACzoB,YAAY,CAAC,eAAe,EAAEyoB,KAAK,KAAKjF,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAC1E,MAAA,CAAC,CAAC;AACH,IAAA;AACDtiB,IAAAA,IAAI,CAAClB,YAAY,CAAC,uBAAuB,EAAEvN,GAAG,CAAC;AAC/CyO,IAAAA,IAAI,CAAClB,YAAY,CAAC,4BAA4B,EAAEgoB,QAAQ,CAAC;IACzD,IAAM1E,OAAO,GAAGpiB,IAAI,CAACgO,aAAa,CAAoBmU,SAAS,CAACC,OAAO,CAAC;IACxE,IAAIA,OAAO,IAAI7wB,GAAG,EAAE;AAClB6wB,MAAAA,OAAO,CAACtjB,YAAY,CAAC,MAAM,EAAEvN,GAAG,CAAC;AAClC,IAAA;IACD,IAAMyP,OAAO,GAAGhB,IAAI,CAACgO,aAAa,CAAcmU,SAAS,CAACnhB,OAAO,CAAC;AAClE,IAAA,IAAIA,OAAO,EAAE;AACXA,MAAAA,OAAO,CAAC+e,WAAW,GAAG,CAACuC,MAAM,CAACvC,WAAW,IAAI,EAAE,EAAE5qB,IAAI,EAAE;AACxD,IAAA;EACH,CAAC;AAEOouB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA80B,aAAa,GAArB,UAAsB9B,MAAmB,EAAA;IACvC,OAAOe,OAAO,CAACf,MAAM,CAACphB,gBAAgB,CAAckhB,SAAS,CAACG,MAAM,CAAC,CAAC;EACxE,CAAC;AAEOiB,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA20B,UAAU,GAAlB,UAAmB3B,MAAmB,EAAA;AACpC,IAAA,IAAI,CAAC0B,WAAW,CAAC,KAAK,CAAC;IACvB,IAAMllB,MAAM,GAAGwjB,MAAM,CAACrU,aAAa,CAAcmU,SAAS,CAACtjB,MAAM,CAAC;IAClE,IAAM+gB,IAAI,GAAGyC,MAAM,CAACrU,aAAa,CAAcmU,SAAS,CAACvC,IAAI,CAAC;AAC9D,IAAA,IAAI,CAAC/gB,MAAM,IAAI,CAAC+gB,IAAI,EAAE;AACpB,MAAA;AACD,IAAA;IACD,IAAI,CAAC8D,UAAU,GAAGrB,MAAM;IACxBzC,IAAI,CAACtD,MAAM,GAAG,KAAK;AACnBzd,IAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC5C,IAAA,IAAMlB,OAAO,GAAG,IAAI,CAACumB,aAAa,CAAC9B,MAAM,CAAC;AAC1C,IAAA,IAAM9jB,QAAQ,GAAGqhB,IAAI,CAAC5R,aAAa,CAAc,wBAAwB,CAAC,IAAIpQ,OAAO,CAAC,CAAC,CAAC;AACxF,IAAA,IAAI,CAACwmB,eAAe,CAAC7lB,QAAQ,CAAC;IAC9BqhB,IAAI,CAAC/T,KAAK,EAAE;IACZnB,QAAQ,CAAClL,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC8kB,qBAAqB,EAAE,IAAI,CAAC;EAC5E,CAAC;AAEOf,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA00B,WAAW,GAAnB,UAAoByD,WAAoB,EAAA;AACtC,IAAA,IAAMnF,MAAM,GAAG,IAAI,CAACqB,UAAU;IAC9B,IAAI,CAACrB,MAAM,EAAE;AACX,MAAA;AACD,IAAA;IACD,IAAI,CAACqB,UAAU,GAAG,IAAI;IACtBhZ,QAAQ,CAAC7K,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAACykB,qBAAqB,EAAE,IAAI,CAAC;IAC7E,IAAMzlB,MAAM,GAAGwjB,MAAM,CAACrU,aAAa,CAAcmU,SAAS,CAACtjB,MAAM,CAAC;IAClE,IAAM+gB,IAAI,GAAGyC,MAAM,CAACrU,aAAa,CAAcmU,SAAS,CAACvC,IAAI,CAAC;AAC9D,IAAA,IAAIA,IAAI,EAAE;MACRA,IAAI,CAACtD,MAAM,GAAG,IAAI;AAClBsD,MAAAA,IAAI,CAACoG,eAAe,CAAC,uBAAuB,CAAC;AAC9C,IAAA;IACD,IAAI,CAAC7B,aAAa,CAAC9B,MAAM,CAAC,CAACxqB,OAAO,CAAC,UAACyqB,MAAM,EAAA;AAAK,MAAA,OAAAA,MAAM,CAAC1jB,SAAS,CAAC8O,MAAM,CAACsV,mBAAmB,CAAC;AAA5C,IAAA,CAA4C,CAAC;AAC5F,IAAA,IAAInkB,MAAM,EAAE;AACVA,MAAAA,MAAM,CAACC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAC7C,MAAA,IAAI0oB,WAAW,EAAE;QACf3oB,MAAM,CAACgN,KAAK,EAAE;AACf,MAAA;AACF,IAAA;EACH,CAAC;AAEO0X,EAAAA,4BAAA,CAAAl0B,SAAA,CAAA+0B,eAAe,GAAvB,UAAwB9B,MAA+B,EAAA;AACrD,IAAA,IAAI,CAACA,MAAM,IAAI,CAAC,IAAI,CAACoB,UAAU,EAAE;AAC/B,MAAA;AACD,IAAA;IACD,IAAM9D,IAAI,GAAG,IAAI,CAAC8D,UAAU,CAAC1V,aAAa,CAAcmU,SAAS,CAACvC,IAAI,CAAC;AACvE,IAAA,IAAI,CAACuE,aAAa,CAAC,IAAI,CAACT,UAAU,CAAC,CAAC7rB,OAAO,CAAC,UAAC0vB,KAAK,EAAA;MAChDA,KAAK,CAAC3oB,SAAS,CAACC,MAAM,CAACmkB,mBAAmB,EAAEuE,KAAK,KAAKjF,MAAM,CAAC;AAC/D,IAAA,CAAC,CAAC;AACF,IAAA,IAAI1C,IAAI,IAAI0C,MAAM,CAACpxB,EAAE,EAAE;MACrB0uB,IAAI,CAAC9gB,YAAY,CAAC,uBAAuB,EAAEwjB,MAAM,CAACpxB,EAAE,CAAC;AACtD,IAAA;IACDoxB,MAAM,CAACnc,cAAc,CAAC;AAAEE,MAAAA,KAAK,EAAE;AAAS,KAAE,CAAC;EAC7C,CAAC;AAED;EAEQkd,4BAAA,CAAAl0B,SAAA,CAAAs1B,QAAQ,GAAhB,UAAiB3kB,IAAiB,EAAEoiB,OAA0B,EAAA;AAC5D,IAAA,IAAM5a,IAAI,GAAGxH,IAAI,CAAColB,OAAO;IACzB,OAAO;AACLlvB,MAAAA,KAAK,EAAEsR,IAAI,CAACigB,gBAAgB,IAAI,EAAE;AAClCl2B,MAAAA,GAAG,EAAE8xB,WAAW,CAACjB,OAAO,CAAC/C,YAAY,CAAC,MAAM,CAAC,IAAI7X,IAAI,CAACkgB,cAAc,IAAI,EAAE,CAAC;AAC3E/5B,MAAAA,IAAI,EAAE6Z,IAAI,CAACmgB,eAAe,IAAI,EAAE;AAChCb,MAAAA,QAAQ,EAAEtf,IAAI,CAACogB,mBAAmB,IAAI,EAAE;AACxC9yB,MAAAA,MAAM,EAAE0S,IAAI,CAACqgB,iBAAiB,IAAI,EAAE;AACpC95B,MAAAA,QAAQ,EAAEyZ,IAAI,CAACsgB,mBAAmB,KAAK,MAAM;AAC7CT,MAAAA,QAAQ,EAAEjF,OAAO,CAAC2F,YAAY,CAAC,UAAU,CAAC;AAC1ChB,MAAAA,MAAM,EAAE3E,OAAO,CAAC/C,YAAY,CAAC,QAAQ,CAAC,KAAK;KAC5C;EACH,CAAC;EAEOkE,4BAAA,CAAAl0B,SAAA,CAAAy0B,KAAK,GAAb,UAAca,QAA0B,EAAEqD,UAAiC,EAAA;AACzE,IAAA,IAAMC,MAAM,GAA8B;MACxC/xB,KAAK,EAAEyuB,QAAQ,CAACzuB,KAAK;MACrB3E,GAAG,EAAEozB,QAAQ,CAACpzB,GAAG;MACjB5D,IAAI,EAAEg3B,QAAQ,CAACh3B,IAAI;MACnBm5B,QAAQ,EAAEnC,QAAQ,CAACmC,QAAQ;MAC3BhyB,MAAM,EAAE6vB,QAAQ,CAAC7vB,MAAM;MACvB/G,QAAQ,EAAE42B,QAAQ,CAAC52B,QAAQ;AAC3Bm6B,MAAAA,KAAK,EAAE,IAAI,CAAC5C,OAAO,EAAE;MACrB6C,QAAQ,EAAE,IAAI,CAACviB,IAAI,CAACwf,OAAO,CAACU,mBAAmB,IAAI,EAAE;AACrDkC,MAAAA,UAAU,EAAAA,UAAA;MACVI,SAAS,EAAE,IAAI,CAACxiB,IAAI,CAACwf,OAAO,CAACW,oBAAoB,IAAI;KACtD;IACD,IAAI;AACF,MAAA,IAAI,CAACjwB,SAAS,EAAE,CAAC4N,IAAI,CAAC;AAAE6F,QAAAA,KAAK,EAAE,cAAc;AAAE8d,QAAAA,QAAQ,EAAEY;AAAM,OAAE,CAAC;IACnE,CAAA,CAAC,OAAOv4B,CAAC,EAAE;AACV;AAAA,IAAA;IAEF,IAAI,CAACkW,IAAI,CAACyiB,aAAa,CAAC,IAAIC,WAAW,CAACrG,kBAAkB,EAAE;AAAEsG,MAAAA,OAAO,EAAE,IAAI;AAAEN,MAAAA,MAAM;AAAA,KAAE,CAAC,CAAC;EACzF,CAAC;AAEO1E,EAAAA,4BAAA,CAAAl0B,SAAA,CAAAyG,SAAS,GAAjB,YAAA;AACE,IAAA,IAAI,IAAI,CAAC8H,OAAO,CAAC9H,SAAS,EAAE;AAC1B,MAAA,OAAO,IAAI,CAAC8H,OAAO,CAAC9H,SAAS;AAC9B,IAAA;IACD,IAAM0yB,CAAC,GAAGxiB,MAA6C;AACvDwiB,IAAAA,CAAC,CAAC1yB,SAAS,GAAG0yB,CAAC,CAAC1yB,SAAS,IAAI,EAAE;IAC/B,OAAO0yB,CAAC,CAAC1yB,SAAS;EACpB,CAAC;AACH,EAAA,OAAAytB,4BAAC;AAAD,CAAC;;AChmBD;AACO,IAAMkF,4BAA4B,GAA8B;AACrEpB,EAAAA,QAAQ,EAAE,cAAc;AACxBhe,EAAAA,IAAI,EAAE,+BAA+B;AACrCqf,EAAAA,aAAa,EAAE,UAAU;AACzBC,EAAAA,SAAS,EAAE,MAAM;AACjB5B,EAAAA,MAAM,EAAE,sBAAsB;AAC9BD,EAAAA,QAAQ,EAAE,UAAU;AACpBn5B,EAAAA,IAAI,EAAE,MAAM;AACZ2gB,EAAAA,IAAI,EAAE,MAAM;AACZzG,EAAAA,KAAK,EAAE,OAAO;AACd+gB,EAAAA,WAAW,EAAE,+BAA+B;AAC5CC,EAAAA,YAAY,EAAE,WAAW;AACzBC,EAAAA,WAAW,EAAE,iFAAiF;AAC9FC,EAAAA,gBAAgB,EAAE,cAAc;AAChCC,EAAAA,UAAU,EAAE,yBAAyB;AACrCC,EAAAA,gBAAgB,EAAE;;AA8CpB,IAAMz4B,WAAW,GAAG,4CAA4C;AAEhE,IAAM04B,MAAM,GAAG,UAACC,QAAgB,EAAE3iB,KAAa;AAAa,EAAA,OAAA2iB,QAAQ,CAACx1B,OAAO,CAAC,KAAK,EAAE6S,KAAK,CAAC;AAA9B,CAA8B;AAE1F;AACA;AACA;IAEa4iB,kBAAkB,GAAsC,UAACl8B,EAiBrE,EAAA;AAhBC,EAAA,IAAAiT,KAAK,GAAAjT,EAAA,CAAAiT,KAAA;IACLioB,SAAS,GAAAl7B,EAAA,CAAAk7B,SAAA;IACTh7B,EAAA,GAAAF,EAAA,CAAAwJ,MAAiB;IAAjBA,MAAM,GAAAtJ,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAAA,EAAA;IACjBE,EAAA,GAAAJ,EAAA,CAAAg7B,KAAa;IAAbA,KAAK,GAAA56B,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;IACbI,EAAA,GAAAR,EAAA,CAAAi7B,QAAa;IAAbA,QAAQ,GAAAz6B,EAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,EAAA;IACbE,EAAA,GAAAV,EAAA,CAAAm8B,UAAsB;IAAtBA,UAAU,GAAAz7B,EAAA,KAAA,MAAA,GAAG,SAAS,GAAAA,EAAA;IACtBE,kBAAmB;IAAnBw7B,UAAU,GAAAx7B,EAAA,KAAA,MAAA,GAAG,MAAM,GAAAA,EAAA;IACnBuF,UAAU,GAAAnG,EAAA,CAAAmG,UAAA;IACVk2B,UAAU,GAAAr8B,EAAA,CAAAq8B,UAAA;IACVj2B,MAAM,YAAA;IACNL,EAAA,GAAA/F,EAAA,CAAAs8B,iBAAsB;IAAtBA,iBAAiB,mBAAG,EAAE,GAAAv2B,EAAA;IACbw2B,eAAe,aAAA;IACxB5G,IAAI,GAAA31B,EAAA,CAAA21B,IAAA;IACJ1vB,kBAAkB;IAAlBu2B,UAAU,GAAAv2B,EAAA,KAAA,MAAA,GAAG,KAAK,KAAA;IAClBtF,SAAS,GAAAX,EAAA,CAAAW,SAAA;IACT87B,iBAAiB,GAAAz8B,EAAA,CAAAy8B,iBAAA;AAEjB,EAAA,IAAMC,OAAO,GAAAj7B,QAAA,CAAAA,QAAA,CAAA,EAAA,EAAQ85B,4BAA4B,CAAA,EAAKgB,eAAe,CAAE;EACvE,IAAMpf,OAAO,GAAG3W,KAAK,EAAE,CAACC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;AACtD,EAAA,IAAMk2B,KAAK,GAAGzB,SAAS,KAAA,IAAA,IAATA,SAAS,KAAA,MAAA,GAATA,SAAS,GAAI,uBAAA,CAAAn6B,MAAA,CAAwBoc,OAAO,CAAE;AAC5D,EAAA,IAAMib,OAAO,GAAG4C,KAAK,IAAI,CAACwB,UAAU;AACpC,EAAA,IAAM7P,KAAK,GAAG1Z,KAAK,CAAChR,MAAM,GAAG,CAAC;AAC9B,EAAA,IAAM26B,QAAQ,GAAGR,UAAU,KAAK,OAAO;AACvC,EAAA,IAAMjpB,OAAO,GAAGC,MAAM,CAAiB,IAAI,CAAC;AAE5C;AACAS,EAAAA,SAAS,CAAC,YAAA;AACR,IAAA,IAAI2oB,UAAU,IAAI,CAACrpB,OAAO,CAACW,OAAO,EAAE;IACpC,IAAM+oB,UAAU,GAAG,IAAIxG,4BAA4B,CAACljB,OAAO,CAACW,OAAO,EAAE2oB,iBAAiB,CAAC;IACvFI,UAAU,CAAC5E,IAAI,EAAE;AACjB,IAAA,OAAO,YAAA;AAAM,MAAA,OAAA4E,UAAU,CAACnqB,OAAO,EAAE;IAApB,CAAoB;AACnC,EAAA,CAAC,EAAE,CAAC8pB,UAAU,EAAEC,iBAAiB,CAAC,CAAC;EAEnC,oBACEt7B,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACET,IAAAA,SAAS,EAAE,CACT,sBAAsB,EACtB2C,WAAW,EACX6C,UAAU,IAAI,2BAAA,CAAApF,MAAA,CAA4BoF,UAAU,CAAE,EACtDk2B,UAAU,IAAI,6BAAA,CAAAt7B,MAAA,CAA8Bs7B,UAAU,CAAE,EACxDj2B,MAAM,IAAI,+BAAA,CAAArF,MAAA,CAAgCqF,MAAM,CAAE,EAClDzF,SAAS,CACV,CACEK,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;GAAE,eAEbC,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACE6S,IAAAA,GAAG,EAAEd,OAAQ;AACbxS,IAAAA,SAAS,EAAC,iCAAiC;AAC3C,IAAA,aAAA,EAAa67B,UAAU,GAAGl7B,SAAS,GAAG,kBAAmB;AACzD,IAAA,8BAAA,EAA8Bq7B,KAAM;AACpC,IAAA,0BAAA,EAA0BnzB,MAAO;AACjC,IAAA,yBAAA,EAAyB4uB,OAAO,GAAG,MAAM,GAAG,OAAQ;AACpD,IAAA,6BAAA,EAA6BA,OAAO,GAAG6C,QAAQ,GAAG35B,SAAU;AAC5D,IAAA,6BAAA,EAA6B82B,OAAO,GAAGuE,KAAK,GAAGr7B,SAAU;AACzD,IAAA,4BAAA,EAA4Bg7B,iBAAiB,CAACtzB,KAAK,IAAI1H,SAAU;AACjE,IAAA,0BAAA,EAA0Bg7B,iBAAiB,CAACj4B,GAAG,IAAI/C,SAAU;IAC7D,+BAAA,EAA+Bg7B,iBAAiB,CAAC1C,QAAQ,IAAIt4B;AAAU,GAAA,EAEtEqrB,KAAK,iBACJxrB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,6BAA6B;AAACwT,IAAAA,IAAI,EAAC;GAAM,EACpDlB,KAAK,CAACtL,GAAG,CAAC,UAACmL,IAAI,EAAEjL,KAAK,EAAA;;AACrB,IAAA,IAAMi1B,GAAG,GAAG,EAAA,CAAA/7B,MAAA,CAAG47B,KAAK,EAAA,QAAA,CAAA,CAAA57B,MAAA,CAAS8G,KAAK,CAAE;AACpC,IAAA,IAAMmV,MAAM,GAAGlK,IAAI,CAAClL,MAAM,KAAK,MAAM;IACrC,IAAMiyB,MAAM,GAAG,CAAC,CAAC/mB,IAAI,CAACjS,QAAQ,IAAImc,MAAM;AACxC,IAAA,IAAM+f,QAAQ,GAAG,CAAA/8B,EAAA,GAAA8S,IAAI,CAACiqB,QAAQ,MAAA,IAAA,IAAA/8B,EAAA,KAAA,MAAA,GAAAA,EAAA,GAAI,EAAE;AACpC,IAAA,IAAM8T,OAAO,GAAGipB,QAAQ,CAAC,CAAC,CAAC;IAE3B,oBACE57B,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC,4BAA4B;MAACmH,GAAG,EAAEgL,IAAI,CAAC9O;KAAG,eACtD7C,KAAA,CAAAC,aAAA,CAAA,SAAA,EAAA;AACET,MAAAA,SAAS,EAAC,4BAA4B;AACtC,MAAA,iBAAA,EAAiB,EAAA,CAAAI,MAAA,CAAG+7B,GAAG,WAAS;AAChC,MAAA,wBAAA,EAAuB,EAAE;MACzB,sBAAA,EAAsBhqB,IAAI,CAAC9O,EAAG;MAC9B,yBAAA,EAAyB8O,IAAI,CAAC9J,KAAM;MACpC,wBAAA,EAAwB8J,IAAI,CAACrS,IAAK;MAClC,0BAAA,EAA0BqS,IAAI,CAAClL,MAAO;AACtC,MAAA,4BAAA,EAA4BkL,IAAI,CAACjS,QAAQ,GAAG,MAAM,GAAG,OAAQ;MAC7D,uBAAA,EAAuBiS,IAAI,CAACzO,GAAI;AAChC,MAAA,4BAAA,EAA4ByP,OAAO,aAAPA,OAAO,KAAA,MAAA,GAAA,MAAA,GAAPA,OAAO,CAAEkpB;KAAa,eAElD77B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;MACET,SAAS,EAAE,6BAAA,CAAAI,MAAA,CACT+R,IAAI,CAACzN,QAAQ,GAAG,EAAE,GAAG,2CAA2C;AAC/D,KAAA,EAEFyN,IAAI,CAACzN,QAAQ,gBACZlE,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,MAAAA,SAAS,EAAC,6BAA6B;MACvCsG,GAAG,EAAE6L,IAAI,CAACzN,QAAS;AACnB6B,MAAAA,GAAG,EAAC,EAAE;AACNC,MAAAA,OAAO,EAAC,MAAM;AACd81B,MAAAA,QAAQ,EAAC;AAAO,KAAA,CAChB,gBAEF97B,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,MAAAA,SAAS,EAAC,iEAAiE;MAC3E,aAAA,EAAY;AAAM,KAAA,CAGnB,CAEL,eAAAQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAA4B,eACzCQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC,6BAA6B;AAACqD,MAAAA,EAAE,EAAE,EAAA,CAAAjD,MAAA,CAAG+7B,GAAG,EAAA,QAAA;KAAS,EAC5DhqB,IAAI,CAAC9J,KACJ,CACJ,EAAC8J,IAAI,CAAC7J,WAAW,iBACf9H,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,MAAAA,SAAS,EAAC;AAAmC,KAAA,EAAEmS,IAAI,CAAC7J,WAAe,CACvE,EACA,CAAC6J,IAAI,CAACrS,IAAI,IAAIqS,IAAI,CAACsO,IAAI,kBACtBjgB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;AAA4B,KAAA,EACvCmS,IAAI,CAACrS,IAAI,iBACRU,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAuE,eACpFQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;KAAqB,EAAE+7B,OAAO,CAACj8B,IAAS,CACtD,eAAAU,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK0R,IAAI,CAACrS,IAAS,CAChB,CACN,EACAqS,IAAI,CAACsO,IAAI,iBACRjgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;KAAuE,eACpFQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,MAAAA,SAAS,EAAC;AAAqB,KAAA,EAAE+7B,OAAO,CAACtb,IAAS,CACtD,eAAAjgB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK0R,IAAI,CAACsO,IAAS,CAChB,CAEL,CAEH,CAEL,eAAAjgB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC;AAA+B,KAAA,eAC5CQ,KAAA,CAAAC,aAAA,CAAC8B,YAAY,EAAA;AACX/C,MAAAA,OAAO,EAAEg8B,UAAW;AACpBh5B,MAAAA,gBAAgB,EAAC,2BAA2B;AAC5CxC,MAAAA,SAAS,EAAE,EAAA,CAAAI,MAAA,CAAG67B,QAAQ,GAAG,EAAE,GAAG,mBAAmB,EAAA,+BAAA,CAAgC;MACjFt8B,IAAI,EAAEwS,IAAI,CAACzO,GAAI;AACf,MAAA,2BAAA,EAA0B,EAAE;AAC5B,MAAA,eAAA,EAAe+zB,OAAO,GAAG,QAAQ,GAAG92B,SAAU;AAC9C,MAAA,eAAA,EAAe82B,OAAO,GAAGuE,KAAK,GAAGr7B,SAAU;MAC3C64B,QAAQ,EAAE,CAACrnB,IAAI,CAACjS,QAAQ,IAAI,CAACmc,MAAM,GAAG,EAAE,GAAG1b,SAAU;AACrDC,MAAAA,MAAM,EAAEs4B,MAAM,GAAG,QAAQ,GAAGv4B,SAAU;AACtCE,MAAAA,GAAG,EAAEq4B,MAAM,GAAG,qBAAqB,GAAGv4B,SAAU;AAChD8B,MAAAA,IAAI,EACFw5B,QAAQ,GAAGt7B,SAAS,gBAClBH,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,QAAAA,SAAS,EAAC,iEAAiE;QAC3E,aAAA,EAAY;OAAM;KAGvB,EAEAi8B,QAAQ,gBACPz7B,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAyM,QAAA,EAAA,IAAA,EACGoP,MAAM,GAAG0f,OAAO,CAACjB,SAAS,GAAGiB,OAAO,CAAClB,aAAa,eACnDr6B,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;KAAqB,EAClC,GAAG,EACHmS,IAAI,CAAC9J,KAAK,EACVgU,MAAM,IAAI,GAAA,CAAAjc,MAAA,CAAI27B,OAAO,CAAC7C,MAAM,CACzB,CACR,CAAG,gBAEH14B,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC;KAAqB,EAClCq7B,MAAM,CAAChf,MAAM,GAAG0f,OAAO,CAACvgB,IAAI,GAAGugB,OAAO,CAACvC,QAAQ,EAAErnB,IAAI,CAAC9J,KAAK,CACxD,CAEI,CAEd,EAAC+zB,QAAQ,CAAC96B,MAAM,GAAG,CAAC,iBAClBd,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,MAAAA,SAAS,EAAC,gCAAgC;MAAC,mCAAA,EAAkC;KAAE,eAClFQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AAAMT,MAAAA,SAAS,EAAC,qBAAqB;AAACqD,MAAAA,EAAE,EAAE,EAAA,CAAAjD,MAAA,CAAG+7B,GAAG,EAAA,aAAA;AAAc,KAAA,EAC3DJ,OAAO,CAAC9C,QACL,CACN,eAAAz4B,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,MAAAA,IAAI,EAAC,QAAQ;AACbE,MAAAA,SAAS,EAAC,uCAAuC;MACjDqD,EAAE,EAAE,UAAG84B,GAAG,EAAA,cAAA,CAAe;AACzB,MAAA,eAAA,EAAc,SAAS;AACvB,MAAA,eAAA,EAAc,OAAO;AACrB,MAAA,eAAA,EAAe,UAAGA,GAAG,EAAA,YAAA,CAAa;AAClC,MAAA,iBAAA,EAAiB,EAAA,CAAA/7B,MAAA,CAAG+7B,GAAG,yBAAeA,GAAG,EAAA,cAAA,CAAe;MACxD,mCAAA,EAAkC;KAAE,eAEpC37B,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,MAAAA,SAAS,EAAC,gEAAgE;MAC1E,aAAA,EAAY;AAAM,KAAA,CAEpB,eAAAQ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,MAAAA,SAAS,EAAC,wCAAwC;MAClD,oCAAA,EAAmC;KAAE,EAEpCmT,OAAO,KAAA,IAAA,IAAPA,OAAO,uBAAPA,OAAO,CAAEopB,aACN,CACA,CACR,eAAA/7B,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AACET,MAAAA,SAAS,EAAC,qCAAqC;MAC/CqD,EAAE,EAAE,UAAG84B,GAAG,EAAA,YAAA,CAAa;AACvB3oB,MAAAA,IAAI,EAAC,SAAS;MACdyV,QAAQ,EAAE,EAAG;AACb,MAAA,iBAAA,EAAiB,UAAGkT,GAAG,EAAA,aAAA,CAAc;MACrC1N,MAAM,EAAA;KAAA,EAEL2N,QAAQ,CAACp1B,GAAG,CAAC,UAACxH,OAAO,EAAEg9B,YAAY,EAAA;MAAK,oBACvCh8B,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;QACE0G,GAAG,EAAE3H,OAAO,CAAC68B,YAAa;AAC1Br8B,QAAAA,SAAS,EAAC,uCAAuC;AACjDwT,QAAAA,IAAI,EAAC,QAAQ;AACbnQ,QAAAA,EAAE,EAAE,EAAA,CAAAjD,MAAA,CAAG+7B,GAAG,EAAA,QAAA,CAAA,CAAA/7B,MAAA,CAASo8B,YAAY,CAAG;AAClC,QAAA,eAAA,EAAeh9B,OAAO,CAACkR,QAAQ,GAAG,MAAM,GAAG,OAAQ;QACnD,4BAAA,EAA4BlR,OAAO,CAAC68B,YAAa;AACjD,QAAA,uBAAA,EAAuB78B,OAAO,CAACkE;OAAI,EAElClE,OAAO,CAAC+8B,aACP,CAAC;AAXkC,IAAA,CAYxC,CACC,CACD,CAEJ,CACE,CACP,CAAC;EAET,CAAC,CACC,CACL,EAEA,CAACvQ,KAAK,IAAI6P,UAAU,iBACnBr7B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,gBAAgB;AAAC,IAAA,gBAAA,EAAgB+7B,OAAO,CAACX;GAAiB,CAC1E,EACAf,KAAK,IAAIwB,UAAU,iBAClBr7B,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;AAAmC,GAAA,EAAEq7B,MAAM,CAACU,OAAO,CAACZ,UAAU,EAAEb,QAAQ,CAAK,CAC3F,EAEA7C,OAAO,iBACNj3B,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACET,IAAAA,SAAS,EAAC,8BAA8B;AACxCqD,IAAAA,EAAE,EAAE24B,KAAM;AACV,IAAA,iBAAA,EAAiB,EAAA,CAAA57B,MAAA,CAAG47B,KAAK,EAAA,QAAA,CAAS;IAClC,0BAAA,EAAyB;GAAE,eAE3Bx7B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAoC,eACjDQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC;GAAqC,eAClDQ,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,oCAAoC;AAACqD,IAAAA,EAAE,EAAE,EAAA,CAAAjD,MAAA,CAAG47B,KAAK,EAAA,QAAA;AAAS,GAAA,EACrED,OAAO,CAAChB,WACP,CACJ,eAAAv6B,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC,oCAAoC;IAAC,gCAAA,EAA+B;AAAE,GAAA,CACnF,eAAAQ,KAAA,CAAAC,aAAA,CAAA,QAAA,EAAA;AACEX,IAAAA,IAAI,EAAC,QAAQ;AACbE,IAAAA,SAAS,EAAC,oCAAoC;IAC9C,YAAA,EAAY+7B,OAAO,CAAC/hB,KAAM;IAC1B,gCAAA,EAA+B;GAAE,eAEjCxZ,KAAA,CAAAC,aAAA,CAAA,MAAA,EAAA;AACET,IAAAA,SAAS,EAAC,8DAA8D;IACxE,aAAA,EAAY;AAAM,GAAA,CAEd,CACL,CACL,eAAAQ,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,mCAAmC;IAAC,+BAAA,EAA8B;AAAE,GAAA,EAChFg1B,IACE,CACL,eAAAx0B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AAAKT,IAAAA,SAAS,EAAC,sCAAsC;AAAC,IAAA,kCAAA,EAAiC,EAAE;IAACyuB,MAAM,EAAA;GAAA,eAC9FjuB,KAAA,CAAAC,aAAA,CAAA,IAAA,EAAA;AAAIT,IAAAA,SAAS,EAAC,4CAA4C;AAACipB,IAAAA,QAAQ,EAAE;AAAG,GAAA,EACrE8S,OAAO,CAACf,YACP,CACJ,eAAAx6B,KAAA,CAAAC,aAAA,CAAA,GAAA,EAAA;AAAGT,IAAAA,SAAS,EAAC;GAA2C,EAAE+7B,OAAO,CAACd,WAAe,CACjF,eAAAz6B,KAAA,CAAAC,aAAA,CAAC8B,YAAY,EAAA;AACX/C,IAAAA,OAAO,EAAEg8B,UAAW;AACpBh5B,IAAAA,gBAAgB,EAAC,mCAAmC;AACpDxC,IAAAA,SAAS,EAAC,oCAAoC;AAC9CL,IAAAA,IAAI,EAAC,GAAG;IACR,gCAAA,EAA+B;GAAE,EAEhCo8B,OAAO,CAACb,gBACG,CACX,CACF,CACC,CAEP,CACE,CAAC;AAEd;;AC/ZA;;;;AAIG;AACG,SAAUuB,sBAAsBA,CAAC1kB,IAAqB,EAAA;AAArB,EAAA,IAAAA,IAAA,KAAA,MAAA,EAAA;AAAAA,IAAAA,IAAA,GAAAI,MAAqB;AAAA,EAAA;AAC1DJ,EAAAA,IAAI,CAAC8E,QAAQ,CACVzJ,gBAAgB,CAAc,kCAAkC,CAAC,CACjEpJ,OAAO,CAAC,UAAC0yB,OAAO,EAAA;IAAK,OAAA,IAAIhH,4BAA4B,CAACgH,OAAO,CAAC,CAACpF,IAAI,EAAE;AAAhD,EAAA,CAAgD,CAAC;AAC3E;;ACDO,IAAMqF,mBAAmB,GAAuC,UAACt9B,EAGvE,EAAA;AAFC,EAAA,IAAAmJ,IAAI,UAAA;IACJjJ,EAAA,GAAAF,EAAA,CAAAu9B,gBAAwB;IAAxBA,gBAAgB,GAAAr9B,EAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,EAAA;EACpB,oBACJiB,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;AACET,IAAAA,SAAS,EAAE,CACT,UAAU,EACV48B,gBAAgB,GAAG,8BAA8B,GAAG,EAAE,CACvD,CACEv8B,MAAM,CAACC,OAAO,CAAC,CACfC,IAAI,CAAC,GAAG;AACX;AAAA;AACA8yB,IAAAA,uBAAuB,EAAE;AAAEC,MAAAA,MAAM,EAAE9qB;AAAI;AAAG,GAAA,CAC1C;AAVE,CAWL;;ACYD,IAAMq0B,eAAe,GAAG;AACtBz9B,EAAAA,SAAS,EAAAA,SAAA;AACT2E,EAAAA,SAAS,EAAAA,SAAA;AACTsO,EAAAA,WAAW,EAAAA,WAAA;AACXqB,EAAAA,OAAO,EAAAA,OAAA;AACPO,EAAAA,QAAQ,EAAAA,QAAA;AACRK,EAAAA,gBAAgB,EAAAA,gBAAA;AAChBmC,EAAAA,aAAa,EAAAA,aAAA;AACbS,EAAAA,eAAe,EAAAA,eAAA;AACfqD,EAAAA,aAAa,EAAAA,aAAA;AACbS,EAAAA,OAAO,EAAAA,OAAA;AACPC,EAAAA,aAAa,EAAAA,aAAA;AACbgB,EAAAA,mBAAmB,EAAAA,mBAAA;AACnBsB,EAAAA,gBAAgB,EAAAA,gBAAA;AAChBG,EAAAA,gBAAgB,EAAAA,gBAAA;AAChB2C,EAAAA,SAAS,EAAAA,SAAA;AACTkC,EAAAA,aAAa,EAAAA,aAAA;AACbS,EAAAA,mBAAmB,EAAAA,mBAAA;AACnBe,EAAAA,SAAS,EAAAA,SAAA;AACTmF,EAAAA,OAAO,EAAAA,OAAA;AACPa,EAAAA,OAAO,EAAAA,OAAA;AACPqD,EAAAA,QAAQ,EAAAA,QAAA;AACRqG,EAAAA,gBAAgB,EAAAA,gBAAA;AAChB1F,EAAAA,gBAAgB,EAAAA,gBAAA;AAChBW,EAAAA,iBAAiB,EAAAA,iBAAA;AACjBgE,EAAAA,eAAe,EAAAA,eAAA;AACfI,EAAAA,kBAAkB,EAAAA,kBAAA;AAClBG,EAAAA,mBAAmB,EAAAA,mBAAA;AACnBE,EAAAA,oBAAoB,EAAAA,oBAAA;AACpBC,EAAAA,mBAAmB,EAAAA,mBAAA;AACnBuJ,EAAAA,mBAAmB,EAAAA,mBAAA;AACnBpJ,EAAAA,WAAW,EAAAA;CACH;AAIV,SAASuJ,oBAAoBA,CAC3BC,SAAiB,EACjBC,aAAqB,EACrBC,SAAqC,EAAA;AAErC,EAAA,IAAMC,gBAAgB,GAAoB,UAACC,KAAK,EAAA;IAAK,oBACnD38B,KAAA,CAAAC,aAAA,CAAA,KAAA,EAAA;MACET,SAAS,EAAE,CACT,sBAAsB,EACtB,wBAAA,CAAAI,MAAA,CAAyB28B,SAAS,CAAE,EACpC,wBAAA,CAAA38B,MAAA,CAAyB48B,aAAa,CAAE,CACzC,CAACz8B,IAAI,CAAC,GAAG;KAAE,eAEZC,KAAA,CAAAC,aAAA,CAACw8B,SAAS,EAAKE,KAAM,CAClB,CAAC;EAT6C,CAUpD;AAEDD,EAAAA,gBAAgB,CAACE,WAAW,GAAG,EAAA,CAAAh9B,MAAA,CAAG28B,SAAS,EAAA,GAAA,CAAA,CAAA38B,MAAA,CAAI48B,aAAa,CAAE;AAE9D,EAAA,OAAOE,gBAAgB;AACzB;AAEM,SAAUG,qBAAqBA,CAACN,SAAiB,EAAA;EACrD,OAAO;IACL39B,SAAS,EAAE09B,oBAAoB,CAACC,SAAS,EAAE,QAAQ,EAAEF,eAAe,CAACz9B,SAAS,CAAC;IAC/E2E,SAAS,EAAE+4B,oBAAoB,CAACC,SAAS,EAAE,QAAQ,EAAEF,eAAe,CAAC94B,SAAS,CAAC;IAC/EsO,WAAW,EAAEyqB,oBAAoB,CAACC,SAAS,EAAE,UAAU,EAAEF,eAAe,CAACxqB,WAAW,CAAC;IACrFqB,OAAO,EAAEopB,oBAAoB,CAACC,SAAS,EAAE,MAAM,EAAEF,eAAe,CAACnpB,OAAO,CAAC;IACzEO,QAAQ,EAAE6oB,oBAAoB,CAACC,SAAS,EAAE,OAAO,EAAEF,eAAe,CAAC5oB,QAAQ,CAAC;IAC5EK,gBAAgB,EAAEwoB,oBAAoB,CACpCC,SAAS,EACT,gBAAgB,EAChBF,eAAe,CAACvoB,gBAAgB,CACjC;IACDmC,aAAa,EAAEqmB,oBAAoB,CAACC,SAAS,EAAE,YAAY,EAAEF,eAAe,CAACpmB,aAAa,CAAC;IAC3FS,eAAe,EAAE4lB,oBAAoB,CACnCC,SAAS,EACT,eAAe,EACfF,eAAe,CAAC3lB,eAAe,CAChC;IACDqD,aAAa,EAAEuiB,oBAAoB,CAACC,SAAS,EAAE,YAAY,EAAEF,eAAe,CAACtiB,aAAa,CAAC;IAC3FS,OAAO,EAAE8hB,oBAAoB,CAACC,SAAS,EAAE,MAAM,EAAEF,eAAe,CAAC7hB,OAAO,CAAC;IACzEC,aAAa,EAAE6hB,oBAAoB,CAACC,SAAS,EAAE,YAAY,EAAEF,eAAe,CAAC5hB,aAAa,CAAC;IAC3FgB,mBAAmB,EAAE6gB,oBAAoB,CACvCC,SAAS,EACT,mBAAmB,EACnBF,eAAe,CAAC5gB,mBAAmB,CACpC;IACDsB,gBAAgB,EAAEuf,oBAAoB,CACpCC,SAAS,EACT,gBAAgB,EAChBF,eAAe,CAACtf,gBAAgB,CACjC;IACDG,gBAAgB,EAAEof,oBAAoB,CACpCC,SAAS,EACT,gBAAgB,EAChBF,eAAe,CAACnf,gBAAgB,CACjC;IACD2C,SAAS,EAAEyc,oBAAoB,CAACC,SAAS,EAAE,QAAQ,EAAEF,eAAe,CAACxc,SAAS,CAAC;IAC/EkC,aAAa,EAAEua,oBAAoB,CAACC,SAAS,EAAE,aAAa,EAAEF,eAAe,CAACta,aAAa,CAAC;IAC5FS,mBAAmB,EAAE8Z,oBAAoB,CACvCC,SAAS,EACT,oBAAoB,EACpBF,eAAe,CAAC7Z,mBAAmB,CACpC;IACDe,SAAS,EAAE+Y,oBAAoB,CAACC,SAAS,EAAE,QAAQ,EAAEF,eAAe,CAAC9Y,SAAS,CAAC;IAC/EmF,OAAO,EAAE4T,oBAAoB,CAACC,SAAS,EAAE,MAAM,EAAEF,eAAe,CAAC3T,OAAO,CAAC;IACzEuK,gBAAgB,EAAEqJ,oBAAoB,CAACC,SAAS,EAAE,gBAAgB,EAAEF,eAAe,CAACpJ,gBAAgB,CAAC;IACrG1F,gBAAgB,EAAE+O,oBAAoB,CAACC,SAAS,EAAE,iBAAiB,EAAEF,eAAe,CAAC9O,gBAAgB,CAAC;IACtGW,iBAAiB,EAAEoO,oBAAoB,CAACC,SAAS,EAAE,kBAAkB,EAAEF,eAAe,CAACnO,iBAAiB,CAAC;IACzGgE,eAAe,EAAEoK,oBAAoB,CAACC,SAAS,EAAE,gBAAgB,EAAEF,eAAe,CAACnK,eAAe,CAAC;IACnGI,kBAAkB,EAAEgK,oBAAoB,CAACC,SAAS,EAAE,mBAAmB,EAAEF,eAAe,CAAC/J,kBAAkB,CAAC;IAC5GG,mBAAmB,EAAE6J,oBAAoB,CAACC,SAAS,EAAE,oBAAoB,EAAEF,eAAe,CAAC5J,mBAAmB,CAAC;IAC/GE,oBAAoB,EAAE2J,oBAAoB,CAACC,SAAS,EAAE,qBAAqB,EAAEF,eAAe,CAAC1J,oBAAoB,CAAC;IAClHC,mBAAmB,EAAE0J,oBAAoB,CAACC,SAAS,EAAE,oBAAoB,EAAEF,eAAe,CAACzJ,mBAAmB,CAAC;IAC/GuJ,mBAAmB,EAAEG,oBAAoB,CAACC,SAAS,EAAE,oBAAoB,EAAEF,eAAe,CAACF,mBAAmB,CAAC;IAC/GpJ,WAAW,EAAEuJ,oBAAoB,CAACC,SAAS,EAAE,WAAW,EAAEF,eAAe,CAACtJ,WAAW,CAAC;IACtFxJ,OAAO,EAAE+S,oBAAoB,CAACC,SAAS,EAAE,MAAM,EAAEF,eAAe,CAAC9S,OAAO,CAAC;IACzEqD,QAAQ,EAAE0P,oBAAoB,CAACC,SAAS,EAAE,OAAO,EAAEF,eAAe,CAACzP,QAAQ;GAC5E;AACH;;ICtJakQ,gBAAgB,GAAGD,qBAAqB,CAAC,SAAS;AAG7D,IAAWE,eAAe,GAgCxBD,gBAAgB,CAAAl+B,SAhCQ;EACfo+B,eAAe,GA+BxBF,gBAAgB,CAAAv5B,SA/BQ;EACb05B,iBAAiB,GA8B5BH,gBAAgB,CAAAjrB,WA9BY;EACrBqrB,aAAa,GA6BpBJ,gBAAgB,CAAA5pB,OA7BI;EACZiqB,cAAc,GA4BtBL,gBAAgB,SA5BM;EACNM,sBAAsB,GA2BtCN,gBAAgB,CAAAhpB,gBA3BsB;EACzBupB,mBAAmB,GA0BhCP,gBAAgB,CAAA7mB,aA1BgB;EACjBqnB,qBAAqB,GAyBpCR,gBAAgB,CAAApmB,eAzBoB;EACvB6mB,mBAAmB,GAwBhCT,gBAAgB,cAxBgB;EACzBU,aAAa,GAuBpBV,gBAAgB,CAAAtiB,OAvBI;EACPijB,mBAAmB,GAsBhCX,gBAAgB,cAtBgB;EACbY,yBAAyB,GAqB5CZ,gBAAgB,CAAArhB,mBArB4B;EAC5BkiB,sBAAsB,GAoBtCb,gBAAgB,iBApBsB;EACtBc,sBAAsB,GAmBtCd,gBAAgB,CAAA5f,gBAnBsB;EAC7B2gB,eAAe,GAkBxBf,gBAAgB,CAAAjd,SAlBQ;EACXie,mBAAmB,GAiBhChB,gBAAgB,CAAA/a,aAjBgB;EACbgc,yBAAyB,GAgB5CjB,gBAAgB,CAAAta,mBAhB4B;EACnCwb,eAAe,GAexBlB,gBAAgB,CAAAvZ,SAfQ;EACjB0a,aAAa,GAcpBnB,gBAAgB,CAAApU,OAdI;EAcpBoU,gBAAgB,QAbI;MACZoB,cAAc,GAYtBpB,gBAAgB,CAAAlQ,QAZM;AACxB,EAAA;EAWEkQ,gBAAgB,CAAA7J,gBAVsB;EAUtC6J,gBAAgB,CAAAvP,gBATsB;EAStCuP,gBAAgB,CAAA5O,iBARwB;EAQxC4O,gBAAgB,gBAPoB;EAOpCA,gBAAgB,CAAAnK,oBAN8B;EAM9CmK,gBAAgB,mBAL0B;EAK1CA,gBAAgB,CAAArK,mBAJ4B;EAI5CqK,gBAAgB,oBAH4B;EAG5CA,gBAAgB,CAAAX,mBAF4B;EAE5CW,gBAAgB,CAAA/J;;ICnCPoL,gBAAgB,GAAGtB,qBAAqB,CAAC,SAAS;AAG7D,IAAWuB,eAAe,GA8BxBD,gBAAgB,CAAAv/B,SA9BQ;EACfy/B,eAAe,GA6BxBF,gBAAgB,CAAA56B,SA7BQ;EACb+6B,iBAAiB,GA4B5BH,gBAAgB,CAAAtsB,WA5BY;EACrB0sB,aAAa,GA2BpBJ,gBAAgB,CAAAjrB,OA3BI;EACZsrB,cAAc,GA0BtBL,gBAAgB,CAAA1qB,QA1BM;EACNgrB,sBAAsB,GAyBtCN,gBAAgB,iBAzBsB;EACzBO,mBAAmB,GAwBhCP,gBAAgB,CAAAloB,aAxBgB;EACjB0oB,qBAAqB,GAuBpCR,gBAAgB,gBAvBoB;EACvBS,mBAAmB,GAsBhCT,gBAAgB,CAAApkB,aAtBgB;EACzB8kB,aAAa,GAqBpBV,gBAAgB,QArBI;EACPW,mBAAmB,GAoBhCX,gBAAgB,CAAA1jB,aApBgB;EACbskB,yBAAyB,GAmB5CZ,gBAAgB,CAAA1iB,mBAnB4B;EAC5BujB,sBAAsB,GAkBtCb,gBAAgB,CAAAphB,gBAlBsB;EACtBkiB,sBAAsB,GAiBtCd,gBAAgB,CAAAjhB,gBAjBsB;EAC7BgiB,eAAe,GAgBxBf,gBAAgB,CAAAte,SAhBQ;EACXsf,mBAAmB,GAehChB,gBAAgB,CAAApc,aAfgB;EACbqd,yBAAyB,GAc5CjB,gBAAgB,CAAA3b,mBAd4B;EACnC6c,eAAe,GAaxBlB,gBAAgB,CAAA5a,SAbQ;EACjB+b,aAAa,GAYpBnB,gBAAgB,QAZI;EACZoB,cAAc,GAWtBpB,gBAAgB,CAAAvR,QAXM;AACxB,EAAA;EAUEuR,gBAAgB,CAAAlL,gBATsB;EAStCkL,gBAAgB,CAAA5Q,gBARsB;EAQtC4Q,gBAAgB,kBAPwB;EAOxCA,gBAAgB,CAAAjM,eANoB;EAMpCiM,gBAAgB,CAAAxL,oBAL8B;EAK9CwL,gBAAgB,mBAJ0B;EAI1CA,gBAAgB,CAAA1L,mBAH4B;EAG5C0L,gBAAgB,CAAAvL,mBAF4B;EAE5CuL,gBAAgB;;ICjCPqB,gBAAgB,GAAG3C,qBAAqB,CAAC,SAAS;AAG7D,IAAW4C,eAAe,GA8BxBD,gBAAgB,CAAA5gC,SA9BQ;EACf8gC,eAAe,GA6BxBF,gBAAgB,CAAAj8B,SA7BQ;EACbo8B,iBAAiB,GA4B5BH,gBAAgB,CAAA3tB,WA5BY;EACrB+tB,aAAa,GA2BpBJ,gBAAgB,CAAAtsB,OA3BI;EACZ2sB,cAAc,GA0BtBL,gBAAgB,CAAA/rB,QA1BM;EACNqsB,sBAAsB,GAyBtCN,gBAAgB,iBAzBsB;EACzBO,mBAAmB,GAwBhCP,gBAAgB,CAAAvpB,aAxBgB;EACjB+pB,qBAAqB,GAuBpCR,gBAAgB,gBAvBoB;EACvBS,mBAAmB,GAsBhCT,gBAAgB,CAAAzlB,aAtBgB;EACzBmmB,aAAa,GAqBpBV,gBAAgB,QArBI;EACPW,mBAAmB,GAoBhCX,gBAAgB,CAAA/kB,aApBgB;EACb2lB,yBAAyB,GAmB5CZ,gBAAgB,CAAA/jB,mBAnB4B;EAC5B4kB,sBAAsB,GAkBtCb,gBAAgB,CAAAziB,gBAlBsB;EACtBujB,sBAAsB,GAiBtCd,gBAAgB,CAAAtiB,gBAjBsB;EAC7BqjB,eAAe,GAgBxBf,gBAAgB,CAAA3f,SAhBQ;EACX2gB,mBAAmB,GAehChB,gBAAgB,CAAAzd,aAfgB;EACb0e,yBAAyB,GAc5CjB,gBAAgB,CAAAhd,mBAd4B;EACnCke,eAAe,GAaxBlB,gBAAgB,CAAAjc,SAbQ;EACjBod,aAAa,GAYpBnB,gBAAgB,QAZI;EACZoB,cAAc,GAWtBpB,gBAAgB,CAAA5S,QAXM;AACxB,EAAA;EAUE4S,gBAAgB,CAAAvM,gBATsB;EAStCuM,gBAAgB,CAAAjS,gBARsB;EAQtCiS,gBAAgB,kBAPwB;EAOxCA,gBAAgB,CAAAtN,eANoB;EAMpCsN,gBAAgB,CAAA7M,oBAL8B;EAK9C6M,gBAAgB,mBAJ0B;EAI1CA,gBAAgB,CAAA/M,mBAH4B;EAG5C+M,gBAAgB,CAAA5M,mBAF4B;EAE5C4M,gBAAgB;;;;","x_google_ignoreList":[1,6,26,34]}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/components/lsg/LsgButton/LsgButton.tsx","../node_modules/tslib/tslib.es6.js","../../src/components/lsg/LsgButton/LsgAemButton.tsx","../../src/components/lsg/LsgBanner/LsgBanner.tsx","../../src/components/lsg/LsgImage/LsgImage.tsx","../../src/components/lsg/LsgVideo/LsgVideo.tsx","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../../src/components/lsg/LsgCarousel/LsgCarouselController.ts","../../src/components/lsg/LsgCarousel/LsgCarousel.tsx","../../src/components/lsg/LsgCard/LsgCard.tsx","../../src/components/lsg/LsgGeneratedList/LsgGeneratedList.tsx","../../src/components/lsg/LsgPagination/LsgPagination.tsx","../../src/components/lsg/LsgBlogOverview/LsgBlogOverview.tsx","../../src/components/lsg/LsgBlogOverview/mapAemGeneratedListJson.ts","../../src/utils/lsgIconPaths.ts","../../src/utils/LsgIcon.tsx","../../src/components/lsg/LsgBreadcrumb/LsgBreadcrumb.tsx","../../src/components/lsg/LsgLogo/LsgLogo.tsx","../../src/components/lsg/LsgNavigation/LsgNavigation.tsx","../../src/components/lsg/LsgLanguageSwitcher/LsgLanguageSwitcher.tsx","../../src/components/lsg/LsgSearchTrigger/LsgSearchTrigger.tsx","../../src/components/lsg/LsgSearchOverlay/LsgSearchOverlay.tsx","../../src/components/lsg/LsgHeader/LsgHeader.tsx","../../src/components/lsg/LsgQuickLinks/LsgQuickLinks.tsx","../../src/components/lsg/LsgSocialMediaIcons/LsgSocialMediaIcons.tsx","../../src/components/lsg/LsgFooter/LsgFooter.tsx","../node_modules/embla-carousel-fade/esm/embla-carousel-fade.esm.js","../../src/components/lsg/LsgHero/LsgHeroController.ts","../../src/components/lsg/LsgHeroCard/LsgHeroCard.tsx","../../src/components/lsg/LsgHero/LsgHero.tsx","../../src/components/lsg/LsgTabs/LsgTabs.tsx","../../src/components/lsg/LsgTable/LsgTable.tsx","../../src/components/lsg/LsgFormFieldText/LsgFormFieldText.tsx","../../src/components/lsg/LsgFormFieldEmail/LsgFormFieldEmail.tsx","../node_modules/react-international-phone/dist/index.mjs","../../src/components/lsg/telPicker/telPicker.ts","../../src/components/lsg/LsgFormFieldTel/LsgFormFieldTel.tsx","../../src/components/lsg/LsgFormFieldSelect/LsgFormFieldSelect.tsx","../../src/components/lsg/LsgFormFieldCountry/LsgFormFieldCountry.tsx","../../src/components/lsg/LsgFormFieldTextarea/LsgFormFieldTextarea.tsx","../../src/components/lsg/LsgFormFieldConsent/LsgFormFieldConsent.tsx","../../src/components/lsg/LsgFormStep/LsgFormStep.tsx","../../src/components/lsg/LsgFormContainer/LsgFormContainer.tsx","../../src/components/lsg/LsgDownloadLibrary/vtbaFormEvents.ts","../../src/components/lsg/LsgDownloadLibrary/LsgDownloadLibraryController.ts","../../src/components/lsg/LsgDownloadLibrary/LsgDownloadLibrary.tsx","../../src/components/lsg/LsgDownloadLibrary/bootLsgDownloadLibrary.ts","../../src/components/lsg/LsgFormPolicyNotice/LsgFormPolicyNotice.tsx","../../src/themes/createThemeComponents.tsx","../../src/themes/theme-1/components.tsx","../../src/themes/theme-2/components.tsx","../../src/themes/theme-3/components.tsx"],"sourcesContent":["import React from \"react\";\nimport \"./LsgButton.scss\";\n\nexport type LsgButtonVariant = \"primary\" | \"secondary\" | \"tertiary\" | \"outlined-white\" | \"outlined-black\";\n\nexport interface LsgButtonProps {\n children?: React.ReactNode;\n variant?: LsgButtonVariant;\n disabled?: boolean;\n /** Renders an <a> element when provided */\n href?: string;\n onClick?: (e: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n type?: \"button\" | \"submit\" | \"reset\";\n className?: string;\n /** Opens in a new tab when used with href */\n external?: boolean;\n}\n\nexport const LsgButton: React.FC<LsgButtonProps> = ({\n children,\n variant = \"primary\",\n disabled = false,\n href,\n onClick,\n type = \"button\",\n className = \"\",\n external = false,\n}) => {\n const classNames = [\n \"lsg-button\",\n `lsg-button--${variant}`,\n disabled ? \"lsg-button--disabled\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n if (href) {\n return (\n <a\n href={disabled ? undefined : href}\n className={classNames}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : (onClick as React.MouseEventHandler<HTMLAnchorElement>)}\n {...(external ? { target: \"_blank\", rel: \"noopener noreferrer\" } : {})}\n >\n <span className=\"lsg-button__text\">{children}</span>\n </a>\n );\n }\n\n return (\n <button\n type={type}\n className={classNames}\n disabled={disabled}\n onClick={onClick as React.MouseEventHandler<HTMLButtonElement>}\n >\n {children}\n </button>\n );\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n 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);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import React from \"react\";\nimport type { LsgButtonVariant } from \"./LsgButton\";\nimport \"./LsgButton.scss\";\n\nexport interface LsgAemButtonProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"className\" | \"children\"> {\n /** LSG Button \"CTA type\" style — rendered as `button--{variant}` on the decoration div. */\n variant?: LsgButtonVariant;\n /** Extra classes on the `div.cmp-lsg-button` decoration div (e.g. grid column classes). */\n wrapperClassName?: string;\n /** Extra classes on the `a.lsg-button` element. */\n className?: string;\n /** Rendered inside the anchor, before `.lsg-button__text`. */\n icon?: React.ReactNode;\n /** Content of `.lsg-button__text`. */\n children?: React.ReactNode;\n}\n\n/**\n * The DOM AEM publishes for the LSG Button component (button.html wrapped by its\n * _cq_htmlTag decoration div, with the CTA type style class on that div):\n *\n * div.cmp-lsg-button.button--{variant} > div.lsg-button-container > a.lsg-button > span.lsg-button__text\n *\n * Components that embed a button in their own HTL emit this same structure, so the\n * theme's `.cmp-lsg-button.button--X .lsg-button` rules style it.\n */\nexport const LsgAemButton: React.FC<LsgAemButtonProps> = ({\n variant = \"primary\",\n wrapperClassName,\n className,\n icon,\n children,\n ...anchorProps\n}) => (\n <div className={[\"cmp-lsg-button\", `button--${variant}`, wrapperClassName].filter(Boolean).join(\" \")}>\n <div className=\"lsg-button-container\">\n <a className={[\"lsg-button\", className].filter(Boolean).join(\" \")} {...anchorProps}>\n {icon}\n <span className=\"lsg-button__text\">{children}</span>\n </a>\n </div>\n </div>\n);\n","import React, { useId } from \"react\";\nimport \"./LsgBanner.scss\";\nimport { LsgAemButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\n\nexport type LsgBannerLayout =\n | \"media-left\"\n | \"media-right\"\n | \"media-left-compact\"\n | \"media-right-compact\"\n | \"overlay\"\n | \"overlay-transparent\"\n | \"text-only\";\n\n/** Mirrors the AEM \"Background color\" style group on the banner policy. */\nexport type LsgBannerBackground =\n | \"white\"\n | \"light\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"dark\"\n | \"black\";\n\n/**\n * Mirrors the AEM \"Accent color (where supported)\" style group — same tokens as\n * the background. Only themes that draw a banner accent use it (currently T2/T3).\n */\nexport type LsgBannerAccent = LsgBannerBackground;\n\n/** Mirrors the LSG Title / Text \"colour\" style groups (`cmp-title__colour-*`, `cmp-text__colour-*`). */\nexport type LsgBannerTextColour = LsgBannerBackground;\n\nexport type LsgBannerMobileMediaPosition = \"top\" | \"bottom\";\nexport type LsgBannerMediaType = \"image\" | \"video\";\nexport type LsgBannerHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\nexport interface LsgBannerCta {\n label: string;\n href?: string;\n external?: boolean;\n /** LSG Button \"CTA type\" style — rendered as `button--{variant}` on the decoration div. */\n variant?: LsgButtonVariant;\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n}\n\nexport interface LsgBannerProps {\n /** Mandatory banner title. */\n heading: string;\n /** Figma/AEM pre-title. `eyebrow` remains as a backwards-compatible alias. */\n preTitle?: string;\n eyebrow?: string;\n /** Optional body copy. `copy` remains as a backwards-compatible alias. */\n body?: string;\n copy?: string;\n /** Up to three CTAs. Theme/AEM policy may choose to expose fewer. */\n ctas?: LsgBannerCta[];\n /** Backwards-compatible single CTA alias. */\n cta?: LsgBannerCta;\n /** Title / Text style-system colours, as an author would pick them in AEM. */\n preTitleColour?: LsgBannerTextColour;\n headingColour?: LsgBannerTextColour;\n bodyColour?: LsgBannerTextColour;\n /** Image/video presentation controlled by the Banner authoring layout. */\n mediaType?: LsgBannerMediaType;\n imageUrl?: string;\n imageAlt?: string;\n /** Banner link (Teaser \"Links\" tab). Wraps the image only, never the content. */\n mediaHref?: string;\n mediaTarget?: \"_self\" | \"_blank\";\n videoUrl?: string;\n videoPoster?: string;\n videoControls?: boolean;\n videoAutoPlay?: boolean;\n videoMuted?: boolean;\n videoLoop?: boolean;\n /** Desktop visual layout matching the Figma Banner variants. */\n layout?: LsgBannerLayout;\n /** Mobile stack order for split/compact layouts. */\n mobileMediaPosition?: LsgBannerMobileMediaPosition;\n /**\n * Background colour, mirroring the AEM \"Background color\" style group.\n * Left undefined on purpose so no class is emitted and the banner keeps its\n * default light background. Each option carries its own legible foreground.\n */\n background?: LsgBannerBackground;\n /**\n * Accent colour (rules, borders, pre-title), mirroring the AEM \"Accent color\"\n * style group. Left undefined so the theme's primary accent is kept; themes\n * without a banner accent ignore it.\n */\n accent?: LsgBannerAccent;\n /** Defaults to h2, the level `_cq_template` gives the heading Title. */\n headingTag?: LsgBannerHeadingTag;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// AEM markup helpers\n//\n// The banner's content region is a parsys in AEM, filled by _cq_template with\n// Group > Title / Text / Button components. These helpers reproduce the HTML\n// those components (and their Sling decoration divs) emit on publish, so the\n// theme CSS written here applies to AEM unchanged. Reference page:\n// /content/vtba/varovac/en (wcmmode=disabled).\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst GRID_COLUMN = \"aem-GridColumn aem-GridColumn--default--12\";\n\n/** vtba/components/lsg/structure/group — a responsivegrid with two wrappers. */\nconst AemGroup: React.FC<{ styleClasses?: string; children: React.ReactNode }> = ({\n styleClasses,\n children,\n}) => (\n <div className={[\"lsg-group\", styleClasses].filter(Boolean).join(\" \")}>\n <div className=\"layout-container-color-wrapper\">\n <div className=\"layout-container-spacing-wrapper aem-Grid aem-Grid--12 aem-Grid--default--12 \">\n {children}\n </div>\n </div>\n </div>\n);\n\n/**\n * AEM decoration class for a grid column: the component's own class, then either\n * its authored style classes or — when none are set — the component name.\n */\nfunction columnClassName(componentClass: string, name: string, styleClass?: string): string {\n return `${componentClass} ${styleClass ?? name} ${GRID_COLUMN}`;\n}\n\n/** vtba/components/lsg/content/title — type \"p\" is the pre-title. */\nconst AemTitle: React.FC<{\n tag: LsgBannerHeadingTag | \"p\";\n colour?: LsgBannerTextColour;\n children: React.ReactNode;\n}> = ({ tag: Tag, colour, children }) => (\n <div\n className={columnClassName(\n \"cmp-lsg-title\",\n \"title\",\n colour && `cmp-title__colour-${colour}`,\n )}\n >\n <Tag\n className={`cmp-title__element${Tag === \"p\" ? \" cmp-title__element--pretitle\" : \"\"}`}\n >\n {children}\n </Tag>\n </div>\n);\n\n/** vtba/components/lsg/content/text — core text v2 inside the decoration div. */\nconst AemText: React.FC<{ id: string; colour?: LsgBannerTextColour; children: React.ReactNode }> = ({\n id,\n colour,\n children,\n}) => (\n <div className={columnClassName(\"cmp-lsg-text\", \"text\", colour && `cmp-text__colour-${colour}`)}>\n <div id={id} className=\"cmp-text\">\n <p>{children}</p>\n </div>\n </div>\n);\n\n/** vtba/components/lsg/content/button — the variant is a style class on the decoration div. */\nconst AemButton: React.FC<{ cta: LsgBannerCta }> = ({ cta }) => (\n <LsgAemButton\n variant={cta.variant ?? \"primary\"}\n wrapperClassName={GRID_COLUMN}\n href={cta.href ?? \"#\"}\n target={cta.external ? \"_blank\" : undefined}\n rel={cta.external ? \"noopener noreferrer\" : undefined}\n onClick={cta.onClick}\n >\n {cta.label}\n </LsgAemButton>\n);\n\n/** Same extension mapping as BannerModel.getVideoMimeType. */\nfunction videoMimeType(url: string): string | undefined {\n const path = url.split(/[?#]/)[0].toLowerCase();\n if (path.endsWith(\".mp4\")) return \"video/mp4\";\n if (path.endsWith(\".webm\")) return \"video/webm\";\n if (path.endsWith(\".ogg\") || path.endsWith(\".ogv\")) return \"video/ogg\";\n return undefined;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgBanner\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgBanner: React.FC<LsgBannerProps> = ({\n heading,\n preTitle,\n eyebrow,\n body,\n copy,\n ctas,\n cta,\n preTitleColour,\n headingColour,\n bodyColour,\n mediaType,\n imageUrl,\n imageAlt = \"\",\n mediaHref,\n mediaTarget,\n videoUrl,\n videoPoster,\n videoControls = true,\n videoAutoPlay = false,\n videoMuted = true,\n videoLoop = false,\n layout = \"media-left\",\n mobileMediaPosition = \"top\",\n background,\n accent,\n headingTag = \"h2\",\n className,\n}) => {\n const textId = `text-${useId().replace(/[^a-zA-Z0-9]/g, \"\")}`;\n const resolvedPreTitle = preTitle ?? eyebrow;\n const resolvedBody = body ?? copy;\n const actions = (ctas?.length ? ctas : cta ? [cta] : []).slice(0, 3);\n const resolvedMediaType: LsgBannerMediaType =\n mediaType ?? (videoUrl ? \"video\" : \"image\");\n const hasMedia =\n layout !== \"text-only\" &&\n (resolvedMediaType === \"video\" ? Boolean(videoUrl) : Boolean(imageUrl));\n\n const picture = (\n <picture className=\"lsg-banner__image\">\n <img src={imageUrl} alt={imageAlt} loading=\"lazy\" />\n </picture>\n );\n\n return (\n // The Sling decoration div. Background / accent style-system classes land\n // here in AEM, not on the section.\n <div\n className={[\n \"banner teaser\",\n background && `lsg-banner--bg-${background}`,\n accent && `lsg-banner--accent-${accent}`,\n GRID_COLUMN,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <section\n className={`lsg-banner lsg-banner--${layout} lsg-banner--mobile-media-${mobileMediaPosition}`}\n data-lsg-is=\"banner\"\n data-lsg-banner-layout={layout}\n data-lsg-banner-mobile-media={mobileMediaPosition}\n data-lsg-banner-media={hasMedia ? resolvedMediaType : \"none\"}\n >\n <div className=\"lsg-banner__shell\">\n {hasMedia && (\n <div className=\"lsg-banner__media\">\n {resolvedMediaType === \"video\" && videoUrl ? (\n <video\n className=\"lsg-banner__video\"\n poster={videoPoster}\n autoPlay={videoAutoPlay}\n muted={videoMuted}\n loop={videoLoop}\n controls={videoControls}\n playsInline\n aria-label={imageAlt}\n >\n <source src={videoUrl} type={videoMimeType(videoUrl)} />\n </video>\n ) : mediaHref ? (\n <a className=\"lsg-banner__media-link\" href={mediaHref} target={mediaTarget}>\n {picture}\n </a>\n ) : (\n picture\n )}\n </div>\n )}\n\n <div className=\"lsg-banner__content\">\n <AemGroup styleClasses=\"lsg-group-display--flex lsg-group-direction--column lsg-group-gap--16\">\n {resolvedPreTitle && (\n <AemTitle tag=\"p\" colour={preTitleColour}>\n {resolvedPreTitle}\n </AemTitle>\n )}\n <AemTitle tag={headingTag} colour={headingColour}>\n {heading}\n </AemTitle>\n </AemGroup>\n\n {resolvedBody && (\n <AemGroup>\n <AemText id={textId} colour={bodyColour}>\n {resolvedBody}\n </AemText>\n </AemGroup>\n )}\n\n {actions.length > 0 && (\n <AemGroup styleClasses=\"lsg-group-display--flex lsg-group-gap--16\">\n {actions.map((action, index) => (\n <AemButton key={`${action.label}-${action.href ?? \"button\"}-${index}`} cta={action} />\n ))}\n </AemGroup>\n )}\n </div>\n </div>\n </section>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgImage.scss\";\n\nexport interface LsgImageTag {\n label: string;\n}\n\nexport interface LsgImageSource {\n /** Candidate set for this breakpoint. Maps to `<source srcset>`. */\n srcset: string;\n /** Media condition. Maps to `<source media>`. Omit for the fallback source. */\n media?: string;\n}\n\nexport interface LsgImageProps {\n /** Image URL rendered by the component. Maps to Core Image `src`. */\n imageUrl?: string;\n /** Alternative text for the image. Maps to Core Image `alt`. */\n imageAlt?: string;\n /** Candidate set for native adaptive loading. Maps to Core Image `srcset`. Ignored when `sources` is set, mirroring the AEM crops branch. */\n srcset?: string;\n /** Responsive `<source>` variants, as AEM emits from the Scene7 crop map. */\n sources?: LsgImageSource[];\n /** Intrinsic width of the image. Maps to Core Image `width`. */\n width?: number | string;\n /** Intrinsic height of the image. Maps to Core Image `height`. */\n height?: number | string;\n /** URI template used by AEM to request a rendition. Maps to Core Image `srcUriTemplate`. */\n srcUriTemplate?: string;\n /** Native lazy loading, as per the Core Image `disableLazyLoading` policy. Default: true. */\n lazyEnabled?: boolean;\n /** Render the title as the image tooltip instead of the caption. Maps to Core Image `displayPopupTitle`. */\n displayPopupTitle?: boolean;\n /** Component id. Maps to Core Image `id`. */\n id?: string;\n /** Serialised data layer payload. Maps to Core Image `data.json`. */\n dataLayer?: string;\n /** Asset UUID. Maps to Core Image `uuid`. */\n assetId?: string;\n /** Marks the image as a Dynamic Media image. Maps to Core Image `dmImage`. */\n dmImage?: boolean | string;\n /** Up to 3 tag pills overlaid on the image. */\n tags?: LsgImageTag[];\n /** Image title. Maps to the AEM Core Image caption/title. */\n title?: string;\n /** LSG-specific description revealed on hover/focus. */\n description?: string;\n /** Backward-compatible alias for description. */\n caption?: string;\n /** Optional image link. Maps to Core Image `imageLink`. */\n href?: string;\n className?: string;\n}\n\nfunction isSafeUrl(url: string | undefined): boolean {\n if (!url) return false;\n\n const lower = url.toLowerCase().trim();\n if (\n lower.startsWith(\"javascript:\") ||\n lower.startsWith(\"data:\") ||\n lower.startsWith(\"vbscript:\")\n ) {\n return false;\n }\n\n return (\n lower.startsWith(\"/\") ||\n lower.startsWith(\"http://\") ||\n lower.startsWith(\"https://\") ||\n lower.startsWith(\"mailto:\") ||\n lower.startsWith(\"tel:\") ||\n !lower.includes(\":\")\n );\n}\n\nexport const LsgImage: React.FC<LsgImageProps> = ({\n imageUrl,\n imageAlt = \"\",\n srcset,\n sources = [],\n width,\n height,\n srcUriTemplate,\n lazyEnabled = true,\n displayPopupTitle = false,\n id,\n dataLayer,\n assetId,\n dmImage,\n tags = [],\n title,\n description,\n caption,\n href,\n className = \"\",\n}) => {\n // Core Image v3 renders nothing without a src; the AEM LSG model gates on the\n // same condition via `model.ready`.\n if (!imageUrl) {\n return null;\n }\n\n const text = description ?? caption;\n\n const visibleTags: LsgImageTag[] = Array.isArray(tags)\n ? tags\n .filter(\n (tag): tag is LsgImageTag =>\n Boolean(tag) &&\n typeof tag.label === \"string\" &&\n tag.label.trim().length > 0,\n )\n .slice(0, 3)\n : [];\n\n const visibleSources: LsgImageSource[] = Array.isArray(sources)\n ? sources.filter(\n (source): source is LsgImageSource =>\n Boolean(source) &&\n typeof source.srcset === \"string\" &&\n source.srcset.trim().length > 0,\n )\n : [];\n\n const rootClass = [\"lsg-image\", \"cmp-image\", className]\n .filter(Boolean)\n .join(\" \");\n const safeHref = href && isSafeUrl(href) ? href : undefined;\n const linkLabel = title ? `View ${title}` : \"View image\";\n const showTitle = Boolean(title) && !displayPopupTitle;\n const showCaption = showTitle || Boolean(text);\n\n return (\n <div\n className={rootClass}\n id={id}\n data-cmp-data-layer={dataLayer}\n data-asset-id={assetId}\n data-cmp-dmimage={dmImage ? String(dmImage) : undefined}\n itemScope\n itemType=\"http://schema.org/ImageObject\"\n >\n <div className=\"lsg-image__media\">\n <div className=\"lsg-image__picture\">\n <picture>\n {visibleSources.map((source, index) => (\n <source\n key={`${source.media ?? \"default\"}-${index}`}\n media={source.media}\n srcSet={source.srcset}\n />\n ))}\n\n <img\n className=\"lsg-image__img cmp-image__image\"\n src={imageUrl}\n srcSet={visibleSources.length > 0 ? undefined : srcset}\n alt={imageAlt}\n title={displayPopupTitle ? title : undefined}\n width={width}\n height={height}\n data-cmp-src={srcUriTemplate}\n itemProp=\"contentUrl\"\n loading={lazyEnabled ? \"lazy\" : undefined}\n />\n </picture>\n </div>\n\n {safeHref && (\n <a\n className=\"lsg-image__link cmp-image__link\"\n href={safeHref}\n aria-label={linkLabel}\n data-cmp-clickable={dataLayer ? true : undefined}\n />\n )}\n\n {visibleTags.length > 0 && (\n <div className=\"lsg-image__tags\">\n {visibleTags.map((tag, index) => (\n <span\n key={`${tag.label}-${index}`}\n className=\"lsg-image__tag\"\n >\n {tag.label}\n </span>\n ))}\n </div>\n )}\n </div>\n\n {showCaption && (\n <div className=\"lsg-image__caption\">\n {showTitle && (\n <p className=\"lsg-image__title cmp-image__title\" itemProp=\"caption\">\n {title}\n </p>\n )}\n {text && <p className=\"lsg-image__text\">{text}</p>}\n </div>\n )}\n\n {title && displayPopupTitle && <meta itemProp=\"caption\" content={title} />}\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport \"./LsgVideo.scss\";\n\nexport interface LsgVideoTag {\n label: string;\n}\n\nexport type LsgVideoDisplayMode = \"inline\" | \"full-width\" | \"content\";\n\nexport interface LsgVideoProps {\n /** URL of the video thumbnail / poster image. Optional. */\n imageUrl?: string;\n /** Alt text for the poster image. */\n imageAlt?: string;\n /** Up to 3 tag pills overlaid on the poster. Extra entries are ignored. */\n tags?: LsgVideoTag[];\n /** Video title shown in the caption bar. Optional. */\n title?: string;\n /** Caption / description text below the title, revealed on hover / focus. */\n caption?: string;\n /** Href for the play action — used only when no video source is supplied. */\n href?: string;\n /** Fired when the play control is activated. */\n onPlay?: () => void;\n /** Native DAM/direct media URL, or an external YouTube/Vimeo URL. */\n videoUrl?: string;\n /** Autoplay the video/embed as soon as it renders. Default: false. */\n autoplay?: boolean;\n /** Loop playback. Default: false. */\n loop?: boolean;\n /** Mute playback. Default: false. */\n muted?: boolean;\n /** Show native/embed playback controls. Default: true. */\n controls?: boolean;\n /** Layout variant. Default: \"content\". */\n displayMode?: LsgVideoDisplayMode;\n /** Show or hide the tag pills overlay. Default: true. */\n showTags?: boolean;\n className?: string;\n}\n\ninterface EmbedInfo {\n provider: \"youtube\" | \"vimeo\";\n embedUrl: string;\n}\n\nfunction buildUrl(base: string, params: Record<string, string>): string {\n try {\n const url = new URL(base);\n Object.keys(params).forEach((key) => url.searchParams.set(key, params[key]));\n return url.toString();\n } catch {\n return base;\n }\n}\n\nfunction getEmbedInfo(\n videoUrl: string | undefined,\n opts: { autoplay: boolean; loop: boolean; muted: boolean; controls: boolean },\n): EmbedInfo | null {\n if (!videoUrl || typeof videoUrl !== \"string\") return null;\n\n try {\n const url = new URL(videoUrl);\n const host = url.hostname.replace(/^www\\./, \"\");\n const path = url.pathname;\n\n if (host === \"youtube.com\" || host === \"youtube-nocookie.com\" || host === \"youtu.be\") {\n let id: string | null = null;\n if (host === \"youtu.be\") {\n id = path.slice(1);\n } else if (path.startsWith(\"/embed/\") || path.startsWith(\"/shorts/\")) {\n id = path.split(\"/\")[2];\n } else if (path === \"/watch\") {\n id = url.searchParams.get(\"v\");\n }\n if (id && /^[A-Za-z0-9_-]{11}$/.test(id)) {\n const params: Record<string, string> = {\n autoplay: opts.autoplay ? \"1\" : \"0\",\n mute: opts.muted ? \"1\" : \"0\",\n controls: opts.controls ? \"1\" : \"0\",\n rel: \"0\",\n };\n if (opts.loop) { params.loop = \"1\"; params.playlist = id; }\n const baseHost = host === \"youtube-nocookie.com\" ? \"youtube-nocookie.com\" : \"youtube.com\";\n return { provider: \"youtube\", embedUrl: buildUrl(`https://www.${baseHost}/embed/${id}`, params) };\n }\n }\n\n if (host === \"vimeo.com\" || host === \"player.vimeo.com\") {\n let id: string | null = null;\n if (host === \"player.vimeo.com\" && path.startsWith(\"/video/\")) {\n id = path.split(\"/\")[2];\n } else {\n const match = path.match(/^\\/(\\d+)$/);\n if (match) id = match[1];\n }\n if (id && /^\\d+$/.test(id)) {\n const params: Record<string, string> = {\n autoplay: opts.autoplay ? \"1\" : \"0\",\n muted: opts.muted ? \"1\" : \"0\",\n loop: opts.loop ? \"1\" : \"0\",\n controls: opts.controls ? \"1\" : \"0\",\n };\n return { provider: \"vimeo\", embedUrl: buildUrl(`https://player.vimeo.com/video/${id}`, params) };\n }\n }\n } catch {\n return null;\n }\n return null;\n}\n\nfunction isSafeUrl(url: string | undefined): boolean {\n if (!url) return false;\n const lower = url.toLowerCase().trim();\n if (lower.startsWith(\"javascript:\") || lower.startsWith(\"data:\") || lower.startsWith(\"vbscript:\")) return false;\n return (\n lower.startsWith(\"/\") ||\n lower.startsWith(\"http://\") ||\n lower.startsWith(\"https://\") ||\n lower.startsWith(\"mailto:\") ||\n lower.startsWith(\"tel:\") ||\n !lower.includes(\":\")\n );\n}\n\nconst PlayIcon = (\n <svg\n className=\"lsg-video__play-svg\"\n width=\"60\"\n height=\"60\"\n viewBox=\"0 0 60 60\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"30\" cy=\"30\" r=\"30\" fill=\"currentColor\" fillOpacity=\"0.15\" />\n <polygon points=\"24,18 46,30 24,42\" fill=\"currentColor\" />\n </svg>\n);\n\nexport const LsgVideo: React.FC<LsgVideoProps> = ({\n imageUrl,\n imageAlt = \"\",\n tags = [],\n title,\n caption,\n href,\n onPlay,\n videoUrl,\n autoplay = false,\n loop = false,\n muted = false,\n controls = true,\n displayMode = \"content\",\n showTags = true,\n className = \"\",\n}) => {\n const [isRevealed, setIsRevealed] = useState(false);\n\n const hasVideoSource = typeof videoUrl === \"string\" && videoUrl.length > 0;\n const embedInfo = hasVideoSource ? getEmbedInfo(videoUrl, { autoplay, loop, muted, controls }) : null;\n const isEmbed = embedInfo !== null;\n const isNativeSource = hasVideoSource && !isEmbed;\n const showMedia = hasVideoSource && (autoplay || isRevealed);\n\n const visibleTags: LsgVideoTag[] =\n showTags && Array.isArray(tags)\n ? tags\n .filter(\n (tag): tag is LsgVideoTag =>\n Boolean(tag) && typeof tag.label === \"string\" && tag.label.trim().length > 0,\n )\n .slice(0, 3)\n : [];\n\n const handleActivate = (e: React.MouseEvent) => {\n if (hasVideoSource) {\n e.preventDefault();\n setIsRevealed(true);\n onPlay?.();\n return;\n }\n if (href && isSafeUrl(href)) return;\n if (onPlay) { e.preventDefault(); onPlay(); }\n };\n\n const playLabel = title ? `Play ${title}` : \"Play video\";\n const rootClass = [\"lsg-video\", `lsg-video--${displayMode}`, className].filter(Boolean).join(\" \");\n const showCaption = Boolean(title) || Boolean(caption);\n\n const renderPlayControl = () => {\n if (hasVideoSource) {\n return (\n <button type=\"button\" className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </button>\n );\n }\n if (href && isSafeUrl(href)) {\n return (\n <a href={href} className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </a>\n );\n }\n return (\n <button type=\"button\" className=\"lsg-video__play\" aria-label={playLabel} onClick={handleActivate}>\n {PlayIcon}\n </button>\n );\n };\n\n return (\n <div className={rootClass}>\n <div className=\"lsg-video__media\">\n {showMedia ? (\n isEmbed ? (\n <div className=\"lsg-video__embed\">\n <iframe\n className=\"lsg-video__iframe\"\n src={embedInfo!.embedUrl}\n title={title || \"Video\"}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n allowFullScreen\n loading=\"lazy\"\n />\n </div>\n ) : (\n isNativeSource && (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n className=\"lsg-video__native\"\n poster={imageUrl || undefined}\n controls={controls}\n autoPlay\n loop={loop}\n muted={muted}\n playsInline\n >\n <source src={videoUrl} />\n </video>\n )\n )\n ) : (\n <>\n <div className=\"lsg-video__poster\">\n {imageUrl && <img className=\"lsg-video__poster-img\" src={imageUrl} alt={imageAlt} loading=\"lazy\" />}\n </div>\n {visibleTags.length > 0 && (\n <div className=\"lsg-video__tags\">\n {visibleTags.map((tag, i) => (\n <span key={`${tag.label}-${i}`} className=\"lsg-video__tag\">\n {tag.label}\n </span>\n ))}\n </div>\n )}\n {renderPlayControl()}\n </>\n )}\n {/* Caption inside __media — positioned statically (T1) or absolutely at bottom (T2/T3) via CSS tokens */}\n {showCaption && (\n <div className=\"lsg-video__caption\">\n {title && <p className=\"lsg-video__title\">{title}</p>}\n {caption && <p className=\"lsg-video__text\">{caption}</p>}\n </div>\n )}\n </div>\n </div>\n );\n};\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\n\n/**\n * Framework-agnostic Embla controller shared by the React carousel and the AEM\n * clientlib runtime. Keep behaviour here so Storybook and server-rendered HTL\n * use exactly the same navigation and selected-state logic.\n */\nexport interface LsgCarouselControllerElements {\n prevBtn?: HTMLElement | null;\n nextBtn?: HTMLElement | null;\n paginationBtns?: Iterable<HTMLElement> | null;\n}\n\nexport type LsgCarouselDirection = \"ltr\" | \"rtl\";\n\nexport interface LsgCarouselControllerOptions {\n loop?: boolean;\n /**\n * Embla content direction. Media-left variants use RTL so the active media is\n * anchored on the right edge of the viewport and the adjacent slide peeks in\n * from the left, matching the mirrored Figma compositions.\n *\n * Embla requires the viewport/track CSS direction to match this value. The\n * React component sets `dir` on the viewport and the AEM boot path mirrors it.\n */\n direction?: LsgCarouselDirection;\n}\n\nexport class LsgCarouselController {\n private embla: EmblaCarouselType | null = null;\n private readonly els: LsgCarouselControllerElements;\n private readonly paginationBtns: HTMLElement[];\n private readonly paginationHandlers: Array<() => void>;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgCarouselControllerElements = {},\n options: LsgCarouselControllerOptions = {},\n ) {\n this.els = elements;\n this.paginationBtns = elements.paginationBtns\n ? Array.from(elements.paginationBtns)\n : [];\n\n this.embla = EmblaCarousel(viewport, {\n align: \"start\",\n // Every authored media item owns a pagination dot. `trimSnaps` can remove\n // the final snap when two-up/peek layouts do not have enough overflow,\n // leaving the last authored item only partially reachable. Keep all snaps\n // so dot/item indexes stay 1:1 for 2, 3, 4, ... media items.\n containScroll: false,\n direction: options.direction ?? \"ltr\",\n loop: options.loop ?? true,\n skipSnaps: false,\n slidesToScroll: 1,\n });\n\n this.paginationHandlers = this.paginationBtns.map((_, index) => () => {\n this.embla?.scrollTo(index);\n });\n\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.addEventListener(\"click\", this.paginationHandlers[index]);\n });\n\n this.embla.on(\"select\", this.syncSelectedState);\n this.embla.on(\"reInit\", this.syncSelectedState);\n this.syncSelectedState();\n }\n\n /**\n * Embla automatically falls back to non-looping mode when there is not enough\n * slide content to create a safe loop (most noticeable with two-up layouts and\n * only 2–3 authored items). Keep the arrow contract cyclic in that fallback:\n * when there is no native previous snap, jump to the final authored snap.\n */\n readonly scrollPrev = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollPrev()) {\n this.embla.scrollPrev();\n return;\n }\n\n const lastSnap = this.embla.scrollSnapList().length - 1;\n if (lastSnap >= 0) this.embla.scrollTo(lastSnap);\n };\n\n /** See `scrollPrev` for why the explicit wrap fallback is required. */\n readonly scrollNext = (): void => {\n if (!this.embla) return;\n\n if (this.embla.canScrollNext()) {\n this.embla.scrollNext();\n return;\n }\n\n if (this.embla.scrollSnapList().length > 0) this.embla.scrollTo(0);\n };\n\n private readonly syncSelectedState = (): void => {\n const selected = this.embla?.selectedScrollSnap() ?? 0;\n this.paginationBtns.forEach((button, index) => {\n const active = index === selected;\n button.classList.toggle(\"lsg-carousel__dot--active\", active);\n button.setAttribute(\"aria-current\", active ? \"true\" : \"false\");\n });\n };\n\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n destroy(): void {\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.paginationBtns.forEach((button, index) => {\n button.removeEventListener(\"click\", this.paginationHandlers[index]);\n });\n if (this.embla) {\n this.embla.off(\"select\", this.syncSelectedState);\n this.embla.off(\"reInit\", this.syncSelectedState);\n this.embla.destroy();\n this.embla = null;\n }\n }\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { LsgButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\nimport { LsgImage } from \"../LsgImage\";\nimport { LsgVideo } from \"../LsgVideo\";\nimport { LsgCarouselController } from \"./LsgCarouselController\";\nimport type { LsgCarouselDirection } from \"./LsgCarouselController\";\nimport \"./LsgCarousel.scss\";\n\nexport type LsgCarouselLayout = \"media-right\" | \"media-left\" | \"full-width\";\nexport type LsgCarouselHeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\nexport type LsgCarouselMediaType = \"image\" | \"video\";\n\nexport interface LsgCarouselItem {\n /** Stable author/item identifier where available. */\n id?: string;\n type?: LsgCarouselMediaType;\n imageUrl?: string;\n imageAlt?: string;\n videoUrl?: string;\n videoPoster?: string;\n videoControls?: boolean;\n videoAutoPlay?: boolean;\n videoMuted?: boolean;\n videoLoop?: boolean;\n /** Optional per-media label used by layouts/themes that show a badge. */\n label?: string;\n}\n\nexport interface LsgCarouselCta {\n label: string;\n href?: string;\n external?: boolean;\n variant?: LsgButtonVariant;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport interface LsgCarouselProps {\n /** Mandatory carousel title. */\n heading: string;\n preTitle?: string;\n body?: string;\n cta?: LsgCarouselCta;\n items: LsgCarouselItem[];\n /** Desktop content/media position from the Figma variants. */\n layout?: LsgCarouselLayout;\n headingTag?: LsgCarouselHeadingTag;\n ariaLabel?: string;\n className?: string;\n}\n\nconst mediaTypeFor = (item: LsgCarouselItem): LsgCarouselMediaType =>\n item.type ?? (item.videoUrl ? \"video\" : \"image\");\n\nconst directionForLayout = (layout: LsgCarouselLayout): LsgCarouselDirection =>\n layout === \"media-left\" ? \"rtl\" : \"ltr\";\n\nexport const LsgCarousel: React.FC<LsgCarouselProps> = ({\n heading,\n preTitle,\n body,\n cta,\n items = [],\n layout = \"media-right\",\n headingTag = \"h2\",\n ariaLabel = \"Media carousel\",\n className = \"\",\n}) => {\n const rootRef = useRef<HTMLElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const prevBtnRef = useRef<HTMLButtonElement>(null);\n const nextBtnRef = useRef<HTMLButtonElement>(null);\n const dotsRef = useRef<HTMLDivElement>(null);\n const controllerRef = useRef<LsgCarouselController | null>(null);\n const HeadingTag = headingTag;\n const isCarousel = items.length > 1;\n const carouselDirection = directionForLayout(layout);\n\n useEffect(() => {\n if (!viewportRef.current || !isCarousel) return;\n\n controllerRef.current = new LsgCarouselController(\n viewportRef.current,\n {\n prevBtn: prevBtnRef.current,\n nextBtn: nextBtnRef.current,\n paginationBtns:\n dotsRef.current?.querySelectorAll<HTMLElement>(\"[data-lsg-carousel-dot]\") ?? [],\n },\n { loop: true, direction: carouselDirection },\n );\n\n return () => {\n controllerRef.current?.destroy();\n controllerRef.current = null;\n };\n }, [carouselDirection, isCarousel, items.length]);\n\n const rootClasses = [\n \"lsg-carousel\",\n `lsg-carousel--${layout}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <section\n ref={rootRef}\n className={rootClasses}\n data-lsg-is=\"carousel\"\n data-lsg-carousel-layout={layout}\n data-lsg-carousel-direction={carouselDirection}\n data-lsg-carousel-count={items.length}\n aria-label={ariaLabel}\n >\n <div className=\"lsg-carousel__shell\">\n <div className=\"lsg-carousel__content\">\n {preTitle && (\n <div className=\"lsg-carousel__pre-title\">\n <span className=\"lsg-carousel__pre-title-marker\" aria-hidden=\"true\" />\n <span>{preTitle}</span>\n </div>\n )}\n\n <HeadingTag className=\"lsg-carousel__heading\">{heading}</HeadingTag>\n\n {body && <p className=\"lsg-carousel__body\">{body}</p>}\n\n {cta && (\n <div className=\"lsg-carousel__actions\">\n <LsgButton\n className=\"lsg-carousel__cta\"\n href={cta.href}\n external={cta.external}\n variant={cta.variant ?? \"primary\"}\n onClick={cta.onClick}\n >\n {cta.label}\n </LsgButton>\n </div>\n )}\n </div>\n\n <div className=\"lsg-carousel__media-column\">\n <div className=\"lsg-carousel__viewport\" ref={viewportRef} dir={carouselDirection}>\n <div className=\"lsg-carousel__track\" role=\"list\">\n {items.map((item, index) => {\n const type = mediaTypeFor(item);\n const key = item.id ?? `${type}-${item.imageUrl ?? item.videoUrl ?? index}-${index}`;\n\n return (\n <article\n key={key}\n className=\"lsg-carousel__slide\"\n role=\"listitem\"\n aria-label={`Slide ${index + 1} of ${items.length}`}\n data-lsg-carousel-item\n >\n <div className=\"lsg-carousel__media\">\n {type === \"video\" && item.videoUrl ? (\n <LsgVideo\n videoUrl={item.videoUrl}\n imageUrl={item.videoPoster}\n imageAlt={item.imageAlt}\n controls={item.videoControls ?? true}\n autoplay={item.videoAutoPlay ?? false}\n muted={item.videoMuted ?? true}\n loop={item.videoLoop ?? false}\n displayMode=\"content\"\n showTags={false}\n className=\"lsg-carousel__video-component\"\n />\n ) : item.imageUrl ? (\n <LsgImage\n imageUrl={item.imageUrl}\n imageAlt={item.imageAlt}\n className=\"lsg-carousel__image-component\"\n />\n ) : (\n <div className=\"lsg-carousel__media-placeholder\" aria-hidden=\"true\" />\n )}\n\n {item.label && (\n <span className=\"lsg-carousel__media-label\">{item.label}</span>\n )}\n </div>\n </article>\n );\n })}\n </div>\n </div>\n\n {isCarousel && (\n <div className=\"lsg-carousel__navigation\" aria-label=\"Carousel navigation\">\n <button\n ref={prevBtnRef}\n className=\"lsg-carousel__arrow lsg-carousel__arrow--prev\"\n type=\"button\"\n aria-label=\"Previous slide\"\n data-lsg-carousel-prev\n >\n <span className=\"lsg-carousel__arrow-icon\" aria-hidden=\"true\" />\n </button>\n\n <div className=\"lsg-carousel__pagination\" ref={dotsRef}>\n {items.map((item, index) => (\n <button\n key={item.id ?? `dot-${index}`}\n className={`lsg-carousel__dot${index === 0 ? \" lsg-carousel__dot--active\" : \"\"}`}\n type=\"button\"\n aria-label={`Go to slide ${index + 1}`}\n aria-current={index === 0 ? \"true\" : \"false\"}\n data-lsg-carousel-dot\n />\n ))}\n </div>\n\n <button\n ref={nextBtnRef}\n className=\"lsg-carousel__arrow lsg-carousel__arrow--next\"\n type=\"button\"\n aria-label=\"Next slide\"\n data-lsg-carousel-next\n >\n <span className=\"lsg-carousel__arrow-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n )}\n </div>\n </div>\n </section>\n );\n};\n","import React from \"react\";\nimport \"./LsgCard.scss\";\n\nexport type LsgCardVariant = \"withImage\" | \"onlyText\" | \"withIcon\";\nexport type LsgCardColumns = 2 | 3 | 4 | 5;\n\nexport interface LsgCardCta {\n label: string;\n href: string;\n external?: boolean;\n}\n\nexport interface LsgCardProps {\n title: string;\n preTitle?: string;\n subtitle?: string;\n description?: string;\n imageUrl?: string;\n imageAlt?: string;\n iconUrl?: string;\n iconAlt?: string;\n /** Makes the complete card interactive when provided. */\n href?: string;\n cta?: LsgCardCta;\n variant?: LsgCardVariant;\n className?: string;\n}\n\nfunction cardVariantClass(variant: LsgCardVariant): string {\n switch (variant) {\n case \"onlyText\":\n return \"lsg-card--only-text\";\n case \"withIcon\":\n return \"lsg-card--with-icon\";\n case \"withImage\":\n default:\n return \"lsg-card--with-image\";\n }\n}\n\nexport const LsgCard: React.FC<LsgCardProps> = ({\n title,\n preTitle,\n subtitle,\n description,\n imageUrl,\n imageAlt = \"\",\n iconUrl,\n iconAlt = \"\",\n href,\n cta,\n variant = \"withImage\",\n className,\n}) => {\n const resolvedIconUrl = iconUrl ?? imageUrl;\n const actionLabel = cta?.label ?? \"Read more\";\n const cardClassName = [\"lsg-card\", cardVariantClass(variant), className]\n .filter(Boolean)\n .join(\" \");\n\n const content = (\n <>\n {variant === \"withImage\" && imageUrl && (\n <div className=\"lsg-card__media\">\n <img src={imageUrl} alt={imageAlt} loading=\"lazy\" />\n </div>\n )}\n <div className=\"lsg-card__content\">\n {variant === \"withIcon\" && resolvedIconUrl && (\n <div className=\"lsg-card__icon\" aria-hidden={iconAlt ? undefined : true}>\n <img src={resolvedIconUrl} alt={iconAlt} loading=\"lazy\" />\n </div>\n )}\n <div className=\"lsg-card__top\">\n {preTitle && (\n <span className=\"lsg-card__pre-title\">\n <span className=\"lsg-card__pre-title-dot\" aria-hidden=\"true\" />\n <span className=\"lsg-card__pre-title-text\">{preTitle}</span>\n <span className=\"lsg-card__pre-title-arrow\" aria-hidden=\"true\">→</span>\n </span>\n )}\n <h3 className=\"lsg-card__title\">{title}</h3>\n {subtitle && <h4 className=\"lsg-card__subtitle\">{subtitle}</h4>}\n </div>\n <div className=\"lsg-card__bottom\">\n {description && <p className=\"lsg-card__description\">{description}</p>}\n {(href || cta) && (\n href ? (\n <span className=\"lsg-card__cta\" aria-hidden=\"true\">\n <span className=\"lsg-card__cta-label\">{actionLabel}</span>\n <span className=\"lsg-card__cta-arrow\" aria-hidden=\"true\">→</span>\n </span>\n ) : (\n <a\n className=\"lsg-card__cta\"\n href={cta?.href}\n target={cta?.external ? \"_blank\" : undefined}\n rel={cta?.external ? \"noreferrer noopener\" : undefined}\n >\n <span className=\"lsg-card__cta-label\">{actionLabel}</span>\n <span className=\"lsg-card__cta-arrow\" aria-hidden=\"true\">→</span>\n </a>\n )\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <article className={cardClassName} data-lsg-card-variant={variant}>\n {href ? (\n <a href={href} className=\"lsg-card__link\" aria-label={title}>\n {content}\n </a>\n ) : (\n <div className=\"lsg-card__link\">{content}</div>\n )}\n </article>\n );\n};\n\nexport interface LsgCardsProps {\n cards: LsgCardProps[];\n columns?: LsgCardColumns;\n className?: string;\n}\n\n/** Renders the AEM/Storybook compatible responsive card grid. */\nexport const LsgCards: React.FC<LsgCardsProps> = ({\n cards,\n columns = 3,\n className,\n}) => {\n const listClassName = [\n \"lsg-cards\",\n `lsg-cards--cols-${columns}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <ul className={listClassName} data-columns={columns}>\n {cards.map((card, index) => (\n <li className=\"lsg-cards__item\" key={card.href ?? card.cta?.href ?? `${card.title}-${index}`}>\n <LsgCard {...card} />\n </li>\n ))}\n </ul>\n );\n};\n","import React from \"react\";\nimport { LsgCard } from \"../LsgCard\";\nimport type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\n\n/** One listed page. Field comments name the AEM `SimplePageModel` source. */\nexport interface LsgGeneratedListItem {\n /** `page.path` + `.html` */\n href: string;\n /** `referenceTitle` */\n title: string;\n /** `referencePreTitle` */\n preTitle?: string;\n /** `referenceSubtitle` */\n subtitle?: string;\n /** `referenceText` */\n description?: string;\n /** `referenceImage` — used as the media image or the icon, per `cardVariant`. */\n imageUrl?: string;\n /** Defaults to `title`, as the HTL does. */\n imageAlt?: string;\n}\n\nexport interface LsgGeneratedListProps {\n items: LsgGeneratedListItem[];\n /** Applies to every card in the list, as the AEM dialog does. */\n cardVariant?: LsgCardVariant;\n maxColumns?: LsgCardColumns;\n className?: string;\n}\n\n/**\n * Mirrors AEM `vtba/components/content/generated-list` in \"LSG Card\" mode,\n * including its `cq:htmlTag` wrapper. Card styling comes from LsgCard.\n */\nexport const LsgGeneratedList: React.FC<LsgGeneratedListProps> = ({\n items,\n cardVariant = \"withImage\",\n maxColumns = 3,\n className,\n}) => {\n const wrapperClassName = [\"c-row--divider\", \"generated-list\", className]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={wrapperClassName}>\n <div className=\"generated-list-container\">\n <ul\n className={`generated-list-container__ul lsg-cards lsg-cards--cols-${maxColumns}`}\n data-total-items={items.length}\n data-item-per-row={maxColumns}\n data-columns={maxColumns}\n >\n {items.map((item, index) => (\n <li className=\"lsg-cards__item\" key={`${item.href}-${index}`}>\n <LsgCard {...item} imageAlt={item.imageAlt ?? item.title} variant={cardVariant} />\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgPagination.scss\";\n\nexport type LsgPaginationRangeItem = number | \"ellipsis\";\n\nexport interface LsgPaginationLabels {\n nav: string;\n first: string;\n previous: string;\n next: string;\n last: string;\n page: (page: number) => string;\n}\n\nexport interface LsgPaginationProps {\n /** 1-based. */\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n /** Pages shown either side of the current one when truncating. */\n siblingCount?: number;\n /**\n * Collapses runs of page numbers into \"…\" (page 10 of 20 → 1 … 9 10 11 … 20).\n * Turn off to list every page.\n */\n truncate?: boolean;\n /** Shows the First and Last controls. */\n showFirstLast?: boolean;\n labels?: Partial<LsgPaginationLabels>;\n className?: string;\n}\n\nconst DEFAULT_LABELS: LsgPaginationLabels = {\n nav: \"Pagination\",\n first: \"First\",\n previous: \"Previous\",\n next: \"Next\",\n last: \"Last\",\n page: (page) => `Page ${page}`,\n};\n\n/**\n * Page numbers to show: always the first and last page plus the current page\n * ± `siblingCount`. A gap of a single page shows that page rather than \"…\".\n * Page 2 of 6 → [1, 2, 3, \"ellipsis\", 6].\n */\nexport function getLsgPaginationRange(\n currentPage: number,\n totalPages: number,\n siblingCount = 1,\n): LsgPaginationRangeItem[] {\n if (totalPages < 1) {\n return [];\n }\n\n const current = Math.min(Math.max(currentPage, 1), totalPages);\n const pages = new Set<number>([1, totalPages]);\n for (let page = current - siblingCount; page <= current + siblingCount; page += 1) {\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n\n const sorted = Array.from(pages).sort((a, b) => a - b);\n const range: LsgPaginationRangeItem[] = [];\n sorted.forEach((page, index) => {\n const previous = sorted[index - 1];\n if (previous !== undefined) {\n if (page - previous === 2) {\n range.push(previous + 1);\n } else if (page - previous > 2) {\n range.push(\"ellipsis\");\n }\n }\n range.push(page);\n });\n return range;\n}\n\ntype ControlKind = \"first\" | \"previous\" | \"next\" | \"last\";\n\n// Left-pointing glyphs on a 24×24 grid; next/last mirror them. Each control\n// carries every glyph its themes need and theme CSS shows one: theme 1 uses\n// the chevrons (‹ «), theme 2 the bar (|<), theme 3 the arrow (←).\nconst GLYPHS: Record<\"previous\" | \"first\", Record<string, string>> = {\n previous: {\n chevron: \"M14.5 6.5 9 12l5.5 5.5\",\n arrow: \"M19 12H5M11 6l-6 6 6 6\",\n },\n first: {\n \"chevron-double\": \"M12 6.5 6.5 12l5.5 5.5M18 6.5 12.5 12l5.5 5.5\",\n bar: \"M7 6.5v11M16.5 6.5 11 12l5.5 5.5\",\n },\n};\n\nconst PaginationIcon: React.FC<{ kind: ControlKind }> = ({ kind }) => {\n const glyphs = GLYPHS[kind === \"first\" || kind === \"last\" ? \"first\" : \"previous\"];\n const mirrored = kind === \"next\" || kind === \"last\";\n\n return (\n <svg\n className=\"lsg-pagination__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <g transform={mirrored ? \"matrix(-1 0 0 1 24 0)\" : undefined}>\n {Object.entries(glyphs).map(([name, d]) => (\n <path key={name} className={`lsg-pagination__glyph lsg-pagination__glyph--${name}`} d={d} />\n ))}\n </g>\n </svg>\n );\n};\n\nexport const LsgPagination: React.FC<LsgPaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n truncate = true,\n showFirstLast = false,\n labels,\n className,\n}) => {\n if (totalPages <= 1) {\n return null;\n }\n\n const text = { ...DEFAULT_LABELS, ...labels };\n const current = Math.min(Math.max(currentPage, 1), totalPages);\n const goTo = (page: number) => {\n if (page !== current && page >= 1 && page <= totalPages) {\n onPageChange(page);\n }\n };\n\n const control = (kind: ControlKind, target: number, disabled: boolean) => {\n const label = <span className=\"lsg-pagination__label\">{text[kind]}</span>;\n const iconFirst = kind === \"first\" || kind === \"previous\";\n\n return (\n <li className={`lsg-pagination__item lsg-pagination__item--${kind}`}>\n <button\n type=\"button\"\n className={`lsg-pagination__control lsg-pagination__control--${kind}`}\n disabled={disabled}\n onClick={() => goTo(target)}\n >\n {iconFirst && <PaginationIcon kind={kind} />}\n {label}\n {!iconFirst && <PaginationIcon kind={kind} />}\n </button>\n </li>\n );\n };\n\n return (\n <nav className={[\"lsg-pagination\", className].filter(Boolean).join(\" \")} aria-label={text.nav}>\n <ul className=\"lsg-pagination__list\">\n {showFirstLast && control(\"first\", 1, current === 1)}\n {control(\"previous\", current - 1, current === 1)}\n {(truncate\n ? getLsgPaginationRange(current, totalPages, siblingCount)\n : Array.from({ length: totalPages }, (_, index) => index + 1)\n ).map((item, index) =>\n item === \"ellipsis\" ? (\n <li\n key={`ellipsis-${index}`}\n className=\"lsg-pagination__item lsg-pagination__ellipsis\"\n aria-hidden=\"true\"\n >\n …\n </li>\n ) : (\n <li key={item} className=\"lsg-pagination__item\">\n <button\n type=\"button\"\n className=\"lsg-pagination__page\"\n aria-label={text.page(item)}\n aria-current={item === current ? \"page\" : undefined}\n onClick={() => goTo(item)}\n >\n {/* data-text lets CSS reserve the bold width, so hover doesn't shift the row. */}\n <span className=\"lsg-pagination__page-text\" data-text={item}>\n {item}\n </span>\n </button>\n </li>\n ),\n )}\n {control(\"next\", current + 1, current === totalPages)}\n {showFirstLast && control(\"last\", totalPages, current === totalPages)}\n </ul>\n </nav>\n );\n};\n","import React, { useRef, useState } from \"react\";\nimport { LsgCards } from \"../LsgCard\";\nimport type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\nimport type { LsgGeneratedListItem } from \"../LsgGeneratedList\";\nimport { LsgPagination } from \"../LsgPagination\";\nimport type { LsgPaginationLabels } from \"../LsgPagination\";\nimport \"./LsgBlogOverview.scss\";\n\nexport interface LsgBlogOverviewProps {\n items: LsgGeneratedListItem[];\n /** Applies to every card, as the AEM dialog does. */\n cardVariant?: LsgCardVariant;\n maxColumns?: LsgCardColumns;\n /** Rows of cards per page; the page size is `maxColumns × rows`. */\n rows?: number;\n paginationLabels?: Partial<LsgPaginationLabels>;\n /** Shows the pagination's First and Last controls. */\n showFirstLast?: boolean;\n /** Collapses long runs of page numbers into \"…\". */\n truncatePages?: boolean;\n /** Announced to screen readers after a page change. */\n statusLabel?: (page: number, totalPages: number) => string;\n className?: string;\n}\n\nconst defaultStatusLabel = (page: number, totalPages: number) => `Page ${page} of ${totalPages}`;\n\n/**\n * Client-side, paginated card list for the AEM Generated List when \"Enable\n * client-side React rendering\" is on. ac-react-app mounts it into the\n * component's placeholder; see mapAemGeneratedListJson for the data.\n */\nexport const LsgBlogOverview: React.FC<LsgBlogOverviewProps> = ({\n items,\n cardVariant = \"withImage\",\n maxColumns = 3,\n rows = 3,\n paginationLabels,\n showFirstLast = false,\n truncatePages = true,\n statusLabel = defaultStatusLabel,\n className,\n}) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const [page, setPage] = useState(1);\n const [status, setStatus] = useState(\"\");\n\n const pageSize = Math.max(1, maxColumns * Math.max(1, rows));\n const totalPages = Math.max(1, Math.ceil(items.length / pageSize));\n // Clamped on read, so a shorter item list never strands the user on an empty page.\n const currentPage = Math.min(page, totalPages);\n const pageItems = items.slice((currentPage - 1) * pageSize, currentPage * pageSize);\n\n const handlePageChange = (nextPage: number) => {\n setPage(nextPage);\n setStatus(statusLabel(nextPage, totalPages));\n\n // Bring the list back into view when its top has scrolled off the screen.\n const root = rootRef.current;\n if (root && root.getBoundingClientRect().top < 0) {\n const reduceMotion = window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n root.scrollIntoView({ behavior: reduceMotion ? \"auto\" : \"smooth\", block: \"start\" });\n }\n };\n\n return (\n <div ref={rootRef} className={[\"lsg-blog-overview\", className].filter(Boolean).join(\" \")}>\n <LsgCards\n columns={maxColumns}\n cards={pageItems.map((item) => ({\n ...item,\n imageAlt: item.imageAlt ?? item.title,\n variant: cardVariant,\n }))}\n />\n <LsgPagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={handlePageChange}\n labels={paginationLabels}\n showFirstLast={showFirstLast}\n truncate={truncatePages}\n />\n <p className=\"lsg-visually-hidden\" aria-live=\"polite\">\n {status}\n </p>\n </div>\n );\n};\n","import type { LsgCardColumns, LsgCardVariant } from \"../LsgCard\";\nimport type { LsgGeneratedListItem } from \"../LsgGeneratedList\";\n\n/** One page in the AEM Generated List JSON (`GeneratedListModel.getReactJson()`). Missing values are \"\". */\nexport interface LsgAemGeneratedListItemJson {\n /** JCR path without an extension. */\n path?: string;\n referencePreTitle?: string;\n referenceTitle?: string;\n referenceSubtitle?: string;\n referenceText?: string;\n /** Raw DAM path. */\n referenceImage?: string;\n \"jcr:title\"?: string;\n /** ISO-8601 instant. */\n \"jcr:created\"?: string;\n /** cq:tags IDs. */\n tags?: string[];\n}\n\n/** The JSON in the Generated List's `<script data-lsg-generated-list-data>`. */\nexport interface LsgAemGeneratedListJson {\n title?: string;\n displayAs?: string;\n cardVariant?: string;\n /** \"2\"–\"5\"; a string in the AEM output. */\n maxColumns?: string | number;\n centered?: boolean;\n narrowWidth?: boolean;\n items?: LsgAemGeneratedListItemJson[];\n}\n\nexport interface LsgAemGeneratedListData {\n items: LsgGeneratedListItem[];\n cardVariant: LsgCardVariant;\n maxColumns: LsgCardColumns;\n}\n\nconst CARD_VARIANTS: readonly LsgCardVariant[] = [\"withImage\", \"onlyText\", \"withIcon\"];\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value);\n\n/** Trimmed string, or undefined for anything empty or not a string. */\nconst text = (value: unknown): string | undefined =>\n typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n\nfunction toColumns(value: unknown): LsgCardColumns {\n const columns = Number.parseInt(String(value), 10);\n return columns >= 2 && columns <= 5 ? (columns as LsgCardColumns) : 3;\n}\n\nfunction toCardVariant(value: unknown): LsgCardVariant {\n return CARD_VARIANTS.find((variant) => variant === value) ?? \"withImage\";\n}\n\nfunction toItem(raw: unknown): LsgGeneratedListItem | null {\n if (!isRecord(raw)) {\n return null;\n }\n\n const path = text(raw.path);\n const title = text(raw.referenceTitle) ?? text(raw[\"jcr:title\"]);\n if (!path || !title) {\n return null;\n }\n\n const image = text(raw.referenceImage);\n return {\n // The HTL adds the extension with `@ extension='html'`; the JSON doesn't.\n href: path.endsWith(\".html\") ? path : `${path}.html`,\n title,\n preTitle: text(raw.referencePreTitle),\n subtitle: text(raw.referenceSubtitle),\n description: text(raw.referenceText),\n // DAM file names can contain spaces.\n imageUrl: image ? encodeURI(image) : undefined,\n };\n}\n\n/**\n * Maps the AEM Generated List JSON to LsgBlogOverview props. Tolerates missing\n * or malformed fields and never throws on the shape; items without a path or\n * title are dropped.\n */\nexport function mapAemGeneratedListJson(json: unknown): LsgAemGeneratedListData {\n const data = isRecord(json) ? json : {};\n const items = Array.isArray(data.items)\n ? data.items.map(toItem).filter((item): item is LsgGeneratedListItem => item !== null)\n : [];\n\n return {\n items,\n cardVariant: toCardVariant(data.cardVariant),\n maxColumns: toColumns(data.maxColumns),\n };\n}\n","export type LsgIconName =\n | \"bars\"\n | \"chevronLeft\"\n | \"chevronRight\"\n | \"close\"\n | \"globe\"\n | \"home\"\n | \"search\";\n\nexport const LSG_ICON_PATHS: Record<LsgIconName, string> = {\n bars:\n \"M96 160C96 142.3 110.3 128 128 128L512 128C529.7 128 544 142.3 544 160C544 177.7 529.7 192 512 192L128 192C110.3 192 96 177.7 96 160zM96 320C96 302.3 110.3 288 128 288L512 288C529.7 288 544 302.3 544 320C544 337.7 529.7 352 512 352L128 352C110.3 352 96 337.7 96 320zM544 480C544 497.7 529.7 512 512 512L128 512C110.3 512 96 497.7 96 480C96 462.3 110.3 448 128 448L512 448C529.7 448 544 462.3 544 480z\",\n chevronLeft:\n \"M169.4 297.4C156.9 309.9 156.9 330.2 169.4 342.7L361.4 534.7C373.9 547.2 394.2 547.2 406.7 534.7C419.2 522.2 419.2 501.9 406.7 489.4L237.3 320L406.6 150.6C419.1 138.1 419.1 117.8 406.6 105.3C394.1 92.8 373.8 92.8 361.3 105.3L169.3 297.3z\",\n chevronRight:\n \"M471.1 297.4C483.6 309.9 483.6 330.2 471.1 342.7L279.1 534.7C266.6 547.2 246.3 547.2 233.8 534.7C221.3 522.2 221.3 501.9 233.8 489.4L403.2 320L233.9 150.6C221.4 138.1 221.4 117.8 233.9 105.3C246.4 92.8 266.7 92.8 279.2 105.3L471.2 297.3z\",\n close:\n \"M504.6 148.5C515.9 134.9 514.1 114.7 500.5 103.4C486.9 92.1 466.7 93.9 455.4 107.5L320 270L184.6 107.5C173.3 93.9 153.1 92.1 139.5 103.4C125.9 114.7 124.1 134.9 135.4 148.5L278.3 320L135.4 491.5C124.1 505.1 125.9 525.3 139.5 536.6C153.1 547.9 173.3 546.1 184.6 532.5L320 370L455.4 532.5C466.7 546.1 486.9 547.9 500.5 536.6C514.1 525.3 515.9 505.1 504.6 491.5L361.7 320L504.6 148.5z\",\n globe:\n \"M367.2 477C345.7 520.7 325.8 528 320 528C314.2 528 294.3 520.7 272.8 477C255.8 442.5 243.6 395.4 240.7 344L399.3 344C396.3 395.5 384.1 442.6 367.2 477zM399.3 296L240.7 296C243.7 244.5 255.9 197.4 272.8 163C294.3 119.3 314.2 112 320 112C325.8 112 345.7 119.3 367.2 163C384.2 197.5 396.4 244.6 399.3 296zM447.4 344L526.6 344C518 418.6 469.9 481.3 403.8 510.4C427.8 467.6 444.1 408 447.4 344zM526.6 296L447.4 296C444.1 232 427.8 172.4 403.8 129.6C469.9 158.8 518 221.4 526.6 296zM192.6 296L113.4 296C122 221.4 170.1 158.7 236.2 129.6C212.2 172.4 195.9 232 192.6 296zM113.4 344L192.6 344C195.9 408 212.2 467.6 236.2 510.4C170.1 481.2 122 418.6 113.4 344zM320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576z\",\n home: \"M96 320L320 128L544 320H480V528H352V384H288V528H160V320H96z\",\n search:\n \"M480 272C480 317.9 465.1 360.3 440 394.7L566.6 521.4C579.1 533.9 579.1 554.2 566.6 566.7C554.1 579.2 533.8 579.2 521.3 566.7L394.7 440C360.3 465.1 317.9 480 272 480C157.1 480 64 386.9 64 272C64 157.1 157.1 64 272 64C386.9 64 480 157.1 480 272zM272 416C351.5 416 416 351.5 416 272C416 192.5 351.5 128 272 128C192.5 128 128 192.5 128 272C128 351.5 192.5 416 272 416z\",\n};\n\n","import React from \"react\";\nimport { LSG_ICON_PATHS } from \"./lsgIconPaths\";\nimport type { LsgIconName } from \"./lsgIconPaths\";\n\nexport interface LsgIconProps {\n name: LsgIconName;\n className?: string;\n}\n\nexport const LsgIcon: React.FC<LsgIconProps> = ({ name, className }) => (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 640 640\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d={LSG_ICON_PATHS[name]} />\n </svg>\n);\n","import React from \"react\";\nimport { LsgIcon } from \"../../../utils\";\nimport \"./LsgBreadcrumb.scss\";\n\nexport interface LsgBreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport interface LsgBreadcrumbProps {\n /** Breadcrumb items ordered from the nearest ancestor to the current page. */\n items?: LsgBreadcrumbItem[];\n /** Mirrors the AEM \"Show Breadcrumbs\" configuration. */\n showBreadcrumbs?: boolean;\n /** Mirrors the AEM \"Include Home Link\" configuration. */\n includeHome?: boolean;\n /** URL used by the home icon link. */\n homeHref?: string;\n /** Accessible label for the icon-only home link. */\n homeLabel?: string;\n className?: string;\n}\n\nfunction isSafeHref(href: string | undefined): boolean {\n if (!href) return false;\n\n const value = href.trim().toLowerCase();\n if (\n value.startsWith(\"javascript:\") ||\n value.startsWith(\"data:\") ||\n value.startsWith(\"vbscript:\")\n ) {\n return false;\n }\n\n return (\n value.startsWith(\"/\") ||\n value.startsWith(\"#\") ||\n value.startsWith(\"http://\") ||\n value.startsWith(\"https://\") ||\n !value.includes(\":\")\n );\n}\n\nconst BreadcrumbSeparator: React.FC = () => (\n <li className=\"lsg-breadcrumb__separator\" aria-hidden=\"true\">\n <LsgIcon name=\"chevronRight\" className=\"lsg-breadcrumb__separator-icon\" />\n </li>\n);\n\nexport const LsgBreadcrumb: React.FC<LsgBreadcrumbProps> = ({\n items = [],\n showBreadcrumbs = true,\n includeHome = true,\n homeHref = \"/\",\n homeLabel = \"Home\",\n className = \"\",\n}) => {\n if (!showBreadcrumbs) return null;\n\n const visibleItems = Array.isArray(items)\n ? items.filter(\n (item): item is LsgBreadcrumbItem =>\n Boolean(item) && typeof item.label === \"string\" && item.label.trim().length > 0,\n )\n : [];\n\n if (!includeHome && visibleItems.length === 0) return null;\n\n const rootClassName = [\"lsg-breadcrumb\", className].filter(Boolean).join(\" \");\n const safeHomeHref = isSafeHref(homeHref) ? homeHref : \"/\";\n\n return (\n <nav className={rootClassName} aria-label=\"Breadcrumb\">\n <ol className=\"lsg-breadcrumb__list\">\n {includeHome && (\n <li className=\"lsg-breadcrumb__item lsg-breadcrumb__item--home\">\n <a className=\"lsg-breadcrumb__home\" href={safeHomeHref} aria-label={homeLabel}>\n <LsgIcon name=\"home\" className=\"lsg-breadcrumb__home-icon\" />\n </a>\n </li>\n )}\n\n {visibleItems.map((item, index) => {\n const isCurrent = index === visibleItems.length - 1;\n const safeHref = isSafeHref(item.href) ? item.href : undefined;\n\n return (\n <React.Fragment key={`${item.label}-${index}`}>\n {(includeHome || index > 0) && <BreadcrumbSeparator />}\n <li\n className={[\n \"lsg-breadcrumb__item\",\n isCurrent ? \"lsg-breadcrumb__item--current\" : \"lsg-breadcrumb__item--ancestor\",\n ].join(\" \")}\n >\n {isCurrent ? (\n <span className=\"lsg-breadcrumb__current\" aria-current=\"page\">\n <span className=\"lsg-breadcrumb__current-marker\" aria-hidden=\"true\" />\n <span className=\"lsg-breadcrumb__label\">{item.label}</span>\n </span>\n ) : safeHref ? (\n <a className=\"lsg-breadcrumb__link\" href={safeHref}>\n {item.label}\n </a>\n ) : (\n <span className=\"lsg-breadcrumb__ancestor\">{item.label}</span>\n )}\n </li>\n </React.Fragment>\n );\n })}\n </ol>\n </nav>\n );\n};\n","import React from \"react\";\nimport \"./LsgLogo.scss\";\n\nexport interface LsgLogoProps {\n /** Image src. When omitted, renders a text logo. */\n src?: string;\n alt?: string;\n href?: string;\n width?: number;\n height?: number;\n /** Fallback text shown when no src is provided */\n text?: string;\n}\n\nexport const LsgLogo: React.FC<LsgLogoProps> = ({\n src,\n alt = \"Logo\",\n href = \"/\",\n width,\n height = 40,\n text = \"Atlas Copco\",\n}) => {\n const content = src ? (\n <img\n src={src}\n alt={alt}\n width={width}\n height={height}\n className=\"lsg-logo__image\"\n />\n ) : (\n <span className=\"lsg-logo__text\">{text}</span>\n );\n\n return (\n <a href={href} className=\"lsg-logo\" aria-label={src ? alt : undefined}>\n {content}\n </a>\n );\n};\n","import React from \"react\";\nimport \"./LsgNavigation.scss\";\n\nexport interface LsgNavItem {\n label: string;\n href: string;\n current?: boolean;\n open?: boolean;\n children?: LsgNavItem[];\n}\n\nexport interface LsgNavigationProps {\n items: LsgNavItem[];\n /** Accessible label for the <nav> landmark */\n label?: string;\n variant?: \"simple\" | \"dropdown\" | \"mega\";\n onItemClick?: (item: LsgNavItem, level: number) => void;\n onItemHover?: (item: LsgNavItem, level: number) => void;\n}\n\nexport const LsgNavigation: React.FC<LsgNavigationProps> = ({\n items,\n label = \"Main navigation\",\n variant = \"simple\",\n onItemClick,\n onItemHover,\n}) => {\n const renderItems = (navItems: LsgNavItem[], level = 0) => (\n <ul className={level === 0 ? \"lsg-nav__list\" : \"lsg-nav__dropdown\"} role=\"list\">\n {navItems.map((item) => {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <li\n key={`${item.href}-${level}`}\n className={[\n \"lsg-nav__item\",\n hasChildren ? \"lsg-nav__item--has-children\" : \"\",\n item.open ? \"lsg-nav__item--open\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => {\n if (onItemHover && hasChildren) {\n onItemHover(item, level);\n }\n }}\n >\n <a\n href={item.href}\n onClick={(event) => {\n if (onItemClick && hasChildren) {\n event.preventDefault();\n onItemClick(item, level);\n }\n }}\n className={[\"lsg-nav__link\", item.current ? \"lsg-nav__link--current\" : \"\"]\n .filter(Boolean)\n .join(\" \")}\n aria-current={item.current ? \"page\" : undefined}\n aria-expanded={variant === \"dropdown\" && hasChildren ? item.open : undefined}\n >\n <p>{item.label}</p>\n {hasChildren && (\n <span className=\"lsg-nav__chevron\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 10 5\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\">\n <path\n d=\"M1 0.5L5 4.5L9 0.5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n </a>\n {hasChildren && renderItems(item.children || [], level + 1)}\n </li>\n );\n })}\n </ul>\n );\n\n return (\n <nav className={[\"lsg-nav\", `lsg-nav--${variant}`].join(\" \")} aria-label={label}>\n {renderItems(items)}\n </nav>\n );\n};\n","import React, { useState, useRef, useEffect, useId } from \"react\";\nimport \"./LsgLanguageSwitcher.scss\";\nimport { LsgIcon } from \"../../../utils\";\n\nexport interface LsgLanguage {\n code: string;\n label: string;\n href: string;\n}\n\nexport interface LsgLanguageSwitcherProps {\n currentLanguage: string;\n languages: LsgLanguage[];\n /** Accessible label for the trigger button */\n label?: string;\n /** Called when a language is selected. Prevents link navigation when provided. */\n onLanguageChange?: (language: LsgLanguage) => void;\n}\n\nconst ChevronIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polyline points=\"2 4 6 8 10 4\" />\n </svg>\n);\n\n/**\n * Language Switcher\n *\n * Hydrated: state managed by React (useState).\n * Clientlib-only: driven by lsg-clientlib.js targeting [data-lsg-lang-switcher].\n */\nexport const LsgLanguageSwitcher: React.FC<LsgLanguageSwitcherProps> = ({\n currentLanguage,\n languages,\n label = \"Select language\",\n onLanguageChange,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const reactId = useId();\n const triggerId = `lsg-lang-trigger-${reactId}`;\n const dropdownId = `lsg-lang-dropdown-${reactId}`;\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handleClick = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClick);\n return () => document.removeEventListener(\"mousedown\", handleClick);\n }, [isOpen]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [isOpen]);\n\n return (\n <div className=\"lsg-lang-switcher\" ref={containerRef} data-lsg-lang-switcher>\n <button\n id={triggerId}\n type=\"button\"\n className=\"lsg-lang-switcher__trigger\"\n aria-label={label}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-controls={dropdownId}\n onClick={() => setIsOpen((prev) => !prev)}\n >\n <LsgIcon name=\"globe\" className=\"lsg-lang-switcher__globe\" />\n <span className=\"lsg-lang-switcher__current\">{currentLanguage}</span>\n <ChevronIcon />\n </button>\n\n {isOpen && (\n <ul\n id={dropdownId}\n className=\"lsg-lang-switcher__dropdown\"\n role=\"listbox\"\n aria-labelledby={triggerId}\n >\n {languages.map((lang) => (\n <li key={lang.code} className=\"lsg-lang-switcher__option\" role=\"option\">\n <a\n href={lang.href}\n className={[\n \"lsg-lang-switcher__option-link\",\n lang.code === currentLanguage ? \"lsg-lang-switcher__option-link--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-current={lang.code === currentLanguage ? true : undefined}\n onClick={(event) => {\n if (!onLanguageChange) return;\n\n event.preventDefault();\n onLanguageChange(lang);\n setIsOpen(false);\n }}\n >\n {lang.label}\n </a>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgSearchTrigger.scss\";\n\nexport interface LsgSearchTriggerProps {\n /** Accessible label for the button */\n label?: string;\n /** id of the search overlay this button controls */\n targetId?: string;\n onClick?: () => void;\n}\n\nconst SearchIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nexport const LsgSearchTrigger: React.FC<LsgSearchTriggerProps> = ({\n label = \"Open search\",\n targetId,\n onClick,\n}) => {\n return (\n <button\n type=\"button\"\n className=\"lsg-search-trigger\"\n aria-label={label}\n aria-haspopup=\"dialog\"\n aria-controls={targetId}\n onClick={onClick}\n data-lsg-search-trigger\n >\n <SearchIcon />\n </button>\n );\n};\n","import React, { useEffect, useRef } from \"react\";\nimport \"./LsgSearchOverlay.scss\";\n\nexport interface LsgSearchOverlayProps {\n id?: string;\n placeholder?: string;\n /** Accessible label for the search input */\n label?: string;\n isOpen?: boolean;\n onClose?: () => void;\n onSearch?: (query: string) => void;\n}\n\nconst SearchIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n);\n\nconst CloseIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\n/**\n * Search Overlay\n *\n * Hydrated: isOpen/onClose controlled by parent (e.g. LsgHeader).\n * Clientlib-only: driven by lsg-clientlib.js targeting [data-lsg-search-overlay].\n * The CSS class lsg-search-overlay--open drives visibility in both modes.\n */\nexport const LsgSearchOverlay: React.FC<LsgSearchOverlayProps> = ({\n id = \"lsg-search-overlay\",\n placeholder = \"Search…\",\n label = \"Search\",\n isOpen = false,\n onClose,\n onSearch,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const inputId = `${id}-input`;\n\n // Focus the input when overlay opens\n useEffect(() => {\n if (isOpen) inputRef.current?.focus();\n }, [isOpen]);\n\n // Close on Escape\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [isOpen, onClose]);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const query = inputRef.current?.value ?? \"\";\n if (query.trim()) onSearch?.(query.trim());\n };\n\n const overlayClass = [\"lsg-search-overlay\", isOpen ? \"lsg-search-overlay--open\" : \"\"]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div\n id={id}\n className={overlayClass}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={label}\n data-lsg-search-overlay\n >\n {/* Backdrop close */}\n <div\n className=\"lsg-search-overlay__backdrop\"\n aria-hidden=\"true\"\n onClick={onClose}\n style={{ position: \"absolute\", inset: 0, cursor: \"default\" }}\n />\n <div className=\"lsg-search-overlay__panel\">\n <form className=\"lsg-search-overlay__form\" role=\"search\" onSubmit={handleSubmit}>\n <label htmlFor={inputId} className=\"lsg-search-overlay__label\">\n <SearchIcon />\n <span className=\"lsg-visually-hidden\">{label}</span>\n </label>\n <input\n id={inputId}\n ref={inputRef}\n type=\"search\"\n className=\"lsg-search-overlay__input\"\n placeholder={placeholder}\n autoComplete=\"off\"\n />\n <button type=\"submit\" className=\"lsg-search-overlay__submit\" aria-label=\"Submit search\">\n <SearchIcon />\n </button>\n <button\n type=\"button\"\n className=\"lsg-search-overlay__close\"\n aria-label=\"Close search\"\n onClick={onClose}\n >\n <CloseIcon />\n </button>\n </form>\n </div>\n </div>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport \"./LsgHeader.scss\";\nimport { LsgLogo, LsgLogoProps } from \"../LsgLogo\";\nimport { LsgNavigation, LsgNavItem } from \"../LsgNavigation\";\nimport { LsgLanguage, LsgLanguageSwitcher } from \"../LsgLanguageSwitcher\";\nimport { LsgSearchOverlay } from \"../LsgSearchOverlay\";\nimport { LsgIcon, LsgIconName } from \"../../../utils\";\n\nexport type LsgHeaderSize = \"full-width\" | \"medium\" | \"narrow\";\n\nexport interface LsgHeaderProps {\n logo?: LsgLogoProps;\n navItems?: LsgNavItem[];\n languages?: LsgLanguage[];\n currentLanguage?: string;\n onLanguageChange?: (language: LsgLanguage) => void;\n searchLabel?: string;\n searchPlaceholder?: string;\n variant?: \"simple\" | \"dropdown\" | \"mega\";\n /**\n * Width of the header bar, mirroring the AEM `./headerSize` dialog select.\n * Left undefined on purpose so no modifier class is emitted and the theme's\n * own header width applies. Styled for theme 1 only.\n */\n size?: LsgHeaderSize;\n menuOpen?: boolean;\n mobileLevel?: 0 | 1 | 2 | 3 | 4;\n activePath?: string[];\n mobileSelectedLabel?: string;\n onMenuToggle?: () => void;\n onNavItemHover?: (item: LsgNavItem, level: number) => void;\n onDropdownClose?: () => void;\n onMegaItemHover?: (item: LsgNavItem, level: number) => void;\n onMobileItemClick?: (item: LsgNavItem, level: number) => void;\n onMobileBreadcrumbClick?: (level: 0 | 1 | 2 | 3 | 4) => void;\n children?: React.ReactNode;\n}\n\nconst SEARCH_OVERLAY_ID = \"lsg-header-search-overlay\";\n\nconst LsgHeaderIcon: React.FC<{ name: LsgIconName; className?: string }> = ({\n name,\n className,\n}) => {\n return (\n <LsgIcon\n name={name}\n className={[\"lsg-header__icon\", `lsg-header__icon--${name}`, className || \"\"]\n .filter(Boolean)\n .join(\" \")}\n />\n );\n};\n\nconst getItemByPath = (\n items: LsgNavItem[],\n activePath: string[],\n depth: number\n): LsgNavItem | undefined => {\n let currentItems = items;\n let currentItem: LsgNavItem | undefined;\n\n for (let i = 0; i <= depth; i += 1) {\n currentItem = currentItems.find((item) => item.label === activePath[i]);\n currentItems = currentItem?.children || [];\n }\n\n return currentItem;\n};\n\nconst getItemsAtLevel = (\n items: LsgNavItem[],\n activePath: string[],\n level: number\n): LsgNavItem[] => {\n if (level <= 1) {\n return items;\n }\n\n return getItemByPath(items, activePath, level - 2)?.children || [];\n};\n\nconst getMegaColumns = (\n items: LsgNavItem[],\n activePath: string[],\n maxDepth = 4\n): LsgNavItem[][] => {\n const columns: LsgNavItem[][] = [items];\n let currentItems = items;\n\n activePath.slice(0, maxDepth - 1).forEach((label) => {\n const activeItem = currentItems.find((item) => item.label === label);\n\n if (activeItem?.children?.length) {\n columns.push(activeItem.children);\n currentItems = activeItem.children;\n }\n });\n\n return columns.slice(0, maxDepth);\n};\n\nconst isCurrentOrActiveAtLevel = (item: LsgNavItem, activePath: string[], level: number) =>\n item.current || activePath[level] === item.label;\n\nconst isSelectedAtLevel = (item: LsgNavItem, activePath: string[], level: number) =>\n activePath[level] === item.label;\n\nconst hasOpenNavItem = (items: LsgNavItem[]): boolean =>\n items.some((item) => item.open || hasOpenNavItem(item.children || []));\n\nconst clearMegaMenuBranch = (scope: ParentNode): void => {\n if (scope instanceof HTMLElement) {\n scope.classList.remove(\"lsg-header__mega-item--open\");\n scope.classList.remove(\"lsg-header__mega-column--open\");\n }\n\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--open\").forEach((item) => {\n item.classList.remove(\"lsg-header__mega-item--open\");\n });\n scope.querySelectorAll<HTMLElement>(\".lsg-header__mega-column--open\").forEach((column) => {\n column.classList.remove(\"lsg-header__mega-column--open\");\n });\n};\n\nconst activateMegaMenuItem = (item: HTMLElement): void => {\n const parentColumn = item.parentElement;\n\n if (parentColumn) {\n Array.from(parentColumn.children).forEach((openItem) => {\n if (openItem !== item) {\n clearMegaMenuBranch(openItem as HTMLElement);\n }\n });\n }\n\n item.classList.add(\"lsg-header__mega-item--open\");\n item\n .querySelector<HTMLElement>(\":scope > .lsg-header__mega-column\")\n ?.classList.add(\"lsg-header__mega-column--open\");\n};\n\nconst HeaderActionButton: React.FC<{\n label: string;\n icon: LsgIconName;\n onClick?: () => void;\n controls?: string;\n className?: string;\n}> = ({ label, icon, onClick, controls, className }) => (\n <button\n type=\"button\"\n className={[\"lsg-header__icon-button\", className || \"\"].filter(Boolean).join(\" \")}\n aria-label={label}\n aria-controls={controls}\n onClick={onClick}\n data-lsg-search-trigger={icon === \"search\" ? \"\" : undefined}\n >\n <LsgHeaderIcon name={icon} />\n </button>\n);\n\nexport const LsgHeader: React.FC<LsgHeaderProps> = ({\n logo,\n navItems = [],\n languages = [],\n currentLanguage = \"EN\",\n onLanguageChange,\n searchLabel = \"Open search\",\n searchPlaceholder = \"Search products, documents...\",\n variant = \"simple\",\n size,\n menuOpen = false,\n mobileLevel = 0,\n activePath = [],\n mobileSelectedLabel,\n onMenuToggle,\n onNavItemHover,\n onDropdownClose,\n onMegaItemHover,\n onMobileItemClick,\n onMobileBreadcrumbClick,\n children,\n}) => {\n const [searchOpen, setSearchOpen] = useState(false);\n const headerRef = useRef<HTMLElement>(null);\n const mobileOpen = menuOpen || mobileLevel > 0;\n const columns = children ? [] : getMegaColumns(navItems, activePath);\n const mobileItems = getItemsAtLevel(navItems, activePath, mobileLevel || 1);\n const mobileBackLabel = activePath[activePath.length - 1] || \"menu\";\n const dropdownOpen = variant === \"dropdown\" && hasOpenNavItem(navItems);\n\n useEffect(() => {\n if (!menuOpen && !dropdownOpen) {\n return undefined;\n }\n\n const closeOnOutsidePointerDown = (event: MouseEvent | TouchEvent) => {\n if (headerRef.current?.contains(event.target as Node)) {\n return;\n }\n\n if (menuOpen) {\n onMenuToggle?.();\n }\n\n if (dropdownOpen) {\n onDropdownClose?.();\n }\n };\n\n document.addEventListener(\"mousedown\", closeOnOutsidePointerDown);\n document.addEventListener(\"touchstart\", closeOnOutsidePointerDown);\n\n return () => {\n document.removeEventListener(\"mousedown\", closeOnOutsidePointerDown);\n document.removeEventListener(\"touchstart\", closeOnOutsidePointerDown);\n };\n }, [dropdownOpen, menuOpen, onDropdownClose, onMenuToggle]);\n\n useEffect(() => {\n if (variant !== \"mega\" || !children || !menuOpen || !headerRef.current) {\n return undefined;\n }\n\n const megaItems = Array.from(\n headerRef.current.querySelectorAll<HTMLElement>(\".lsg-header__mega-item--has-children\")\n );\n const removeListeners = megaItems.map((item) => {\n const onMouseEnter = () => activateMegaMenuItem(item);\n const onFocusIn = () => activateMegaMenuItem(item);\n\n item.addEventListener(\"mouseenter\", onMouseEnter);\n item.addEventListener(\"focusin\", onFocusIn);\n\n return () => {\n item.removeEventListener(\"mouseenter\", onMouseEnter);\n item.removeEventListener(\"focusin\", onFocusIn);\n };\n });\n\n return () => {\n removeListeners.forEach((removeListener) => removeListener());\n if (headerRef.current) {\n clearMegaMenuBranch(headerRef.current);\n }\n };\n }, [children, menuOpen, variant]);\n\n const openSearch = () => setSearchOpen(true);\n\n const renderActions = (showMenu = false) => (\n <div className=\"lsg-header__actions\">\n {showMenu && variant === \"mega\" && (\n <>\n <button\n type=\"button\"\n className=\"lsg-header__menu-trigger\"\n aria-label={menuOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={menuOpen}\n onClick={onMenuToggle}\n data-lsg-menu-trigger\n >\n <LsgHeaderIcon name={menuOpen ? \"close\" : \"bars\"} />\n <span>{menuOpen ? \"CLOSE\" : \"MENU\"}</span>\n </button>\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n </>\n )}\n <HeaderActionButton\n label={searchLabel}\n icon=\"search\"\n controls={SEARCH_OVERLAY_ID}\n onClick={openSearch}\n />\n {languages.length > 0 && (\n <LsgLanguageSwitcher\n currentLanguage={currentLanguage}\n languages={languages}\n label={`Current language: ${currentLanguage}`}\n onLanguageChange={onLanguageChange}\n />\n )}\n </div>\n );\n\n const renderMegaPanel = () => (\n <div className=\"lsg-header__mega-panel\">\n <div className=\"lsg-header__mega-inner\">\n {columns.map((columnItems, columnIndex) => (\n <ul key={`mega-column-${columnIndex}`} className=\"lsg-header__mega-column\" role=\"list\">\n {columnItems.map((item) => {\n const hasChildren = Boolean(item.children?.length);\n\n return (\n <li\n key={`${item.href}-${columnIndex}`}\n className={[\n \"lsg-header__mega-item\",\n hasChildren ? \"lsg-header__mega-item--has-children\" : \"\",\n isSelectedAtLevel(item, activePath, columnIndex)\n ? \"lsg-header__mega-item--active\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onMouseEnter={() => {\n if (onMegaItemHover && hasChildren) {\n onMegaItemHover(item, columnIndex);\n }\n }}\n >\n <a href={item.href} className=\"lsg-header__mega-link\">\n <span>{item.label}</span>\n {hasChildren && <LsgHeaderIcon name=\"chevronRight\" />}\n </a>\n </li>\n );\n })}\n </ul>\n ))}\n </div>\n </div>\n );\n\n const renderMobileMenu = () => (\n <div className=\"lsg-header__mobile-panel\">\n {variant === \"dropdown\" ? (\n <LsgNavigation\n items={navItems}\n variant=\"dropdown\"\n onItemClick={(item, level) => onMobileItemClick?.(item, level + 1)}\n />\n ) : (\n <>\n {variant === \"mega\" && mobileLevel > 1 && (\n <nav className=\"lsg-header__mobile-back\" aria-label=\"Menu navigation\">\n <button\n type=\"button\"\n className=\"lsg-header__mobile-back-button\"\n aria-label={`Back to ${mobileBackLabel}`}\n onClick={() =>\n onMobileBreadcrumbClick?.(Math.max(1, mobileLevel - 1) as 1 | 2 | 3 | 4)\n }\n >\n <LsgHeaderIcon name=\"chevronRight\" />\n <span>Back to {mobileBackLabel}</span>\n </button>\n </nav>\n )}\n\n <ul className=\"lsg-header__mobile-list\" role=\"list\">\n {mobileItems.map((item, index) => {\n const hasChildren = Boolean(item.children?.length);\n const isSelected = mobileSelectedLabel\n ? item.label === mobileSelectedLabel\n : isCurrentOrActiveAtLevel(item, activePath, Math.max(0, mobileLevel - 1));\n\n return (\n <li\n key={`${item.href}-mobile-${index}`}\n className={[\n \"lsg-header__mobile-item\",\n hasChildren ? \"lsg-header__mobile-item--has-children\" : \"\",\n isSelected ? \"lsg-header__mobile-item--active\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <a\n href={item.href}\n className=\"lsg-header__mobile-link\"\n onClick={(event) => {\n if (onMobileItemClick && hasChildren) {\n event.preventDefault();\n onMobileItemClick(item, Math.max(1, mobileLevel || 1));\n }\n }}\n >\n <span>{item.label}</span>\n {hasChildren && <LsgHeaderIcon name=\"chevronRight\" />}\n </a>\n </li>\n );\n })}\n </ul>\n </>\n )}\n </div>\n );\n\n return (\n <>\n <LsgSearchOverlay\n id={SEARCH_OVERLAY_ID}\n isOpen={searchOpen}\n onClose={() => setSearchOpen(false)}\n placeholder={searchPlaceholder}\n />\n <header\n ref={headerRef}\n className={[\n \"lsg-header\",\n `lsg-header--${variant}`,\n size ? `lsg-header--size-${size}` : \"\",\n menuOpen ? \"lsg-header--menu-open\" : \"\",\n `lsg-header--mobile-level-${mobileLevel}`,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <div className=\"lsg-header__inner\">\n <div className=\"lsg-logo-decorator\">\n <div className=\"lsg-logo\">\n <LsgLogo {...logo} />\n </div>\n </div>\n\n {variant !== \"mega\" && navItems.length > 0 && (\n <div className=\"lsg-header__nav\">\n <LsgNavigation items={navItems} variant={variant} onItemHover={onNavItemHover} />\n </div>\n )}\n\n {variant === \"mega\" && (\n <div className=\"lsg-header__desktop-menu\">{renderActions(true)}</div>\n )}\n\n {variant !== \"mega\" && (\n <div className=\"lsg-header__desktop-actions\">\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n {renderActions(false)}\n </div>\n )}\n\n <div className=\"lsg-header__mobile-actions\">\n <HeaderActionButton\n label={searchLabel}\n icon=\"search\"\n controls={SEARCH_OVERLAY_ID}\n onClick={openSearch}\n />\n {languages.length > 0 && (\n <LsgLanguageSwitcher\n currentLanguage={currentLanguage}\n languages={languages}\n label={`Current language: ${currentLanguage}`}\n onLanguageChange={onLanguageChange}\n />\n )}\n <span className=\"lsg-header__separator\" aria-hidden=\"true\">\n |\n </span>\n <button\n type=\"button\"\n className=\"lsg-header__icon-button\"\n aria-label={mobileOpen ? \"Close menu\" : \"Open menu\"}\n aria-expanded={mobileOpen}\n onClick={onMenuToggle}\n data-lsg-menu-trigger\n >\n <LsgHeaderIcon name={mobileOpen ? \"close\" : \"bars\"} />\n </button>\n </div>\n </div>\n\n {variant === \"mega\" && menuOpen && (children || renderMegaPanel())}\n {mobileOpen && renderMobileMenu()}\n </header>\n\n \n </>\n );\n};\n","import React from \"react\";\nimport \"./LsgQuickLinks.scss\";\n\nexport interface LsgQuickLink {\n label: string;\n href: string;\n}\n\nexport interface LsgQuickLinksProps {\n heading?: string;\n links: LsgQuickLink[];\n}\n\nexport const LsgQuickLinks: React.FC<LsgQuickLinksProps> = ({ heading, links }) => {\n return (\n <nav className=\"lsg-quick-links\" aria-label={heading ?? \"Quick links\"}>\n {heading && <p className=\"lsg-quick-links__heading\" aria-hidden=\"true\">{heading}</p>}\n <ul className=\"lsg-quick-links__list\" role=\"list\">\n {links.map((link) => (\n <li key={link.href} className=\"lsg-quick-links__item\">\n <a href={link.href} className=\"lsg-quick-links__link\">\n {link.label}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n};\n","import React from \"react\";\nimport \"./LsgSocialMediaIcons.scss\";\n\nexport type LsgSocialPlatform =\n | \"linkedin\"\n | \"twitter\"\n | \"facebook\"\n | \"instagram\"\n | \"youtube\";\n\nexport interface LsgSocialItem {\n platform: LsgSocialPlatform;\n href: string;\n /** Screen-reader label, e.g. \"Atlas Copco on LinkedIn\" */\n label: string;\n}\n\nexport interface LsgSocialMediaIconsProps {\n items: LsgSocialItem[];\n}\n\nconst platformIcons: Record<LsgSocialPlatform, React.ReactElement> = {\n linkedin: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.95v5.66H9.34V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.45v6.29zM5.34 7.43a2.07 2.07 0 1 1 0-4.14 2.07 2.07 0 0 1 0 4.14zM7.12 20.45H3.55V9h3.57v11.45z\" />\n </svg>\n ),\n twitter: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n ),\n facebook: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M24 12.073C24 5.405 18.627 0 12 0S0 5.405 0 12.073C0 18.1 4.388 23.094 10.125 24v-8.437H7.078v-3.49h3.047V9.41c0-3.025 1.792-4.697 4.533-4.697 1.312 0 2.686.236 2.686.236v2.97h-1.513c-1.491 0-1.956.93-1.956 1.874v2.25h3.328l-.532 3.49h-2.796V24C19.612 23.094 24 18.1 24 12.073z\" />\n </svg>\n ),\n instagram: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 1 0 0 12.324 6.162 6.162 0 0 0 0-12.324zM12 16a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm6.406-11.845a1.44 1.44 0 1 0 0 2.881 1.44 1.44 0 0 0 0-2.881z\" />\n </svg>\n ),\n youtube: (\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z\" />\n </svg>\n ),\n};\n\nexport const LsgSocialMediaIcons: React.FC<LsgSocialMediaIconsProps> = ({ items }) => {\n return (\n <ul className=\"lsg-social-icons\" role=\"list\">\n {items.map((item) => (\n <li key={item.platform} className=\"lsg-social-icons__item\">\n <a\n href={item.href}\n className=\"lsg-social-icons__link\"\n aria-label={item.label}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {platformIcons[item.platform]}\n </a>\n </li>\n ))}\n </ul>\n );\n};\n","import React from \"react\";\nimport \"./LsgFooter.scss\";\nimport { LsgLogo, LsgLogoProps } from \"../LsgLogo\";\n\nexport interface LsgFooterNavItem {\n label: string;\n href: string;\n}\n\nexport interface LsgFooterContact {\n address?: string;\n phone?: string;\n fax?: string;\n email?: string;\n}\n\nexport interface LsgFooterColHeadings {\n contact?: string;\n quickLinks?: string;\n about?: string;\n contactAlt?: string;\n}\n\nexport interface LsgFooterProps {\n variant?: \"simple\" | \"complex\";\n /** 2-row simple variant (brand line top row, cookie+copyright+AI bottom row) */\n simpleTwoRow?: boolean;\n /** Brand line shown in simple 2-row top or complex footer below logo */\n brandLine?: string;\n /** Column layout for complex variant. Default: \"2col\" */\n complexColumns?: \"2col\" | \"3col\";\n /** Show \"This Website Is Translated With AI\" badge */\n showAiBadge?: boolean;\n /** Cookie settings link text (shown in 2-row simple or complex bottom bar) */\n cookieSetting?: string;\n logo?: LsgLogoProps;\n navItems?: LsgFooterNavItem[];\n contact?: LsgFooterContact;\n quickLinks?: LsgFooterNavItem[];\n copyright?: string;\n /** Column headings for complex footer */\n colHeadings?: LsgFooterColHeadings;\n /** Social icon links shown in complex footer */\n socialLinks?: {\n platform: \"facebook\" | \"twitter\" | \"linkedin\" | \"youtube\" | \"instagram\";\n href: string;\n }[];\n /** Where to show social icons in complex variant: \"body\" | \"bottom-bar\". Default: \"body\" */\n socialPosition?: \"body\" | \"bottom-bar\";\n className?: string;\n}\n\nconst PhoneIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Pro v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. */}\n <path\n d=\"M252.6 259L304.4 208L208.4 48L64.4 128L64.4 144C64.4 382.6 257.8 576 496.4 576L512.4 576L592.4 432L432.4 336L381.4 387.8C322.2 365 275.4 318.2 252.6 259zM440.1 396.6L527.9 449.3L484.3 527.8C281.9 521.5 118.9 358.6 112.6 156.1L191.1 112.5L243.8 200.3C226.8 217.1 211 232.6 196.5 246.9L207.8 276.3C235.5 348.2 292.3 404.9 364.1 432.6L393.5 443.9C407.8 429.4 423.3 413.6 440.1 396.6z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst FaxIcon = () => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M16 6h-1V2H5v4H4c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h1v2h10v-2h1c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zM7 4h6v2H7V4zm6 12H7v-4h6v4zm3-5H4V8h12v3z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst MailIcon = () => (\n <svg\n width=\"24\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Pro v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2026 Fonticons, Inc. */}\n <path\n d=\"M88 128L64 128L64 512L576 512L576 128L88 128zM528 192L528 196.1L320 353.9L112 196.1L112 176L528 176L528 192zM528 256.3L528 464L112 464L112 256.3L305.5 403.1L320 414.1L334.5 403.1L528 256.3z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst LocationIcon = () => (\n <svg\n width=\"18\"\n height=\"21\"\n viewBox=\"0 0 18 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9 0C5.13 0 2 3.13 2 7c0 5.25 7 13 7 13s7-7.75 7-13C16 3.13 12.87 0 9 0zm0 9.5C7.62 9.5 6.5 8.38 6.5 7S7.62 4.5 9 4.5 11.5 5.62 11.5 7 10.38 9.5 9 9.5z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nconst AiBadge = () => (\n <span className=\"lsg-footer__ai-badge\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M2 12h20M12 2a15.3 15.3 0 0 1 0 20M12 2a15.3 15.3 0 0 0 0 20\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n />\n </svg>\n This Website Is Translated With AI\n </span>\n);\n\nconst SocialIcon: React.FC<{ platform: string }> = ({ platform }) => {\n const icons: Record<string, React.ReactNode> = {\n facebook: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M240 363.3L240 576L356 576L356 363.3L442.5 363.3L460.5 265.5L356 265.5L356 230.9C356 179.2 376.3 159.4 428.7 159.4C445 159.4 458.1 159.8 465.7 160.6L465.7 71.9C451.4 68 416.4 64 396.2 64C289.3 64 240 114.5 240 223.4L240 265.5L174 265.5L174 363.3L240 363.3z\" />\n </svg>\n ),\n twitter: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n ),\n linkedin: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M196.3 512L103.4 512L103.4 212.9L196.3 212.9L196.3 512zM149.8 172.1C120.1 172.1 96 147.5 96 117.8C96 103.5 101.7 89.9 111.8 79.8C121.9 69.7 135.6 64 149.8 64C164 64 177.7 69.7 187.8 79.8C197.9 89.9 203.6 103.6 203.6 117.8C203.6 147.5 179.5 172.1 149.8 172.1zM543.9 512L451.2 512L451.2 366.4C451.2 331.7 450.5 287.2 402.9 287.2C354.6 287.2 347.2 324.9 347.2 363.9L347.2 512L254.4 512L254.4 212.9L343.5 212.9L343.5 253.7L344.8 253.7C357.2 230.2 387.5 205.4 432.7 205.4C526.7 205.4 544 267.3 544 347.7L544 512L543.9 512z\" />\n </svg>\n ),\n youtube: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z\" />\n </svg>\n ),\n instagram: (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 640 640\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n {/* Font Awesome Free v7.3.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc. */}\n <path d=\"M320.3 205C256.8 204.8 205.2 256.2 205 319.7C204.8 383.2 256.2 434.8 319.7 435C383.2 435.2 434.8 383.8 435 320.3C435.2 256.8 383.8 205.2 320.3 205zM319.7 245.4C360.9 245.2 394.4 278.5 394.6 319.7C394.8 360.9 361.5 394.4 320.3 394.6C279.1 394.8 245.6 361.5 245.4 320.3C245.2 279.1 278.5 245.6 319.7 245.4zM413.1 200.3C413.1 185.5 425.1 173.5 439.9 173.5C454.7 173.5 466.7 185.5 466.7 200.3C466.7 215.1 454.7 227.1 439.9 227.1C425.1 227.1 413.1 215.1 413.1 200.3zM542.8 227.5C541.1 191.6 532.9 159.8 506.6 133.6C480.4 107.4 448.6 99.2 412.7 97.4C375.7 95.3 264.8 95.3 227.8 97.4C192 99.1 160.2 107.3 133.9 133.5C107.6 159.7 99.5 191.5 97.7 227.4C95.6 264.4 95.6 375.3 97.7 412.3C99.4 448.2 107.6 480 133.9 506.2C160.2 532.4 191.9 540.6 227.8 542.4C264.8 544.5 375.7 544.5 412.7 542.4C448.6 540.7 480.4 532.5 506.6 506.2C532.8 480 541 448.2 542.8 412.3C544.9 375.3 544.9 264.5 542.8 227.5zM495 452C487.2 471.6 472.1 486.7 452.4 494.6C422.9 506.3 352.9 503.6 320.3 503.6C287.7 503.6 217.6 506.2 188.2 494.6C168.6 486.8 153.5 471.7 145.6 452C133.9 422.5 136.6 352.5 136.6 319.9C136.6 287.3 134 217.2 145.6 187.8C153.4 168.2 168.5 153.1 188.2 145.2C217.7 133.5 287.7 136.2 320.3 136.2C352.9 136.2 423 133.6 452.4 145.2C472 153 487.1 168.1 495 187.8C506.7 217.3 504 287.3 504 319.9C504 352.5 506.7 422.6 495 452z\" />\n </svg>\n ),\n };\n return <>{icons[platform] ?? null}</>;\n};\n\nconst SocialIconsRow: React.FC<{ links: NonNullable<LsgFooterProps[\"socialLinks\"]> }> = ({\n links,\n}) => (\n <div className=\"lsg-footer__bottom-social\">\n {links.map((l) => (\n <a\n key={l.platform}\n href={l.href}\n aria-label={l.platform}\n style={{ color: \"inherit\", display: \"inline-flex\", alignItems: \"center\", opacity: 0.8 }}\n >\n <SocialIcon platform={l.platform} />\n </a>\n ))}\n </div>\n);\n\nexport const LsgFooter: React.FC<LsgFooterProps> = ({\n variant = \"simple\",\n simpleTwoRow = false,\n brandLine = \"Part of Atlas Copco Group\",\n complexColumns = \"2col\",\n showAiBadge = false,\n cookieSetting,\n logo,\n navItems = [],\n contact,\n quickLinks = [],\n copyright,\n colHeadings,\n socialLinks,\n socialPosition = \"body\",\n className = \"\",\n}) => {\n const year = new Date().getFullYear();\n const copyrightText = copyright ?? `© ${year} Brand - Part of Atlas Copco Group`;\n\n // ── Simple footer ──────────────────────────────────────────────────────────\n if (variant === \"simple\") {\n if (simpleTwoRow) {\n return (\n <footer\n className={`lsg-footer lsg-footer--simple lsg-footer--simple-tworow${\n className ? ` ${className}` : \"\"\n }`}\n >\n <div className=\"lsg-footer__simple-top\">\n <div className=\"lsg-footer__brand-line\">\n <span>{brandLine}</span>\n </div>\n {navItems.length > 0 && (\n <nav className=\"lsg-footer__simple-nav\" aria-label=\"Footer navigation\">\n {navItems.map((item, i) => (\n <React.Fragment key={item.href}>\n {i > 0 && (\n <span className=\"lsg-footer__pipe\" aria-hidden=\"true\">\n |\n </span>\n )}\n <a href={item.href} className=\"lsg-footer__simple-nav-item\">\n {item.label}\n </a>\n </React.Fragment>\n ))}\n </nav>\n )}\n </div>\n <div className=\"lsg-footer__simple-bottom\">\n <div className=\"lsg-footer__simple-bottom-left\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && (\n <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n )\n }\n </div>\n {showAiBadge && <AiBadge />}\n </div>\n </footer>\n );\n }\n\n return (\n <footer className={`lsg-footer lsg-footer--simple${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__simple-inner\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n <div className=\"lsg-footer__brand-line\">\n <span>{brandLine}</span>\n </div>\n {navItems.length > 0 && (\n <nav className=\"lsg-footer__simple-nav\" aria-label=\"Footer navigation\">\n {navItems.map((item, i) => (\n <React.Fragment key={item.href}>\n {i > 0 && (\n <>\n <span className=\"lsg-footer__pipe\" aria-hidden=\"true\">\n |\n </span>\n <hr className=\"lsg-footer__mobile-divider\" aria-hidden=\"true\" />\n </>\n )}\n <a href={item.href} className=\"lsg-footer__simple-nav-item\">\n {item.label}\n </a>\n </React.Fragment>\n ))}\n </nav>\n )}\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n }\n </div>\n </footer>\n );\n }\n\n // ── Complex footer ─────────────────────────────────────────────────────────\n const is3col = complexColumns === \"3col\";\n const headings = {\n contact: colHeadings?.contact ?? \"CONTACT\",\n quickLinks: colHeadings?.quickLinks ?? (is3col ? \"Quicklinks\" : \"QUICK LINKS\"),\n about: colHeadings?.about ?? \"About brand\",\n contactAlt: colHeadings?.contactAlt ?? \"Contact\",\n };\n\n const bottomTopBar = (\n <>\n <div className=\"lsg-footer__bottom-top\">\n <div className=\"lsg-footer__brand-line\">\n <span>\n Discover how the Atlas Copco Group enables technology that transforms the future.\n </span>\n </div>\n <div className=\"lsg-footer__body-social\">\n {socialPosition === \"body\" && socialLinks && socialLinks.length > 0 && (\n <SocialIconsRow links={socialLinks} />\n )}\n </div>\n </div>\n </>\n );\n\n const bottomBar = (\n <>\n <hr className=\"lsg-footer__bottom-divider\" />\n <div className=\"lsg-footer__bottom\">\n <div className=\"lsg-footer__bottom-left\">\n <p className=\"lsg-footer__copyright\">{copyrightText}</p>\n {\n // This renders a One Trust cookie settings button in AEM. The class \"lsg-footer__cookie-button\" is used for styling and is unrelated to the functionality of the button itself.\n cookieSetting && <button className=\"lsg-footer__cookie-button\">{cookieSetting}</button>\n }\n\n {is3col && showAiBadge && <AiBadge />}\n </div>\n {!is3col && showAiBadge && <AiBadge />}\n {socialPosition === \"bottom-bar\" && socialLinks && socialLinks.length > 0 && (\n <SocialIconsRow links={socialLinks} />\n )}\n </div>\n </>\n );\n\n if (is3col) {\n return (\n <footer className={`lsg-footer lsg-footer--complex${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__complex-inner\">\n {logo && (\n <div className=\"lsg-footer__logo-col\">\n <LsgLogo {...logo} />\n {brandLine && <span className=\"lsg-footer__brand-line\">{brandLine}</span>}\n </div>\n )}\n <div className=\"lsg-footer__content-cols lsg-footer__content-cols--3col\">\n <div className=\"lsg-footer__about-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.about}</h3>\n {contact?.address && (\n <div className=\"lsg-footer__address\">\n <LocationIcon />\n <p>{contact.address}</p>\n </div>\n )}\n </div>\n <div className=\"lsg-footer__contact-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.contactAlt}</h3>\n <div className=\"lsg-footer__contact-items\">\n {contact?.phone && (\n <div className=\"lsg-footer__contact-item\">\n <PhoneIcon />\n <span>{contact.phone}</span>\n </div>\n )}\n {contact?.fax && (\n <div className=\"lsg-footer__contact-item\">\n <FaxIcon />\n <span>{contact.fax}</span>\n </div>\n )}\n {contact?.email && (\n <div className=\"lsg-footer__contact-item\">\n <MailIcon />\n <a href={`mailto:${contact.email}`}>{contact.email}</a>\n </div>\n )}\n </div>\n </div>\n {quickLinks.length > 0 && (\n <div className=\"lsg-footer__quicklinks-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.quickLinks}</h3>\n <ul className=\"lsg-footer__quicklinks-list\">\n {quickLinks.map((link, i) => (\n <li key={link.href ?? i} className=\"lsg-footer__quicklink-item\">\n <a href={link.href} className=\"lsg-footer__quicklink\">\n {link.label}\n </a>\n <hr className=\"lsg-footer__divider\" />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n {bottomTopBar}\n {bottomBar}\n </footer>\n );\n }\n\n return (\n <footer className={`lsg-footer lsg-footer--complex${className ? ` ${className}` : \"\"}`}>\n <div className=\"lsg-footer__complex-inner\">\n {logo && (\n <div className=\"lsg-footer__logo-col\">\n <LsgLogo {...logo} />\n {brandLine && <span className=\"lsg-footer__brand-line\">{brandLine}</span>}\n </div>\n )}\n <div className=\"lsg-footer__content-cols\">\n {contact && (\n <div className=\"lsg-footer__contact-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.contact}</h3>\n {contact.address && (\n <div className=\"lsg-footer__address\">\n <LocationIcon />\n <p>{contact.address}</p>\n </div>\n )}\n <hr className=\"lsg-footer__divider\" />\n <div className=\"lsg-footer__contact-items\">\n {contact.phone && (\n <div className=\"lsg-footer__contact-item\">\n <PhoneIcon />\n <span>{contact.phone}</span>\n </div>\n )}\n {contact.fax && (\n <div className=\"lsg-footer__contact-item\">\n <FaxIcon />\n <span>{contact.fax}</span>\n </div>\n )}\n {contact.email && (\n <div className=\"lsg-footer__contact-item\">\n <MailIcon />\n <a href={`mailto:${contact.email}`}>{contact.email}</a>\n </div>\n )}\n </div>\n </div>\n )}\n {quickLinks.length > 0 && (\n <div className=\"lsg-footer__quicklinks-col\">\n <h3 className=\"lsg-footer__col-heading\">{headings.quickLinks}</h3>\n <ul className=\"lsg-footer__quicklinks-list\">\n {quickLinks.map((link, i) => (\n <li key={link.href ?? i} className=\"lsg-footer__quicklink-item\">\n <a href={link.href} className=\"lsg-footer__quicklink\">\n {link.label}\n </a>\n <hr className=\"lsg-footer__divider\" />\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </div>\n {bottomTopBar}\n {bottomBar}\n </footer>\n );\n};\n","function clampNumber(number, min, max) {\n return Math.min(Math.max(number, min), max);\n}\nfunction isNumber(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction Fade(userOptions = {}) {\n const fullOpacity = 1;\n const noOpacity = 0;\n const fadeFriction = 0.68;\n let emblaApi;\n let opacities = [];\n let fadeToNextDistance;\n let distanceFromPointerDown = 0;\n let fadeVelocity = 0;\n let progress = 0;\n let shouldFadePair = false;\n let defaultSettledBehaviour;\n let defaultProgressBehaviour;\n function init(emblaApiInstance) {\n emblaApi = emblaApiInstance;\n const selectedSnap = emblaApi.selectedScrollSnap();\n const {\n scrollBody,\n containerRect,\n axis\n } = emblaApi.internalEngine();\n const containerSize = axis.measureSize(containerRect);\n fadeToNextDistance = clampNumber(containerSize * 0.75, 200, 500);\n shouldFadePair = false;\n opacities = emblaApi.scrollSnapList().map((_, index) => index === selectedSnap ? fullOpacity : noOpacity);\n defaultSettledBehaviour = scrollBody.settled;\n defaultProgressBehaviour = emblaApi.scrollProgress;\n scrollBody.settled = settled;\n emblaApi.scrollProgress = scrollProgress;\n emblaApi.on('select', select).on('slideFocus', fadeToSelectedSnapInstantly).on('pointerDown', pointerDown).on('pointerUp', pointerUp);\n disableScroll();\n fadeToSelectedSnapInstantly();\n }\n function destroy() {\n const {\n scrollBody\n } = emblaApi.internalEngine();\n scrollBody.settled = defaultSettledBehaviour;\n emblaApi.scrollProgress = defaultProgressBehaviour;\n emblaApi.off('select', select).off('slideFocus', fadeToSelectedSnapInstantly).off('pointerDown', pointerDown).off('pointerUp', pointerUp);\n emblaApi.slideNodes().forEach(slideNode => {\n const slideStyle = slideNode.style;\n slideStyle.opacity = '';\n slideStyle.transform = '';\n slideStyle.pointerEvents = '';\n if (!slideNode.getAttribute('style')) slideNode.removeAttribute('style');\n });\n }\n function fadeToSelectedSnapInstantly() {\n const selectedSnap = emblaApi.selectedScrollSnap();\n setOpacities(selectedSnap, fullOpacity);\n }\n function pointerUp() {\n shouldFadePair = false;\n }\n function pointerDown() {\n shouldFadePair = false;\n distanceFromPointerDown = 0;\n fadeVelocity = 0;\n }\n function select() {\n const duration = emblaApi.internalEngine().scrollBody.duration();\n fadeVelocity = duration ? 0 : fullOpacity;\n shouldFadePair = true;\n if (!duration) fadeToSelectedSnapInstantly();\n }\n function getSlideTransform(position) {\n const {\n axis\n } = emblaApi.internalEngine();\n const translateAxis = axis.scroll.toUpperCase();\n return `translate${translateAxis}(${axis.direction(position)}px)`;\n }\n function disableScroll() {\n const {\n translate,\n slideLooper\n } = emblaApi.internalEngine();\n translate.clear();\n translate.toggleActive(false);\n slideLooper.loopPoints.forEach(({\n translate\n }) => {\n translate.clear();\n translate.toggleActive(false);\n });\n }\n function lockExcessiveScroll(fadeIndex) {\n const {\n scrollSnaps,\n location,\n target\n } = emblaApi.internalEngine();\n if (!isNumber(fadeIndex) || opacities[fadeIndex] < 0.5) return;\n location.set(scrollSnaps[fadeIndex]);\n target.set(location);\n }\n function setOpacities(fadeIndex, velocity) {\n const scrollSnaps = emblaApi.scrollSnapList();\n scrollSnaps.forEach((_, indexA) => {\n const absVelocity = Math.abs(velocity);\n const currentOpacity = opacities[indexA];\n const isFadeIndex = indexA === fadeIndex;\n const nextOpacity = isFadeIndex ? currentOpacity + absVelocity : currentOpacity - absVelocity;\n const clampedOpacity = clampNumber(nextOpacity, noOpacity, fullOpacity);\n opacities[indexA] = clampedOpacity;\n const fadePair = isFadeIndex && shouldFadePair;\n const indexB = emblaApi.previousScrollSnap();\n if (fadePair) opacities[indexB] = 1 - clampedOpacity;\n if (isFadeIndex) setProgress(fadeIndex, clampedOpacity);\n setOpacity(indexA);\n });\n }\n function setOpacity(index) {\n const slidesInSnap = emblaApi.internalEngine().slideRegistry[index];\n const {\n scrollSnaps,\n containerRect\n } = emblaApi.internalEngine();\n const opacity = opacities[index];\n slidesInSnap.forEach(slideIndex => {\n const slideStyle = emblaApi.slideNodes()[slideIndex].style;\n const roundedOpacity = parseFloat(opacity.toFixed(2));\n const hasOpacity = roundedOpacity > noOpacity;\n const position = hasOpacity ? scrollSnaps[index] : containerRect.width + 2;\n const transform = getSlideTransform(position);\n if (hasOpacity) slideStyle.transform = transform;\n slideStyle.opacity = roundedOpacity.toString();\n slideStyle.pointerEvents = opacity > 0.5 ? 'auto' : 'none';\n if (!hasOpacity) slideStyle.transform = transform;\n });\n }\n function setProgress(fadeIndex, opacity) {\n const {\n index,\n dragHandler,\n scrollSnaps\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const snapFraction = 1 / (scrollSnaps.length - 1);\n let indexA = fadeIndex;\n let indexB = pointerDown ? emblaApi.selectedScrollSnap() : emblaApi.previousScrollSnap();\n if (pointerDown && indexA === indexB) {\n const reverseSign = Math.sign(distanceFromPointerDown) * -1;\n indexA = indexB;\n indexB = index.clone().set(indexB).add(reverseSign).get();\n }\n const currentPosition = indexB * snapFraction;\n const diffPosition = (indexA - indexB) * snapFraction;\n progress = currentPosition + diffPosition * opacity;\n }\n function getFadeIndex() {\n const {\n dragHandler,\n index,\n scrollBody\n } = emblaApi.internalEngine();\n const selectedSnap = emblaApi.selectedScrollSnap();\n if (!dragHandler.pointerDown()) return selectedSnap;\n const directionSign = Math.sign(scrollBody.velocity());\n const distanceSign = Math.sign(distanceFromPointerDown);\n const nextSnap = index.clone().set(selectedSnap).add(directionSign * -1).get();\n if (!directionSign || !distanceSign) return null;\n return distanceSign === directionSign ? nextSnap : selectedSnap;\n }\n function fade(emblaApi) {\n const {\n dragHandler,\n scrollBody\n } = emblaApi.internalEngine();\n const pointerDown = dragHandler.pointerDown();\n const velocity = scrollBody.velocity();\n const duration = scrollBody.duration();\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n if (pointerDown) {\n if (!velocity) return;\n distanceFromPointerDown += velocity;\n fadeVelocity = Math.abs(velocity / fadeToNextDistance);\n lockExcessiveScroll(fadeIndex);\n }\n if (!pointerDown) {\n if (!duration || noFadeIndex) return;\n fadeVelocity += (fullOpacity - opacities[fadeIndex]) / duration;\n fadeVelocity *= fadeFriction;\n }\n if (noFadeIndex) return;\n setOpacities(fadeIndex, fadeVelocity);\n }\n function settled() {\n const {\n target,\n location\n } = emblaApi.internalEngine();\n const diffToTarget = target.get() - location.get();\n const notReachedTarget = Math.abs(diffToTarget) >= 1;\n const fadeIndex = getFadeIndex();\n const noFadeIndex = !isNumber(fadeIndex);\n fade(emblaApi);\n if (noFadeIndex || notReachedTarget) return false;\n return opacities[fadeIndex] > 0.999;\n }\n function scrollProgress() {\n return progress;\n }\n const self = {\n name: 'fade',\n options: userOptions,\n init,\n destroy\n };\n return self;\n}\nFade.globalOptions = undefined;\n\nexport { Fade as default };\n//# sourceMappingURL=embla-carousel-fade.esm.js.map\n","import EmblaCarousel, { EmblaCarouselType } from \"embla-carousel\";\nimport EmblaCarouselFade from \"embla-carousel-fade\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroController — shared vanilla JS carousel controller\n// ─────────────────────────────────────────────────────────────────────────────\n//\n// Single source of truth for carousel behaviour. Used by:\n// 1. The React LsgHero component (via useEffect + refs)\n// 2. The AEM clientlib initHero function (directly on server-rendered DOM)\n//\n// This means carousel logic is written once and behaves identically in both\n// Storybook and AEM — no React-specific wrappers, no divergence.\n//\n// Usage:\n// const controller = new LsgHeroController(viewportEl, elements, options);\n// // later when unmounting:\n// controller.destroy();\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroControllerTransition = \"slide\" | \"fade\";\n\nexport interface LsgHeroControllerOptions {\n /** Slide transition style. Defaults to \"slide\". */\n transition?: LsgHeroControllerTransition;\n /** Enable autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n}\n\nexport interface LsgHeroControllerElements {\n /** Previous-slide button. */\n prevBtn?: HTMLElement | null;\n /** Next-slide button. */\n nextBtn?: HTMLElement | null;\n /** Scroll-down trigger button. */\n scrollDownBtn?: HTMLElement | null;\n /** Element to scroll into view when scroll-down is triggered. */\n scrollDownTarget?: HTMLElement | null;\n}\n\nexport class LsgHeroController {\n private embla: EmblaCarouselType | null = null;\n private autoplayTimer: ReturnType<typeof setInterval> | null = null;\n private contentObserver: ResizeObserver | null = null;\n private rafId: ReturnType<typeof requestAnimationFrame> | null = null;\n private readonly opts: Required<LsgHeroControllerOptions>;\n private readonly els: LsgHeroControllerElements;\n\n constructor(\n viewport: HTMLElement,\n elements: LsgHeroControllerElements = {},\n options: LsgHeroControllerOptions = {}\n ) {\n this.opts = {\n transition: options.transition ?? \"slide\",\n autoplay: options.autoplay ?? true,\n autoplayInterval: options.autoplayInterval ?? 5000,\n };\n this.els = elements;\n this.mount(viewport);\n }\n\n private mount(viewport: HTMLElement): void {\n this.els.prevBtn?.addEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.addEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.addEventListener(\"click\", this.handleScrollDown);\n\n // First frame lets React's initial paint settle; second guarantees that\n // async-injected stylesheets (e.g. --lsg-hero-axis) have been computed.\n this.rafId = requestAnimationFrame(() => {\n this.rafId = requestAnimationFrame(() => {\n this.rafId = null;\n if (!viewport.isConnected) return;\n\n const section = viewport.closest<HTMLElement>(\"[data-lsg-is='hero']\");\n const axis: \"x\" | \"y\" =\n section && getComputedStyle(section).getPropertyValue(\"--lsg-hero-axis\").trim() === \"y\"\n ? \"y\"\n : \"x\";\n\n const plugins = this.opts.transition === \"fade\" ? [EmblaCarouselFade()] : [];\n this.embla = EmblaCarousel(viewport, { loop: true, axis }, plugins);\n\n if (this.opts.autoplay) {\n this.startAutoplay();\n this.embla.on(\"pointerDown\", this.stopAutoplay);\n this.embla.on(\"pointerUp\", this.startAutoplay);\n }\n\n // Sync the first slide's content-wrapper height to a CSS custom property\n // on the section root so the controls column can match it dynamically.\n const contentWrapper = section?.querySelector<HTMLElement>(\".lsg-hero-card__content-wrapper\");\n if (section && contentWrapper && typeof ResizeObserver !== \"undefined\") {\n const setHeight = (el: Element): void => {\n (section as HTMLElement).style.setProperty(\n \"--lsg-hero-content-height\",\n `${(el as HTMLElement).offsetHeight}px`\n );\n };\n setHeight(contentWrapper);\n this.contentObserver = new ResizeObserver((entries) => {\n setHeight(entries[0].target);\n });\n this.contentObserver.observe(contentWrapper);\n }\n\n // For vertical carousels the section height (100svh) cascades from a\n // useEffect-set data-lsg-theme attribute, which may land one frame after\n // this RAF. Re-measure so Embla has the correct slide dimensions.\n if (axis === \"y\") {\n requestAnimationFrame(() => {\n if (viewport.isConnected) this.embla?.reInit();\n });\n }\n });\n });\n }\n\n readonly scrollPrev = (): void => {\n this.embla?.scrollPrev();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n readonly scrollNext = (): void => {\n this.embla?.scrollNext();\n if (this.opts.autoplay) this.startAutoplay();\n };\n\n private readonly handleScrollDown = (): void => {\n this.els.scrollDownTarget?.scrollIntoView({ behavior: \"smooth\" });\n };\n\n /** Start the autoplay interval (resets any existing timer). */\n readonly startAutoplay = (): void => {\n this.stopAutoplay();\n this.autoplayTimer = setInterval(this.scrollNext, this.opts.autoplayInterval);\n };\n\n /** Clear the autoplay interval. */\n readonly stopAutoplay = (): void => {\n if (this.autoplayTimer !== null) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n };\n\n /** Direct access to the underlying Embla instance for advanced usage. */\n get emblaApi(): EmblaCarouselType | null {\n return this.embla;\n }\n\n /** Tear down event listeners, autoplay, and the Embla instance. */\n destroy(): void {\n if (this.rafId !== null) {\n cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.stopAutoplay();\n this.contentObserver?.disconnect();\n this.contentObserver = null;\n if (this.embla) {\n this.embla.off(\"pointerDown\", this.stopAutoplay);\n this.embla.off(\"pointerUp\", this.startAutoplay);\n this.embla.destroy();\n this.embla = null;\n }\n this.els.prevBtn?.removeEventListener(\"click\", this.scrollPrev);\n this.els.nextBtn?.removeEventListener(\"click\", this.scrollNext);\n this.els.scrollDownBtn?.removeEventListener(\"click\", this.handleScrollDown);\n }\n}\n","import React, { useState } from \"react\";\nimport \"./LsgHeroCard.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** Token names that map to `--lsg-color-*` custom properties. */\nexport type LsgHeroColorToken =\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"light\"\n | \"dark\"\n | \"black\"\n | \"white\";\n\nexport interface LsgHeroCardProps {\n /** DAM/CDN URL for the background image. Used as poster/fallback for video. */\n imageSrc?: string;\n /** Alt text for the image. */\n imageAlt?: string;\n /** DAM/CDN URL for an mp4/webm video asset. */\n videoSrc?: string;\n /** YouTube video ID only (e.g. \"dQw4w9WgXcQ\"). */\n youtubeId?: string;\n /** Vimeo video ID only (e.g. \"148751763\"). */\n vimeoId?: string;\n /**\n * Background colour token for this card. Always tints the content text-box\n * (`lsg-hero-card--bg-{token}`). When the card has NO image/video, it instead\n * fills the whole card as a solid colour (`lsg-hero-card--fill-{token}`) with a\n * transparent content box.\n */\n cardBackground?: LsgHeroColorToken;\n /** Text colour token for this card's content (`lsg-hero-card--color-{token}`). */\n cardColor?: LsgHeroColorToken;\n /**\n * Content slot rendered on top of the media layer inside the white text-box\n * overlay. In AEM this is the parsys (container) inside each hero-card.\n * Accepts any LSG components: Title, Text, Button, etc.\n */\n children?: React.ReactNode;\n /** Index within the parent carousel — used for accessible label. */\n index?: number;\n /** Total slide count from the parent — used for accessible label. */\n total?: number;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHeroCard\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgHeroCard: React.FC<LsgHeroCardProps> = ({\n imageSrc,\n imageAlt = \"\",\n videoSrc,\n youtubeId,\n vimeoId,\n cardBackground,\n cardColor,\n children,\n index,\n total,\n className = \"\",\n}) => {\n const [videoReady, setVideoReady] = useState(false);\n\n // Video source priority: YouTube > Vimeo > DAM\n const hasYoutube = Boolean(youtubeId);\n const hasVimeo = !hasYoutube && Boolean(vimeoId);\n const hasDam = !hasYoutube && !hasVimeo && Boolean(videoSrc);\n\n // No image/video → the card renders as a solid colour (fill) instead of a\n // media backdrop; with media, cardBackground tints the content text-box.\n const hasMedia = Boolean(imageSrc || videoSrc || youtubeId || vimeoId);\n\n const youtubeEmbedSrc = youtubeId\n ? `https://www.youtube.com/embed/${youtubeId}?autoplay=1&mute=1&loop=1&controls=0&disablekb=1&fs=0&iv_load_policy=3&modestbranding=1&playlist=${youtubeId}&rel=0`\n : undefined;\n\n const vimeoEmbedSrc = vimeoId\n ? `https://player.vimeo.com/video/${vimeoId}?autoplay=1&loop=1&background=1&muted=1`\n : undefined;\n\n const ariaLabel =\n index !== undefined && total !== undefined\n ? `Slide ${index + 1} of ${total}`\n : undefined;\n\n const articleClasses = [\n \"lsg-hero-card\",\n // Background: tint the content box when there's media; fill the whole card when there isn't.\n cardBackground &&\n (hasMedia\n ? `lsg-hero-card--bg-${cardBackground}`\n : `lsg-hero-card--fill-${cardBackground}`),\n cardColor && `lsg-hero-card--color-${cardColor}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <article className={articleClasses} role=\"listitem\" aria-label={ariaLabel}>\n {/* ── Media layer ──────────────────────────────────────────────────── */}\n <div className=\"lsg-hero-card__media\" aria-hidden=\"true\">\n {imageSrc && (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n className=\"lsg-hero-card__image\"\n src={imageSrc}\n alt={imageAlt}\n loading=\"eager\"\n />\n )}\n\n {hasDam && (\n <video\n className={`lsg-hero-card__video${videoReady ? \" lsg-hero-card__video--ready\" : \"\"}`}\n autoPlay\n muted\n loop\n playsInline\n onCanPlay={() => setVideoReady(true)}\n >\n <source src={videoSrc} />\n </video>\n )}\n\n {hasYoutube && (\n <div className=\"lsg-hero-card__video-embed lsg-hero-card__video-embed--youtube\">\n <iframe\n src={youtubeEmbedSrc}\n title=\"Hero background video\"\n allow=\"autoplay\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n </div>\n )}\n\n {hasVimeo && (\n <div className=\"lsg-hero-card__video-embed lsg-hero-card__video-embed--vimeo\">\n <iframe\n src={vimeoEmbedSrc}\n title=\"Hero background video\"\n allow=\"autoplay\"\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n </div>\n )}\n </div>\n\n {/* ── Content slot (text-box overlay) ──────────────────────────────── */}\n <div className=\"lsg-hero-card__content layout-container--medium\">\n <div className=\"lsg-hero-card__content-wrapper\">\n {children}\n </div>\n </div>\n </article>\n );\n};\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { LsgHeroController } from \"./LsgHeroController\";\nimport { LsgHeroCard } from \"../LsgHeroCard/LsgHeroCard\";\nimport type { LsgHeroCardProps, LsgHeroColorToken } from \"../LsgHeroCard/LsgHeroCard\";\nimport \"./LsgHero.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport type LsgHeroHeight = \"full\" | \"75vh\";\nexport type LsgHeroTransition = \"slide\" | \"fade\";\n\n/** Colour token type now lives on the card; re-exported here for back-compat. */\nexport type { LsgHeroColorToken };\n\n/**\n * A single hero slide. All media/content props are forwarded directly to\n * LsgHeroCard — see LsgHeroCardProps for full documentation.\n */\nexport type LsgHeroSlide = Omit<LsgHeroCardProps, \"index\" | \"total\">;\n\nexport interface LsgHeroProps {\n slides: LsgHeroSlide[];\n /** Minimum height of the hero. Defaults to \"full\" (100vh). */\n height?: LsgHeroHeight;\n /** Show previous/next arrow controls (only in carousel mode). */\n showArrows?: boolean;\n /** Slide transition. Defaults to \"slide\". */\n transition?: LsgHeroTransition;\n /** Render a scroll-down affordance at the bottom of the hero. */\n enableScrollDown?: boolean;\n /** Label for the scroll-down button. Icon-only when omitted. */\n scrollDownText?: string;\n /** Enable carousel autoplay. Defaults to true. */\n autoplay?: boolean;\n /** Autoplay interval in milliseconds. Defaults to 5000. */\n autoplayInterval?: number;\n className?: string;\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgHero\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgHero: React.FC<LsgHeroProps> = ({\n slides = [],\n height = \"full\",\n showArrows = true,\n transition = \"slide\",\n enableScrollDown = false,\n scrollDownText,\n autoplay = true,\n autoplayInterval = 5000,\n className = \"\",\n}) => {\n const isCarousel = slides.length > 1;\n\n // ── Refs ──────────────────────────────────────────────────────────────────\n const sectionRef = useRef<HTMLElement>(null);\n const viewportRef = useRef<HTMLDivElement>(null);\n const prevBtnRef = useRef<HTMLButtonElement>(null);\n const nextBtnRef = useRef<HTMLButtonElement>(null);\n const controllerRef = useRef<LsgHeroController | null>(null);\n\n // ── Controller init (vanilla JS — same logic as AEM clientlib) ────────────\n useEffect(() => {\n if (!viewportRef.current || !isCarousel) return;\n\n controllerRef.current = new LsgHeroController(\n viewportRef.current,\n {\n prevBtn: showArrows ? prevBtnRef.current : undefined,\n nextBtn: showArrows ? nextBtnRef.current : undefined,\n },\n { transition, autoplay, autoplayInterval },\n );\n\n return () => {\n controllerRef.current?.destroy();\n controllerRef.current = null;\n };\n }, [isCarousel, showArrows, transition, autoplay, autoplayInterval]);\n\n // ── Scroll-down ───────────────────────────────────────────────────────────\n const handleScrollDown = useCallback(() => {\n const next = sectionRef.current?.nextElementSibling as HTMLElement | null;\n next?.scrollIntoView({ behavior: \"smooth\" });\n }, []);\n\n // ── Class names ───────────────────────────────────────────────────────────\n const sectionClasses = [\n \"lsg-hero\",\n `lsg-hero--${height}`,\n `lsg-hero--${transition}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n // ── Render ────────────────────────────────────────────────────────────────\n return (\n <section\n ref={sectionRef}\n className={sectionClasses}\n data-lsg-is=\"hero\"\n data-lsg-carousel={String(isCarousel)}\n data-lsg-transition={transition}\n data-lsg-arrows={String(showArrows)}\n >\n {/* Embla viewport */}\n <div className=\"lsg-hero__viewport\" ref={viewportRef}>\n <div className=\"lsg-hero__slides\" role=\"list\">\n {slides.map((slide, index) => (\n <LsgHeroCard\n key={index}\n {...slide}\n index={index}\n total={slides.length}\n />\n ))}\n </div>\n </div>\n\n {/* Carousel controls */}\n {isCarousel && showArrows && (\n <div className=\"lsg-hero__controls-wrap\">\n <nav className=\"lsg-hero__controls\" aria-label=\"Hero navigation\">\n <button\n ref={prevBtnRef}\n className=\"lsg-hero__prev\"\n type=\"button\"\n aria-label=\"Previous slide\"\n >\n <span className=\"lsg-hero__arrow-icon\" aria-hidden=\"true\" />\n </button>\n <button\n ref={nextBtnRef}\n className=\"lsg-hero__next\"\n type=\"button\"\n aria-label=\"Next slide\"\n >\n <span className=\"lsg-hero__arrow-icon\" aria-hidden=\"true\" />\n </button>\n </nav>\n </div>\n )}\n\n {/* Scroll-down affordance */}\n {enableScrollDown && (\n <div className=\"lsg-hero__scroll-down\">\n <button\n className=\"lsg-hero__scroll-down-btn\"\n type=\"button\"\n aria-label={scrollDownText ?? \"Scroll down\"}\n onClick={handleScrollDown}\n >\n {scrollDownText && (\n <span className=\"lsg-hero__scroll-down-text\">{scrollDownText}</span>\n )}\n <span className=\"lsg-hero__scroll-down-icon\" aria-hidden=\"true\" />\n </button>\n </div>\n )}\n </section>\n );\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport \"./LsgTabs.scss\";\n\n// Matches $lsg-tabs-accordion-breakpoint in LsgTabs.scss ($breakpoint-sm - 1px)\n// and MOBILE_MEDIA_QUERY in lsg-clientlib-runtime.ts.\nconst MOBILE_MEDIA_QUERY = \"(max-width: 767px)\";\n\n// Sub-pixel layout rounding when comparing scroll offsets against extents\nconst SCROLL_EPSILON = 1;\n\nconst CHEVRON_SVG = (\n <svg\n className=\"lsg-tabs__tab-icon-svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path\n d=\"M3 6L8 11L13 6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport interface LsgTabsItem {\n id: string;\n title: string;\n content: React.ReactNode;\n}\n\nexport type LsgTabsVariant = \"default\" | \"vertical\";\n\nexport interface LsgTabsProps {\n items: LsgTabsItem[];\n /** Id of the initially selected tab. Defaults to the first item. */\n activeId?: string;\n /** Visual variant. Default: \"default\" */\n variant?: LsgTabsVariant;\n /** Value of aria-label on the tablist. */\n accessibilityLabel?: string;\n className?: string;\n}\n\nexport const LsgTabs: React.FC<LsgTabsProps> = ({\n items,\n activeId,\n variant = \"default\",\n accessibilityLabel,\n className = \"\",\n}) => {\n const [selectedId, setSelectedId] = useState<string>(activeId ?? items[0]?.id ?? \"\");\n // Below the breakpoint the tabs render as a single-open accordion and the open\n // header can be collapsed. Tracked separately from selection so exactly one tab\n // stays selected at every width — resizing back to desktop just reveals it again.\n const [collapsed, setCollapsed] = useState(false);\n const [isMobile, setIsMobile] = useState(false);\n // Scroll-arrow state. The arrows themselves are ::before / ::after on the root\n // (see LsgTabs.scss) — these only say whether there is more to reveal.\n const [scrollStart, setScrollStart] = useState(false);\n const [scrollEnd, setScrollEnd] = useState(false);\n\n const tabRefs = useRef<Record<string, HTMLLIElement | null>>({});\n const stripRef = useRef<HTMLOListElement | null>(null);\n\n const isVertical = variant === \"vertical\";\n\n const selectedIndex = Math.max(\n 0,\n items.findIndex((item) => item.id === selectedId)\n );\n\n useEffect(() => {\n const mql = window.matchMedia(MOBILE_MEDIA_QUERY);\n const sync = (): void => setIsMobile(mql.matches);\n sync();\n mql.addEventListener(\"change\", sync);\n return () => mql.removeEventListener(\"change\", sync);\n }, []);\n\n const updateArrows = (): void => {\n const strip = stripRef.current;\n // Below the breakpoint this is an accordion — nothing scrolls, so the arrows\n // must not be offered.\n if (!strip || isMobile) {\n setScrollStart(false);\n setScrollEnd(false);\n return;\n }\n\n const offset = isVertical ? strip.scrollTop : strip.scrollLeft;\n const visible = isVertical ? strip.clientHeight : strip.clientWidth;\n const total = isVertical ? strip.scrollHeight : strip.scrollWidth;\n\n setScrollStart(offset > SCROLL_EPSILON);\n setScrollEnd(offset + visible < total - SCROLL_EPSILON);\n };\n\n useEffect(() => {\n updateArrows();\n }, [isMobile, isVertical, items, selectedIndex]);\n\n useEffect(() => {\n const strip = stripRef.current;\n if (!strip || typeof ResizeObserver === \"undefined\") return;\n // The strip can start overflowing because its container changed, with no\n // viewport resize at all.\n const observer = new ResizeObserver(() => updateArrows());\n observer.observe(strip);\n return () => observer.disconnect();\n }, [isMobile, isVertical]);\n\n useEffect(() => {\n // A late web-font swap widens the labels, growing scrollWidth without changing\n // the strip's own box — so ResizeObserver may never fire. Re-measure once the\n // fonts have settled, otherwise the arrows can be stale on first paint.\n let cancelled = false;\n document.fonts?.ready.then(() => {\n if (!cancelled) updateArrows();\n });\n return () => {\n cancelled = true;\n };\n }, [isMobile, isVertical]);\n\n const scrollStrip = (direction: -1 | 1): void => {\n const strip = stripRef.current;\n if (!strip) return;\n // A step just under one viewport keeps a sliver of context in view\n const visible = isVertical ? strip.clientHeight : strip.clientWidth;\n const step = Math.max(visible * 0.8, 1);\n if (isVertical) {\n strip.scrollTop += direction * step;\n } else {\n strip.scrollLeft += direction * step;\n }\n };\n\n // The arrows are pseudo-elements painted above the strip, so a click on one\n // hit-tests to the root rather than to a tab or panel. Nothing else on the root\n // is clickable, which is what makes this unambiguous.\n const onRootClick = (event: React.MouseEvent<HTMLDivElement>): void => {\n if (event.target !== event.currentTarget) return;\n const strip = stripRef.current;\n if (!strip) return;\n\n const rect = strip.getBoundingClientRect();\n const beforeMidpoint = isVertical\n ? event.clientY < rect.top + rect.height / 2\n : event.clientX < rect.left + rect.width / 2;\n\n scrollStrip(beforeMidpoint ? -1 : 1);\n };\n\n const select = (index: number, moveFocus: boolean): void => {\n const item = items[index];\n if (!item) return;\n setSelectedId(item.id);\n setCollapsed(false);\n const tab = tabRefs.current[item.id];\n // Arrow-key navigation can land on a tab that is scrolled out of the strip\n tab?.scrollIntoView({ block: \"nearest\", inline: \"nearest\" });\n if (moveFocus) tab?.focus();\n };\n\n const press = (index: number): void => {\n if (isMobile && index === selectedIndex) {\n setCollapsed((prev) => !prev);\n return;\n }\n select(index, false);\n };\n\n // Roving tabindex keyboard model for role=\"tab\" — see bootLsgTabs for the AEM twin.\n const onKeyDown = (event: React.KeyboardEvent<HTMLLIElement>, index: number): void => {\n const last = items.length - 1;\n\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n event.preventDefault();\n select(selectedIndex === last ? 0 : selectedIndex + 1, true);\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n event.preventDefault();\n select(selectedIndex === 0 ? last : selectedIndex - 1, true);\n break;\n case \"Home\":\n event.preventDefault();\n select(0, true);\n break;\n case \"End\":\n event.preventDefault();\n select(last, true);\n break;\n case \"Enter\":\n case \" \":\n event.preventDefault();\n press(index);\n break;\n default:\n break;\n }\n };\n\n const rootClass = [\n \"lsg-tabs\",\n isVertical ? \"lsg-tabs--vertical\" : \"\",\n scrollStart ? \"lsg-tabs--scroll-start\" : \"\",\n scrollEnd ? \"lsg-tabs--scroll-end\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <div className={rootClass} onClick={onRootClick}>\n <ol\n ref={stripRef}\n className=\"lsg-tabs__tablist\"\n role=\"tablist\"\n aria-label={accessibilityLabel}\n aria-multiselectable=\"false\"\n onScroll={updateArrows}\n >\n {items.map((item, index) => {\n const isActive = index === selectedIndex;\n return (\n <li\n key={item.id}\n ref={(node) => {\n tabRefs.current[item.id] = node;\n }}\n role=\"tab\"\n id={`lsg-tab-${item.id}`}\n className={`lsg-tabs__tab${isActive ? \" lsg-tabs__tab--active\" : \"\"}`}\n aria-controls={`lsg-tabpanel-${item.id}`}\n aria-selected={isActive}\n // Desktop is a tab strip — aria-selected carries the state there, and\n // the collapsed class has no styling, so aria-expanded would mislead.\n aria-expanded={isMobile ? isActive && !collapsed : undefined}\n tabIndex={isActive ? 0 : -1}\n onClick={() => press(index)}\n onKeyDown={(event) => onKeyDown(event, index)}\n >\n <span className=\"lsg-tabs__tab-label\">{item.title}</span>\n <span className=\"lsg-tabs__tab-icon\" aria-hidden=\"true\">\n {CHEVRON_SVG}\n </span>\n </li>\n );\n })}\n </ol>\n\n {items.map((item, index) => {\n const isActive = index === selectedIndex;\n return (\n <div\n key={item.id}\n id={`lsg-tabpanel-${item.id}`}\n role=\"tabpanel\"\n aria-labelledby={`lsg-tab-${item.id}`}\n tabIndex={0}\n className={[\n \"lsg-tabs__panel\",\n isActive ? \"lsg-tabs__panel--active\" : \"\",\n isActive && collapsed ? \"lsg-tabs__panel--collapsed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {item.content}\n </div>\n );\n })}\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgTable.scss\";\n\nexport type LsgTableColor =\n | \"white\"\n | \"black\"\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"light\"\n | \"dark\";\n\nexport type LsgTableCell = React.ReactNode;\n\nexport interface LsgTableProps {\n headers: LsgTableCell[];\n rows: LsgTableCell[][];\n headerBackground?: LsgTableColor;\n accentColors?: LsgTableColor;\n noAlternatingRows?: boolean;\n caption?: React.ReactNode;\n id?: string;\n className?: string;\n}\n\n/**\n * Storybook representation of the AEM LSG table markup.\n * It deliberately emits the same Style System class contract as AEM.\n */\nexport const LsgTable: React.FC<LsgTableProps> = ({\n headers,\n rows,\n headerBackground = \"primary\",\n accentColors = \"black\",\n noAlternatingRows = false,\n caption,\n id,\n className,\n}) => {\n const wrapperClassName = [\n \"table-focus\",\n `background-color-${headerBackground}`,\n `accent-color-${accentColors}`,\n `no-alternating-rows-${noAlternatingRows}`,\n className,\n ].filter(Boolean).join(\" \");\n\n // Three-column Figma examples fill the available width. Wider datasets keep\n // equal-width columns but receive a practical minimum width so mobile can\n // scroll horizontally instead of crushing every column.\n const tableStyle: React.CSSProperties | undefined =\n headers.length > 3 ? { minWidth: `${headers.length * 120}px` } : undefined;\n\n return (\n <>\n {caption ? <div className=\"table-caption\">{caption}</div> : null}\n <div id={id} className={wrapperClassName}>\n <table style={tableStyle}>\n <tbody>\n <tr>\n {headers.map((cell, index) => (\n <td key={`header-${index}`}>{cell}</td>\n ))}\n </tr>\n {rows.map((row, rowIndex) => (\n <tr key={`row-${rowIndex}`}>\n {row.map((cell, cellIndex) => (\n <td key={`cell-${rowIndex}-${cellIndex}`}>{cell}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldText.scss\";\n\nexport interface LsgFormFieldTextProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n /** Shows inline error text and marks the input invalid */\n error?: string;\n autocomplete?: string;\n minLength?: number;\n maxLength?: number;\n name?: string;\n}\n\nexport const LsgFormFieldText: React.FC<LsgFormFieldTextProps> = ({\n id = \"field-text\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n autocomplete,\n minLength,\n maxLength,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--text\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <input\n type=\"text\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete={autocomplete}\n minLength={minLength}\n maxLength={maxLength}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldEmail.scss\";\n\nexport interface LsgFormFieldEmailProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n maxLength?: number;\n name?: string;\n}\n\nexport const LsgFormFieldEmail: React.FC<LsgFormFieldEmailProps> = ({\n id = \"field-email\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n maxLength,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--email\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <input\n type=\"email\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete=\"email\"\n maxLength={maxLength}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import B,{useMemo as We,useRef as qe,useState as Je}from\"react\";var M=[[\"Afghanistan\",\"af\",\"93\"],[\"Albania\",\"al\",\"355\"],[\"Algeria\",\"dz\",\"213\"],[\"Andorra\",\"ad\",\"376\"],[\"Angola\",\"ao\",\"244\"],[\"Antigua and Barbuda\",\"ag\",\"1268\"],[\"Argentina\",\"ar\",\"54\",{default:\"(..) .... ....\",\"/^11/\":\"(..) .... ....\",\"/^15/\":\"(..) ... ....\",\"/^(2|3|4|5)/\":\"(.) .... ....\",\"/^9/\":\"(.) .... .....\"},0],[\"Armenia\",\"am\",\"374\",\".. ......\"],[\"Aruba\",\"aw\",\"297\"],[\"Australia\",\"au\",\"61\",{default:\". .... ....\",\"/^4/\":\"... ... ...\",\"/^5(?!50)/\":\"... ... ...\",\"/^1(3|8)00/\":\".... ... ...\",\"/^13/\":\".. .. ..\",\"/^180/\":\"... ....\"},0,[]],[\"Austria\",\"at\",\"43\"],[\"Azerbaijan\",\"az\",\"994\",\"(..) ... .. ..\"],[\"Bahamas\",\"bs\",\"1242\"],[\"Bahrain\",\"bh\",\"973\",\".... ....\"],[\"Bangladesh\",\"bd\",\"880\"],[\"Barbados\",\"bb\",\"1246\"],[\"Belarus\",\"by\",\"375\",\"(..) ... .. ..\"],[\"Belgium\",\"be\",\"32\",\"... .. .. ..\"],[\"Belize\",\"bz\",\"501\"],[\"Benin\",\"bj\",\"229\"],[\"Bhutan\",\"bt\",\"975\"],[\"Bolivia\",\"bo\",\"591\"],[\"Bosnia and Herzegovina\",\"ba\",\"387\"],[\"Botswana\",\"bw\",\"267\"],[\"Brazil\",\"br\",\"55\",\"(..) .....-....\"],[\"British Indian Ocean Territory\",\"io\",\"246\"],[\"Brunei\",\"bn\",\"673\"],[\"Bulgaria\",\"bg\",\"359\"],[\"Burkina Faso\",\"bf\",\"226\"],[\"Burundi\",\"bi\",\"257\"],[\"Cambodia\",\"kh\",\"855\"],[\"Cameroon\",\"cm\",\"237\"],[\"Canada\",\"ca\",\"1\",\"(...) ...-....\",1,[\"204\",\"226\",\"236\",\"249\",\"250\",\"289\",\"306\",\"343\",\"365\",\"387\",\"403\",\"416\",\"418\",\"431\",\"437\",\"438\",\"450\",\"506\",\"514\",\"519\",\"548\",\"579\",\"581\",\"587\",\"604\",\"613\",\"639\",\"647\",\"672\",\"705\",\"709\",\"742\",\"778\",\"780\",\"782\",\"807\",\"819\",\"825\",\"867\",\"873\",\"902\",\"905\"]],[\"Cape Verde\",\"cv\",\"238\"],[\"Caribbean Netherlands\",\"bq\",\"599\",\"\",1],[\"Cayman Islands\",\"ky\",\"1\",\"... ... ....\",4,[\"345\"]],[\"Central African Republic\",\"cf\",\"236\"],[\"Chad\",\"td\",\"235\"],[\"Chile\",\"cl\",\"56\"],[\"China\",\"cn\",\"86\",\"... .... ....\"],[\"Colombia\",\"co\",\"57\",\"... ... ....\"],[\"Comoros\",\"km\",\"269\"],[\"Congo\",\"cd\",\"243\"],[\"Congo\",\"cg\",\"242\"],[\"Costa Rica\",\"cr\",\"506\",\"....-....\"],[\"C\\xF4te d'Ivoire\",\"ci\",\"225\",\".. .. .. .. ..\"],[\"Croatia\",\"hr\",\"385\"],[\"Cuba\",\"cu\",\"53\"],[\"Cura\\xE7ao\",\"cw\",\"599\",\"\",0],[\"Cyprus\",\"cy\",\"357\",\".. ......\"],[\"Czech Republic\",\"cz\",\"420\",\"... ... ...\"],[\"Denmark\",\"dk\",\"45\",\".. .. .. ..\"],[\"Djibouti\",\"dj\",\"253\",\".. .. ....\"],[\"Dominica\",\"dm\",\"1767\"],[\"Dominican Republic\",\"do\",\"1\",\"(...) ...-....\",2,[\"809\",\"829\",\"849\"]],[\"Ecuador\",\"ec\",\"593\"],[\"Egypt\",\"eg\",\"20\"],[\"El Salvador\",\"sv\",\"503\",\"....-....\"],[\"Equatorial Guinea\",\"gq\",\"240\"],[\"Eritrea\",\"er\",\"291\"],[\"Estonia\",\"ee\",\"372\",\".... ......\"],[\"Ethiopia\",\"et\",\"251\",\".. ... ....\"],[\"Faroe Islands\",\"fo\",\"298\",\".. .. ..\"],[\"Fiji\",\"fj\",\"679\"],[\"Finland\",\"fi\",\"358\",\".. ... .. ..\"],[\"France\",\"fr\",\"33\",\". .. .. .. ..\"],[\"French Guiana\",\"gf\",\"594\",\"... .. .. ..\"],[\"French Polynesia\",\"pf\",\"689\",{\"/^44/\":\".. .. ..\",\"/^80[0-5]/\":\"... .. .. ..\",default:\".. .. .. ..\"}],[\"Gabon\",\"ga\",\"241\"],[\"Gambia\",\"gm\",\"220\"],[\"Georgia\",\"ge\",\"995\"],[\"Germany\",\"de\",\"49\",\"... .........\"],[\"Ghana\",\"gh\",\"233\"],[\"Gibraltar\",\"gi\",\"350\"],[\"Greece\",\"gr\",\"30\"],[\"Greenland\",\"gl\",\"299\",\".. .. ..\"],[\"Grenada\",\"gd\",\"1473\"],[\"Guadeloupe\",\"gp\",\"590\",\"... .. .. ..\",0],[\"Guam\",\"gu\",\"1671\"],[\"Guatemala\",\"gt\",\"502\",\"....-....\"],[\"Guinea\",\"gn\",\"224\"],[\"Guinea-Bissau\",\"gw\",\"245\"],[\"Guyana\",\"gy\",\"592\"],[\"Haiti\",\"ht\",\"509\",\"....-....\"],[\"Honduras\",\"hn\",\"504\"],[\"Hong Kong\",\"hk\",\"852\",\".... ....\"],[\"Hungary\",\"hu\",\"36\"],[\"Iceland\",\"is\",\"354\",\"... ....\"],[\"India\",\"in\",\"91\",\".....-.....\"],[\"Indonesia\",\"id\",\"62\"],[\"Iran\",\"ir\",\"98\",\"... ... ....\"],[\"Iraq\",\"iq\",\"964\"],[\"Ireland\",\"ie\",\"353\",\".. .......\"],[\"Israel\",\"il\",\"972\",\"... ... ....\"],[\"Italy\",\"it\",\"39\",\"... .......\",0],[\"Jamaica\",\"jm\",\"1876\"],[\"Japan\",\"jp\",\"81\",\".. .... ....\"],[\"Jordan\",\"jo\",\"962\"],[\"Kazakhstan\",\"kz\",\"7\",\"... ...-..-..\",0],[\"Kenya\",\"ke\",\"254\"],[\"Kiribati\",\"ki\",\"686\"],[\"Kosovo\",\"xk\",\"383\"],[\"Kuwait\",\"kw\",\"965\",\".... ....\"],[\"Kyrgyzstan\",\"kg\",\"996\",\"... ... ...\"],[\"Laos\",\"la\",\"856\"],[\"Latvia\",\"lv\",\"371\",\".. ... ...\"],[\"Lebanon\",\"lb\",\"961\"],[\"Lesotho\",\"ls\",\"266\"],[\"Liberia\",\"lr\",\"231\"],[\"Libya\",\"ly\",\"218\"],[\"Liechtenstein\",\"li\",\"423\"],[\"Lithuania\",\"lt\",\"370\"],[\"Luxembourg\",\"lu\",\"352\"],[\"Macau\",\"mo\",\"853\"],[\"Macedonia\",\"mk\",\"389\"],[\"Madagascar\",\"mg\",\"261\"],[\"Malawi\",\"mw\",\"265\"],[\"Malaysia\",\"my\",\"60\",\"..-....-....\"],[\"Maldives\",\"mv\",\"960\"],[\"Mali\",\"ml\",\"223\"],[\"Malta\",\"mt\",\"356\"],[\"Marshall Islands\",\"mh\",\"692\"],[\"Martinique\",\"mq\",\"596\",\"... .. .. ..\"],[\"Mauritania\",\"mr\",\"222\"],[\"Mauritius\",\"mu\",\"230\"],[\"Mayotte\",\"yt\",\"262\",\"... .. .. ..\",1,[\"269\",\"639\"]],[\"Mexico\",\"mx\",\"52\",\"... ... ....\",0],[\"Micronesia\",\"fm\",\"691\"],[\"Moldova\",\"md\",\"373\",\"(..) ..-..-..\"],[\"Monaco\",\"mc\",\"377\"],[\"Mongolia\",\"mn\",\"976\"],[\"Montenegro\",\"me\",\"382\"],[\"Morocco\",\"ma\",\"212\"],[\"Mozambique\",\"mz\",\"258\"],[\"Myanmar\",\"mm\",\"95\"],[\"Namibia\",\"na\",\"264\"],[\"Nauru\",\"nr\",\"674\"],[\"Nepal\",\"np\",\"977\"],[\"Netherlands\",\"nl\",\"31\",{\"/^06/\":\"(.). .........\",\"/^6/\":\". .........\",\"/^0(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/\":\"(.).. ........\",\"/^(10|13|14|15|20|23|24|26|30|33|35|36|38|40|43|44|45|46|50|53|55|58|70|71|72|73|74|75|76|77|78|79|82|84|85|87|88|91)/\":\".. ........\",\"/^0/\":\"(.)... .......\",default:\"... .......\"}],[\"New Caledonia\",\"nc\",\"687\"],[\"New Zealand\",\"nz\",\"64\",\"...-...-....\"],[\"Nicaragua\",\"ni\",\"505\"],[\"Niger\",\"ne\",\"227\"],[\"Nigeria\",\"ng\",\"234\"],[\"North Korea\",\"kp\",\"850\"],[\"Norway\",\"no\",\"47\",\"... .. ...\"],[\"Oman\",\"om\",\"968\",\".... ....\"],[\"Pakistan\",\"pk\",\"92\",\"...-.......\"],[\"Palau\",\"pw\",\"680\"],[\"Palestine\",\"ps\",\"970\"],[\"Panama\",\"pa\",\"507\"],[\"Papua New Guinea\",\"pg\",\"675\"],[\"Paraguay\",\"py\",\"595\"],[\"Peru\",\"pe\",\"51\"],[\"Philippines\",\"ph\",\"63\",\"... ... ....\"],[\"Poland\",\"pl\",\"48\",\"...-...-...\"],[\"Portugal\",\"pt\",\"351\"],[\"Puerto Rico\",\"pr\",\"1\",\"(...) ...-....\",3,[\"787\",\"939\"]],[\"Qatar\",\"qa\",\"974\",\".... ....\"],[\"R\\xE9union\",\"re\",\"262\",\"... .. .. ..\",0],[\"Romania\",\"ro\",\"40\"],[\"Russia\",\"ru\",\"7\",\"(...) ...-..-..\",1],[\"Rwanda\",\"rw\",\"250\"],[\"Saint Kitts and Nevis\",\"kn\",\"1869\"],[\"Saint Lucia\",\"lc\",\"1758\"],[\"Saint Pierre & Miquelon\",\"pm\",\"508\",{\"/^708/\":\"... ... ...\",\"/^8/\":\"... .. .. ..\",default:\".. .. ..\"}],[\"Saint Vincent and the Grenadines\",\"vc\",\"1784\"],[\"Samoa\",\"ws\",\"685\"],[\"San Marino\",\"sm\",\"378\"],[\"S\\xE3o Tom\\xE9 and Pr\\xEDncipe\",\"st\",\"239\"],[\"Saudi Arabia\",\"sa\",\"966\",\".. ... ....\"],[\"Senegal\",\"sn\",\"221\"],[\"Serbia\",\"rs\",\"381\"],[\"Seychelles\",\"sc\",\"248\"],[\"Sierra Leone\",\"sl\",\"232\"],[\"Singapore\",\"sg\",\"65\",\"....-....\"],[\"Slovakia\",\"sk\",\"421\"],[\"Slovenia\",\"si\",\"386\"],[\"Solomon Islands\",\"sb\",\"677\"],[\"Somalia\",\"so\",\"252\"],[\"South Africa\",\"za\",\"27\"],[\"South Korea\",\"kr\",\"82\",\"... .... ....\"],[\"South Sudan\",\"ss\",\"211\"],[\"Spain\",\"es\",\"34\",\"... ... ...\"],[\"Sri Lanka\",\"lk\",\"94\"],[\"Sudan\",\"sd\",\"249\"],[\"Suriname\",\"sr\",\"597\"],[\"Swaziland\",\"sz\",\"268\"],[\"Sweden\",\"se\",\"46\",\"... ... ...\"],[\"Switzerland\",\"ch\",\"41\",\".. ... .. ..\"],[\"Syria\",\"sy\",\"963\"],[\"Taiwan\",\"tw\",\"886\"],[\"Tajikistan\",\"tj\",\"992\"],[\"Tanzania\",\"tz\",\"255\"],[\"Thailand\",\"th\",\"66\"],[\"Timor-Leste\",\"tl\",\"670\"],[\"Togo\",\"tg\",\"228\"],[\"Tonga\",\"to\",\"676\"],[\"Trinidad and Tobago\",\"tt\",\"1868\"],[\"Tunisia\",\"tn\",\"216\"],[\"Turkey\",\"tr\",\"90\",\"... ... .. ..\"],[\"Turkmenistan\",\"tm\",\"993\"],[\"Tuvalu\",\"tv\",\"688\"],[\"Uganda\",\"ug\",\"256\"],[\"Ukraine\",\"ua\",\"380\",\"(..) ... .. ..\"],[\"United Arab Emirates\",\"ae\",\"971\",{default:\".. ... ....\",\"/^5[024568]/\":\".. ... ....\",\"/^[234679]/\":\". ... ....\"}],[\"United Kingdom\",\"gb\",\"44\",\".... ......\"],[\"United States\",\"us\",\"1\",\"(...) ...-....\",0],[\"Uruguay\",\"uy\",\"598\"],[\"Uzbekistan\",\"uz\",\"998\",\".. ... .. ..\"],[\"Vanuatu\",\"vu\",\"678\"],[\"Vatican City\",\"va\",\"39\",\".. .... ....\",1],[\"Venezuela\",\"ve\",\"58\"],[\"Vietnam\",\"vn\",\"84\"],[\"Wallis & Futuna\",\"wf\",\"681\",\".. .. ..\"],[\"Yemen\",\"ye\",\"967\"],[\"Zambia\",\"zm\",\"260\"],[\"Zimbabwe\",\"zw\",\"263\"]];var Ne=\"react-international-phone-\",de=(...t)=>t.filter(e=>!!e).join(\" \").trim(),Me=(...t)=>de(...t).split(\" \").map(e=>`${Ne}${e}`).join(\" \"),S=({addPrefix:t,rawClassNames:e})=>de(Me(...t),...e);var ce=({value:t,mask:e,maskSymbol:n,offset:s=0,trimNonMaskCharsLeftover:r=!1,allowMaskOverflow:a=!1})=>{if(t.length<s)return t;let p=t.slice(0,s),i=t.slice(s),o=e.split(\"\").filter(d=>d===n).length,u=i.slice(0,o),l=a?i.slice(o):\"\",m=p,y=0;for(let d of e.split(\"\")){if(y>=u.length){if(!r&&d!==n){m+=d;continue}break}d===n?(m+=u[y],y+=1):m+=d}return m+l};var O=t=>t?/^\\d+$/.test(t):!1;var V=t=>t.replace(/\\D/g,\"\");var pe=(t,e)=>{let n=t.style.display;n!==\"block\"&&(t.style.display=\"block\");let s=t.getBoundingClientRect(),r=e.getBoundingClientRect(),a=r.top-s.top,p=s.bottom-r.bottom;a>=0&&p>=0||(Math.abs(a)<Math.abs(p)?t.scrollTop+=a:t.scrollTop-=p),t.style.display=n};var Re=t=>{let{name:e,iso2:n,dialCode:s,format:r,priority:a,areaCodes:p}=t,i=[e,n,s,r,a,p];for(let o=0;o<i.length;o+=1){if(o===0)continue;let u=i[o-1],l=i[o];if(u===void 0&&l!==void 0){let m=JSON.stringify(i,(y,d)=>d===void 0?\"__undefined\":d).replace(/\"__undefined\"/g,\"undefined\");throw new Error(`[react-international-phone] invalid country values passed to buildCountryData. Check ${u} in: ${m}`)}}return i.filter(o=>o!==void 0)};import{useCallback as re,useEffect as xe,useMemo as $e,useRef as Fe,useState as ze}from\"react\";var me=()=>typeof window>\"u\"?!1:window.navigator.userAgent.toLowerCase().includes(\"macintosh\");var fe=({phone:t,dialCode:e,prefix:n=\"+\",charAfterDialCode:s=\" \"})=>{if(!t||!e)return t;let r=t;return r.startsWith(n)&&(r=r.replace(n,\"\")),r.startsWith(e)?(r=r.replace(e,\"\"),r.startsWith(s)&&(r=r.replace(s,\"\")),r):t};var Ce=(t,e)=>{let n=e.disableDialCodeAndPrefix?!1:e.forceDialCode,s=e.disableDialCodeAndPrefix?!1:e.insertDialCodeOnEmpty,r=t,a=u=>e.trimNonDigitsEnd?u.trim():u;if(!r)return s&&!r.length||n?a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`):a(r);if(r=V(r),r===e.dialCode&&!e.disableDialCodeAndPrefix)return a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(e.dialCode.startsWith(r)&&!e.disableDialCodeAndPrefix)return a(n?`${e.prefix}${e.dialCode}${e.charAfterDialCode}`:`${e.prefix}${r}`);if(!r.startsWith(e.dialCode)&&!e.disableDialCodeAndPrefix){if(n)return a(`${e.prefix}${e.dialCode}${e.charAfterDialCode}`);if(r.length<e.dialCode.length)return a(`${e.prefix}${r}`)}let p=()=>{let u=e.dialCode.length,l=r.slice(0,u),m=r.slice(u);return{phoneLeftSide:l,phoneRightSide:m}},{phoneLeftSide:i,phoneRightSide:o}=p();return i=`${e.prefix}${i}${e.charAfterDialCode}`,o=ce({value:o,mask:e.mask,maskSymbol:e.maskChar,trimNonMaskCharsLeftover:e.trimNonDigitsEnd||e.disableDialCodeAndPrefix&&o.length===0,allowMaskOverflow:e.allowMaskOverflow}),e.disableDialCodeAndPrefix&&(i=\"\"),a(`${i}${o}`)};var he=({phoneBeforeInput:t,phoneAfterInput:e,phoneAfterFormatted:n,cursorPositionAfterInput:s,leftOffset:r=0,deletion:a})=>{if(s<r)return r;if(!t)return n.length;let p=null;for(let l=s-1;l>=0;l-=1)if(O(e[l])){p=l;break}if(p===null){for(let l=0;l<e.length;l+=1)if(O(n[l]))return l;return e.length}let i=0;for(let l=0;l<p;l+=1)O(e[l])&&(i+=1);let o=0,u=0;for(let l=0;l<n.length&&(o+=1,O(n[l])&&(u+=1),!(u>=i+1));l+=1);if(a!==\"backward\")for(;!O(n[o])&&o<n.length;)o+=1;return o};var G=({phone:t,prefix:e})=>t?`${e}${V(t)}`:\"\";function W({value:t,country:e,insertDialCodeOnEmpty:n,trimNonDigitsEnd:s,countries:r,prefix:a,charAfterDialCode:p,forceDialCode:i,disableDialCodeAndPrefix:o,defaultMask:u,countryGuessingEnabled:l,disableFormatting:m,allowMaskOverflow:y}){let d=t;o&&(d=d.startsWith(`${a}`)?d:`${a}${e.dialCode}${d}`);let w=l?ee({phone:d,countries:r,currentCountryIso2:e?.iso2}):void 0,f=w?.country??e,v=Ce(d,{prefix:a,mask:Y({phone:d,country:f,defaultMask:u,disableFormatting:m}),maskChar:J,dialCode:f.dialCode,trimNonDigitsEnd:s,charAfterDialCode:p,forceDialCode:i,insertDialCodeOnEmpty:n,disableDialCodeAndPrefix:o,allowMaskOverflow:y}),g=l&&!w?.fullDialCodeMatch?e:f;return{phone:G({phone:o?`${g.dialCode}${v}`:v,prefix:a}),inputValue:v,country:g}}var _e=t=>{if(t?.toLocaleLowerCase().includes(\"delete\")??!1)return t?.toLocaleLowerCase().includes(\"forward\")?\"forward\":\"backward\"},ye=(t,{country:e,insertDialCodeOnEmpty:n,phoneBeforeInput:s,prefix:r,charAfterDialCode:a,forceDialCode:p,disableDialCodeAndPrefix:i,countryGuessingEnabled:o,defaultMask:u,disableFormatting:l,countries:m,allowMaskOverflow:y})=>{let d=t.nativeEvent,w=d.inputType,f=_e(w),v=!!w?.startsWith(\"insertFrom\"),g=w===\"insertText\",D=d?.data||void 0,I=t.target.value,_=t.target.selectionStart??0;if(w?.includes(\"history\"))return{inputValue:s,phone:G({phone:s,prefix:r}),cursorPosition:s.length,country:e};if(g&&!O(D)&&I!==r)return{inputValue:s,phone:G({phone:i?`${e.dialCode}${s}`:s,prefix:r}),cursorPosition:_-(D?.length??0),country:e};if(p&&!I.startsWith(`${r}${e.dialCode}`)&&!v){let b=I?s:`${r}${e.dialCode}${a}`;return{inputValue:b,phone:G({phone:b,prefix:r}),cursorPosition:r.length+e.dialCode.length+a.length,country:e}}let{phone:c,inputValue:C,country:h}=W({value:I,country:e,trimNonDigitsEnd:f===\"backward\",insertDialCodeOnEmpty:n,countryGuessingEnabled:o,countries:m,prefix:r,charAfterDialCode:a,forceDialCode:p,disableDialCodeAndPrefix:i,disableFormatting:l,defaultMask:u,allowMaskOverflow:y}),P=he({cursorPositionAfterInput:_,phoneBeforeInput:s,phoneAfterInput:I,phoneAfterFormatted:C,leftOffset:p?r.length+e.dialCode.length+a.length:0,deletion:f});return{phone:c,inputValue:C,cursorPosition:P,country:h}};import{useCallback as te,useRef as ve,useState as Ee}from\"react\";var ge=(t,e)=>{let n=Object.keys(t),s=Object.keys(e);if(n.length!==s.length)return!1;for(let r of n)if(t[r]!==e[r])return!1;return!0};import{useCallback as Te,useMemo as Ae,useRef as be}from\"react\";var we=()=>{let t=be(),e=be(Date.now()),n=Te(()=>{let s=Date.now(),r=t.current?s-e.current:void 0;return t.current=e.current,e.current=s,r},[]);return Ae(()=>({check:n}),[n])};var Le={size:20,overrideLastItemDebounceMS:-1};function Pe(t,e){let{size:n,overrideLastItemDebounceMS:s,onChange:r}={...Le,...e},[a,p]=Ee(t),i=ve([a]),o=ve(0),u=we(),l=te((d,w)=>{let f=i.current[o.current];if(d===f||typeof d==\"object\"&&typeof f==\"object\"&&ge(d,f))return;let v=s>0,g=u.check(),E=v&&g!==void 0?g>s:!0;if(w?.overrideLastItem!==void 0?w.overrideLastItem:!E)i.current=[...i.current.slice(0,o.current),d];else{let I=i.current.length>=n;i.current=[...i.current.slice(I?1:0,o.current+1),d],I||(o.current+=1)}p(d),r?.(d)},[r,s,n,u]),m=te(()=>{if(o.current<=0)return{success:!1};let d=i.current[o.current-1];return p(d),o.current-=1,r?.(d),{success:!0,value:d}},[r]),y=te(()=>{if(o.current+1>=i.current.length)return{success:!1};let d=i.current[o.current+1];return p(d),o.current+=1,r?.(d),{success:!0,value:d}},[r]);return[a,l,m,y]}var J=\".\",R={defaultCountry:\"us\",value:\"\",prefix:\"+\",defaultMask:\"............\",charAfterDialCode:\" \",historySaveDebounceMS:200,disableCountryGuess:!1,disableDialCodePrefill:!1,forceDialCode:!1,disableDialCodeAndPrefix:!1,disableFormatting:!1,allowMaskOverflow:!1,countries:M,preferredCountries:[]},oe=({defaultCountry:t=R.defaultCountry,value:e=R.value,countries:n=R.countries,prefix:s=R.prefix,defaultMask:r=R.defaultMask,charAfterDialCode:a=R.charAfterDialCode,historySaveDebounceMS:p=R.historySaveDebounceMS,disableCountryGuess:i=R.disableCountryGuess,disableDialCodePrefill:o=R.disableDialCodePrefill,forceDialCode:u=R.forceDialCode,disableDialCodeAndPrefix:l=R.disableDialCodeAndPrefix,disableFormatting:m=R.disableFormatting,allowMaskOverflow:y=R.allowMaskOverflow,onChange:d,inputRef:w})=>{let g={countries:n,prefix:s,charAfterDialCode:a,forceDialCode:l?!1:u,disableDialCodeAndPrefix:l,defaultMask:r,countryGuessingEnabled:!i,disableFormatting:m,allowMaskOverflow:y},E=Fe(null),D=w||E,I=x=>{Promise.resolve().then(()=>{typeof window>\"u\"||D.current!==document?.activeElement||D.current?.setSelectionRange(x,x)})},_=re(x=>z({value:x,field:\"iso2\",countries:n}),[n]),c=re(({inputValue:x,phone:T,country:k})=>{if(!d)return;let F=_(k);d({phone:T,inputValue:x,country:F})},[_,d]),[{phone:C,inputValue:h,country:P},b,L,$]=Pe(()=>{let x=z({value:t,field:\"iso2\",countries:n});x||console.error(`[react-international-phone]: can not find a country with \"${t}\" iso2 code`);let T=x||z({value:\"us\",field:\"iso2\",countries:n}),{phone:k,inputValue:F,country:U}=W({value:e,country:T,insertDialCodeOnEmpty:!o,...g});return I(F.length),{phone:k,inputValue:F,country:U.iso2}},{overrideLastItemDebounceMS:p,onChange:c}),A=$e(()=>_(P),[P,_]);xe(()=>{let x=D.current;if(!x)return;let T=k=>{if(!k.key)return;let F=k.ctrlKey,U=k.metaKey,Ie=k.shiftKey;if(k.key.toLowerCase()===\"z\"){if(me()){if(!U)return}else if(!F)return;Ie?$():L()}};return x.addEventListener(\"keydown\",T),()=>{x.removeEventListener(\"keydown\",T)}},[D,L,$]);let K=x=>{x.preventDefault();let{phone:T,inputValue:k,country:F,cursorPosition:U}=ye(x,{country:A,phoneBeforeInput:h,insertDialCodeOnEmpty:!1,...g});return b({inputValue:k,phone:T,country:F.iso2}),I(U),e},Q=re((x,T={focusOnInput:!1})=>{let k=z({value:x,field:\"iso2\",countries:n});if(!k){console.error(`[react-international-phone]: can not find a country with \"${x}\" iso2 code`);return}let F=l?\"\":`${s}${k.dialCode}${a}`;b({inputValue:F,phone:`${s}${k.dialCode}`,country:k.iso2}),T.focusOnInput&&Promise.resolve().then(()=>{D.current?.focus()})},[n,l,s,a,b,D]),[X,j]=ze(!1);return xe(()=>{if(!X){j(!0),e!==C&&d?.({inputValue:h,phone:C,country:A});return}if(e===C)return;let{phone:x,inputValue:T,country:k}=W({value:e,country:A,insertDialCodeOnEmpty:!o,...g});b({phone:x,inputValue:T,country:k.iso2})},[e]),{phone:C,inputValue:h,country:A,setCountry:Q,handlePhoneValueChange:K,inputRef:D}};var Y=({phone:t,country:e,defaultMask:n=\"............\",disableFormatting:s=!1})=>{let r=e.format,a=i=>s?i.replace(new RegExp(`[^${J}]`,\"g\"),\"\"):i;if(!r)return a(n);if(typeof r==\"string\")return a(r);if(!r.default)return console.error(`[react-international-phone]: default mask for ${e.iso2} is not provided`),a(n);let p=Object.keys(r).find(i=>{if(i===\"default\")return!1;if(!(i.charAt(0)===\"/\"&&i.charAt(i.length-1)===\"/\"))return console.error(`[react-international-phone]: format regex \"${i}\" for ${e.iso2} is not valid`),!1;let u=new RegExp(i.substring(1,i.length-1)),l=t.replace(e.dialCode,\"\");return u.test(V(l))});return a(p?r[p]:r.default)};var N=t=>{let[e,n,s,r,a,p]=t;return{name:e,iso2:n,dialCode:s,format:r,priority:a,areaCodes:p}};var Oe=t=>`Field \"${t}\" is not supported`,z=({field:t,value:e,countries:n=M})=>{if([\"priority\"].includes(t))throw new Error(Oe(t));let s=n.find(r=>{let a=N(r);return e===a[t]});if(s)return N(s)};var ee=({phone:t,countries:e=M,currentCountryIso2:n})=>{let s={country:void 0,fullDialCodeMatch:!1};if(!t)return s;let r=V(t);if(!r)return s;let a=s,p=({country:i,fullDialCodeMatch:o})=>{let u=i.dialCode===a.country?.dialCode,l=(i.priority??0)<(a.country?.priority??0);(!u||l)&&(a={country:i,fullDialCodeMatch:o})};for(let i of e){let o=N(i),{dialCode:u,areaCodes:l}=o;if(r.startsWith(u)){let m=a.country?Number(u)>=Number(a.country.dialCode):!0;if(l){let y=r.substring(u.length);for(let d of l)if(y.startsWith(d))return{country:o,fullDialCodeMatch:!0}}(m||u===r||!a.fullDialCodeMatch)&&p({country:o,fullDialCodeMatch:!0})}a.fullDialCodeMatch||r.length<u.length&&u.startsWith(r)&&(!a.country||Number(u)<=Number(a.country.dialCode))&&p({country:o,fullDialCodeMatch:!1})}if(n){let i=z({value:n,field:\"iso2\",countries:e});if(!i)return a;let u=i?(m=>{if(!m?.areaCodes)return!1;let y=r.substring(m.dialCode.length);return m.areaCodes.some(d=>d.startsWith(y))})(i):!1;!!a&&a.country?.dialCode===i.dialCode&&a.country!==i&&a.fullDialCodeMatch&&(!i.areaCodes||u)&&(a={country:i,fullDialCodeMatch:!0})}return a};import Se from\"react\";var Ve=(t,e)=>{let n=parseInt(t,16);return Number(n+e).toString(16)},He=\"abcdefghijklmnopqrstuvwxyz\",je=\"1f1e6\",De=He.split(\"\").reduce((t,e,n)=>({...t,[e]:Ve(je,n)}),{}),Be=t=>[De[t[0]],De[t[1]]].join(\"-\"),q=({iso2:t,size:e,src:n,protocol:s=\"https\",disableLazyLoading:r,className:a,style:p,...i})=>{if(!t)return Se.createElement(\"img\",{className:S({addPrefix:[\"flag-emoji\"],rawClassNames:[a]}),width:e,height:e,...i});let o=()=>{if(n)return n;let u=Be(t);return`${s}://cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/svg/${u}.svg`};return Se.createElement(\"img\",{className:S({addPrefix:[\"flag-emoji\"],rawClassNames:[a]}),src:o(),width:e,height:e,draggable:!1,\"data-country\":t,loading:r?void 0:\"lazy\",style:{width:e,height:e,...p},alt:\"\",...i})};import H,{useCallback as ne,useEffect as ae,useMemo as Ge,useRef as ie,useState as Ke}from\"react\";var Ue=1e3,se=({show:t,dialCodePrefix:e=\"+\",selectedCountry:n,countries:s=M,preferredCountries:r=[],flags:a,onSelect:p,onClose:i,...o})=>{let u=ie(null),l=ie(),m=Ge(()=>{if(!r||!r.length)return s;let c=[],C=[...s];for(let h of r){let P=C.findIndex(b=>N(b).iso2===h);if(P!==-1){let b=C.splice(P,1)[0];c.push(b)}}return c.concat(C)},[s,r]),y=ie({updatedAt:void 0,value:\"\"}),d=c=>{let C=y.current.updatedAt&&new Date().getTime()-y.current.updatedAt.getTime()>Ue;y.current={value:C?c:`${y.current.value}${c}`,updatedAt:new Date};let h=m.findIndex(P=>N(P).name.toLowerCase().startsWith(y.current.value));h!==-1&&v(h)},w=ne(c=>m.findIndex(C=>N(C).iso2===c),[m]),[f,v]=Ke(w(n)),g=()=>{l.current!==n&&v(w(n))},E=ne(c=>{v(w(c.iso2)),p?.(c)},[p,w]),D=c=>{let C=m.length-1,h=P=>c===\"prev\"?P-1:c===\"next\"?P+1:c===\"last\"?C:0;v(P=>{let b=h(P);return b<0?0:b>C?C:b})},I=c=>{if(c.stopPropagation(),c.key===\"Enter\"){c.preventDefault();let C=N(m[f]);E(C);return}if(c.key===\"Escape\"){i?.();return}if(c.key===\"ArrowUp\"){c.preventDefault(),D(\"prev\");return}if(c.key===\"ArrowDown\"){c.preventDefault(),D(\"next\");return}if(c.key===\"PageUp\"){c.preventDefault(),D(\"first\");return}if(c.key===\"PageDown\"){c.preventDefault(),D(\"last\");return}c.key===\" \"&&c.preventDefault(),c.key.length===1&&!c.altKey&&!c.ctrlKey&&!c.metaKey&&d(c.key.toLocaleLowerCase())},_=ne(()=>{if(!u.current||f===void 0)return;let c=N(m[f]).iso2;if(c===l.current)return;let C=u.current.querySelector(`[data-country=\"${c}\"]`);C&&(pe(u.current,C),l.current=c)},[f,m]);return ae(()=>{_()},[f,_]),ae(()=>{u.current&&(t?u.current.focus():g())},[t]),ae(()=>{g()},[n]),H.createElement(\"ul\",{ref:u,role:\"listbox\",className:S({addPrefix:[\"country-selector-dropdown\"],rawClassNames:[o.className]}),style:{display:t?\"block\":\"none\",...o.style},onKeyDown:I,onBlur:i,tabIndex:-1,\"aria-activedescendant\":`react-international-phone__${N(m[f]).iso2}-option`},m.map((c,C)=>{let h=N(c),P=h.iso2===n,b=C===f,L=r.includes(h.iso2),$=C===r.length-1,A=a?.find(K=>K.iso2===h.iso2);return H.createElement(H.Fragment,{key:h.iso2},H.createElement(\"li\",{\"data-country\":h.iso2,role:\"option\",\"aria-selected\":P,\"aria-label\":`${h.name} ${e}${h.dialCode}`,id:`react-international-phone__${h.iso2}-option`,className:S({addPrefix:[\"country-selector-dropdown__list-item\",L&&\"country-selector-dropdown__list-item--preferred\",P&&\"country-selector-dropdown__list-item--selected\",b&&\"country-selector-dropdown__list-item--focused\"],rawClassNames:[o.listItemClassName,L&&o.listItemPreferredClassName,P&&o.listItemSelectedClassName,b&&o.listItemFocusedClassName]}),onClick:()=>E(h),style:o.listItemStyle,title:h.name},H.createElement(q,{iso2:h.iso2,src:A?.src,className:S({addPrefix:[\"country-selector-dropdown__list-item-flag-emoji\"],rawClassNames:[o.listItemFlagClassName]}),style:o.listItemFlagStyle}),H.createElement(\"span\",{className:S({addPrefix:[\"country-selector-dropdown__list-item-country-name\"],rawClassNames:[o.listItemCountryNameClassName]}),style:o.listItemCountryNameStyle},h.name),H.createElement(\"span\",{className:S({addPrefix:[\"country-selector-dropdown__list-item-dial-code\"],rawClassNames:[o.listItemDialCodeClassName]}),style:o.listItemDialCodeStyle},e,h.dialCode)),$?H.createElement(\"hr\",{className:S({addPrefix:[\"country-selector-dropdown__preferred-list-divider\"],rawClassNames:[o.preferredListDividerClassName]}),style:o.preferredListDividerStyle}):null)}))};var le=B.memo(({selectedCountry:t,onSelect:e,disabled:n,hideDropdown:s,countries:r=M,preferredCountries:a=[],flags:p,renderButtonWrapper:i,...o})=>{let[u,l]=Je(!1),m=We(()=>{if(t)return z({value:t,field:\"iso2\",countries:r})},[r,t]),y=qe(null),d=f=>{f.key&&[\"ArrowUp\",\"ArrowDown\"].includes(f.key)&&(f.preventDefault(),l(!0))},w=()=>{let f={title:m?.name,onClick:()=>l(g=>!g),onMouseDown:g=>g.preventDefault(),onKeyDown:d,disabled:s||n,role:\"combobox\",\"aria-label\":\"Country selector\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":u},v=B.createElement(\"div\",{className:S({addPrefix:[\"country-selector-button__button-content\"],rawClassNames:[o.buttonContentWrapperClassName]}),style:o.buttonContentWrapperStyle},B.createElement(q,{iso2:t,src:p?.find(g=>g.iso2===t)?.src,className:S({addPrefix:[\"country-selector-button__flag-emoji\",n&&\"country-selector-button__flag-emoji--disabled\"],rawClassNames:[o.flagClassName]}),style:{visibility:t?\"visible\":\"hidden\",...o.flagStyle}}),!s&&B.createElement(\"div\",{className:S({addPrefix:[\"country-selector-button__dropdown-arrow\",n&&\"country-selector-button__dropdown-arrow--disabled\",u&&\"country-selector-button__dropdown-arrow--active\"],rawClassNames:[o.dropdownArrowClassName]}),style:o.dropdownArrowStyle}));return i?i({children:v,rootProps:f}):B.createElement(\"button\",{...f,type:\"button\",className:S({addPrefix:[\"country-selector-button\",u&&\"country-selector-button--active\",n&&\"country-selector-button--disabled\",s&&\"country-selector-button--hide-dropdown\"],rawClassNames:[o.buttonClassName]}),\"data-country\":t,style:o.buttonStyle},v)};return B.createElement(\"div\",{className:S({addPrefix:[\"country-selector\"],rawClassNames:[o.className]}),style:o.style,ref:y},w(),B.createElement(se,{show:u,countries:r,preferredCountries:a,flags:p,onSelect:f=>{l(!1),e?.(f)},selectedCountry:t,onClose:()=>{l(!1)},...o.dropdownStyleProps}))});import Ze from\"react\";var ue=({dialCode:t,prefix:e,disabled:n,style:s,className:r})=>Ze.createElement(\"div\",{className:S({addPrefix:[\"dial-code-preview\",n&&\"dial-code-preview--disabled\"],rawClassNames:[r]}),style:s},`${e}${t}`);import Z,{forwardRef as Qe,useCallback as ke,useImperativeHandle as Xe}from\"react\";var Ye=Qe(({value:t,onChange:e,countries:n=M,preferredCountries:s,hideDropdown:r,showDisabledDialCodeAndPrefix:a,disableFocusAfterCountrySelect:p,flags:i,style:o,className:u,inputStyle:l,inputClassName:m,countrySelectorStyleProps:y,dialCodePreviewStyleProps:d,inputProps:w,placeholder:f,disabled:v,name:g,onFocus:E,onBlur:D,required:I,autoFocus:_,...c},C)=>{let h=ke(j=>{e?.(j.phone,{country:j.country,inputValue:j.inputValue})},[e]),{phone:P,inputValue:b,inputRef:L,country:$,setCountry:A,handlePhoneValueChange:K}=oe({value:t,countries:n,...c,onChange:h}),Q=c.disableDialCodeAndPrefix&&a&&$?.dialCode,X=ke(j=>{A(j.iso2,{focusOnInput:!p})},[A,p]);return Xe(C,()=>L.current?Object.assign(L.current,{setCountry:A,state:{phone:P,inputValue:b,country:$}}):null,[L,A,P,b,$]),Z.createElement(\"div\",{ref:C,className:S({addPrefix:[\"input-container\"],rawClassNames:[u]}),style:o},Z.createElement(le,{onSelect:X,flags:i,selectedCountry:$?.iso2,countries:n,preferredCountries:s,disabled:v,hideDropdown:r,...y}),Q&&Z.createElement(ue,{dialCode:$.dialCode,prefix:c.prefix??\"+\",disabled:v,...d}),Z.createElement(\"input\",{onChange:K,value:b,type:\"tel\",ref:L,className:S({addPrefix:[\"input\",v&&\"input--disabled\"],rawClassNames:[m]}),placeholder:f,disabled:v,style:l,name:g,onFocus:E,onBlur:D,autoFocus:_,required:I,...w}))});export{le as CountrySelector,se as CountrySelectorDropdown,ue as DialCodePreview,q as FlagImage,Ye as PhoneInput,Re as buildCountryData,M as defaultCountries,Y as getActiveFormattingMask,z as getCountry,ee as guessCountryByPartialPhoneNumber,N as parseCountry,fe as removeDialCode,oe as usePhoneInput};\n","/**\n * Vanilla emoji-flag + dial-code picker for VTBA form tel fields.\n *\n * Framework-agnostic: this is the single source of truth for the phone flag\n * picker. It is used two ways:\n * 1. In AEM (server-rendered HTL) via the ac-react-app form runtime, which\n * calls {@link initTelPickers} on DOM-ready.\n * 2. In Storybook via the React {@link ../LsgFormFieldTel} component, which\n * calls it from a `useEffect`.\n *\n * It enhances `.cmp-vtba-form__field--tel input[type=\"tel\"]` with a country\n * toggle (Unicode emoji flag + dial code) and a searchable dropdown. Emoji flags\n * mean no image assets to ship. Country/dial-code data is reused from\n * `react-international-phone` (data only — no React needed at runtime here).\n *\n * DOM strategy (so it is safe inside React too): if the input already sits in a\n * `.cmp-vtba-tel` wrapper (React renders one), the picker only *appends* the\n * toggle + dropdown and never moves the React-managed input. Otherwise (plain\n * AEM markup) it creates the wrapper and moves the input in.\n *\n * On submit, the field value is the full international number\n * (`+<dialCode><nationalDigits>`) via {@link getTelValue}.\n */\nimport { defaultCountries } from \"react-international-phone\";\nimport \"./telPicker.scss\";\n\ninterface TelCountry {\n name: string;\n iso2: string;\n dialCode: string;\n}\n\n/** `defaultCountries` items are tuples `[name, iso2, dialCode, format?, ...]`. */\nconst COUNTRIES: TelCountry[] = (defaultCountries as unknown[])\n .map((c) => {\n const t = c as string[];\n return { name: t[0], iso2: t[1], dialCode: t[2] };\n })\n .filter((c: TelCountry) => !!c.iso2 && !!c.dialCode);\n\nconst DEFAULT_ISO2 = \"gb\";\n\n/** Converts an ISO-2 country code to its Unicode regional-indicator flag emoji. */\nfunction flagEmoji(iso2: string): string {\n return iso2\n .toUpperCase()\n .replace(/[A-Z]/g, (ch) => String.fromCodePoint(0x1f1e6 + ch.charCodeAt(0) - 65));\n}\n\nfunction findCountry(iso2: string): TelCountry | undefined {\n const target = (iso2 || \"\").toLowerCase();\n for (let i = 0; i < COUNTRIES.length; i++) {\n if (COUNTRIES[i].iso2 === target) {\n return COUNTRIES[i];\n }\n }\n return undefined;\n}\n\n/**\n * Enhances every tel field under {@code root} (or {@code root} itself when it is\n * a tel field). Idempotent per input. Works whether {@code root} is the whole\n * form (AEM) or a single field element (React component).\n */\nexport function initTelPickers(root: ParentNode | null): void {\n if (!root) {\n return;\n }\n const inputs = root.querySelectorAll(\"input[type='tel']\");\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i] as HTMLInputElement;\n if (input.closest(\".cmp-vtba-form__field--tel\")) {\n enhance(input);\n }\n }\n}\n\n/**\n * Full international number for a picker-enhanced tel input:\n * `+<dialCode><nationalDigits>`. Falls back to the raw value if not enhanced.\n */\nexport function getTelValue(input: HTMLInputElement): string {\n const dial = input.getAttribute(\"data-dial-code\");\n if (!dial) {\n return input.value;\n }\n const national = (input.value || \"\").replace(/\\D/g, \"\");\n return national ? \"+\" + dial + national : \"\";\n}\n\nfunction enhance(input: HTMLInputElement): void {\n if (input.getAttribute(\"data-tel-picker\") === \"true\" || !input.parentElement) {\n return;\n }\n input.setAttribute(\"data-tel-picker\", \"true\");\n\n const initialIso2 = (input.getAttribute(\"data-country\") || DEFAULT_ISO2).toLowerCase();\n let selected = findCountry(initialIso2) || findCountry(DEFAULT_ISO2) || COUNTRIES[0];\n\n // Reuse a pre-rendered wrapper (React) — append-only, never move the input.\n // Otherwise create the wrapper and move the input (plain vanilla markup).\n let wrapper: HTMLElement;\n if (input.parentElement.classList.contains(\"cmp-vtba-tel\")) {\n wrapper = input.parentElement;\n } else {\n wrapper = document.createElement(\"div\");\n wrapper.className = \"cmp-vtba-tel\";\n input.parentElement.insertBefore(wrapper, input);\n wrapper.appendChild(input);\n }\n\n const toggle = document.createElement(\"button\");\n toggle.type = \"button\";\n toggle.className = \"cmp-vtba-tel__toggle\";\n toggle.setAttribute(\"aria-haspopup\", \"listbox\");\n toggle.setAttribute(\"aria-expanded\", \"false\");\n\n const dropdown = document.createElement(\"div\");\n dropdown.className = \"cmp-vtba-tel__dropdown\";\n dropdown.hidden = true;\n\n const search = document.createElement(\"input\");\n search.type = \"text\";\n search.className = \"cmp-vtba-tel__search\";\n search.placeholder = \"Search\";\n search.setAttribute(\"aria-label\", \"Search countries\");\n\n const list = document.createElement(\"ul\");\n list.className = \"cmp-vtba-tel__list\";\n list.setAttribute(\"role\", \"listbox\");\n\n dropdown.appendChild(search);\n dropdown.appendChild(list);\n\n // Toggle goes before the input; dropdown after — both inside the wrapper.\n wrapper.insertBefore(toggle, input);\n wrapper.appendChild(dropdown);\n\n function applySelected(country: TelCountry): void {\n selected = country;\n input.setAttribute(\"data-dial-code\", country.dialCode);\n input.setAttribute(\"data-iso2\", country.iso2);\n toggle.textContent = \"\";\n const flag = document.createElement(\"span\");\n flag.className = \"cmp-vtba-tel__flag\";\n flag.setAttribute(\"aria-hidden\", \"true\");\n flag.textContent = flagEmoji(country.iso2);\n const code = document.createElement(\"span\");\n code.className = \"cmp-vtba-tel__code\";\n code.textContent = \"+\" + country.dialCode;\n toggle.appendChild(flag);\n toggle.appendChild(code);\n toggle.setAttribute(\n \"aria-label\",\n \"Country calling code: \" + country.name + \" +\" + country.dialCode\n );\n }\n\n function renderList(filter: string): void {\n list.textContent = \"\";\n const f = filter.trim().toLowerCase();\n const digits = f.replace(/[^0-9]/g, \"\");\n for (let i = 0; i < COUNTRIES.length; i++) {\n const c = COUNTRIES[i];\n const match =\n !f ||\n c.name.toLowerCase().indexOf(f) !== -1 ||\n c.iso2 === f ||\n (!!digits && c.dialCode.indexOf(digits) === 0);\n if (!match) {\n continue;\n }\n const li = document.createElement(\"li\");\n li.className = \"cmp-vtba-tel__option\";\n li.setAttribute(\"role\", \"option\");\n li.tabIndex = -1;\n li.setAttribute(\"data-iso2\", c.iso2);\n li.setAttribute(\"aria-selected\", c.iso2 === selected.iso2 ? \"true\" : \"false\");\n li.textContent = flagEmoji(c.iso2) + \" \" + c.name + \" +\" + c.dialCode;\n li.addEventListener(\"click\", () => {\n applySelected(c);\n close();\n input.focus();\n });\n list.appendChild(li);\n }\n }\n\n function open(): void {\n dropdown.hidden = false;\n toggle.setAttribute(\"aria-expanded\", \"true\");\n search.value = \"\";\n renderList(\"\");\n search.focus();\n }\n function close(): void {\n dropdown.hidden = true;\n toggle.setAttribute(\"aria-expanded\", \"false\");\n }\n\n toggle.addEventListener(\"click\", () => {\n if (dropdown.hidden) {\n open();\n } else {\n close();\n }\n });\n\n search.addEventListener(\"input\", () => renderList(search.value));\n search.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Escape\") {\n close();\n toggle.focus();\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const first = list.querySelector(\".cmp-vtba-tel__option\") as HTMLElement | null;\n if (first) {\n first.focus();\n }\n }\n });\n\n list.addEventListener(\"keydown\", (e) => {\n const opts = Array.prototype.slice.call(\n list.querySelectorAll(\".cmp-vtba-tel__option\")\n ) as HTMLElement[];\n const idx = opts.indexOf(document.activeElement as HTMLElement);\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n (opts[idx + 1] || opts[0]).focus();\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n if (idx <= 0) {\n search.focus();\n } else {\n opts[idx - 1].focus();\n }\n } else if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const iso2 = (document.activeElement as HTMLElement).getAttribute(\"data-iso2\");\n const c = iso2 ? findCountry(iso2) : undefined;\n if (c) {\n applySelected(c);\n close();\n input.focus();\n }\n } else if (e.key === \"Escape\") {\n close();\n toggle.focus();\n }\n });\n\n document.addEventListener(\"click\", (e) => {\n if (!wrapper.contains(e.target as Node)) {\n close();\n }\n });\n\n applySelected(selected);\n}\n","import React, { useEffect, useRef } from \"react\";\nimport \"./LsgFormFieldTel.scss\";\nimport { initTelPickers } from \"../telPicker\";\n\nexport interface LsgFormFieldTelProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n minLength?: number;\n maxLength?: number;\n pattern?: string;\n name?: string;\n /** ISO-2 country to preselect in the flag picker (e.g. \"gb\", \"us\"). */\n defaultCountry?: string;\n}\n\nexport const LsgFormFieldTel: React.FC<LsgFormFieldTelProps> = ({\n id = \"field-tel\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n minLength,\n maxLength,\n pattern,\n name,\n defaultCountry,\n}) => {\n const fieldRef = useRef<HTMLDivElement>(null);\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy =\n [helpId, error ? errorId : undefined].filter(Boolean).join(\" \") || undefined;\n\n // Enhance the tel input with the shared emoji-flag + dial-code picker.\n // The input is pre-wrapped in `.cmp-vtba-tel`, so the picker appends its\n // toggle/dropdown without moving the React-managed input.\n useEffect(() => {\n initTelPickers(fieldRef.current);\n }, []);\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--tel\" ref={fieldRef}>\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <span className=\"cmp-vtba-tel\">\n <input\n type=\"tel\"\n className=\"cmp-vtba-form__input\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete=\"tel\"\n minLength={minLength}\n maxLength={maxLength}\n pattern={pattern}\n data-country={defaultCountry}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n </span>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldSelect.scss\";\n\nexport interface LsgFormSelectOption {\n value: string;\n label: string;\n}\n\nexport interface LsgFormFieldSelectProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n options?: LsgFormSelectOption[];\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nexport const LsgFormFieldSelect: React.FC<LsgFormFieldSelectProps> = ({\n id = \"field-select\",\n label,\n helpText,\n placeholder = \"Please select\",\n defaultValue = \"\",\n options = [],\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--select\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <div className=\"cmp-vtba-form__select-wrapper\">\n <select\n className=\"cmp-vtba-form__select\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldCountry.scss\";\n\nexport interface LsgFormFieldCountryOption {\n value: string;\n label: string;\n}\n\nexport interface LsgFormFieldCountryProps {\n id?: string;\n label: string;\n helpText?: string;\n defaultValue?: string;\n /** Fixture list; in AEM this is populated from /bin/vtba/country-list.json at runtime */\n countries?: LsgFormFieldCountryOption[];\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nconst COUNTRY_FIXTURE: LsgFormFieldCountryOption[] = [\n { value: \"us\", label: \"United States\" },\n { value: \"gb\", label: \"United Kingdom\" },\n { value: \"de\", label: \"Germany\" },\n { value: \"fr\", label: \"France\" },\n { value: \"se\", label: \"Sweden\" },\n { value: \"jp\", label: \"Japan\" },\n { value: \"cn\", label: \"China\" },\n { value: \"in\", label: \"India\" },\n { value: \"br\", label: \"Brazil\" },\n { value: \"au\", label: \"Australia\" },\n];\n\nexport const LsgFormFieldCountry: React.FC<LsgFormFieldCountryProps> = ({\n id = \"field-country\",\n label,\n helpText,\n defaultValue = \"\",\n countries = COUNTRY_FIXTURE,\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--country\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <div className=\"cmp-vtba-form__select-wrapper\">\n <select\n className=\"cmp-vtba-form__select\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n data-country-list=\"true\"\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n >\n <option value=\"\">Select a country</option>\n {countries.map((c) => (\n <option key={c.value} value={c.value}>\n {c.label}\n </option>\n ))}\n </select>\n </div>\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldTextarea.scss\";\n\nexport interface LsgFormFieldTextareaProps {\n id?: string;\n label: string;\n helpText?: string;\n placeholder?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n autocomplete?: string;\n maxLength?: number;\n rows?: number;\n name?: string;\n}\n\nexport const LsgFormFieldTextarea: React.FC<LsgFormFieldTextareaProps> = ({\n id = \"field-textarea\",\n label,\n helpText,\n placeholder,\n defaultValue = \"\",\n required = false,\n disabled = false,\n error,\n autocomplete,\n maxLength,\n rows = 4,\n name,\n}) => {\n const helpId = helpText ? `${id}-help` : undefined;\n const errorId = `${id}-error`;\n const ariaDescribedBy = [helpId, error ? errorId : undefined]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--textarea\">\n <label className=\"cmp-vtba-form__label\" htmlFor={id}>\n {label}\n {required && (\n <abbr className=\"cmp-vtba-form__required\" title=\"required\">\n *\n </abbr>\n )}\n </label>\n <textarea\n className=\"cmp-vtba-form__textarea\"\n id={id}\n name={name}\n defaultValue={defaultValue}\n placeholder={placeholder}\n autoComplete={autocomplete}\n maxLength={maxLength}\n rows={rows}\n aria-describedby={ariaDescribedBy}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {helpText && (\n <span className=\"cmp-vtba-form__help\" id={helpId}>\n {helpText}\n </span>\n )}\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormFieldConsent.scss\";\n\nexport interface LsgFormFieldConsentProps {\n id?: string;\n /** Consent label — may contain inline HTML (use dangerouslySetInnerHTML) */\n label: string;\n required?: boolean;\n disabled?: boolean;\n error?: string;\n name?: string;\n}\n\nexport const LsgFormFieldConsent: React.FC<LsgFormFieldConsentProps> = ({\n id = \"field-consent\",\n label,\n required = false,\n disabled = false,\n error,\n name,\n}) => {\n const errorId = `${id}-error`;\n\n return (\n <div className=\"cmp-vtba-form__field cmp-vtba-form__field--consent\">\n <div className=\"cmp-vtba-form__consent\">\n <input\n type=\"checkbox\"\n className=\"cmp-vtba-form__checkbox\"\n id={id}\n name={name}\n value=\"true\"\n data-consent=\"\"\n aria-describedby={error ? errorId : undefined}\n aria-invalid={error ? \"true\" : undefined}\n required={required}\n disabled={disabled}\n />\n {/* eslint-disable-next-line react/no-danger -- mirrors AEM rich-text label output */}\n <label\n className=\"cmp-vtba-form__consent-label\"\n htmlFor={id}\n dangerouslySetInnerHTML={{ __html: label }}\n />\n </div>\n <span\n className=\"cmp-vtba-form__field-error\"\n id={errorId}\n role=\"alert\"\n aria-live=\"assertive\"\n hidden={!error}\n >\n {error}\n </span>\n </div>\n );\n};\n","import React from \"react\";\nimport \"./LsgFormStep.scss\";\n\nexport interface LsgFormStepProps {\n title?: string;\n description?: string;\n children?: React.ReactNode;\n /** Matches data-step-id on the AEM fieldset */\n stepId?: string;\n}\n\nexport const LsgFormStep: React.FC<LsgFormStepProps> = ({\n title,\n description,\n children,\n stepId,\n}) => (\n <fieldset\n className=\"cmp-vtba-form__step\"\n data-form-step=\"\"\n data-step-id={stepId}\n >\n {title && <legend className=\"cmp-vtba-form__step-legend\">{title}</legend>}\n {description && (\n <p className=\"cmp-vtba-form__step-description\">{description}</p>\n )}\n <div className=\"cmp-vtba-form__fields\">{children}</div>\n </fieldset>\n);\n","import React from \"react\";\nimport \"./LsgFormContainer.scss\";\n\nexport interface LsgFormContainerProps {\n title?: string;\n /** Multi-step mode shows the progress indicator */\n multiStep?: boolean;\n /** 1-based index of the active step */\n currentStep?: number;\n steps?: string[];\n children?: React.ReactNode;\n /** Shows the form-level error banner */\n formError?: string;\n /** Shows the success message and hides the form */\n successMessage?: string;\n}\n\nexport const LsgFormContainer: React.FC<LsgFormContainerProps> = ({\n title,\n multiStep = false,\n currentStep = 1,\n steps = [],\n children,\n formError,\n successMessage,\n}) => (\n <div className=\"cmp-vtba-form\" data-vtba-form=\"\">\n <form\n className=\"cmp-vtba-form__form\"\n method=\"post\"\n noValidate\n aria-label={title}\n hidden={!!successMessage}\n >\n {title && <h2 className=\"cmp-vtba-form__title\">{title}</h2>}\n\n {multiStep && steps.length > 0 && (\n <nav className=\"cmp-vtba-form__progress\" aria-label=\"Form progress\">\n <ol className=\"cmp-vtba-form__progress-list\">\n {steps.map((stepTitle, i) => (\n <li\n key={i}\n className=\"cmp-vtba-form__progress-step\"\n data-step-index={i}\n aria-current={i + 1 === currentStep ? \"step\" : undefined}\n >\n <span className=\"cmp-vtba-form__progress-number\">{i + 1}</span>\n <span className=\"cmp-vtba-form__progress-title\">{stepTitle}</span>\n </li>\n ))}\n </ol>\n </nav>\n )}\n\n <div className=\"cmp-vtba-form__steps\">{children}</div>\n\n <div className=\"cmp-vtba-form__actions\">\n {multiStep && (\n <button type=\"button\" className=\"cmp-vtba-form__prev\" data-form-prev=\"\" hidden={currentStep <= 1}>\n Back\n </button>\n )}\n {multiStep && currentStep < (steps.length || 1) ? (\n <button type=\"button\" className=\"cmp-vtba-form__next lsg-button lsg-button--primary\" data-form-next=\"\">\n Continue\n </button>\n ) : (\n <button type=\"submit\" className=\"cmp-vtba-form__submit lsg-button lsg-button--primary\" data-form-submit=\"\">\n Submit\n </button>\n )}\n </div>\n\n {/* Live regions, always present (hidden when empty) as in the HTL. */}\n <p className=\"cmp-vtba-form__error\" data-form-error=\"\" role=\"alert\" aria-live=\"assertive\" hidden={!formError}>\n {formError}\n </p>\n </form>\n\n {/* Outside the <form>, as in the HTL: the runtime hides the form on success. */}\n <div className=\"cmp-vtba-form__success\" data-form-success=\"\" role=\"status\" aria-live=\"polite\" hidden={!successMessage}>\n {successMessage}\n </div>\n </div>\n);\n","/**\n * Events the VTBA form-builder runtime (ac-react-app formBuilder.ts) dispatches on\n * the form's `[data-vtba-form]` root. Both bubble.\n *\n * `success` is cancelable: a listener that calls `preventDefault()` takes over the\n * success UI and the form's success redirect is skipped. `success` only fires\n * once HubSpot has accepted the submission.\n *\n * The runtime keeps its own copy of these names (so it builds against older\n * package versions); keep the two in sync.\n */\nexport const VTBA_FORM_EVENTS = {\n success: \"vtba-form:success\",\n error: \"vtba-form:error\",\n} as const;\n\nexport interface VtbaFormSuccessDetail {\n formId: string;\n trackingName: string;\n}\n\nexport interface VtbaFormErrorDetail {\n formId: string;\n /** HTTP status of the submission; 0 for a network error. */\n status: number;\n}\n","import { VTBA_FORM_EVENTS } from \"./vtbaFormEvents\";\n\n/**\n * Vanilla controller for the LSG Download Library. The same class drives the AEM\n * markup (booted from the theme clientlib by bootLsgDownloadLibrary) and the\n * Storybook component (created in a useEffect).\n *\n * - Language picker: a button + listbox popup under the download button; picking a\n * language swaps the download URL.\n * - Gating: when the library has a form overlay, the first download opens the\n * <dialog> holding the VTBA form instead. The download only starts once the form\n * runtime reports a HubSpot success (\"vtba-form:success\"). The unlock is then kept\n * in sessionStorage per form page, so later downloads gated by the same form go\n * straight through for the rest of the session.\n * - Tracking: every download pushes `lsg_download` to the GTM dataLayer and\n * dispatches a bubbling `lsg-download:download` event. Nothing is re-submitted to\n * HubSpot.\n */\n\nexport const LSG_DOWNLOAD_EVENT = \"lsg-download:download\";\nexport const LSG_DOWNLOAD_UNLOCK_KEY_PREFIX = \"lsg-download-unlocked:\";\n\nconst SELECTORS = {\n item: \"[data-lsg-download-item]\",\n trigger: \"[data-lsg-download-trigger]\",\n picker: \"[data-lsg-download-language-picker]\",\n toggle: \"[data-lsg-download-language-toggle]\",\n list: '[role=\"listbox\"]',\n option: '[role=\"option\"]',\n current: \"[data-lsg-download-language-current]\",\n dialog: \"[data-lsg-download-dialog]\",\n dialogClose: \"[data-lsg-download-dialog-close]\",\n dialogAsset: \"[data-lsg-download-dialog-asset]\",\n dialogForm: \"[data-lsg-download-dialog-form]\",\n dialogSuccess: \"[data-lsg-download-dialog-success]\",\n successLink: \"[data-lsg-download-success-link]\",\n formRoot: \"[data-vtba-form]\",\n form: \".cmp-vtba-form__form\",\n hiddenField: \"input[data-lsg-download-field]\",\n focusable: 'input:not([type=\"hidden\"]):not([disabled]), select:not([disabled]), textarea:not([disabled])',\n} as const;\n\nconst POPUP_BLOCKED_CLASS = \"lsg-download-library__dialog--popup-blocked\";\nconst ACTIVE_OPTION_CLASS = \"is-active\";\n\n/** Unlocks that couldn't be written to storage still hold for this page view. */\nconst memoryUnlocks = new Set<string>();\n\nexport type LsgDownloadUnlockedBy = \"none\" | \"session\" | \"form\";\n\nexport interface LsgDownloadTrackingDetail {\n title: string;\n /** Absolute URL of the file (selected language). */\n url: string;\n type: string;\n language: string;\n action: string;\n external: boolean;\n gated: boolean;\n formPath: string;\n /** \"none\" = not gated, \"session\" = unlocked earlier this session, \"form\" = just submitted. */\n unlockedBy: LsgDownloadUnlockedBy;\n libraryId: string;\n}\n\nexport interface LsgDownloadLibraryControllerOptions {\n /** Defaults to window.sessionStorage (null when unavailable). */\n storage?: Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null;\n /** Defaults to window.dataLayer (created if missing). */\n dataLayer?: { push: (entry: object) => unknown };\n /** Defaults to window.open. Stories can stub it to simulate a popup blocker. */\n openWindow?: (url: string) => Window | null;\n}\n\ninterface DownloadSnapshot {\n title: string;\n url: string;\n type: string;\n language: string;\n action: string;\n external: boolean;\n download: boolean;\n newTab: boolean;\n}\n\nfunction defaultStorage(): Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null {\n try {\n return window.sessionStorage;\n } catch (e) {\n return null;\n }\n}\n\n/** Forgets the unlock for one form page (Storybook \"reset\", QA). */\nexport function resetLsgDownloadUnlock(\n formPath: string,\n storage: Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null = defaultStorage(),\n): void {\n const key = LSG_DOWNLOAD_UNLOCK_KEY_PREFIX + formPath;\n memoryUnlocks.delete(key);\n try {\n storage?.removeItem(key);\n } catch (e) {\n // ignore\n }\n}\n\nfunction toArray<T extends Element>(list: NodeListOf<T>): T[] {\n return Array.prototype.slice.call(list) as T[];\n}\n\nfunction absoluteUrl(href: string): string {\n try {\n return new URL(href, window.location.href).href;\n } catch (e) {\n return href;\n }\n}\n\nexport class LsgDownloadLibraryController {\n private readonly root: HTMLElement;\n private readonly options: LsgDownloadLibraryControllerOptions;\n private readonly dialog: HTMLDialogElement | null;\n private pending: { snapshot: DownloadSnapshot; trigger: HTMLAnchorElement } | null = null;\n private completed: DownloadSnapshot | null = null;\n private openPicker: HTMLElement | null = null;\n private pointerDownOnBackdrop = false;\n /** Where the success panel lives in the markup, so it can be put back after a swap. */\n private readonly successHome: { parent: Node; next: Node | null } | null;\n\n constructor(root: HTMLElement, options: LsgDownloadLibraryControllerOptions = {}) {\n this.root = root;\n this.options = options;\n this.dialog = root.querySelector<HTMLDialogElement>(SELECTORS.dialog);\n const success = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogSuccess) : null;\n this.successHome = success && success.parentNode ? { parent: success.parentNode, next: success.nextSibling } : null;\n }\n\n init(): void {\n if (this.root.dataset.lsgDownloadReady === \"true\") {\n return;\n }\n this.root.dataset.lsgDownloadReady = \"true\";\n this.root.addEventListener(\"click\", this.onClick);\n this.root.addEventListener(\"keydown\", this.onKeyDown);\n if (this.dialog) {\n this.dialog.addEventListener(\"pointerdown\", this.onDialogPointerDown);\n this.dialog.addEventListener(\"close\", this.onDialogClose);\n this.dialog.addEventListener(VTBA_FORM_EVENTS.success, this.onFormSuccess);\n }\n if (this.isGated() && this.isUnlocked()) {\n this.stripGateAria();\n }\n }\n\n destroy(): void {\n this.closePicker(false);\n this.root.removeEventListener(\"click\", this.onClick);\n this.root.removeEventListener(\"keydown\", this.onKeyDown);\n if (this.dialog) {\n this.dialog.removeEventListener(\"pointerdown\", this.onDialogPointerDown);\n this.dialog.removeEventListener(\"close\", this.onDialogClose);\n this.dialog.removeEventListener(VTBA_FORM_EVENTS.success, this.onFormSuccess);\n if (this.dialog.open) {\n this.dialog.close();\n }\n }\n this.pending = null;\n delete this.root.dataset.lsgDownloadReady;\n }\n\n // ── Gate state ────────────────────────────────────────────────────────────\n\n isGated(): boolean {\n return this.root.dataset.lsgDownloadGated === \"true\" && this.dialog !== null;\n }\n\n isUnlocked(): boolean {\n const key = this.unlockKey();\n if (memoryUnlocks.has(key)) {\n return true;\n }\n try {\n return !!this.storage() && this.storage()!.getItem(key) === \"1\";\n } catch (e) {\n return false;\n }\n }\n\n unlock(): void {\n const key = this.unlockKey();\n memoryUnlocks.add(key);\n try {\n this.storage()?.setItem(key, \"1\");\n } catch (e) {\n // Storage full/blocked: the in-memory unlock still covers this page view.\n }\n }\n\n /** Keyed by form page path: libraries gated by the same form share one unlock. */\n private unlockKey(): string {\n return (\n LSG_DOWNLOAD_UNLOCK_KEY_PREFIX +\n (this.root.dataset.lsgDownloadFormPath || this.root.dataset.lsgDownloadLibraryId || \"\")\n );\n }\n\n private storage(): Pick<Storage, \"getItem\" | \"setItem\" | \"removeItem\"> | null {\n return this.options.storage !== undefined ? this.options.storage : defaultStorage();\n }\n\n /** Once unlocked, the download links no longer open a dialog. */\n private stripGateAria(): void {\n toArray(this.root.querySelectorAll<HTMLElement>(SELECTORS.trigger)).forEach((trigger) => {\n trigger.removeAttribute(\"aria-haspopup\");\n trigger.removeAttribute(\"aria-controls\");\n });\n }\n\n // ── Events ────────────────────────────────────────────────────────────────\n\n private onClick = (event: MouseEvent): void => {\n const target = event.target;\n if (!(target instanceof Element)) {\n return;\n }\n\n // Backdrop: clicks on ::backdrop target the <dialog> itself. Requiring the\n // pointerdown there too stops a text selection dragged out of a field closing it.\n if (this.dialog && target === this.dialog) {\n if (this.pointerDownOnBackdrop) {\n this.closeGate();\n }\n this.pointerDownOnBackdrop = false;\n return;\n }\n if (target.closest(SELECTORS.dialogClose)) {\n this.closeGate();\n return;\n }\n if (target.closest(SELECTORS.successLink)) {\n if (this.completed) {\n this.track(this.completed, \"form\");\n }\n return;\n }\n\n const toggle = target.closest<HTMLElement>(SELECTORS.toggle);\n if (toggle) {\n const picker = toggle.closest<HTMLElement>(SELECTORS.picker);\n if (picker) {\n if (this.openPicker === picker) {\n this.closePicker(true);\n } else {\n this.showPicker(picker);\n }\n }\n return;\n }\n\n const option = target.closest<HTMLElement>(SELECTORS.option);\n if (option) {\n const item = option.closest<HTMLElement>(SELECTORS.item);\n if (item) {\n this.selectVariant(item, option);\n }\n this.closePicker(true);\n return;\n }\n\n const trigger = target.closest<HTMLAnchorElement>(SELECTORS.trigger);\n if (trigger) {\n this.onTrigger(event, trigger);\n }\n };\n\n private onTrigger(event: MouseEvent, trigger: HTMLAnchorElement): void {\n const item = trigger.closest<HTMLElement>(SELECTORS.item);\n if (!item) {\n return;\n }\n const snapshot = this.snapshot(item, trigger);\n if (!this.isGated()) {\n this.track(snapshot, \"none\");\n return;\n }\n if (this.isUnlocked()) {\n this.track(snapshot, \"session\");\n return;\n }\n // No <dialog> support: fail open rather than block the download.\n if (!this.dialog || typeof this.dialog.showModal !== \"function\") {\n this.track(snapshot, \"none\");\n return;\n }\n event.preventDefault();\n this.openGate(item, trigger);\n }\n\n private onKeyDown = (event: KeyboardEvent): void => {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n if (target.matches(SELECTORS.toggle) && (event.key === \"ArrowDown\" || event.key === \"ArrowUp\")) {\n const picker = target.closest<HTMLElement>(SELECTORS.picker);\n if (picker) {\n event.preventDefault();\n this.showPicker(picker);\n }\n return;\n }\n\n if (!this.openPicker || !target.matches(SELECTORS.list)) {\n return;\n }\n const options = this.pickerOptions(this.openPicker);\n const active = this.openPicker.querySelector<HTMLElement>(\".\" + ACTIVE_OPTION_CLASS);\n const index = active ? options.indexOf(active) : -1;\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.setActiveOption(options[Math.min(index + 1, options.length - 1)]);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n this.setActiveOption(options[Math.max(index - 1, 0)]);\n break;\n case \"Home\":\n event.preventDefault();\n this.setActiveOption(options[0]);\n break;\n case \"End\":\n event.preventDefault();\n this.setActiveOption(options[options.length - 1]);\n break;\n case \"Enter\":\n case \" \": {\n event.preventDefault();\n const item = this.openPicker.closest<HTMLElement>(SELECTORS.item);\n if (active && item) {\n this.selectVariant(item, active);\n }\n this.closePicker(true);\n break;\n }\n case \"Escape\":\n event.preventDefault();\n event.stopPropagation();\n this.closePicker(true);\n break;\n case \"Tab\":\n this.closePicker(false);\n break;\n default:\n break;\n }\n };\n\n private onDocumentPointerDown = (event: PointerEvent): void => {\n if (this.openPicker && event.target instanceof Node && !this.openPicker.contains(event.target)) {\n this.closePicker(false);\n }\n };\n\n private onDialogPointerDown = (event: PointerEvent): void => {\n this.pointerDownOnBackdrop = event.target === this.dialog;\n };\n\n private onDialogClose = (): void => {\n const trigger = this.pending ? this.pending.trigger : null;\n this.pending = null;\n this.completed = null;\n if (trigger && trigger.isConnected) {\n trigger.focus();\n }\n };\n\n private onFormSuccess = (event: Event): void => {\n if (!this.pending || !this.dialog) {\n return;\n }\n // We own the success UI: skip the runtime's redirect / inline message.\n event.preventDefault();\n\n const { snapshot } = this.pending;\n this.unlock();\n this.stripGateAria();\n this.completed = snapshot;\n\n const link = this.dialog.querySelector<HTMLAnchorElement>(SELECTORS.successLink);\n if (link) {\n link.setAttribute(\"href\", snapshot.url);\n this.setLinkBehaviour(link, snapshot);\n }\n this.setRegions(false);\n\n // Straight away, while the submit click still counts as user activation.\n const started = this.startDownload(snapshot);\n if (started) {\n this.track(snapshot, \"form\");\n this.focusSuccessHeading();\n } else {\n this.dialog.classList.add(POPUP_BLOCKED_CLASS);\n if (link) {\n link.focus();\n }\n }\n };\n\n // ── Gate dialog ───────────────────────────────────────────────────────────\n\n openGate(item: HTMLElement, trigger: HTMLAnchorElement): void {\n if (!this.dialog) {\n return;\n }\n this.closePicker(false);\n const snapshot = this.snapshot(item, trigger);\n this.pending = { snapshot, trigger };\n this.completed = null;\n\n const asset = this.dialog.querySelector<HTMLElement>(SELECTORS.dialogAsset);\n if (asset) {\n asset.textContent = snapshot.title;\n }\n this.syncHiddenFields(snapshot);\n this.dialog.classList.remove(POPUP_BLOCKED_CLASS);\n this.setRegions(true);\n\n if (!this.dialog.open) {\n this.dialog.showModal();\n }\n this.focusFirstField();\n }\n\n closeGate(): void {\n if (this.dialog && this.dialog.open) {\n this.dialog.close();\n }\n }\n\n /**\n * Form ⇄ success. The overlay page's container is the visible modal, so on success\n * the panel takes the <form>'s place inside the VTBA form root: the container's\n * background, padding and title stay. Showing the form puts the panel back.\n */\n private setRegions(showForm: boolean): void {\n const success = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogSuccess) : null;\n if (!this.dialog || !success) {\n return;\n }\n const formRoot = this.dialog.querySelector<HTMLElement>(SELECTORS.formRoot);\n const form = formRoot ? formRoot.querySelector<HTMLElement>(SELECTORS.form) : null;\n\n if (showForm) {\n success.hidden = true;\n if (this.successHome && success.parentNode !== this.successHome.parent) {\n this.successHome.parent.insertBefore(success, this.successHome.next);\n }\n if (form) {\n form.hidden = false;\n }\n return;\n }\n if (form && form.parentNode) {\n form.hidden = true;\n form.parentNode.insertBefore(success, form.nextSibling);\n }\n success.hidden = false;\n }\n\n private focusFirstField(): void {\n const region = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogForm) : null;\n if (!region) {\n return;\n }\n const fields = toArray(region.querySelectorAll<HTMLElement>(SELECTORS.focusable));\n for (let i = 0; i < fields.length; i++) {\n if (fields[i].getClientRects().length > 0) {\n fields[i].focus();\n return;\n }\n }\n }\n\n private focusSuccessHeading(): void {\n const success = this.dialog ? this.dialog.querySelector<HTMLElement>(SELECTORS.dialogSuccess) : null;\n const heading = success ? success.querySelector<HTMLElement>(\"[tabindex]\") : null;\n if (heading) {\n heading.focus();\n }\n }\n\n /**\n * Hidden inputs carrying the requested document to HubSpot, only for the\n * properties the policy names (data-lsg-download-hs-*). The form runtime collects\n * every named input at submit time.\n */\n private syncHiddenFields(snapshot: DownloadSnapshot): void {\n const form = this.dialog ? this.dialog.querySelector<HTMLFormElement>(SELECTORS.form) : null;\n if (!form) {\n return;\n }\n const fields: Array<{ key: string; property?: string; value: string }> = [\n { key: \"title\", property: this.root.dataset.lsgDownloadHsTitle, value: snapshot.title },\n { key: \"url\", property: this.root.dataset.lsgDownloadHsUrl, value: snapshot.url },\n { key: \"language\", property: this.root.dataset.lsgDownloadHsLanguage, value: snapshot.language },\n ];\n fields.forEach(({ key, property, value }) => {\n let input = form.querySelector<HTMLInputElement>(`input[data-lsg-download-field=\"${key}\"]`);\n if (!property) {\n if (input) {\n input.remove();\n }\n return;\n }\n if (!input) {\n input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.setAttribute(\"data-lsg-download-field\", key);\n form.appendChild(input);\n }\n input.name = property;\n input.setAttribute(\"data-hs-property\", property);\n input.value = value;\n });\n }\n\n private startDownload(snapshot: DownloadSnapshot): boolean {\n if (snapshot.newTab) {\n const opener = this.options.openWindow || ((url: string) => window.open(url, \"_blank\"));\n const win = opener(snapshot.url);\n if (!win) {\n return false;\n }\n try {\n win.opener = null;\n } catch (e) {\n // cross-origin: nothing to do\n }\n return true;\n }\n const anchor = document.createElement(\"a\");\n anchor.href = snapshot.url;\n if (snapshot.download) {\n anchor.setAttribute(\"download\", \"\");\n }\n anchor.style.display = \"none\";\n document.body.appendChild(anchor);\n anchor.click();\n anchor.remove();\n return true;\n }\n\n private setLinkBehaviour(link: HTMLAnchorElement, snapshot: DownloadSnapshot): void {\n if (snapshot.download) {\n link.setAttribute(\"download\", \"\");\n } else {\n link.removeAttribute(\"download\");\n }\n if (snapshot.newTab) {\n link.setAttribute(\"target\", \"_blank\");\n link.setAttribute(\"rel\", \"noopener noreferrer\");\n } else {\n link.removeAttribute(\"target\");\n link.removeAttribute(\"rel\");\n }\n }\n\n // ── Language picker ───────────────────────────────────────────────────────\n\n selectVariant(item: HTMLElement, option: HTMLElement): void {\n const url = option.getAttribute(\"data-lsg-download-url\") || \"\";\n const language = option.getAttribute(\"data-lsg-download-language\") || \"\";\n const list = option.closest<HTMLElement>(SELECTORS.list);\n if (list) {\n toArray(list.querySelectorAll<HTMLElement>(SELECTORS.option)).forEach((other) => {\n other.setAttribute(\"aria-selected\", other === option ? \"true\" : \"false\");\n });\n }\n item.setAttribute(\"data-lsg-download-url\", url);\n item.setAttribute(\"data-lsg-download-language\", language);\n const trigger = item.querySelector<HTMLAnchorElement>(SELECTORS.trigger);\n if (trigger && url) {\n trigger.setAttribute(\"href\", url);\n }\n const current = item.querySelector<HTMLElement>(SELECTORS.current);\n if (current) {\n current.textContent = (option.textContent || \"\").trim();\n }\n }\n\n private pickerOptions(picker: HTMLElement): HTMLElement[] {\n return toArray(picker.querySelectorAll<HTMLElement>(SELECTORS.option));\n }\n\n private showPicker(picker: HTMLElement): void {\n this.closePicker(false);\n const toggle = picker.querySelector<HTMLElement>(SELECTORS.toggle);\n const list = picker.querySelector<HTMLElement>(SELECTORS.list);\n if (!toggle || !list) {\n return;\n }\n this.openPicker = picker;\n list.hidden = false;\n toggle.setAttribute(\"aria-expanded\", \"true\");\n const options = this.pickerOptions(picker);\n const selected = list.querySelector<HTMLElement>('[aria-selected=\"true\"]') || options[0];\n this.setActiveOption(selected);\n list.focus();\n document.addEventListener(\"pointerdown\", this.onDocumentPointerDown, true);\n }\n\n private closePicker(returnFocus: boolean): void {\n const picker = this.openPicker;\n if (!picker) {\n return;\n }\n this.openPicker = null;\n document.removeEventListener(\"pointerdown\", this.onDocumentPointerDown, true);\n const toggle = picker.querySelector<HTMLElement>(SELECTORS.toggle);\n const list = picker.querySelector<HTMLElement>(SELECTORS.list);\n if (list) {\n list.hidden = true;\n list.removeAttribute(\"aria-activedescendant\");\n }\n this.pickerOptions(picker).forEach((option) => option.classList.remove(ACTIVE_OPTION_CLASS));\n if (toggle) {\n toggle.setAttribute(\"aria-expanded\", \"false\");\n if (returnFocus) {\n toggle.focus();\n }\n }\n }\n\n private setActiveOption(option: HTMLElement | undefined): void {\n if (!option || !this.openPicker) {\n return;\n }\n const list = this.openPicker.querySelector<HTMLElement>(SELECTORS.list);\n this.pickerOptions(this.openPicker).forEach((other) => {\n other.classList.toggle(ACTIVE_OPTION_CLASS, other === option);\n });\n if (list && option.id) {\n list.setAttribute(\"aria-activedescendant\", option.id);\n }\n option.scrollIntoView({ block: \"nearest\" });\n }\n\n // ── Tracking ──────────────────────────────────────────────────────────────\n\n private snapshot(item: HTMLElement, trigger: HTMLAnchorElement): DownloadSnapshot {\n const data = item.dataset;\n return {\n title: data.lsgDownloadTitle || \"\",\n url: absoluteUrl(trigger.getAttribute(\"href\") || data.lsgDownloadUrl || \"\"),\n type: data.lsgDownloadType || \"\",\n language: data.lsgDownloadLanguage || \"\",\n action: data.lsgDownloadAction || \"\",\n external: data.lsgDownloadExternal === \"true\",\n download: trigger.hasAttribute(\"download\"),\n newTab: trigger.getAttribute(\"target\") === \"_blank\",\n };\n }\n\n private track(snapshot: DownloadSnapshot, unlockedBy: LsgDownloadUnlockedBy): void {\n const detail: LsgDownloadTrackingDetail = {\n title: snapshot.title,\n url: snapshot.url,\n type: snapshot.type,\n language: snapshot.language,\n action: snapshot.action,\n external: snapshot.external,\n gated: this.isGated(),\n formPath: this.root.dataset.lsgDownloadFormPath || \"\",\n unlockedBy,\n libraryId: this.root.dataset.lsgDownloadLibraryId || \"\",\n };\n try {\n this.dataLayer().push({ event: \"lsg_download\", download: detail });\n } catch (e) {\n // Tracking must never block the download.\n }\n this.root.dispatchEvent(new CustomEvent(LSG_DOWNLOAD_EVENT, { bubbles: true, detail }));\n }\n\n private dataLayer(): { push: (entry: object) => unknown } {\n if (this.options.dataLayer) {\n return this.options.dataLayer;\n }\n const w = window as unknown as { dataLayer?: object[] };\n w.dataLayer = w.dataLayer || [];\n return w.dataLayer;\n }\n}\n","import React, { useEffect, useId, useRef } from \"react\";\nimport { LsgAemButton } from \"../LsgButton\";\nimport type { LsgButtonVariant } from \"../LsgButton\";\nimport { LsgDownloadLibraryController } from \"./LsgDownloadLibraryController\";\nimport type { LsgDownloadLibraryControllerOptions } from \"./LsgDownloadLibraryController\";\nimport \"./LsgDownloadLibrary.scss\";\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Types — mirror LsgDownloadLibraryModel / LsgDownloadItem / LsgDownloadVariant\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** \"open\" for PDFs and external links (new tab), \"download\" for everything else. */\nexport type LsgDownloadAction = \"download\" | \"open\";\nexport type LsgDownloadSource = \"children\" | \"static\" | \"staticExternal\";\n/** Policy \"Download button display\": a square icon, or a text button. */\nexport type LsgDownloadCtaDisplay = \"icon\" | \"label\";\n/** Palette tokens offered by the policy's \"Background color\" and \"Accent color\" style groups. */\nexport type LsgDownloadColour = \"white\" | \"light\" | \"primary\" | \"secondary\" | \"tertiary\" | \"dark\" | \"black\";\nexport type LsgDownloadAccent = LsgDownloadColour;\nexport type LsgDownloadBackground = LsgDownloadColour;\nexport type LsgDownloadTextColour = LsgDownloadColour;\n\nexport interface LsgDownloadVariant {\n languageCode: string;\n languageLabel: string;\n url: string;\n selected?: boolean;\n}\n\nexport interface LsgDownloadItem {\n id: string;\n title: string;\n url: string;\n type?: string;\n size?: string;\n description?: string;\n tags?: string[];\n imageUrl?: string;\n external?: boolean;\n action: LsgDownloadAction;\n /** Selected variant first (the model always orders them that way). */\n variants?: LsgDownloadVariant[];\n}\n\nexport interface LsgDownloadLibraryStrings {\n /** `{0}` = document title. */\n download: string;\n /** `{0}` = document title. */\n open: string;\n /** Visible text of a label-display button. */\n downloadLabel: string;\n openLabel: string;\n /** Appended (visually hidden) to a label-display \"Open\" button. */\n newTab: string;\n language: string;\n type: string;\n size: string;\n close: string;\n dialogTitle: string;\n successTitle: string;\n successText: string;\n successLinkLabel: string;\n /** `{0}` = form page path. Author (edit mode) only. */\n authorNote: string;\n emptyPlaceholder: string;\n}\n\n/** Same defaults as the HTL (i18n keys / dialog emptyText). */\nexport const LSG_DOWNLOAD_LIBRARY_STRINGS: LsgDownloadLibraryStrings = {\n download: \"Download {0}\",\n open: \"Open {0} (opens in a new tab)\",\n downloadLabel: \"Download\",\n openLabel: \"Open\",\n newTab: \"(opens in a new tab)\",\n language: \"Language\",\n type: \"Type\",\n size: \"Size\",\n close: \"Close\",\n dialogTitle: \"Complete the form to download\",\n successTitle: \"Thank you\",\n successText: \"Your download should start automatically. If it does not, use the button below.\",\n successLinkLabel: \"Download now\",\n authorNote: \"Gated by form page: {0}\",\n emptyPlaceholder: \"Configure Download Library\",\n};\n\nexport interface LsgDownloadLibraryHubspotProperties {\n title?: string;\n url?: string;\n language?: string;\n}\n\nexport interface LsgDownloadLibraryProps {\n items: LsgDownloadItem[];\n /** AEM `overlayId` (\"lsg-download-overlay-<hash>\"); also the dialog id. */\n libraryId?: string;\n source?: LsgDownloadSource;\n /** True when a valid LSG overlay (form) page is configured. */\n gated?: boolean;\n /** Overlay page path; also the session unlock key. */\n formPath?: string;\n /**\n * Policy \"Download button style\" — shape only: \"primary\" = filled, \"secondary\" = outlined\n * (the colour comes from `accent`). Other LSG Button types still render, for old policies.\n */\n ctaVariant?: LsgButtonVariant;\n /** Policy \"Download button display\". */\n ctaDisplay?: LsgDownloadCtaDisplay;\n /** Policy \"Background color\" (`lsg-download-library--bg-{token}`): the card background. */\n background?: LsgDownloadBackground;\n /** Policy \"Text color\" (`lsg-download-library--text-{token}`): all text (dropdown included) and the download icon. */\n textColour?: LsgDownloadTextColour;\n /**\n * Policy \"Accent color\" (`lsg-download-library--accent-{token}`): download button, dropdown\n * background, theme-2 rule and title hover, theme-3 title band. Unset keeps each theme's default.\n */\n accent?: LsgDownloadAccent;\n /** Policy HubSpot hidden-field property names. Leave empty to send nothing. */\n hubspotProperties?: LsgDownloadLibraryHubspotProperties;\n strings?: Partial<LsgDownloadLibraryStrings>;\n /**\n * Stands in for the overlay page's root container (`data-sly-resource` with decoration in AEM):\n * `div.cmp-container` + its Style System classes, holding the title, text and VTBA form.\n */\n form?: React.ReactNode;\n /** AEM edit mode: no JS hook, no dialog, author note instead. */\n isEditMode?: boolean;\n /** Style-system classes on the outer section. */\n className?: string;\n controllerOptions?: LsgDownloadLibraryControllerOptions;\n}\n\nconst GRID_COLUMN = \"aem-GridColumn aem-GridColumn--default--12\";\n\nconst format = (template: string, value: string): string => template.replace(\"{0}\", value);\n\n// ─────────────────────────────────────────────────────────────────────────────\n// LsgDownloadLibrary — DOM is a 1:1 copy of download-library.html\n// ─────────────────────────────────────────────────────────────────────────────\n\nexport const LsgDownloadLibrary: React.FC<LsgDownloadLibraryProps> = ({\n items,\n libraryId,\n source = \"static\",\n gated = false,\n formPath = \"\",\n ctaVariant = \"primary\",\n ctaDisplay = \"icon\",\n background,\n textColour,\n accent,\n hubspotProperties = {},\n strings: stringOverrides,\n form,\n isEditMode = false,\n className,\n controllerOptions,\n}) => {\n const strings = { ...LSG_DOWNLOAD_LIBRARY_STRINGS, ...stringOverrides };\n const reactId = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n const libId = libraryId ?? `lsg-download-overlay-${reactId}`;\n const isGated = gated && !isEditMode;\n const ready = items.length > 0;\n const labelCta = ctaDisplay === \"label\";\n const rootRef = useRef<HTMLDivElement>(null);\n\n // ── Controller (same class the AEM clientlib boots) ───────────────────────\n useEffect(() => {\n if (isEditMode || !rootRef.current) return;\n const controller = new LsgDownloadLibraryController(rootRef.current, controllerOptions);\n controller.init();\n return () => controller.destroy();\n }, [isEditMode, controllerOptions]);\n\n return (\n <section\n className={[\n \"lsg-download-library\",\n GRID_COLUMN,\n background && `lsg-download-library--bg-${background}`,\n textColour && `lsg-download-library--text-${textColour}`,\n accent && `lsg-download-library--accent-${accent}`,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <div\n ref={rootRef}\n className=\"lsg-download-library__container\"\n data-lsg-is={isEditMode ? undefined : \"download-library\"}\n data-lsg-download-library-id={libId}\n data-lsg-download-source={source}\n data-lsg-download-gated={isGated ? \"true\" : \"false\"}\n data-lsg-download-form-path={isGated ? formPath : undefined}\n data-lsg-download-dialog-id={isGated ? libId : undefined}\n data-lsg-download-hs-title={hubspotProperties.title || undefined}\n data-lsg-download-hs-url={hubspotProperties.url || undefined}\n data-lsg-download-hs-language={hubspotProperties.language || undefined}\n >\n {ready && (\n <ul className=\"lsg-download-library__items\" role=\"list\">\n {items.map((item, index) => {\n const iid = `${libId}-item-${index}`;\n const isOpen = item.action === \"open\";\n const newTab = !!item.external || isOpen;\n const variants = item.variants ?? [];\n const current = variants[0];\n\n return (\n <li className=\"lsg-download-library__item\" key={item.id}>\n <article\n className=\"lsg-download-library__card\"\n aria-labelledby={`${iid}-title`}\n data-lsg-download-item=\"\"\n data-lsg-download-id={item.id}\n data-lsg-download-title={item.title}\n data-lsg-download-type={item.type}\n data-lsg-download-action={item.action}\n data-lsg-download-external={item.external ? \"true\" : \"false\"}\n data-lsg-download-url={item.url}\n data-lsg-download-language={current?.languageCode}\n >\n <div\n className={`lsg-download-library__media${\n item.imageUrl ? \"\" : \" lsg-download-library__media--placeholder\"\n }`}\n >\n {item.imageUrl ? (\n <img\n className=\"lsg-download-library__image\"\n src={item.imageUrl}\n alt=\"\"\n loading=\"lazy\"\n decoding=\"async\"\n />\n ) : (\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--document\"\n aria-hidden=\"true\"\n />\n )}\n </div>\n\n <div className=\"lsg-download-library__body\">\n <h3 className=\"lsg-download-library__title\" id={`${iid}-title`}>\n {item.title}\n </h3>\n {item.description && (\n <p className=\"lsg-download-library__description\">{item.description}</p>\n )}\n {(item.type || item.size) && (\n <dl className=\"lsg-download-library__meta\">\n {item.type && (\n <div className=\"lsg-download-library__meta-item lsg-download-library__meta-item--type\">\n <dt className=\"lsg-visually-hidden\">{strings.type}</dt>\n <dd>{item.type}</dd>\n </div>\n )}\n {item.size && (\n <div className=\"lsg-download-library__meta-item lsg-download-library__meta-item--size\">\n <dt className=\"lsg-visually-hidden\">{strings.size}</dt>\n <dd>{item.size}</dd>\n </div>\n )}\n </dl>\n )}\n </div>\n\n <div className=\"lsg-download-library__actions\">\n <LsgAemButton\n variant={ctaVariant}\n wrapperClassName=\"lsg-download-library__cta\"\n className={`${labelCta ? \"\" : \"lsg-button--icon \"}lsg-download-library__trigger`}\n href={item.url}\n data-lsg-download-trigger=\"\"\n aria-haspopup={isGated ? \"dialog\" : undefined}\n aria-controls={isGated ? libId : undefined}\n download={!item.external && !isOpen ? \"\" : undefined}\n target={newTab ? \"_blank\" : undefined}\n rel={newTab ? \"noopener noreferrer\" : undefined}\n icon={\n labelCta ? undefined : (\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--download\"\n aria-hidden=\"true\"\n />\n )\n }\n >\n {labelCta ? (\n <>\n {isOpen ? strings.openLabel : strings.downloadLabel}\n <span className=\"lsg-visually-hidden\">\n {\" \"}\n {item.title}\n {isOpen && ` ${strings.newTab}`}\n </span>\n </>\n ) : (\n <span className=\"lsg-visually-hidden\">\n {format(isOpen ? strings.open : strings.download, item.title)}\n </span>\n )}\n </LsgAemButton>\n\n {variants.length > 1 && (\n <div className=\"lsg-download-library__language\" data-lsg-download-language-picker=\"\">\n <span className=\"lsg-visually-hidden\" id={`${iid}-lang-label`}>\n {strings.language}\n </span>\n <button\n type=\"button\"\n className=\"lsg-download-library__language-toggle\"\n id={`${iid}-lang-toggle`}\n aria-haspopup=\"listbox\"\n aria-expanded=\"false\"\n aria-controls={`${iid}-lang-list`}\n aria-labelledby={`${iid}-lang-label ${iid}-lang-toggle`}\n data-lsg-download-language-toggle=\"\"\n >\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--chevron\"\n aria-hidden=\"true\"\n />\n <span\n className=\"lsg-download-library__language-current\"\n data-lsg-download-language-current=\"\"\n >\n {current?.languageLabel}\n </span>\n </button>\n <ul\n className=\"lsg-download-library__language-list\"\n id={`${iid}-lang-list`}\n role=\"listbox\"\n tabIndex={-1}\n aria-labelledby={`${iid}-lang-label`}\n hidden\n >\n {variants.map((variant, variantIndex) => (\n <li\n key={variant.languageCode}\n className=\"lsg-download-library__language-option\"\n role=\"option\"\n id={`${iid}-lang-${variantIndex}`}\n aria-selected={variant.selected ? \"true\" : \"false\"}\n data-lsg-download-language={variant.languageCode}\n data-lsg-download-url={variant.url}\n >\n {variant.languageLabel}\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n </article>\n </li>\n );\n })}\n </ul>\n )}\n\n {!ready && isEditMode && (\n <div className=\"cq-placeholder\" data-emptytext={strings.emptyPlaceholder} />\n )}\n {gated && isEditMode && (\n <p className=\"lsg-download-library__author-note\">{format(strings.authorNote, formPath)}</p>\n )}\n\n {isGated && (\n <dialog\n className=\"lsg-download-library__dialog\"\n id={libId}\n aria-labelledby={`${libId}-title`}\n data-lsg-download-dialog=\"\"\n >\n {/* The overlay page's root container (the `form` prop here) is the visible modal;\n the dialog only adds the backdrop, a close button and a screen-reader-only name. */}\n <div className=\"lsg-download-library__dialog-panel\">\n <button\n type=\"button\"\n className=\"lsg-download-library__dialog-close\"\n aria-label={strings.close}\n data-lsg-download-dialog-close=\"\"\n >\n <span\n className=\"lsg-download-library__icon lsg-download-library__icon--close\"\n aria-hidden=\"true\"\n />\n </button>\n <div className=\"lsg-download-library__dialog-header lsg-visually-hidden\">\n <h2 className=\"lsg-download-library__dialog-title\" id={`${libId}-title`}>\n {strings.dialogTitle}\n </h2>\n <p className=\"lsg-download-library__dialog-asset\" data-lsg-download-dialog-asset=\"\" />\n </div>\n <div className=\"lsg-download-library__dialog-form\" data-lsg-download-dialog-form=\"\">\n {form}\n </div>\n <div className=\"lsg-download-library__dialog-success\" data-lsg-download-dialog-success=\"\" hidden>\n <h3 className=\"lsg-download-library__dialog-success-title\" tabIndex={-1}>\n {strings.successTitle}\n </h3>\n <p className=\"lsg-download-library__dialog-success-text\">{strings.successText}</p>\n <LsgAemButton\n variant={ctaVariant}\n wrapperClassName=\"lsg-download-library__success-cta\"\n className=\"lsg-download-library__success-link\"\n href=\"#\"\n data-lsg-download-success-link=\"\"\n >\n {strings.successLinkLabel}\n </LsgAemButton>\n </div>\n </div>\n </dialog>\n )}\n </div>\n </section>\n );\n};\n","import { LsgDownloadLibraryController } from \"./LsgDownloadLibraryController\";\n\n/**\n * AEM entry: wires every published download library on the page. The HTL leaves\n * out data-lsg-is in edit mode, so authors get the static markup. Safe to call more\n * than once (the controller marks its root as ready).\n */\nexport function bootLsgDownloadLibrary(root: Window = window): void {\n root.document\n .querySelectorAll<HTMLElement>('[data-lsg-is=\"download-library\"]')\n .forEach((element) => new LsgDownloadLibraryController(element).init());\n}\n","import React from \"react\";\nimport \"./LsgFormPolicyNotice.scss\";\n\nexport interface LsgFormPolicyNoticeProps {\n /** HTML content from AEM rich-text editor */\n text: string;\n /** AEM style policy — adds cmp-text--policy-notice-icon modifier */\n policyNoticeIcon?: boolean;\n}\n\nexport const LsgFormPolicyNotice: React.FC<LsgFormPolicyNoticeProps> = ({\n text,\n policyNoticeIcon = false,\n}) => (\n <div\n className={[\n \"cmp-text\",\n policyNoticeIcon ? \"cmp-text--policy-notice-icon\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n // eslint-disable-next-line react/no-danger -- mirrors AEM rich-text output\n dangerouslySetInnerHTML={{ __html: text }}\n />\n);\n","import React from \"react\";\n\nimport {\n LsgBanner,\n LsgBreadcrumb,\n LsgButton,\n LsgCard,\n LsgCards,\n LsgGeneratedList,\n LsgPagination,\n LsgBlogOverview,\n LsgCarousel,\n LsgFooter,\n LsgFormContainer,\n LsgFormFieldConsent,\n LsgFormFieldCountry,\n LsgFormFieldEmail,\n LsgFormFieldSelect,\n LsgFormFieldTel,\n LsgFormFieldText,\n LsgFormFieldTextarea,\n LsgFormPolicyNotice,\n LsgFormStep,\n LsgHeader,\n LsgHero,\n LsgTabs,\n LsgTable,\n LsgLanguageSwitcher,\n LsgLogo,\n LsgNavigation,\n LsgQuickLinks,\n LsgSearchOverlay,\n LsgSearchTrigger,\n LsgSocialMediaIcons,\n} from \"../components/lsg\";\n\nconst BASE_COMPONENTS = {\n LsgButton,\n LsgBanner,\n LsgCarousel,\n LsgCard,\n LsgCards,\n LsgGeneratedList,\n LsgPagination,\n LsgBlogOverview,\n LsgBreadcrumb,\n LsgLogo,\n LsgNavigation,\n LsgLanguageSwitcher,\n LsgSearchTrigger,\n LsgSearchOverlay,\n LsgHeader,\n LsgQuickLinks,\n LsgSocialMediaIcons,\n LsgFooter,\n LsgHero,\n LsgTabs,\n LsgTable,\n LsgFormContainer,\n LsgFormFieldText,\n LsgFormFieldEmail,\n LsgFormFieldTel,\n LsgFormFieldSelect,\n LsgFormFieldCountry,\n LsgFormFieldTextarea,\n LsgFormFieldConsent,\n LsgFormPolicyNotice,\n LsgFormStep,\n} as const;\n\ntype BaseComponents = typeof BASE_COMPONENTS;\n\nfunction createThemeComponent<Props extends object>(\n themeName: string,\n componentName: string,\n Component: React.ComponentType<Props>,\n): React.FC<Props> {\n const WrappedComponent: React.FC<Props> = (props) => (\n <div\n className={[\n \"lsg-themed-component\",\n `lsg-themed-component--${themeName}`,\n `lsg-themed-component--${componentName}`,\n ].join(\" \")}\n >\n <Component {...props} />\n </div>\n );\n\n WrappedComponent.displayName = `${themeName}-${componentName}`;\n\n return WrappedComponent;\n}\n\nexport function createThemeComponents(themeName: string): BaseComponents {\n return {\n LsgButton: createThemeComponent(themeName, \"button\", BASE_COMPONENTS.LsgButton),\n LsgBanner: createThemeComponent(themeName, \"banner\", BASE_COMPONENTS.LsgBanner),\n LsgCarousel: createThemeComponent(themeName, \"carousel\", BASE_COMPONENTS.LsgCarousel),\n LsgCard: createThemeComponent(themeName, \"card\", BASE_COMPONENTS.LsgCard),\n LsgCards: createThemeComponent(themeName, \"cards\", BASE_COMPONENTS.LsgCards),\n LsgGeneratedList: createThemeComponent(\n themeName,\n \"generated-list\",\n BASE_COMPONENTS.LsgGeneratedList,\n ),\n LsgPagination: createThemeComponent(themeName, \"pagination\", BASE_COMPONENTS.LsgPagination),\n LsgBlogOverview: createThemeComponent(\n themeName,\n \"blog-overview\",\n BASE_COMPONENTS.LsgBlogOverview,\n ),\n LsgBreadcrumb: createThemeComponent(themeName, \"breadcrumb\", BASE_COMPONENTS.LsgBreadcrumb),\n LsgLogo: createThemeComponent(themeName, \"logo\", BASE_COMPONENTS.LsgLogo),\n LsgNavigation: createThemeComponent(themeName, \"navigation\", BASE_COMPONENTS.LsgNavigation),\n LsgLanguageSwitcher: createThemeComponent(\n themeName,\n \"language-switcher\",\n BASE_COMPONENTS.LsgLanguageSwitcher,\n ),\n LsgSearchTrigger: createThemeComponent(\n themeName,\n \"search-trigger\",\n BASE_COMPONENTS.LsgSearchTrigger,\n ),\n LsgSearchOverlay: createThemeComponent(\n themeName,\n \"search-overlay\",\n BASE_COMPONENTS.LsgSearchOverlay,\n ),\n LsgHeader: createThemeComponent(themeName, \"header\", BASE_COMPONENTS.LsgHeader),\n LsgQuickLinks: createThemeComponent(themeName, \"quick-links\", BASE_COMPONENTS.LsgQuickLinks),\n LsgSocialMediaIcons: createThemeComponent(\n themeName,\n \"social-media-icons\",\n BASE_COMPONENTS.LsgSocialMediaIcons,\n ),\n LsgFooter: createThemeComponent(themeName, \"footer\", BASE_COMPONENTS.LsgFooter),\n LsgHero: createThemeComponent(themeName, \"hero\", BASE_COMPONENTS.LsgHero),\n LsgFormContainer: createThemeComponent(themeName, \"form-container\", BASE_COMPONENTS.LsgFormContainer),\n LsgFormFieldText: createThemeComponent(themeName, \"form-field-text\", BASE_COMPONENTS.LsgFormFieldText),\n LsgFormFieldEmail: createThemeComponent(themeName, \"form-field-email\", BASE_COMPONENTS.LsgFormFieldEmail),\n LsgFormFieldTel: createThemeComponent(themeName, \"form-field-tel\", BASE_COMPONENTS.LsgFormFieldTel),\n LsgFormFieldSelect: createThemeComponent(themeName, \"form-field-select\", BASE_COMPONENTS.LsgFormFieldSelect),\n LsgFormFieldCountry: createThemeComponent(themeName, \"form-field-country\", BASE_COMPONENTS.LsgFormFieldCountry),\n LsgFormFieldTextarea: createThemeComponent(themeName, \"form-field-textarea\", BASE_COMPONENTS.LsgFormFieldTextarea),\n LsgFormFieldConsent: createThemeComponent(themeName, \"form-field-consent\", BASE_COMPONENTS.LsgFormFieldConsent),\n LsgFormPolicyNotice: createThemeComponent(themeName, \"form-policy-notice\", BASE_COMPONENTS.LsgFormPolicyNotice),\n LsgFormStep: createThemeComponent(themeName, \"form-step\", BASE_COMPONENTS.LsgFormStep),\n LsgTabs: createThemeComponent(themeName, \"tabs\", BASE_COMPONENTS.LsgTabs),\n LsgTable: createThemeComponent(themeName, \"table\", BASE_COMPONENTS.LsgTable),\n };\n}\n","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme1Components = createThemeComponents(\"theme-1\");\n\nexport const {\n LsgButton: Theme1LsgButton,\n LsgBanner: Theme1LsgBanner,\n LsgCarousel: Theme1LsgCarousel,\n LsgCard: Theme1LsgCard,\n LsgCards: Theme1LsgCards,\n LsgGeneratedList: Theme1LsgGeneratedList,\n LsgPagination: Theme1LsgPagination,\n LsgBlogOverview: Theme1LsgBlogOverview,\n LsgBreadcrumb: Theme1LsgBreadcrumb,\n LsgLogo: Theme1LsgLogo,\n LsgNavigation: Theme1LsgNavigation,\n LsgLanguageSwitcher: Theme1LsgLanguageSwitcher,\n LsgSearchTrigger: Theme1LsgSearchTrigger,\n LsgSearchOverlay: Theme1LsgSearchOverlay,\n LsgHeader: Theme1LsgHeader,\n LsgQuickLinks: Theme1LsgQuickLinks,\n LsgSocialMediaIcons: Theme1LsgSocialMediaIcons,\n LsgFooter: Theme1LsgFooter,\n LsgHero: Theme1LsgHero,\n LsgTabs: Theme1LsgTabs,\n LsgTable: Theme1LsgTable,\n // Form components\n LsgFormContainer: Theme1LsgFormContainer,\n LsgFormFieldText: Theme1LsgFormFieldText,\n LsgFormFieldEmail: Theme1LsgFormFieldEmail,\n LsgFormFieldTel: Theme1LsgFormFieldTel,\n LsgFormFieldTextarea: Theme1LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme1LsgFormFieldSelect,\n LsgFormFieldCountry: Theme1LsgFormFieldCountry,\n LsgFormFieldConsent: Theme1LsgFormFieldConsent,\n LsgFormPolicyNotice: Theme1LsgFormPolicyNotice,\n LsgFormStep: Theme1LsgFormStep,\n} = theme1Components;","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme2Components = createThemeComponents(\"theme-2\");\n\nexport const {\n LsgButton: Theme2LsgButton,\n LsgBanner: Theme2LsgBanner,\n LsgCarousel: Theme2LsgCarousel,\n LsgCard: Theme2LsgCard,\n LsgCards: Theme2LsgCards,\n LsgGeneratedList: Theme2LsgGeneratedList,\n LsgPagination: Theme2LsgPagination,\n LsgBlogOverview: Theme2LsgBlogOverview,\n LsgBreadcrumb: Theme2LsgBreadcrumb,\n LsgLogo: Theme2LsgLogo,\n LsgNavigation: Theme2LsgNavigation,\n LsgLanguageSwitcher: Theme2LsgLanguageSwitcher,\n LsgSearchTrigger: Theme2LsgSearchTrigger,\n LsgSearchOverlay: Theme2LsgSearchOverlay,\n LsgHeader: Theme2LsgHeader,\n LsgQuickLinks: Theme2LsgQuickLinks,\n LsgSocialMediaIcons: Theme2LsgSocialMediaIcons,\n LsgFooter: Theme2LsgFooter,\n LsgHero: Theme2LsgHero,\n LsgTable: Theme2LsgTable,\n // Form components\n LsgFormContainer: Theme2LsgFormContainer,\n LsgFormFieldText: Theme2LsgFormFieldText,\n LsgFormFieldEmail: Theme2LsgFormFieldEmail,\n LsgFormFieldTel: Theme2LsgFormFieldTel,\n LsgFormFieldTextarea: Theme2LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme2LsgFormFieldSelect,\n LsgFormFieldCountry: Theme2LsgFormFieldCountry,\n LsgFormFieldConsent: Theme2LsgFormFieldConsent,\n LsgFormStep: Theme2LsgFormStep,\n} = theme2Components;","import { createThemeComponents } from \"../createThemeComponents\";\n\nexport const theme3Components = createThemeComponents(\"theme-3\");\n\nexport const {\n LsgButton: Theme3LsgButton,\n LsgBanner: Theme3LsgBanner,\n LsgCarousel: Theme3LsgCarousel,\n LsgCard: Theme3LsgCard,\n LsgCards: Theme3LsgCards,\n LsgGeneratedList: Theme3LsgGeneratedList,\n LsgPagination: Theme3LsgPagination,\n LsgBlogOverview: Theme3LsgBlogOverview,\n LsgBreadcrumb: Theme3LsgBreadcrumb,\n LsgLogo: Theme3LsgLogo,\n LsgNavigation: Theme3LsgNavigation,\n LsgLanguageSwitcher: Theme3LsgLanguageSwitcher,\n LsgSearchTrigger: Theme3LsgSearchTrigger,\n LsgSearchOverlay: Theme3LsgSearchOverlay,\n LsgHeader: Theme3LsgHeader,\n LsgQuickLinks: Theme3LsgQuickLinks,\n LsgSocialMediaIcons: Theme3LsgSocialMediaIcons,\n LsgFooter: Theme3LsgFooter,\n LsgHero: Theme3LsgHero,\n LsgTable: Theme3LsgTable,\n // Form components\n LsgFormContainer: Theme3LsgFormContainer,\n LsgFormFieldText: Theme3LsgFormFieldText,\n LsgFormFieldEmail: Theme3LsgFormFieldEmail,\n LsgFormFieldTel: Theme3LsgFormFieldTel,\n LsgFormFieldTextarea: Theme3LsgFormFieldTextarea,\n LsgFormFieldSelect: Theme3LsgFormFieldSelect,\n LsgFormFieldCountry: Theme3LsgFormFieldCountry,\n LsgFormFieldConsent: Theme3LsgFormFieldConsent,\n LsgFormStep: Theme3LsgFormStep,\n} = theme3Components;"],"names":["LsgButton","_a","children","_b","variant","_c","disabled","href","onClick","_d","type","_e","className","_f","external","classNames","concat","filter","Boolean","join","React","createElement","_extends","undefined","target","rel","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","SuppressedError","error","suppressed","message","Error","name","LsgAemButton","wrapperClassName","icon","anchorProps","GRID_COLUMN","AemGroup","styleClasses","columnClassName","componentClass","styleClass","AemTitle","Tag","colour","AemText","id","AemButton","cta","label","videoMimeType","url","path","split","toLowerCase","endsWith","LsgBanner","heading","preTitle","eyebrow","body","copy","ctas","preTitleColour","headingColour","bodyColour","mediaType","imageUrl","imageAlt","mediaHref","mediaTarget","videoUrl","videoPoster","videoControls","videoAutoPlay","videoMuted","videoLoop","_g","layout","_h","mobileMediaPosition","background","accent","_j","headingTag","textId","useId","replace","resolvedPreTitle","resolvedBody","actions","slice","resolvedMediaType","hasMedia","picture","src","alt","loading","poster","autoPlay","muted","loop","controls","playsInline","tag","map","action","index","key","isSafeUrl","lower","trim","startsWith","includes","LsgImage","srcset","sources","width","height","srcUriTemplate","lazyEnabled","displayPopupTitle","dataLayer","assetId","dmImage","tags","title","description","caption","text","visibleTags","Array","isArray","visibleSources","source","rootClass","safeHref","linkLabel","showTitle","showCaption","String","itemScope","itemType","media","srcSet","itemProp","content","buildUrl","base","params","url_1","URL","keys","forEach","searchParams","set","toString","getEmbedInfo","opts","host","hostname","pathname","get","test","autoplay","mute","playlist","baseHost","provider","embedUrl","match","PlayIcon","viewBox","fill","xmlns","focusable","cx","cy","r","fillOpacity","points","LsgVideo","onPlay","displayMode","showTags","_k","_l","useState","isRevealed","setIsRevealed","hasVideoSource","embedInfo","isEmbed","isNativeSource","showMedia","handleActivate","preventDefault","playLabel","renderPlayControl","allow","referrerPolicy","allowFullScreen","Fragment","isNumber","subject","isString","isBoolean","isObject","mathAbs","Math","abs","mathSign","sign","deltaAbs","valueB","valueA","factorAbs","diff","roundToTwoDecimals","num","round","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","arrayFromNumber","startAt","from","_","object","objectsMergeDeep","objectA","objectB","reduce","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","LsgCarouselController","viewport","elements","options","_this","embla","scrollPrev","canScrollPrev","lastSnap","scrollSnapList","scrollTo","scrollNext","canScrollNext","syncSelectedState","selected","selectedScrollSnap","paginationBtns","button","active","classList","toggle","setAttribute","els","EmblaCarousel","align","containScroll","direction","skipSnaps","slidesToScroll","paginationHandlers","prevBtn","addEventListener","nextBtn","on","defineProperty","destroy","removeEventListener","off","mediaTypeFor","item","directionForLayout","LsgCarousel","items","ariaLabel","rootRef","useRef","viewportRef","prevBtnRef","nextBtnRef","dotsRef","controllerRef","HeadingTag","isCarousel","carouselDirection","useEffect","current","querySelectorAll","rootClasses","ref","dir","role","cardVariantClass","LsgCard","subtitle","iconUrl","iconAlt","resolvedIconUrl","actionLabel","cardClassName","LsgCards","cards","columns","listClassName","card","LsgGeneratedList","cardVariant","maxColumns","DEFAULT_LABELS","nav","first","previous","next","last","page","getLsgPaginationRange","currentPage","totalPages","siblingCount","min","pages","Set","add","sorted","sort","a","b","range","push","GLYPHS","chevron","arrow","bar","PaginationIcon","kind","glyphs","mirrored","transform","entries","d","LsgPagination","onPageChange","truncate","showFirstLast","labels","goTo","control","iconFirst","defaultStatusLabel","LsgBlogOverview","rows","paginationLabels","truncatePages","statusLabel","setPage","status","setStatus","pageSize","ceil","pageItems","handlePageChange","nextPage","root","getBoundingClientRect","top","reduceMotion","window","matchMedia","matches","scrollIntoView","behavior","block","CARD_VARIANTS","isRecord","value","toColumns","parseInt","toCardVariant","find","toItem","raw","referenceTitle","image","referenceImage","referencePreTitle","referenceSubtitle","referenceText","encodeURI","mapAemGeneratedListJson","json","data","LSG_ICON_PATHS","bars","chevronLeft","chevronRight","close","globe","home","search","LsgIcon","isSafeHref","BreadcrumbSeparator","LsgBreadcrumb","showBreadcrumbs","includeHome","homeHref","homeLabel","visibleItems","rootClassName","safeHomeHref","isCurrent","LsgLogo","LsgNavigation","onItemClick","onItemHover","renderItems","navItems","level","hasChildren","open","onMouseEnter","event","preserveAspectRatio","stroke","strokeWidth","strokeLinecap","strokeLinejoin","ChevronIcon","LsgLanguageSwitcher","currentLanguage","languages","onLanguageChange","isOpen","setIsOpen","containerRef","reactId","triggerId","dropdownId","handleClick","contains","document","handleKey","prev","lang","code","SearchIcon","x1","y1","x2","y2","LsgSearchTrigger","targetId","CloseIcon","LsgSearchOverlay","placeholder","onClose","onSearch","inputRef","inputId","focus","handleSubmit","query","overlayClass","style","position","inset","cursor","onSubmit","htmlFor","autoComplete","SEARCH_OVERLAY_ID","LsgHeaderIcon","getItemByPath","activePath","depth","currentItems","currentItem","getItemsAtLevel","getMegaColumns","maxDepth","activeItem","isCurrentOrActiveAtLevel","isSelectedAtLevel","hasOpenNavItem","some","clearMegaMenuBranch","scope","HTMLElement","remove","column","activateMegaMenuItem","parentColumn","parentElement","openItem","querySelector","HeaderActionButton","LsgHeader","logo","searchLabel","searchPlaceholder","size","menuOpen","mobileLevel","mobileSelectedLabel","onMenuToggle","onNavItemHover","onDropdownClose","onMegaItemHover","onMobileItemClick","onMobileBreadcrumbClick","searchOpen","setSearchOpen","headerRef","mobileOpen","mobileItems","mobileBackLabel","dropdownOpen","closeOnOutsidePointerDown","megaItems","removeListeners","onFocusIn","removeListener","openSearch","renderActions","showMenu","renderMegaPanel","columnItems","columnIndex","renderMobileMenu","isSelected","LsgQuickLinks","links","link","platformIcons","linkedin","twitter","facebook","instagram","youtube","LsgSocialMediaIcons","platform","PhoneIcon","FaxIcon","MailIcon","LocationIcon","AiBadge","SocialIcon","icons","SocialIconsRow","l","color","display","alignItems","opacity","LsgFooter","simpleTwoRow","brandLine","complexColumns","showAiBadge","cookieSetting","contact","_m","quickLinks","copyright","colHeadings","socialLinks","_o","socialPosition","_p","year","Date","getFullYear","copyrightText","is3col","headings","about","contactAlt","bottomTopBar","bottomBar","address","phone","fax","email","clampNumber","number","isNaN","LsgHeroController","autoplayTimer","contentObserver","rafId","startAutoplay","handleScrollDown","scrollDownTarget","stopAutoplay","setInterval","autoplayInterval","clearInterval","transition","mount","scrollDownBtn","requestAnimationFrame","isConnected","section","closest","axis","getComputedStyle","getPropertyValue","plugins","EmblaCarouselFade","contentWrapper","ResizeObserver","setHeight_1","el","setProperty","offsetHeight","observe","reInit","cancelAnimationFrame","disconnect","LsgHeroCard","imageSrc","videoSrc","youtubeId","vimeoId","cardBackground","cardColor","total","videoReady","setVideoReady","hasYoutube","hasVimeo","hasDam","youtubeEmbedSrc","vimeoEmbedSrc","articleClasses","onCanPlay","tabIndex","LsgHero","slides","showArrows","enableScrollDown","scrollDownText","sectionRef","useCallback","nextElementSibling","sectionClasses","slide","MOBILE_MEDIA_QUERY","SCROLL_EPSILON","CHEVRON_SVG","LsgTabs","activeId","accessibilityLabel","selectedId","setSelectedId","collapsed","setCollapsed","isMobile","setIsMobile","scrollStart","setScrollStart","scrollEnd","setScrollEnd","tabRefs","stripRef","isVertical","selectedIndex","findIndex","mql","sync","updateArrows","strip","offset","scrollTop","scrollLeft","visible","clientHeight","clientWidth","scrollHeight","scrollWidth","observer","cancelled","fonts","ready","then","scrollStrip","step","onRootClick","currentTarget","rect","beforeMidpoint","clientY","clientX","left","select","moveFocus","tab","inline","press","onKeyDown","onScroll","isActive","node","LsgTable","headers","headerBackground","accentColors","noAlternatingRows","tableStyle","minWidth","cell","row","rowIndex","cellIndex","LsgFormFieldText","helpText","defaultValue","required","autocomplete","minLength","maxLength","helpId","errorId","ariaDescribedBy","hidden","LsgFormFieldEmail","be","Te","Ae","Ee","ve","te","Fe","re","$e","xe","ze","Se","ie","Ge","ne","Ke","ae","H","B","Je","We","qe","Ze","Qe","ke","Xe","Z","COUNTRIES","defaultCountries","c","iso2","dialCode","DEFAULT_ISO2","flagEmoji","toUpperCase","ch","fromCodePoint","charCodeAt","findCountry","initTelPickers","inputs","input","enhance","getTelValue","dial","getAttribute","national","initialIso2","wrapper","insertBefore","appendChild","dropdown","list","applySelected","country","textContent","flag","renderList","f","digits","li","idx","activeElement","LsgFormFieldTel","pattern","defaultCountry","fieldRef","LsgFormFieldSelect","opt","COUNTRY_FIXTURE","LsgFormFieldCountry","countries","LsgFormFieldTextarea","LsgFormFieldConsent","dangerouslySetInnerHTML","__html","LsgFormStep","stepId","LsgFormContainer","multiStep","currentStep","steps","formError","successMessage","method","noValidate","stepTitle","VTBA_FORM_EVENTS","success","LSG_DOWNLOAD_EVENT","LSG_DOWNLOAD_UNLOCK_KEY_PREFIX","SELECTORS","trigger","picker","option","dialog","dialogClose","dialogAsset","dialogForm","dialogSuccess","successLink","formRoot","form","hiddenField","POPUP_BLOCKED_CLASS","ACTIVE_OPTION_CLASS","memoryUnlocks","defaultStorage","sessionStorage","toArray","absoluteUrl","location","LsgDownloadLibraryController","pending","completed","openPicker","pointerDownOnBackdrop","Element","closeGate","track","closePicker","showPicker","selectVariant","onTrigger","pickerOptions","setActiveOption","stopPropagation","onDocumentPointerDown","Node","onDialogPointerDown","onDialogClose","onFormSuccess","snapshot","unlock","stripGateAria","setLinkBehaviour","setRegions","started","startDownload","focusSuccessHeading","successHome","parentNode","parent","nextSibling","init","dataset","lsgDownloadReady","isGated","isUnlocked","lsgDownloadGated","unlockKey","has","storage","getItem","setItem","lsgDownloadFormPath","lsgDownloadLibraryId","removeAttribute","showModal","openGate","asset","syncHiddenFields","focusFirstField","showForm","region","fields","getClientRects","property","lsgDownloadHsTitle","lsgDownloadHsUrl","lsgDownloadHsLanguage","language","newTab","opener_1","openWindow","win","opener","anchor","download","click","other","returnFocus","lsgDownloadTitle","lsgDownloadUrl","lsgDownloadType","lsgDownloadLanguage","lsgDownloadAction","lsgDownloadExternal","hasAttribute","unlockedBy","detail","gated","formPath","libraryId","dispatchEvent","CustomEvent","bubbles","w","LSG_DOWNLOAD_LIBRARY_STRINGS","downloadLabel","openLabel","dialogTitle","successTitle","successText","successLinkLabel","authorNote","emptyPlaceholder","format","template","LsgDownloadLibrary","ctaVariant","ctaDisplay","textColour","hubspotProperties","stringOverrides","isEditMode","controllerOptions","strings","libId","labelCta","controller","iid","variants","languageCode","decoding","languageLabel","variantIndex","bootLsgDownloadLibrary","element","LsgFormPolicyNotice","policyNoticeIcon","BASE_COMPONENTS","createThemeComponent","themeName","componentName","Component","WrappedComponent","props","displayName","createThemeComponents","theme1Components","Theme1LsgButton","Theme1LsgBanner","Theme1LsgCarousel","Theme1LsgCard","Theme1LsgCards","Theme1LsgGeneratedList","Theme1LsgPagination","Theme1LsgBlogOverview","Theme1LsgBreadcrumb","Theme1LsgLogo","Theme1LsgNavigation","Theme1LsgLanguageSwitcher","Theme1LsgSearchTrigger","Theme1LsgSearchOverlay","Theme1LsgHeader","Theme1LsgQuickLinks","Theme1LsgSocialMediaIcons","Theme1LsgFooter","Theme1LsgHero","Theme1LsgTable","theme2Components","Theme2LsgButton","Theme2LsgBanner","Theme2LsgCarousel","Theme2LsgCard","Theme2LsgCards","Theme2LsgGeneratedList","Theme2LsgPagination","Theme2LsgBlogOverview","Theme2LsgBreadcrumb","Theme2LsgLogo","Theme2LsgNavigation","Theme2LsgLanguageSwitcher","Theme2LsgSearchTrigger","Theme2LsgSearchOverlay","Theme2LsgHeader","Theme2LsgQuickLinks","Theme2LsgSocialMediaIcons","Theme2LsgFooter","Theme2LsgHero","Theme2LsgTable","theme3Components","Theme3LsgButton","Theme3LsgBanner","Theme3LsgCarousel","Theme3LsgCard","Theme3LsgCards","Theme3LsgGeneratedList","Theme3LsgPagination","Theme3LsgBlogOverview","Theme3LsgBreadcrumb","Theme3LsgLogo","Theme3LsgNavigation","Theme3LsgLanguageSwitcher","Theme3LsgSearchTrigger","Theme3LsgSearchOverlay","Theme3LsgHeader","Theme3LsgQuickLinks","Theme3LsgSocialMediaIcons","Theme3LsgFooter","Theme3LsgHero","Theme3LsgTable"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[1,6,26,34]}