diff --git a/custom_components/linus_dashboard/www/linus-strategy.js b/custom_components/linus_dashboard/www/linus-strategy.js index 5b963d3..f895366 100644 --- a/custom_components/linus_dashboard/www/linus-strategy.js +++ b/custom_components/linus_dashboard/www/linus-strategy.js @@ -1385,6 +1385,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ ClimateCard: () => (/* binding */ ClimateCard) /* harmony export */ }); /* harmony import */ var _AbstractCard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AbstractCard */ "./src/cards/AbstractCard.ts"); +/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Helper */ "./src/Helper.ts"); var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); 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"); @@ -1392,6 +1393,7 @@ var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || }; var _ClimateCard_defaultConfig; + // noinspection JSUnusedGlobalSymbols Class is dynamically imported. /** * Climate Card Class @@ -1418,47 +1420,35 @@ class ClimateCard extends _AbstractCard__WEBPACK_IMPORTED_MODULE_0__.AbstractCar * @private */ _ClimateCard_defaultConfig.set(this, { - type: "thermostat", + type: "tile", icon: undefined, show_current_as_primary: true, vertical: false, - features: [ - { - type: "target-temperature" - }, - { - type: "climate-preset-modes", - style: "icons", - preset_modes: ["home", "eco", "comfort", "away", "boost"] - }, - { - type: "climate-hvac-modes", - hvac_modes: [ - "auto", - "heat_cool", - "heat", - "cool", - "dry", - "fan_only", - "off", - ] - }, - { - type: "climate-fan-modes", - style: "icons", - fan_modes: [ - "off", - "low", - "medium", - "high", - ] - } - ], + features: [], layout_options: { grid_columns: 2, grid_rows: 1, }, }); + const { preset_modes, hvac_modes, fan_modes } = _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.getEntityState(entity.entity_id)?.attributes ?? {}; + if (preset_modes) { + __classPrivateFieldGet(this, _ClimateCard_defaultConfig, "f").features.push({ + type: "climate-preset-modes", + preset_modes: preset_modes + }); + } + else if (hvac_modes) { + __classPrivateFieldGet(this, _ClimateCard_defaultConfig, "f").features.push({ + type: "climate-hvac-modes", + hvac_modes: hvac_modes + }); + } + else if (fan_modes) { + __classPrivateFieldGet(this, _ClimateCard_defaultConfig, "f").features.push({ + type: "climate-fan-modes", + fan_modes: fan_modes + }); + } this.config = Object.assign(this.config, __classPrivateFieldGet(this, _ClimateCard_defaultConfig, "f"), options); } } @@ -1747,6 +1737,75 @@ _FanCard_defaultConfig = new WeakMap(); +/***/ }), + +/***/ "./src/cards/GroupedCard.ts": +/*!**********************************!*\ + !*** ./src/cards/GroupedCard.ts ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ GroupedCard: () => (/* binding */ GroupedCard) +/* harmony export */ }); +/* harmony import */ var _SwipeCard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SwipeCard */ "./src/cards/SwipeCard.ts"); + +// noinspection JSUnusedGlobalSymbols Class is dynamically imported. +/** + * Grouped Card Class + * + * Used to create a card for controlling an entity of the light domain. + * + * @class + * @extends AbstractCard + */ +class GroupedCard { + /** + * Class constructor. + * + * @param {AbstractCard[]} cards The hass entity to create a card for. + * @throws {Error} If the Helper module isn't initialized. + */ + constructor(cards) { + /** + * Configuration of the card. + * + * @type {AbstractCard} + */ + this.config = { + cards: [], + }; + this.config.cards = cards; + } + /** + * Get a card. + * + * @return {AbstractCard} A card object. + */ + getCard() { + // Group entity cards into pairs and create vertical stacks + const groupedEntityCards = []; + for (let i = 0; i < this.config.cards.length; i += 2) { + groupedEntityCards.push({ + type: "vertical-stack", + cards: this.config.cards.slice(i, i + 2), + }); + } + // If there are more than 2 groups, use a GroupedCard, otherwise use a horizontal stack + const groupedCards = groupedEntityCards.length > 2 + ? new _SwipeCard__WEBPACK_IMPORTED_MODULE_0__.SwipeCard(groupedEntityCards).getCard() + : { + type: "horizontal-stack", + cards: groupedEntityCards, + }; + return groupedCards; + } +} + + + /***/ }), /***/ "./src/cards/HomeAreaCard.ts": @@ -2569,9 +2628,7 @@ class SwipeCard { * @return {SwipeCardConfig} A card object. */ getCard() { - return { - ...this.config, - }; + return this.config; } } @@ -6174,8 +6231,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../variables */ "./src/variables.ts"); /* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Helper */ "./src/Helper.ts"); /* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); -/* harmony import */ var _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cards/SwipeCard */ "./src/cards/SwipeCard.ts"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../cards/GroupedCard */ "./src/cards/GroupedCard.ts"); var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); @@ -6289,17 +6346,17 @@ class AbstractView { if (entities.length === 0 || !cardModule) continue; if (__classPrivateFieldGet(this, _AbstractView_domain, "f") === "light") - entities = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.addLightGroupsToEntities)(area, entities); + entities = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.addLightGroupsToEntities)(area, entities); const entityCards = entities .filter(entity => !_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden && !_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.strategyOptions.card_options?.[entity.device_id ?? "null"]?.hidden && !(entity.entity_category === "config" && configEntityHidden)) .map(entity => new cardModule[className](entity).getCard()); if (entityCards.length) { - const areaCards = entityCards.length > 2 ? [new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_3__.SwipeCard(entityCards).getCard()] : entityCards; + const areaCards = [new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_4__.GroupedCard(entityCards).getCard()]; const titleCardOptions = { ..._Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.strategyOptions.domains[__classPrivateFieldGet(this, _AbstractView_domain, "f")].controllerCardOptions, - subtitle: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getAreaName)(area), + subtitle: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getAreaName)(area), subtitleIcon: area.area_id === _variables__WEBPACK_IMPORTED_MODULE_0__.UNDISCLOSED ? "mdi:help-circle" : area.icon ?? "mdi:floor-plan", subtitleNavigate: area.slug }; @@ -6320,9 +6377,9 @@ class AbstractView { if (floorCards.length) { const titleSectionOptions = { ..._Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.strategyOptions.domains[__classPrivateFieldGet(this, _AbstractView_domain, "f")].controllerCardOptions, - title: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getFloorName)(floor), + title: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFloorName)(floor), titleIcon: floor.icon ?? "mdi:floor-plan", - titleNavigate: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.slugify)(floor.name) + titleNavigate: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.slugify)(floor.name) }; if (__classPrivateFieldGet(this, _AbstractView_domain, "f")) { if (!_variables__WEBPACK_IMPORTED_MODULE_0__.AGGREGATE_DOMAINS.includes(__classPrivateFieldGet(this, _AbstractView_domain, "f")) || __classPrivateFieldGet(this, _AbstractView_device_class, "f")) { @@ -6449,13 +6506,13 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ AreaView: () => (/* binding */ AreaView) /* harmony export */ }); /* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ "./src/Helper.ts"); -/* harmony import */ var _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cards/SwipeCard */ "./src/cards/SwipeCard.ts"); -/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); -/* harmony import */ var _cards_ImageAreaCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cards/ImageAreaCard */ "./src/cards/ImageAreaCard.ts"); -/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); -/* harmony import */ var _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../chips/AreaStateChip */ "./src/chips/AreaStateChip.ts"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); -/* harmony import */ var _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../chips/UnavailableChip */ "./src/chips/UnavailableChip.ts"); +/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); +/* harmony import */ var _cards_ImageAreaCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/ImageAreaCard */ "./src/cards/ImageAreaCard.ts"); +/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); +/* harmony import */ var _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../chips/AreaStateChip */ "./src/chips/AreaStateChip.ts"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../chips/UnavailableChip */ "./src/chips/UnavailableChip.ts"); +/* harmony import */ var _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cards/GroupedCard */ "./src/cards/GroupedCard.ts"); @@ -6505,12 +6562,12 @@ class AreaView { return []; } const chips = []; - chips.push(new _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_5__.AreaStateChip({ area: this.area, showContent: true }).getChip()); - const areaChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_6__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_4__.AREA_EXPOSED_CHIPS, { show_content: true }, this.area.slug, this.area.slug); + chips.push(new _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_4__.AreaStateChip({ area: this.area, showContent: true }).getChip()); + const areaChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_5__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_3__.AREA_EXPOSED_CHIPS, { show_content: true }, this.area.slug, this.area.slug); if (areaChips) { chips.push(...areaChips); } - const unavailableChip = new _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_7__.UnavailableChip({ area_slug: this.area.slug }).getChip(); + const unavailableChip = new _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_6__.UnavailableChip({ area_slug: this.area.slug }).getChip(); if (unavailableChip) chips.push(unavailableChip); // (device?.entities.all_lights && device?.entities.all_lights.entity_id !== "unavailable" ? { @@ -6534,11 +6591,11 @@ class AreaView { const viewSections = []; const exposedDomainIds = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.getExposedDomainIds(); // Create global section card if area is not undisclosed - if (this.area.area_id !== _variables__WEBPACK_IMPORTED_MODULE_4__.UNDISCLOSED && this.area.picture) { + if (this.area.area_id !== _variables__WEBPACK_IMPORTED_MODULE_3__.UNDISCLOSED && this.area.picture) { viewSections.push({ type: "grid", column_span: 1, - cards: [new _cards_ImageAreaCard__WEBPACK_IMPORTED_MODULE_3__.ImageAreaCard(this.area.area_id).getCard()], + cards: [new _cards_ImageAreaCard__WEBPACK_IMPORTED_MODULE_2__.ImageAreaCard(this.area.area_id).getCard()], }); } for (const domain of exposedDomainIds) { @@ -6552,13 +6609,13 @@ class AreaView { if (entities.length) { const titleCardOptions = { ..._Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.domains[domain].controllerCardOptions, - subtitle: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.localize((0,_utils__WEBPACK_IMPORTED_MODULE_6__.getDomainTranslationKey)(domain)), + subtitle: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.localize((0,_utils__WEBPACK_IMPORTED_MODULE_5__.getDomainTranslationKey)(domain)), domain, subtitleIcon: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.icons[domain]._?.default, subtitleNavigate: domain, }; if (domain) { - if (_variables__WEBPACK_IMPORTED_MODULE_4__.AGGREGATE_DOMAINS.includes(domain)) { + if (_variables__WEBPACK_IMPORTED_MODULE_3__.AGGREGATE_DOMAINS.includes(domain)) { titleCardOptions.showControls = false; } else { @@ -6567,9 +6624,9 @@ class AreaView { titleCardOptions.controlChipOptions = { area_slug: this.area.slug }; } } - const titleCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__.ControllerCard(titleCardOptions, domain, this.area.slug).createCard(); + const titleCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_1__.ControllerCard(titleCardOptions, domain, this.area.slug).createCard(); if (domain === "light") - entities = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.addLightGroupsToEntities)(this.area, entities); + entities = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.addLightGroupsToEntities)(this.area, entities); const entityCards = entities .filter(entity => { const cardOptions = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.card_options?.[entity.entity_id]; @@ -6588,7 +6645,7 @@ class AreaView { return new cardModule[_Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.sanitizeClassName(domain + "Card")](entity, cardOptions).getCard(); }); if (entityCards.length) { - domainCards.push(...(entityCards.length > 2 ? [new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_1__.SwipeCard(entityCards).getCard()] : entityCards)); + domainCards.push(new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_7__.GroupedCard(entityCards).getCard()); domainCards.unshift(...titleCard); } viewSections.push({ @@ -6623,7 +6680,7 @@ class AreaView { return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === "config" && _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.domains["_"].hide_config_entities); }) .map(entity_id => new cardModule.MiscellaneousCard(_Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.entities[entity_id], _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.card_options?.[entity_id]).getCard()); - const miscellaneousCards = miscellaneousEntityCards.length > 2 ? [new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_1__.SwipeCard(miscellaneousEntityCards).getCard()] : miscellaneousEntityCards; + const miscellaneousCards = new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_7__.GroupedCard(miscellaneousEntityCards).getCard(); const titleCard = { type: "heading", heading: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.localize("ui.panel.lovelace.editor.card.generic.other_cards"), @@ -6638,7 +6695,7 @@ class AreaView { viewSections.push({ type: "grid", column_span: 1, - cards: [titleCard, ...miscellaneousCards], + cards: [titleCard, miscellaneousCards], }); } catch (e) { @@ -7012,11 +7069,11 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ FloorView: () => (/* binding */ FloorView) /* harmony export */ }); /* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ "./src/Helper.ts"); -/* harmony import */ var _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cards/SwipeCard */ "./src/cards/SwipeCard.ts"); -/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); -/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); -/* harmony import */ var _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../chips/AreaStateChip */ "./src/chips/AreaStateChip.ts"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); +/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); +/* harmony import */ var _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../chips/AreaStateChip */ "./src/chips/AreaStateChip.ts"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../cards/GroupedCard */ "./src/cards/GroupedCard.ts"); @@ -7073,9 +7130,9 @@ class FloorView { const chips = []; const device = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.magicAreasDevices[this.floor.floor_id]; if (device) { - chips.push(new _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_4__.AreaStateChip({ floor: this.floor, showContent: true }).getChip()); + chips.push(new _chips_AreaStateChip__WEBPACK_IMPORTED_MODULE_3__.AreaStateChip({ floor: this.floor, showContent: true }).getChip()); } - const areaChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_5__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_3__.AREA_EXPOSED_CHIPS, { show_content: true }, this.floor.floor_id, this.floor.areas_slug); + const areaChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_2__.AREA_EXPOSED_CHIPS, { show_content: true }, this.floor.floor_id, this.floor.areas_slug); if (areaChips) { chips.push(...areaChips); } @@ -7108,7 +7165,7 @@ class FloorView { let areaEntities = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.getAreaEntities(area, domain); if (areaEntities.length) { if (domain === "light") - areaEntities = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.addLightGroupsToEntities)(area, areaEntities); + areaEntities = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.addLightGroupsToEntities)(area, areaEntities); const entityCards = areaEntities .filter(entity => { const cardOptions = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.card_options?.[entity.entity_id]; @@ -7135,7 +7192,7 @@ class FloorView { subtitleNavigate: area.slug, }; if (domain) { - if (_variables__WEBPACK_IMPORTED_MODULE_3__.AGGREGATE_DOMAINS.includes(domain)) { + if (_variables__WEBPACK_IMPORTED_MODULE_2__.AGGREGATE_DOMAINS.includes(domain)) { titleCardOptions.showControls = false; } else { @@ -7144,9 +7201,8 @@ class FloorView { titleCardOptions.controlChipOptions = { area_slug: area.slug }; } } - const titleCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__.ControllerCard(titleCardOptions, domain, area.slug).createCard(); - let areaCards; - areaCards = entityCards.length > 2 ? [new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_1__.SwipeCard(entityCards).getCard()] : entityCards; + const titleCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_1__.ControllerCard(titleCardOptions, domain, area.slug).createCard(); + let areaCards = [new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_5__.GroupedCard(entityCards).getCard()]; areaCards.unshift(...titleCard); domainCards.push(...areaCards); } @@ -7155,12 +7211,12 @@ class FloorView { if (domainCards.length) { const titleSectionOptions = { ..._Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.domains[domain].controllerCardOptions, - title: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.localize((0,_utils__WEBPACK_IMPORTED_MODULE_5__.getDomainTranslationKey)(domain)), + title: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.localize((0,_utils__WEBPACK_IMPORTED_MODULE_4__.getDomainTranslationKey)(domain)), titleIcon: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.icons[domain]._?.default ?? "mdi:floor-plan", titleNavigate: domain, }; if (domain) { - if (_variables__WEBPACK_IMPORTED_MODULE_3__.AGGREGATE_DOMAINS.includes(domain)) { + if (_variables__WEBPACK_IMPORTED_MODULE_2__.AGGREGATE_DOMAINS.includes(domain)) { titleSectionOptions.showControls = false; } else { @@ -7169,7 +7225,7 @@ class FloorView { titleSectionOptions.controlChipOptions = { area_slug: this.floor.areas_slug }; } } - const domainControllerCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_2__.ControllerCard(titleSectionOptions, domain, this.floor.floor_id).createCard(); + const domainControllerCard = new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_1__.ControllerCard(titleSectionOptions, domain, this.floor.floor_id).createCard(); const section = { type: "grid", cards: [] }; if (isFirstLoop) { section.cards.push(...this.viewControllerCard); @@ -7179,37 +7235,6 @@ class FloorView { section.cards.push(...domainCards); viewSections.push(section); } - // // Handle default domain if not hidden - // if (!Helper.strategyOptions.domains.default.hidden) { - // const areaDevices = area.devices.filter(device_id => Helper.devices[device_id].area_id === floor.area_id); - // const miscellaneousEntities = floor.entities.filter(entity_id => { - // const entity = Helper.entities[entity_id]; - // const entityLinked = areaDevices.includes(entity.device_id ?? "null") || entity.area_id === floor.area_id; - // const entityUnhidden = entity.hidden_by === null && entity.disabled_by === null; - // const domainExposed = exposedDomainIds.includes(entity.entity_id.split(".", 1)[0]); - // return entityUnhidden && !domainExposed && entityLinked; - // }); - // if (miscellaneousEntities.length) { - // try { - // const cardModule = await import("../cards/MiscellaneousCard"); - // const swipeCard = miscellaneousEntities - // .filter(entity_id => { - // const entity = Helper.entities[entity_id]; - // const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id]; - // const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? "null"]; - // return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === "config" && Helper.strategyOptions.domains["_"].hide_config_entities); - // }) - // .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard()); - // viewSections.push({ - // type: "grid", - // column_span: 1, - // cards: [new SwipeCard(swipeCard).getCard()], - // }); - // } catch (e) { - // Helper.logError("An error occurred while creating the domain cards!", e); - // } - // } - // } } catch (e) { _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.logError("An error occurred while creating the domain cards!", e); @@ -7256,8 +7281,7 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _chips_WeatherChip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../chips/WeatherChip */ "./src/chips/WeatherChip.ts"); /* harmony import */ var _chips_AggregateChip__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../chips/AggregateChip */ "./src/chips/AggregateChip.ts"); /* harmony import */ var _cards_PersonCard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cards/PersonCard */ "./src/cards/PersonCard.ts"); -/* harmony import */ var _chips_ConditionalChip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../chips/ConditionalChip */ "./src/chips/ConditionalChip.ts"); -/* harmony import */ var _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../chips/UnavailableChip */ "./src/chips/UnavailableChip.ts"); +/* harmony import */ var _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../chips/UnavailableChip */ "./src/chips/UnavailableChip.ts"); var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); 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"); @@ -7273,7 +7297,6 @@ var _HomeView_instances, _HomeView_createPersonCards; - // noinspection JSUnusedGlobalSymbols Class is dynamically imported. /** * Home View Class. @@ -7360,7 +7383,7 @@ class HomeView { if (homeChips) { chips.push(...homeChips); } - const unavailableChip = new _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_9__.UnavailableChip().getChip(); + const unavailableChip = new _chips_UnavailableChip__WEBPACK_IMPORTED_MODULE_8__.UnavailableChip().getChip(); if (unavailableChip) chips.push(unavailableChip); const linusSettings = new _chips_SettingsChip__WEBPACK_IMPORTED_MODULE_1__.SettingsChip({ tap_action: new _popups_SettingsPopup__WEBPACK_IMPORTED_MODULE_2__.SettingsPopup().getPopup() }); @@ -7445,7 +7468,10 @@ class HomeView { }); isFirstLoop = false; } - const temperatureEntity = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.getMAEntity)(floor.floor_id, "sensor", "temperature"); + const temperature = floor.areas_slug.some(area_slug => { + const area = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.areas[area_slug]; + return area.domains?.temperature; + }); if (floors.length > 1) { floorSection.cards.push({ type: "heading", @@ -7456,7 +7482,14 @@ class HomeView { type: "custom:mushroom-chips-card", alignment: "end", chips: [ - new _chips_ConditionalChip__WEBPACK_IMPORTED_MODULE_8__.ConditionalChip([{ entity: temperatureEntity?.entity_id, state_not: _variables__WEBPACK_IMPORTED_MODULE_3__.UNAVAILABLE }], new _chips_AggregateChip__WEBPACK_IMPORTED_MODULE_6__.AggregateChip({ device_class: "temperature", show_content: true, magic_device_id: floor.floor_id, area_slug: floor.areas_slug }).getChip()).getChip(), + temperature && + new _chips_AggregateChip__WEBPACK_IMPORTED_MODULE_6__.AggregateChip({ + device_class: "temperature", + show_content: true, + magic_device_id: floor.floor_id, + area_slug: floor.areas_slug, + tap_action: (0,_utils__WEBPACK_IMPORTED_MODULE_4__.navigateTo)('temperature') + }).getChip(), ], card_mod: { style: ` @@ -7537,7 +7570,7 @@ class HomeView { }; } } -_HomeView_instances = new WeakSet(), _HomeView_createPersonCards = +_HomeView_instances = new WeakSet(), _HomeView_createPersonCards = /** * Create the person cards to include in the view. * @@ -7923,9 +7956,9 @@ __webpack_require__.r(__webpack_exports__); /* harmony import */ var _cards_PersonCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/PersonCard */ "./src/cards/PersonCard.ts"); /* harmony import */ var _cards_BinarySensorCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cards/BinarySensorCard */ "./src/cards/BinarySensorCard.ts"); /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); -/* harmony import */ var _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../cards/SwipeCard */ "./src/cards/SwipeCard.ts"); -/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); -/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); +/* harmony import */ var _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../cards/ControllerCard */ "./src/cards/ControllerCard.ts"); +/* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); +/* harmony import */ var _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../cards/GroupedCard */ "./src/cards/GroupedCard.ts"); @@ -7996,7 +8029,7 @@ class SecurityView { _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.logError("An error occurred while creating the alarm chip!", e); } } - const homeChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_7__.SECURITY_EXPOSED_CHIPS, { show_content: true }); + const homeChips = await (0,_utils__WEBPACK_IMPORTED_MODULE_4__.createChipsFromList)(_variables__WEBPACK_IMPORTED_MODULE_6__.SECURITY_EXPOSED_CHIPS, { show_content: true }); if (homeChips) { chips.push(...homeChips); } @@ -8144,12 +8177,7 @@ class SecurityView { entityCards.push(new cardModule[className](entity, cardOptions).getCard()); } if (entityCards.length) { - if (entityCards.length > 2) { - areaCards.push(new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_5__.SwipeCard(entityCards).getCard()); - } - else { - areaCards.push(...entityCards); - } + areaCards.push(new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_7__.GroupedCard(entityCards).getCard()); } // Vertical stack the area cards if it has entities. if (areaCards.length) { @@ -8162,7 +8190,7 @@ class SecurityView { titleCardOptions.extraControls = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.strategyOptions.domains[domain].extraControls; } // Create and insert a Controller card. - areaCards.unshift(...new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_6__.ControllerCard(target, titleCardOptions, domain).createCard()); + areaCards.unshift(...new _cards_ControllerCard__WEBPACK_IMPORTED_MODULE_5__.ControllerCard(target, titleCardOptions, domain).createCard()); floorCards.push(...areaCards); } } @@ -8287,8 +8315,8 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ }); /* harmony import */ var _variables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../variables */ "./src/variables.ts"); /* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Helper */ "./src/Helper.ts"); -/* harmony import */ var _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../cards/SwipeCard */ "./src/cards/SwipeCard.ts"); -/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ "./src/utils.ts"); +/* harmony import */ var _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cards/GroupedCard */ "./src/cards/GroupedCard.ts"); @@ -8344,7 +8372,7 @@ class UnavailableView { const floorCards = []; for (const area of floor.areas_slug.map(area_slug => _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.areas[area_slug]).values()) { const entities = _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.areas[area.slug].entities; - const unavailableEntities = entities?.filter(entity_id => _variables__WEBPACK_IMPORTED_MODULE_0__.AREA_CARDS_DOMAINS.includes((0,_utils__WEBPACK_IMPORTED_MODULE_3__.getEntityDomain)(entity_id)) && _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.getEntityState(entity_id)?.state === _variables__WEBPACK_IMPORTED_MODULE_0__.UNAVAILABLE).map(entity_id => _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.entities[entity_id]); + const unavailableEntities = entities?.filter(entity_id => _variables__WEBPACK_IMPORTED_MODULE_0__.AREA_CARDS_DOMAINS.includes((0,_utils__WEBPACK_IMPORTED_MODULE_2__.getEntityDomain)(entity_id)) && _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.getEntityState(entity_id)?.state === _variables__WEBPACK_IMPORTED_MODULE_0__.UNAVAILABLE).map(entity_id => _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.entities[entity_id]); const cardModule = await Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../cards/MiscellaneousCard */ "./src/cards/MiscellaneousCard.ts")); if (entities.length === 0 || !cardModule) continue; @@ -8358,15 +8386,14 @@ class UnavailableView { && !(entity.entity_category === "config")) .map(entity => new cardModule.MiscellaneousCard(entity).getCard()); if (entityCards.length) { - const areaCards = entityCards.length > 2 ? [new _cards_SwipeCard__WEBPACK_IMPORTED_MODULE_2__.SwipeCard(entityCards).getCard()] : entityCards; - floorCards.push(...areaCards); + floorCards.push(new _cards_GroupedCard__WEBPACK_IMPORTED_MODULE_3__.GroupedCard(entityCards).getCard()); } } if (floorCards.length) { const titleSectionOptions = { - title: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFloorName)(floor), + title: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFloorName)(floor), titleIcon: floor.icon ?? "mdi:floor-plan", - titleNavigate: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.slugify)(floor.name) + titleNavigate: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.slugify)(floor.name) }; viewSections.push({ type: "grid", cards: floorCards }); } @@ -8567,6 +8594,12 @@ var map = { "./src/cards/FanCard.ts", "main" ], + "./GroupedCard": [ + "./src/cards/GroupedCard.ts" + ], + "./GroupedCard.ts": [ + "./src/cards/GroupedCard.ts" + ], "./HomeAreaCard": [ "./src/cards/HomeAreaCard.ts", "main" @@ -9006,7 +9039,7 @@ module.exports = webpackAsyncContext; /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; -/******/ +/******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache @@ -9020,14 +9053,14 @@ module.exports = webpackAsyncContext; /******/ // no module.loaded needed /******/ exports: {} /******/ }; -/******/ +/******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } -/******/ +/******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { @@ -9040,7 +9073,7 @@ module.exports = webpackAsyncContext; /******/ return getter; /******/ }; /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports @@ -9052,7 +9085,7 @@ module.exports = webpackAsyncContext; /******/ } /******/ }; /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/ensure chunk */ /******/ (() => { /******/ // The chunk loading function for additional chunks @@ -9060,12 +9093,12 @@ module.exports = webpackAsyncContext; /******/ // in this file, this function is empty here. /******/ __webpack_require__.e = () => (Promise.resolve()); /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); -/******/ +/******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports @@ -9076,14 +9109,14 @@ module.exports = webpackAsyncContext; /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); -/******/ +/******/ /************************************************************************/ -/******/ +/******/ /******/ // startup /******/ // Load entry module and return exports /******/ // This entry module is referenced by other modules so it can't be inlined /******/ var __webpack_exports__ = __webpack_require__("./src/linus-strategy.ts"); -/******/ +/******/ /******/ })() ; //# sourceMappingURL=linus-strategy.js.map \ No newline at end of file diff --git a/custom_components/linus_dashboard/www/linus-strategy.js.map b/custom_components/linus_dashboard/www/linus-strategy.js.map index c6d84d8..a767b98 100644 --- a/custom_components/linus_dashboard/www/linus-strategy.js.map +++ b/custom_components/linus_dashboard/www/linus-strategy.js.map @@ -1 +1 @@ -{"version":3,"file":"linus-strategy.js","mappings":"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,iCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAU,8BAAQ,CAAC,EACrC;YACE,GAAG,2BAAI,4CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB;SAC/D,EAAE,yBAAU,8BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;;;AAjDD;;;;;;GAMG;AACI,8BAAkB,QAAQ,EAAnB,CAAoB;AA6Cd;;;;;;;;;;;ACpEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;UCtJA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;;;;;WCHA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;UENA;UACA;UACA;UACA","sources":["webpack://linus-dashboard/./node_modules/deepmerge/dist/cjs.js","webpack://linus-dashboard/./src/Helper.ts","webpack://linus-dashboard/./src/cards/AbstractCard.ts","webpack://linus-dashboard/./src/cards/AggregateCard.ts","webpack://linus-dashboard/./src/cards/AlarmCard.ts","webpack://linus-dashboard/./src/cards/BinarySensorCard.ts","webpack://linus-dashboard/./src/cards/CameraCard.ts","webpack://linus-dashboard/./src/cards/ClimateCard.ts","webpack://linus-dashboard/./src/cards/ControllerCard.ts","webpack://linus-dashboard/./src/cards/CoverCard.ts","webpack://linus-dashboard/./src/cards/FanCard.ts","webpack://linus-dashboard/./src/cards/HomeAreaCard.ts","webpack://linus-dashboard/./src/cards/ImageAreaCard.ts","webpack://linus-dashboard/./src/cards/LightCard.ts","webpack://linus-dashboard/./src/cards/LockCard.ts","webpack://linus-dashboard/./src/cards/MediaPlayerCard.ts","webpack://linus-dashboard/./src/cards/MiscellaneousCard.ts","webpack://linus-dashboard/./src/cards/NumberCard.ts","webpack://linus-dashboard/./src/cards/PersonCard.ts","webpack://linus-dashboard/./src/cards/SceneCard.ts","webpack://linus-dashboard/./src/cards/SensorCard.ts","webpack://linus-dashboard/./src/cards/SwipeCard.ts","webpack://linus-dashboard/./src/cards/SwitchCard.ts","webpack://linus-dashboard/./src/cards/VacuumCard.ts","webpack://linus-dashboard/./src/chips/AbstractChip.ts","webpack://linus-dashboard/./src/chips/AggregateChip.ts","webpack://linus-dashboard/./src/chips/AlarmChip.ts","webpack://linus-dashboard/./src/chips/AreaScenesChips.ts","webpack://linus-dashboard/./src/chips/AreaStateChip.ts","webpack://linus-dashboard/./src/chips/ClimateChip.ts","webpack://linus-dashboard/./src/chips/ConditionalChip.ts","webpack://linus-dashboard/./src/chips/ControlChip.ts","webpack://linus-dashboard/./src/chips/CoverChip.ts","webpack://linus-dashboard/./src/chips/FanChip.ts","webpack://linus-dashboard/./src/chips/LightChip.ts","webpack://linus-dashboard/./src/chips/MediaPlayerChip.ts","webpack://linus-dashboard/./src/chips/SafetyChip.ts","webpack://linus-dashboard/./src/chips/SettingsChip.ts","webpack://linus-dashboard/./src/chips/SpotifyChip.ts","webpack://linus-dashboard/./src/chips/SwitchChip.ts","webpack://linus-dashboard/./src/chips/ToggleSceneChip.ts","webpack://linus-dashboard/./src/chips/UnavailableChip.ts","webpack://linus-dashboard/./src/chips/WeatherChip.ts","webpack://linus-dashboard/./src/configurationDefaults.ts","webpack://linus-dashboard/./src/linus-strategy.ts","webpack://linus-dashboard/./src/popups/AbstractPopup.ts","webpack://linus-dashboard/./src/popups/AreaInformationsPopup.ts","webpack://linus-dashboard/./src/popups/LightSettingsPopup.ts","webpack://linus-dashboard/./src/popups/SceneSettingsPopup.ts","webpack://linus-dashboard/./src/popups/SettingsPopup.ts","webpack://linus-dashboard/./src/popups/WeatherPopup.ts","webpack://linus-dashboard/./src/types/lovelace-mushroom/cards/vacuum-card-config.ts","webpack://linus-dashboard/./src/types/strategy/generic.ts","webpack://linus-dashboard/./src/utils.ts","webpack://linus-dashboard/./src/variables.ts","webpack://linus-dashboard/./src/views/AbstractView.ts","webpack://linus-dashboard/./src/views/AggregateView.ts","webpack://linus-dashboard/./src/views/AreaView.ts","webpack://linus-dashboard/./src/views/CameraView.ts","webpack://linus-dashboard/./src/views/ClimateView.ts","webpack://linus-dashboard/./src/views/CoverView.ts","webpack://linus-dashboard/./src/views/FanView.ts","webpack://linus-dashboard/./src/views/FloorView.ts","webpack://linus-dashboard/./src/views/HomeView.ts","webpack://linus-dashboard/./src/views/LightView.ts","webpack://linus-dashboard/./src/views/MediaPlayerView.ts","webpack://linus-dashboard/./src/views/SceneView.ts","webpack://linus-dashboard/./src/views/SecurityDetailsView.ts","webpack://linus-dashboard/./src/views/SecurityView.ts","webpack://linus-dashboard/./src/views/SwitchView.ts","webpack://linus-dashboard/./src/views/UnavailableView.ts","webpack://linus-dashboard/./src/views/VacuumView.ts","webpack://linus-dashboard/./src/cards/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/./src/chips/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/./src/views/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/webpack/bootstrap","webpack://linus-dashboard/webpack/runtime/compat get default export","webpack://linus-dashboard/webpack/runtime/define property getters","webpack://linus-dashboard/webpack/runtime/ensure chunk","webpack://linus-dashboard/webpack/runtime/hasOwnProperty shorthand","webpack://linus-dashboard/webpack/runtime/make namespace object","webpack://linus-dashboard/webpack/before-startup","webpack://linus-dashboard/webpack/startup","webpack://linus-dashboard/webpack/after-startup"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { configurationDefaults } from \"./configurationDefaults\";\nimport { HassEntities, HassEntity } from \"home-assistant-js-websocket\";\nimport deepmerge from \"deepmerge\";\nimport { DeviceRegistryEntry } from \"./types/homeassistant/data/device_registry\";\nimport { AreaRegistryEntry } from \"./types/homeassistant/data/area_registry\";\nimport { generic } from \"./types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport StrategyFloor = generic.StrategyFloor;\nimport StrategyEntity = generic.StrategyEntity;\nimport StrategyDevice = generic.StrategyDevice;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { FloorRegistryEntry } from \"./types/homeassistant/data/floor_registry\";\nimport { DEVICE_CLASSES, MAGIC_AREAS_DOMAIN, MAGIC_AREAS_NAME, UNDISCLOSED } from \"./variables\";\nimport { getEntityDomain, getGlobalEntitiesExceptUndisclosed, getMAEntity, getMagicAreaSlug, groupEntitiesByDomain, slugify } from \"./utils\";\nimport { EntityRegistryEntry } from \"./types/homeassistant/data/entity_registry\";\nimport { FrontendEntityComponentIconResources, IconResources } from \"./types/homeassistant/data/frontend\";\nimport { LinusDashboardConfig } from \"./types/homeassistant/data/linus_dashboard\";\n\n/**\n * Helper Class\n *\n * Contains the objects of Home Assistant's registries and helper methods.\n */\nclass Helper {\n /**\n * An array of entities from Home Assistant's entity registry.\n *\n * @type {Record}\n * @private\n */\n static #entities: Record;\n\n /**\n * An array of entities from Home Assistant's entity registry.\n *\n * @type {Record}\n * @private\n */\n static #domains: Record = {};\n\n /**\n * An array of entities from Home Assistant's device registry.\n *\n * @type {Record}\n * @private\n */\n static #devices: Record;\n\n /**\n * An array of entities from Home Assistant's area registry.\n *\n * @type {Record}\n * @private\n */\n static #areas: Record = {};\n\n /**\n * An array of entities from Home Assistant's area registry.\n *\n * @type {Record}\n * @private\n */\n static #floors: Record = {};\n\n /**\n * An array of state entities from Home Assistant's Hass object.\n *\n * @type {HassEntities}\n * @private\n */\n static #hassStates: HassEntities;\n\n /**\n * Translation method.\n *\n * @type {any}\n * @private\n */\n static #hassLocalize: any;\n\n /**\n * Indicates whether this module is initialized.\n *\n * @type {boolean} True if initialized.\n * @private\n */\n static #initialized: boolean = false;\n\n /**\n * The Custom strategy configuration.\n *\n * @type {generic.StrategyConfig}\n * @private\n */\n static #strategyOptions: generic.StrategyConfig;\n\n /**\n * The magic areas devices.\n *\n * @type {Record}\n * @private\n */\n static #magicAreasDevices: Record = {};\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {boolean}\n * @private\n */\n static #debug: boolean;\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {IconResources}\n * @private\n */\n static #icons: IconResources;\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {LinusDashboardConfig}\n * @private\n */\n static #linus_dashboard_config: LinusDashboardConfig;\n\n /**\n * Class constructor.\n *\n * This class shouldn't be instantiated directly.\n * Instead, it should be initialized with method initialize().\n *\n * @throws {Error} If trying to instantiate this class.\n */\n constructor() {\n throw new Error(\"This class should be invoked with method initialize() instead of using the keyword new!\");\n }\n\n /**\n * Custom strategy configuration.\n *\n * @returns {generic.StrategyConfig}\n * @static\n */\n static get strategyOptions(): generic.StrategyConfig {\n return this.#strategyOptions;\n }\n\n /**\n * Custom strategy configuration.\n *\n * @returns {Record}\n * @static\n */\n static get magicAreasDevices(): Record {\n return this.#magicAreasDevices;\n }\n\n /**\n * Get the entities from Home Assistant's area registry.\n *\n * @returns {Record}\n * @static\n */\n static get areas(): Record {\n return this.#areas;\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {StrategyArea[]}\n * @static\n */\n static get orderedAreas(): StrategyArea[] {\n return Object.values(this.#areas).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.order === undefined) return 1; // a should come after b\n if (b.order === undefined) return -1; // b should come after a\n\n // Both 'order' values are defined, compare them\n return a.order - b.order;\n });\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {Record}\n * @static\n */\n static get floors(): Record {\n return this.#floors\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {StrategyFloor[]}\n * @static\n */\n static get orderedFloors(): StrategyFloor[] {\n return Object.values(this.#floors).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.level === undefined) return 1; // a should come after b\n if (b.level === undefined) return -1; // b should come after a\n\n // Both 'level' values are defined, compare them\n return a.level - b.level;\n });\n }\n\n /**\n * Get the devices from Home Assistant's device registry.\n *\n * @returns {Record}\n * @static\n */\n static get devices(): Record {\n return this.#devices;\n }\n\n /**\n * Get the entities from Home Assistant's entity registry.\n *\n * @returns {Record}\n * @static\n */\n static get entities(): Record {\n return this.#entities;\n }\n\n /**\n * Get the domains from Home Assistant's entity registry.\n *\n * @returns {Record}\n * @static\n */\n static get domains(): Record {\n return this.#domains;\n }\n\n /**\n * Get the icons from Home Assistant's frontend.\n *\n * @returns {IconResources}\n * @static\n */\n static get icons(): IconResources {\n return this.#icons;\n }\n\n /**\n * Get the linus_dashboard_config from Home Assistant's frontend.\n *\n * @returns {LinusDashboardConfig}\n * @static\n */\n static get linus_dashboard_config(): LinusDashboardConfig {\n return this.#linus_dashboard_config;\n }\n\n /**\n * Get the current debug mode of the mushroom strategy.\n *\n * @returns {boolean}\n * @static\n */\n static get debug(): boolean {\n return this.#debug;\n }\n\n /**\n * Initialize this module.\n *\n * @param {generic.DashBoardInfo} info Strategy information object.\n * @returns {Promise}\n * @static\n */\n static async initialize(info: generic.DashBoardInfo): Promise {\n // Initialize properties.\n this.#hassStates = info.hass.states;\n this.#hassLocalize = info.hass.localize;\n this.#strategyOptions = deepmerge(configurationDefaults, info.config?.strategy?.options ?? {});\n this.#debug = this.#strategyOptions.debug;\n\n let homeAssistantRegistries = []\n\n try {\n // Query the registries of Home Assistant.\n\n homeAssistantRegistries = await Promise.all([\n info.hass.callWS({ type: \"config/entity_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/device_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/area_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/floor_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"frontend/get_icons\", category: \"entity_component\" }) as Promise,\n info.hass.callWS({ type: \"frontend/get_icons\", category: \"services\" }) as Promise,\n info.hass.callWS({ type: \"linus_dashboard/get_config\" }) as Promise,\n ]);\n\n } catch (e) {\n Helper.logError(\"An error occurred while querying Home assistant's registries!\", e);\n throw 'Check the console for details';\n }\n\n const [entities, devices, areas, floors, entity_component_icons, services_icons, linus_dashboard_config] = homeAssistantRegistries;\n\n this.#icons = deepmerge(entity_component_icons.resources, services_icons.resources);\n this.#linus_dashboard_config = linus_dashboard_config;\n\n // Dictionnaires pour un accès rapide\n const areasById = Object.fromEntries(areas.map(a => [a.area_id, a]));\n const floorsById = Object.fromEntries(floors.map(f => [f.floor_id, f]));\n const devicesByAreaIdMap = Object.fromEntries(devices.map(device => [device.id, device.area_id]));\n const entitiesByDeviceId: Record = {};\n const entitiesByAreaId: Record = {};\n const devicesByAreaId: Record = {};\n\n this.#entities = entities.reduce((acc, entity) => {\n\n if (!(entity.entity_id in this.#hassStates) || entity.hidden_by) return acc;\n\n const area = entity.area_id ? areasById[entity.area_id] : {} as StrategyArea;\n const floor = area?.floor_id ? floorsById[area?.floor_id] : {} as StrategyFloor;\n const enrichedEntity = {\n ...entity,\n floor_id: floor.floor_id || null,\n };\n\n acc[entity.entity_id] = enrichedEntity;\n\n if (entity.platform !== MAGIC_AREAS_DOMAIN) {\n const areaId = entity.area_id ?? devicesByAreaIdMap[entity.device_id ?? \"\"] ?? UNDISCLOSED;\n if (!entitiesByAreaId[areaId]) entitiesByAreaId[areaId] = [];\n entitiesByAreaId[areaId].push(enrichedEntity);\n }\n\n if (entity.device_id) {\n if (!entitiesByDeviceId[entity.device_id]) entitiesByDeviceId[entity.device_id] = [];\n entitiesByDeviceId[entity.device_id].push(enrichedEntity);\n }\n\n\n let domain = getEntityDomain(entity.entity_id)\n if (Object.keys(DEVICE_CLASSES).includes(domain)) {\n const entityState = Helper.getEntityState(entity.entity_id);\n if (entityState?.attributes?.device_class) domain = entityState.attributes.device_class\n }\n if (!this.#domains[domain]) this.#domains[domain] = [];\n if (entity.platform !== MAGIC_AREAS_DOMAIN) this.#domains[domain].push(enrichedEntity);\n\n return acc;\n }, {} as Record);\n\n // Enrichir les appareils\n this.#devices = devices.reduce((acc, device) => {\n const entitiesInDevice = entitiesByDeviceId[device.id] || [];\n const area = device.area_id ? areasById[device.area_id] : {} as StrategyArea;\n const floor = area?.floor_id ? floorsById[area?.floor_id] : {} as StrategyFloor;\n\n const enrichedDevice = {\n ...device,\n floor_id: floor.floor_id || null,\n entities: entitiesInDevice.map(entity => entity.entity_id),\n };\n\n acc[device.id] = enrichedDevice;\n\n if (device.manufacturer !== MAGIC_AREAS_NAME) {\n const areaId = device.area_id ?? UNDISCLOSED;\n if (!devicesByAreaId[areaId]) devicesByAreaId[areaId] = [];\n devicesByAreaId[areaId].push(enrichedDevice);\n }\n\n if (device.manufacturer === MAGIC_AREAS_NAME) {\n this.#magicAreasDevices[getMagicAreaSlug(device as MagicAreaRegistryEntry)] = {\n ...device,\n area_name: device.name!,\n entities: entitiesInDevice\n .reduce((entities: Record, entity) => {\n entities[entity.translation_key!] = entity;\n return entities;\n }, {})\n }\n }\n\n return acc;\n }, {} as Record);\n\n\n // Create and add the undisclosed area if not hidden in the strategy options.\n if (!this.#strategyOptions.areas.undisclosed?.hidden) {\n\n this.#strategyOptions.areas.undisclosed = {\n ...configurationDefaults.areas.undisclosed,\n ...this.#strategyOptions.areas.undisclosed,\n };\n\n areas.push(this.#strategyOptions.areas.undisclosed);\n }\n\n // Enrichir les zones\n this.#areas = areas.reduce((acc, area) => {\n\n const areaEntities = entitiesByAreaId[area.area_id]?.map(entity => entity.entity_id) || [];\n\n const slug = area.area_id === UNDISCLOSED ? area.area_id : slugify(area.name);\n\n const enrichedArea = {\n ...area,\n floor_id: area?.floor_id || UNDISCLOSED,\n slug,\n domains: groupEntitiesByDomain(areaEntities) ?? {},\n devices: devicesByAreaId[area.area_id]?.map(device => device.id) || [],\n magicAreaDevice: Object.values(this.#devices).find(device => device.manufacturer === MAGIC_AREAS_NAME && device.name === area.name),\n entities: areaEntities,\n };\n\n acc[slug] = enrichedArea;\n return acc;\n }, {} as Record);\n\n\n // Create and add the undisclosed floor if not hidden in the strategy options.\n if (!this.#strategyOptions.areas.undisclosed?.hidden) {\n\n this.#strategyOptions.floors.undisclosed = {\n ...configurationDefaults.floors.undisclosed,\n ...this.#strategyOptions.floors.undisclosed,\n };\n\n floors.push(this.#strategyOptions.floors.undisclosed);\n }\n\n // Enrichir les étages\n this.#floors = floors.reduce((acc, floor) => {\n const areasInFloor = Object.values(this.#areas).filter(area => area?.floor_id === floor.floor_id);\n\n acc[floor.floor_id] = {\n ...floor,\n areas_slug: areasInFloor.map(area => area.slug),\n };\n\n return acc;\n }, {} as Record);\n\n\n // Sort custom and default views of the strategy options by order first and then by title.\n this.#strategyOptions.views = Object.fromEntries(\n Object.entries(this.#strategyOptions.views).sort(([, a], [, b]) => {\n return (a.order ?? Infinity) - (b.order ?? Infinity) || (a.title ?? \"undefined\").localeCompare(b.title ?? \"undefined\");\n }),\n );\n\n // Sort custom and default domains of the strategy options by order first and then by title.\n this.#strategyOptions.domains = Object.fromEntries(\n Object.entries(this.#strategyOptions.domains).sort(([, a], [, b]) => {\n return (a.order ?? Infinity) - (b.order ?? Infinity) || (a.title ?? \"undefined\").localeCompare(b.title ?? \"undefined\");\n }),\n );\n\n // console.log('this.#areas', info, this.#areas, this.#magicAreasDevices)\n\n this.#initialized = true;\n }\n\n /**\n * Get the initialization status of the Helper class.\n *\n * @returns {boolean} True if this module is initialized.\n * @static\n */\n static isInitialized(): boolean {\n return this.#initialized;\n }\n\n /**\n * Get a template string to define the number of a given domain's entities with a certain state.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} domain The domain of the entities.\n * @param {string} operator The Comparison operator between state and value.\n * @param {string} value The value to which the state is compared against.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n static getCountTemplate(domain: string, operator: string, value: string | string[], area_slug?: string | string[]): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n if (slug) {\n const newStates = domain === \"all\"\n ? this.#areas[slug]?.entities.map((entity_id) => `states['${entity_id}']`)\n : this.#areas[slug]?.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n } else {\n for (const area of Object.values(this.#areas)) {\n if (area.area_id === UNDISCLOSED) continue;\n\n const newStates = domain === \"all\"\n ? area.entities.map((entity_id) => `states['${entity_id}']`)\n : area.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n }\n }\n\n const formatedValue = Array.isArray(value) ? JSON.stringify(value).replaceAll('\"', \"'\") : `'${value}'`;\n\n return `{% set entities = [${states}] %}{{ entities | selectattr('state','${operator}',${formatedValue}) | list | count }}`;\n }\n\n /**\n * Get a template string to define the number of a given device_class's entities with a certain state.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} domain The domain of the entities.\n * @param {string} device_class The device class of the entities.\n * @param {string} operator The Comparison operator between state and value.\n * @param {string} value The value to which the state is compared against.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n static getDeviceClassCountTemplate(device_class: string, operator: string, value: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const area_slugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of area_slugs) {\n const entities = area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n const formattedValue = Array.isArray(value) ? JSON.stringify(value).replace(/\"/g, \"'\") : `'${value}'`;\n return `{% set entities = [${states}] %}{{ entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | selectattr('state','${operator}',${formattedValue}) | list | count }}`;\n }\n\n /**\n * Get a template string to define the average state of sensor entities with a given device class.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} device_class The device class of the entities.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n /**\n * Get a template string to define the average state of sensor entities with a given device class.\n *\n * @param {string} device_class The device class of the entities.\n * @param {string | string[]} area_slug The area slug(s) to filter entities by.\n *\n * @return {string} The template string.\n * @static\n */\n static getAverageStateTemplate(device_class: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n return `{% set entities = [${states}] %}{{ (entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length) | round(1) }} {{ ${states[0]}.attributes.unit_of_measurement }}`;\n }\n\n /**\n * Get device entities from the entity registry, filtered by area and domain.\n *\n * The entity registry is a registry where Home-Assistant keeps track of all entities.\n * A device is represented in Home Assistant via one or more entities.\n *\n * The result excludes hidden and disabled entities.\n *\n * @param {AreaRegistryEntry} area Area entity.\n * @param {string} domain The domain of the entity-id.\n *\n * @return {StrategyEntity[]} Array of device entities.\n * @static\n */\n static getAreaEntities(area: StrategyArea, domain?: string): StrategyEntity[] {\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n if (domain) {\n return area.domains[domain]?.map(entity_id => this.#entities[entity_id]) ?? []\n } else {\n return area.entities.map(entity_id => this.#entities[entity_id]) ?? []\n }\n }\n\n /**\n * Get state entities, filtered by area and domain.\n *\n * The result excludes hidden and disabled entities.\n *\n * @param {StrategyArea} area Area entity.\n * @param {string} domain Domain of the entity-id.\n *\n * @return {HassEntity[]} Array of state entities.\n */\n static getStateEntities(area: StrategyArea, domain: string): HassEntity[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n // Get states whose entity-id starts with the given string.\n const stateEntities = this.#areas[area.slug].domains[domain]?.map(entity_id => this.#hassStates[entity_id]);\n\n return stateEntities;\n }\n\n /**\n * Sanitize a classname.\n *\n * The name is sanitized by capitalizing the first character of the name or after an underscore.\n * Underscores are removed.\n *\n * @param {string} className Name of the class to sanitize.\n * @returns {string} The sanitized classname.\n */\n static sanitizeClassName(className: string): string {\n className = className.charAt(0).toUpperCase() + className.slice(1);\n\n return className.replace(/([-_][a-z])/g, (group) => group\n .toUpperCase()\n .replace(\"-\", \"\")\n .replace(\"_\", \"\"),\n );\n }\n\n /**\n * Get the ids of the views which aren't set to hidden in the strategy options.\n *\n * @return {string[]} An array of view ids.\n */\n static getExposedViewIds(): string[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n return this.#getObjectKeysByPropertyValue(this.#strategyOptions.views, \"hidden\", false);\n }\n\n /**\n * Get the ids of the domain ids which aren't set to hidden in the strategy options.\n *\n * @return {string[]} An array of domain ids.\n */\n static getExposedDomainIds(): string[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n return this.#getObjectKeysByPropertyValue(this.#strategyOptions.domains, \"hidden\", false);\n }\n\n /**\n * Get the keys of nested objects by its property value.\n *\n * @param {Object} object An object of objects.\n * @param {string|number} property The name of the property to evaluate.\n * @param {*} value The value which the property should match.\n *\n * @return {string[]} An array with keys.\n */\n static #getObjectKeysByPropertyValue(\n object: { [k: string]: any },\n property: string, value: any\n ): string[] {\n const keys: string[] = [];\n\n for (const key of Object.keys(object)) {\n if (object[key][property] === value) {\n keys.push(key);\n }\n }\n\n return keys;\n }\n\n /**\n * Logs an error message to the console.\n *\n * @param {string} userMessage - The error message to display.\n * @param {unknown} [e] - (Optional) The error object or additional information.\n *\n * @return {void}\n */\n static logError(userMessage: string, e?: unknown): void {\n if (Helper.debug) {\n console.error(userMessage, e);\n\n return;\n }\n\n console.error(userMessage);\n }\n\n /**\n * Get entity state.\n *\n * @return {HassEntity}\n */\n static getEntityState(entity_id: string): HassEntity {\n return this.#hassStates[entity_id]\n }\n\n\n /**\n * Get translation.\n *\n * @return {string}\n */\n static localize(translationKey: string): string {\n return this.#hassLocalize(translationKey) ?? \"translation not found\";\n }\n\n /**\n * Get valid entity.\n *\n * @return {StrategyEntity}\n */\n static getValidEntity(entity: StrategyEntity): Boolean {\n return entity.disabled_by === null && entity.hidden_by === null\n }\n\n static getFromDomainState({ domain, operator, value, ifReturn, elseReturn, area_slug }: { domain: string, operator?: string, value?: string | string[], ifReturn?: string, elseReturn?: string, area_slug?: string | string[] }): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n if (slug) {\n const magic_entity = getMAEntity(slug!, domain);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(domain) : this.#areas[slug]?.domains[domain]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n } else {\n // Get the ID of the devices which are linked to the given area.\n for (const area of Object.values(this.#areas)) {\n if (area.area_id === UNDISCLOSED) continue\n\n const newStates = domain === \"all\"\n ? this.#areas[area.slug]?.entities.map((entity_id) => `states['${entity_id}']`)\n : this.#areas[area.slug]?.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n }\n }\n\n if (domain === \"light\") {\n ifReturn = ifReturn ?? \"amber\";\n }\n if (domain === \"climate\") {\n operator = operator ?? \"ne\";\n value = value ?? \"off\";\n ifReturn = ifReturn ?? \"orange\";\n }\n if (domain === \"cover\") {\n value = value ?? \"open\";\n ifReturn = ifReturn ?? \"cyan\";\n }\n if (domain === \"fan\") {\n ifReturn = ifReturn ?? \"green\";\n }\n if (domain === \"media_player\") {\n value = value ?? \"playing\";\n ifReturn = ifReturn ?? \"dark-blue\";\n }\n if (domain === \"switch\") {\n ifReturn = ifReturn ?? \"blue\";\n }\n\n const formatedValue = Array.isArray(value) ? JSON.stringify(value).replaceAll('\"', \"'\") : `'${value ?? 'on'}'`;\n\n return `{% set entities = [${states}] %}{{ '${ifReturn ?? 'white'}' if entities | selectattr('state','${operator ?? 'eq'}', ${formatedValue}) | list | count > 0 else '${elseReturn ?? 'grey'}' }}`;\n }\n\n static getBinarySensorColorFromState(device_class: string, operator: string, value: string, ifReturn: string, elseReturn: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"binary_sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n\n if (newStates) states.push(...newStates);\n }\n\n return `\n {% set entities = [${states}] %}\n {{ '${ifReturn}' if entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | selectattr('state','${operator}','${value}') | list | count else '${elseReturn}' }}`;\n }\n\n static getSensorColorFromState(device_class: string, area_slug: string | string[] = \"global\"): string | undefined {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n if (device_class === \"battery\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n red\n {% elif bl < 30 %}\n orange\n {% elif bl >= 30 %}\n green\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n if (device_class === \"temperature\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n blue\n {% elif bl < 30 %}\n orange\n {% elif bl >= 30 %}\n red\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n if (device_class === \"humidity\") {\n return `\n {% set entities = [${states}] %}\n {% set humidity = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if humidity < 30 %}\n blue\n {% elif humidity >= 30 and humidity <= 60 %}\n green\n {% else %}\n red\n {% endif %}\n `;\n }\n\n return undefined;\n }\n\n static getSensorIconFromState(device_class: string, area_slug: string | string[] = \"global\"): string | undefined {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n if (device_class === \"battery\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl == 'unknown' or bl == 'unavailable' %}\n {% elif bl < 10 %} mdi:battery-outline\n {% elif bl < 20 %} mdi:battery-10\n {% elif bl < 30 %} mdi:battery-20\n {% elif bl < 40 %} mdi:battery-30\n {% elif bl < 50 %} mdi:battery-40\n {% elif bl < 60 %} mdi:battery-50\n {% elif bl < 70 %} mdi:battery-60\n {% elif bl < 80 %} mdi:battery-70\n {% elif bl < 90 %} mdi:battery-80\n {% elif bl < 100 %} mdi:battery-90\n {% elif bl == 100 %} mdi:battery\n {% else %} mdi:battery{% endif %}\n `;\n }\n\n if (device_class === \"temperature\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n mdi:thermometer-low\n {% elif bl < 30 %}\n mdi:thermometer\n {% elif bl >= 30 %}\n mdi:thermometer-high\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n return undefined;\n }\n}\n\nexport { Helper };\n","import { Helper } from \"../Helper\";\nimport { cards } from \"../types/strategy/cards\";\nimport { generic } from \"../types/strategy/generic\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Abstract Card Class\n *\n * To create a new card, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractCard {\n /**\n * Entity to create the card for.\n *\n * @type {generic.RegistryEntry}\n */\n entity: generic.RegistryEntry;\n\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:help-circle\",\n };\n\n /**\n * Class constructor.\n *\n * @param {generic.RegistryEntry} entity The hass entity to create a card for.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor(entity: generic.RegistryEntry) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.entity = entity;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n return {\n ...this.config,\n entity: this.entity && \"entity_id\" in this.entity ? this.entity.entity_id : undefined,\n };\n }\n}\n\nexport { AbstractCard };\n","import { StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\nimport { getAggregateEntity, getAreaName, getFloorName, getStateContent, groupBy } from \"../utils\";\nimport { Helper } from \"../Helper\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { UNDISCLOSED } from \"../variables\";\n\ninterface AggregateCardConfig {\n title?: string;\n subtitle?: string;\n device_name?: string;\n device_class?: string | string[];\n}\n\n/**\n * Aggregate Card class.\n *\n * Used for creating a Title Card with controls.\n *\n * @class\n */\nclass AggregateCard {\n /**\n * @type {string} The domain to control the entities of.\n * @private\n */\n readonly #domain: string;\n\n /**\n * Default configuration of the card.\n *\n * @type {AggregateCardConfig}\n * @private\n */\n readonly #defaultConfig: AggregateCardConfig = {\n device_name: \"Global\",\n };\n\n /**\n * Class constructor.\n *\n * @param {string} domain The domain to control the entities of.\n * @param {AggregateCardConfig} options Aggregate Card options.\n */\n constructor(domain: string, options: AggregateCardConfig = {}) {\n this.#domain = domain;\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...options,\n };\n }\n\n /**\n * Create a Aggregate card.\n *\n * @return {StackCardConfig} A Aggregate card.\n */\n createCard(): StackCardConfig {\n\n const domains = typeof (this.#domain) === \"string\" ? [this.#domain] : this.#domain;\n const deviceClasses = this.#defaultConfig.device_class && typeof (this.#defaultConfig.device_class) === \"string\" ? [this.#defaultConfig.device_class] : this.#defaultConfig.device_class;\n\n const cards: LovelaceCardConfig[] = [];\n\n const globalEntities = getAggregateEntity(Helper.magicAreasDevices[\"global\"], domains, deviceClasses)[0] ?? false\n\n if (globalEntities) {\n cards.push({\n type: \"tile\",\n entity: globalEntities.entity_id,\n state_content: getStateContent(globalEntities.entity_id),\n color: globalEntities.entity_id.startsWith('binary_sensor.') ? 'red' : false,\n icon_tap_action: this.#domain === \"light\" ? \"more-info\" : \"toggle\",\n });\n }\n\n\n\n for (const floor of Helper.orderedFloors) {\n if (floor.areas_slug.length === 0) continue\n\n let floorCards: (TemplateCardConfig)[] = [];\n floorCards.push({\n type: \"custom:mushroom-title-card\",\n subtitle: getFloorName(floor),\n card_mod: {\n style: `\n ha-card.header {\n padding-top: 8px;\n }\n `,\n }\n });\n\n let areaCards: (TemplateCardConfig)[] = [];\n\n for (const [i, area] of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).entries()) {\n\n if (Helper.strategyOptions.areas[area?.slug]?.hidden) continue\n\n if (area.slug !== UNDISCLOSED) {\n const areaEntities = getAggregateEntity(Helper.magicAreasDevices[area.slug], domains, deviceClasses).map(e => e.entity_id).filter(Boolean)\n\n for (const areaEntity of areaEntities) {\n areaCards.push({\n type: \"tile\",\n entity: areaEntity,\n primary: getAreaName(area),\n state_content: getStateContent(areaEntity),\n color: areaEntity.startsWith('binary_sensor.') ? 'red' : false,\n });\n }\n }\n\n // Horizontally group every two area cards if all cards are created.\n if (i === floor.areas_slug.length - 1) {\n for (let i = 0; i < areaCards.length; i += 2) {\n floorCards.push({\n type: \"horizontal-stack\",\n cards: areaCards.slice(i, i + 2),\n });\n }\n }\n\n }\n\n if (areaCards.length === 0) floorCards.pop()\n\n if (floorCards.length > 1) cards.push(...floorCards)\n\n }\n\n return {\n type: \"vertical-stack\",\n cards: cards,\n };\n }\n}\n\nexport { AggregateCard };\n","import { AbstractCard } from \"./AbstractCard\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { TileCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Alarm Card Class\n *\n * Used to create a card for controlling an entity of the fan domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass AlarmCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {TileCardConfig}\n * @private\n */\n #defaultConfig: TileCardConfig = {\n type: \"tile\",\n entity: undefined,\n icon: undefined,\n features: [\n {\n type: \"alarm-modes\",\n modes: [\"armed_home\", \"armed_away\", \"armed_night\", \"armed_vacation\", \"armed_custom_bypass\", \"disarmed\"]\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { AlarmCard };\n","import { SensorCard } from \"./SensorCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Sensor Card Class\n *\n * Used to create a card for controlling an entity of the binary_sensor domain.\n *\n * @class\n * @extends SensorCard\n */\nclass BinarySensorCard extends SensorCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n state_content: \"last_changed\",\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { BinarySensorCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {PictureEntityCardConfig} from \"../types/homeassistant/panels/lovelave/cards/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Camera Card Class\n *\n * Used to create a card for controlling an entity of the camera domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass CameraCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {PictureEntityCardConfig}\n * @private\n */\n #defaultConfig: PictureEntityCardConfig = {\n entity: \"\",\n type: \"picture-entity\",\n show_name: false,\n show_state: false,\n camera_view: \"live\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.PictureEntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.PictureEntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {CameraCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { ClimateCardConfig } from \"../types/lovelace-mushroom/cards/climate-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Card Class\n *\n * Used to create a card for controlling an entity of the climate domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass ClimateCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {ClimateCardConfig}\n * @private\n */\n #defaultConfig: ClimateCardConfig = {\n type: \"thermostat\",\n icon: undefined,\n show_current_as_primary: true,\n vertical: false,\n features: [\n {\n type: \"target-temperature\"\n },\n {\n type: \"climate-preset-modes\",\n style: \"icons\",\n preset_modes: [\"home\", \"eco\", \"comfort\", \"away\", \"boost\"]\n },\n {\n type: \"climate-hvac-modes\",\n hvac_modes: [\n \"auto\",\n \"heat_cool\",\n \"heat\",\n \"cool\",\n \"dry\",\n \"fan_only\",\n \"off\",\n ]\n },\n {\n type: \"climate-fan-modes\",\n style: \"icons\",\n fan_modes: [\n \"off\",\n \"low\",\n \"medium\",\n \"high\",\n ]\n }\n ],\n\n layout_options: {\n grid_columns: 2,\n grid_rows: 1,\n },\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.ClimateCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.ClimateCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { ClimateCard };\n","import { cards } from \"../types/strategy/cards\";\nimport { LovelaceBadgeConfig, LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\nimport { Helper } from \"../Helper\";\nimport { getMAEntity, navigateTo } from \"../utils\";\n\n/**\n * Controller Card class.\n *\n * Used for creating a Title Card with controls.\n *\n * @class\n */\nclass ControllerCard {\n\n /**\n * @type {string} The target to control the entities of.\n * @private\n */\n readonly #domain: string;\n\n /**\n * @type {string} The target to control the entities of.\n * @private\n */\n readonly #magic_device_id: string;\n\n /**\n * Default configuration of the card.\n *\n * @type {cards.ControllerCardConfig}\n * @private\n */\n readonly #defaultConfig: cards.ControllerCardConfig = {\n type: \"custom:mushroom-title-card\",\n showControls: true,\n iconOn: \"mdi:power-on\",\n iconOff: \"mdi:power-off\",\n onService: \"none\",\n offService: \"none\",\n };\n\n /**\n * Class constructor.\n *\n * @param {cards.ControllerCardOptions} options Controller Card options.\n */\n constructor(options: cards.ControllerCardOptions = {}, domain: string, magic_device_id: string = \"global\") {\n this.#domain = domain;\n this.#magic_device_id = magic_device_id;\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...options,\n };\n }\n\n /**\n * Create a Controller card.\n *\n * @return {LovelaceCardConfig[]} A Controller card.\n */\n createCard(): LovelaceCardConfig[] {\n const cards: LovelaceCardConfig[] = [];\n\n if (this.#defaultConfig.title) {\n cards.push({\n type: \"heading\",\n heading: this.#defaultConfig.title ?? \"No title\",\n icon: this.#defaultConfig.titleIcon,\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n ...(this.#defaultConfig.titleNavigate && {\n tap_action: navigateTo(this.#defaultConfig.titleNavigate)\n })\n })\n }\n\n if (this.#defaultConfig.subtitle) {\n cards.push({\n type: \"heading\",\n heading_style: \"subtitle\",\n badges: [],\n heading: this.#defaultConfig.subtitle,\n icon: this.#defaultConfig.subtitleIcon,\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n ...(this.#defaultConfig.subtitleNavigate && {\n tap_action: this.#defaultConfig.tap_action ?? navigateTo(this.#defaultConfig.subtitleNavigate),\n })\n })\n }\n\n if (this.#defaultConfig.showControls || this.#defaultConfig.extraControls) {\n\n const magic_device = Helper.magicAreasDevices[this.#magic_device_id ?? \"\"]\n const badges: LovelaceBadgeConfig[] = [];\n\n if (this.#defaultConfig.showControls) {\n\n const chipModule = Helper.strategyOptions.domains[this.#domain]?.controlChip;\n const chipOptions = {\n show_content: true,\n magic_device_id: this.#magic_device_id,\n tap_action: { action: \"more-info\" },\n ...this.#defaultConfig.controlChipOptions,\n };\n const chip = typeof chipModule === 'function' && new chipModule(chipOptions).getChip();\n\n badges.push({\n type: \"custom:mushroom-chips-card\",\n chips: [chip],\n alignment: \"end\",\n card_mod: this.#domain === \"sensor\" && {\n style: `\n ha-card {\n min-width: 100px;\n }\n `,\n }\n });\n }\n\n if (magic_device && this.#defaultConfig.extraControls) {\n badges.push(...this.#defaultConfig.extraControls(magic_device)?.map((chip: any) => {\n return {\n type: \"custom:mushroom-chips-card\",\n chips: [chip]\n }\n }));\n }\n\n if (cards[0]?.badges && badges.length) {\n cards[0].badges = badges;\n }\n }\n\n return cards;\n }\n}\n\nexport { ControllerCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {CoverCardConfig} from \"../types/lovelace-mushroom/cards/cover-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover Card Class\n *\n * Used to create a card for controlling an entity of the cover domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass CoverCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {CoverCardConfig}\n * @private\n */\n #defaultConfig: CoverCardConfig = {\n type: \"tile\",\n icon: undefined,\n features: [\n {\n type: \"cover-open-close\"\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.CoverCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.CoverCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {CoverCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {FanCardConfig} from \"../types/lovelace-mushroom/cards/fan-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan Card Class\n *\n * Used to create a card for controlling an entity of the fan domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass FanCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {FanCardConfig}\n * @private\n */\n #defaultConfig: FanCardConfig = {\n type: \"tile\",\n icon: undefined,\n features:[\n {\n type: \"fan-speed\"\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.FanCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.FanCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {FanCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { Helper } from \"../Helper\";\nimport { ControlChip } from \"../chips/ControlChip\";\nimport { AggregateChip } from \"../chips/AggregateChip\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { getAreaName, getMAEntity, slugify } from \"../utils\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { ClimateChip } from \"../chips/ClimateChip\";\nimport { LightChip } from \"../chips/LightChip\";\nimport { ConditionalChip } from \"../chips/ConditionalChip\";\nimport { UNAVAILABLE, UNDISCLOSED } from \"../variables\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// Utility function to generate badge icon and color\nconst getBadgeIcon = (entityId: string) => `\n {% set bl = states('${entityId}') %}\n {% if bl == 'unknown' or bl == 'unavailable' %}\n {% elif bl | int() < 10 %} mdi:battery-outline\n {% elif bl | int() < 20 %} mdi:battery-10\n {% elif bl | int() < 30 %} mdi:battery-20\n {% elif bl | int() < 40 %} mdi:battery-30\n {% elif bl | int() < 50 %} mdi:battery-40\n {% elif bl | int() < 60 %} mdi:battery-50\n {% elif bl | int() < 70 %} mdi:battery-60\n {% elif bl | int() < 80 %} mdi:battery-70\n {% elif bl | int() < 90 %} mdi:battery-80\n {% elif bl | int() < 100 %} mdi:battery-90\n {% elif bl | int() == 100 %} mdi:battery\n {% else %} mdi:battery-unknown\n {% endif %}\n`;\n\nconst getBadgeColor = (entityId: string) => `\n {% set bl = states('${entityId}') %}\n {% if bl == 'unknown' or bl == 'unavailable' %} disabled\n {% elif bl | int() < 10 %} red\n {% elif bl | int() < 20 %} red\n {% elif bl | int() < 30 %} red\n {% elif bl | int() < 40 %} orange\n {% elif bl | int() < 50 %} orange\n {% elif bl | int() < 60 %} green\n {% elif bl | int() < 70 %} green\n {% elif bl | int() < 80 %} green\n {% elif bl | int() < 90 %} green\n {% elif bl | int() == 100 %} green\n {% else %} disabled\n {% endif %}\n`;\n\nclass HomeAreaCard {\n /**\n * Magic area device to create the card for.\n *\n * @type {MagicAreaRegistryEntry}\n */\n magicDevice: MagicAreaRegistryEntry\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyArea}\n * @private\n */\n area: StrategyArea\n\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:help-circle\",\n };\n\n constructor(options: cards.HomeAreaCardOptions) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.magicDevice = Helper.magicAreasDevices[options.area_slug];\n this.area = Helper.areas[options.area_slug];\n\n this.config = { ...this.config, ...options };\n }\n\n getDefaultConfig(area: StrategyArea): TemplateCardConfig {\n\n const { all_lights } = this.magicDevice?.entities || {};\n const icon = area.icon || \"mdi:home-outline\";\n\n const cards = [\n this.getMainCard(),\n ];\n\n cards.push(this.getChipsCard());\n\n if (all_lights) {\n cards.push(this.getLightCard(all_lights));\n }\n\n return {\n type: \"custom:stack-in-card\",\n cards: cards\n };\n }\n\n getUndisclosedAreaConfig(area: StrategyArea): TemplateCardConfig {\n return {\n type: \"custom:mushroom-template-card\",\n primary: getAreaName(area),\n icon: \"mdi:devices\",\n icon_color: \"grey\",\n fill_container: true,\n layout: \"horizontal\",\n tap_action: { action: \"navigate\", navigation_path: area.slug },\n card_mod: { style: this.getCardModStyle() }\n };\n }\n\n getMainCard(): any {\n\n const { area_state, aggregate_temperature, aggregate_battery } = this.magicDevice?.entities || {};\n const icon = this.area.icon || \"mdi:home-outline\";\n\n return {\n type: \"custom:mushroom-template-card\",\n primary: getAreaName(this.area),\n secondary: aggregate_temperature && this.getTemperatureTemplate(aggregate_temperature),\n icon: icon,\n icon_color: this.getIconColorTemplate(area_state),\n fill_container: true,\n layout: \"horizontal\",\n badge_icon: getBadgeIcon(aggregate_battery?.entity_id),\n badge_color: getBadgeColor(aggregate_battery?.entity_id),\n tap_action: { action: \"navigate\", navigation_path: this.area.slug },\n card_mod: { style: this.getCardModStyle() }\n };\n }\n\n getChipsCard(): any {\n\n const { light_control, aggregate_health, aggregate_window, aggregate_door, aggregate_cover, aggregate_climate } = this.magicDevice?.entities || {};\n const { motion, occupancy, presence, window, climate, door, cover, health, light } = this.area.domains;\n\n return {\n type: \"custom:mushroom-chips-card\",\n alignment: \"end\",\n chips: [\n (motion || occupancy || presence) && new AreaStateChip({ area: this.area }).getChip(),\n health && new ConditionalChip(\n aggregate_health ? [{ entity: aggregate_health?.entity_id, state: \"on\" }] : health.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ device_class: \"health\" }).getChip()\n ).getChip(),\n window?.length && new ConditionalChip(\n aggregate_window ? [{ entity: aggregate_window?.entity_id, state: \"on\" }] : window.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"window\", show_content: false }).getChip()\n ).getChip(),\n door && new ConditionalChip(\n aggregate_door ? [{ entity: aggregate_door?.entity_id, state: \"on\" }] : door.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"door\", show_content: false }).getChip()\n ).getChip(),\n cover && new ConditionalChip(\n aggregate_cover ? [{ entity: aggregate_cover?.entity_id, state: \"on\" }] : cover.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"cover\", show_content: false }).getChip()\n ).getChip(),\n climate && new ClimateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug }).getChip(),\n light && new LightChip({ area_slug: this.area.slug, magic_device_id: this.area.slug, tap_action: { action: \"toggle\" } }).getChip(),\n new ConditionalChip(\n [{ entity: this.magicDevice?.entities?.all_lights?.entity_id, state_not: UNAVAILABLE }],\n new ControlChip(\"light\", light_control?.entity_id).getChip()\n ).getChip()\n ].filter(Boolean),\n card_mod: { style: this.getChipsCardModStyle() }\n };\n }\n\n getLightCard(all_lights: EntityRegistryEntry): any {\n return {\n type: \"tile\",\n features: [{ type: \"light-brightness\" }],\n hide_state: true,\n entity: all_lights.entity_id,\n card_mod: { style: this.getLightCardModStyle() }\n };\n }\n\n getTemperatureTemplate(aggregate_temperature: EntityRegistryEntry): string {\n if (!aggregate_temperature) return Helper.getAverageStateTemplate(\"temperature\");\n return `\n {% set t = states('${aggregate_temperature?.entity_id}') %}\n {% if t != 'unknown' and t != 'unavailable' %}\n {{ t | float | round(1) }}{{ state_attr('${aggregate_temperature?.entity_id}', 'unit_of_measurement')}}\n {% endif %}\n `;\n }\n\n getIconColorTemplate(area_state: EntityRegistryEntry): string {\n const condition = area_state?.entity_id ? `\"dark\" in state_attr('${area_state?.entity_id}', 'states')` : `not is_state(\"sun.sun\", \"above_horizon\")`;\n return `\n {{ \"indigo\" if ${condition} else \"amber\" }}\n `;\n }\n\n getCardModStyle(): string {\n return `\n :host {\n background: #1f1f1f;\n height: 66px;\n }\n mushroom-badge-icon {\n left: 24px;\n top: 0px;\n }\n ha-card {\n box-shadow: none!important;\n border: none;\n }\n ha-state-icon {\n --icon-symbol-size: 40px;\n }\n\n `;\n }\n\n getChipsCardModStyle(): string {\n return `\n ha-card {\n --chip-box-shadow: none;\n --chip-spacing: 0px;\n width: -webkit-fill-available;\n margin-top: -12px;\n }\n `;\n }\n\n getLightCardModStyle(): string {\n return `\n ha-card {\n box-shadow: none!important;\n border: none;\n margin-top: -12px;\n }\n ha-tile-icon {\n display: none;\n }\n ha-tile-info {\n display: none;\n }\n `;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n const defaultConfig = this.area.slug === UNDISCLOSED ? this.getUndisclosedAreaConfig(this.area) : this.getDefaultConfig(this.area);\n const magicAreasEntity: EntityRegistryEntry = getMAEntity(this.magicDevice?.id, \"area_state\") as EntityRegistryEntry;\n\n return {\n ...defaultConfig,\n entity: magicAreasEntity ? magicAreasEntity.entity_id : undefined,\n };\n }\n}\n\nexport { HomeAreaCard };\n","import { cards } from \"../types/strategy/cards\";\nimport { LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\n\n\nexport interface ImageAreaCardConfig extends LovelaceCardConfig {\n type: \"area\";\n area: string;\n show_camera: boolean;\n alert_classes?: string[];\n sensor_classes?: string[];\n card_mod?: {\n style: string;\n };\n}\n\n/**\n * Scene Card Class\n *\n * Used to create a card for an entity of the Scene domain.\n *\n * @class\n */\nclass ImageAreaCard {\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: ImageAreaCardConfig = {\n type: \"area\",\n area: \"\",\n show_camera: true,\n alert_classes: [],\n sensor_classes: [],\n card_mod: {\n style: `\n .sensors {\n display: none;\n }\n .buttons {\n display: none;\n }\n `\n }\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(area_slug: string) {\n\n this.config.area = area_slug;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n return this.config;\n }\n}\n\nexport { ImageAreaCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {LightCardConfig} from \"../types/lovelace-mushroom/cards/light-card-config\";\nimport {generic} from \"../types/strategy/generic\";\nimport isCallServiceActionConfig = generic.isCallServiceActionConfig;\nimport isCallServiceActionTarget = generic.isCallServiceActionTarget;\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Card Class\n *\n * Used to create a card for controlling an entity of the light domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass LightCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {LightCardConfig}\n * @private\n */\n #defaultConfig: LightCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.LightCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.LightCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {LightCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {LockCardConfig} from \"../types/lovelace-mushroom/cards/lock-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Lock Card Class\n *\n * Used to create a card for controlling an entity of the lock domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass LockCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {LockCardConfig}\n * @private\n */\n #defaultConfig: LockCardConfig = {\n type: \"custom:mushroom-lock-card\",\n icon: undefined,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.LockCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.LockCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {LockCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {MediaPlayerCardConfig} from \"../types/lovelace-mushroom/cards/media-player-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Mediaplayer Card Class\n *\n * Used to create a card for controlling an entity of the media_player domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass MediaPlayerCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {MediaPlayerCardConfig}\n * @private\n */\n #defaultConfig: MediaPlayerCardConfig = {\n type: \"custom:mushroom-media-player-card\",\n use_media_info: true,\n media_controls: [\n \"on_off\",\n \"play_pause_stop\",\n ],\n show_volume_level: true,\n volume_controls: [\n \"volume_mute\",\n \"volume_set\",\n \"volume_buttons\",\n ],\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.MediaPlayerCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.MediaPlayerCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {MediaPlayerCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Miscellaneous Card Class\n *\n * Used to create a card an entity of any domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass MiscellaneousCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {MiscellaneousCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {NumberCardConfig} from \"../types/lovelace-mushroom/cards/number-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported\n/**\n * Number Card Class\n *\n * Used to create a card for controlling an entity of the number domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass NumberCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {NumberCardConfig}\n * @private\n */\n #defaultConfig: NumberCardConfig = {\n type: \"custom:mushroom-number-card\",\n icon: undefined,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.NumberCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.NumberCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {NumberCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { PersonCardConfig } from \"../types/lovelace-mushroom/cards/person-card-config\";\n\n/**\n * Person Card Class\n *\n * Used to create a card for an entity of the Person domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass PersonCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {PersonCardConfig}\n * @private\n */\n #defaultConfig: PersonCardConfig = {\n type: \"custom:mushroom-person-card\",\n icon_type: \"entity-picture\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.PersonCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.PersonCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { PersonCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport { SceneCardConfig } from \"../types/lovelace-mushroom/cards/scene-card-config\";\n\n/**\n * Scene Card Class\n *\n * Used to create a card for an entity of the Scene domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SceneCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {SceneCardConfig}\n * @private\n */\n #defaultConfig: SceneCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n icon_type: \"entity-picture\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.SceneCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.SceneCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SceneCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Sensor Card Class\n *\n * Used to create a card for controlling an entity of the sensor domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SensorCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:information\",\n animate: true,\n line_color: \"green\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SensorCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport { SwipeCardConfig } from \"../types/lovelace-mushroom/cards/swipe-card-config\";\nimport { SwiperOptions } from \"swiper/types/swiper-options\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Swipe Card Class\n *\n * Used to create a card for controlling an entity of the light domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SwipeCard {\n\n /**\n * Configuration of the card.\n *\n * @type {SwipeCardConfig}\n */\n config: SwipeCardConfig = {\n type: \"custom:swipe-card\",\n start_card: 1,\n parameters: {\n centeredSlides: false,\n followFinger: true,\n spaceBetween: 16,\n grabCursor: true,\n },\n cards: [],\n };\n\n /**\n * Class constructor.\n *\n * @param {AbstractCard[]} cards The hass entity to create a card for.\n * @param {SwiperOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(cards: (AbstractCard | EntityCardConfig)[], options?: SwiperOptions) {\n\n this.config.cards = cards;\n\n const multipleSlicesPerView = 2.2\n const slidesPerView = cards.length > 2 ? multipleSlicesPerView : cards.length ?? 1\n\n this.config.parameters = {...this.config.parameters, slidesPerView, ...options};\n }\n\n /**\n * Get a card.\n *\n * @return {SwipeCardConfig} A card object.\n */\n getCard(): SwipeCardConfig {\n return {\n ...this.config,\n };\n }\n}\n\nexport {SwipeCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch Card Class\n *\n * Used to create a card for controlling an entity of the switch domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SwitchCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n tap_action: {\n action: \"toggle\",\n },\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SwitchCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {VACUUM_COMMANDS, VacuumCardConfig} from \"../types/lovelace-mushroom/cards/vacuum-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Vacuum Card Class\n *\n * Used to create a card for controlling an entity of the vacuum domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass VacuumCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {VacuumCardConfig}\n * @private\n */\n #defaultConfig: VacuumCardConfig = {\n type: \"custom:mushroom-vacuum-card\",\n icon: undefined,\n icon_animation: true,\n commands: [...VACUUM_COMMANDS],\n tap_action: {\n action: \"more-info\",\n }\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.VacuumCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.VacuumCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {VacuumCard};\n","import { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport isCallServiceActionConfig = generic.isCallServiceActionConfig;\n\n/**\n * Abstract Chip class.\n *\n * To create a new chip, extend this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractChip {\n /**\n * Configuration of the chip.\n *\n * @type {LovelaceChipConfig}\n */\n config: LovelaceChipConfig = {\n type: \"template\"\n };\n\n /**\n * Class Constructor.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the chip.\n *\n * @returns {LovelaceChipConfig} A chip.\n */\n getChip(): LovelaceChipConfig {\n return this.config;\n }\n\n /**\n * Set the target to switch.\n *\n * @param {HassServiceTarget} target Target to switch.\n */\n setTapActionTarget(target: HassServiceTarget) {\n if (\"tap_action\" in this.config && isCallServiceActionConfig(this.config.tap_action)) {\n this.config.tap_action.target = target;\n\n return;\n }\n\n if (Helper.debug) {\n console.warn(\n this.constructor.name\n + \" - Target not set: Invalid target or tap action.\");\n }\n }\n}\n\nexport { AbstractChip };\n","import { chips } from \"../types/strategy/chips\";\nimport { DEVICE_CLASSES } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass AggregateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig | undefined}\n *\n */\n getDefaultConfig({ device_class, show_content = true, magic_device_id = \"global\", area_slug, tap_action }: chips.AggregateChipOptions) {\n\n const domain = DEVICE_CLASSES.sensor.includes(device_class) ? \"sensor\" : \"binary_sensor\"\n let icon = device_class !== \"motion\" ? Helper.icons[domain][device_class]?.default : Helper.icons[domain][device_class]?.state?.on\n let icon_color = \"\"\n let content = \"\"\n\n const device = Helper.magicAreasDevices[magic_device_id]\n const magicEntity = device?.entities[`aggregate_${device_class}`]\n\n if (domain === \"binary_sensor\") {\n content = show_content ? Helper.getDeviceClassCountTemplate(device_class, \"eq\", \"on\", area_slug) : \"\"\n icon_color = Helper.getBinarySensorColorFromState(device_class, \"eq\", \"on\", \"red\", \"grey\", area_slug)\n }\n\n if (domain === \"sensor\") {\n\n content = show_content ? Helper.getAverageStateTemplate(device_class, area_slug) : \"\"\n icon_color = Helper.getSensorColorFromState(device_class, area_slug!) ?? \"white\"\n icon = Helper.getSensorIconFromState(device_class, area_slug!) ?? icon\n\n if (device_class === \"illuminance\") {\n if (magicEntity) {\n icon_color = `{{ 'blue' if 'dark' in state_attr('${device?.entities.area_state?.entity_id}', 'states') else 'amber' }}`\n }\n }\n }\n\n if (device_class === \"cover\") {\n\n if (magicEntity) {\n icon_color = `{{ 'red' if is_state('${magicEntity.entity_id}', 'open') else 'grey' }}`\n content = show_content ? Helper.getDeviceClassCountTemplate(device_class, \"eq\", \"open\", area_slug) : \"\"\n }\n }\n\n if (device_class === \"health\") {\n icon_color = `{{ 'red' if is_state(entity, 'on') else 'green' }}`\n }\n\n return {\n entity: magicEntity?.entity_id,\n icon_color,\n icon,\n content: content,\n tap_action: tap_action ?? { action: \"none\" }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.AggregateChipOptions} options The chip options.\n */\n constructor(options: chips.AggregateChipOptions) {\n super();\n\n const defaultConfig = this.getDefaultConfig(options)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AggregateChip };\n","import { chips } from \"../types/strategy/chips\";\nimport { AlarmChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { navigateTo } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols False positive.\n/**\n * Alarm Chip class.\n *\n * Used to create a chip for showing the alarm.\n */\nclass AlarmChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @private\n * @readonly\n */\n readonly #defaultConfig: AlarmChipConfig = {\n type: \"alarm-control-panel\",\n tap_action: navigateTo('security')\n };\n\n /**\n * Class Constructor.\n *\n * @param {string} entityId Id of a alarm entity.\n * @param {chips.AlarmChipOptions} options Alarm Chip options.\n */\n constructor(entityId: string, options: chips.AlarmChipOptions = {}) {\n super();\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...{ entity: entityId },\n ...options,\n };\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { AlarmChip };\n","\nimport { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport StrategyArea = generic.StrategyArea;\nimport { LovelaceChipConfig, TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { MAGIC_AREAS_DOMAIN, TOD_ORDER } from \"../variables\";\nimport { slugify } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area selects Chips class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass AreaScenesChips {\n /**\n * Configuration of the chip.\n *\n * @type {LovelaceChipConfig[]}\n */\n config: LovelaceChipConfig[] = [];\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(device: MagicAreaRegistryEntry, area: StrategyArea): TemplateChipConfig[] {\n\n const selects = TOD_ORDER.map(tod => Helper.getEntityState(device?.entities[`scene_${tod as 'morning'}`]?.entity_id)).filter(Boolean)\n\n const chips = [] as TemplateChipConfig[]\n\n if (selects.find(scene => scene?.state == \"Adaptive lighting\")) {\n chips.push({\n type: \"template\",\n icon: \"mdi:theme-light-dark\",\n content: \"AD\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_light_adapt`,\n data: {\n area: slugify(device.name),\n }\n },\n })\n }\n\n selects.forEach((scene, index) => {\n if (scene?.state === \"Scène instantanée\") {\n const entity_id = `scene.${slugify(device.name)}_${TOD_ORDER[index]}_snapshot_scene`\n chips.push({\n type: \"template\",\n entity: scene?.entity_id,\n icon: scene?.attributes.icon,\n content: TOD_ORDER[index],\n tap_action: {\n action: \"call-service\",\n service: \"scene.turn_on\",\n data: { entity_id }\n },\n hold_action: {\n action: \"more-info\"\n }\n })\n } else if (scene?.state !== \"Adaptive lighting\") {\n const sceneEntity_id = Helper.getStateEntities(area, \"scene\").find(s => s.attributes.friendly_name === scene?.state)?.entity_id\n chips.push({\n type: \"template\",\n entity: scene?.entity_id,\n icon: scene?.attributes.icon,\n content: TOD_ORDER[index],\n tap_action: {\n action: \"call-service\",\n service: \"scene.turn_on\",\n data: {\n entity_id: sceneEntity_id,\n }\n },\n hold_action: {\n action: \"more-info\"\n }\n })\n }\n })\n\n return chips\n\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry, area: StrategyArea) {\n\n this.config = this.getDefaultConfig(device, area);\n\n }\n\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the chip.\n *\n * @returns {LovelaceChipConfig} A chip.\n */\n getChips(): LovelaceChipConfig[] {\n return this.config;\n }\n}\n\nexport { AreaScenesChips };\n","import { AreaInformations } from \"../popups/AreaInformationsPopup\";\nimport { generic } from \"../types/strategy/generic\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AREA_STATE_ICONS, DEVICE_ICONS } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area state Chip class.\n *\n * Used to create a chip to indicate area state.\n */\nclass AreaStateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig({ area, floor, showContent = false }: { area?: generic.StrategyArea, floor?: generic.StrategyFloor, showContent?: boolean }): TemplateChipConfig {\n\n const device_id = area?.slug ?? floor?.floor_id\n\n const device = device_id ? Helper.magicAreasDevices[device_id] : undefined\n const { area_state, presence_hold, all_media_players, aggregate_motion, aggregate_presence, aggregate_occupancy } = device?.entities ?? {}\n\n const motion_entities = aggregate_motion ? [aggregate_motion.entity_id] : area?.domains.motion ?? []\n const presence_entities = aggregate_presence ? [aggregate_presence.entity_id] : area?.domains.presence ?? []\n const occupancy_entities = aggregate_occupancy ? [aggregate_occupancy.entity_id] : area?.domains.occupancy ?? []\n const media_player_entities = all_media_players ? [all_media_players.entity_id] : area?.domains.media_player ?? []\n\n const isOn = '| selectattr(\"state\",\"eq\", \"on\") | list | count > 0'\n const isSomeone = `[${[...motion_entities, ...presence_entities, ...occupancy_entities]?.map(e => `states['${e}']`)}] ${isOn}`\n const isMotion = `[${motion_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isPresence = `[${presence_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isOccupancy = `[${occupancy_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isMediaPlaying = `[${media_player_entities?.map(e => `states['${e}']`)}] | selectattr(\"state\",\"eq\", \"playing\") | list | count > 0`\n\n return {\n type: \"template\",\n entity: area_state?.entity_id,\n icon_color: `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set motion = ${isSomeone} %}\n {% set media_player = ${isMediaPlaying} %}\n {% set bl = state_attr('${area_state?.entity_id}', 'states') or [] %}\n {% if motion %}\n red\n {% elif media_player %}\n blue\n {% elif presence_hold == 'on' %}\n red\n {% elif 'sleep' in bl %}\n blue\n {% elif 'extended' in bl %}\n orange\n {% elif 'occupied' in bl %}\n grey\n {% else %}\n transparent\n {% endif %}\n `,\n icon: `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set motion = ${isMotion} %}\n {% set presence = ${isPresence} %}\n {% set occupancy = ${isOccupancy} %}\n {% set media_player = ${isMediaPlaying} %}\n {% set bl = state_attr('${area_state?.entity_id}', 'states') or [] %}\n {% if motion %}\n ${Helper.icons.binary_sensor.motion?.state?.on}\n {% elif presence %}\n ${Helper.icons.binary_sensor.presence?.state?.on}\n {% elif occupancy %}\n ${Helper.icons.binary_sensor.occupancy?.state?.on}\n {% elif media_player %}\n ${Helper.icons.media_player._?.state?.playing}\n {% elif presence_hold == 'on' %}\n ${DEVICE_ICONS.presence_hold}\n {% elif 'sleep' in bl %}\n ${AREA_STATE_ICONS.sleep}\n {% elif 'extended' in bl %}\n ${AREA_STATE_ICONS.extended}\n {% elif 'occupied' in bl %}\n ${AREA_STATE_ICONS.occupied}\n {% else %}\n ${AREA_STATE_ICONS.clear}\n {% endif %}`,\n content: showContent ? `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set bl = state_attr('${area_state?.entity_id}', 'states')%}\n {% if presence_hold == 'on' %}\n presence_hold\n {% elif 'sleep' in bl %}\n sleep\n {% elif 'extended' in bl %}\n extended\n {% elif 'occupied' in bl %}\n occupied\n {% else %}\n clear\n {% endif %}` : \"\",\n tap_action: device ? new AreaInformations(device, true).getPopup() : { action: \"none\" },\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: { area?: generic.StrategyArea, floor?: generic.StrategyFloor, showContent?: boolean }) {\n super();\n\n const defaultConfig = this.getDefaultConfig(options)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AreaStateChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate how many climates are operating.\n */\nclass ClimateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:thermostat\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"climate\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"climate\", \"ne\", \"off\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"climate\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options.magic_device_id ?? \"global\", \"climate\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { ClimateChip };\n","import { ConditionalChipConfig, LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\n\ntype ConditionalChipOptions = Omit\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Motion Chip class.\n *\n * Used to create a chip to indicate how many motions are operating.\n */\nclass ConditionalChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: ConditionalChipConfig = {\n type: \"conditional\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {MagicAreaRegistryEntry} device The chip device.\n * @param {ConditionalChipOptions} options The chip options.\n */\n constructor(conditions: Array<{ entity: string; state_not?: string; state?: string; }>, chip: LovelaceChipConfig) {\n super();\n\n this.#defaultConfig.conditions = conditions;\n this.#defaultConfig.chip = chip;\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { ConditionalChip };\n","import { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AREA_CONTROL_ICONS } from \"../variables\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Control Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass ControlChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n entity: undefined,\n content: \"\",\n icon: AREA_CONTROL_ICONS.media_player,\n icon_color: \"green\",\n tap_action: {\n action: \"more-info\"\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(domain: string, entity_id: string) {\n super();\n\n this.#defaultConfig.entity = entity_id\n this.#defaultConfig.icon = AREA_CONTROL_ICONS[domain as \"media_player\"]\n this.#defaultConfig.icon_color = `{{ \"green\" if states(\"${entity_id}\") == \"on\" else \"red\" }}`;\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n\n }\n}\n\nexport { ControlChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover Chip class.\n *\n * Used to create a chip to indicate how many covers aren't closed.\n */\nclass CoverChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:window-open\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"cover\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"cover\", \"eq\", \"open\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"cover\", area_slug: options?.area_slug })\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { CoverChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan Chip class.\n *\n * Used to create a chip to indicate how many fans are on and to turn all off.\n */\nclass FanChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:fan\",\n content: Helper.getCountTemplate(\"fan\", \"eq\", \"on\"),\n tap_action: {\n action: \"navigate\",\n navigation_path: \"fan\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"fan\", \"eq\", \"on\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"fan\", area_slug: options?.area_slug })\n\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { FanChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass LightChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:lightbulb-group\",\n icon_color: \"amber\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"light\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"light\", \"eq\", \"on\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"light\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options?.magic_device_id ?? \"global\", \"light\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { LightChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * MediaPlayer Chip class.\n *\n * Used to create a chip to indicate how many climates are operating.\n */\nclass MediaPlayerChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: Helper.icons.media_player._.default,\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"media_player\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"media_player\", \"eq\", \"playing\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"media_player\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options?.magic_device_id ?? \"global\", \"media_player\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { MediaPlayerChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Safety Chip class.\n *\n * Used to create a chip to indicate how many safetys are operating.\n */\nclass SafetyChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: Helper.icons.binary_sensor.safety?.default,\n icon_color: \"grey\",\n content: Helper.getDeviceClassCountTemplate(\"safety\", \"ne\", \"off\"),\n tap_action: {\n action: \"none\",\n },\n hold_action: {\n action: \"navigate\",\n navigation_path: \"safety\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: chips.TemplateChipOptions = {}) {\n super();\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { SafetyChip };\n","import {Helper} from \"../Helper\";\nimport {chips} from \"../types/strategy/chips\";\nimport {AbstractChip} from \"./AbstractChip\";\nimport {TemplateChipConfig} from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Settings Chip class.\n *\n * Used to create a chip to indicate how many fans are on and to turn all off.\n */\nclass SettingsChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n \"type\": \"template\",\n \"icon\": \"mdi:cog\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: chips.TemplateChipOptions = {}) {\n super();\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SettingsChip};\n","import { Helper } from \"../Helper\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Spotify Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass SpotifyChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(entityId: string): TemplateChipConfig {\n\n return {\n type: \"template\",\n entity: entityId,\n icon_color: `{{ 'green' if is_state('${entityId}', 'playing') else 'grey' }}`,\n content: '{{ states(entity) }}',\n icon: \"mdi:spotify\",\n // content: show_content ? `{{ states('${entityId}') if not states('${entityId}') == 'on' else '' }}` : \"\",\n tap_action: {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Spotify\",\n \"content\":\n {\n type: \"vertical-stack\",\n cards: [\n ...([entityId].map(x => {\n\n const entity = Helper.getEntityState(x)\n const source_list = entity.attributes.source_list\n const chunkSize = 3;\n const source_cards_chunk = []\n\n for (let i = 0; i < source_list.length; i += chunkSize) {\n const chunk = source_list.slice(i, i + chunkSize);\n source_cards_chunk.push(chunk)\n }\n\n return {\n type: \"custom:stack-in-card\",\n cards: [\n {\n type: \"custom:mushroom-media-player-card\",\n entity: \"media_player.spotify_juicy\",\n icon: \"mdi:spotify\",\n icon_color: \"green\",\n use_media_info: true,\n use_media_artwork: false,\n show_volume_level: false,\n media_controls: [\n \"play_pause_stop\",\n \"previous\",\n \"next\"\n ],\n volume_controls: [\n \"volume_buttons\",\n \"volume_set\"\n ],\n fill_container: false,\n card_mod: {\n style: \"ha-card {\\n --rgb-state-media-player: var(--rgb-green);\\n}\\n\"\n }\n },\n {\n type: \"custom:swipe-card\",\n parameters: null,\n spaceBetween: 8,\n scrollbar: null,\n start_card: 1,\n hide: false,\n draggable: true,\n snapOnRelease: true,\n slidesPerView: 2.2,\n cards: [\n ...(source_cards_chunk.map(source_cards => (\n {\n type: \"horizontal-stack\",\n cards: [\n ...(source_cards.map((source: string) => (\n {\n type: \"custom:mushroom-template-card\",\n icon: \"mdi:speaker-play\",\n icon_color: `{% if states[entity].attributes.source == '${source}' %}\\namber\\n{% else %}\\ngrey\\n{% endif %}`,\n primary: null,\n secondary: source,\n entity: entity.entity_id,\n multiline_secondary: false,\n tap_action: {\n action: \"call-service\",\n service: \"spotcast.start\",\n data: {\n device_name: source,\n force_playback: true\n }\n },\n layout: \"vertical\",\n style: \"mushroom-card \\n background-size: 42px 32px;\\nmushroom-shape-icon {\\n --shape-color: none !important;\\n} \\n ha-card { \\n background: rgba(#1a1a2a;, 1.25);\\n {% if is_state('media_player.cuisine_media_players', 'playing') %}\\n {% else %}\\n background: rgba(var(--rgb-primary-background-color), 0.8);\\n {% endif %} \\n width: 115px;\\n border-radius: 30px;\\n margin-top: 10px;\\n margin-left: auto;\\n margin-right: auto;\\n margin-bottom: 20px;\\n }\\n\",\n card_mode: {\n style: \":host {\\n background: rgba(var(--rgb-primary-background-color), 0.8);\\n border-radius: 50px;!important\\n} \\n\"\n },\n line_width: 8,\n line_color: \"#FF6384\",\n card_mod: {\n style: `\n :host {\n --mush-icon-symbol-size: 0.75em;\n }\n `\n }\n\n }))\n ).filter(Boolean),\n ]\n }))\n ).filter(Boolean),\n ]\n },\n {\n type: \"custom:spotify-card\",\n always_play_random_song: true,\n hide_currently_playing: true,\n hide_playback_controls: true,\n hide_top_header: true,\n hide_warning: true,\n hide_chromecast_devices: true,\n display_style: \"Grid\",\n grid_covers_per_row: 5,\n limit: 20\n }\n ],\n card_mod: {\n style: \"ha-card {\\n {% if not is_state('media_player.spotify_juicy', 'off') and not is_state('media_player.spotify_juicy', 'idle') %}\\n background: url( '{{ state_attr(\\\"media_player.spotify_juicy\\\", \\\"entity_picture\\\") }}' ), linear-gradient(to left, transparent, rgb(var(--rgb-card-background-color)) 100%);\\n\\n {% if state_attr('media_player.spotify_juicy', 'media_content_type') == 'tvshow' %}\\n background-size: auto 100%, cover;\\n {% else %}\\n background-size: 130% auto, cover;\\n {% endif %}\\n\\n background-position: top right;\\n background-repeat: no-repeat;\\n background-blend-mode: saturation;\\n {% endif %}\\n}\\n\"\n }\n }\n })\n ).filter(Boolean),\n ],\n card_mod: {\n style: \"ha-card {\\n background:#4a1a1a;\\n}\\n\"\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(entityId: string) {\n super();\n\n const defaultConfig = this.getDefaultConfig(entityId)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { SpotifyChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch Chip class.\n *\n * Used to create a chip to indicate how many switches are on and to turn all off.\n */\nclass SwitchChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:dip-switch\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"switch\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"switch\", \"eq\", \"on\", options?.area_slug);\n }\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"switch\", area_slug: options?.area_slug })\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { SwitchChip };\n","import { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { MAGIC_AREAS_DOMAIN } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass ToggleSceneChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(device: MagicAreaRegistryEntry): TemplateChipConfig {\n return {\n type: \"template\",\n entity: device?.entities.light_control?.entity_id,\n icon: \"mdi:recycle-variant\",\n // icon_color: \"{% if is_state(config.entity, 'on') %}green{% else %}red{% endif %}\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_scene_toggle`,\n data: {\n area: device?.name,\n }\n },\n hold_action: {\n action: \"more-info\"\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { ToggleSceneChip };\n","import { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { navigateTo } from \"../utils\";\nimport { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { UNAVAILABLE } from \"../variables\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Unavailable Chip class.\n *\n * Used to create a chip to indicate unable entities.\n */\nclass UnavailableChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: 'mdi:alert-circle-outline',\n icon_color: \"orange\",\n content: \"\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n this.#defaultConfig.content = Helper.getCountTemplate(\"all\", \"eq\", UNAVAILABLE, options?.area_slug);\n\n this.#defaultConfig.icon = Helper.getFromDomainState({\n domain: \"all\",\n operator: \"eq\",\n value: UNAVAILABLE,\n ifReturn: this.#defaultConfig.icon,\n elseReturn: \"mdi:alert-circle-check-outline\",\n area_slug: options?.area_slug\n });\n\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({\n domain: \"all\",\n operator: \"eq\",\n value: UNAVAILABLE,\n ifReturn: this.#defaultConfig.icon_color,\n elseReturn: \"green\",\n area_slug: options?.area_slug\n });\n\n this.#defaultConfig.tap_action = navigateTo(\"unavailable\")\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { UnavailableChip };\n","import {chips} from \"../types/strategy/chips\";\nimport {WeatherChipConfig} from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport {AbstractChip} from \"./AbstractChip\";\nimport { WeatherPopup } from \"../popups/WeatherPopup\";\n\n// noinspection JSUnusedGlobalSymbols False positive.\n/**\n * Weather Chip class.\n *\n * Used to create a chip for showing the weather.\n */\nclass WeatherChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @private\n * @readonly\n */\n readonly #defaultConfig: WeatherChipConfig = {\n type: \"weather\",\n show_temperature: true,\n show_conditions: true,\n };\n\n /**\n * Class Constructor.\n *\n * @param {string} entityId Id of a weather entity.\n * @param {chips.WeatherChipOptions} options Weather Chip options.\n */\n constructor(entityId: string, options: chips.WeatherChipOptions = {}) {\n super();\n this.#defaultConfig = {\n ...this.#defaultConfig,\n tap_action: new WeatherPopup(entityId).getPopup() as any,\n ...{entity: entityId},\n ...options,\n };\n\n this.#defaultConfig.tap_action = new WeatherPopup(entityId).getPopup()\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {WeatherChip};\n","import { generic } from \"./types/strategy/generic\";\nimport StrategyDefaults = generic.StrategyDefaults;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { ControlChip } from \"./chips/ControlChip\";\nimport { SettingsChip } from \"./chips/SettingsChip\";\nimport { LightSettings } from \"./popups/LightSettingsPopup\";\nimport { ToggleSceneChip } from \"./chips/ToggleSceneChip\";\nimport { SceneSettings } from \"./popups/SceneSettingsPopup\";\nimport { UNDISCLOSED } from \"./variables\";\nimport { ClimateChip } from \"./chips/ClimateChip\";\nimport { AggregateChip } from \"./chips/AggregateChip\";\nimport { LightChip } from \"./chips/LightChip\";\nimport { MediaPlayerChip } from \"./chips/MediaPlayerChip\";\nimport { CoverChip } from \"./chips/CoverChip\";\nimport { FanChip } from \"./chips/FanChip\";\nimport { SwitchChip } from \"./chips/SwitchChip\";\n\n/**\n * Default configuration for the mushroom strategy.\n */\nexport const configurationDefaults: StrategyDefaults = {\n areas: {\n undisclosed: {\n slug: UNDISCLOSED,\n aliases: [],\n area_id: UNDISCLOSED,\n name: \"Non assigné\",\n picture: null,\n hidden: false,\n domains: {},\n devices: [],\n entities: [],\n }\n },\n floors: {\n undisclosed: {\n aliases: [],\n floor_id: UNDISCLOSED,\n name: \"Non assigné\",\n hidden: false,\n areas_slug: [UNDISCLOSED]\n }\n },\n debug: true,\n domains: {\n _: {\n hide_config_entities: false,\n },\n default: {\n showControls: false,\n hidden: false,\n },\n light: {\n showControls: true,\n controlChip: LightChip,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.light_control?.entity_id) {\n chips.push(new ControlChip(\"light\", device?.entities.light_control?.entity_id).getChip());\n }\n if (device?.entities.all_lights?.entity_id) {\n chips.push(new SettingsChip({ tap_action: new LightSettings(device).getPopup() }).getChip());\n }\n return chips\n },\n controllerCardOptions: {\n onService: \"light.turn_on\",\n offService: \"light.turn_off\",\n toggleService: \"light.toggle\",\n },\n hidden: false,\n order: 1\n },\n climate: {\n showControls: true,\n controlChip: ClimateChip,\n controllerCardOptions: {\n onService: \"climate.turn_on\",\n offService: \"climate.turn_off\",\n toggleService: \"climate.toggle\",\n },\n hidden: false,\n order: 2,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.climate_control?.entity_id) {\n chips.push(new ControlChip(\"climate\", device?.entities.climate_control?.entity_id).getChip());\n }\n return chips\n },\n },\n media_player: {\n showControls: true,\n controlChip: MediaPlayerChip,\n controllerCardOptions: {\n onService: \"media_player.turn_on\",\n offService: \"media_player.turn_off\",\n toggleService: \"media_player.toggle\",\n },\n hidden: false,\n order: 3,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.media_player_control?.entity_id) {\n chips.push(new ControlChip(\"media_player\", device?.entities.media_player_control?.entity_id).getChip());\n }\n return chips\n },\n },\n cover: {\n showControls: true,\n controlChip: CoverChip,\n controllerCardOptions: {\n onService: \"cover.open_cover\",\n offService: \"cover.close_cover\",\n toggleService: \"cover.toggle\",\n },\n hidden: false,\n order: 4\n },\n scene: {\n showControls: false,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.all_lights?.entity_id) {\n chips.push(new ToggleSceneChip(device).getChip());\n chips.push(new SettingsChip({ tap_action: new SceneSettings(device).getPopup() }).getChip());\n }\n return chips\n },\n onService: \"scene.turn_on\",\n offService: \"scene.turn_off\",\n hidden: false,\n order: 5\n },\n fan: {\n showControls: true,\n controlChip: FanChip,\n controllerCardOptions: {\n onService: \"fan.turn_on\",\n offService: \"fan.turn_off\",\n toggleService: \"fan.toggle\",\n },\n hidden: false,\n order: 6\n },\n switch: {\n showControls: true,\n controlChip: SwitchChip,\n controllerCardOptions: {\n onService: \"switch.turn_on\",\n offService: \"switch.turn_off\",\n toggleService: \"switch.toggle\",\n },\n hidden: false,\n order: 7\n },\n camera: {\n showControls: false,\n controllerCardOptions: {\n },\n hidden: false,\n order: 8\n },\n lock: {\n showControls: false,\n controllerCardOptions: {\n },\n hidden: false,\n order: 9\n },\n vacuum: {\n showControls: true,\n controllerCardOptions: {\n onService: \"vacuum.start\",\n offService: \"vacuum.stop\",\n },\n hidden: false,\n order: 10\n },\n sensor: {\n controlChip: AggregateChip,\n showControls: true,\n hidden: false,\n },\n binary_sensor: {\n controlChip: AggregateChip,\n showControls: true,\n hidden: false,\n },\n number: {\n showControls: false,\n hidden: false,\n },\n },\n home_view: {\n hidden: [],\n },\n views: {\n home: {\n order: 1,\n hidden: false,\n },\n security: {\n order: 2,\n hidden: false,\n },\n light: {\n order: 3,\n hidden: false,\n },\n climate: {\n order: 4,\n hidden: false,\n },\n media_player: {\n order: 5,\n hidden: false,\n },\n cover: {\n order: 6,\n hidden: false,\n },\n scene: {\n order: 7,\n hidden: false,\n },\n fan: {\n order: 8,\n hidden: false,\n },\n switch: {\n order: 9,\n hidden: false,\n },\n camera: {\n order: 10,\n hidden: false,\n },\n vacuum: {\n order: 11,\n hidden: false,\n },\n sensor: {\n hidden: false,\n },\n binary_sensor: {\n hidden: false,\n },\n securityDetails: {\n hidden: false,\n },\n battery: {\n hidden: false,\n },\n battery_charging: {\n hidden: false,\n },\n carbon_monoxide: {\n hidden: false,\n },\n cold: {\n hidden: false,\n },\n connectivity: {\n hidden: false,\n },\n door: {\n hidden: false,\n },\n garage_door: {\n hidden: false,\n },\n gas: {\n hidden: false,\n },\n heat: {\n hidden: false,\n },\n lock: {\n hidden: false,\n },\n moisture: {\n hidden: false,\n },\n motion: {\n hidden: false,\n },\n moving: {\n hidden: false,\n },\n occupancy: {\n hidden: false,\n },\n opening: {\n hidden: false,\n },\n plug: {\n hidden: false,\n },\n power: {\n hidden: false,\n },\n presence: {\n hidden: false,\n },\n problem: {\n hidden: false,\n },\n running: {\n hidden: false,\n },\n safety: {\n hidden: false,\n },\n smoke: {\n hidden: false,\n },\n sound: {\n hidden: false,\n },\n tamper: {\n hidden: false,\n },\n update: {\n hidden: false,\n },\n vibration: {\n hidden: false,\n },\n window: {\n hidden: false,\n },\n apparent_power: {\n hidden: false,\n },\n aqi: {\n hidden: false,\n },\n area: {\n hidden: false,\n },\n atmospheric_pressure: {\n hidden: false,\n },\n blood_glucose_concentration: {\n hidden: false,\n },\n carbon_dioxide: {\n hidden: false,\n },\n current: {\n hidden: false,\n },\n data_rate: {\n hidden: false,\n },\n data_size: {\n hidden: false,\n },\n date: {\n hidden: false,\n },\n distance: {\n hidden: false,\n },\n duration: {\n hidden: false,\n },\n energy: {\n hidden: false,\n },\n energy_storage: {\n hidden: false,\n },\n enum: {\n hidden: false,\n },\n frequency: {\n hidden: false,\n },\n humidity: {\n hidden: false,\n },\n illuminance: {\n hidden: false,\n },\n irradiance: {\n hidden: false,\n },\n monetary: {\n hidden: false,\n },\n nitrogen_dioxide: {\n hidden: false,\n },\n nitrogen_monoxide: {\n hidden: false,\n },\n nitrous_oxide: {\n hidden: false,\n },\n ozone: {\n hidden: false,\n },\n ph: {\n hidden: false,\n },\n pm1: {\n hidden: false,\n },\n pm25: {\n hidden: false,\n },\n pm10: {\n hidden: false,\n },\n power_factor: {\n hidden: false,\n },\n precipitation: {\n hidden: false,\n },\n precipitation_intensity: {\n hidden: false,\n },\n pressure: {\n hidden: false,\n },\n reactive_power: {\n hidden: false,\n },\n signal_strength: {\n hidden: false,\n },\n sound_pressure: {\n hidden: false,\n },\n speed: {\n hidden: false,\n },\n sulphur_dioxide: {\n hidden: false,\n },\n temperature: {\n hidden: false,\n },\n timestamp: {\n hidden: false,\n },\n volatile_organic_compounds: {\n hidden: false,\n },\n volatile_organic_compounds_parts: {\n hidden: false,\n },\n voltage: {\n hidden: false,\n },\n volume: {\n hidden: false,\n },\n volume_flow_rate: {\n hidden: false,\n },\n volume_storage: {\n hidden: false,\n },\n water: {\n hidden: false,\n },\n weight: {\n hidden: false,\n },\n wind_speed: {\n hidden: false,\n },\n }\n};\n","import { Helper } from \"./Helper\";\nimport { generic } from \"./types/strategy/generic\";\nimport { LovelaceConfig, LovelaceViewConfig } from \"./types/homeassistant/data/lovelace\";\nimport { AGGREGATE_DOMAINS, CUSTOM_VIEWS, DEVICE_CLASSES, DOMAINS_VIEWS, VIEWS_ICONS } from \"./variables\";\nimport { AreaView } from \"./views/AreaView\";\nimport { getAreaName, getDomainTranslationKey, getFloorName } from \"./utils\";\nimport { FloorView } from \"./views/FloorView\";\nimport { ResourceKeys } from \"./types/homeassistant/data/frontend\";\n\n/**\n * Linus Dashboard Strategy.
\n *
\n * Linus dashboard strategy provides a strategy for Home-Assistant to create a dashboard automatically.
\n * The strategy makes use of Mushroom and Mini Graph cards to represent your entities.
\n *
\n * Features:
\n * 🛠 Automatically create a dashboard with minimal configuration.
\n * 😍 Built-in views for several standard domains.
\n * 🎨 Many options to customize to your needs.
\n *
\n * Check the [Repository]{@link https://github.com/AalianKhan/linus-strategy} for more information.\n */\nclass LinusStrategy extends HTMLTemplateElement {\n /**\n * Generate a dashboard.\n *\n * Called when opening a dashboard.\n *\n * @param {generic.DashBoardInfo} info Dashboard strategy information object.\n * @return {Promise}\n */\n static async generateDashboard(info: generic.DashBoardInfo): Promise {\n if (!Helper.isInitialized()) await Helper.initialize(info);\n\n const views: LovelaceViewConfig[] = info.config?.views ?? [];\n\n LinusStrategy.createDomainSubviews(views);\n LinusStrategy.createUnavailableEntitiesSubview(views);\n LinusStrategy.createAreaSubviews(views);\n LinusStrategy.createFloorSubviews(views);\n\n if (Helper.strategyOptions.extra_views) {\n views.push(...Helper.strategyOptions.extra_views);\n }\n\n return { views };\n }\n\n /**\n * Create subviews for each domain.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createDomainSubviews(views: LovelaceViewConfig[]) {\n const exposedViewIds = Helper.getExposedViewIds();\n exposedViewIds.forEach(viewId => {\n if (![...CUSTOM_VIEWS, ...DOMAINS_VIEWS].includes(viewId)) return;\n if (DOMAINS_VIEWS.includes(viewId) && (Helper.domains[viewId] ?? []).length === 0) return;\n\n let domain = viewId;\n let device_class = \"_\";\n\n if (DEVICE_CLASSES.binary_sensor.includes(viewId)) {\n domain = \"binary_sensor\";\n device_class = viewId;\n } else if (DEVICE_CLASSES.sensor.includes(viewId)) {\n domain = \"sensor\";\n device_class = viewId;\n }\n\n views.push({\n title: Helper.localize(getDomainTranslationKey(domain, device_class)),\n icon: (VIEWS_ICONS as Record)[viewId] ?? Helper.icons[device_class === \"battery\" ? \"binary_sensor\" : domain as ResourceKeys]?.[device_class]?.default,\n path: viewId,\n subview: !Object.keys(VIEWS_ICONS).includes(viewId),\n strategy: {\n type: \"custom:linus-strategy\",\n options: { viewId },\n },\n });\n });\n }\n\n /**\n * Create a subview for unavailable entities.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createUnavailableEntitiesSubview(views: LovelaceViewConfig[]) {\n views.push({\n title: \"Unavailable\",\n path: \"unavailable\",\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { viewId: \"unavailable\" },\n },\n });\n }\n\n /**\n * Create subviews for each area.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createAreaSubviews(views: LovelaceViewConfig[]) {\n for (let area of Helper.orderedAreas) {\n if (!area.hidden) {\n views.push({\n title: getAreaName(area),\n path: area.slug ?? area.name,\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { area },\n },\n });\n }\n }\n }\n\n /**\n * Create subviews for each floor.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createFloorSubviews(views: LovelaceViewConfig[]) {\n for (let floor of Helper.orderedFloors) {\n if (!floor.hidden) {\n views.push({\n title: getFloorName(floor),\n path: floor.floor_id,\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { floor },\n },\n });\n }\n }\n }\n\n /**\n * Generate a view.\n *\n * Called when opening a subview.\n *\n * @param {generic.ViewInfo} info The view's strategy information object.\n * @return {Promise}\n */\n /**\n * Generate a view.\n *\n * Called when opening a subview.\n *\n * @param {generic.ViewInfo} info The view's strategy information object.\n * @return {Promise}\n */\n static async generateView(info: generic.ViewInfo): Promise {\n const { viewId, floor, area } = info.view.strategy?.options ?? {};\n let view: LovelaceViewConfig = {};\n\n if (area) {\n try {\n view = await new AreaView(area).getView();\n } catch (e) {\n Helper.logError(`View for '${area?.name}' couldn't be loaded!`, e);\n }\n } else if (floor) {\n try {\n view = await new FloorView(floor).getView();\n } catch (e) {\n Helper.logError(`View for '${floor?.name}' couldn't be loaded!`, e);\n }\n } else if (viewId) {\n try {\n\n if (viewId === \"unavailable\") {\n\n const viewModule = await import(\"./views/UnavailableView\");\n view = await new viewModule.UnavailableView().getView();\n\n } else if (AGGREGATE_DOMAINS.includes(viewId)) {\n\n const viewModule = await import(\"./views/AggregateView\");\n view = await new viewModule.AggregateView({ domain: viewId }).getView();\n\n } else if ([...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(viewId)) {\n\n const domain = DEVICE_CLASSES.binary_sensor.includes(viewId) ? \"binary_sensor\" : \"sensor\";\n\n const viewModule = await import(\"./views/AggregateView\");\n view = await new viewModule.AggregateView({ domain, device_class: viewId }).getView();\n\n } else {\n\n const viewType = Helper.sanitizeClassName(viewId + \"View\");\n const viewModule = await import(`./views/${viewType}`);\n view = await new viewModule[viewType](Helper.strategyOptions.views[viewId]).getView();\n\n }\n } catch (e) {\n Helper.logError(`View for '${viewId}' couldn't be loaded!`, e);\n }\n\n }\n\n return view;\n }\n}\n\ncustomElements.define(\"ll-strategy-linus-strategy\", LinusStrategy);\n\nexport const version = \"v1.0.4\";\nconsole.info(\n \"%c Linus Strategy %c \".concat(version, \" \"),\n \"color: #F5F5DC; background: #004225; font-weight: 700;\", \"color: #004225; background: #F5F5DC; font-weight: 700;\"\n);\n","import {Helper} from \"../Helper\";\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\n\n/**\n * Abstract Popup class.\n *\n * To create a new Popup, extend this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractPopup {\n /**\n * Configuration of the Popup.\n *\n * @type {PopupActionConfig}\n */\n config: PopupActionConfig = {\n action: \"fire-dom-event\",\n browser_mod: {}\n };\n\n /**\n * Class Constructor.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the Popup.\n *\n * @returns {PopupActionConfig} A Popup.\n */\n getPopup(): PopupActionConfig {\n return this.config;\n }\n}\n\nexport {AbstractPopup};\n","import { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass AreaInformations extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry, minimalist: boolean): PopupActionConfig {\n\n const { area_state } = device?.entities ?? {}\n\n const { friendly_name, adjoining_areas, features, states, presence_sensors, on_states } = Helper.getEntityState(area_state?.entity_id)?.attributes ?? {}\n\n presence_sensors?.sort((a: string, b: string) => {\n const aState = Helper.getEntityState(a);\n const bState = Helper.getEntityState(b);\n const lastChangeA = new Date(aState?.last_changed).getTime();\n const lastChangeB = new Date(bState?.last_changed).getTime();\n if (a === `switch.magic_areas_presence_hold_${slugify(device?.name)}`) {\n return -1;\n } else if (b === `switch.magic_areas_presence_hold_${slugify(device?.name)}`) {\n return 1;\n } else {\n return lastChangeB - lastChangeA;\n }\n });\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: friendly_name,\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"custom:mushroom-entity-card\",\n entity: area_state?.entity_id,\n name: \"Présence\",\n secondary_info: \"last-changed\",\n color: \"red\",\n tap_action: device?.id ? {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.sequence\",\n data: {\n sequence: [\n {\n service: \"browser_mod.close_popup\",\n data: {}\n },\n {\n service: \"browser_mod.navigate\",\n data: { path: `/config/devices/device/${device?.id}` }\n }\n ]\n }\n }\n } : \"more-info\"\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: \"Recharger la pièce\",\n icon: \"mdi:refresh\",\n icon_color: \"blue\",\n tap_action: {\n action: \"call-service\",\n service: `homeassistant.reload_config_entry`,\n target: { \"device_id\": device?.id },\n }\n },\n ]\n },\n ...(!minimalist ? [\n {\n type: \"custom:mushroom-template-card\",\n primary: `Configuration de la pièce :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: [\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Type : {{ state_attr('${area_state?.entity_id}', 'type') }}`,\n icon: `\n {% set type = state_attr('${area_state?.entity_id}', 'type') %}\n {% if type == \"interior\" %}\n mdi:home-import-outline\n {% elif type == \"exterior\" %}\n mdi:home-import-outline\n {% else %}\n mdi:home-alert\n {% endif %}\n `,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Étage : {{ state_attr('${area_state?.entity_id}', 'floor') }}`,\n icon: `\n {% set floor = state_attr('${area_state?.entity_id}', 'floor') %}\n {% if floor == \"third\" %}\n mdi:home-floor-3\n {% elif floor == \"second\" %}\n mdi:home-floor-2\n {% elif floor == \"first\" %}\n mdi:home-floor-1\n {% elif floor == \"ground\" %}\n mdi:home-floor-g\n {% elif floor == \"basement\" %}\n mdi:home-floor-b\n {% else %}\n mdi:home-alert\n {% endif %}\n `,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Délai pièce vide : {{ state_attr('${area_state?.entity_id}', 'clear_timeout') }}s`,\n icon: `mdi:camera-timer`,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Interval mise à jour : {{ state_attr('${area_state?.entity_id}', 'update_interval') }}s`,\n icon: `mdi:update`,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Pièces adjacentes : ${adjoining_areas?.length ? adjoining_areas.join(' ') : 'Non défini'}`,\n icon: `mdi:view-dashboard-variant`,\n },\n ],\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n }\n ] : []),\n {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.area_state_popup.name\"),\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n (minimalist ? {\n type: \"vertical-stack\",\n cards: presence_sensors?.map((sensor: string) => ({\n type: \"custom:mushroom-entity-card\",\n entity: sensor,\n content_info: \"name\",\n secondary_info: \"last-changed\",\n icon_color: sensor.includes('media_player.') ? \"blue\" : \"red\",\n }))\n } :\n {\n type: \"custom:mushroom-chips-card\",\n chips: presence_sensors?.map((sensor: string) => ({\n type: \"entity\",\n entity: sensor,\n content_info: \"name\",\n icon_color: sensor.includes('media_player.') ? \"blue\" : \"red\",\n tap_action: {\n action: \"more-info\"\n }\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n }),\n ...(!minimalist ? [\n {\n type: \"custom:mushroom-template-card\",\n primary: `Présence détecté pour les états :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: on_states?.map((sensor: string) => ({\n type: \"template\",\n content: sensor,\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: `Fonctionnalitées disponibles :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: features?.map((sensor: string) => ({\n type: \"template\",\n content: sensor,\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n },\n ] : [])\n ].filter(Boolean)\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry, minimalist: boolean = false) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device, minimalist)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AreaInformations };\n","import { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { MAGIC_AREAS_DOMAIN } from \"../variables\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass LightSettings extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry): PopupActionConfig {\n\n const { aggregate_illuminance, adaptive_lighting_range, minimum_brightness, maximum_brightness, maximum_lighting_level } = device?.entities ?? {}\n\n const device_slug = slugify(device?.name ?? \"\")\n\n const OPTIONS_ADAPTIVE_LIGHTING_RANGE = {\n \"\": 1,\n \"Small\": 10,\n \"Medium\": 25,\n \"Large\": 50,\n \"Extra large\": 100,\n } as Record\n\n const adaptive_lighting_range_state = Helper.getEntityState(adaptive_lighting_range?.entity_id)?.state\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Configurer l'éclairage adaptatif\",\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_adapt_brightness_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_adapt_color_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_sleep_mode_${device_slug}`,\n vertical: \"true\",\n }\n ]\n },\n {\n type: \"custom:mushroom-select-card\",\n entity: adaptive_lighting_range?.entity_id,\n secondary_info: \"last-changed\",\n icon_color: \"blue\",\n },\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"custom:mushroom-number-card\",\n entity: maximum_lighting_level?.entity_id,\n icon_color: \"red\",\n card_mod: {\n style: `\n :host {\n --mush-control-height: 20px;\n }\n `\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: \"Utiliser la valeur actuelle\",\n icon: \"mdi:pencil\",\n layout: \"vertical\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_lux_for_lighting_max`,\n data: {\n area: device?.name\n }\n },\n },\n ],\n },\n {\n type: \"custom:mushroom-number-card\",\n entity: minimum_brightness?.entity_id,\n icon_color: \"green\",\n card_mod: {\n style: \":host {--mush-control-height: 10px;}\"\n }\n },\n {\n type: \"custom:mushroom-number-card\",\n entity: maximum_brightness?.entity_id,\n icon_color: \"green\",\n card_mod: {\n style: \":host {--mush-control-height: 10px;}\"\n }\n },\n {\n type: \"custom:apexcharts-card\",\n graph_span: \"15h\",\n header: {\n show: true,\n title: \"Luminosité en fonction du temps\",\n show_states: true,\n colorize_states: true\n },\n yaxis: [\n {\n id: \"illuminance\",\n min: 0,\n apex_config: {\n tickAmount: 4\n }\n },\n {\n id: \"brightness\",\n opposite: true,\n min: 0,\n max: 100,\n apex_config: {\n tickAmount: 4\n }\n }\n ],\n series: [\n (aggregate_illuminance?.entity_id ? {\n entity: aggregate_illuminance?.entity_id,\n yaxis_id: \"illuminance\",\n color: \"orange\",\n name: \"Luminosité ambiante (lx)\",\n type: \"line\",\n group_by: {\n func: \"last\",\n duration: \"30m\"\n }\n } : undefined),\n {\n entity: adaptive_lighting_range?.entity_id,\n type: \"area\",\n yaxis_id: \"illuminance\",\n show: {\n in_header: false\n },\n color: \"blue\",\n name: \"Zone d'éclairage adaptatif\",\n unit: \"lx\",\n transform: `return parseInt(hass.states['${maximum_lighting_level?.entity_id}'].state) + ${OPTIONS_ADAPTIVE_LIGHTING_RANGE[adaptive_lighting_range_state]};`,\n group_by: {\n func: \"last\",\n }\n },\n {\n entity: maximum_lighting_level?.entity_id,\n type: \"area\",\n yaxis_id: \"illuminance\",\n name: \"Zone d'éclairage à 100%\",\n color: \"red\",\n show: {\n in_header: false\n },\n group_by: {\n func: \"last\",\n }\n },\n ].filter(Boolean)\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { LightSettings };\n","\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { MAGIC_AREAS_DOMAIN, TOD_ORDER } from \"../variables\";\nimport { AbstractPopup } from \"./AbstractPopup\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Scene Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass SceneSettings extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry): PopupActionConfig {\n\n const { scene_morning, scene_daytime, scene_evening, scene_night } = device?.entities ?? {}\n const selectControl = [scene_morning, scene_daytime, scene_evening, scene_night].filter(Boolean)\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Configurer les scènes\",\n content: {\n type: \"vertical-stack\",\n cards: [\n ...(selectControl.length ? TOD_ORDER.map(tod => (\n {\n type: \"custom:config-template-card\",\n variables: {\n SCENE_STATE: `states['${device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id}'].state`\n },\n entities: [device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id],\n card: {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"entities\",\n entities: [device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id]\n },\n {\n type: \"conditional\",\n conditions: [\n {\n entity: \"${SCENE_STATE}\",\n state: \"on\"\n },\n // {\n // entity: \"${SCENE_STATE}\",\n // state: \"off\"\n // }\n ],\n card:\n {\n type: \"tile\",\n entity: \"${SCENE_STATE}\",\n show_entity_picture: true,\n tap_action: {\n action: \"toggle\"\n },\n }\n },\n {\n type: \"conditional\",\n conditions: [\n {\n entity: \"${SCENE_STATE}\",\n state: \"unavailable\"\n },\n // {\n // entity: \"${SCENE_STATE}\",\n // state: \"off\"\n // }\n ],\n card:\n\n {\n type: \"custom:mushroom-template-card\",\n secondary: \"Utiliser l'éclairage actuel\",\n multiline_secondary: true,\n icon: \"mdi:pencil\",\n layout: \"vertical\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.snapshot_lights_as_tod_scene`,\n data: {\n area: slugify(device.name),\n tod\n }\n },\n },\n }\n ]\n }\n }\n )\n ) : [{\n type: \"custom:mushroom-template-card\",\n primary: \"Ajouter une nouvelle scène\",\n secondary: `Cliquer ici pour vous rendre sur la page des scènes`,\n multiline_secondary: true,\n icon: `mdi:palette`,\n tap_action: {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.sequence\",\n data: {\n sequence: [\n {\n service: \"browser_mod.navigate\",\n data: { path: `/config/scene/dashboard` }\n },\n {\n service: \"browser_mod.close_popup\",\n data: {}\n }\n ]\n }\n }\n },\n card_mod: {\n style: `\n ha-card {\n box-shadow: none!important;\n }\n `\n }\n }])\n ].filter(Boolean)\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n\n }\n}\n\nexport { SceneSettings };\n","import { Helper } from \"../Helper\";\nimport { version } from \"../linus-strategy\";\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Linus Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass SettingsPopup extends AbstractPopup {\n\n getDefaultConfig(): PopupActionConfig {\n\n const linusDeviceIds = Object.values(Helper.magicAreasDevices).map((area) => area?.id).flat()\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.name\"),\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n linusDeviceIds.length > 0 && {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.state.on\"),\n icon: \"mdi:refresh\",\n icon_color: \"blue\",\n tap_action: {\n action: \"call-service\",\n service: `homeassistant.reload_config_entry`,\n target: { \"device_id\": linusDeviceIds },\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.state.off\"),\n icon: \"mdi:restart\",\n icon_color: \"red\",\n tap_action: {\n action: \"call-service\",\n service: \"homeassistant.restart\",\n }\n },\n ].filter(Boolean)\n },\n {\n type: \"markdown\",\n content: `Linus dashboard est en version ${version}.`,\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor() {\n super();\n\n const defaultConfig = this.getDefaultConfig()\n\n this.config = Object.assign(this.config, defaultConfig);\n\n\n }\n}\n\nexport { SettingsPopup };\n","import { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Weather Chip class.\n *\n * Used to create a chip to indicate how many Weathers are on and to turn all off.\n */\nclass WeatherPopup extends AbstractPopup {\n\n getDefaultConfig(entityId: string): PopupActionConfig {\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Météo\",\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"weather-forecast\",\n entity: entityId,\n show_current: true,\n show_forecast: true\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(entity_id: string) {\n super();\n\n this.config = Object.assign(this.config, this.getDefaultConfig(entity_id));\n\n\n }\n}\n\nexport {WeatherPopup};\n","import {ActionsSharedConfig} from \"../shared/config/actions-config\";\nimport {LovelaceCardConfig} from \"../../homeassistant/data/lovelace\";\nimport {EntitySharedConfig} from \"../shared/config/entity-config\";\nimport {AppearanceSharedConfig} from \"../shared/config/appearance-config\";\n\nexport const VACUUM_COMMANDS = [\n \"on_off\",\n \"start_pause\",\n \"stop\",\n \"locate\",\n \"clean_spot\",\n \"return_home\",\n] as const;\n\nexport type VacuumCommand = (typeof VACUUM_COMMANDS)[number];\n\n/**\n * Vacuum Card Config.\n *\n * @param {boolean} icon_animation Animate the icon when vacuum is cleaning.\n * @param {VacuumCommand[]} commands List of commands to display (start_pause, stop, locate, clean_spot, return_home).\n *\n * @see https://github.com/piitaya/lovelace-mushroom/blob/main/docs/cards/vacuum.md\n */\nexport type VacuumCardConfig = LovelaceCardConfig &\n EntitySharedConfig &\n AppearanceSharedConfig &\n ActionsSharedConfig & {\n icon_animation?: boolean;\n commands?: VacuumCommand[];\n};\n","import {\n CallServiceActionConfig,\n LovelaceCardConfig,\n LovelaceConfig,\n LovelaceViewConfig\n} from \"../homeassistant/data/lovelace\";\nimport { HomeAssistant } from \"../homeassistant/types\";\nimport { AreaRegistryEntry } from \"../homeassistant/data/area_registry\";\nimport { cards } from \"./cards\";\nimport { EntityRegistryEntry } from \"../homeassistant/data/entity_registry\";\nimport { LovelaceChipConfig } from \"../lovelace-mushroom/utils/lovelace/chip/types\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { FloorRegistryEntry } from \"../homeassistant/data/floor_registry\";\nimport { DeviceRegistryEntry } from \"../homeassistant/data/device_registry\";\n\nexport namespace generic {\n /**\n * An entry out of a Home Assistant Register.\n */\n export type RegistryEntry =\n | AreaRegistryEntry\n | DataTransfer\n | EntityRegistryEntry\n\n /**\n * View Entity.\n *\n * @property {number} [order] Ordering position of the entity in the list of available views.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n */\n export interface ViewConfig extends LovelaceViewConfig {\n hidden?: boolean;\n order?: number;\n }\n\n /**\n * Domain Configuration.\n *\n * @property {number} [order] Ordering position of the entity in the list of available views.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n * @property {boolean} [hide_config_entities] True if the entity's categorie is \"config\" and should be hidden from the\n * dashboard.\n */\n export interface DomainConfig extends Partial {\n hidden?: boolean;\n order?: number;\n hide_config_entities?: boolean\n }\n\n /**\n * Dashboard Information Object.\n *\n * Home Assistant passes this object to the Dashboard Generator method.\n *\n * @property {LovelaceConfig} config Dashboard configuration.\n * @property {HomeAssistant} hass The Home Assistant object.\n *\n * @see https://developers.home-assistant.io/docs/frontend/custom-ui/custom-strategy/#dashboard-strategies\n */\n export interface DashBoardInfo {\n config?: LovelaceConfig & {\n strategy: {\n options?: StrategyConfig\n }\n };\n hass: HomeAssistant;\n }\n\n /**\n * View Information Object.\n *\n * Home Assistant passes this object to the View Generator method.\n *\n * @property {LovelaceViewConfig} view View configuration.\n * @property {LovelaceConfig} config Dashboard configuration.\n * @property {HomeAssistant} hass The Home Assistant object.\n *\n * @see https://developers.home-assistant.io/docs/frontend/custom-ui/custom-strategy/#view-strategies\n */\n export interface ViewInfo {\n view: LovelaceViewConfig & {\n strategy?: {\n options?: StrategyConfig & { viewId: string, area: StrategyArea, floor: StrategyFloor }\n }\n };\n config: LovelaceConfig\n hass: HomeAssistant;\n }\n\n /**\n * Strategy Configuration.\n *\n * @property {Object.} areas List of areas.\n * @property {Object.} [card_options] Card options for entities.\n * @property {chips} [chips] List of chips to show in the Home view.\n * @property {boolean} [debug] Set to true for more verbose debugging info.\n * @property {Object.} domains List of domains.\n * @property {object[]} [extra_cards] List of cards to show below room cards.\n * @property {object[]} [extra_views] List of views to add to the dashboard.\n * @property {object[]} [quick_access_cards] List of cards to show between welcome card and rooms cards.\n * @property {Object.} views List of views.\n */\n export interface StrategyConfig {\n areas: { [k: string]: StrategyArea };\n floors: { [k: string]: StrategyFloor };\n card_options?: { [k: string]: CustomCardConfig };\n chips?: Chips;\n debug: boolean;\n domains: { [k: string]: DomainConfig };\n extra_cards?: LovelaceCardConfig[];\n extra_views?: ViewConfig[];\n home_view: {\n hidden: HiddenSectionType[]\n }\n quick_access_cards?: LovelaceCardConfig[];\n views: { [k: string]: ViewConfig };\n }\n\n const hiddenSectionList = [\"chips\", \"persons\", \"greeting\", \"areas\", \"areasTitle\"] as const;\n export type HiddenSectionType = typeof hiddenSectionList[number];\n\n /**\n * Represents the default configuration for a strategy.\n */\n export interface StrategyDefaults extends StrategyConfig {\n areas: {\n undisclosed: StrategyArea & {\n area_id: \"undisclosed\",\n },\n [k: string]: StrategyArea,\n },\n floors: {\n undisclosed: StrategyFloor & {\n floor_id: \"undisclosed\",\n },\n [k: string]: StrategyFloor,\n },\n domains: {\n default: DomainConfig,\n [k: string]: DomainConfig,\n }\n }\n\n /**\n * Strategy Device.\n *\n */\n export interface StrategyDevice extends DeviceRegistryEntry {\n floor_id: string | null;\n entities: string[];\n }\n\n export interface MagicAreaRegistryEntry extends DeviceRegistryEntry {\n entities: Record;\n area_name: string;\n }\n\n /**\n * Strategy Entity.\n *\n */\n export interface StrategyEntity extends EntityRegistryEntry {\n floor_id: string | null;\n }\n\n /**\n * Strategy Area.\n *\n * @property {number} [order] Ordering position of the area in the list of available areas.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n * @property {object[]} [extra_cards] An array of card configurations.\n * The configured cards are added to the dashboard.\n * @property {string} [type=default] The type of area card.\n */\n export interface StrategyArea extends AreaRegistryEntry {\n slug: string;\n domains: Record;\n order?: number;\n hidden?: boolean;\n extra_cards?: LovelaceCardConfig[];\n type?: string;\n devices: string[];\n entities: string[];\n magicAreaDevice?: StrategyDevice;\n }\n\n /**\n * Strategy Floor.\n *\n * @property {number} [order] Ordering position of the area in the list of available areas.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n */\n export interface StrategyFloor extends FloorRegistryEntry {\n order?: number;\n hidden?: boolean;\n type?: string;\n areas_slug: string[];\n }\n\n /**\n * A list of chips to show in the Home view.\n *\n * @property {boolean} light_count Chip to display the number of lights on.\n * @property {boolean} fan_count Chip to display the number of fans on.\n * @property {boolean} cover_count Chip to display the number of unclosed covers.\n * @property {boolean} switch_count Chip to display the number of switches on.\n * @property {boolean} climate_count Chip to display the number of climates which are not off.\n * @property {string} weather_entity Entity ID for the weather chip to use, accepts `weather.` only.\n * @property {object[]} extra_chips List of extra chips.\n */\n export interface Chips {\n extra_chips: LovelaceChipConfig[];\n\n light_count: boolean;\n fan_count: boolean;\n cover_count: boolean;\n switch_count: boolean;\n climate_count: boolean;\n weather_entity: string;\n alarm_entity: string;\n\n [key: string]: any;\n }\n\n /**\n * Custom Card Configuration for an entity.\n *\n * @property {boolean} hidden True if the entity should be hidden from the dashboard.\n */\n export interface CustomCardConfig extends LovelaceCardConfig {\n hidden?: boolean;\n }\n\n /**\n * Area Filter Context.\n *\n * @property {AreaRegistryEntry} area Area Entity.\n * @property {string[]} areaDeviceIds The id of devices which are linked to the area entity.\n * @property {string} domain Domain of the entity.\n * Example: `light`.\n */\n export interface AreaFilterContext {\n area: AreaRegistryEntry;\n areaDeviceIds: string[];\n domain: string;\n }\n\n /**\n * Checks if the given object is an instance of CallServiceActionConfig.\n *\n * @param {any} obj - The object to be checked.\n * @return {boolean} - Returns true if the object is an instance of CallServiceActionConfig, otherwise false.\n */\n export function isCallServiceActionConfig(obj: any): obj is CallServiceActionConfig {\n return obj && obj.action === \"call-service\" && [\"action\", \"service\"].every(key => key in obj);\n }\n\n /**\n * Checks if the given object is an instance of HassServiceTarget.\n *\n * @param {any} obj - The object to check.\n * @return {boolean} - True if the object is an instance of HassServiceTarget, false otherwise.\n */\n export function isCallServiceActionTarget(obj: any): obj is HassServiceTarget {\n return obj && [\"entity_id\", \"device_id\", \"area_id\"].some(key => key in obj);\n }\n}\n","import { Helper } from \"./Helper\";\nimport { EntityRegistryEntry } from \"./types/homeassistant/data/entity_registry\";\nimport { generic } from \"./types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport StrategyFloor = generic.StrategyFloor;\nimport StrategyArea = generic.StrategyArea;\nimport { ActionConfig } from \"./types/homeassistant/data/lovelace\";\nimport { DEVICE_CLASSES, AGGREGATE_DOMAINS, GROUP_DOMAINS, LIGHT_DOMAIN, UNDISCLOSED, LIGHT_GROUPS } from \"./variables\";\nimport { LovelaceChipConfig } from \"./types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { chips } from \"./types/strategy/chips\";\n\n/**\n * Groups the elements of an array based on a provided function\n * @param {T[]} array - The array to group\n * @param {(item: T) => K} fn - The function to determine the group key for each element\n * @returns {Record} - An object where the keys are the group identifiers and the values are arrays of grouped elements\n */\nexport function groupBy(array: T[], fn: (item: T) => K): Record {\n return array.reduce((result, item) => {\n // Determine the group key for the current item\n const key = fn(item);\n\n // If the group key does not exist in the result, create an array for it\n if (!result[key]) {\n result[key] = [];\n }\n\n // Add the current item to the group\n result[key].push(item);\n\n return result;\n }, {} as Record);\n}\n\nexport function slugify(text: string | null, separator: string = \"_\"): string {\n if (text === \"\" || text === null) {\n return \"\";\n }\n const slug = text.toLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, separator)\n .replace(/-/g, \"_\");\n return slug === \"\" ? \"unknown\" : slug;\n}\n\nexport function getMagicAreaSlug(device: MagicAreaRegistryEntry): string {\n return slugify(device.name ?? \"\".replace('-', '_'));\n}\n\nexport function getStateContent(entity_id: string): string {\n return entity_id.startsWith('binary_sensor.') ? 'last-changed' : 'state'\n}\n\nexport function navigateTo(path: string): ActionConfig {\n return {\n action: \"navigate\",\n navigation_path: `${path}`,\n }\n}\n\nexport function getAggregateEntity(device: MagicAreaRegistryEntry, domains: string | string[], device_classes?: string | string[]): EntityRegistryEntry[] {\n const aggregateKeys: EntityRegistryEntry[] = [];\n const domainList = Array.isArray(domains) ? domains : [domains];\n const deviceClassList = Array.isArray(device_classes) ? device_classes : [device_classes];\n\n domainList.forEach(domain => {\n if (domain === \"light\") {\n Object.values(device?.entities ?? {}).forEach(entity => {\n if (entity.entity_id.endsWith('_lights')) {\n aggregateKeys.push(entity);\n }\n });\n } else if (GROUP_DOMAINS.includes(domain)) {\n aggregateKeys.push(device?.entities[`${domain}_group` as 'cover_group']);\n } else if (AGGREGATE_DOMAINS.includes(domain)) {\n deviceClassList.forEach(device_class => {\n aggregateKeys.push(device?.entities[`aggregate_${device_class}` as 'aggregate_motion']);\n });\n }\n });\n\n return aggregateKeys.filter(Boolean);\n}\n\nexport function getMAEntity(magic_device_id: string, domain: string, device_class?: string): EntityRegistryEntry | undefined {\n const magicAreaDevice = Helper.magicAreasDevices[magic_device_id];\n\n // TODO remove '' when new release\n if (domain === LIGHT_DOMAIN) return magicAreaDevice?.entities?.[''] ?? magicAreaDevice?.entities?.['all_lights']\n if (GROUP_DOMAINS.includes(domain)) return magicAreaDevice?.entities?.[`${domain}_group` as 'cover_group']\n if (device_class && [...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(device_class)) return magicAreaDevice?.entities?.[`aggregate_${device_class}` as 'aggregate_motion']\n return magicAreaDevice?.entities?.[domain] ?? undefined\n}\n\n\nexport function getEntityDomain(entityId: string): string {\n let domain = entityId.split(\".\")[0];\n return domain\n}\n\nexport function groupEntitiesByDomain(entity_ids: string[]): Record {\n return entity_ids\n .reduce((acc: Record, entity_id) => {\n let domain = getEntityDomain(entity_id)\n\n if (Object.keys(DEVICE_CLASSES).includes(domain)) {\n const entityState = Helper.getEntityState(entity_id);\n\n if (entityState?.attributes?.device_class) {\n domain = entityState.attributes.device_class\n }\n }\n if (!acc[domain]) {\n acc[domain] = [];\n }\n acc[domain].push(entity_id);\n return acc;\n }, {});\n}\n\n// Numeric chips.\nexport async function createChipsFromList(chipsList: string[], chipOptions?: Partial, magic_device_id: string = \"global\", area_slug?: string | string[]) {\n const chips: LovelaceChipConfig[] = [];\n\n const area_slugs = area_slug ? Array.isArray(area_slug) ? area_slug : [area_slug] : [];\n\n const domains = magic_device_id === \"global\"\n ? Object.keys(Helper.domains)\n : area_slugs.flatMap(area_slug => Object.keys(Helper.areas[area_slug]?.domains ?? {}));\n\n for (let chipType of chipsList) {\n if (!domains.includes(chipType)) continue;\n\n const className = Helper.sanitizeClassName(chipType + \"Chip\");\n\n try {\n let chipModule;\n if ([...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(chipType)) {\n chipModule = await import(\"./chips/AggregateChip\");\n const chip = new chipModule.AggregateChip({ ...chipOptions, device_class: chipType, area_slug, magic_device_id, tap_action: navigateTo(chipType) });\n chips.push(chip.getChip());\n } else {\n chipModule = await import(\"./chips/\" + className);\n const chip = new chipModule[className]({ ...chipOptions, area_slug });\n chips.push(chip.getChip());\n }\n } catch (e) {\n Helper.logError(`An error occurred while creating the ${chipType} chip!`, e);\n\n }\n }\n\n return chips;\n}\n\nexport function getDomainTranslationKey(domain: string, device_class?: string) {\n if (domain === 'scene') return 'ui.dialogs.quick-bar.commands.navigation.scene'\n\n if (AGGREGATE_DOMAINS.includes(domain) && device_class) return `component.${domain}.entity_component.${device_class}.name`\n return `component.${domain}.entity_component._.name`\n}\n\nexport function getStateTranslationKey(state: string, domain: string, device_class?: string) {\n if (domain === 'scene') return 'ui.dialogs.quick-bar.commands.navigation.scene'\n\n if (AGGREGATE_DOMAINS.includes(domain)) return `component.${domain}.entity_component.${device_class}.state.${state}`\n\n return `component.${domain}.entity_component._.name`\n}\n\nexport function getFloorName(floor: StrategyFloor): string {\n return floor.floor_id === UNDISCLOSED ? Helper.localize(\"component.linus_dashboard.entity.button.floor_not_found.name\") : floor.name!\n}\n\nexport function getAreaName(area: StrategyArea): string {\n return area.area_id === UNDISCLOSED ? Helper.localize(\"ui.card.area.area_not_found\") : area.name!\n}\n\nexport function getGlobalEntitiesExceptUndisclosed(device_class: string): string[] {\n return Helper.domains[device_class]?.filter(entity =>\n !Helper.areas[UNDISCLOSED].domains[device_class]?.includes(entity.entity_id)\n ).map(e => e.entity_id) ?? [];\n}\n\n\nexport function addLightGroupsToEntities(area: generic.StrategyArea, entities: generic.StrategyEntity[]) {\n const lightGroups = LIGHT_GROUPS\n .map(type => getMAEntity(area.slug, type))\n .filter(Boolean);\n\n for (const lightGroup of lightGroups) {\n if (!lightGroup) continue;\n const lightGroupState = Helper.getEntityState(lightGroup.entity_id);\n if (lightGroupState.attributes.entity_id?.length) {\n entities.unshift(lightGroup as generic.StrategyEntity);\n lightGroupState.attributes.entity_id.forEach((entity_id: string) => {\n const index = entities.findIndex(entity => entity.entity_id === entity_id);\n if (index !== -1) {\n entities.splice(index, 1);\n }\n });\n }\n }\n\n return entities;\n}","export const MAGIC_AREAS_DOMAIN = \"magic_areas\";\nexport const MAGIC_AREAS_NAME = \"Magic Areas\";\n\nexport const UNAVAILABLE = \"unavailable\";\nexport const UNDISCLOSED = \"undisclosed\";\n\nexport const TOD_ORDER = [\"morning\", \"daytime\", \"evening\", \"night\"];\n\nexport const LIGHT_DOMAIN = \"light\";\nexport const LIGHT_GROUPS = [\"overhead_lights\", \"accent_lights\", \"task_lights\", \"sleep_lights\"];\nexport const GROUP_DOMAINS = [\"climate\", \"media_player\", \"cover\"];\nexport const AGGREGATE_DOMAINS = [\"binary_sensor\", \"sensor\"];\n\nexport const DEVICE_CLASSES = {\n sensor: [\n \"temperature\",\n \"humidity\",\n \"illuminance\",\n\n \"battery\",\n\n // \"sensor\",\n \"apparent_power\",\n \"aqi\",\n \"area\",\n \"atmospheric_pressure\",\n \"blood_glucose_concentration\",\n \"carbon_dioxide\",\n \"carbon_monoxide\",\n \"current\",\n \"data_rate\",\n \"data_size\",\n \"date\",\n \"distance\",\n \"duration\",\n \"energy\",\n \"energy_storage\",\n \"enum\",\n \"frequency\",\n \"gas\",\n \"irradiance\",\n // \"moisture\",\n \"monetary\",\n \"nitrogen_dioxide\",\n \"nitrogen_monoxide\",\n \"nitrous_oxide\",\n \"ozone\",\n \"ph\",\n \"pm1\",\n \"pm25\",\n \"pm10\",\n \"power_factor\",\n \"power\",\n \"precipitation\",\n \"precipitation_intensity\",\n \"pressure\",\n \"reactive_power\",\n \"signal_strength\",\n \"sound_pressure\",\n \"speed\",\n \"sulphur_dioxide\",\n \"timestamp\",\n \"volatile_organic_compounds\",\n \"volatile_organic_compounds_parts\",\n \"voltage\",\n \"volume\",\n \"volume_flow_rate\",\n \"volume_storage\",\n \"water\",\n \"weight\",\n \"wind_speed\",\n ],\n binary_sensor: [\n \"battery_charging\",\n \"carbon_monoxide\",\n \"cold\",\n \"connectivity\",\n \"door\",\n \"garage_door\",\n // \"gas\",\n \"heat\",\n // \"light\",\n \"lock\",\n \"moisture\",\n \"motion\",\n \"moving\",\n \"occupancy\",\n \"opening\",\n \"plug\",\n // \"power\",\n \"presence\",\n \"problem\",\n \"running\",\n \"safety\",\n \"smoke\",\n \"sound\",\n \"tamper\",\n \"update\",\n \"vibration\",\n \"window\",\n ],\n};\n\nexport const AREA_CARDS_DOMAINS = [LIGHT_DOMAIN, \"switch\", \"climate\", \"fan\", \"camera\", \"cover\", \"vacuum\", \"media_player\", \"lock\", \"scene\", \"plant\", \"binary_sensor\", \"sensor\"];\n\nexport const CUSTOM_VIEWS = [\"home\", \"security\", \"security-details\"];\n\nexport const DOMAINS_VIEWS = [...AREA_CARDS_DOMAINS, ...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor];\n\nexport const HOME_EXPOSED_CHIPS = [\"weather\", \"alarm\", \"spotify\", LIGHT_DOMAIN, ...GROUP_DOMAINS, \"fan\", \"switch\", \"safety\", \"motion\", \"occupancy\", \"door\", \"window\"];\nexport const AREA_EXPOSED_CHIPS = [LIGHT_DOMAIN, ...GROUP_DOMAINS, \"fan\", \"switch\", \"safety\", ...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor];\nexport const SECURITY_EXPOSED_CHIPS = [\"alarm\", \"safety\", \"motion\", \"occupancy\", \"door\", \"window\"];\n\nexport const DEVICE_ICONS = {\n presence_hold: 'mdi:car-brake-hold'\n};\n\nexport const VIEWS_ICONS = {\n home: \"mdi:home-assistant\",\n security: \"mdi:security\",\n};\n\nexport const AREA_STATE_ICONS = {\n occupied: \"mdi:account\",\n extended: \"mdi:account-clock\",\n clear: \"mdi:account-off\",\n bright: \"mdi:brightness-2\",\n dark: \"mdi:brightness-5\",\n sleep: \"mdi:bed\",\n};\n\nexport const AREA_CONTROL_ICONS = {\n light: \"mdi:lightbulb-auto-outline\",\n climate: \"mdi:thermostat-auto\",\n media_player: \"mdi:auto-mode\",\n};\n","import { AGGREGATE_DOMAINS, AREA_CARDS_DOMAINS, UNDISCLOSED } from './../variables';\nimport { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { TemplateCardConfig } from '../types/lovelace-mushroom/cards/template-card-config';\nimport { ChipsCardConfig } from '../types/lovelace-mushroom/cards/chips-card';\nimport { SwipeCard } from '../cards/SwipeCard';\nimport { addLightGroupsToEntities, getAreaName, getFloorName, slugify } from '../utils';\nimport { views } from '../types/strategy/views';\n\n/**\n * Abstract View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractView {\n /**\n * Configuration of the view.\n *\n * @type {views.ViewConfig}\n */\n config: views.ViewConfig = {\n icon: \"mdi:view-dashboard\",\n type: \"sections\",\n subview: false,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * The domain of which we operate the devices.\n *\n * @private\n * @readonly\n */\n readonly #domain: string;\n\n /**\n * The device class of the view.\n *\n * @private\n * @readonly\n */\n readonly #device_class?: string;\n\n /**\n * Class constructor.\n *\n * @param {string} [domain] The domain which the view is representing.\n * @param {string} [device_class] The device class which the view is representing.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor(domain: string, device_class?: string) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.#domain = domain;\n this.#device_class = device_class;\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createViewCards(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n return []\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n return []\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const configEntityHidden = Helper.strategyOptions.domains[this.#domain ?? \"_\"].hide_config_entities\n || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n let isFirstLoop = true;\n\n const floors = Helper.orderedFloors;\n\n for (const floor of floors) {\n if (floor.areas_slug.length === 0 || !AREA_CARDS_DOMAINS.includes(this.#domain ?? \"\")) continue;\n\n const floorCards = [];\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug])) {\n let entities = Helper.getAreaEntities(area, this.#device_class ?? this.#domain);\n const className = Helper.sanitizeClassName(this.#domain + \"Card\");\n const cardModule = await import(`../cards/${className}`);\n\n if (entities.length === 0 || !cardModule) continue;\n\n if (this.#domain === \"light\") entities = addLightGroupsToEntities(area, entities);\n\n const entityCards = entities\n .filter(entity => !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n && !Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"]?.hidden\n && !(entity.entity_category === \"config\" && configEntityHidden))\n .map(entity => new cardModule[className](entity).getCard());\n\n if (entityCards.length) {\n const areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards;\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[this.#domain].controllerCardOptions,\n subtitle: getAreaName(area),\n subtitleIcon: area.area_id === UNDISCLOSED ? \"mdi:help-circle\" : area.icon ?? \"mdi:floor-plan\",\n subtitleNavigate: area.slug\n } as any;\n if (this.#domain) {\n if (area.slug !== UNDISCLOSED && (!AGGREGATE_DOMAINS.includes(this.#domain) || this.#device_class)) {\n titleCardOptions.showControls = Helper.strategyOptions.domains[this.#domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[this.#domain].extraControls;\n titleCardOptions.controlChipOptions = { device_class: this.#device_class, area_slug: area.slug }\n } else {\n titleCardOptions.showControls = false;\n }\n }\n\n const areaControllerCard = new ControllerCard(titleCardOptions, this.#domain, area.slug).createCard();\n\n floorCards.push(...areaControllerCard, ...areaCards);\n }\n }\n\n if (floorCards.length) {\n const titleSectionOptions: any = {\n ...Helper.strategyOptions.domains[this.#domain].controllerCardOptions,\n title: getFloorName(floor),\n titleIcon: floor.icon ?? \"mdi:floor-plan\",\n titleNavigate: slugify(floor.name)\n };\n if (this.#domain) {\n if (!AGGREGATE_DOMAINS.includes(this.#domain) || this.#device_class) {\n titleSectionOptions.showControls = Helper.strategyOptions.domains[this.#domain].showControls;\n titleSectionOptions.extraControls = Helper.strategyOptions.domains[this.#domain].extraControls;\n titleSectionOptions.controlChipOptions = {\n device_class: this.#device_class,\n area_slug: floor.areas_slug\n }\n } else {\n titleSectionOptions.showControls = false;\n }\n }\n\n const floorControllerCard = floors.length > 1 ? new ControllerCard(\n titleSectionOptions,\n this.#domain,\n floor.floor_id\n ).createCard() : [];\n\n const section = { type: \"grid\", cards: [] } as LovelaceGridCardConfig;\n if (isFirstLoop) {\n section.cards.push(...this.viewControllerCard);\n isFirstLoop = false;\n }\n\n section.cards.push(...floorControllerCard);\n section.cards.push(...floorCards);\n viewSections.push(section);\n }\n }\n\n\n return viewSections;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n cards: await this.createViewCards(),\n };\n }\n\n /**\n * Get a target of entity IDs for the given domain.\n *\n * @param {string} domain - The target domain to retrieve entity IDs from.\n * @return {HassServiceTarget} - A target for a service call.\n */\n targetDomain(domain: string): HassServiceTarget {\n return {\n entity_id: Helper.domains[domain]?.filter(\n entity =>\n !entity.hidden_by\n && !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n ).map(entity => entity.entity_id),\n };\n }\n}\n\nexport { AbstractView };\n\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { DEVICE_CLASSES } from \"../variables\";\nimport { getDomainTranslationKey } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Aggregate View Class.\n *\n * Used to create a view for entities of the fan domain.\n *\n * @class AggregateView\n * @extends AbstractView\n */\nclass AggregateView extends AbstractView {\n\n /**\n * Class constructor.\n *\n * @param {views.AggregateViewOptions} [options={}] Options for the view.\n */\n constructor(options: views.AggregateViewOptions) {\n const domain = options?.device_class ? DEVICE_CLASSES.sensor.includes(options?.device_class) ? \"sensor\" : \"binary_sensor\" : options?.domain;\n super(domain, options?.device_class);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n {\n title: Helper.localize(getDomainTranslationKey(domain, options?.device_class)),\n // subtitle: Helper.getDeviceClassCountTemplate(options?.device_class, \"eq\", \"on\") + ` ${Helper.localize(getStateTranslationKey(\"on\", domain, options?.device_class))}s`,\n showControls: !!options?.device_class,\n controlChipOptions: { device_class: options?.device_class },\n }, domain, \"global\").createCard();\n\n }\n}\n\nexport { AggregateView };\n","import { Helper } from \"../Helper\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport { SwipeCard } from \"../cards/SwipeCard\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { ImageAreaCard } from \"../cards/ImageAreaCard\";\nimport { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS, UNDISCLOSED } from \"../variables\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from \"../utils\";\nimport { ResourceKeys } from \"../types/homeassistant/data/frontend\";\nimport { UnavailableChip } from \"../chips/UnavailableChip\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area View Class.\n *\n * Used to create a Area view.\n *\n * @class AreaView\n */\nclass AreaView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: true,\n };\n\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyArea}\n * @private\n */\n area: StrategyArea\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(area: StrategyArea, options: views.ViewConfig = {}) {\n\n this.area = area;\n\n this.config = { ...this.config, ...options };\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n chips.push(new AreaStateChip({ area: this.area, showContent: true }).getChip());\n\n const areaChips = await createChipsFromList(AREA_EXPOSED_CHIPS, { show_content: true }, this.area.slug, this.area.slug);\n if (areaChips) {\n chips.push(...areaChips);\n }\n\n const unavailableChip = new UnavailableChip({ area_slug: this.area.slug }).getChip();\n if (unavailableChip) chips.push(unavailableChip);\n\n // (device?.entities.all_lights && device?.entities.all_lights.entity_id !== \"unavailable\" ? {\n // type: \"custom:mushroom-chips-card\",\n // alignment: \"center\",\n // chips: new AreaScenesChips(device, area).getChips()\n // } : undefined)\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const exposedDomainIds = Helper.getExposedDomainIds();\n\n // Create global section card if area is not undisclosed\n if (this.area.area_id !== UNDISCLOSED && this.area.picture) {\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: [new ImageAreaCard(this.area.area_id).getCard()],\n });\n }\n\n\n for (const domain of exposedDomainIds) {\n if (domain === \"default\") continue;\n\n try {\n const cardModule = await import(`../cards/${Helper.sanitizeClassName(domain + \"Card\")}`);\n let entities = Helper.getAreaEntities(this.area, domain);\n const configEntityHidden = Helper.strategyOptions.domains[domain]?.hide_config_entities || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n\n const domainCards: EntityCardConfig[] = [];\n\n if (entities.length) {\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n subtitle: Helper.localize(getDomainTranslationKey(domain)),\n domain,\n subtitleIcon: Helper.icons[domain as ResourceKeys]._?.default,\n subtitleNavigate: domain,\n };\n\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleCardOptions.showControls = false\n } else {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleCardOptions.controlChipOptions = { area_slug: this.area.slug };\n }\n }\n\n const titleCard = new ControllerCard(titleCardOptions, domain, this.area.slug).createCard();\n\n if (domain === \"light\") entities = addLightGroupsToEntities(this.area, entities);\n\n const entityCards = entities\n .filter(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && configEntityHidden);\n })\n .map(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n if (domain === \"sensor\" && Helper.getEntityState(entity.entity_id)?.attributes.unit_of_measurement) {\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, {\n type: \"custom:mini-graph-card\",\n entities: [entity.entity_id],\n ...cardOptions,\n }).getCard();\n }\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, cardOptions).getCard();\n });\n\n if (entityCards.length) {\n domainCards.push(...(entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards));\n domainCards.unshift(...titleCard);\n }\n\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: domainCards,\n });\n }\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n\n // Handle default domain if not hidden\n if (!Helper.strategyOptions.domains.default.hidden) {\n const areaDevices = this.area.devices.filter(device_id => Helper.devices[device_id].area_id === this.area.area_id);\n const miscellaneousEntities = this.area.entities.filter(entity_id => {\n const entity = Helper.entities[entity_id];\n const entityLinked = areaDevices.includes(entity.device_id ?? \"null\") || entity.area_id === this.area.area_id;\n const entityUnhidden = entity.hidden_by === null && entity.disabled_by === null;\n const domainExposed = exposedDomainIds.includes(entity.entity_id.split(\".\", 1)[0]);\n\n return entityUnhidden && !domainExposed && entityLinked;\n });\n\n if (miscellaneousEntities.length) {\n try {\n const cardModule = await import(\"../cards/MiscellaneousCard\");\n\n const miscellaneousEntityCards = miscellaneousEntities\n .filter(entity_id => {\n const entity = Helper.entities[entity_id];\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && Helper.strategyOptions.domains[\"_\"].hide_config_entities);\n })\n .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard());\n\n const miscellaneousCards = miscellaneousEntityCards.length > 2 ? [new SwipeCard(miscellaneousEntityCards).getCard()] : miscellaneousEntityCards;\n\n const titleCard = {\n type: \"heading\",\n heading: Helper.localize(\"ui.panel.lovelace.editor.card.generic.other_cards\"),\n // icon: this.#defaultConfig.titleIcon,\n heading_style: \"subtitle\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n }\n\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: [titleCard, ...miscellaneousCards],\n });\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n }\n\n return viewSections;\n }\n\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createSectionCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n\n}\n\nexport { AreaView };","import { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Camera View Class.\n *\n * Used to create a view for entities of the camera domain.\n *\n * @class CameraView\n * @extends AbstractView\n */\nclass CameraView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"camera\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Cameras\",\n icon: \"mdi:cctv\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.camera.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(CameraView.#domain, \"ne\", \"off\") + ` ${Helper.localize(\"component.light.entity_component._.state.on\")}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(CameraView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(CameraView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.camera.controllerCardOptions,\n }, CameraView.#domain).createCard();\n }\n}\n\nexport { CameraView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\nimport { ClimateCard } from \"../cards/ClimateCard\";\nimport { ClimateChip } from \"../chips/ClimateChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate View Class.\n *\n * Used to create a view for entities of the climate domain.\n *\n * @class ClimateView\n * @extends AbstractView\n */\nclass ClimateView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"climate\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Climates\",\n icon: \"mdi:thermostat\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.climate.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(ClimateView.#domain, \"ne\", \"off\") + ` ${Helper.localize(`component.fan.entity_component._.state.on`)}s`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(ClimateView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(ClimateView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.climate.controllerCardOptions,\n }, ClimateView.#domain).createCard();\n }\n}\n\nexport { ClimateView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover View Class.\n *\n * Used to create a view for entities of the cover domain.\n *\n * @class CoverView\n * @extends AbstractView\n */\nclass CoverView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"cover\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Covers\",\n icon: \"mdi:window-open\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.cover.entity_component._.name`)}`,\n // subtitle: Helper.getCountTemplate(CoverView.#domain, \"eq\", \"open\") + ` ${Helper.localize(`component.cover.entity_component._.state.open`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(CoverView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(CoverView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.cover.controllerCardOptions,\n }, CoverView.#domain).createCard();\n }\n}\n\nexport { CoverView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan View Class.\n *\n * Used to create a view for entities of the fan domain.\n *\n * @class FanView\n * @extends AbstractView\n */\nclass FanView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"fan\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Fans\",\n icon: \"mdi:fan\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.fan.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(FanView.#domain, \"eq\", \"on\") + ` ${Helper.localize(`component.fan.entity_component._.state.on`)}s`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(FanView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(FanView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.fan.controllerCardOptions,\n }, FanView.#domain).createCard();\n }\n}\n\nexport { FanView };\n","import { Helper } from \"../Helper\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceCardConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyFloor = generic.StrategyFloor;\nimport { SwipeCard } from \"../cards/SwipeCard\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS } from \"../variables\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from \"../utils\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Floor View Class.\n *\n * Used to create a Floor view.\n *\n * @class FloorView\n */\nclass FloorView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: true,\n };\n\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyFloor}\n * @private\n */\n floor: StrategyFloor;\n\n /**\n * View controller card.\n *\n * @type {LovelaceGridCardConfig[]}\n * @private\n */\n viewControllerCard: LovelaceGridCardConfig[] = [];\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(floor: StrategyFloor, options: views.ViewConfig = {}) {\n\n this.floor = floor;\n\n this.config = { ...this.config, ...options };\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n const device = Helper.magicAreasDevices[this.floor.floor_id];\n\n if (device) {\n chips.push(new AreaStateChip({ floor: this.floor, showContent: true }).getChip());\n }\n\n const areaChips = await createChipsFromList(AREA_EXPOSED_CHIPS, { show_content: true }, this.floor.floor_id, this.floor.areas_slug);\n if (areaChips) {\n chips.push(...areaChips);\n }\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const exposedDomainIds = Helper.getExposedDomainIds();\n let isFirstLoop = true;\n\n for (const domain of exposedDomainIds) {\n if (domain === \"default\") continue;\n\n const domainCards: LovelaceCardConfig[] = [];\n\n try {\n const cardModule = await import(`../cards/${Helper.sanitizeClassName(domain + \"Card\")}`);\n const configEntityHidden = Helper.strategyOptions.domains[domain]?.hide_config_entities || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n\n for (const area of this.floor.areas_slug.map(area_slug => Helper.areas[area_slug])) {\n\n if (!area) continue\n\n\n let areaEntities = Helper.getAreaEntities(area, domain);\n\n if (areaEntities.length) {\n\n if (domain === \"light\") areaEntities = addLightGroupsToEntities(area, areaEntities);\n\n const entityCards: EntityCardConfig[] = areaEntities\n .filter(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && configEntityHidden);\n })\n .map(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n if (domain === \"sensor\" && Helper.getEntityState(entity.entity_id)?.attributes.unit_of_measurement) {\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, {\n type: \"custom:mini-graph-card\",\n entities: [entity.entity_id],\n ...cardOptions,\n }).getCard();\n }\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, cardOptions).getCard();\n });\n\n if (entityCards.length) {\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n subtitle: area.name,\n domain,\n subtitleIcon: area.icon,\n subtitleNavigate: area.slug,\n };\n\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleCardOptions.showControls = false\n } else {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleCardOptions.controlChipOptions = { area_slug: area.slug };\n }\n }\n\n const titleCard = new ControllerCard(titleCardOptions, domain, area.slug).createCard();\n\n let areaCards;\n areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards;\n areaCards.unshift(...titleCard);\n\n domainCards.push(...areaCards);\n }\n }\n }\n\n if (domainCards.length) {\n const titleSectionOptions: any = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n title: Helper.localize(getDomainTranslationKey(domain)),\n titleIcon: Helper.icons[domain as keyof typeof Helper.icons]._?.default ?? \"mdi:floor-plan\",\n titleNavigate: domain,\n };\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleSectionOptions.showControls = false\n } else {\n titleSectionOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleSectionOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleSectionOptions.controlChipOptions = { area_slug: this.floor.areas_slug };\n }\n }\n\n const domainControllerCard = new ControllerCard(\n titleSectionOptions,\n domain,\n this.floor.floor_id\n ).createCard();\n\n const section = { type: \"grid\", cards: [] } as LovelaceGridCardConfig;\n if (isFirstLoop) {\n section.cards.push(...this.viewControllerCard);\n isFirstLoop = false;\n }\n\n section.cards.push(...domainControllerCard);\n section.cards.push(...domainCards);\n viewSections.push(section);\n }\n\n\n // // Handle default domain if not hidden\n // if (!Helper.strategyOptions.domains.default.hidden) {\n // const areaDevices = area.devices.filter(device_id => Helper.devices[device_id].area_id === floor.area_id);\n // const miscellaneousEntities = floor.entities.filter(entity_id => {\n // const entity = Helper.entities[entity_id];\n // const entityLinked = areaDevices.includes(entity.device_id ?? \"null\") || entity.area_id === floor.area_id;\n // const entityUnhidden = entity.hidden_by === null && entity.disabled_by === null;\n // const domainExposed = exposedDomainIds.includes(entity.entity_id.split(\".\", 1)[0]);\n\n // return entityUnhidden && !domainExposed && entityLinked;\n // });\n\n // if (miscellaneousEntities.length) {\n // try {\n // const cardModule = await import(\"../cards/MiscellaneousCard\");\n\n // const swipeCard = miscellaneousEntities\n // .filter(entity_id => {\n // const entity = Helper.entities[entity_id];\n // const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n // const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n // return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && Helper.strategyOptions.domains[\"_\"].hide_config_entities);\n // })\n // .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard());\n\n // viewSections.push({\n // type: \"grid\",\n // column_span: 1,\n // cards: [new SwipeCard(swipeCard).getCard()],\n // });\n // } catch (e) {\n // Helper.logError(\"An error occurred while creating the domain cards!\", e);\n // }\n // }\n // }\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n\n return viewSections;\n }\n\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createSectionCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n\n}\n\nexport { FloorView };\n","import { Helper } from \"../Helper\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { ActionConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { PersonCardConfig } from \"../types/lovelace-mushroom/cards/person-card-config\";\nimport { SettingsChip } from \"../chips/SettingsChip\";\nimport { SettingsPopup } from \"../popups/SettingsPopup\";\nimport { HOME_EXPOSED_CHIPS, UNAVAILABLE, UNDISCLOSED } from \"../variables\";\nimport { createChipsFromList, getFloorName, getMAEntity, navigateTo, slugify } from \"../utils\";\nimport { WeatherChip } from \"../chips/WeatherChip\";\nimport { AggregateChip } from \"../chips/AggregateChip\";\nimport { PersonCard } from \"../cards/PersonCard\";\nimport { ConditionalChip } from \"../chips/ConditionalChip\";\nimport { UnavailableChip } from \"../chips/UnavailableChip\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Home View Class.\n *\n * Used to create a Home view.\n *\n * @class HomeView\n */\nclass HomeView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n title: \"Home\",\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: false,\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n const chipOptions = Helper.strategyOptions.chips;\n\n let chipModule;\n\n // Weather chip.\n const weatherEntityId = Helper.linus_dashboard_config?.weather_entity_id;\n\n if (weatherEntityId) {\n try {\n const weatherChip = new WeatherChip(weatherEntityId);\n chips.push(weatherChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the weather chip!\", e);\n }\n }\n\n // Alarm chip.\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n\n if (alarmEntityId) {\n try {\n chipModule = await import(\"../chips/AlarmChip\");\n const alarmChip = new chipModule.AlarmChip(alarmEntityId);\n\n chips.push(alarmChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the alarm chip!\", e);\n }\n }\n\n // Spotify chip.\n const spotifyEntityId = chipOptions?.spotify_entity ?? Helper.domains.media_player?.find(\n (entity) => entity.entity_id.startsWith(\"media_player.spotify_\") && entity.disabled_by === null && entity.hidden_by === null,\n )?.entity_id;\n\n if (spotifyEntityId) {\n try {\n chipModule = await import(\"../chips/SpotifyChip\");\n const spotifyChip = new chipModule.SpotifyChip(spotifyEntityId);\n\n chips.push(spotifyChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the spotify chip!\", e);\n }\n }\n\n const homeChips = await createChipsFromList(HOME_EXPOSED_CHIPS, { show_content: true });\n if (homeChips) {\n chips.push(...homeChips);\n }\n\n const unavailableChip = new UnavailableChip().getChip();\n if (unavailableChip) chips.push(unavailableChip);\n\n const linusSettings = new SettingsChip({ tap_action: new SettingsPopup().getPopup() })\n\n chips.push(linusSettings.getChip());\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"areas\")) {\n // Areas section is hidden.\n return [];\n }\n\n const groupedSections: LovelaceGridCardConfig[] = [];\n const floors = Helper.orderedFloors\n let isFirstLoop = true;\n\n for (const floor of floors) {\n if (floor.areas_slug.length === 0) continue\n\n const options = Helper.strategyOptions;\n let floorSection = {\n type: \"grid\",\n column_span: 1,\n cards: [],\n } as LovelaceGridCardConfig;\n\n if (isFirstLoop) {\n const personCards = await this.#createPersonCards();\n floorSection.cards.push({\n type: \"horizontal-stack\",\n cards: personCards,\n } as StackCardConfig);\n\n\n if (!Helper.strategyOptions.home_view.hidden.includes(\"greeting\")) {\n const tod = Helper.magicAreasDevices.global?.entities.time_of_the_day;\n\n floorSection.cards.push({\n type: \"custom:mushroom-template-card\",\n primary: `\n {% set tod = states(\"${tod?.entity_id}\") %}\n {% if (tod == \"evening\") %} Bonne soirée, {{user}} !\n {% elif (tod == \"daytime\") %} Bonne après-midi, {{user}} !\n {% elif (tod == \"night\") %} Bonne nuit, {{user}} !\n {% else %} Bonjour, {{user}} !\n {% endif %}`,\n icon: \"mdi:hand-wave\",\n icon_color: \"orange\",\n layout_options: {\n grid_columns: 4,\n grid_rows: 1,\n },\n tap_action: {\n action: \"none\",\n } as ActionConfig,\n double_tap_action: {\n action: \"none\",\n } as ActionConfig,\n hold_action: {\n action: \"none\",\n } as ActionConfig,\n } as TemplateCardConfig);\n }\n\n\n // Add quick access cards.\n if (options.quick_access_cards) {\n floorSection.cards.push(...options.quick_access_cards);\n }\n\n // Add custom cards.\n if (options.extra_cards) {\n floorSection.cards.push(...options.extra_cards);\n }\n }\n\n if (isFirstLoop && !Helper.strategyOptions.home_view.hidden.includes(\"areasTitle\")) {\n floorSection.cards.push({\n type: \"heading\",\n heading: `${Helper.localize(\"ui.components.area-picker.area\")}s`,\n heading_style: \"title\",\n });\n\n isFirstLoop = false;\n }\n\n const temperatureEntity = getMAEntity(floor.floor_id, \"sensor\", \"temperature\");\n\n if (floors.length > 1) {\n floorSection.cards.push(\n {\n type: \"heading\",\n heading: getFloorName(floor),\n heading_style: \"subtitle\",\n icon: floor.icon ?? \"mdi:floor-plan\",\n badges: [{\n type: \"custom:mushroom-chips-card\",\n alignment: \"end\",\n chips: [\n new ConditionalChip(\n [{ entity: temperatureEntity?.entity_id!, state_not: UNAVAILABLE }],\n new AggregateChip({ device_class: \"temperature\", show_content: true, magic_device_id: floor.floor_id, area_slug: floor.areas_slug }).getChip()\n ).getChip(),\n ],\n card_mod: {\n style: `\n ha-card {\n min-width: 100px;\n }\n `,\n }\n }],\n tap_action: floor.floor_id !== UNDISCLOSED ? navigateTo(slugify(floor.name)) : undefined,\n }\n );\n }\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).values()) {\n\n type ModuleType = typeof import(\"../cards/HomeAreaCard\");\n\n let module: ModuleType;\n let moduleName =\n Helper.strategyOptions.areas[area.slug]?.type ??\n Helper.strategyOptions.areas[\"_\"]?.type ??\n \"default\";\n\n // Load module by type in strategy options.\n try {\n module = await import((`../cards/${moduleName}`));\n } catch (e) {\n // Fallback to the default strategy card.\n module = await import(\"../cards/HomeAreaCard\");\n\n if (Helper.strategyOptions.debug && moduleName !== \"default\") {\n console.error(e);\n }\n }\n\n // Get a card for the area.\n if (!Helper.strategyOptions.areas[area.slug as string]?.hidden) {\n let options = {\n ...Helper.strategyOptions.areas[\"_\"],\n ...Helper.strategyOptions.areas[area.slug],\n area_slug: area.slug,\n };\n\n floorSection.cards.push({\n ...new module.HomeAreaCard(options).getCard(),\n layout_options: {\n grid_columns: 2\n }\n });\n }\n }\n\n\n if (floor.floor_id === UNDISCLOSED) {\n floorSection.cards.push({\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.add_new_area.state.on\"),\n secondary: Helper.localize(\"component.linus_dashboard.entity.button.add_new_area.state.off\"),\n multiline_secondary: true,\n icon: \"mdi:view-dashboard-variant\",\n fill_container: true,\n layout_options: {\n grid_columns: 4,\n grid_rows: 1,\n },\n tap_action: {\n action: \"navigate\",\n navigation_path: \"/config/areas/dashboard\",\n },\n } as any);\n }\n\n groupedSections.push(floorSection);\n }\n\n return groupedSections;\n }\n\n /**\n * Create the person cards to include in the view.\n *\n * @return {Promise} A Person Card array.\n */\n async #createPersonCards(): Promise {\n if (Helper.strategyOptions.home_view.hidden.includes(\"persons\")) {\n // Person section is hidden.\n\n return [];\n }\n\n const cards: PersonCardConfig[] = [];\n const persons = Helper.domains.person.filter((entity) => {\n return entity.hidden_by == null\n && entity.disabled_by == null\n });\n\n for (const person of persons) {\n cards.push(new PersonCard(person).getCard());\n }\n\n\n return cards;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n}\n\nexport { HomeView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light View Class.\n *\n * Used to create a view for entities of the light domain.\n *\n * @class LightView\n * @extends AbstractView\n */\nclass LightView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"light\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n icon: \"mdi:lightbulb-group\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.light.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(LightView.#domain, \"eq\", \"on\") + ` ${Helper.localize(\"component.light.entity_component._.state.on\")}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(LightView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.light.controllerCardOptions,\n }, LightView.#domain, \"global\").createCard();\n\n }\n}\n\nexport { LightView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * MediaPlayer View Class.\n *\n * Used to create a view for entities of the media_player domain.\n *\n * @class MediaPlayerView\n * @extends AbstractView\n */\nclass MediaPlayerView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"media_player\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"MediaPlayers\",\n icon: \"mdi:cast\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.media_player.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(MediaPlayerView.#domain, \"ne\", \"off\") + \" media players on\",\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(MediaPlayerView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(MediaPlayerView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.media_player.controllerCardOptions,\n }, MediaPlayerView.#domain).createCard();\n }\n}\n\nexport { MediaPlayerView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Scene View Class.\n *\n * Used to create a view for entities of the scene domain.\n *\n * @class SceneView\n * @extends AbstractView\n */\nclass SceneView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"scene\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Scenes\",\n icon: \"mdi:palette\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`ui.dialogs.quick-bar.commands.navigation.scene`)}`,\n // subtitle: Helper.getCountTemplate(SceneView.#domain, \"ne\", \"on\") + ` ${Helper.localize(`ui.dialogs.quick-bar.commands.navigation.scene`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(SceneView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to scene all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(SceneView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.scene.controllerCardOptions,\n }, SceneView.#domain).createCard();\n }\n}\n\nexport { SceneView };\n","import { Helper } from \"../Helper\";\nimport { StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { TitleCardConfig } from \"../types/lovelace-mushroom/cards/title-card-config\";\nimport { AggregateCard } from \"../cards/AggregateCard\";\n\n/**\n * Security View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class SecurityDetailsView {\n /**\n * Configuration of the view.\n *\n * @type {LovelaceViewConfig}\n */\n config: LovelaceViewConfig = {\n title: Helper.localize(\"component.binary_sensor.entity_component.safety.name\"),\n icon: \"mdi:security\",\n subview: true,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {StackCardConfig}\n */\n viewControllerCard: StackCardConfig = {\n cards: [],\n type: \"\",\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TitleCardConfig)[]>} An array of card objects.\n */\n async createViewCards(): Promise<(StackCardConfig | TitleCardConfig)[]> {\n const viewCards: LovelaceCardConfig[] = [];\n\n const globalDevice = Helper.magicAreasDevices[\"global\"];\n\n if (!globalDevice) {\n console.debug(\"Security view : Global device not found\");\n return [];\n }\n\n const {\n aggregate_motion,\n aggregate_door,\n aggregate_window,\n } = globalDevice?.entities;\n\n\n if (aggregate_motion?.entity_id) {\n viewCards.push(new AggregateCard('binary_sensor', { device_class: 'motion', title: Helper.localize(\"component.binary_sensor.entity_component.motion.name\") }).createCard())\n // viewCards.push(new AggregateCard({ entity_id: aggregate_motion.entity_id }, { title: `${Helper.localize(\"component.binary_sensor.entity_component.motion.name\")}s` }).createCard())\n }\n\n if (aggregate_door?.entity_id || aggregate_window?.entity_id) {\n viewCards.push(new AggregateCard('binary_sensor', { device_class: ['door', 'window'], title: Helper.localize(\"component.binary_sensor.entity_component.opening.name\") }).createCard())\n // viewCards.push(new AggregateCard({ entity_id: [aggregate_door?.entity_id, aggregate_window?.entity_id] }, { title: `${Helper.localize(\"component.binary_sensor.entity_component.opening.name\")}s` }).createCard())\n }\n\n return viewCards;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n cards: await this.createViewCards(),\n };\n }\n}\n\nexport { SecurityDetailsView };\n","import { Helper } from \"../Helper\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AlarmCard } from \"../cards/AlarmCard\";\nimport { PersonCard } from \"../cards/PersonCard\";\nimport { BinarySensorCard } from \"../cards/BinarySensorCard\";\nimport { createChipsFromList, getAreaName, getFloorName, navigateTo } from \"../utils\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { SwipeCard } from \"../cards/SwipeCard\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { SECURITY_EXPOSED_CHIPS } from \"../variables\";\n\n/**\n * Security View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nclass SecurityView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n title: Helper.localize(\"component.binary_sensor.entity_component.safety.name\"),\n icon: \"mdi:security\",\n type: \"sections\",\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createViewBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n let chipModule;\n\n // Alarm chip.\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n\n if (alarmEntityId) {\n try {\n chipModule = await import(\"../chips/AlarmChip\");\n const alarmChip = new chipModule.AlarmChip(alarmEntityId);\n\n chips.push(alarmChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the alarm chip!\", e);\n }\n }\n\n const homeChips = await createChipsFromList(SECURITY_EXPOSED_CHIPS, { show_content: true });\n if (homeChips) {\n chips.push(...homeChips);\n }\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n */\n async createSectionCards(): Promise {\n const globalSection: LovelaceGridCardConfig = {\n type: \"grid\",\n column_span: 1,\n cards: []\n };\n\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n if (alarmEntityId) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Sécurité\",\n heading_style: \"title\",\n }\n )\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Alarme\",\n heading_style: \"subtitle\",\n })\n globalSection.cards.push(new AlarmCard(Helper.entities[alarmEntityId]).getCard())\n }\n\n const persons = Helper.domains.person\n if (persons?.length) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Personnes\",\n heading_style: \"subtitle\",\n })\n\n for (const person of persons) {\n globalSection.cards.push(new PersonCard(person, {\n layout: \"horizontal\",\n primary_info: \"name\",\n secondary_info: \"state\"\n }).getCard())\n }\n }\n\n const globalDevice = Helper.magicAreasDevices[\"global\"];\n\n const {\n aggregate_motion,\n aggregate_door,\n aggregate_window,\n } = globalDevice?.entities ?? {};\n\n if (aggregate_motion || aggregate_door || aggregate_window) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Capteurs\",\n heading_style: \"subtitle\",\n })\n if (aggregate_motion?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_motion, { tap_action: navigateTo('security-details') }).getCard());\n if (aggregate_door?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_door, { tap_action: navigateTo('security-details') }).getCard());\n if (aggregate_window?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_window, { tap_action: navigateTo('security-details') }).getCard());\n }\n\n const sections = [globalSection]\n if (Helper.domains.camera?.length) sections.push(await this.createCamerasSection())\n\n return sections;\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} An array of card objects.\n */\n async createCamerasSection(): Promise {\n const domain = \"camera\";\n const camerasSection: LovelaceGridCardConfig = {\n type: \"grid\",\n column_span: 1,\n cards: [\n {\n type: \"heading\",\n heading: `${Helper.localize(`component.camera.entity_component._.name`)}s`,\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n icon: Helper.icons[domain]._?.default,\n }]\n };\n\n const orderedFloors = Object.values(Helper.floors).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.level === undefined) return 1; // a should come after b\n if (b.level === undefined) return -1; // b should come after a\n\n // Both 'level' values are defined, compare them\n return a.level - b.level;\n });\n\n for (const floor of orderedFloors) {\n\n if (floor.areas_slug.length === 0) continue\n\n let floorCards: LovelaceCardConfig[] = [\n {\n type: \"heading\",\n heading: getFloorName(floor),\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n icon: floor.icon ?? \"mdi:floor-plan\",\n }\n ]\n\n // Create cards for each area.\n for (const [i, area] of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).entries()) {\n const entities = Helper.getAreaEntities(area, domain);\n const className = Helper.sanitizeClassName(domain + \"Card\");\n\n const cardModule = await import(`../cards/${className}`);\n\n if (entities.length === 0 || !cardModule) {\n continue;\n }\n\n // Set the target for controller cards to the current area.\n let target: HassServiceTarget = {\n area_id: [area.slug],\n };\n\n let areaCards: LovelaceCardConfig[] = [];\n\n const entityCards = []\n\n // Create a card for each domain-entity of the current area.\n for (const entity of entities) {\n let cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n let deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n\n if (cardOptions?.hidden || deviceOptions?.hidden) {\n continue;\n }\n\n const configEntityHidden =\n Helper.strategyOptions.domains[domain ?? \"_\"].hide_config_entities\n || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n if (entity.entity_category === \"config\" && configEntityHidden) {\n continue;\n }\n entityCards.push(new cardModule[className](entity, cardOptions).getCard());\n }\n\n if (entityCards.length) {\n if (entityCards.length > 2) {\n areaCards.push(new SwipeCard(entityCards).getCard());\n } else {\n areaCards.push(...entityCards);\n }\n }\n\n // Vertical stack the area cards if it has entities.\n if (areaCards.length) {\n const titleCardOptions: any = {};\n titleCardOptions.subtitle = getAreaName(area)\n titleCardOptions.subtitleIcon = area.icon ?? \"mdi:floor-plan\";\n titleCardOptions.navigate = area.slug;\n if (domain) {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n }\n\n // Create and insert a Controller card.\n areaCards.unshift(...new ControllerCard(target, titleCardOptions, domain).createCard())\n\n floorCards.push(...areaCards);\n }\n }\n\n if (floorCards.length > 1) camerasSection.cards.push(...floorCards)\n }\n\n return camerasSection;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createViewBadges(),\n sections: await this.createSectionCards(),\n };\n }\n}\n\nexport { SecurityView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch View Class.\n *\n * Used to create a view for entities of the switch domain.\n *\n * @class SwitchView\n * @extends AbstractView\n */\nclass SwitchView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"switch\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Switches\",\n icon: \"mdi:dip-switch\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.switch.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(SwitchView.#domain, \"eq\", \"on\") + \" switches on\",\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(SwitchView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(SwitchView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.switch.controllerCardOptions,\n }, SwitchView.#domain).createCard();\n }\n}\n\nexport { SwitchView };\n","import { AREA_CARDS_DOMAINS, UNAVAILABLE, UNDISCLOSED } from '../variables';\nimport { Helper } from \"../Helper\";\nimport { LovelaceGridCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\n\nimport { SwipeCard } from '../cards/SwipeCard';\nimport { getEntityDomain, getFloorName, slugify } from '../utils';\nimport { views } from '../types/strategy/views';\n\n/**\n * Abstract View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nclass UnavailableView {\n /**\n * Configuration of the view.\n *\n * @type {views.ViewConfig}\n */\n config: views.ViewConfig = {\n title: Helper.localize(\"state.default.unavailable\"),\n icon: \"mdi:view-dashboard\",\n type: \"sections\",\n subview: true,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n\n for (const floor of Helper.orderedFloors) {\n if (floor.areas_slug.length === 0) continue;\n\n const floorCards = [];\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).values()) {\n const entities = Helper.areas[area.slug].entities;\n const unavailableEntities = entities?.filter(entity_id => AREA_CARDS_DOMAINS.includes(getEntityDomain(entity_id)) && Helper.getEntityState(entity_id)?.state === UNAVAILABLE).map(entity_id => Helper.entities[entity_id]);\n const cardModule = await import(`../cards/MiscellaneousCard`);\n\n if (entities.length === 0 || !cardModule) continue;\n\n let target: HassServiceTarget = { area_id: [area.slug] };\n if (area.area_id === UNDISCLOSED) {\n target = { entity_id: unavailableEntities.map(entity => entity.entity_id) };\n }\n\n const entityCards = unavailableEntities\n .filter(entity => !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n && !Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"]?.hidden\n && !(entity.entity_category === \"config\"))\n .map(entity => new cardModule.MiscellaneousCard(entity).getCard());\n\n if (entityCards.length) {\n const areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards;\n floorCards.push(...areaCards);\n }\n }\n\n if (floorCards.length) {\n const titleSectionOptions: any = {\n title: getFloorName(floor),\n titleIcon: floor.icon ?? \"mdi:floor-plan\",\n titleNavigate: slugify(floor.name)\n };\n viewSections.push({ type: \"grid\", cards: floorCards });\n }\n }\n\n if (viewSections.length) {\n viewSections.unshift({ type: \"grid\", cards: this.viewControllerCard });\n }\n\n return viewSections;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n sections: await this.createSectionCards(),\n };\n }\n\n /**\n * Get a target of entity IDs for the given domain.\n *\n * @param {string} domain - The target domain to retrieve entity IDs from.\n * @return {HassServiceTarget} - A target for a service call.\n */\n targetDomain(domain: string): HassServiceTarget {\n return {\n entity_id: Helper.domains[domain]?.filter(\n entity =>\n !entity.hidden_by\n && !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n ).map(entity => entity.entity_id),\n };\n }\n}\n\nexport { UnavailableView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Vacuum View Class.\n *\n * Used to create a view for entities of the vacuum domain.\n *\n * @class VacuumView\n * @extends AbstractView\n */\nclass VacuumView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"vacuum\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Vacuums\",\n icon: \"mdi:robot-vacuum\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.vacuum.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(VacuumView.#domain, \"ne\", \"off\") + ` ${Helper.localize(`component.vacuum.entity_component._.state.on`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(VacuumView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(VacuumView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.vacuum.controllerCardOptions,\n }, VacuumView.#domain).createCard();\n }\n}\n\nexport { VacuumView };\n","var map = {\n\t\"./AbstractCard\": [\n\t\t\"./src/cards/AbstractCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AbstractCard.ts\": [\n\t\t\"./src/cards/AbstractCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateCard\": [\n\t\t\"./src/cards/AggregateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateCard.ts\": [\n\t\t\"./src/cards/AggregateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmCard\": [\n\t\t\"./src/cards/AlarmCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmCard.ts\": [\n\t\t\"./src/cards/AlarmCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./BinarySensorCard\": [\n\t\t\"./src/cards/BinarySensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./BinarySensorCard.ts\": [\n\t\t\"./src/cards/BinarySensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraCard\": [\n\t\t\"./src/cards/CameraCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraCard.ts\": [\n\t\t\"./src/cards/CameraCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateCard\": [\n\t\t\"./src/cards/ClimateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateCard.ts\": [\n\t\t\"./src/cards/ClimateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ControllerCard\": [\n\t\t\"./src/cards/ControllerCard.ts\"\n\t],\n\t\"./ControllerCard.ts\": [\n\t\t\"./src/cards/ControllerCard.ts\"\n\t],\n\t\"./CoverCard\": [\n\t\t\"./src/cards/CoverCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverCard.ts\": [\n\t\t\"./src/cards/CoverCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanCard\": [\n\t\t\"./src/cards/FanCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanCard.ts\": [\n\t\t\"./src/cards/FanCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./HomeAreaCard\": [\n\t\t\"./src/cards/HomeAreaCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./HomeAreaCard.ts\": [\n\t\t\"./src/cards/HomeAreaCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ImageAreaCard\": [\n\t\t\"./src/cards/ImageAreaCard.ts\"\n\t],\n\t\"./ImageAreaCard.ts\": [\n\t\t\"./src/cards/ImageAreaCard.ts\"\n\t],\n\t\"./LightCard\": [\n\t\t\"./src/cards/LightCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightCard.ts\": [\n\t\t\"./src/cards/LightCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LockCard\": [\n\t\t\"./src/cards/LockCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LockCard.ts\": [\n\t\t\"./src/cards/LockCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerCard\": [\n\t\t\"./src/cards/MediaPlayerCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerCard.ts\": [\n\t\t\"./src/cards/MediaPlayerCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MiscellaneousCard\": [\n\t\t\"./src/cards/MiscellaneousCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MiscellaneousCard.ts\": [\n\t\t\"./src/cards/MiscellaneousCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./NumberCard\": [\n\t\t\"./src/cards/NumberCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./NumberCard.ts\": [\n\t\t\"./src/cards/NumberCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./PersonCard\": [\n\t\t\"./src/cards/PersonCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./PersonCard.ts\": [\n\t\t\"./src/cards/PersonCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneCard\": [\n\t\t\"./src/cards/SceneCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneCard.ts\": [\n\t\t\"./src/cards/SceneCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SensorCard\": [\n\t\t\"./src/cards/SensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SensorCard.ts\": [\n\t\t\"./src/cards/SensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwipeCard\": [\n\t\t\"./src/cards/SwipeCard.ts\"\n\t],\n\t\"./SwipeCard.ts\": [\n\t\t\"./src/cards/SwipeCard.ts\"\n\t],\n\t\"./SwitchCard\": [\n\t\t\"./src/cards/SwitchCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchCard.ts\": [\n\t\t\"./src/cards/SwitchCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumCard\": [\n\t\t\"./src/cards/VacuumCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumCard.ts\": [\n\t\t\"./src/cards/VacuumCard.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/cards lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AbstractChip\": [\n\t\t\"./src/chips/AbstractChip.ts\"\n\t],\n\t\"./AbstractChip.ts\": [\n\t\t\"./src/chips/AbstractChip.ts\"\n\t],\n\t\"./AggregateChip\": [\n\t\t\"./src/chips/AggregateChip.ts\"\n\t],\n\t\"./AggregateChip.ts\": [\n\t\t\"./src/chips/AggregateChip.ts\"\n\t],\n\t\"./AlarmChip\": [\n\t\t\"./src/chips/AlarmChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmChip.ts\": [\n\t\t\"./src/chips/AlarmChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaScenesChips\": [\n\t\t\"./src/chips/AreaScenesChips.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaScenesChips.ts\": [\n\t\t\"./src/chips/AreaScenesChips.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaStateChip\": [\n\t\t\"./src/chips/AreaStateChip.ts\"\n\t],\n\t\"./AreaStateChip.ts\": [\n\t\t\"./src/chips/AreaStateChip.ts\"\n\t],\n\t\"./ClimateChip\": [\n\t\t\"./src/chips/ClimateChip.ts\"\n\t],\n\t\"./ClimateChip.ts\": [\n\t\t\"./src/chips/ClimateChip.ts\"\n\t],\n\t\"./ConditionalChip\": [\n\t\t\"./src/chips/ConditionalChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./ConditionalChip.ts\": [\n\t\t\"./src/chips/ConditionalChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./ControlChip\": [\n\t\t\"./src/chips/ControlChip.ts\"\n\t],\n\t\"./ControlChip.ts\": [\n\t\t\"./src/chips/ControlChip.ts\"\n\t],\n\t\"./CoverChip\": [\n\t\t\"./src/chips/CoverChip.ts\"\n\t],\n\t\"./CoverChip.ts\": [\n\t\t\"./src/chips/CoverChip.ts\"\n\t],\n\t\"./FanChip\": [\n\t\t\"./src/chips/FanChip.ts\"\n\t],\n\t\"./FanChip.ts\": [\n\t\t\"./src/chips/FanChip.ts\"\n\t],\n\t\"./LightChip\": [\n\t\t\"./src/chips/LightChip.ts\"\n\t],\n\t\"./LightChip.ts\": [\n\t\t\"./src/chips/LightChip.ts\"\n\t],\n\t\"./MediaPlayerChip\": [\n\t\t\"./src/chips/MediaPlayerChip.ts\"\n\t],\n\t\"./MediaPlayerChip.ts\": [\n\t\t\"./src/chips/MediaPlayerChip.ts\"\n\t],\n\t\"./SafetyChip\": [\n\t\t\"./src/chips/SafetyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SafetyChip.ts\": [\n\t\t\"./src/chips/SafetyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SettingsChip\": [\n\t\t\"./src/chips/SettingsChip.ts\"\n\t],\n\t\"./SettingsChip.ts\": [\n\t\t\"./src/chips/SettingsChip.ts\"\n\t],\n\t\"./SpotifyChip\": [\n\t\t\"./src/chips/SpotifyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SpotifyChip.ts\": [\n\t\t\"./src/chips/SpotifyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchChip\": [\n\t\t\"./src/chips/SwitchChip.ts\"\n\t],\n\t\"./SwitchChip.ts\": [\n\t\t\"./src/chips/SwitchChip.ts\"\n\t],\n\t\"./ToggleSceneChip\": [\n\t\t\"./src/chips/ToggleSceneChip.ts\"\n\t],\n\t\"./ToggleSceneChip.ts\": [\n\t\t\"./src/chips/ToggleSceneChip.ts\"\n\t],\n\t\"./UnavailableChip\": [\n\t\t\"./src/chips/UnavailableChip.ts\"\n\t],\n\t\"./UnavailableChip.ts\": [\n\t\t\"./src/chips/UnavailableChip.ts\"\n\t],\n\t\"./WeatherChip\": [\n\t\t\"./src/chips/WeatherChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./WeatherChip.ts\": [\n\t\t\"./src/chips/WeatherChip.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/chips lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AbstractView\": [\n\t\t\"./src/views/AbstractView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AbstractView.ts\": [\n\t\t\"./src/views/AbstractView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateView\": [\n\t\t\"./src/views/AggregateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateView.ts\": [\n\t\t\"./src/views/AggregateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaView\": [\n\t\t\"./src/views/AreaView.ts\"\n\t],\n\t\"./AreaView.ts\": [\n\t\t\"./src/views/AreaView.ts\"\n\t],\n\t\"./CameraView\": [\n\t\t\"./src/views/CameraView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraView.ts\": [\n\t\t\"./src/views/CameraView.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateView\": [\n\t\t\"./src/views/ClimateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateView.ts\": [\n\t\t\"./src/views/ClimateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverView\": [\n\t\t\"./src/views/CoverView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverView.ts\": [\n\t\t\"./src/views/CoverView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanView\": [\n\t\t\"./src/views/FanView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanView.ts\": [\n\t\t\"./src/views/FanView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FloorView\": [\n\t\t\"./src/views/FloorView.ts\"\n\t],\n\t\"./FloorView.ts\": [\n\t\t\"./src/views/FloorView.ts\"\n\t],\n\t\"./HomeView\": [\n\t\t\"./src/views/HomeView.ts\",\n\t\t\"main\"\n\t],\n\t\"./HomeView.ts\": [\n\t\t\"./src/views/HomeView.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightView\": [\n\t\t\"./src/views/LightView.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightView.ts\": [\n\t\t\"./src/views/LightView.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerView\": [\n\t\t\"./src/views/MediaPlayerView.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerView.ts\": [\n\t\t\"./src/views/MediaPlayerView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneView\": [\n\t\t\"./src/views/SceneView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneView.ts\": [\n\t\t\"./src/views/SceneView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityDetailsView\": [\n\t\t\"./src/views/SecurityDetailsView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityDetailsView.ts\": [\n\t\t\"./src/views/SecurityDetailsView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityView\": [\n\t\t\"./src/views/SecurityView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityView.ts\": [\n\t\t\"./src/views/SecurityView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchView\": [\n\t\t\"./src/views/SwitchView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchView.ts\": [\n\t\t\"./src/views/SwitchView.ts\",\n\t\t\"main\"\n\t],\n\t\"./UnavailableView\": [\n\t\t\"./src/views/UnavailableView.ts\",\n\t\t\"main\"\n\t],\n\t\"./UnavailableView.ts\": [\n\t\t\"./src/views/UnavailableView.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumView\": [\n\t\t\"./src/views/VacuumView.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumView.ts\": [\n\t\t\"./src/views/VacuumView.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/views lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/linus-strategy.ts\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"linus-strategy.js","mappings":";;;;;;;;;;AAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE,IAAI;AACN;;AAEA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpIgE;AAE9B;AAU8D;AAC6C;AAK7I;;;;GAIG;AACH,MAAM,MAAM;IAyGV;;;;;;;OAOG;IACH;QACE,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;IAC7G,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,eAAe;QACxB,OAAO,2BAAI,mCAAiB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,iBAAiB;QAC1B,OAAO,2BAAI,qCAAmB,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,2BAAI,yBAAO,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,YAAY;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,2BAAI,yBAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,iDAAiD;YACjD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB;YAC7D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAE9D,gDAAgD;YAChD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,MAAM;QACf,OAAO,2BAAI,0BAAQ;IACrB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,aAAa;QACtB,OAAO,MAAM,CAAC,MAAM,CAAC,2BAAI,0BAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/C,iDAAiD;YACjD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB;YAC7D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAE9D,gDAAgD;YAChD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,OAAO;QAChB,OAAO,2BAAI,2BAAS,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,QAAQ;QACjB,OAAO,2BAAI,4BAAU,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,OAAO;QAChB,OAAO,2BAAI,2BAAS,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,2BAAI,yBAAO,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,sBAAsB;QAC/B,OAAO,2BAAI,0CAAwB,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,MAAM,KAAK,KAAK;QACd,OAAO,2BAAI,yBAAO,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAA2B;QACjD,yBAAyB;QACzB,2BAAI,MAAe,IAAI,CAAC,IAAI,CAAC,MAAM,2BAAC;QACpC,2BAAI,MAAiB,IAAI,CAAC,IAAI,CAAC,QAAQ,6BAAC;QACxC,2BAAI,MAAoB,gDAAS,CAAC,yEAAqB,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC,gCAAC;QAC/F,2BAAI,MAAU,2BAAI,mCAAiB,CAAC,KAAK,sBAAC;QAE1C,IAAI,uBAAuB,GAAG,EAAE;QAEhC,IAAI;YACF,0CAA0C;YAE1C,uBAAuB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAmC;gBAC3F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAmC;gBAC3F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAiC;gBACvF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAkC;gBACzF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAkD;gBAC/H,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAkD;gBACvH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAkC;aAC1F,CAAC,CAAC;SAEJ;QAAC,OAAO,CAAC,EAAE;YACV,EAAM,CAAC,QAAQ,CAAC,+DAA+D,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,+BAA+B,CAAC;SACvC;QAED,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,cAAc,EAAE,sBAAsB,CAAC,GAAG,uBAAuB,CAAC;QAEnI,2BAAI,MAAU,gDAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,sBAAC;QACpF,2BAAI,MAA2B,sBAAsB,uCAAC;QAEtD,qCAAqC;QACrC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,kBAAkB,GAAqC,EAAE,CAAC;QAChE,MAAM,gBAAgB,GAAqC,EAAE,CAAC;QAC9D,MAAM,eAAe,GAAqC,EAAE,CAAC;QAE7D,2BAAI,MAAa,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAE/C,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,2BAAI,8BAAY,CAAC,IAAI,MAAM,CAAC,SAAS;gBAAE,OAAO,GAAG,CAAC;YAE5E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAkB,CAAC;YAC7E,MAAM,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAmB,CAAC;YAChF,MAAM,cAAc,GAAG;gBACrB,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;aACjC,CAAC;YAEF,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;YAEvC,IAAI,MAAM,CAAC,QAAQ,KAAK,0DAAkB,EAAE;gBAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,mDAAW,CAAC;gBAC3F,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC7D,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC/C;YAED,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC;oBAAE,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBACrF,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC3D;YAGD,IAAI,MAAM,GAAG,uDAAe,CAAC,MAAM,CAAC,SAAS,CAAC;YAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,sDAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAChD,MAAM,WAAW,GAAG,EAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC5D,IAAI,WAAW,EAAE,UAAU,EAAE,YAAY;oBAAE,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY;aACxF;YACD,IAAI,CAAC,2BAAI,2BAAS,CAAC,MAAM,CAAC;gBAAE,2BAAI,2BAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACvD,IAAI,MAAM,CAAC,QAAQ,KAAK,0DAAkB;gBAAE,2BAAI,2BAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEvF,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAoC,CAAC,yBAAC;QAEzC,yBAAyB;QACzB,2BAAI,MAAY,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAkB,CAAC;YAC7E,MAAM,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAmB,CAAC;YAEhF,MAAM,cAAc,GAAG;gBACrB,GAAG,MAAM;gBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;aAC3D,CAAC;YAEF,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;YAEhC,IAAI,MAAM,CAAC,YAAY,KAAK,wDAAgB,EAAE;gBAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,IAAI,mDAAW,CAAC;gBAC7C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;oBAAE,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAC3D,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC9C;YAED,IAAI,MAAM,CAAC,YAAY,KAAK,wDAAgB,EAAE;gBAC5C,2BAAI,qCAAmB,CAAC,wDAAgB,CAAC,MAAgC,CAAC,CAAC,GAAG;oBAC5E,GAAG,MAAM;oBACT,SAAS,EAAE,MAAM,CAAC,IAAK;oBACvB,QAAQ,EAAE,gBAAgB;yBACvB,MAAM,CAAC,CAAC,QAAwC,EAAE,MAAM,EAAE,EAAE;wBAC3D,QAAQ,CAAC,MAAM,CAAC,eAAgB,CAAC,GAAG,MAAM,CAAC;wBAC3C,OAAO,QAAQ,CAAC;oBAClB,CAAC,EAAE,EAAE,CAAC;iBACT;aACF;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAoC,CAAC,wBAAC;QAGzC,6EAA6E;QAC7E,IAAI,CAAC,2BAAI,mCAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE;YAEpD,2BAAI,mCAAiB,CAAC,KAAK,CAAC,WAAW,GAAG;gBACxC,GAAG,yEAAqB,CAAC,KAAK,CAAC,WAAW;gBAC1C,GAAG,2BAAI,mCAAiB,CAAC,KAAK,CAAC,WAAW;aAC3C,CAAC;YAEF,KAAK,CAAC,IAAI,CAAC,2BAAI,mCAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;SACrD;QAED,qBAAqB;QACrB,2BAAI,MAAU,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAEvC,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAE3F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,KAAK,mDAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,+CAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE9E,MAAM,YAAY,GAAG;gBACnB,GAAG,IAAI;gBACP,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,mDAAW;gBACvC,IAAI;gBACJ,OAAO,EAAE,6DAAqB,CAAC,YAAY,CAAC,IAAI,EAAE;gBAClD,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;gBACtE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,2BAAI,2BAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,wDAAgB,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBACnI,QAAQ,EAAE,YAAY;aACvB,CAAC;YAEF,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;YACzB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAkC,CAAC,sBAAC;QAGvC,8EAA8E;QAC9E,IAAI,CAAC,2BAAI,mCAAiB,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE;YAEpD,2BAAI,mCAAiB,CAAC,MAAM,CAAC,WAAW,GAAG;gBACzC,GAAG,yEAAqB,CAAC,MAAM,CAAC,WAAW;gBAC3C,GAAG,2BAAI,mCAAiB,CAAC,MAAM,CAAC,WAAW;aAC5C,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,2BAAI,mCAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;SACvD;QAED,sBAAsB;QACtB,2BAAI,MAAW,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,2BAAI,yBAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;YAElG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;gBACpB,GAAG,KAAK;gBACR,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aAChD,CAAC;YAEF,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAmC,CAAC,uBAAC;QAGxC,0FAA0F;QAC1F,2BAAI,mCAAiB,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9C,MAAM,CAAC,OAAO,CAAC,2BAAI,mCAAiB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAChE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QACzH,CAAC,CAAC,CACH,CAAC;QAEF,4FAA4F;QAC5F,2BAAI,mCAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,OAAO,CAAC,2BAAI,mCAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QACzH,CAAC,CAAC,CACH,CAAC;QAEF,yEAAyE;QAEzE,2BAAI,MAAgB,IAAI,4BAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa;QAClB,OAAO,2BAAI,+BAAa,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAwB,EAAE,SAA6B;QAC/G,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,IAAI,IAAI,EAAE;gBACR,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK;oBAChC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC;oBAC1E,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;gBACrF,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;aAC1C;iBAAM;gBACL,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,2BAAI,yBAAO,CAAC,EAAE;oBAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,mDAAW;wBAAE,SAAS;oBAE3C,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK;wBAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC;wBAC5D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;oBACvE,IAAI,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC1C;aACF;SACF;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;QAEvG,OAAO,sBAAsB,MAAM,yCAAyC,QAAQ,KAAK,aAAa,qBAAqB,CAAC;IAC9H,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,2BAA2B,CAAC,YAAoB,EAAE,QAAgB,EAAE,KAAa,EAAE,YAA+B,QAAQ;QAC/H,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEtE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE;YAC7B,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;YACrI,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YACzE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1C;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;QACtG,OAAO,sBAAsB,MAAM,qHAAqH,YAAY,4BAA4B,QAAQ,KAAK,cAAc,qBAAqB,CAAC;IACnP,CAAC;IAED;;;;;;;;;;OAUG;IACH;;;;;;;;OAQG;IACH,MAAM,CAAC,uBAAuB,CAAC,YAAoB,EAAE,YAA+B,QAAQ;QAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,mDAAW,CAAC,IAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;YAC1K,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YACzE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1C;QAED,OAAO,sBAAsB,MAAM,sHAAsH,YAAY,0FAA0F,MAAM,CAAC,CAAC,CAAC,oCAAoC,CAAC;IAC/S,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,eAAe,CAAC,IAAkB,EAAE,MAAe;QAExD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,IAAI,MAAM,EAAE;YACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2BAAI,4BAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;SAC/E;aAAM;YACL,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2BAAI,4BAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE;SACvE;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAkB,EAAE,MAAc;QACxD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,2DAA2D;QAC3D,MAAM,aAAa,GAAG,2BAAI,yBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2BAAI,8BAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAE5G,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAiB;QACxC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnE,OAAO,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;aACtD,WAAW,EAAE;aACb,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;aAChB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAClB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,iBAAiB;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,OAAO,2BAAI,gDAA8B,MAAlC,IAAI,EAA+B,2BAAI,mCAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1F,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,mBAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,OAAO,2BAAI,gDAA8B,MAAlC,IAAI,EAA+B,2BAAI,mCAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IA0BD;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAmB,EAAE,CAAW;QAC9C,IAAI,EAAM,CAAC,KAAK,EAAE;YAChB,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAE9B,OAAO;SACR;QAED,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,SAAiB;QACrC,OAAO,2BAAI,8BAAY,CAAC,SAAS,CAAC;IACpC,CAAC;IAGD;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAsB;QACpC,OAAO,2BAAI,gCAAc,MAAlB,IAAI,EAAe,cAAc,CAAC,IAAI,uBAAuB,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,MAAsB;QAC1C,OAAO,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI;IACjE,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAA2I;QAC7N,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,IAAI,IAAI,EAAE;gBACR,MAAM,YAAY,GAAG,mDAAW,CAAC,IAAK,EAAE,MAAM,CAAC,CAAC;gBAChD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;gBACnK,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;gBACzE,IAAI,SAAS;oBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;aAC1C;iBAAM;gBACL,gEAAgE;gBAChE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,2BAAI,yBAAO,CAAC,EAAE;oBAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,mDAAW;wBAAE,SAAQ;oBAE1C,MAAM,SAAS,GAAG,MAAM,KAAK,KAAK;wBAChC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC;wBAC/E,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;oBAC1F,IAAI,SAAS;wBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC1C;aACF;SACF;QAED,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC;SAChC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;YAC5B,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC;YACvB,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC;SACjC;QACD,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC;YACxB,QAAQ,GAAG,QAAQ,IAAI,MAAM,CAAC;SAC/B;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC;SAChC;QACD,IAAI,MAAM,KAAK,cAAc,EAAE;YAC7B,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC;YAC3B,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC;SACpC;QACD,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,QAAQ,GAAG,QAAQ,IAAI,MAAM,CAAC;SAC/B;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC;QAE/G,OAAO,sBAAsB,MAAM,WAAW,QAAQ,IAAI,OAAO,uCAAuC,QAAQ,IAAI,IAAI,MAAM,aAAa,8BAA8B,UAAU,IAAI,MAAM,MAAM,CAAC;IACtM,CAAC;IAED,MAAM,CAAC,6BAA6B,CAAC,YAAoB,EAAE,QAAgB,EAAE,KAAa,EAAE,QAAgB,EAAE,UAAkB,EAAE,YAA+B,QAAQ;QACvK,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,mDAAW,CAAC,IAAK,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;YAC/K,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YAEzE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1C;QAED,OAAO;2BACgB,MAAM;YACrB,QAAQ,mHAAmH,YAAY,4BAA4B,QAAQ,MAAM,KAAK,2BAA2B,UAAU,MAAM,CAAC;IAC5O,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,YAAoB,EAAE,YAA+B,QAAQ;QAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAGrE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,mDAAW,CAAC,IAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;YAC/K,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YACzE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1C;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,OAAO;6BACgB,MAAM;iIAC8F,YAAY;;;;;;;;;;OAUtI,CAAC;SACH;QAED,IAAI,YAAY,KAAK,aAAa,EAAE;YAClC,OAAO;6BACgB,MAAM;iIAC8F,YAAY;;;;;;;;;;OAUtI,CAAC;SACH;QAED,IAAI,YAAY,KAAK,UAAU,EAAE;YAC/B,OAAO;6BACgB,MAAM;uIACoG,YAAY;;;;;;;;OAQ5I,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,YAAoB,EAAE,YAA+B,QAAQ;QACzF,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;SAChF;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;YAC5B,MAAM,YAAY,GAAG,mDAAW,CAAC,IAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,0EAAkC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,yBAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;YAC/K,MAAM,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,SAAS,IAAI,CAAC,CAAC;YACzE,IAAI,SAAS;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1C;QAED,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,OAAO;6BACgB,MAAM;iIAC8F,YAAY;;;;;;;;;;;;;;OActI,CAAC;SACH;QAED,IAAI,YAAY,KAAK,aAAa,EAAE;YAClC,OAAO;6BACgB,MAAM;iIAC8F,YAAY;;;;;;;;;;OAUtI,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;;kGAjQC,MAA4B,EAC5B,QAAgB,EAAE,KAAU;IAE5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACrC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAChB;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA/qBD;;;;;GAKG;AACI,oCAAS,CAAiC;AAEjD;;;;;GAKG;AACI,2BAA6C,EAAE,EAAvC,CAAwC;AAEvD;;;;;GAKG;AACI,mCAAQ,CAAiC;AAEhD;;;;;GAKG;AACI,yBAAuC,EAAE,EAAnC,CAAoC;AAEjD;;;;;GAKG;AACI,0BAAyC,EAAE,EAApC,CAAqC;AAEnD;;;;;GAKG;AACI,sCAAW,CAAe;AAEjC;;;;;GAKG;AACI,wCAAa,CAAM;AAE1B;;;;;GAKG;AACI,+BAAwB,KAAK,EAAjB,CAAkB;AAErC;;;;;GAKG;AACI,2CAAgB,CAAyB;AAEhD;;;;;GAKG;AACI,qCAA6D,EAAE,EAA7C,CAA8C;AAEvE;;;;;GAKG;AACI,iCAAM,CAAU;AAEvB;;;;;GAKG;AACI,iCAAM,CAAgB;AAE7B;;;;;GAKG;AACI,kDAAuB,CAAuB;AAi0BrC;;;;;;;;;;;;;;;;;AC/7BiB;AAKnC;;;;;;;GAOG;AACH,MAAe,YAAY;IAkBzB;;;;;OAKG;IACH,YAAsB,MAA6B;QAhBnD;;;;WAIG;QACH,WAAM,GAAqB;YACzB,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,iBAAiB;SACxB,CAAC;QASA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACtF,CAAC;IACJ,CAAC;CACF;AAEuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxD2E;AAChE;AAEQ;AAS3C;;;;;;GAMG;AACH,MAAM,aAAa;IAiBjB;;;;;OAKG;IACH,YAAY,MAAc,EAAE,UAA+B,EAAE;QAtB7D;;;WAGG;QACM,wCAAgB;QAEzB;;;;;WAKG;QACM,uCAAsC;YAC7C,WAAW,EAAE,QAAQ;SACtB,EAAC;QASA,2BAAI,yBAAW,MAAM,OAAC;QACtB,2BAAI,gCAAkB;YACpB,GAAG,2BAAI,oCAAe;YACtB,GAAG,OAAO;SACX,OAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QAER,MAAM,OAAO,GAAG,OAAO,CAAC,2BAAI,6BAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAAI,6BAAQ,CAAC,CAAC,CAAC,CAAC,2BAAI,6BAAQ,CAAC;QACnF,MAAM,aAAa,GAAG,2BAAI,oCAAe,CAAC,YAAY,IAAI,OAAO,CAAC,2BAAI,oCAAe,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,2BAAI,oCAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,2BAAI,oCAAe,CAAC,YAAY,CAAC;QAEzL,MAAM,KAAK,GAAyB,EAAE,CAAC;QAEvC,MAAM,cAAc,GAAG,0DAAkB,CAAC,2CAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;QAEjH,IAAI,cAAc,EAAE;YAClB,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,cAAc,CAAC,SAAS;gBAChC,aAAa,EAAE,uDAAe,CAAC,cAAc,CAAC,SAAS,CAAC;gBACxD,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;gBAC5E,eAAe,EAAE,2BAAI,6BAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;aACnE,CAAC,CAAC;SACJ;QAID,KAAK,MAAM,KAAK,IAAI,2CAAM,CAAC,aAAa,EAAE;YACxC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE3C,IAAI,UAAU,GAA2B,EAAE,CAAC;YAC5C,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,oDAAY,CAAC,KAAK,CAAC;gBAC7B,QAAQ,EAAE;oBACR,KAAK,EAAE;;;;WAIN;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,SAAS,GAA2B,EAAE,CAAC;YAE3C,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBAE5F,IAAI,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM;oBAAE,SAAQ;gBAE9D,IAAI,IAAI,CAAC,IAAI,KAAK,mDAAW,EAAE;oBAC7B,MAAM,YAAY,GAAG,0DAAkB,CAAC,2CAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBAE1I,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;wBACrC,SAAS,CAAC,IAAI,CAAC;4BACb,IAAI,EAAE,MAAM;4BACZ,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,mDAAW,CAAC,IAAI,CAAC;4BAC1B,aAAa,EAAE,uDAAe,CAAC,UAAU,CAAC;4BAC1C,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;yBAC/D,CAAC,CAAC;qBACJ;iBACF;gBAED,oEAAoE;gBACpE,IAAI,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;wBAC5C,UAAU,CAAC,IAAI,CAAC;4BACd,IAAI,EAAE,kBAAkB;4BACxB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;yBACjC,CAAC,CAAC;qBACJ;iBACF;aAEF;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,UAAU,CAAC,GAAG,EAAE;YAE5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;SAErD;QAED,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;CACF;;AAEwB;;;;;;;;;;;;;;;;;;;;;;;AC3IqB;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAmBlC;;;;;OAKG;IACH,YAAY,MAA2B;QACrC,KAAK,CAAC,MAAM,CAAC,CAAC;QAzBhB;;;;;WAKG;QACH,mCAAiC;YAC/B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,CAAC;iBACxG;aACF;SACF,EAAC;QAWA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,CAAC,CAAC;IAChE,CAAC;CACF;;AAEoB;;;;;;;;;;;;;;;;;;;;;;;AC7CqB;AAK1C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,gBAAiB,SAAQ,mDAAU;IAcvC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QArBhB;;;;;WAKG;QACH,0CAAmC;YACjC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,cAAc;YAC7B,QAAQ,EAAE,KAAK;SAChB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,uCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAE2B;;;;;;;;;;;;;;;;;;;;;;;AC1CgB;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAenC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAA0C,EAAE;QACnF,KAAK,CAAC,MAAM,CAAC,CAAC;QAtBhB;;;;;WAKG;QACH,oCAA0C;YACxC,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,MAAM;SACpB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEmB;;;;;;;;;;;;;;;;;;;;;;;;AC3C0B;AAIX;AAEnC,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,WAAY,SAAQ,uDAAY;IAqBpC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAoC,EAAE;QAC7E,KAAK,CAAC,MAAM,CAAC,CAAC;QA5BhB;;;;;WAKG;QACH,qCAAoC;YAClC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,uBAAuB,EAAE,IAAI;YAC7B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,EACT;YAED,cAAc,EAAE;gBACd,YAAY,EAAE,CAAC;gBACf,SAAS,EAAE,CAAC;aACb;SACF,EAAC;QAYA,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,2CAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,IAAI,EAAE,CAAC;QAE1G,IAAI,YAAY,EAAE;YAChB,2BAAI,kCAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,IAAI,EAAE,sBAAsB;gBAC5B,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAC;SACJ;aAAM,IAAI,UAAU,EAAE;YACrB,2BAAI,kCAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,IAAI,EAAE,oBAAoB;gBAC1B,UAAU,EAAE,UAAU;aACvB,CAAC,CAAC;SACJ;aAAM,IAAI,SAAS,EAAE;YACpB,2BAAI,kCAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChC,IAAI,EAAE,mBAAmB;gBACzB,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,kCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEY;AACgB;AAEnD;;;;;;GAMG;AACH,MAAM,cAAc;IA6BlB;;;;OAIG;IACH,YAAY,UAAuC,EAAE,EAAE,MAAc,EAAE,kBAA0B,QAAQ;QAhCzG;;;WAGG;QACM,yCAAgB;QAEzB;;;WAGG;QACM,kDAAyB;QAElC;;;;;WAKG;QACM,wCAA6C;YACpD,IAAI,EAAE,4BAA4B;YAClC,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,eAAe;YACxB,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,MAAM;SACnB,EAAC;QAQA,2BAAI,0BAAW,MAAM,OAAC;QACtB,2BAAI,mCAAoB,eAAe,OAAC;QACxC,2BAAI,iCAAkB;YACpB,GAAG,2BAAI,qCAAe;YACtB,GAAG,OAAO;SACX,OAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,MAAM,KAAK,GAAyB,EAAE,CAAC;QAEvC,IAAI,2BAAI,qCAAe,CAAC,KAAK,EAAE;YAC7B,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,2BAAI,qCAAe,CAAC,KAAK,IAAI,UAAU;gBAChD,IAAI,EAAE,2BAAI,qCAAe,CAAC,SAAS;gBACnC,aAAa,EAAE,OAAO;gBACtB,MAAM,EAAE,EAAE;gBACV,cAAc,EAAE;oBACd,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,CAAC;iBACb;gBACD,GAAG,CAAC,2BAAI,qCAAe,CAAC,aAAa,IAAI;oBACvC,UAAU,EAAE,kDAAU,CAAC,2BAAI,qCAAe,CAAC,aAAa,CAAC;iBAC1D,CAAC;aACH,CAAC;SACH;QAED,IAAI,2BAAI,qCAAe,CAAC,QAAQ,EAAE;YAChC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,aAAa,EAAE,UAAU;gBACzB,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,2BAAI,qCAAe,CAAC,QAAQ;gBACrC,IAAI,EAAE,2BAAI,qCAAe,CAAC,YAAY;gBACtC,cAAc,EAAE;oBACd,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,CAAC;iBACb;gBACD,GAAG,CAAC,2BAAI,qCAAe,CAAC,gBAAgB,IAAI;oBAC1C,UAAU,EAAE,2BAAI,qCAAe,CAAC,UAAU,IAAI,kDAAU,CAAC,2BAAI,qCAAe,CAAC,gBAAgB,CAAC;iBAC/F,CAAC;aACH,CAAC;SACH;QAED,IAAI,2BAAI,qCAAe,CAAC,YAAY,IAAI,2BAAI,qCAAe,CAAC,aAAa,EAAE;YAEzE,MAAM,YAAY,GAAG,2CAAM,CAAC,iBAAiB,CAAC,2BAAI,uCAAiB,IAAI,EAAE,CAAC;YAC1E,MAAM,MAAM,GAA0B,EAAE,CAAC;YAEzC,IAAI,2BAAI,qCAAe,CAAC,YAAY,EAAE;gBAEpC,MAAM,UAAU,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,8BAAQ,CAAC,EAAE,WAAW,CAAC;gBAC7E,MAAM,WAAW,GAAG;oBAClB,YAAY,EAAE,IAAI;oBAClB,eAAe,EAAE,2BAAI,uCAAiB;oBACtC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;oBACnC,GAAG,2BAAI,qCAAe,CAAC,kBAAkB;iBAC1C,CAAC;gBACF,MAAM,IAAI,GAAG,OAAO,UAAU,KAAK,UAAU,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;gBAEvF,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,4BAA4B;oBAClC,KAAK,EAAE,CAAC,IAAI,CAAC;oBACb,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,2BAAI,8BAAQ,KAAK,QAAQ,IAAI;wBACrC,KAAK,EAAE;;;;WAIR;qBACA;iBACF,CAAC,CAAC;aACJ;YAED,IAAI,YAAY,IAAI,2BAAI,qCAAe,CAAC,aAAa,EAAE;gBACrD,MAAM,CAAC,IAAI,CAAC,GAAG,2BAAI,qCAAe,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;oBAChF,OAAO;wBACL,IAAI,EAAE,4BAA4B;wBAClC,KAAK,EAAE,CAAC,IAAI,CAAC;qBACd;gBACH,CAAC,CAAC,CAAC,CAAC;aACL;YAED,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBACrC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;aAC1B;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;;AAEyB;;;;;;;;;;;;;;;;;;;;;;;ACjJkB;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAiBlC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAkC,EAAE;QAC3E,KAAK,CAAC,MAAM,CAAC,CAAC;QAxBhB;;;;;WAKG;QACH,mCAAkC;YAChC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,kBAAkB;iBACzB;aACF;SACF,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEkB;;;;;;;;;;;;;;;;;;;;;;;AC7CyB;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,OAAQ,SAAQ,uDAAY;IAiBhC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAgC,EAAE;QACzE,KAAK,CAAC,MAAM,CAAC,CAAC;QAxBhB;;;;;WAKG;QACH,iCAAgC;YAC9B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAC;gBACP;oBACE,IAAI,EAAE,WAAW;iBAClB;aACF;SACF,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,8BAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEgB;;;;;;;;;;;;;;;;;AC3CuB;AAIxC,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,WAAW;IAWf;;;;;OAKG;IACH,YAAY,KAA0C;QAftD;;;;WAIG;QACH,WAAM,GAAmD;YACvD,KAAK,EAAE,EAAE;SACV,CAAC;QAUA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,OAAO;QAEL,2DAA2D;QAC3D,MAAM,kBAAkB,GAAG,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACpD,kBAAkB,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aACzC,CAAC,CAAC;SACJ;QAED,uFAAuF;QACvF,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,IAAI,iDAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE;YAC7C,CAAC,CAAC;gBACA,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,kBAAkB;aAC1B;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAEsB;;;;;;;;;;;;;;;;;;;;;;;;;AC9DY;AACgB;AACI;AACA;AAIM;AAEV;AACJ;AACY;AACH;AAGxD,oDAAoD;AACpD,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC;wBACnB,QAAQ;;;;;;;;;;;;;;;CAe/B,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC;wBACpB,QAAQ;;;;;;;;;;;;;;CAc/B,CAAC;AAEF,MAAM,YAAY;IA0BhB,YAAY,OAAkC;QAV9C;;;;WAIG;QACH,WAAM,GAAqB;YACzB,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,iBAAiB;SACxB,CAAC;QAGA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;QAED,IAAI,CAAC,WAAW,GAAG,2CAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,2CAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,gBAAgB,CAAC,IAAkB;QAEjC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC;QAE7C,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,WAAW,EAAE;SACnB,CAAC;QAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAEhC,IAAI,UAAU,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;SAC3C;QAED,OAAO;YACL,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,IAAkB;QACzC,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,mDAAW,CAAC,IAAI,CAAC;YAC1B,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,MAAM;YAClB,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE;YAC9D,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,WAAW;QAET,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;QAClG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC;QAElD,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,mDAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,SAAS,EAAE,qBAAqB,IAAI,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC;YACtF,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;YACjD,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,YAAY,CAAC,iBAAiB,EAAE,SAAS,CAAC;YACtD,WAAW,EAAE,aAAa,CAAC,iBAAiB,EAAE,SAAS,CAAC;YACxD,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACnE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,YAAY;QAEV,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC;QACnJ,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAEvG,OAAO;YACL,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE;gBACL,CAAC,MAAM,IAAI,SAAS,IAAI,QAAQ,CAAC,IAAI,IAAI,+DAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;gBACrF,MAAM,IAAI,IAAI,mEAAe,CAC3B,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC3H,IAAI,+DAAa,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CACxD,CAAC,OAAO,EAAE;gBACX,MAAM,EAAE,MAAM,IAAI,IAAI,mEAAe,CACnC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAC3H,IAAI,+DAAa,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CACzI,CAAC,OAAO,EAAE;gBACX,IAAI,IAAI,IAAI,mEAAe,CACzB,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EACrH,IAAI,+DAAa,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CACvI,CAAC,OAAO,EAAE;gBACX,KAAK,IAAI,IAAI,mEAAe,CAC1B,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EACxH,IAAI,+DAAa,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CACxI,CAAC,OAAO,EAAE;gBACX,OAAO,IAAI,IAAI,2DAAW,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;gBACpG,KAAK,IAAI,IAAI,uDAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE;gBAClI,IAAI,mEAAe,CACjB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,mDAAW,EAAE,CAAC,EACvF,IAAI,2DAAW,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAC7D,CAAC,OAAO,EAAE;aACZ,CAAC,MAAM,CAAC,OAAO,CAAC;YACjB,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,UAA+B;QAC1C,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YACxC,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,UAAU,CAAC,SAAS;YAC5B,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,EAAE;SACjD,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,qBAA0C;QAC/D,IAAI,CAAC,qBAAqB;YAAE,OAAO,2CAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QACjF,OAAO;2BACgB,qBAAqB,EAAE,SAAS;;mDAER,qBAAqB,EAAE,SAAS;;KAE9E,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,UAA+B;QAClD,MAAM,SAAS,GAAG,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,yBAAyB,UAAU,EAAE,SAAS,cAAc,CAAC,CAAC,CAAC,0CAA0C,CAAC;QACpJ,OAAO;uBACY,SAAS;KAC3B,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO;;;;;;;;;;;;;;;;;KAiBN,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO;;;;;;;KAON,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO;;;;;;;;;;;;KAYN,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,mDAAW,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnI,MAAM,gBAAgB,GAAwB,mDAAW,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,YAAY,CAAwB,CAAC;QAErH,OAAO;YACL,GAAG,aAAa;YAChB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;IACJ,CAAC;CACF;AAEuB;;;;;;;;;;;;;;;;AClQxB;;;;;;GAMG;AACH,MAAM,aAAa;IAwBjB;;;;OAIG;IACH,YAAY,SAAiB;QA5B7B;;;;WAIG;QACH,WAAM,GAAwB;YAC5B,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,EAAE;YACjB,cAAc,EAAE,EAAE;YAClB,QAAQ,EAAE;gBACR,KAAK,EAAE;;;;;;;OAON;aACF;SACF,CAAC;QASA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;;;;;AClEmB;AAS5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAalC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAkC,EAAE;QAC3E,KAAK,CAAC,MAAM,CAAC,CAAC;QApBhB;;;;;WAKG;QACH,mCAAkC;YAChC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,KAAK;SAChB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEkB;;;;;;;;;;;;;;;;;;;;;;;AC7CyB;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,QAAS,SAAQ,uDAAY;IAYjC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAiC,EAAE;QAC1E,KAAK,CAAC,MAAM,CAAC,CAAC;QAnBhB;;;;;WAKG;QACH,kCAAiC;YAC/B,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,SAAS;SAChB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,+BAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEiB;;;;;;;;;;;;;;;;;;;;;;;ACxC0B;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IAsBxC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAwC,EAAE;QACjF,KAAK,CAAC,MAAM,CAAC,CAAC;QA7BhB;;;;;WAKG;QACH,yCAAwC;YACtC,IAAI,EAAE,mCAAmC;YACzC,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE;gBACd,QAAQ;gBACR,iBAAiB;aAClB;YACD,iBAAiB,EAAE,IAAI;YACvB,eAAe,EAAE;gBACf,aAAa;gBACb,YAAY;gBACZ,gBAAgB;aACjB;SACF,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,sCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEwB;;;;;;;;;;;;;;;;;;;;;;;AClDmB;AAK5C;;;;;;;GAOG;AACH,MAAM,iBAAkB,SAAQ,uDAAY;IAa1C;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QApBhB;;;;;WAKG;QACH,2CAAmC;YACjC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,KAAK;SAChB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,wCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAE0B;;;;;;;;;;;;;;;;;;;;;;;ACxCiB;AAK5C,mEAAmE;AACnE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAYnC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QAnBhB;;;;;WAKG;QACH,oCAAmC;YACjC,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,SAAS;SAChB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEmB;;;;;;;;;;;;;;;;;;;;;;;ACxC0B;AAK9C;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAYnC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QAnBhB;;;;;WAKG;QACH,oCAAmC;YACjC,IAAI,EAAE,6BAA6B;YACnC,SAAS,EAAE,gBAAgB;SAC5B,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEqB;;;;;;;;;;;;;;;;;;;;;;;ACvCsB;AAK5C;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAclC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAkC,EAAE;QAC3E,KAAK,CAAC,MAAM,CAAC,CAAC;QArBhB;;;;;WAKG;QACH,mCAAkC;YAChC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,gBAAgB;SAC5B,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEkB;;;;;;;;;;;;;;;;;;;;;;;ACzCyB;AAK5C;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAcnC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QArBhB;;;;;WAKG;QACH,oCAAmC;YACjC,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO;SACpB,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEmB;;;;;;;;;;;;;;;;ACnCpB,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAS;IAmBb;;;;;;OAMG;IACH,YAAY,KAA0C,EAAE,OAAuB;QAxB/E;;;;WAIG;QACH,WAAM,GAAoB;YACxB,IAAI,EAAE,mBAAmB;YACzB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE;gBACV,cAAc,EAAE,KAAK;gBACrB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,EAAE;gBAChB,UAAU,EAAE,IAAI;aACjB;YACD,KAAK,EAAE,EAAE;SACV,CAAC;QAWA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAE1B,MAAM,qBAAqB,GAAG,GAAG;QACjC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;QAElF,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;IACpF,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAEoB;;;;;;;;;;;;;;;;;;;;;;;AC7DuB;AAK5C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAgBnC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QAvBhB;;;;;WAKG;QACH,oCAAmC;YACjC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE;gBACV,MAAM,EAAE,QAAQ;aACjB;SACF,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEmB;;;;;;;;;;;;;;;;;;;;;;;;AC5CwB;AAG0D;AAEtG,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAiBnC;;;;;;OAMG;IACH,YAAY,MAA2B,EAAE,UAAmC,EAAE;QAC5E,KAAK,CAAC,MAAM,CAAC,CAAC;QAxBhB;;;;;WAKG;QACH,oCAAmC;YACjC,IAAI,EAAE,6BAA6B;YACnC,IAAI,EAAE,SAAS;YACf,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,CAAC,GAAG,8FAAe,CAAC;YAC9B,UAAU,EAAE;gBACV,MAAM,EAAE,WAAW;aACpB;SACF,EAAC;QAYA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEmB;;;;;;;;;;;;;;;;;;AC3Ce;AACiB;AACpD,IAAO,yBAAyB,GAAG,4DAAO,CAAC,yBAAyB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAe,YAAY;IAUzB;;OAEG;IACH;QAZA;;;;WAIG;QACH,WAAM,GAAuB;YAC3B,IAAI,EAAE,UAAU;SACjB,CAAC;QAMA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED,uFAAuF;IACvF;;;;OAIG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,MAAyB;QAC1C,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACpF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;YAEvC,OAAO;SACR;QAED,IAAI,2CAAM,CAAC,KAAK,EAAE;YAChB,OAAO,CAAC,IAAI,CACV,IAAI,CAAC,WAAW,CAAC,IAAI;kBACnB,kDAAkD,CAAC,CAAC;SACzD;IACH,CAAC;CACF;AAEuB;;;;;;;;;;;;;;;;;;;AC9DsB;AACA;AACX;AAEnC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,aAAc,SAAQ,uDAAY;IACtC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,EAAE,eAAe,GAAG,QAAQ,EAAE,SAAS,EAAE,UAAU,EAA8B;QAEnI,MAAM,MAAM,GAAG,sDAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;QACxF,IAAI,IAAI,GAAG,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,2CAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,2CAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE;QAClI,IAAI,UAAU,GAAG,EAAE;QACnB,IAAI,OAAO,GAAG,EAAE;QAEhB,MAAM,MAAM,GAAG,2CAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,EAAE,QAAQ,CAAC,aAAa,YAAY,EAAE,CAAC;QAEjE,IAAI,MAAM,KAAK,eAAe,EAAE;YAC9B,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,2CAAM,CAAC,2BAA2B,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACrG,UAAU,GAAG,2CAAM,CAAC,6BAA6B,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;SACtG;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE;YAEvB,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,2CAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACrF,UAAU,GAAG,2CAAM,CAAC,uBAAuB,CAAC,YAAY,EAAE,SAAU,CAAC,IAAI,OAAO;YAChF,IAAI,GAAG,2CAAM,CAAC,sBAAsB,CAAC,YAAY,EAAE,SAAU,CAAC,IAAI,IAAI;YAEtE,IAAI,YAAY,KAAK,aAAa,EAAE;gBAClC,IAAI,WAAW,EAAE;oBACf,UAAU,GAAG,sCAAsC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,8BAA8B;iBACxH;aACF;SACF;QAED,IAAI,YAAY,KAAK,OAAO,EAAE;YAE5B,IAAI,WAAW,EAAE;gBACf,UAAU,GAAG,yBAAyB,WAAW,CAAC,SAAS,2BAA2B;gBACtF,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,2CAAM,CAAC,2BAA2B,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;aACxG;SACF;QAED,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC7B,UAAU,GAAG,oDAAoD;SAClE;QAED,OAAO;YACL,MAAM,EAAE,WAAW,EAAE,SAAS;YAC9B,UAAU;YACV,IAAI;YACJ,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,UAAU,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;SAC7C;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,OAAmC;QAC7C,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFqB;AACR;AAEtC,qDAAqD;AACrD;;;;GAIG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAYlC;;;;;OAKG;IACH,YAAY,QAAgB,EAAE,UAAkC,EAAE;QAChE,KAAK,EAAE,CAAC;QAlBV;;;;;WAKG;QACM,mCAAkC;YACzC,IAAI,EAAE,qBAAqB;YAC3B,UAAU,EAAE,kDAAU,CAAC,UAAU,CAAC;SACnC,EAAC;QAUA,2BAAI,4BAAkB;YACpB,GAAG,2BAAI,gCAAe;YACtB,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;YACvB,GAAG,OAAO;SACX,OAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEoB;;;;;;;;;;;;;;;;;;;ACxCc;AAK0B;AAC1B;AAEnC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,eAAe;IAOnB;;;;;OAKG;IACH,gBAAgB,CAAC,MAA8B,EAAE,IAAkB;QAEjE,MAAM,OAAO,GAAG,iDAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,2CAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,GAAgB,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAErI,MAAM,KAAK,GAAG,EAA0B;QAExC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,mBAAmB,CAAC,EAAE;YAC9D,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACV,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE,GAAG,0DAAkB,mBAAmB;oBACjD,IAAI,EAAE;wBACJ,IAAI,EAAE,+CAAO,CAAC,MAAM,CAAC,IAAI,CAAC;qBAC3B;iBACF;aACF,CAAC;SACH;QAED,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/B,IAAI,KAAK,EAAE,KAAK,KAAK,mBAAmB,EAAE;gBACxC,MAAM,SAAS,GAAG,SAAS,+CAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iDAAS,CAAC,KAAK,CAAC,iBAAiB;gBACpF,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,KAAK,EAAE,SAAS;oBACxB,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI;oBAC5B,OAAO,EAAE,iDAAS,CAAC,KAAK,CAAC;oBACzB,UAAU,EAAE;wBACV,MAAM,EAAE,cAAc;wBACtB,OAAO,EAAE,eAAe;wBACxB,IAAI,EAAE,EAAE,SAAS,EAAE;qBACpB;oBACD,WAAW,EAAE;wBACX,MAAM,EAAE,WAAW;qBACpB;iBACF,CAAC;aACH;iBAAM,IAAI,KAAK,EAAE,KAAK,KAAK,mBAAmB,EAAE;gBAC/C,MAAM,cAAc,GAAG,2CAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,SAAS;gBAC/H,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,KAAK,EAAE,SAAS;oBACxB,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI;oBAC5B,OAAO,EAAE,iDAAS,CAAC,KAAK,CAAC;oBACzB,UAAU,EAAE;wBACV,MAAM,EAAE,cAAc;wBACtB,OAAO,EAAE,eAAe;wBACxB,IAAI,EAAE;4BACJ,SAAS,EAAE,cAAc;yBAC1B;qBACF;oBACD,WAAW,EAAE;wBACX,MAAM,EAAE,WAAW;qBACpB;iBACF,CAAC;aACH;QACH,CAAC,CAAC;QAEF,OAAO,KAAK;IAEd,CAAC;IAED;;;;OAIG;IACH,YAAY,MAA8B,EAAE,IAAkB;QAhF9D;;;;WAIG;QACH,WAAM,GAAyB,EAAE,CAAC;QA6EhC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEpD,CAAC;IAGD,uFAAuF;IACvF;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAE0B;;;;;;;;;;;;;;;;;;;;AClHwC;AAGL;AAChB;AACX;AAEnC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,aAAc,SAAQ,uDAAY;IACtC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,GAAG,KAAK,EAAyF;QAE1I,MAAM,SAAS,GAAG,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,QAAQ;QAE/C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,2CAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE;QAE1I,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;QACpG,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;QAC5G,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAChH,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QAElH,MAAM,IAAI,GAAG,qDAAqD;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,eAAe,EAAE,GAAG,iBAAiB,EAAE,GAAG,kBAAkB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAC9H,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAC3E,MAAM,UAAU,GAAG,IAAI,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QAC/E,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACjF,MAAM,cAAc,GAAG,IAAI,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,4DAA4D;QAExI,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,UAAU,EAAE,SAAS;YAC7B,UAAU,EAAE;2CACyB,aAAa,EAAE,SAAS;4BACvC,SAAS;kCACH,cAAc;oCACZ,UAAU,EAAE,SAAS;;;;;;;;;;;;;;;;SAgBhD;YACH,IAAI,EAAE;2CAC+B,aAAa,EAAE,SAAS;4BACvC,QAAQ;8BACN,UAAU;+BACT,WAAW;kCACR,cAAc;oCACZ,UAAU,EAAE,SAAS;;cAE3C,2CAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;cAE5C,2CAAM,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;;cAE9C,2CAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;;cAE/C,2CAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO;;cAE3C,oDAAY,CAAC,aAAa;;cAE1B,wDAAgB,CAAC,KAAK;;cAEtB,wDAAgB,CAAC,QAAQ;;cAEzB,wDAAgB,CAAC,QAAQ;;cAEzB,wDAAgB,CAAC,KAAK;sBACd;YAChB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;2CACc,aAAa,EAAE,SAAS;oCAC/B,UAAU,EAAE,SAAS;;;;;;;;;;;sBAWnC,CAAC,CAAC,CAAC,EAAE;YACrB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,2EAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;SACxF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,OAA8F;QACxG,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAEpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;;;;;;;AC1HU;AACW;AAGP;AAEvC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,WAAY,SAAQ,uDAAY;IAmBpC;;;;OAIG;IACH,YAAY,UAA6B,EAAE;QACzC,KAAK,EAAE,CAAC;QAxBV;;;;;;;WAOG;QACM,qCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,SAAS;aAC3B;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,kCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACnG;QAED,2BAAI,kCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAEhH,MAAM,gBAAgB,GAAG,mDAAW,CAAC,OAAO,CAAC,eAAe,IAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;QAErF,IAAI,gBAAgB,EAAE;YACpB,2BAAI,kCAAe,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC;SACzD;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,kCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEsB;;;;;;;;;;;;;;;;;;;;;;;ACtDuB;AAI9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IAaxC;;;;;OAKG;IACH,YAAY,UAA0E,EAAE,IAAwB;QAC9G,KAAK,EAAE,CAAC;QAnBV;;;;;;;WAOG;QACM,yCAAwC;YAC/C,IAAI,EAAE,aAAa;SACpB,EAAC;QAWA,2BAAI,sCAAe,CAAC,UAAU,GAAG,UAAU,CAAC;QAC5C,2BAAI,sCAAe,CAAC,IAAI,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,sCAAe,CAAC,CAAC;IAChE,CAAC;CACF;;AAE0B;;;;;;;;;;;;;;;;;;;;;;;;ACxCmB;AAEI;AAElD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,WAAY,SAAQ,uDAAY;IAoBpC;;;;OAIG;IACH,YAAY,MAAc,EAAE,SAAiB;QAC3C,KAAK,EAAE,CAAC;QAzBV;;;;;;;WAOG;QACM,qCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,0DAAkB,CAAC,YAAY;YACrC,UAAU,EAAE,OAAO;YACnB,UAAU,EAAE;gBACV,MAAM,EAAE,WAAW;aACpB;SACF,EAAC;QAUA,2BAAI,kCAAe,CAAC,MAAM,GAAG,SAAS;QACtC,2BAAI,kCAAe,CAAC,IAAI,GAAG,0DAAkB,CAAC,MAAwB,CAAC;QACvE,2BAAI,kCAAe,CAAC,UAAU,GAAG,yBAAyB,SAAS,0BAA0B,CAAC;QAE9F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,kCAAe,CAAC,CAAC;IAEhE,CAAC;CACF;;AAEsB;;;;;;;;;;;;;;;;;;;;;;;;AC/CY;AAEW;AAG9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAmBlC;;;;OAIG;IACH,YAAY,UAA6B,EAAE;QACzC,KAAK,EAAE,CAAC;QAxBV;;;;;;;WAOG;QACM,mCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,OAAO;aACzB;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,gCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAClG;QAED,2BAAI,gCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAE9G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEoB;;;;;;;;;;;;;;;;;;;;;;;;AChDc;AAEW;AAG9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,OAAQ,SAAQ,uDAAY;IAmBhC;;;;OAIG;IACH,YAAY,UAA6B,EAAE;QACzC,KAAK,EAAE,CAAC;QAxBV;;;;;;;WAOG;QACM,iCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,2CAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;YACnD,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,KAAK;aACvB;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,8BAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAC9F;QAED,2BAAI,8BAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAG5G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,8BAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEkB;;;;;;;;;;;;;;;;;;;;;;;;;ACjDgB;AAEW;AAEP;AAEvC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAoBlC;;;;OAIG;IACH,YAAY,OAA0B;QACpC,KAAK,EAAE,CAAC;QAzBV;;;;;;;WAOG;QACM,mCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,qBAAqB;YAC3B,UAAU,EAAE,OAAO;YACnB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,OAAO;aACzB;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,gCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAChG;QAED,2BAAI,gCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAE9G,MAAM,gBAAgB,GAAG,mDAAW,CAAC,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,OAAO,CAAC,CAAC;QAEpF,IAAI,gBAAgB,EAAE;YACpB,2BAAI,gCAAe,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC;SACzD;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEoB;;;;;;;;;;;;;;;;;;;;;;;;;ACxDc;AACW;AAGP;AAEvC,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IAmBxC;;;;OAIG;IACH,YAAY,OAA0B;QACpC,KAAK,EAAE,CAAC;QAxBV;;;;;;;WAOG;QACM,yCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,2CAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO;YACzC,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,cAAc;aAChC;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,sCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SAC5G;QAED,2BAAI,sCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAErH,MAAM,gBAAgB,GAAG,mDAAW,CAAC,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,cAAc,CAAC,CAAC;QAE3F,IAAI,gBAAgB,EAAE;YACpB,2BAAI,sCAAe,CAAC,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC;SACzD;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,sCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAE0B;;;;;;;;;;;;;;;;;;;;;;;;ACvDQ;AACW;AAI9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAuBnC;;;;OAIG;IACH,YAAY,UAAqC,EAAE;QACjD,KAAK,EAAE,CAAC;QA5BV;;;;;;;WAOG;QACM,oCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,2CAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO;YAChD,UAAU,EAAE,MAAM;YAClB,OAAO,EAAE,2CAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;YAClE,UAAU,EAAE;gBACV,MAAM,EAAE,MAAM;aACf;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,QAAQ;aAC1B;SACF,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEqB;;;;;;;;;;;;;;;;;;;;;;;AC5CsB;AAG5C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,YAAa,SAAQ,uDAAY;IAcrC;;;;OAIG;IACH,YAAY,UAAqC,EAAE;QACjD,KAAK,EAAE,CAAC;QAnBV;;;;;;;WAOG;QACM,sCAAqC;YAC5C,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,SAAS;SAClB,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,mCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEqB;;;;;;;;;;;;;;;;;;ACrCa;AAEW;AAE9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,WAAY,SAAQ,uDAAY;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,QAAgB;QAE/B,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,2BAA2B,QAAQ,8BAA8B;YAC7E,OAAO,EAAE,sBAAsB;YAC/B,IAAI,EAAE,aAAa;YACnB,2GAA2G;YAC3G,UAAU,EAAE;gBACV,MAAM,EAAE,gBAAgB;gBACxB,WAAW,EAAE;oBACX,OAAO,EAAE,mBAAmB;oBAC5B,IAAI,EAAE;wBACJ,KAAK,EAAE,SAAS;wBAChB,SAAS,EACT;4BACE,IAAI,EAAE,gBAAgB;4BACtB,KAAK,EAAE;gCACL,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oCAErB,MAAM,MAAM,GAAG,2CAAM,CAAC,cAAc,CAAC,CAAC,CAAC;oCACvC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW;oCACjD,MAAM,SAAS,GAAG,CAAC,CAAC;oCACpB,MAAM,kBAAkB,GAAG,EAAE;oCAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;wCACtD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;wCAClD,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;qCAC/B;oCAED,OAAO;wCACL,IAAI,EAAE,sBAAsB;wCAC5B,KAAK,EAAE;4CACL;gDACE,IAAI,EAAE,mCAAmC;gDACzC,MAAM,EAAE,4BAA4B;gDACpC,IAAI,EAAE,aAAa;gDACnB,UAAU,EAAE,OAAO;gDACnB,cAAc,EAAE,IAAI;gDACpB,iBAAiB,EAAE,KAAK;gDACxB,iBAAiB,EAAE,KAAK;gDACxB,cAAc,EAAE;oDACd,iBAAiB;oDACjB,UAAU;oDACV,MAAM;iDACP;gDACD,eAAe,EAAE;oDACf,gBAAgB;oDAChB,YAAY;iDACb;gDACD,cAAc,EAAE,KAAK;gDACrB,QAAQ,EAAE;oDACR,KAAK,EAAE,+DAA+D;iDACvE;6CACF;4CACD;gDACE,IAAI,EAAE,mBAAmB;gDACzB,UAAU,EAAE,IAAI;gDAChB,YAAY,EAAE,CAAC;gDACf,SAAS,EAAE,IAAI;gDACf,UAAU,EAAE,CAAC;gDACb,IAAI,EAAE,KAAK;gDACX,SAAS,EAAE,IAAI;gDACf,aAAa,EAAE,IAAI;gDACnB,aAAa,EAAE,GAAG;gDAClB,KAAK,EAAE;oDACL,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CACzC;wDACE,IAAI,EAAE,kBAAkB;wDACxB,KAAK,EAAE;4DACL,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CACvC;gEACE,IAAI,EAAE,+BAA+B;gEACrC,IAAI,EAAE,kBAAkB;gEACxB,UAAU,EAAE,8CAA8C,MAAM,4CAA4C;gEAC5G,OAAO,EAAE,IAAI;gEACb,SAAS,EAAE,MAAM;gEACjB,MAAM,EAAE,MAAM,CAAC,SAAS;gEACxB,mBAAmB,EAAE,KAAK;gEAC1B,UAAU,EAAE;oEACV,MAAM,EAAE,cAAc;oEACtB,OAAO,EAAE,gBAAgB;oEACzB,IAAI,EAAE;wEACJ,WAAW,EAAE,MAAM;wEACnB,cAAc,EAAE,IAAI;qEACrB;iEACF;gEACD,MAAM,EAAE,UAAU;gEAClB,KAAK,EAAE,+dAA+d;gEACte,SAAS,EAAE;oEACT,KAAK,EAAE,gHAAgH;iEACxH;gEACD,UAAU,EAAE,CAAC;gEACb,UAAU,EAAE,SAAS;gEACrB,QAAQ,EAAE;oEACR,KAAK,EAAE;;;;uCAIN;iEACF;6DAEF,CAAC,CAAC,CACJ,CAAC,MAAM,CAAC,OAAO,CAAC;yDAClB;qDACF,CAAC,CAAC,CACJ,CAAC,MAAM,CAAC,OAAO,CAAC;iDAClB;6CACF;4CACD;gDACE,IAAI,EAAE,qBAAqB;gDAC3B,uBAAuB,EAAE,IAAI;gDAC7B,sBAAsB,EAAE,IAAI;gDAC5B,sBAAsB,EAAE,IAAI;gDAC5B,eAAe,EAAE,IAAI;gDACrB,YAAY,EAAE,IAAI;gDAClB,uBAAuB,EAAE,IAAI;gDAC7B,aAAa,EAAE,MAAM;gDACrB,mBAAmB,EAAE,CAAC;gDACtB,KAAK,EAAE,EAAE;6CACV;yCACF;wCACD,QAAQ,EAAE;4CACR,KAAK,EAAE,yoBAAyoB;yCACjpB;qCACF;gCACH,CAAC,CAAC,CACD,CAAC,MAAM,CAAC,OAAO,CAAC;6BAClB;4BACD,QAAQ,EAAE;gCACR,KAAK,EAAE,uCAAuC;6BAC/C;yBACF;qBACF;iBACF;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,QAAgB;QAC1B,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAErD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,CAAC;CACF;AAEsB;;;;;;;;;;;;;;;;;;;;;;;;AC5KY;AAEW;AAG9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAmBnC;;;;OAIG;IACH,YAAY,UAA6B,EAAE;QACzC,KAAK,EAAE,CAAC;QAxBV;;;;;;;WAOG;QACM,oCAAqC;YAC5C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE;gBACV,MAAM,EAAE,UAAU;gBAClB,eAAe,EAAE,QAAQ;aAC1B;SACF,EAAC;QAUA,IAAI,OAAO,EAAE,YAAY,EAAE;YACzB,2BAAI,iCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACjG;QACD,2BAAI,iCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAE/G,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEqB;;;;;;;;;;;;;;;;;;AC5C4B;AACJ;AAE9C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IACxC;;;;;OAKG;IACH,gBAAgB,CAAC,MAA8B;QAC7C,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS;YACjD,IAAI,EAAE,qBAAqB;YAC3B,qFAAqF;YACrF,UAAU,EAAE;gBACV,MAAM,EAAE,cAAc;gBACtB,OAAO,EAAE,GAAG,0DAAkB,oBAAoB;gBAClD,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM,EAAE,IAAI;iBACnB;aACF;YACD,WAAW,EAAE;gBACX,MAAM,EAAE,WAAW;aACpB;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,MAA8B;QACxC,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,CAAC;CACF;AAE0B;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDmB;AAER;AACH;AAEQ;AAE3C,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IAgBtC;;;;KAIC;IACD,YAAY,UAA6B,EAAE;QACvC,KAAK,EAAE,CAAC;QArBZ;;;;;;;WAOG;QACM,yCAAqC;YAC1C,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,EAAE;SACd,EAAC;QAUE,2BAAI,sCAAe,CAAC,OAAO,GAAG,2CAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,mDAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAEpG,2BAAI,sCAAe,CAAC,IAAI,GAAG,2CAAM,CAAC,kBAAkB,CAAC;YACjD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,mDAAW;YAClB,QAAQ,EAAE,2BAAI,sCAAe,CAAC,IAAI;YAClC,UAAU,EAAE,gCAAgC;YAC5C,SAAS,EAAE,OAAO,EAAE,SAAS;SAChC,CAAC,CAAC;QAGH,2BAAI,sCAAe,CAAC,UAAU,GAAG,2CAAM,CAAC,kBAAkB,CAAC;YACvD,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,mDAAW;YAClB,QAAQ,EAAE,2BAAI,sCAAe,CAAC,UAAU;YACxC,UAAU,EAAE,OAAO;YACnB,SAAS,EAAE,OAAO,EAAE,SAAS;SAChC,CAAC,CAAC;QAEH,2BAAI,sCAAe,CAAC,UAAU,GAAG,kDAAU,CAAC,aAAa,CAAC;QAE1D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,sCAAe,CAAC,CAAC;IAClE,CAAC;CACJ;;AAE0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DiB;AACU;AAEtD,qDAAqD;AACrD;;;;GAIG;AACH,MAAM,WAAY,SAAQ,uDAAY;IAapC;;;;;OAKG;IACH,YAAY,QAAgB,EAAE,UAAoC,EAAE;QAClE,KAAK,EAAE,CAAC;QAnBV;;;;;WAKG;QACM,qCAAoC;YAC3C,IAAI,EAAE,SAAS;YACf,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,IAAI;SACtB,EAAC;QAUA,2BAAI,8BAAkB;YACpB,GAAG,2BAAI,kCAAe;YACtB,UAAU,EAAE,IAAI,8DAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAS;YACxD,GAAG,EAAC,MAAM,EAAE,QAAQ,EAAC;YACrB,GAAG,OAAO;SACX,OAAC;QAEF,2BAAI,kCAAe,CAAC,UAAU,GAAG,IAAI,8DAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE;QAEtE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,kCAAe,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACF;;AAEoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1C6B;AACE;AACQ;AACF;AACE;AAClB;AACQ;AACI;AACR;AACY;AACZ;AACJ;AACM;AAEhD;;GAEG;AACI,MAAM,qBAAqB,GAAqB;IACrD,KAAK,EAAE;QACL,WAAW,EAAE;YACX,IAAI,EAAE,mDAAW;YACjB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,mDAAW;YACpB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;SACb;KACF;IACD,MAAM,EAAE;QACN,WAAW,EAAE;YACX,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,mDAAW;YACrB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,CAAC,mDAAW,CAAC;SAC1B;KACF;IACD,KAAK,EAAE,IAAI;IACX,OAAO,EAAE;QACP,CAAC,EAAE;YACD,oBAAoB,EAAE,KAAK;SAC5B;QACD,OAAO,EAAE;YACP,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,uDAAS;YACtB,aAAa,EAAE,CAAC,MAA8B,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE;oBAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC3F;gBACD,IAAI,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;oBAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,6DAAY,CAAC,EAAE,UAAU,EAAE,IAAI,qEAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC9F;gBACD,OAAO,KAAK;YACd,CAAC;YACD,qBAAqB,EAAE;gBACrB,SAAS,EAAE,eAAe;gBAC1B,UAAU,EAAE,gBAAgB;gBAC5B,aAAa,EAAE,cAAc;aAC9B;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,OAAO,EAAE;YACP,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,2DAAW;YACxB,qBAAqB,EAAE;gBACrB,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,kBAAkB;gBAC9B,aAAa,EAAE,gBAAgB;aAChC;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,CAAC,MAA8B,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,EAAE;oBAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC/F;gBACD,OAAO,KAAK;YACd,CAAC;SACF;QACD,YAAY,EAAE;YACZ,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,mEAAe;YAC5B,qBAAqB,EAAE;gBACrB,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,uBAAuB;gBACnC,aAAa,EAAE,qBAAqB;aACrC;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,CAAC,MAA8B,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,EAAE,QAAQ,CAAC,oBAAoB,EAAE,SAAS,EAAE;oBACpD,KAAK,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBACzG;gBACD,OAAO,KAAK;YACd,CAAC;SACF;QACD,KAAK,EAAE;YACL,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,wDAAS;YACtB,qBAAqB,EAAE;gBACrB,SAAS,EAAE,kBAAkB;gBAC7B,UAAU,EAAE,mBAAmB;gBAC/B,aAAa,EAAE,cAAc;aAC9B;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,KAAK,EAAE;YACL,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,CAAC,MAA8B,EAAE,EAAE;gBAChD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,IAAI,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,SAAS,EAAE;oBAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,mEAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClD,KAAK,CAAC,IAAI,CAAC,IAAI,6DAAY,CAAC,EAAE,UAAU,EAAE,IAAI,qEAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC9F;gBACD,OAAO,KAAK;YACd,CAAC;YACD,SAAS,EAAE,eAAe;YAC1B,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,GAAG,EAAE;YACH,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,oDAAO;YACpB,qBAAqB,EAAE;gBACrB,SAAS,EAAE,aAAa;gBACxB,UAAU,EAAE,cAAc;gBAC1B,aAAa,EAAE,YAAY;aAC5B;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,0DAAU;YACvB,qBAAqB,EAAE;gBACrB,SAAS,EAAE,gBAAgB;gBAC3B,UAAU,EAAE,iBAAiB;gBAC7B,aAAa,EAAE,eAAe;aAC/B;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,MAAM,EAAE;YACN,YAAY,EAAE,KAAK;YACnB,qBAAqB,EAAE,EACtB;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,KAAK;YACnB,qBAAqB,EAAE,EACtB;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,CAAC;SACT;QACD,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,qBAAqB,EAAE;gBACrB,SAAS,EAAE,cAAc;gBACzB,UAAU,EAAE,aAAa;aAC1B;YACD,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,EAAE;SACV;QACD,MAAM,EAAE;YACN,WAAW,EAAE,+DAAa;YAC1B,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;SACd;QACD,aAAa,EAAE;YACb,WAAW,EAAE,+DAAa;YAC1B,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,YAAY,EAAE,KAAK;YACnB,MAAM,EAAE,KAAK;SACd;KACF;IACD,SAAS,EAAE;QACT,MAAM,EAAE,EAAE;KACX;IACD,KAAK,EAAE;QACL,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,GAAG,EAAE;YACH,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,aAAa,EAAE;YACb,MAAM,EAAE,KAAK;SACd;QACD,eAAe,EAAE;YACf,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,gBAAgB,EAAE;YAChB,MAAM,EAAE,KAAK;SACd;QACD,eAAe,EAAE;YACf,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,WAAW,EAAE;YACX,MAAM,EAAE,KAAK;SACd;QACD,GAAG,EAAE;YACH,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,GAAG,EAAE;YACH,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,oBAAoB,EAAE;YACpB,MAAM,EAAE,KAAK;SACd;QACD,2BAA2B,EAAE;YAC3B,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,WAAW,EAAE;YACX,MAAM,EAAE,KAAK;SACd;QACD,UAAU,EAAE;YACV,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,gBAAgB,EAAE;YAChB,MAAM,EAAE,KAAK;SACd;QACD,iBAAiB,EAAE;YACjB,MAAM,EAAE,KAAK;SACd;QACD,aAAa,EAAE;YACb,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,EAAE,EAAE;YACF,MAAM,EAAE,KAAK;SACd;QACD,GAAG,EAAE;YACH,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,KAAK;SACd;QACD,YAAY,EAAE;YACZ,MAAM,EAAE,KAAK;SACd;QACD,aAAa,EAAE;YACb,MAAM,EAAE,KAAK;SACd;QACD,uBAAuB,EAAE;YACvB,MAAM,EAAE,KAAK;SACd;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,eAAe,EAAE;YACf,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,eAAe,EAAE;YACf,MAAM,EAAE,KAAK;SACd;QACD,WAAW,EAAE;YACX,MAAM,EAAE,KAAK;SACd;QACD,SAAS,EAAE;YACT,MAAM,EAAE,KAAK;SACd;QACD,0BAA0B,EAAE;YAC1B,MAAM,EAAE,KAAK;SACd;QACD,gCAAgC,EAAE;YAChC,MAAM,EAAE,KAAK;SACd;QACD,OAAO,EAAE;YACP,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,gBAAgB,EAAE;YAChB,MAAM,EAAE,KAAK;SACd;QACD,cAAc,EAAE;YACd,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE;YACL,MAAM,EAAE,KAAK;SACd;QACD,MAAM,EAAE;YACN,MAAM,EAAE,KAAK;SACd;QACD,UAAU,EAAE;YACV,MAAM,EAAE,KAAK;SACd;KACF;CACF,CAAC;;;;;;;;;;;;;;;;;;;;;AC9dgC;AAGwE;AAC9D;AACiC;AAC/B;AAG9C;;;;;;;;;;;;GAYG;AACH,MAAM,aAAc,SAAQ,mBAAmB;IAC7C;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAA2B;QACxD,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE;YAAE,MAAM,2CAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE3D,MAAM,KAAK,GAAyB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;QAE7D,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC1C,aAAa,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAC;QACtD,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACxC,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEzC,IAAI,2CAAM,CAAC,eAAe,CAAC,WAAW,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,2CAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SACnD;QAED,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,oBAAoB,CAAC,KAA2B;QAC7D,MAAM,cAAc,GAAG,2CAAM,CAAC,iBAAiB,EAAE,CAAC;QAClD,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC9B,IAAI,CAAC,CAAC,GAAG,oDAAY,EAAE,GAAG,qDAAa,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,OAAO;YAClE,IAAI,qDAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,2CAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAE1F,IAAI,MAAM,GAAG,MAAM,CAAC;YACpB,IAAI,YAAY,GAAG,GAAG,CAAC;YAEvB,IAAI,sDAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjD,MAAM,GAAG,eAAe,CAAC;gBACzB,YAAY,GAAG,MAAM,CAAC;aACvB;iBAAM,IAAI,sDAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACjD,MAAM,GAAG,QAAQ,CAAC;gBAClB,YAAY,GAAG,MAAM,CAAC;aACvB;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBACrE,IAAI,EAAG,mDAAsC,CAAC,MAAM,CAAC,IAAI,2CAAM,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAsB,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO;gBACrK,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnD,QAAQ,EAAE;oBACR,IAAI,EAAE,uBAAuB;oBAC7B,OAAO,EAAE,EAAE,MAAM,EAAE;iBACpB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,gCAAgC,CAAC,KAA2B;QACzE,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE;gBACR,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;aACnC;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,kBAAkB,CAAC,KAA2B;QAC3D,KAAK,IAAI,IAAI,IAAI,2CAAM,CAAC,YAAY,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,mDAAW,CAAC,IAAI,CAAC;oBACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;oBAC5B,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE;wBACR,IAAI,EAAE,uBAAuB;wBAC7B,OAAO,EAAE,EAAE,IAAI,EAAE;qBAClB;iBACF,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,mBAAmB,CAAC,KAA2B;QAC5D,KAAK,IAAI,KAAK,IAAI,2CAAM,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB,KAAK,CAAC,IAAI,CAAC;oBACT,KAAK,EAAE,oDAAY,CAAC,KAAK,CAAC;oBAC1B,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE;wBACR,IAAI,EAAE,uBAAuB;wBAC7B,OAAO,EAAE,EAAE,KAAK,EAAE;qBACnB;iBACF,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED;;;;;;;OAOG;IACH;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAsB;QAC9C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAClE,IAAI,IAAI,GAAuB,EAAE,CAAC;QAElC,IAAI,IAAI,EAAE;YACR,IAAI;gBACF,IAAI,GAAG,MAAM,IAAI,qDAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3C;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC;aACpE;SACF;aAAM,IAAI,KAAK,EAAE;YAChB,IAAI;gBACF,IAAI,GAAG,MAAM,IAAI,uDAAS,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC7C;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,EAAE,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC;aACrE;SACF;aAAM,IAAI,MAAM,EAAE;YACjB,IAAI;gBAEF,IAAI,MAAM,KAAK,aAAa,EAAE;oBAE5B,MAAM,UAAU,GAAG,MAAM,qJAAiC,CAAC;oBAC3D,IAAI,GAAG,MAAM,IAAI,UAAU,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;iBAEzD;qBAAM,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAE7C,MAAM,UAAU,GAAG,MAAM,iJAA+B,CAAC;oBACzD,IAAI,GAAG,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAEzE;qBAAM,IAAI,CAAC,GAAG,sDAAc,CAAC,aAAa,EAAE,GAAG,sDAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAEvF,MAAM,MAAM,GAAG,sDAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAE1F,MAAM,UAAU,GAAG,MAAM,iJAA+B,CAAC;oBACzD,IAAI,GAAG,MAAM,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAEvF;qBAAM;oBAEL,MAAM,QAAQ,GAAG,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;oBAC3D,MAAM,UAAU,GAAG,MAAM,6DAAO,GAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACvD,IAAI,GAAG,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;iBAEvF;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,aAAa,MAAM,uBAAuB,EAAE,CAAC,CAAC,CAAC;aAChE;SAEF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;AAE5D,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,OAAO,CAAC,IAAI,CACV,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAC5C,wDAAwD,EAAE,wDAAwD,CACnH,CAAC;;;;;;;;;;;;;;;;;ACzN+B;AAGjC;;;;;;;GAOG;AACH,MAAe,aAAa;IAW1B;;OAEG;IACH;QAbA;;;;WAIG;QACH,WAAM,GAAsB;YAC1B,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE,EAAE;SAChB,CAAC;QAMA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED,uFAAuF;IACvF;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAEsB;;;;;;;;;;;;;;;;;;;AC1CY;AAIA;AACa;AAEhD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,gBAAiB,SAAQ,yDAAa;IAExC,gBAAgB,CAAC,MAA8B,EAAE,UAAmB;QAEhE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE;QAE7C,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,2CAAM,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,UAAU,IAAI,EAAE;QAExJ,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,2CAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,2CAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,IAAI,CAAC,KAAK,oCAAoC,+CAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;gBACnE,OAAO,CAAC,CAAC,CAAC;aACb;iBAAM,IAAI,CAAC,KAAK,oCAAoC,+CAAO,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC1E,OAAO,CAAC,CAAC;aACZ;iBAAM;gBACH,OAAO,WAAW,GAAG,WAAW,CAAC;aACpC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACH,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE;gBACT,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE;oBACF,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE;wBACL,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE;4BACH;gCACI,IAAI,EAAE,kBAAkB;gCACxB,KAAK,EAAE;oCACH;wCACI,IAAI,EAAE,6BAA6B;wCACnC,MAAM,EAAE,UAAU,EAAE,SAAS;wCAC7B,IAAI,EAAE,UAAU;wCAChB,cAAc,EAAE,cAAc;wCAC9B,KAAK,EAAE,KAAK;wCACZ,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;4CACrB,MAAM,EAAE,gBAAgB;4CACxB,WAAW,EAAE;gDACT,OAAO,EAAE,sBAAsB;gDAC/B,IAAI,EAAE;oDACF,QAAQ,EAAE;wDACN;4DACI,OAAO,EAAE,yBAAyB;4DAClC,IAAI,EAAE,EAAE;yDACX;wDACD;4DACI,OAAO,EAAE,sBAAsB;4DAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,0BAA0B,MAAM,EAAE,EAAE,EAAE,EAAE;yDACzD;qDACJ;iDACJ;6CACJ;yCACJ,CAAC,CAAC,CAAC,WAAW;qCAClB;oCACD;wCACI,IAAI,EAAE,+BAA+B;wCACrC,OAAO,EAAE,oBAAoB;wCAC7B,IAAI,EAAE,aAAa;wCACnB,UAAU,EAAE,MAAM;wCAClB,UAAU,EAAE;4CACR,MAAM,EAAE,cAAc;4CACtB,OAAO,EAAE,mCAAmC;4CAC5C,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE;yCACtC;qCACJ;iCACJ;6BACJ;4BACD,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gCACd;oCACI,IAAI,EAAE,+BAA+B;oCACrC,OAAO,EAAE,6BAA6B;oCACtC,QAAQ,EAAE;wCACN,KAAK,EAAE,wCAAwC;qCAClD;iCACJ;gCACD;oCACI,IAAI,EAAE,4BAA4B;oCAClC,KAAK,EAAE;wCACH;4CACI,IAAI,EAAE,UAAU;4CAChB,MAAM,EAAE,UAAU,EAAE,SAAS;4CAC7B,OAAO,EAAE,yBAAyB,UAAU,EAAE,SAAS,eAAe;4CACtE,IAAI,EAAE;sEACoB,UAAU,EAAE,SAAS;;;;;;;;uCAQpD;yCACE;wCACD;4CACI,IAAI,EAAE,UAAU;4CAChB,MAAM,EAAE,UAAU,EAAE,SAAS;4CAC7B,OAAO,EAAE,0BAA0B,UAAU,EAAE,SAAS,gBAAgB;4CACxE,IAAI,EAAE;uEACqB,UAAU,EAAE,SAAS;;;;;;;;;;;;;;uCAcrD;yCACE;wCACD;4CACI,IAAI,EAAE,UAAU;4CAChB,MAAM,EAAE,UAAU,EAAE,SAAS;4CAC7B,OAAO,EAAE,qCAAqC,UAAU,EAAE,SAAS,yBAAyB;4CAC5F,IAAI,EAAE,kBAAkB;yCAC3B;wCACD;4CACI,IAAI,EAAE,UAAU;4CAChB,MAAM,EAAE,UAAU,EAAE,SAAS;4CAC7B,OAAO,EAAE,yCAAyC,UAAU,EAAE,SAAS,2BAA2B;4CAClG,IAAI,EAAE,YAAY;yCACrB;wCACD;4CACI,IAAI,EAAE,UAAU;4CAChB,MAAM,EAAE,UAAU,EAAE,SAAS;4CAC7B,OAAO,EAAE,uBAAuB,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE;4CACpG,IAAI,EAAE,4BAA4B;yCACrC;qCACJ;oCACD,QAAQ,EAAE;wCACN,KAAK,EAAE,2DAA2D;qCACrE;iCACJ;6BACJ,CAAC,CAAC,CAAC,EAAE,CAAC;4BACP;gCACI,IAAI,EAAE,+BAA+B;gCACrC,OAAO,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAA+D,CAAC;gCACzF,QAAQ,EAAE;oCACN,KAAK,EAAE,wCAAwC;iCAClD;6BACJ;4BACD,CAAC,UAAU,CAAC,CAAC,CAAC;gCACV,IAAI,EAAE,gBAAgB;gCACtB,KAAK,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;oCAC9C,IAAI,EAAE,6BAA6B;oCACnC,MAAM,EAAE,MAAM;oCACd,YAAY,EAAE,MAAM;oCACpB,cAAc,EAAE,cAAc;oCAC9B,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;iCAChE,CAAC,CAAC;6BACN,CAAC,CAAC;gCACC;oCACI,IAAI,EAAE,4BAA4B;oCAClC,KAAK,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;wCAC9C,IAAI,EAAE,QAAQ;wCACd,MAAM,EAAE,MAAM;wCACd,YAAY,EAAE,MAAM;wCACpB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;wCAC7D,UAAU,EAAE;4CACR,MAAM,EAAE,WAAW;yCACtB;qCACJ,CAAC,CAAC;oCACH,QAAQ,EAAE;wCACN,KAAK,EAAE,2DAA2D;qCACrE;iCACJ,CAAC;4BACN,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gCACd;oCACI,IAAI,EAAE,+BAA+B;oCACrC,OAAO,EAAE,mCAAmC;oCAC5C,QAAQ,EAAE;wCACN,KAAK,EAAE,wCAAwC;qCAClD;iCACJ;gCACD;oCACI,IAAI,EAAE,4BAA4B;oCAClC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;wCACvC,IAAI,EAAE,UAAU;wCAChB,OAAO,EAAE,MAAM;qCAClB,CAAC,CAAC;oCACH,QAAQ,EAAE;wCACN,KAAK,EAAE,2DAA2D;qCACrE;iCACJ;gCACD;oCACI,IAAI,EAAE,+BAA+B;oCACrC,OAAO,EAAE,gCAAgC;oCACzC,QAAQ,EAAE;wCACN,KAAK,EAAE,wCAAwC;qCAClD;iCACJ;gCACD;oCACI,IAAI,EAAE,4BAA4B;oCAClC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;wCACtC,IAAI,EAAE,UAAU;wCAChB,OAAO,EAAE,MAAM;qCAClB,CAAC,CAAC;oCACH,QAAQ,EAAE;wCACN,KAAK,EAAE,2DAA2D;qCACrE;iCACJ;6BACJ,CAAC,CAAC,CAAC,EAAE,CAAC;yBACV,CAAC,MAAM,CAAC,OAAO,CAAC;qBACpB;iBACJ;aACJ;SACJ;IACL,CAAC;IAED;;;;OAIG;IACH,YAAY,MAA8B,EAAE,aAAsB,KAAK;QACnE,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;QAE/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE5D,CAAC;CACJ;AAE2B;;;;;;;;;;;;;;;;;;;;ACtPO;AAIA;AACe;AACF;AAEhD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,aAAc,SAAQ,yDAAa;IAEvC,gBAAgB,CAAC,MAA8B;QAE7C,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE;QAEjJ,MAAM,WAAW,GAAG,+CAAO,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QAE/C,MAAM,+BAA+B,GAAG;YACtC,EAAE,EAAE,CAAC;YACL,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,aAAa,EAAE,GAAG;SACO;QAE3B,MAAM,6BAA6B,GAAG,2CAAM,CAAC,cAAc,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAE,KAAK;QAEtG,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE;gBACX,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,kCAAkC;oBACzC,OAAO,EAAE;wBACP,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,kBAAkB;gCACxB,KAAK,EAAE;oCACL;wCACE,IAAI,EAAE,MAAM;wCACZ,MAAM,EAAE,4BAA4B,WAAW,EAAE;wCACjD,QAAQ,EAAE,MAAM;qCACjB;oCACD;wCACE,IAAI,EAAE,MAAM;wCACZ,MAAM,EAAE,6CAA6C,WAAW,EAAE;wCAClE,QAAQ,EAAE,MAAM;qCACjB;oCACD;wCACE,IAAI,EAAE,MAAM;wCACZ,MAAM,EAAE,wCAAwC,WAAW,EAAE;wCAC7D,QAAQ,EAAE,MAAM;qCACjB;oCACD;wCACE,IAAI,EAAE,MAAM;wCACZ,MAAM,EAAE,uCAAuC,WAAW,EAAE;wCAC5D,QAAQ,EAAE,MAAM;qCACjB;iCACF;6BACF;4BACD;gCACE,IAAI,EAAE,6BAA6B;gCACnC,MAAM,EAAE,uBAAuB,EAAE,SAAS;gCAC1C,cAAc,EAAE,cAAc;gCAC9B,UAAU,EAAE,MAAM;6BACnB;4BACD;gCACE,IAAI,EAAE,kBAAkB;gCACxB,KAAK,EAAE;oCACL;wCACE,IAAI,EAAE,6BAA6B;wCACnC,MAAM,EAAE,sBAAsB,EAAE,SAAS;wCACzC,UAAU,EAAE,KAAK;wCACjB,QAAQ,EAAE;4CACR,KAAK,EAAE;;;;yBAIJ;yCACJ;qCACF;oCACD;wCACE,IAAI,EAAE,+BAA+B;wCACrC,OAAO,EAAE,6BAA6B;wCACtC,IAAI,EAAE,YAAY;wCAClB,MAAM,EAAE,UAAU;wCAClB,UAAU,EAAE;4CACV,MAAM,EAAE,cAAc;4CACtB,OAAO,EAAE,GAAG,0DAAkB,4BAA4B;4CAC1D,IAAI,EAAE;gDACJ,IAAI,EAAE,MAAM,EAAE,IAAI;6CACnB;yCACF;qCACF;iCACF;6BACF;4BACD;gCACE,IAAI,EAAE,6BAA6B;gCACnC,MAAM,EAAE,kBAAkB,EAAE,SAAS;gCACrC,UAAU,EAAE,OAAO;gCACnB,QAAQ,EAAE;oCACR,KAAK,EAAE,sCAAsC;iCAC9C;6BACF;4BACD;gCACE,IAAI,EAAE,6BAA6B;gCACnC,MAAM,EAAE,kBAAkB,EAAE,SAAS;gCACrC,UAAU,EAAE,OAAO;gCACnB,QAAQ,EAAE;oCACR,KAAK,EAAE,sCAAsC;iCAC9C;6BACF;4BACD;gCACE,IAAI,EAAE,wBAAwB;gCAC9B,UAAU,EAAE,KAAK;gCACjB,MAAM,EAAE;oCACN,IAAI,EAAE,IAAI;oCACV,KAAK,EAAE,iCAAiC;oCACxC,WAAW,EAAE,IAAI;oCACjB,eAAe,EAAE,IAAI;iCACtB;gCACD,KAAK,EAAE;oCACL;wCACE,EAAE,EAAE,aAAa;wCACjB,GAAG,EAAE,CAAC;wCACN,WAAW,EAAE;4CACX,UAAU,EAAE,CAAC;yCACd;qCACF;oCACD;wCACE,EAAE,EAAE,YAAY;wCAChB,QAAQ,EAAE,IAAI;wCACd,GAAG,EAAE,CAAC;wCACN,GAAG,EAAE,GAAG;wCACR,WAAW,EAAE;4CACX,UAAU,EAAE,CAAC;yCACd;qCACF;iCACF;gCACD,MAAM,EAAE;oCACN,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CAAC;wCAClC,MAAM,EAAE,qBAAqB,EAAE,SAAS;wCACxC,QAAQ,EAAE,aAAa;wCACvB,KAAK,EAAE,QAAQ;wCACf,IAAI,EAAE,0BAA0B;wCAChC,IAAI,EAAE,MAAM;wCACZ,QAAQ,EAAE;4CACR,IAAI,EAAE,MAAM;4CACZ,QAAQ,EAAE,KAAK;yCAChB;qCACF,CAAC,CAAC,CAAC,SAAS,CAAC;oCACd;wCACE,MAAM,EAAE,uBAAuB,EAAE,SAAS;wCAC1C,IAAI,EAAE,MAAM;wCACZ,QAAQ,EAAE,aAAa;wCACvB,IAAI,EAAE;4CACJ,SAAS,EAAE,KAAK;yCACjB;wCACD,KAAK,EAAE,MAAM;wCACb,IAAI,EAAE,4BAA4B;wCAClC,IAAI,EAAE,IAAI;wCACV,SAAS,EAAE,gCAAgC,sBAAsB,EAAE,SAAS,eAAe,+BAA+B,CAAC,6BAA6B,CAAC,GAAG;wCAC5J,QAAQ,EAAE;4CACR,IAAI,EAAE,MAAM;yCACb;qCACF;oCACD;wCACE,MAAM,EAAE,sBAAsB,EAAE,SAAS;wCACzC,IAAI,EAAE,MAAM;wCACZ,QAAQ,EAAE,aAAa;wCACvB,IAAI,EAAE,yBAAyB;wCAC/B,KAAK,EAAE,KAAK;wCACZ,IAAI,EAAE;4CACJ,SAAS,EAAE,KAAK;yCACjB;wCACD,QAAQ,EAAE;4CACR,IAAI,EAAE,MAAM;yCACb;qCACF;iCACF,CAAC,MAAM,CAAC,OAAO,CAAC;6BAClB;yBACF;qBACF;iBACF;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,MAA8B;QACxC,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE1D,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;AC/MU;AAC0B;AACb;AAIhD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,aAAc,SAAQ,yDAAa;IAEvC,gBAAgB,CAAC,MAA8B;QAE7C,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE;QAC3F,MAAM,aAAa,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEhG,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE;gBACX,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE;wBACP,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE;4BACL,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,iDAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC9C;gCACE,IAAI,EAAE,6BAA6B;gCACnC,SAAS,EAAE;oCACT,WAAW,EAAE,WAAW,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAoB,CAAC,EAAE,SAAS,UAAU;iCACnG;gCACD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAoB,CAAC,EAAE,SAAS,CAAC;gCAC5E,IAAI,EAAE;oCACJ,IAAI,EAAE,kBAAkB;oCACxB,KAAK,EAAE;wCACL;4CACE,IAAI,EAAE,UAAU;4CAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAoB,CAAC,EAAE,SAAS,CAAC;yCAC7E;wCACD;4CACE,IAAI,EAAE,aAAa;4CACnB,UAAU,EAAE;gDACV;oDACE,MAAM,EAAE,gBAAgB;oDACxB,KAAK,EAAE,IAAI;iDACZ;gDACD,IAAI;gDACJ,8BAA8B;gDAC9B,iBAAiB;gDACjB,IAAI;6CACL;4CACD,IAAI,EACJ;gDACE,IAAI,EAAE,MAAM;gDACZ,MAAM,EAAE,gBAAgB;gDACxB,mBAAmB,EAAE,IAAI;gDACzB,UAAU,EAAE;oDACV,MAAM,EAAE,QAAQ;iDACjB;6CACF;yCACF;wCACD;4CACE,IAAI,EAAE,aAAa;4CACnB,UAAU,EAAE;gDACV;oDACE,MAAM,EAAE,gBAAgB;oDACxB,KAAK,EAAE,aAAa;iDACrB;gDACD,IAAI;gDACJ,8BAA8B;gDAC9B,iBAAiB;gDACjB,IAAI;6CACL;4CACD,IAAI,EAEJ;gDACE,IAAI,EAAE,+BAA+B;gDACrC,SAAS,EAAE,6BAA6B;gDACxC,mBAAmB,EAAE,IAAI;gDACzB,IAAI,EAAE,YAAY;gDAClB,MAAM,EAAE,UAAU;gDAClB,UAAU,EAAE;oDACV,MAAM,EAAE,cAAc;oDACtB,OAAO,EAAE,GAAG,0DAAkB,+BAA+B;oDAC7D,IAAI,EAAE;wDACJ,IAAI,EAAE,+CAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wDAC1B,GAAG;qDACJ;iDACF;6CACF;yCACF;qCACF;iCACF;6BACF,CACF,CACA,CAAC,CAAC,CAAC,CAAC;oCACH,IAAI,EAAE,+BAA+B;oCACrC,OAAO,EAAE,4BAA4B;oCACrC,SAAS,EAAE,qDAAqD;oCAChE,mBAAmB,EAAE,IAAI;oCACzB,IAAI,EAAE,aAAa;oCACnB,UAAU,EAAE;wCACV,MAAM,EAAE,gBAAgB;wCACxB,WAAW,EAAE;4CACX,OAAO,EAAE,sBAAsB;4CAC/B,IAAI,EAAE;gDACJ,QAAQ,EAAE;oDACR;wDACE,OAAO,EAAE,sBAAsB;wDAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE;qDAC1C;oDACD;wDACE,OAAO,EAAE,yBAAyB;wDAClC,IAAI,EAAE,EAAE;qDACT;iDACF;6CACF;yCACF;qCACF;oCACD,QAAQ,EAAE;wCACR,KAAK,EAAE;;;;aAIZ;qCACI;iCACF,CAAC,CAAC;yBACJ,CAAC,MAAM,CAAC,OAAO,CAAC;qBAClB;iBACF;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,MAA8B;QACxC,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAG1D,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;AC3JU;AACS;AAEI;AAEhD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,aAAc,SAAQ,yDAAa;IAEvC,gBAAgB;QAEd,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,2CAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;QAE7F,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE;gBACX,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,4DAA4D,CAAC;oBACpF,OAAO,EAAE;wBACP,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,kBAAkB;gCACxB,KAAK,EAAE;oCACL,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI;wCAC3B,IAAI,EAAE,+BAA+B;wCACrC,OAAO,EAAE,2CAAM,CAAC,QAAQ,CAAC,gEAAgE,CAAC;wCAC1F,IAAI,EAAE,aAAa;wCACnB,UAAU,EAAE,MAAM;wCAClB,UAAU,EAAE;4CACV,MAAM,EAAE,cAAc;4CACtB,OAAO,EAAE,mCAAmC;4CAC5C,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;yCACxC;qCACF;oCACD;wCACE,IAAI,EAAE,+BAA+B;wCACrC,OAAO,EAAE,2CAAM,CAAC,QAAQ,CAAC,iEAAiE,CAAC;wCAC3F,IAAI,EAAE,aAAa;wCACnB,UAAU,EAAE,KAAK;wCACjB,UAAU,EAAE;4CACV,MAAM,EAAE,cAAc;4CACtB,OAAO,EAAE,uBAAuB;yCACjC;qCACF;iCACF,CAAC,MAAM,CAAC,OAAO,CAAC;6BAClB;4BACD;gCACE,IAAI,EAAE,UAAU;gCAChB,OAAO,EAAE,kCAAkC,oDAAO,GAAG;6BACtD;yBACF;qBACF;iBACF;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH;QACE,KAAK,EAAE,CAAC;QAER,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAE7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAG1D,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;AC9EuB;AAEhD,oEAAoE;AACpE;;;;GAIG;AACH,MAAM,YAAa,SAAQ,yDAAa;IAEtC,gBAAgB,CAAC,QAAgB;QAC/B,OAAO;YACL,MAAM,EAAE,gBAAgB;YACxB,WAAW,EAAE;gBACX,OAAO,EAAE,mBAAmB;gBAC5B,IAAI,EAAE;oBACJ,KAAK,EAAE,OAAO;oBACd,OAAO,EAAE;wBACP,IAAI,EAAE,gBAAgB;wBACtB,KAAK,EAAE;4BACL;gCACE,IAAI,EAAE,kBAAkB;gCACxB,MAAM,EAAE,QAAQ;gCAChB,YAAY,EAAE,IAAI;gCAClB,aAAa,EAAE,IAAI;6BACpB;yBACF;qBACF;iBACF;aACF;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,YAAY,SAAiB;QAC3B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAG7E,CAAC;CACF;AAEqB;;;;;;;;;;;;;;;;AC3Cf,MAAM,eAAe,GAAG;IAC7B,QAAQ;IACR,aAAa;IACb,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,aAAa;CACL,CAAC;;;;;;;;;;;;;;;;ACGJ,IAAU,OAAO,CA2PvB;AA3PD,WAAiB,OAAO;IAuGtB,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,CAAU,CAAC;IAiI3F;;;;;OAKG;IACH,SAAgB,yBAAyB,CAAC,GAAQ;QAChD,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAChG,CAAC;IAFe,iCAAyB,4BAExC;IAED;;;;;OAKG;IACH,SAAgB,yBAAyB,CAAC,GAAQ;QAChD,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAC9E,CAAC;IAFe,iCAAyB,4BAExC;AACH,CAAC,EA3PgB,OAAO,KAAP,OAAO,QA2PvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1QiC;AAOsF;AAIxH;;;;;GAKG;AACI,SAAS,OAAO,CAAwC,KAAU,EAAE,EAAkB;IACzF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACjC,+CAA+C;QAC/C,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAErB,wEAAwE;QACxE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SACpB;QAED,oCAAoC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,OAAO,MAAM,CAAC;IAClB,CAAC,EAAE,EAAoB,CAAC,CAAC;AAC7B,CAAC;AAEM,SAAS,OAAO,CAAC,IAAmB,EAAE,YAAoB,GAAG;IAChE,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;QAC9B,OAAO,EAAE,CAAC;KACb;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;SAC1B,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;SAC1B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxB,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1C,CAAC;AAEM,SAAS,gBAAgB,CAAC,MAA8B;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAEM,SAAS,eAAe,CAAC,SAAiB;IAC7C,OAAO,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;AAC5E,CAAC;AAEM,SAAS,UAAU,CAAC,IAAY;IACnC,OAAO;QACH,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,GAAG,IAAI,EAAE;KAC7B;AACL,CAAC;AAEM,SAAS,kBAAkB,CAAC,MAA8B,EAAE,OAA0B,EAAE,cAAkC;IAC7H,MAAM,aAAa,GAA0B,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAE1F,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACxB,IAAI,MAAM,KAAK,OAAO,EAAE;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACnD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACtC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC9B;YACL,CAAC,CAAC,CAAC;SACN;aAAM,IAAI,qDAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,QAAyB,CAAC,CAAC,CAAC;SAC5E;aAAM,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC3C,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBACnC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,YAAY,EAAwB,CAAC,CAAC,CAAC;YAC5F,CAAC,CAAC,CAAC;SACN;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAEM,SAAS,WAAW,CAAC,eAAuB,EAAE,MAAc,EAAE,YAAqB;IACtF,MAAM,eAAe,GAAG,2CAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAElE,kCAAkC;IAClC,IAAI,MAAM,KAAK,oDAAY;QAAE,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,eAAe,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC;IAChH,IAAI,qDAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,QAAyB,CAAC;IAC1G,IAAI,YAAY,IAAI,CAAC,GAAG,sDAAc,CAAC,aAAa,EAAE,GAAG,sDAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC,aAAa,YAAY,EAAwB,CAAC;IAC7L,OAAO,eAAe,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,IAAI,SAAS;AAC3D,CAAC;AAGM,SAAS,eAAe,CAAC,QAAgB;IAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,MAAM;AACjB,CAAC;AAEM,SAAS,qBAAqB,CAAC,UAAoB;IACtD,OAAO,UAAU;SACZ,MAAM,CAAC,CAAC,GAA6B,EAAE,SAAS,EAAE,EAAE;QACjD,IAAI,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC;QAEvC,IAAI,MAAM,CAAC,IAAI,CAAC,sDAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YAC9C,MAAM,WAAW,GAAG,2CAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE;gBACvC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,YAAY;aAC/C;SACJ;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACd,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;SACpB;QACD,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,EAAE,CAAC,CAAC;AACf,CAAC;AAED,iBAAiB;AACV,KAAK,UAAU,mBAAmB,CAAC,SAAmB,EAAE,WAAiD,EAAE,kBAA0B,QAAQ,EAAE,SAA6B;IAC/K,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvF,MAAM,OAAO,GAAG,eAAe,KAAK,QAAQ;QACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,2CAAM,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAE3F,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;QAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE1C,MAAM,SAAS,GAAG,2CAAM,CAAC,iBAAiB,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;QAE9D,IAAI;YACA,IAAI,UAAU,CAAC;YACf,IAAI,CAAC,GAAG,sDAAc,CAAC,aAAa,EAAE,GAAG,sDAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChF,UAAU,GAAG,MAAM,iJAA+B,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,GAAG,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAC9B;iBAAM;gBACH,UAAU,GAAG,MAAM,6DAAO,IAAU,GAAG,SAAS,CAAC,CAAC;gBAClD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAC9B;SACJ;QAAC,OAAO,CAAC,EAAE;YACR,2CAAM,CAAC,QAAQ,CAAC,wCAAwC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;SAEhF;KACJ;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAEM,SAAS,uBAAuB,CAAC,MAAc,EAAE,YAAqB;IACzE,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,gDAAgD;IAE/E,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,YAAY;QAAE,OAAO,aAAa,MAAM,qBAAqB,YAAY,OAAO;IAC1H,OAAO,aAAa,MAAM,0BAA0B;AACxD,CAAC;AAEM,SAAS,sBAAsB,CAAC,KAAa,EAAE,MAAc,EAAE,YAAqB;IACvF,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,gDAAgD;IAE/E,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,aAAa,MAAM,qBAAqB,YAAY,UAAU,KAAK,EAAE;IAEpH,OAAO,aAAa,MAAM,0BAA0B;AACxD,CAAC;AAEM,SAAS,YAAY,CAAC,KAAoB;IAC7C,OAAO,KAAK,CAAC,QAAQ,KAAK,mDAAW,CAAC,CAAC,CAAC,2CAAM,CAAC,QAAQ,CAAC,8DAA8D,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAK;AACzI,CAAC;AAEM,SAAS,WAAW,CAAC,IAAkB;IAC1C,OAAO,IAAI,CAAC,OAAO,KAAK,mDAAW,CAAC,CAAC,CAAC,2CAAM,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAK;AACrG,CAAC;AAEM,SAAS,kCAAkC,CAAC,YAAoB;IACnE,OAAO,2CAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CACjD,CAAC,2CAAM,CAAC,KAAK,CAAC,mDAAW,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAC/E,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAGM,SAAS,wBAAwB,CAAC,IAA0B,EAAE,QAAkC;IACnG,MAAM,WAAW,GAAG,oDAAY;SAC3B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACzC,MAAM,CAAC,OAAO,CAAC,CAAC;IAErB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;QAClC,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,eAAe,GAAG,2CAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;YAC9C,QAAQ,CAAC,OAAO,CAAC,UAAoC,CAAC,CAAC;YACvD,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAiB,EAAE,EAAE;gBAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;gBAC3E,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACd,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC7B;YACL,CAAC,CAAC,CAAC;SACN;KACJ;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9MM,MAAM,kBAAkB,GAAG,aAAa,CAAC;AACzC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,WAAW,GAAG,aAAa,CAAC;AAElC,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAE7D,MAAM,YAAY,GAAG,OAAO,CAAC;AAC7B,MAAM,YAAY,GAAG,CAAC,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AACzF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAEtD,MAAM,cAAc,GAAG;IAC5B,MAAM,EAAE;QACN,aAAa;QACb,UAAU;QACV,aAAa;QAEb,SAAS;QAET,YAAY;QACZ,gBAAgB;QAChB,KAAK;QACL,MAAM;QACN,sBAAsB;QACtB,6BAA6B;QAC7B,gBAAgB;QAChB,iBAAiB;QACjB,SAAS;QACT,WAAW;QACX,WAAW;QACX,MAAM;QACN,UAAU;QACV,UAAU;QACV,QAAQ;QACR,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,KAAK;QACL,YAAY;QACZ,cAAc;QACd,UAAU;QACV,kBAAkB;QAClB,mBAAmB;QACnB,eAAe;QACf,OAAO;QACP,IAAI;QACJ,KAAK;QACL,MAAM;QACN,MAAM;QACN,cAAc;QACd,OAAO;QACP,eAAe;QACf,yBAAyB;QACzB,UAAU;QACV,gBAAgB;QAChB,iBAAiB;QACjB,gBAAgB;QAChB,OAAO;QACP,iBAAiB;QACjB,WAAW;QACX,4BAA4B;QAC5B,kCAAkC;QAClC,SAAS;QACT,QAAQ;QACR,kBAAkB;QAClB,gBAAgB;QAChB,OAAO;QACP,QAAQ;QACR,YAAY;KACb;IACD,aAAa,EAAE;QACb,kBAAkB;QAClB,iBAAiB;QACjB,MAAM;QACN,cAAc;QACd,MAAM;QACN,aAAa;QACb,SAAS;QACT,MAAM;QACN,WAAW;QACX,MAAM;QACN,UAAU;QACV,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,SAAS;QACT,MAAM;QACN,WAAW;QACX,UAAU;QACV,SAAS;QACT,SAAS;QACT,QAAQ;QACR,OAAO;QACP,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,WAAW;QACX,QAAQ;KACT;CACF,CAAC;AAEK,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AAExK,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAE9D,MAAM,aAAa,GAAG,CAAC,GAAG,kBAAkB,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAEzG,MAAM,kBAAkB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/J,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,GAAG,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,aAAa,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAClJ,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAE5F,MAAM,YAAY,GAAG;IAC1B,aAAa,EAAE,oBAAoB;CACpC,CAAC;AAEK,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,oBAAoB;IAC1B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEK,MAAM,gBAAgB,GAAG;IAC9B,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,SAAS;CACjB,CAAC;AAEK,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,4BAA4B;IACnC,OAAO,EAAE,qBAAqB;IAC9B,YAAY,EAAE,eAAe;CAC9B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvIkF;AACjD;AACsB;AAM+B;AAErC;AAEnD;;;;;;;GAOG;AACH,MAAe,YAAY;IAmCzB;;;;;;;;OAQG;IACH,YAAsB,MAAc,EAAE,YAAqB;QA3C3D;;;;WAIG;QACH,WAAM,GAAqB;YACzB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;SACf,CAAC;QAEF;;;;WAIG;QACH,uBAAkB,GAAyB,EAAE;QAE7C;;;;;WAKG;QACM,uCAAgB;QAEzB;;;;;WAKG;QACM,6CAAuB;QAY9B,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;QAED,2BAAI,wBAAW,MAAM,OAAC;QACtB,2BAAI,8BAAiB,YAAY,OAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,EAAE;IACX,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB;QACvB,OAAO,EAAE;IACX,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,MAAM,kBAAkB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,IAAI,GAAG,CAAC,CAAC,oBAAoB;eAC9F,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;QAC9D,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,MAAM,MAAM,GAAG,2CAAM,CAAC,aAAa,CAAC;QAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,0DAAkB,CAAC,QAAQ,CAAC,2BAAI,4BAAQ,IAAI,EAAE,CAAC;gBAAE,SAAS;YAEhG,MAAM,UAAU,GAAG,EAAE,CAAC;YAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC7E,IAAI,QAAQ,GAAG,2CAAM,CAAC,eAAe,CAAC,IAAI,EAAE,2BAAI,kCAAc,IAAI,2BAAI,4BAAQ,CAAC,CAAC;gBAChF,MAAM,SAAS,GAAG,2CAAM,CAAC,iBAAiB,CAAC,2BAAI,4BAAQ,GAAG,MAAM,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,MAAM,6DAAO,GAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;gBAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAEnD,IAAI,2BAAI,4BAAQ,KAAK,OAAO;oBAAE,QAAQ,GAAG,gEAAwB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAElF,MAAM,WAAW,GAAG,QAAQ;qBACzB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM;uBAC7E,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,MAAM;uBAC1E,CAAC,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,kBAAkB,CAAC,CAAC;qBACjE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAE9D,IAAI,WAAW,CAAC,MAAM,EAAE;oBACtB,MAAM,SAAS,GAAG,CAAC,IAAI,2DAAW,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC1D,MAAM,gBAAgB,GAAG;wBACvB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,qBAAqB;wBACrE,QAAQ,EAAE,mDAAW,CAAC,IAAI,CAAC;wBAC3B,YAAY,EAAE,IAAI,CAAC,OAAO,KAAK,mDAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB;wBAC9F,gBAAgB,EAAE,IAAI,CAAC,IAAI;qBACrB,CAAC;oBACT,IAAI,2BAAI,4BAAQ,EAAE;wBAChB,IAAI,IAAI,CAAC,IAAI,KAAK,mDAAW,IAAI,CAAC,CAAC,yDAAiB,CAAC,QAAQ,CAAC,2BAAI,4BAAQ,CAAC,IAAI,2BAAI,kCAAc,CAAC,EAAE;4BAClG,gBAAgB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,YAAY,CAAC;4BAC1F,gBAAgB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,aAAa,CAAC;4BAC5F,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,YAAY,EAAE,2BAAI,kCAAc,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;yBACjG;6BAAM;4BACL,gBAAgB,CAAC,YAAY,GAAG,KAAK,CAAC;yBACvC;qBACF;oBAED,MAAM,kBAAkB,GAAG,IAAI,iEAAc,CAAC,gBAAgB,EAAE,2BAAI,4BAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAEtG,UAAU,CAAC,IAAI,CAAC,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAAC,CAAC;iBACtD;aACF;YAED,IAAI,UAAU,CAAC,MAAM,EAAE;gBACrB,MAAM,mBAAmB,GAAQ;oBAC/B,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,qBAAqB;oBACrE,KAAK,EAAE,oDAAY,CAAC,KAAK,CAAC;oBAC1B,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB;oBACzC,aAAa,EAAE,+CAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBACnC,CAAC;gBACF,IAAI,2BAAI,4BAAQ,EAAE;oBAChB,IAAI,CAAC,yDAAiB,CAAC,QAAQ,CAAC,2BAAI,4BAAQ,CAAC,IAAI,2BAAI,kCAAc,EAAE;wBACnE,mBAAmB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,YAAY,CAAC;wBAC7F,mBAAmB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,2BAAI,4BAAQ,CAAC,CAAC,aAAa,CAAC;wBAC/F,mBAAmB,CAAC,kBAAkB,GAAG;4BACvC,YAAY,EAAE,2BAAI,kCAAc;4BAChC,SAAS,EAAE,KAAK,CAAC,UAAU;yBAC5B;qBACF;yBAAM;wBACL,mBAAmB,CAAC,YAAY,GAAG,KAAK,CAAC;qBAC1C;iBACF;gBAED,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,iEAAc,CAChE,mBAAmB,EACnB,2BAAI,4BAAQ,EACZ,KAAK,CAAC,QAAQ,CACf,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEpB,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAA4B,CAAC;gBACtE,IAAI,WAAW,EAAE;oBACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC/C,WAAW,GAAG,KAAK,CAAC;iBACrB;gBAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;gBAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC5B;SACF;QAGD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;YACxC,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;YACzC,KAAK,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO;YACL,SAAS,EAAE,2CAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CACvC,MAAM,CAAC,EAAE,CACP,CAAC,MAAM,CAAC,SAAS;mBACd,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CACtE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;;AAEuB;;;;;;;;;;;;;;;;;;;;;AClOW;AACsB;AACX;AAEA;AACK;AAEnD,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,aAAc,SAAQ,uDAAY;IAEtC;;;;OAIG;IACH,YAAY,OAAmC;QAC7C,MAAM,MAAM,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,sDAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;QAC5I,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAErC,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C;YACE,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9E,yKAAyK;YACzK,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,YAAY;YACrC,kBAAkB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE;SAC5D,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAEtC,CAAC;CACF;AAEwB;;;;;;;;;;;;;;;;;;;;;;;;ACvCU;AASsB;AACF;AAC2B;AAE3B;AAC2C;AAEvC;AACR;AAGnD,oEAAoE;AACpE;;;;;;GAMG;AACH,MAAM,QAAQ;IAsBZ;;;;OAIG;IACH,YAAY,IAAkB,EAAE,UAA4B,EAAE;QA1B9D;;;;;WAKG;QACH,WAAM,GAAqB;YACzB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;QAkBA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB;QAEvB,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,2BAA2B;YAE3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAyB,EAAE,CAAC;QAEvC,KAAK,CAAC,IAAI,CAAC,IAAI,+DAAa,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhF,MAAM,SAAS,GAAG,MAAM,2DAAmB,CAAC,0DAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxH,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1B;QAED,MAAM,eAAe,GAAG,IAAI,mEAAe,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACrF,IAAI,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjD,8FAA8F;QAC9F,wCAAwC;QACxC,yBAAyB;QACzB,wDAAwD;QACxD,iBAAiB;QAEjB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,2CAAM,CAAC,mBAAmB,EAAE,CAAC;QAEtD,wDAAwD;QACxD,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,mDAAW,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1D,YAAY,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE,CAAC,IAAI,+DAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;aACxD,CAAC,CAAC;SACJ;QAGD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YAEnC,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,6DAAO,GAAU,EAAE,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,IAAI,QAAQ,GAAG,2CAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzD,MAAM,kBAAkB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,oBAAoB,IAAI,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;gBAEpJ,MAAM,WAAW,GAAuB,EAAE,CAAC;gBAE3C,IAAI,QAAQ,CAAC,MAAM,EAAE;oBACnB,MAAM,gBAAgB,GAAG;wBACvB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,qBAAqB;wBAC/D,QAAQ,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAAuB,CAAC,MAAM,CAAC,CAAC;wBAC1D,MAAM;wBACN,YAAY,EAAE,2CAAM,CAAC,KAAK,CAAC,MAAsB,CAAC,CAAC,CAAC,EAAE,OAAO;wBAC7D,gBAAgB,EAAE,MAAM;qBACzB,CAAC;oBAEF,IAAI,MAAM,EAAE;wBACV,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BACtC,gBAAgB,CAAC,YAAY,GAAG,KAAK;yBACtC;6BAAM;4BACL,gBAAgB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;4BACpF,gBAAgB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;4BACtF,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;yBACrE;qBACF;oBAED,MAAM,SAAS,GAAG,IAAI,iEAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBAE5F,IAAI,MAAM,KAAK,OAAO;wBAAE,QAAQ,GAAG,gEAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBAEjF,MAAM,WAAW,GAAG,QAAQ;yBACzB,MAAM,CAAC,MAAM,CAAC,EAAE;wBACf,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC5E,MAAM,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;wBACxF,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,kBAAkB,CAAC,CAAC;oBACxH,CAAC,CAAC;yBACD,GAAG,CAAC,MAAM,CAAC,EAAE;wBACZ,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC5E,IAAI,MAAM,KAAK,QAAQ,IAAI,2CAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,mBAAmB,EAAE;4BAClG,OAAO,IAAI,UAAU,CAAC,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;gCACvE,IAAI,EAAE,wBAAwB;gCAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;gCAC5B,GAAG,WAAW;6BACf,CAAC,CAAC,OAAO,EAAE,CAAC;yBACd;wBACD,OAAO,IAAI,UAAU,CAAC,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;oBAClG,CAAC,CAAC,CAAC;oBAEL,IAAI,WAAW,CAAC,MAAM,EAAE;wBACtB,WAAW,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;wBACxD,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;qBACnC;oBAED,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,CAAC;wBACd,KAAK,EAAE,WAAW;qBACnB,CAAC,CAAC;iBACJ;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;aAC1E;SACF;QAED,sCAAsC;QACtC,IAAI,CAAC,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;YAClD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnH,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAClE,MAAM,MAAM,GAAG,2CAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAC1C,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9G,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC;gBAChF,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEnF,OAAO,cAAc,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC;YAC1D,CAAC,CAAC,CAAC;YAEH,IAAI,qBAAqB,CAAC,MAAM,EAAE;gBAChC,IAAI;oBACF,MAAM,UAAU,GAAG,MAAM,0JAAoC,CAAC;oBAE9D,MAAM,wBAAwB,GAAG,qBAAqB;yBACnD,MAAM,CAAC,SAAS,CAAC,EAAE;wBAClB,MAAM,MAAM,GAAG,2CAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBAC1C,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC5E,MAAM,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;wBACxF,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;oBAC9J,CAAC,CAAC;yBACD,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,2CAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAE9I,MAAM,kBAAkB,GAAG,IAAI,2DAAW,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE;oBAE9E,MAAM,SAAS,GAAG;wBAChB,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,2CAAM,CAAC,QAAQ,CAAC,mDAAmD,CAAC;wBAC7E,uCAAuC;wBACvC,aAAa,EAAE,UAAU;wBACzB,MAAM,EAAE,EAAE;wBACV,cAAc,EAAE;4BACd,YAAY,EAAE,MAAM;4BACpB,SAAS,EAAE,CAAC;yBACb;qBACF;oBAED,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,MAAM;wBACZ,WAAW,EAAE,CAAC;wBACd,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;qBACvC,CAAC,CAAC;iBACJ;gBAAC,OAAO,CAAC,EAAE;oBACV,2CAAM,CAAC,QAAQ,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;iBAC1E;aACF;SACF;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAGD;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;YACxC,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;SAC1C,CAAC;IACJ,CAAC;CAEF;AAEmB;;;;;;;;;;;;;;;;;;;;;;;;;ACnQqC;AACX;AAGX;AAEnC,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAiCnC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAU,8BAAQ,CAAC,CAAC;QA7B5B;;;;;WAKG;QACH,oCAAmC;YACjC,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,+CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,GAAG;YACxE,6IAA6I;SAC9I,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAU,8BAAQ,CAAC,EACrC;YACE,GAAG,2BAAI,4CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB;SAC/D,EAAE,yBAAU,8BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;;;AAjDD;;;;;;GAMG;AACI,8BAAkB,QAAQ,EAAnB,CAAoB;AA6Cd;;;;;;;;;;;;;;;;;;;;;;;;;ACpEa;AACsB;AACX;AAM9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,WAAY,SAAQ,uDAAY;IAiCpC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAW,+BAAQ,CAAC,CAAC;QA7B7B;;;;;WAKG;QACH,qCAAmC;YACjC,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,gDAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,2CAA2C,CAAC,GAAG;YACzE,6IAA6I;SAC9I,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,kCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAW,+BAAQ,CAAC,EACtC;YACE,GAAG,2BAAI,6CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB;SAChE,EAAE,yBAAW,+BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;;;AAjDD;;;;;;GAMG;AACI,+BAAkB,SAAS,EAApB,CAAqB;AA6Cd;;;;;;;;;;;;;;;;;;;;;;;;;ACtEY;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAiClC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAS,6BAAQ,CAAC,CAAC;QA7B3B;;;;;WAKG;QACH,mCAAmC;YACjC,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,8CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE;YACtE,+IAA+I;SAChJ,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAS,6BAAQ,CAAC,EACpC;YACE,GAAG,2BAAI,2CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB;SAC9D,EAAE,yBAAS,6BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;;;AAjDD;;;;;;GAMG;AACI,6BAAkB,OAAO,EAAlB,CAAmB;AA6Cd;;;;;;;;;;;;;;;;;;;;;;;;;ACpEc;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,OAAQ,SAAQ,uDAAY;IAiChC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAO,2BAAQ,CAAC,CAAC;QA7BzB;;;;;WAKG;QACH,iCAAmC;YACjC,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,4CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,uCAAuC,CAAC,GAAG;YACrE,wIAAwI;SACzI,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,8BAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAO,2BAAQ,CAAC,EAClC;YACE,GAAG,2BAAI,yCAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB;SAC5D,EAAE,yBAAO,2BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;;;AAjDD;;;;;;GAMG;AACI,2BAAkB,KAAK,EAAhB,CAAiB;AA6Cd;;;;;;;;;;;;;;;;;;;;;;ACpEgB;AASsB;AACY;AAEd;AAC2C;AAC/C;AAGnD,oEAAoE;AACpE;;;;;;GAMG;AACH,MAAM,SAAS;IA8Bb;;;;OAIG;IACH,YAAY,KAAoB,EAAE,UAA4B,EAAE;QAlChE;;;;;WAKG;QACH,WAAM,GAAqB;YACzB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;QAWF;;;;;WAKG;QACH,uBAAkB,GAA6B,EAAE,CAAC;QAShD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB;QAEvB,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,2BAA2B;YAC3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAyB,EAAE,CAAC;QAEvC,MAAM,MAAM,GAAG,2CAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE7D,IAAI,MAAM,EAAE;YACV,KAAK,CAAC,IAAI,CAAC,IAAI,+DAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACnF;QAED,MAAM,SAAS,GAAG,MAAM,2DAAmB,CAAC,0DAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpI,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAG,2CAAM,CAAC,mBAAmB,EAAE,CAAC;QACtD,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;YACrC,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YAEnC,MAAM,WAAW,GAAyB,EAAE,CAAC;YAE7C,IAAI;gBACF,MAAM,UAAU,GAAG,MAAM,6DAAO,GAAU,EAAE,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,kBAAkB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,oBAAoB,IAAI,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;gBAEpJ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;oBAElF,IAAI,CAAC,IAAI;wBAAE,SAAQ;oBAGnB,IAAI,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAExD,IAAI,YAAY,CAAC,MAAM,EAAE;wBAEvB,IAAI,MAAM,KAAK,OAAO;4BAAE,YAAY,GAAG,gEAAwB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;wBAEpF,MAAM,WAAW,GAAuB,YAAY;6BACjD,MAAM,CAAC,MAAM,CAAC,EAAE;4BACf,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;4BAC5E,MAAM,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;4BACxF,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,kBAAkB,CAAC,CAAC;wBACxH,CAAC,CAAC;6BACD,GAAG,CAAC,MAAM,CAAC,EAAE;4BACZ,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;4BAC5E,IAAI,MAAM,KAAK,QAAQ,IAAI,2CAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,mBAAmB,EAAE;gCAClG,OAAO,IAAI,UAAU,CAAC,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;oCACvE,IAAI,EAAE,wBAAwB;oCAC9B,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;oCAC5B,GAAG,WAAW;iCACf,CAAC,CAAC,OAAO,EAAE,CAAC;6BACd;4BACD,OAAO,IAAI,UAAU,CAAC,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;wBAClG,CAAC,CAAC,CAAC;wBAEL,IAAI,WAAW,CAAC,MAAM,EAAE;4BACtB,MAAM,gBAAgB,GAAG;gCACvB,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,qBAAqB;gCAC/D,QAAQ,EAAE,IAAI,CAAC,IAAI;gCACnB,MAAM;gCACN,YAAY,EAAE,IAAI,CAAC,IAAI;gCACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI;6BAC5B,CAAC;4BAEF,IAAI,MAAM,EAAE;gCACV,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oCACtC,gBAAgB,CAAC,YAAY,GAAG,KAAK;iCACtC;qCAAM;oCACL,gBAAgB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;oCACpF,gBAAgB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;oCACtF,gBAAgB,CAAC,kBAAkB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;iCAChE;6BACF;4BAED,MAAM,SAAS,GAAG,IAAI,iEAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;4BAEvF,IAAI,SAAS,GAAG,CAAC,IAAI,2DAAW,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;4BACxD,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;4BAEhC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;yBAChC;qBACF;iBACF;gBAED,IAAI,WAAW,CAAC,MAAM,EAAE;oBACtB,MAAM,mBAAmB,GAAQ;wBAC/B,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,qBAAqB;wBAC/D,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAAuB,CAAC,MAAM,CAAC,CAAC;wBACvD,SAAS,EAAE,2CAAM,CAAC,KAAK,CAAC,MAAmC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB;wBAC3F,aAAa,EAAE,MAAM;qBACtB,CAAC;oBACF,IAAI,MAAM,EAAE;wBACV,IAAI,yDAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BACtC,mBAAmB,CAAC,YAAY,GAAG,KAAK;yBACzC;6BAAM;4BACL,mBAAmB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;4BACvF,mBAAmB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;4BACzF,mBAAmB,CAAC,kBAAkB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;yBAC/E;qBACF;oBAED,MAAM,oBAAoB,GAAG,IAAI,iEAAc,CAC7C,mBAAmB,EACnB,MAAM,EACN,IAAI,CAAC,KAAK,CAAC,QAAQ,CACpB,CAAC,UAAU,EAAE,CAAC;oBAEf,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAA4B,CAAC;oBACtE,IAAI,WAAW,EAAE;wBACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBAC/C,WAAW,GAAG,KAAK,CAAC;qBACrB;oBAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;oBAC5C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;oBACnC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC5B;aAEF;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;aAC1E;SACF;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAGD;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;YACxC,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;SAC1C,CAAC;IACJ,CAAC;CAEF;AAEoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9Oc;AASkB;AACG;AACoB;AACmB;AAC5C;AACI;AACN;AAEU;AAG3D,oEAAoE;AACpE;;;;;;GAMG;AACH,MAAM,QAAQ;IAcZ;;;;;OAKG;IACH;;QAnBA;;;;;WAKG;QACH,WAAM,GAAqB;YACzB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;SACf,CAAC;QASA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,mBAAmB;QAEvB,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,2BAA2B;YAE3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAyB,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC;QAEjD,IAAI,UAAU,CAAC;QAEf,gBAAgB;QAChB,MAAM,eAAe,GAAG,2CAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;QAEzE,IAAI,eAAe,EAAE;YACnB,IAAI;gBACF,MAAM,WAAW,GAAG,IAAI,2DAAW,CAAC,eAAe,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;aAC1E;SACF;QAED,cAAc;QACd,MAAM,aAAa,GAAG,2CAAM,CAAC,sBAAsB,EAAE,eAAe;QAEpE,IAAI,aAAa,EAAE;YACjB,IAAI;gBACF,UAAU,GAAG,MAAM,0IAA4B,CAAC;gBAChD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAE1D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;aACjC;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,kDAAkD,EAAE,CAAC,CAAC,CAAC;aACxE;SACF;QAED,gBAAgB;QAChB,MAAM,eAAe,GAAG,WAAW,EAAE,cAAc,IAAI,2CAAM,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CACtF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAC7H,EAAE,SAAS,CAAC;QAEb,IAAI,eAAe,EAAE;YACnB,IAAI;gBACF,UAAU,GAAG,MAAM,8IAA8B,CAAC;gBAClD,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;gBAEhE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;aACnC;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;aAC1E;SACF;QAED,MAAM,SAAS,GAAG,MAAM,2DAAmB,CAAC,0DAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACxF,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1B;QAED,MAAM,eAAe,GAAG,IAAI,mEAAe,EAAE,CAAC,OAAO,EAAE,CAAC;QACxD,IAAI,eAAe;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,IAAI,6DAAY,CAAC,EAAE,UAAU,EAAE,IAAI,gEAAa,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAEtF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QAEtB,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,2BAA2B;YAC3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,eAAe,GAA6B,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,2CAAM,CAAC,aAAa;QACnC,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE3C,MAAM,OAAO,GAAG,2CAAM,CAAC,eAAe,CAAC;YACvC,IAAI,YAAY,GAAG;gBACjB,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE,EAAE;aACgB,CAAC;YAE5B,IAAI,WAAW,EAAE;gBACf,MAAM,WAAW,GAAG,MAAM,2BAAI,wDAAmB,MAAvB,IAAI,CAAqB,CAAC;gBACpD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE,WAAW;iBACA,CAAC,CAAC;gBAGtB,IAAI,CAAC,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACjE,MAAM,GAAG,GAAG,2CAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC;oBAEtE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;wBACtB,IAAI,EAAE,+BAA+B;wBACrC,OAAO,EAAE;iCACY,GAAG,EAAE,SAAS;;;;;sBAKzB;wBACV,IAAI,EAAE,eAAe;wBACrB,UAAU,EAAE,QAAQ;wBACpB,cAAc,EAAE;4BACd,YAAY,EAAE,CAAC;4BACf,SAAS,EAAE,CAAC;yBACb;wBACD,UAAU,EAAE;4BACV,MAAM,EAAE,MAAM;yBACC;wBACjB,iBAAiB,EAAE;4BACjB,MAAM,EAAE,MAAM;yBACC;wBACjB,WAAW,EAAE;4BACX,MAAM,EAAE,MAAM;yBACC;qBACI,CAAC,CAAC;iBAC1B;gBAGD,0BAA0B;gBAC1B,IAAI,OAAO,CAAC,kBAAkB,EAAE;oBAC9B,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;iBACxD;gBAED,oBAAoB;gBACpB,IAAI,OAAO,CAAC,WAAW,EAAE;oBACvB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;iBACjD;aACF;YAED,IAAI,WAAW,IAAI,CAAC,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAClF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,gCAAgC,CAAC,GAAG;oBAChE,aAAa,EAAE,OAAO;iBACvB,CAAC,CAAC;gBAEH,WAAW,GAAG,KAAK,CAAC;aACrB;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACpD,MAAM,IAAI,GAAG,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACrC,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,YAAY,CAAC,KAAK,CAAC,IAAI,CACrB;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,oDAAY,CAAC,KAAK,CAAC;oBAC5B,aAAa,EAAE,UAAU;oBACzB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB;oBACpC,MAAM,EAAE,CAAC;4BACP,IAAI,EAAE,4BAA4B;4BAClC,SAAS,EAAE,KAAK;4BAChB,KAAK,EAAE;gCACL,WAAW;oCACX,IAAI,+DAAa,CAAC;wCAChB,YAAY,EAAE,aAAa;wCAC3B,YAAY,EAAE,IAAI;wCAClB,eAAe,EAAE,KAAK,CAAC,QAAQ;wCAC/B,SAAS,EAAE,KAAK,CAAC,UAAU;wCAC3B,UAAU,EAAE,kDAAU,CAAC,aAAa,CAAC;qCACtC,CAAC,CAAC,OAAO,EAAE;6BACb;4BACD,QAAQ,EAAE;gCACR,KAAK,EAAE;;;;eAIR;6BACA;yBACF,CAAC;oBACF,UAAU,EAAE,KAAK,CAAC,QAAQ,KAAK,mDAAW,CAAC,CAAC,CAAC,kDAAU,CAAC,+CAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzF,CACF,CAAC;aACH;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;gBAItF,IAAI,MAAkB,CAAC;gBACvB,IAAI,UAAU,GACZ,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI;oBAC7C,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI;oBACvC,SAAS,CAAC;gBAEZ,2CAA2C;gBAC3C,IAAI;oBACF,MAAM,GAAG,MAAM,6DAAQ,GAAU,EAAE,UAAU,CAAC,CAAC,CAAE,CAAC;iBACnD;gBAAC,OAAO,CAAC,EAAE;oBACV,yCAAyC;oBACzC,MAAM,GAAG,MAAM,gJAA+B,CAAC;oBAE/C,IAAI,2CAAM,CAAC,eAAe,CAAC,KAAK,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC5D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBAClB;iBACF;gBAED,2BAA2B;gBAC3B,IAAI,CAAC,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAC,EAAE,MAAM,EAAE;oBAC9D,IAAI,OAAO,GAAG;wBACZ,GAAG,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC;wBACpC,GAAG,2CAAM,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC1C,SAAS,EAAE,IAAI,CAAC,IAAI;qBACrB,CAAC;oBAEF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;wBACtB,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;wBAC7C,cAAc,EAAE;4BACd,YAAY,EAAE,CAAC;yBAChB;qBACF,CAAC,CAAC;iBACJ;aACF;YAGD,IAAI,KAAK,CAAC,QAAQ,KAAK,mDAAW,EAAE;gBAClC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;oBACtB,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,2CAAM,CAAC,QAAQ,CAAC,+DAA+D,CAAC;oBACzF,SAAS,EAAE,2CAAM,CAAC,QAAQ,CAAC,gEAAgE,CAAC;oBAC5F,mBAAmB,EAAE,IAAI;oBACzB,IAAI,EAAE,4BAA4B;oBAClC,cAAc,EAAE,IAAI;oBACpB,cAAc,EAAE;wBACd,YAAY,EAAE,CAAC;wBACf,SAAS,EAAE,CAAC;qBACb;oBACD,UAAU,EAAE;wBACV,MAAM,EAAE,UAAU;wBAClB,eAAe,EAAE,yBAAyB;qBAC3C;iBACK,CAAC,CAAC;aACX;YAED,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IA4BD;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,MAAM,IAAI,CAAC,mBAAmB,EAAE;YACxC,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF;;AAxCC;;;;GAIG;AACH,KAAK;IACH,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAC/D,4BAA4B;QAE5B,OAAO,EAAE,CAAC;KACX;IAED,MAAM,KAAK,GAAuB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,2CAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QACtD,OAAO,MAAM,CAAC,SAAS,IAAI,IAAI;eAC1B,MAAM,CAAC,WAAW,IAAI,IAAI;IACjC,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,yDAAU,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;KAC9C;IAGD,OAAO,KAAK,CAAC;AACf,CAAC;AAkBiB;;;;;;;;;;;;;;;;;;;;;;;;;AC9We;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAgClC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAS,6BAAQ,CAAC,CAAC;QA5B3B;;;;;WAKG;QACH,mCAAmC;YACjC,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,8CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,yCAAyC,CAAC,GAAG;YACvE,2IAA2I;SAC5I,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C;YACE,GAAG,2BAAI,2CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB;SAC9D,EAAE,yBAAS,6BAAQ,EAAE,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAEjD,CAAC;;;AAhDD;;;;;;GAMG;AACI,6BAAkB,OAAO,EAAlB,CAAmB;AA4Cd;;;;;;;;;;;;;;;;;;;;;;;;;ACnEc;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,eAAgB,SAAQ,uDAAY;IAiCxC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAe,mCAAQ,CAAC,CAAC;QA7BjC;;;;;WAKG;QACH,yCAAmC;YACjC,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,oDAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,gDAAgD,CAAC,GAAG;YAC9E,iGAAiG;SAClG,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,sCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAe,mCAAQ,CAAC,EAC1C;YACE,GAAG,2BAAI,iDAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,qBAAqB;SACrE,EAAE,yBAAe,mCAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IAC7C,CAAC;;;AAjDD;;;;;;GAMG;AACI,mCAAkB,cAAc,EAAzB,CAA0B;AA6Cf;;;;;;;;;;;;;;;;;;;;;;;;;ACpEQ;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,SAAU,SAAQ,uDAAY;IAiClC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAS,6BAAQ,CAAC,CAAC;QA7B3B;;;;;WAKG;QACH,mCAAmC;YACjC,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,8CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,gDAAgD,CAAC,EAAE;YAC7E,8IAA8I;SAC/I,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,gCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,gEAAgE;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAS,6BAAQ,CAAC,EACpC;YACE,GAAG,2BAAI,2CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB;SAC9D,EAAE,yBAAS,6BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;;;AAjDD;;;;;;GAMG;AACI,6BAAkB,OAAO,EAAlB,CAAmB;AA6Cd;;;;;;;;;;;;;;;;;;ACpEc;AAIoB;AAEvD;;;;;;;GAOG;AACH,MAAe,mBAAmB;IAsBhC;;;;;OAKG;IACH;QA3BA;;;;WAIG;QACH,WAAM,GAAuB;YAC3B,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YAC9E,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI;SACd,CAAC;QAEF;;;;WAIG;QACH,uBAAkB,GAAoB;YACpC,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;SACT,CAAC;QASA,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,SAAS,GAAyB,EAAE,CAAC;QAE3C,MAAM,YAAY,GAAG,2CAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC;SACX;QAED,MAAM,EACJ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,GAAG,YAAY,EAAE,QAAQ,CAAC;QAG3B,IAAI,gBAAgB,EAAE,SAAS,EAAE;YAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,+DAAa,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,sDAAsD,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YAC3K,sLAAsL;SACvL;QAED,IAAI,cAAc,EAAE,SAAS,IAAI,gBAAgB,EAAE,SAAS,EAAE;YAC5D,SAAS,CAAC,IAAI,CAAC,IAAI,+DAAa,CAAC,eAAe,EAAE,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC;YACtL,qNAAqN;SACtN;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,KAAK,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;SACpC,CAAC;IACJ,CAAC;CACF;AAE8B;;;;;;;;;;;;;;;;;;;;;;;;AClGI;AAGY;AACE;AACY;AACyB;AAE7B;AAKH;AACH;AAEnD;;;;;;;GAOG;AACH,MAAM,YAAY;IAoBhB;;;;;OAKG;IACH;QAzBA;;;;;WAKG;QACH,WAAM,GAAqB;YACzB,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,sDAAsD,CAAC;YAC9E,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,UAAU;SACjB,CAAC;QAEF;;;;WAIG;QACH,uBAAkB,GAAyB,EAAE;QAS3C,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAID;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB;QAEpB,IAAI,2CAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,2BAA2B;YAE3B,OAAO,EAAE,CAAC;SACX;QAED,MAAM,KAAK,GAAyB,EAAE,CAAC;QAEvC,IAAI,UAAU,CAAC;QAEf,cAAc;QACd,MAAM,aAAa,GAAG,2CAAM,CAAC,sBAAsB,EAAE,eAAe;QAEpE,IAAI,aAAa,EAAE;YACjB,IAAI;gBACF,UAAU,GAAG,MAAM,0IAA4B,CAAC;gBAChD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAE1D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;aACjC;YAAC,OAAO,CAAC,EAAE;gBACV,2CAAM,CAAC,QAAQ,CAAC,kDAAkD,EAAE,CAAC,CAAC,CAAC;aACxE;SACF;QAED,MAAM,SAAS,GAAG,MAAM,2DAAmB,CAAC,8DAAsB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;SAC1B;QAED,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,4BAA4B;YAClC,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,CAAC,IAAI,CAAC;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,aAAa,GAA2B;YAC5C,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,EAAE;SACV,CAAC;QAEF,MAAM,aAAa,GAAG,2CAAM,CAAC,sBAAsB,EAAE,eAAe;QACpE,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,KAAK,CAAC,IAAI,CACtB;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;gBACnB,aAAa,EAAE,OAAO;aACvB,CACF;YACD,aAAa,CAAC,KAAK,CAAC,IAAI,CACtB;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,QAAQ;gBACjB,aAAa,EAAE,UAAU;aAC1B,CAAC;YACJ,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,uDAAS,CAAC,2CAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;SAClF;QAED,MAAM,OAAO,GAAG,2CAAM,CAAC,OAAO,CAAC,MAAM;QACrC,IAAI,OAAO,EAAE,MAAM,EAAE;YACnB,aAAa,CAAC,KAAK,CAAC,IAAI,CACtB;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,WAAW;gBACpB,aAAa,EAAE,UAAU;aAC1B,CAAC;YAEJ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,yDAAU,CAAC,MAAM,EAAE;oBAC9C,MAAM,EAAE,YAAY;oBACpB,YAAY,EAAE,MAAM;oBACpB,cAAc,EAAE,OAAO;iBACxB,CAAC,CAAC,OAAO,EAAE,CAAC;aACd;SACF;QAED,MAAM,YAAY,GAAG,2CAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAExD,MAAM,EACJ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,GAAG,YAAY,EAAE,QAAQ,IAAI,EAAE,CAAC;QAEjC,IAAI,gBAAgB,IAAI,cAAc,IAAI,gBAAgB,EAAE;YAC1D,aAAa,CAAC,KAAK,CAAC,IAAI,CACtB;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,UAAU;gBACnB,aAAa,EAAE,UAAU;aAC1B,CAAC;YACJ,IAAI,gBAAgB,EAAE,SAAS;gBAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,qEAAgB,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,kDAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5J,IAAI,cAAc,EAAE,SAAS;gBAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,qEAAgB,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,kDAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACxJ,IAAI,gBAAgB,EAAE,SAAS;gBAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,qEAAgB,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE,kDAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7J;QAED,MAAM,QAAQ,GAAG,CAAC,aAAa,CAAC;QAChC,IAAI,2CAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEnF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC;QACxB,MAAM,cAAc,GAA2B;YAC7C,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,CAAC;YACd,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,GAAG;oBAC1E,aAAa,EAAE,OAAO;oBACtB,MAAM,EAAE,EAAE;oBACV,cAAc,EAAE;wBACd,YAAY,EAAE,MAAM;wBACpB,SAAS,EAAE,CAAC;qBACb;oBACD,IAAI,EAAE,2CAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;iBACtC;aAAC;SACL,CAAC;QAEF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,2CAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/D,iDAAiD;YACjD,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,wBAAwB;YAC7D,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAE9D,gDAAgD;YAChD,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE;YAEjC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAE3C,IAAI,UAAU,GAAyB;gBACrC;oBACE,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,oDAAY,CAAC,KAAK,CAAC;oBAC5B,aAAa,EAAE,OAAO;oBACtB,MAAM,EAAE,EAAE;oBACV,cAAc,EAAE;wBACd,YAAY,EAAE,MAAM;wBACpB,SAAS,EAAE,CAAC;qBACb;oBACD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB;iBACrC;aACF;YAED,8BAA8B;YAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC5F,MAAM,QAAQ,GAAG,2CAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACtD,MAAM,SAAS,GAAG,2CAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;gBAE5D,MAAM,UAAU,GAAG,MAAM,6DAAO,GAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;gBAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;oBACxC,SAAS;iBACV;gBAED,2DAA2D;gBAC3D,IAAI,MAAM,GAAsB;oBAC9B,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;iBACrB,CAAC;gBAEF,IAAI,SAAS,GAAyB,EAAE,CAAC;gBAEzC,MAAM,WAAW,GAAG,EAAE;gBAEtB,4DAA4D;gBAC5D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;oBAC7B,IAAI,WAAW,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC1E,IAAI,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;oBAEtF,IAAI,WAAW,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,EAAE;wBAChD,SAAS;qBACV;oBAED,MAAM,kBAAkB,GACtB,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB;2BAC/D,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;oBAC9D,IAAI,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,kBAAkB,EAAE;wBAC7D,SAAS;qBACV;oBACD,WAAW,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC5E;gBAED,IAAI,WAAW,CAAC,MAAM,EAAE;oBACtB,SAAS,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;iBACvD;gBAED,oDAAoD;gBACpD,IAAI,SAAS,CAAC,MAAM,EAAE;oBACpB,MAAM,gBAAgB,GAAQ,EAAE,CAAC;oBACjC,gBAAgB,CAAC,QAAQ,GAAG,mDAAW,CAAC,IAAI,CAAC;oBAC7C,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC;oBAC9D,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBACtC,IAAI,MAAM,EAAE;wBACV,gBAAgB,CAAC,YAAY,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;wBACpF,gBAAgB,CAAC,aAAa,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;qBACvF;oBAED,uCAAuC;oBACvC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,iEAAc,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;oBAEvF,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC/B;aACF;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;SACpE;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,MAAM,EAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE;YACrC,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;SAC1C,CAAC;IACJ,CAAC;CACF;AAEuB;;;;;;;;;;;;;;;;;;;;;;;;;ACrTW;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAiCnC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAU,8BAAQ,CAAC,CAAC;QA7B5B;;;;;WAKG;QACH,oCAAmC;YACjC,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,+CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,GAAG;YACxE,sFAAsF;SACvF,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAU,8BAAQ,CAAC,EACrC;YACE,GAAG,2BAAI,4CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB;SAC/D,EAAE,yBAAU,8BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;;;AAjDD;;;;;;GAMG;AACI,8BAAkB,QAAQ,EAAnB,CAAoB;AA6Cd;;;;;;;;;;;;;;;;;;;;ACpEsD;AACzC;AAI+B;AAEf;AAEnD;;;;;;;GAOG;AACH,MAAM,eAAe;IAoBnB;;;;;OAKG;IACH;QAzBA;;;;WAIG;QACH,WAAM,GAAqB;YACzB,KAAK,EAAE,2CAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACnD,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,IAAI;SACd,CAAC;QAEF;;;;WAIG;QACH,uBAAkB,GAAyB,EAAE;QAS3C,IAAI,CAAC,2CAAM,CAAC,aAAa,EAAE,EAAE;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,YAAY,GAA6B,EAAE,CAAC;QAElD,KAAK,MAAM,KAAK,IAAI,2CAAM,CAAC,aAAa,EAAE;YACxC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAE5C,MAAM,UAAU,GAAG,EAAE,CAAC;YAEtB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtF,MAAM,QAAQ,GAAG,2CAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;gBAClD,MAAM,mBAAmB,GAAG,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,0DAAkB,CAAC,QAAQ,CAAC,uDAAe,CAAC,SAAS,CAAC,CAAC,IAAI,2CAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,KAAK,mDAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,2CAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3N,MAAM,UAAU,GAAG,MAAM,0JAAoC,CAAC;gBAE9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAEnD,IAAI,MAAM,GAAsB,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,OAAO,KAAK,mDAAW,EAAE;oBAChC,MAAM,GAAG,EAAE,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;iBAC7E;gBAED,MAAM,WAAW,GAAG,mBAAmB;qBACpC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM;uBAC7E,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,MAAM;uBAC1E,CAAC,CAAC,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC;qBAC3C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAErE,IAAI,WAAW,CAAC,MAAM,EAAE;oBACtB,UAAU,CAAC,IAAI,CAAC,IAAI,2DAAW,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;iBACxD;aACF;YAED,IAAI,UAAU,CAAC,MAAM,EAAE;gBACrB,MAAM,mBAAmB,GAAQ;oBAC/B,KAAK,EAAE,oDAAY,CAAC,KAAK,CAAC;oBAC1B,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,gBAAgB;oBACzC,aAAa,EAAE,+CAAO,CAAC,KAAK,CAAC,IAAI,CAAC;iBACnC,CAAC;gBACF,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;aACxD;SACF;QAED,IAAI,YAAY,CAAC,MAAM,EAAE;YACvB,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;SACxE;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO;QACX,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,QAAQ,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAc;QACzB,OAAO;YACL,SAAS,EAAE,2CAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CACvC,MAAM,CAAC,EAAE,CACP,CAAC,MAAM,CAAC,SAAS;mBACd,CAAC,2CAAM,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CACtE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC,CAAC;IACJ,CAAC;CACF;AAE0B;;;;;;;;;;;;;;;;;;;;;;;;;ACtIQ;AACsB;AACX;AAI9C,oEAAoE;AACpE;;;;;;;GAOG;AACH,MAAM,UAAW,SAAQ,uDAAY;IAiCnC;;;;OAIG;IACH,YAAY,UAA4B,EAAE;QACxC,KAAK,CAAC,yBAAU,8BAAQ,CAAC,CAAC;QA7B5B;;;;;WAKG;QACH,oCAAmC;YACjC,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,KAAK;SACf,EAAC;QAEF;;;;;WAKG;QACH,+CAAyD;YACvD,KAAK,EAAE,GAAG,2CAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,GAAG;YACxE,8IAA8I;SAC/I,EAAC;QAUA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,2BAAI,iCAAe,EAAE,OAAO,CAAC,CAAC;QAEvE,iEAAiE;QACjE,IAAI,CAAC,kBAAkB,GAAG,IAAI,iEAAc,CAC1C,IAAI,CAAC,YAAY,CAAC,yBAAU,8BAAQ,CAAC,EACrC;YACE,GAAG,2BAAI,4CAA0B;YACjC,GAAG,2CAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB;SAC/D,EAAE,yBAAU,8BAAQ,CAAC,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;;;AAjDD;;;;;;GAMG;AACI,8BAAkB,QAAQ,EAAnB,CAAoB;AA6Cd;;;;;;;;;;;ACpEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;UCtJA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;;;;;WCHA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;UENA;UACA;UACA;UACA","sources":["webpack://linus-dashboard/./node_modules/deepmerge/dist/cjs.js","webpack://linus-dashboard/./src/Helper.ts","webpack://linus-dashboard/./src/cards/AbstractCard.ts","webpack://linus-dashboard/./src/cards/AggregateCard.ts","webpack://linus-dashboard/./src/cards/AlarmCard.ts","webpack://linus-dashboard/./src/cards/BinarySensorCard.ts","webpack://linus-dashboard/./src/cards/CameraCard.ts","webpack://linus-dashboard/./src/cards/ClimateCard.ts","webpack://linus-dashboard/./src/cards/ControllerCard.ts","webpack://linus-dashboard/./src/cards/CoverCard.ts","webpack://linus-dashboard/./src/cards/FanCard.ts","webpack://linus-dashboard/./src/cards/GroupedCard.ts","webpack://linus-dashboard/./src/cards/HomeAreaCard.ts","webpack://linus-dashboard/./src/cards/ImageAreaCard.ts","webpack://linus-dashboard/./src/cards/LightCard.ts","webpack://linus-dashboard/./src/cards/LockCard.ts","webpack://linus-dashboard/./src/cards/MediaPlayerCard.ts","webpack://linus-dashboard/./src/cards/MiscellaneousCard.ts","webpack://linus-dashboard/./src/cards/NumberCard.ts","webpack://linus-dashboard/./src/cards/PersonCard.ts","webpack://linus-dashboard/./src/cards/SceneCard.ts","webpack://linus-dashboard/./src/cards/SensorCard.ts","webpack://linus-dashboard/./src/cards/SwipeCard.ts","webpack://linus-dashboard/./src/cards/SwitchCard.ts","webpack://linus-dashboard/./src/cards/VacuumCard.ts","webpack://linus-dashboard/./src/chips/AbstractChip.ts","webpack://linus-dashboard/./src/chips/AggregateChip.ts","webpack://linus-dashboard/./src/chips/AlarmChip.ts","webpack://linus-dashboard/./src/chips/AreaScenesChips.ts","webpack://linus-dashboard/./src/chips/AreaStateChip.ts","webpack://linus-dashboard/./src/chips/ClimateChip.ts","webpack://linus-dashboard/./src/chips/ConditionalChip.ts","webpack://linus-dashboard/./src/chips/ControlChip.ts","webpack://linus-dashboard/./src/chips/CoverChip.ts","webpack://linus-dashboard/./src/chips/FanChip.ts","webpack://linus-dashboard/./src/chips/LightChip.ts","webpack://linus-dashboard/./src/chips/MediaPlayerChip.ts","webpack://linus-dashboard/./src/chips/SafetyChip.ts","webpack://linus-dashboard/./src/chips/SettingsChip.ts","webpack://linus-dashboard/./src/chips/SpotifyChip.ts","webpack://linus-dashboard/./src/chips/SwitchChip.ts","webpack://linus-dashboard/./src/chips/ToggleSceneChip.ts","webpack://linus-dashboard/./src/chips/UnavailableChip.ts","webpack://linus-dashboard/./src/chips/WeatherChip.ts","webpack://linus-dashboard/./src/configurationDefaults.ts","webpack://linus-dashboard/./src/linus-strategy.ts","webpack://linus-dashboard/./src/popups/AbstractPopup.ts","webpack://linus-dashboard/./src/popups/AreaInformationsPopup.ts","webpack://linus-dashboard/./src/popups/LightSettingsPopup.ts","webpack://linus-dashboard/./src/popups/SceneSettingsPopup.ts","webpack://linus-dashboard/./src/popups/SettingsPopup.ts","webpack://linus-dashboard/./src/popups/WeatherPopup.ts","webpack://linus-dashboard/./src/types/lovelace-mushroom/cards/vacuum-card-config.ts","webpack://linus-dashboard/./src/types/strategy/generic.ts","webpack://linus-dashboard/./src/utils.ts","webpack://linus-dashboard/./src/variables.ts","webpack://linus-dashboard/./src/views/AbstractView.ts","webpack://linus-dashboard/./src/views/AggregateView.ts","webpack://linus-dashboard/./src/views/AreaView.ts","webpack://linus-dashboard/./src/views/CameraView.ts","webpack://linus-dashboard/./src/views/ClimateView.ts","webpack://linus-dashboard/./src/views/CoverView.ts","webpack://linus-dashboard/./src/views/FanView.ts","webpack://linus-dashboard/./src/views/FloorView.ts","webpack://linus-dashboard/./src/views/HomeView.ts","webpack://linus-dashboard/./src/views/LightView.ts","webpack://linus-dashboard/./src/views/MediaPlayerView.ts","webpack://linus-dashboard/./src/views/SceneView.ts","webpack://linus-dashboard/./src/views/SecurityDetailsView.ts","webpack://linus-dashboard/./src/views/SecurityView.ts","webpack://linus-dashboard/./src/views/SwitchView.ts","webpack://linus-dashboard/./src/views/UnavailableView.ts","webpack://linus-dashboard/./src/views/VacuumView.ts","webpack://linus-dashboard/./src/cards/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/./src/chips/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/./src/views/ lazy ^\\.\\/.*$ namespace object","webpack://linus-dashboard/webpack/bootstrap","webpack://linus-dashboard/webpack/runtime/compat get default export","webpack://linus-dashboard/webpack/runtime/define property getters","webpack://linus-dashboard/webpack/runtime/ensure chunk","webpack://linus-dashboard/webpack/runtime/hasOwnProperty shorthand","webpack://linus-dashboard/webpack/runtime/make namespace object","webpack://linus-dashboard/webpack/before-startup","webpack://linus-dashboard/webpack/startup","webpack://linus-dashboard/webpack/after-startup"],"sourcesContent":["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn Object.propertyIsEnumerable.call(target, symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","import { configurationDefaults } from \"./configurationDefaults\";\nimport { HassEntities, HassEntity } from \"home-assistant-js-websocket\";\nimport deepmerge from \"deepmerge\";\nimport { DeviceRegistryEntry } from \"./types/homeassistant/data/device_registry\";\nimport { AreaRegistryEntry } from \"./types/homeassistant/data/area_registry\";\nimport { generic } from \"./types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport StrategyFloor = generic.StrategyFloor;\nimport StrategyEntity = generic.StrategyEntity;\nimport StrategyDevice = generic.StrategyDevice;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { FloorRegistryEntry } from \"./types/homeassistant/data/floor_registry\";\nimport { DEVICE_CLASSES, MAGIC_AREAS_DOMAIN, MAGIC_AREAS_NAME, UNDISCLOSED } from \"./variables\";\nimport { getEntityDomain, getGlobalEntitiesExceptUndisclosed, getMAEntity, getMagicAreaSlug, groupEntitiesByDomain, slugify } from \"./utils\";\nimport { EntityRegistryEntry } from \"./types/homeassistant/data/entity_registry\";\nimport { FrontendEntityComponentIconResources, IconResources } from \"./types/homeassistant/data/frontend\";\nimport { LinusDashboardConfig } from \"./types/homeassistant/data/linus_dashboard\";\n\n/**\n * Helper Class\n *\n * Contains the objects of Home Assistant's registries and helper methods.\n */\nclass Helper {\n /**\n * An array of entities from Home Assistant's entity registry.\n *\n * @type {Record}\n * @private\n */\n static #entities: Record;\n\n /**\n * An array of entities from Home Assistant's entity registry.\n *\n * @type {Record}\n * @private\n */\n static #domains: Record = {};\n\n /**\n * An array of entities from Home Assistant's device registry.\n *\n * @type {Record}\n * @private\n */\n static #devices: Record;\n\n /**\n * An array of entities from Home Assistant's area registry.\n *\n * @type {Record}\n * @private\n */\n static #areas: Record = {};\n\n /**\n * An array of entities from Home Assistant's area registry.\n *\n * @type {Record}\n * @private\n */\n static #floors: Record = {};\n\n /**\n * An array of state entities from Home Assistant's Hass object.\n *\n * @type {HassEntities}\n * @private\n */\n static #hassStates: HassEntities;\n\n /**\n * Translation method.\n *\n * @type {any}\n * @private\n */\n static #hassLocalize: any;\n\n /**\n * Indicates whether this module is initialized.\n *\n * @type {boolean} True if initialized.\n * @private\n */\n static #initialized: boolean = false;\n\n /**\n * The Custom strategy configuration.\n *\n * @type {generic.StrategyConfig}\n * @private\n */\n static #strategyOptions: generic.StrategyConfig;\n\n /**\n * The magic areas devices.\n *\n * @type {Record}\n * @private\n */\n static #magicAreasDevices: Record = {};\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {boolean}\n * @private\n */\n static #debug: boolean;\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {IconResources}\n * @private\n */\n static #icons: IconResources;\n\n /**\n * Set to true for more verbose information in the console.\n *\n * @type {LinusDashboardConfig}\n * @private\n */\n static #linus_dashboard_config: LinusDashboardConfig;\n\n /**\n * Class constructor.\n *\n * This class shouldn't be instantiated directly.\n * Instead, it should be initialized with method initialize().\n *\n * @throws {Error} If trying to instantiate this class.\n */\n constructor() {\n throw new Error(\"This class should be invoked with method initialize() instead of using the keyword new!\");\n }\n\n /**\n * Custom strategy configuration.\n *\n * @returns {generic.StrategyConfig}\n * @static\n */\n static get strategyOptions(): generic.StrategyConfig {\n return this.#strategyOptions;\n }\n\n /**\n * Custom strategy configuration.\n *\n * @returns {Record}\n * @static\n */\n static get magicAreasDevices(): Record {\n return this.#magicAreasDevices;\n }\n\n /**\n * Get the entities from Home Assistant's area registry.\n *\n * @returns {Record}\n * @static\n */\n static get areas(): Record {\n return this.#areas;\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {StrategyArea[]}\n * @static\n */\n static get orderedAreas(): StrategyArea[] {\n return Object.values(this.#areas).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.order === undefined) return 1; // a should come after b\n if (b.order === undefined) return -1; // b should come after a\n\n // Both 'order' values are defined, compare them\n return a.order - b.order;\n });\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {Record}\n * @static\n */\n static get floors(): Record {\n return this.#floors\n }\n\n /**\n * Get the entities from Home Assistant's floor registry.\n *\n * @returns {StrategyFloor[]}\n * @static\n */\n static get orderedFloors(): StrategyFloor[] {\n return Object.values(this.#floors).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.level === undefined) return 1; // a should come after b\n if (b.level === undefined) return -1; // b should come after a\n\n // Both 'level' values are defined, compare them\n return a.level - b.level;\n });\n }\n\n /**\n * Get the devices from Home Assistant's device registry.\n *\n * @returns {Record}\n * @static\n */\n static get devices(): Record {\n return this.#devices;\n }\n\n /**\n * Get the entities from Home Assistant's entity registry.\n *\n * @returns {Record}\n * @static\n */\n static get entities(): Record {\n return this.#entities;\n }\n\n /**\n * Get the domains from Home Assistant's entity registry.\n *\n * @returns {Record}\n * @static\n */\n static get domains(): Record {\n return this.#domains;\n }\n\n /**\n * Get the icons from Home Assistant's frontend.\n *\n * @returns {IconResources}\n * @static\n */\n static get icons(): IconResources {\n return this.#icons;\n }\n\n /**\n * Get the linus_dashboard_config from Home Assistant's frontend.\n *\n * @returns {LinusDashboardConfig}\n * @static\n */\n static get linus_dashboard_config(): LinusDashboardConfig {\n return this.#linus_dashboard_config;\n }\n\n /**\n * Get the current debug mode of the mushroom strategy.\n *\n * @returns {boolean}\n * @static\n */\n static get debug(): boolean {\n return this.#debug;\n }\n\n /**\n * Initialize this module.\n *\n * @param {generic.DashBoardInfo} info Strategy information object.\n * @returns {Promise}\n * @static\n */\n static async initialize(info: generic.DashBoardInfo): Promise {\n // Initialize properties.\n this.#hassStates = info.hass.states;\n this.#hassLocalize = info.hass.localize;\n this.#strategyOptions = deepmerge(configurationDefaults, info.config?.strategy?.options ?? {});\n this.#debug = this.#strategyOptions.debug;\n\n let homeAssistantRegistries = []\n\n try {\n // Query the registries of Home Assistant.\n\n homeAssistantRegistries = await Promise.all([\n info.hass.callWS({ type: \"config/entity_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/device_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/area_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"config/floor_registry/list\" }) as Promise,\n info.hass.callWS({ type: \"frontend/get_icons\", category: \"entity_component\" }) as Promise,\n info.hass.callWS({ type: \"frontend/get_icons\", category: \"services\" }) as Promise,\n info.hass.callWS({ type: \"linus_dashboard/get_config\" }) as Promise,\n ]);\n\n } catch (e) {\n Helper.logError(\"An error occurred while querying Home assistant's registries!\", e);\n throw 'Check the console for details';\n }\n\n const [entities, devices, areas, floors, entity_component_icons, services_icons, linus_dashboard_config] = homeAssistantRegistries;\n\n this.#icons = deepmerge(entity_component_icons.resources, services_icons.resources);\n this.#linus_dashboard_config = linus_dashboard_config;\n\n // Dictionnaires pour un accès rapide\n const areasById = Object.fromEntries(areas.map(a => [a.area_id, a]));\n const floorsById = Object.fromEntries(floors.map(f => [f.floor_id, f]));\n const devicesByAreaIdMap = Object.fromEntries(devices.map(device => [device.id, device.area_id]));\n const entitiesByDeviceId: Record = {};\n const entitiesByAreaId: Record = {};\n const devicesByAreaId: Record = {};\n\n this.#entities = entities.reduce((acc, entity) => {\n\n if (!(entity.entity_id in this.#hassStates) || entity.hidden_by) return acc;\n\n const area = entity.area_id ? areasById[entity.area_id] : {} as StrategyArea;\n const floor = area?.floor_id ? floorsById[area?.floor_id] : {} as StrategyFloor;\n const enrichedEntity = {\n ...entity,\n floor_id: floor.floor_id || null,\n };\n\n acc[entity.entity_id] = enrichedEntity;\n\n if (entity.platform !== MAGIC_AREAS_DOMAIN) {\n const areaId = entity.area_id ?? devicesByAreaIdMap[entity.device_id ?? \"\"] ?? UNDISCLOSED;\n if (!entitiesByAreaId[areaId]) entitiesByAreaId[areaId] = [];\n entitiesByAreaId[areaId].push(enrichedEntity);\n }\n\n if (entity.device_id) {\n if (!entitiesByDeviceId[entity.device_id]) entitiesByDeviceId[entity.device_id] = [];\n entitiesByDeviceId[entity.device_id].push(enrichedEntity);\n }\n\n\n let domain = getEntityDomain(entity.entity_id)\n if (Object.keys(DEVICE_CLASSES).includes(domain)) {\n const entityState = Helper.getEntityState(entity.entity_id);\n if (entityState?.attributes?.device_class) domain = entityState.attributes.device_class\n }\n if (!this.#domains[domain]) this.#domains[domain] = [];\n if (entity.platform !== MAGIC_AREAS_DOMAIN) this.#domains[domain].push(enrichedEntity);\n\n return acc;\n }, {} as Record);\n\n // Enrichir les appareils\n this.#devices = devices.reduce((acc, device) => {\n const entitiesInDevice = entitiesByDeviceId[device.id] || [];\n const area = device.area_id ? areasById[device.area_id] : {} as StrategyArea;\n const floor = area?.floor_id ? floorsById[area?.floor_id] : {} as StrategyFloor;\n\n const enrichedDevice = {\n ...device,\n floor_id: floor.floor_id || null,\n entities: entitiesInDevice.map(entity => entity.entity_id),\n };\n\n acc[device.id] = enrichedDevice;\n\n if (device.manufacturer !== MAGIC_AREAS_NAME) {\n const areaId = device.area_id ?? UNDISCLOSED;\n if (!devicesByAreaId[areaId]) devicesByAreaId[areaId] = [];\n devicesByAreaId[areaId].push(enrichedDevice);\n }\n\n if (device.manufacturer === MAGIC_AREAS_NAME) {\n this.#magicAreasDevices[getMagicAreaSlug(device as MagicAreaRegistryEntry)] = {\n ...device,\n area_name: device.name!,\n entities: entitiesInDevice\n .reduce((entities: Record, entity) => {\n entities[entity.translation_key!] = entity;\n return entities;\n }, {})\n }\n }\n\n return acc;\n }, {} as Record);\n\n\n // Create and add the undisclosed area if not hidden in the strategy options.\n if (!this.#strategyOptions.areas.undisclosed?.hidden) {\n\n this.#strategyOptions.areas.undisclosed = {\n ...configurationDefaults.areas.undisclosed,\n ...this.#strategyOptions.areas.undisclosed,\n };\n\n areas.push(this.#strategyOptions.areas.undisclosed);\n }\n\n // Enrichir les zones\n this.#areas = areas.reduce((acc, area) => {\n\n const areaEntities = entitiesByAreaId[area.area_id]?.map(entity => entity.entity_id) || [];\n\n const slug = area.area_id === UNDISCLOSED ? area.area_id : slugify(area.name);\n\n const enrichedArea = {\n ...area,\n floor_id: area?.floor_id || UNDISCLOSED,\n slug,\n domains: groupEntitiesByDomain(areaEntities) ?? {},\n devices: devicesByAreaId[area.area_id]?.map(device => device.id) || [],\n magicAreaDevice: Object.values(this.#devices).find(device => device.manufacturer === MAGIC_AREAS_NAME && device.name === area.name),\n entities: areaEntities,\n };\n\n acc[slug] = enrichedArea;\n return acc;\n }, {} as Record);\n\n\n // Create and add the undisclosed floor if not hidden in the strategy options.\n if (!this.#strategyOptions.areas.undisclosed?.hidden) {\n\n this.#strategyOptions.floors.undisclosed = {\n ...configurationDefaults.floors.undisclosed,\n ...this.#strategyOptions.floors.undisclosed,\n };\n\n floors.push(this.#strategyOptions.floors.undisclosed);\n }\n\n // Enrichir les étages\n this.#floors = floors.reduce((acc, floor) => {\n const areasInFloor = Object.values(this.#areas).filter(area => area?.floor_id === floor.floor_id);\n\n acc[floor.floor_id] = {\n ...floor,\n areas_slug: areasInFloor.map(area => area.slug),\n };\n\n return acc;\n }, {} as Record);\n\n\n // Sort custom and default views of the strategy options by order first and then by title.\n this.#strategyOptions.views = Object.fromEntries(\n Object.entries(this.#strategyOptions.views).sort(([, a], [, b]) => {\n return (a.order ?? Infinity) - (b.order ?? Infinity) || (a.title ?? \"undefined\").localeCompare(b.title ?? \"undefined\");\n }),\n );\n\n // Sort custom and default domains of the strategy options by order first and then by title.\n this.#strategyOptions.domains = Object.fromEntries(\n Object.entries(this.#strategyOptions.domains).sort(([, a], [, b]) => {\n return (a.order ?? Infinity) - (b.order ?? Infinity) || (a.title ?? \"undefined\").localeCompare(b.title ?? \"undefined\");\n }),\n );\n\n // console.log('this.#areas', info, this.#areas, this.#magicAreasDevices)\n\n this.#initialized = true;\n }\n\n /**\n * Get the initialization status of the Helper class.\n *\n * @returns {boolean} True if this module is initialized.\n * @static\n */\n static isInitialized(): boolean {\n return this.#initialized;\n }\n\n /**\n * Get a template string to define the number of a given domain's entities with a certain state.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} domain The domain of the entities.\n * @param {string} operator The Comparison operator between state and value.\n * @param {string} value The value to which the state is compared against.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n static getCountTemplate(domain: string, operator: string, value: string | string[], area_slug?: string | string[]): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n if (slug) {\n const newStates = domain === \"all\"\n ? this.#areas[slug]?.entities.map((entity_id) => `states['${entity_id}']`)\n : this.#areas[slug]?.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n } else {\n for (const area of Object.values(this.#areas)) {\n if (area.area_id === UNDISCLOSED) continue;\n\n const newStates = domain === \"all\"\n ? area.entities.map((entity_id) => `states['${entity_id}']`)\n : area.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n }\n }\n\n const formatedValue = Array.isArray(value) ? JSON.stringify(value).replaceAll('\"', \"'\") : `'${value}'`;\n\n return `{% set entities = [${states}] %}{{ entities | selectattr('state','${operator}',${formatedValue}) | list | count }}`;\n }\n\n /**\n * Get a template string to define the number of a given device_class's entities with a certain state.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} domain The domain of the entities.\n * @param {string} device_class The device class of the entities.\n * @param {string} operator The Comparison operator between state and value.\n * @param {string} value The value to which the state is compared against.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n static getDeviceClassCountTemplate(device_class: string, operator: string, value: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const area_slugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of area_slugs) {\n const entities = area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n const formattedValue = Array.isArray(value) ? JSON.stringify(value).replace(/\"/g, \"'\") : `'${value}'`;\n return `{% set entities = [${states}] %}{{ entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | selectattr('state','${operator}',${formattedValue}) | list | count }}`;\n }\n\n /**\n * Get a template string to define the average state of sensor entities with a given device class.\n *\n * States are compared against a given value by a given operator.\n *\n * @param {string} device_class The device class of the entities.\n * @param {string} area_id\n *\n * @return {string} The template string.\n * @static\n */\n /**\n * Get a template string to define the average state of sensor entities with a given device class.\n *\n * @param {string} device_class The device class of the entities.\n * @param {string | string[]} area_slug The area slug(s) to filter entities by.\n *\n * @return {string} The template string.\n * @static\n */\n static getAverageStateTemplate(device_class: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n return `{% set entities = [${states}] %}{{ (entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length) | round(1) }} {{ ${states[0]}.attributes.unit_of_measurement }}`;\n }\n\n /**\n * Get device entities from the entity registry, filtered by area and domain.\n *\n * The entity registry is a registry where Home-Assistant keeps track of all entities.\n * A device is represented in Home Assistant via one or more entities.\n *\n * The result excludes hidden and disabled entities.\n *\n * @param {AreaRegistryEntry} area Area entity.\n * @param {string} domain The domain of the entity-id.\n *\n * @return {StrategyEntity[]} Array of device entities.\n * @static\n */\n static getAreaEntities(area: StrategyArea, domain?: string): StrategyEntity[] {\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n if (domain) {\n return area.domains[domain]?.map(entity_id => this.#entities[entity_id]) ?? []\n } else {\n return area.entities.map(entity_id => this.#entities[entity_id]) ?? []\n }\n }\n\n /**\n * Get state entities, filtered by area and domain.\n *\n * The result excludes hidden and disabled entities.\n *\n * @param {StrategyArea} area Area entity.\n * @param {string} domain Domain of the entity-id.\n *\n * @return {HassEntity[]} Array of state entities.\n */\n static getStateEntities(area: StrategyArea, domain: string): HassEntity[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n // Get states whose entity-id starts with the given string.\n const stateEntities = this.#areas[area.slug].domains[domain]?.map(entity_id => this.#hassStates[entity_id]);\n\n return stateEntities;\n }\n\n /**\n * Sanitize a classname.\n *\n * The name is sanitized by capitalizing the first character of the name or after an underscore.\n * Underscores are removed.\n *\n * @param {string} className Name of the class to sanitize.\n * @returns {string} The sanitized classname.\n */\n static sanitizeClassName(className: string): string {\n className = className.charAt(0).toUpperCase() + className.slice(1);\n\n return className.replace(/([-_][a-z])/g, (group) => group\n .toUpperCase()\n .replace(\"-\", \"\")\n .replace(\"_\", \"\"),\n );\n }\n\n /**\n * Get the ids of the views which aren't set to hidden in the strategy options.\n *\n * @return {string[]} An array of view ids.\n */\n static getExposedViewIds(): string[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n return this.#getObjectKeysByPropertyValue(this.#strategyOptions.views, \"hidden\", false);\n }\n\n /**\n * Get the ids of the domain ids which aren't set to hidden in the strategy options.\n *\n * @return {string[]} An array of domain ids.\n */\n static getExposedDomainIds(): string[] {\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n return this.#getObjectKeysByPropertyValue(this.#strategyOptions.domains, \"hidden\", false);\n }\n\n /**\n * Get the keys of nested objects by its property value.\n *\n * @param {Object} object An object of objects.\n * @param {string|number} property The name of the property to evaluate.\n * @param {*} value The value which the property should match.\n *\n * @return {string[]} An array with keys.\n */\n static #getObjectKeysByPropertyValue(\n object: { [k: string]: any },\n property: string, value: any\n ): string[] {\n const keys: string[] = [];\n\n for (const key of Object.keys(object)) {\n if (object[key][property] === value) {\n keys.push(key);\n }\n }\n\n return keys;\n }\n\n /**\n * Logs an error message to the console.\n *\n * @param {string} userMessage - The error message to display.\n * @param {unknown} [e] - (Optional) The error object or additional information.\n *\n * @return {void}\n */\n static logError(userMessage: string, e?: unknown): void {\n if (Helper.debug) {\n console.error(userMessage, e);\n\n return;\n }\n\n console.error(userMessage);\n }\n\n /**\n * Get entity state.\n *\n * @return {HassEntity}\n */\n static getEntityState(entity_id: string): HassEntity {\n return this.#hassStates[entity_id]\n }\n\n\n /**\n * Get translation.\n *\n * @return {string}\n */\n static localize(translationKey: string): string {\n return this.#hassLocalize(translationKey) ?? \"translation not found\";\n }\n\n /**\n * Get valid entity.\n *\n * @return {StrategyEntity}\n */\n static getValidEntity(entity: StrategyEntity): Boolean {\n return entity.disabled_by === null && entity.hidden_by === null\n }\n\n static getFromDomainState({ domain, operator, value, ifReturn, elseReturn, area_slug }: { domain: string, operator?: string, value?: string | string[], ifReturn?: string, elseReturn?: string, area_slug?: string | string[] }): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n if (slug) {\n const magic_entity = getMAEntity(slug!, domain);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(domain) : this.#areas[slug]?.domains[domain]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n } else {\n // Get the ID of the devices which are linked to the given area.\n for (const area of Object.values(this.#areas)) {\n if (area.area_id === UNDISCLOSED) continue\n\n const newStates = domain === \"all\"\n ? this.#areas[area.slug]?.entities.map((entity_id) => `states['${entity_id}']`)\n : this.#areas[area.slug]?.domains[domain]?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n }\n }\n\n if (domain === \"light\") {\n ifReturn = ifReturn ?? \"amber\";\n }\n if (domain === \"climate\") {\n operator = operator ?? \"ne\";\n value = value ?? \"off\";\n ifReturn = ifReturn ?? \"orange\";\n }\n if (domain === \"cover\") {\n value = value ?? \"open\";\n ifReturn = ifReturn ?? \"cyan\";\n }\n if (domain === \"fan\") {\n ifReturn = ifReturn ?? \"green\";\n }\n if (domain === \"media_player\") {\n value = value ?? \"playing\";\n ifReturn = ifReturn ?? \"dark-blue\";\n }\n if (domain === \"switch\") {\n ifReturn = ifReturn ?? \"blue\";\n }\n\n const formatedValue = Array.isArray(value) ? JSON.stringify(value).replaceAll('\"', \"'\") : `'${value ?? 'on'}'`;\n\n return `{% set entities = [${states}] %}{{ '${ifReturn ?? 'white'}' if entities | selectattr('state','${operator ?? 'eq'}', ${formatedValue}) | list | count > 0 else '${elseReturn ?? 'grey'}' }}`;\n }\n\n static getBinarySensorColorFromState(device_class: string, operator: string, value: string, ifReturn: string, elseReturn: string, area_slug: string | string[] = \"global\"): string {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"binary_sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n\n if (newStates) states.push(...newStates);\n }\n\n return `\n {% set entities = [${states}] %}\n {{ '${ifReturn}' if entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | selectattr('state','${operator}','${value}') | list | count else '${elseReturn}' }}`;\n }\n\n static getSensorColorFromState(device_class: string, area_slug: string | string[] = \"global\"): string | undefined {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n if (device_class === \"battery\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n red\n {% elif bl < 30 %}\n orange\n {% elif bl >= 30 %}\n green\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n if (device_class === \"temperature\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n blue\n {% elif bl < 30 %}\n orange\n {% elif bl >= 30 %}\n red\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n if (device_class === \"humidity\") {\n return `\n {% set entities = [${states}] %}\n {% set humidity = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if humidity < 30 %}\n blue\n {% elif humidity >= 30 and humidity <= 60 %}\n green\n {% else %}\n red\n {% endif %}\n `;\n }\n\n return undefined;\n }\n\n static getSensorIconFromState(device_class: string, area_slug: string | string[] = \"global\"): string | undefined {\n const states: string[] = [];\n\n if (!this.isInitialized()) {\n console.warn(\"Helper class should be initialized before calling this method!\");\n }\n\n const areaSlugs = Array.isArray(area_slug) ? area_slug : [area_slug];\n\n for (const slug of areaSlugs) {\n const magic_entity = getMAEntity(slug!, \"sensor\", device_class);\n const entities = magic_entity ? [magic_entity.entity_id] : area_slug === \"global\" ? getGlobalEntitiesExceptUndisclosed(device_class) : this.#areas[slug]?.domains[device_class]\n const newStates = entities?.map((entity_id) => `states['${entity_id}']`);\n if (newStates) states.push(...newStates);\n }\n\n if (device_class === \"battery\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl == 'unknown' or bl == 'unavailable' %}\n {% elif bl < 10 %} mdi:battery-outline\n {% elif bl < 20 %} mdi:battery-10\n {% elif bl < 30 %} mdi:battery-20\n {% elif bl < 40 %} mdi:battery-30\n {% elif bl < 50 %} mdi:battery-40\n {% elif bl < 60 %} mdi:battery-50\n {% elif bl < 70 %} mdi:battery-60\n {% elif bl < 80 %} mdi:battery-70\n {% elif bl < 90 %} mdi:battery-80\n {% elif bl < 100 %} mdi:battery-90\n {% elif bl == 100 %} mdi:battery\n {% else %} mdi:battery{% endif %}\n `;\n }\n\n if (device_class === \"temperature\") {\n return `\n {% set entities = [${states}] %}\n {% set bl = entities | selectattr('attributes.device_class', 'defined') | selectattr('attributes.device_class', 'eq', '${device_class}') | map(attribute='state') | map('float') | sum / entities | length %}\n {% if bl < 20 %}\n mdi:thermometer-low\n {% elif bl < 30 %}\n mdi:thermometer\n {% elif bl >= 30 %}\n mdi:thermometer-high\n {% else %}\n disabled\n {% endif %}\n `;\n }\n\n return undefined;\n }\n}\n\nexport { Helper };\n","import { Helper } from \"../Helper\";\nimport { cards } from \"../types/strategy/cards\";\nimport { generic } from \"../types/strategy/generic\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Abstract Card Class\n *\n * To create a new card, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractCard {\n /**\n * Entity to create the card for.\n *\n * @type {generic.RegistryEntry}\n */\n entity: generic.RegistryEntry;\n\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:help-circle\",\n };\n\n /**\n * Class constructor.\n *\n * @param {generic.RegistryEntry} entity The hass entity to create a card for.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor(entity: generic.RegistryEntry) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.entity = entity;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n return {\n ...this.config,\n entity: this.entity && \"entity_id\" in this.entity ? this.entity.entity_id : undefined,\n };\n }\n}\n\nexport { AbstractCard };\n","import { StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\nimport { getAggregateEntity, getAreaName, getFloorName, getStateContent, groupBy } from \"../utils\";\nimport { Helper } from \"../Helper\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { UNDISCLOSED } from \"../variables\";\n\ninterface AggregateCardConfig {\n title?: string;\n subtitle?: string;\n device_name?: string;\n device_class?: string | string[];\n}\n\n/**\n * Aggregate Card class.\n *\n * Used for creating a Title Card with controls.\n *\n * @class\n */\nclass AggregateCard {\n /**\n * @type {string} The domain to control the entities of.\n * @private\n */\n readonly #domain: string;\n\n /**\n * Default configuration of the card.\n *\n * @type {AggregateCardConfig}\n * @private\n */\n readonly #defaultConfig: AggregateCardConfig = {\n device_name: \"Global\",\n };\n\n /**\n * Class constructor.\n *\n * @param {string} domain The domain to control the entities of.\n * @param {AggregateCardConfig} options Aggregate Card options.\n */\n constructor(domain: string, options: AggregateCardConfig = {}) {\n this.#domain = domain;\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...options,\n };\n }\n\n /**\n * Create a Aggregate card.\n *\n * @return {StackCardConfig} A Aggregate card.\n */\n createCard(): StackCardConfig {\n\n const domains = typeof (this.#domain) === \"string\" ? [this.#domain] : this.#domain;\n const deviceClasses = this.#defaultConfig.device_class && typeof (this.#defaultConfig.device_class) === \"string\" ? [this.#defaultConfig.device_class] : this.#defaultConfig.device_class;\n\n const cards: LovelaceCardConfig[] = [];\n\n const globalEntities = getAggregateEntity(Helper.magicAreasDevices[\"global\"], domains, deviceClasses)[0] ?? false\n\n if (globalEntities) {\n cards.push({\n type: \"tile\",\n entity: globalEntities.entity_id,\n state_content: getStateContent(globalEntities.entity_id),\n color: globalEntities.entity_id.startsWith('binary_sensor.') ? 'red' : false,\n icon_tap_action: this.#domain === \"light\" ? \"more-info\" : \"toggle\",\n });\n }\n\n\n\n for (const floor of Helper.orderedFloors) {\n if (floor.areas_slug.length === 0) continue\n\n let floorCards: (TemplateCardConfig)[] = [];\n floorCards.push({\n type: \"custom:mushroom-title-card\",\n subtitle: getFloorName(floor),\n card_mod: {\n style: `\n ha-card.header {\n padding-top: 8px;\n }\n `,\n }\n });\n\n let areaCards: (TemplateCardConfig)[] = [];\n\n for (const [i, area] of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).entries()) {\n\n if (Helper.strategyOptions.areas[area?.slug]?.hidden) continue\n\n if (area.slug !== UNDISCLOSED) {\n const areaEntities = getAggregateEntity(Helper.magicAreasDevices[area.slug], domains, deviceClasses).map(e => e.entity_id).filter(Boolean)\n\n for (const areaEntity of areaEntities) {\n areaCards.push({\n type: \"tile\",\n entity: areaEntity,\n primary: getAreaName(area),\n state_content: getStateContent(areaEntity),\n color: areaEntity.startsWith('binary_sensor.') ? 'red' : false,\n });\n }\n }\n\n // Horizontally group every two area cards if all cards are created.\n if (i === floor.areas_slug.length - 1) {\n for (let i = 0; i < areaCards.length; i += 2) {\n floorCards.push({\n type: \"horizontal-stack\",\n cards: areaCards.slice(i, i + 2),\n });\n }\n }\n\n }\n\n if (areaCards.length === 0) floorCards.pop()\n\n if (floorCards.length > 1) cards.push(...floorCards)\n\n }\n\n return {\n type: \"vertical-stack\",\n cards: cards,\n };\n }\n}\n\nexport { AggregateCard };\n","import { AbstractCard } from \"./AbstractCard\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { TileCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Alarm Card Class\n *\n * Used to create a card for controlling an entity of the fan domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass AlarmCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {TileCardConfig}\n * @private\n */\n #defaultConfig: TileCardConfig = {\n type: \"tile\",\n entity: undefined,\n icon: undefined,\n features: [\n {\n type: \"alarm-modes\",\n modes: [\"armed_home\", \"armed_away\", \"armed_night\", \"armed_vacation\", \"armed_custom_bypass\", \"disarmed\"]\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { AlarmCard };\n","import { SensorCard } from \"./SensorCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Sensor Card Class\n *\n * Used to create a card for controlling an entity of the binary_sensor domain.\n *\n * @class\n * @extends SensorCard\n */\nclass BinarySensorCard extends SensorCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n state_content: \"last_changed\",\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { BinarySensorCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {PictureEntityCardConfig} from \"../types/homeassistant/panels/lovelave/cards/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Camera Card Class\n *\n * Used to create a card for controlling an entity of the camera domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass CameraCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {PictureEntityCardConfig}\n * @private\n */\n #defaultConfig: PictureEntityCardConfig = {\n entity: \"\",\n type: \"picture-entity\",\n show_name: false,\n show_state: false,\n camera_view: \"live\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.PictureEntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.PictureEntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {CameraCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { ClimateCardConfig } from \"../types/lovelace-mushroom/cards/climate-card-config\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Card Class\n *\n * Used to create a card for controlling an entity of the climate domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass ClimateCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {ClimateCardConfig}\n * @private\n */\n #defaultConfig: ClimateCardConfig = {\n type: \"tile\",\n icon: undefined,\n show_current_as_primary: true,\n vertical: false,\n features: [\n ],\n\n layout_options: {\n grid_columns: 2,\n grid_rows: 1,\n },\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.ClimateCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.ClimateCardOptions = {}) {\n super(entity);\n\n const { preset_modes, hvac_modes, fan_modes } = Helper.getEntityState(entity.entity_id)?.attributes ?? {};\n\n if (preset_modes) {\n this.#defaultConfig.features.push({\n type: \"climate-preset-modes\",\n preset_modes: preset_modes\n });\n } else if (hvac_modes) {\n this.#defaultConfig.features.push({\n type: \"climate-hvac-modes\",\n hvac_modes: hvac_modes\n });\n } else if (fan_modes) {\n this.#defaultConfig.features.push({\n type: \"climate-fan-modes\",\n fan_modes: fan_modes\n });\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { ClimateCard };\n","import { cards } from \"../types/strategy/cards\";\nimport { LovelaceBadgeConfig, LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\nimport { Helper } from \"../Helper\";\nimport { getMAEntity, navigateTo } from \"../utils\";\n\n/**\n * Controller Card class.\n *\n * Used for creating a Title Card with controls.\n *\n * @class\n */\nclass ControllerCard {\n\n /**\n * @type {string} The target to control the entities of.\n * @private\n */\n readonly #domain: string;\n\n /**\n * @type {string} The target to control the entities of.\n * @private\n */\n readonly #magic_device_id: string;\n\n /**\n * Default configuration of the card.\n *\n * @type {cards.ControllerCardConfig}\n * @private\n */\n readonly #defaultConfig: cards.ControllerCardConfig = {\n type: \"custom:mushroom-title-card\",\n showControls: true,\n iconOn: \"mdi:power-on\",\n iconOff: \"mdi:power-off\",\n onService: \"none\",\n offService: \"none\",\n };\n\n /**\n * Class constructor.\n *\n * @param {cards.ControllerCardOptions} options Controller Card options.\n */\n constructor(options: cards.ControllerCardOptions = {}, domain: string, magic_device_id: string = \"global\") {\n this.#domain = domain;\n this.#magic_device_id = magic_device_id;\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...options,\n };\n }\n\n /**\n * Create a Controller card.\n *\n * @return {LovelaceCardConfig[]} A Controller card.\n */\n createCard(): LovelaceCardConfig[] {\n const cards: LovelaceCardConfig[] = [];\n\n if (this.#defaultConfig.title) {\n cards.push({\n type: \"heading\",\n heading: this.#defaultConfig.title ?? \"No title\",\n icon: this.#defaultConfig.titleIcon,\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n ...(this.#defaultConfig.titleNavigate && {\n tap_action: navigateTo(this.#defaultConfig.titleNavigate)\n })\n })\n }\n\n if (this.#defaultConfig.subtitle) {\n cards.push({\n type: \"heading\",\n heading_style: \"subtitle\",\n badges: [],\n heading: this.#defaultConfig.subtitle,\n icon: this.#defaultConfig.subtitleIcon,\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n ...(this.#defaultConfig.subtitleNavigate && {\n tap_action: this.#defaultConfig.tap_action ?? navigateTo(this.#defaultConfig.subtitleNavigate),\n })\n })\n }\n\n if (this.#defaultConfig.showControls || this.#defaultConfig.extraControls) {\n\n const magic_device = Helper.magicAreasDevices[this.#magic_device_id ?? \"\"]\n const badges: LovelaceBadgeConfig[] = [];\n\n if (this.#defaultConfig.showControls) {\n\n const chipModule = Helper.strategyOptions.domains[this.#domain]?.controlChip;\n const chipOptions = {\n show_content: true,\n magic_device_id: this.#magic_device_id,\n tap_action: { action: \"more-info\" },\n ...this.#defaultConfig.controlChipOptions,\n };\n const chip = typeof chipModule === 'function' && new chipModule(chipOptions).getChip();\n\n badges.push({\n type: \"custom:mushroom-chips-card\",\n chips: [chip],\n alignment: \"end\",\n card_mod: this.#domain === \"sensor\" && {\n style: `\n ha-card {\n min-width: 100px;\n }\n `,\n }\n });\n }\n\n if (magic_device && this.#defaultConfig.extraControls) {\n badges.push(...this.#defaultConfig.extraControls(magic_device)?.map((chip: any) => {\n return {\n type: \"custom:mushroom-chips-card\",\n chips: [chip]\n }\n }));\n }\n\n if (cards[0]?.badges && badges.length) {\n cards[0].badges = badges;\n }\n }\n\n return cards;\n }\n}\n\nexport { ControllerCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {CoverCardConfig} from \"../types/lovelace-mushroom/cards/cover-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover Card Class\n *\n * Used to create a card for controlling an entity of the cover domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass CoverCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {CoverCardConfig}\n * @private\n */\n #defaultConfig: CoverCardConfig = {\n type: \"tile\",\n icon: undefined,\n features: [\n {\n type: \"cover-open-close\"\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.CoverCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.CoverCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {CoverCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {FanCardConfig} from \"../types/lovelace-mushroom/cards/fan-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan Card Class\n *\n * Used to create a card for controlling an entity of the fan domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass FanCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {FanCardConfig}\n * @private\n */\n #defaultConfig: FanCardConfig = {\n type: \"tile\",\n icon: undefined,\n features:[\n {\n type: \"fan-speed\"\n }\n ]\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.FanCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.FanCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {FanCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\nimport { SwipeCard } from \"./SwipeCard\";\nimport { SwipeCardConfig } from \"../types/lovelace-mushroom/cards/swipe-card-config\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Grouped Card Class\n *\n * Used to create a card for controlling an entity of the light domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass GroupedCard {\n\n /**\n * Configuration of the card.\n *\n * @type {AbstractCard}\n */\n config: { cards: (AbstractCard | EntityCardConfig)[] } = {\n cards: [],\n };\n\n /**\n * Class constructor.\n *\n * @param {AbstractCard[]} cards The hass entity to create a card for.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(cards: (AbstractCard | EntityCardConfig)[]) {\n\n this.config.cards = cards;\n }\n\n /**\n * Get a card.\n *\n * @return {AbstractCard} A card object.\n */\n getCard(): EntityCardConfig | SwipeCardConfig {\n\n // Group entity cards into pairs and create vertical stacks\n const groupedEntityCards = [];\n for (let i = 0; i < this.config.cards.length; i += 2) {\n groupedEntityCards.push({\n type: \"vertical-stack\",\n cards: this.config.cards.slice(i, i + 2),\n });\n }\n\n // If there are more than 2 groups, use a GroupedCard, otherwise use a horizontal stack\n const groupedCards = groupedEntityCards.length > 2\n ? new SwipeCard(groupedEntityCards).getCard()\n : {\n type: \"horizontal-stack\",\n cards: groupedEntityCards,\n }\n\n return groupedCards;\n }\n}\n\nexport { GroupedCard };\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { Helper } from \"../Helper\";\nimport { ControlChip } from \"../chips/ControlChip\";\nimport { AggregateChip } from \"../chips/AggregateChip\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { getAreaName, getMAEntity, slugify } from \"../utils\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { ClimateChip } from \"../chips/ClimateChip\";\nimport { LightChip } from \"../chips/LightChip\";\nimport { ConditionalChip } from \"../chips/ConditionalChip\";\nimport { UNAVAILABLE, UNDISCLOSED } from \"../variables\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// Utility function to generate badge icon and color\nconst getBadgeIcon = (entityId: string) => `\n {% set bl = states('${entityId}') %}\n {% if bl == 'unknown' or bl == 'unavailable' %}\n {% elif bl | int() < 10 %} mdi:battery-outline\n {% elif bl | int() < 20 %} mdi:battery-10\n {% elif bl | int() < 30 %} mdi:battery-20\n {% elif bl | int() < 40 %} mdi:battery-30\n {% elif bl | int() < 50 %} mdi:battery-40\n {% elif bl | int() < 60 %} mdi:battery-50\n {% elif bl | int() < 70 %} mdi:battery-60\n {% elif bl | int() < 80 %} mdi:battery-70\n {% elif bl | int() < 90 %} mdi:battery-80\n {% elif bl | int() < 100 %} mdi:battery-90\n {% elif bl | int() == 100 %} mdi:battery\n {% else %} mdi:battery-unknown\n {% endif %}\n`;\n\nconst getBadgeColor = (entityId: string) => `\n {% set bl = states('${entityId}') %}\n {% if bl == 'unknown' or bl == 'unavailable' %} disabled\n {% elif bl | int() < 10 %} red\n {% elif bl | int() < 20 %} red\n {% elif bl | int() < 30 %} red\n {% elif bl | int() < 40 %} orange\n {% elif bl | int() < 50 %} orange\n {% elif bl | int() < 60 %} green\n {% elif bl | int() < 70 %} green\n {% elif bl | int() < 80 %} green\n {% elif bl | int() < 90 %} green\n {% elif bl | int() == 100 %} green\n {% else %} disabled\n {% endif %}\n`;\n\nclass HomeAreaCard {\n /**\n * Magic area device to create the card for.\n *\n * @type {MagicAreaRegistryEntry}\n */\n magicDevice: MagicAreaRegistryEntry\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyArea}\n * @private\n */\n area: StrategyArea\n\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:help-circle\",\n };\n\n constructor(options: cards.HomeAreaCardOptions) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.magicDevice = Helper.magicAreasDevices[options.area_slug];\n this.area = Helper.areas[options.area_slug];\n\n this.config = { ...this.config, ...options };\n }\n\n getDefaultConfig(area: StrategyArea): TemplateCardConfig {\n\n const { all_lights } = this.magicDevice?.entities || {};\n const icon = area.icon || \"mdi:home-outline\";\n\n const cards = [\n this.getMainCard(),\n ];\n\n cards.push(this.getChipsCard());\n\n if (all_lights) {\n cards.push(this.getLightCard(all_lights));\n }\n\n return {\n type: \"custom:stack-in-card\",\n cards: cards\n };\n }\n\n getUndisclosedAreaConfig(area: StrategyArea): TemplateCardConfig {\n return {\n type: \"custom:mushroom-template-card\",\n primary: getAreaName(area),\n icon: \"mdi:devices\",\n icon_color: \"grey\",\n fill_container: true,\n layout: \"horizontal\",\n tap_action: { action: \"navigate\", navigation_path: area.slug },\n card_mod: { style: this.getCardModStyle() }\n };\n }\n\n getMainCard(): any {\n\n const { area_state, aggregate_temperature, aggregate_battery } = this.magicDevice?.entities || {};\n const icon = this.area.icon || \"mdi:home-outline\";\n\n return {\n type: \"custom:mushroom-template-card\",\n primary: getAreaName(this.area),\n secondary: aggregate_temperature && this.getTemperatureTemplate(aggregate_temperature),\n icon: icon,\n icon_color: this.getIconColorTemplate(area_state),\n fill_container: true,\n layout: \"horizontal\",\n badge_icon: getBadgeIcon(aggregate_battery?.entity_id),\n badge_color: getBadgeColor(aggregate_battery?.entity_id),\n tap_action: { action: \"navigate\", navigation_path: this.area.slug },\n card_mod: { style: this.getCardModStyle() }\n };\n }\n\n getChipsCard(): any {\n\n const { light_control, aggregate_health, aggregate_window, aggregate_door, aggregate_cover, aggregate_climate } = this.magicDevice?.entities || {};\n const { motion, occupancy, presence, window, climate, door, cover, health, light } = this.area.domains;\n\n return {\n type: \"custom:mushroom-chips-card\",\n alignment: \"end\",\n chips: [\n (motion || occupancy || presence) && new AreaStateChip({ area: this.area }).getChip(),\n health && new ConditionalChip(\n aggregate_health ? [{ entity: aggregate_health?.entity_id, state: \"on\" }] : health.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ device_class: \"health\" }).getChip()\n ).getChip(),\n window?.length && new ConditionalChip(\n aggregate_window ? [{ entity: aggregate_window?.entity_id, state: \"on\" }] : window.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"window\", show_content: false }).getChip()\n ).getChip(),\n door && new ConditionalChip(\n aggregate_door ? [{ entity: aggregate_door?.entity_id, state: \"on\" }] : door.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"door\", show_content: false }).getChip()\n ).getChip(),\n cover && new ConditionalChip(\n aggregate_cover ? [{ entity: aggregate_cover?.entity_id, state: \"on\" }] : cover.map(entity => ({ entity, state: \"on\" })),\n new AggregateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug, device_class: \"cover\", show_content: false }).getChip()\n ).getChip(),\n climate && new ClimateChip({ magic_device_id: this.area.slug, area_slug: this.area.slug }).getChip(),\n light && new LightChip({ area_slug: this.area.slug, magic_device_id: this.area.slug, tap_action: { action: \"toggle\" } }).getChip(),\n new ConditionalChip(\n [{ entity: this.magicDevice?.entities?.all_lights?.entity_id, state_not: UNAVAILABLE }],\n new ControlChip(\"light\", light_control?.entity_id).getChip()\n ).getChip()\n ].filter(Boolean),\n card_mod: { style: this.getChipsCardModStyle() }\n };\n }\n\n getLightCard(all_lights: EntityRegistryEntry): any {\n return {\n type: \"tile\",\n features: [{ type: \"light-brightness\" }],\n hide_state: true,\n entity: all_lights.entity_id,\n card_mod: { style: this.getLightCardModStyle() }\n };\n }\n\n getTemperatureTemplate(aggregate_temperature: EntityRegistryEntry): string {\n if (!aggregate_temperature) return Helper.getAverageStateTemplate(\"temperature\");\n return `\n {% set t = states('${aggregate_temperature?.entity_id}') %}\n {% if t != 'unknown' and t != 'unavailable' %}\n {{ t | float | round(1) }}{{ state_attr('${aggregate_temperature?.entity_id}', 'unit_of_measurement')}}\n {% endif %}\n `;\n }\n\n getIconColorTemplate(area_state: EntityRegistryEntry): string {\n const condition = area_state?.entity_id ? `\"dark\" in state_attr('${area_state?.entity_id}', 'states')` : `not is_state(\"sun.sun\", \"above_horizon\")`;\n return `\n {{ \"indigo\" if ${condition} else \"amber\" }}\n `;\n }\n\n getCardModStyle(): string {\n return `\n :host {\n background: #1f1f1f;\n height: 66px;\n }\n mushroom-badge-icon {\n left: 24px;\n top: 0px;\n }\n ha-card {\n box-shadow: none!important;\n border: none;\n }\n ha-state-icon {\n --icon-symbol-size: 40px;\n }\n\n `;\n }\n\n getChipsCardModStyle(): string {\n return `\n ha-card {\n --chip-box-shadow: none;\n --chip-spacing: 0px;\n width: -webkit-fill-available;\n margin-top: -12px;\n }\n `;\n }\n\n getLightCardModStyle(): string {\n return `\n ha-card {\n box-shadow: none!important;\n border: none;\n margin-top: -12px;\n }\n ha-tile-icon {\n display: none;\n }\n ha-tile-info {\n display: none;\n }\n `;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n const defaultConfig = this.area.slug === UNDISCLOSED ? this.getUndisclosedAreaConfig(this.area) : this.getDefaultConfig(this.area);\n const magicAreasEntity: EntityRegistryEntry = getMAEntity(this.magicDevice?.id, \"area_state\") as EntityRegistryEntry;\n\n return {\n ...defaultConfig,\n entity: magicAreasEntity ? magicAreasEntity.entity_id : undefined,\n };\n }\n}\n\nexport { HomeAreaCard };\n","import { cards } from \"../types/strategy/cards\";\nimport { LovelaceCardConfig } from \"../types/homeassistant/data/lovelace\";\n\n\nexport interface ImageAreaCardConfig extends LovelaceCardConfig {\n type: \"area\";\n area: string;\n show_camera: boolean;\n alert_classes?: string[];\n sensor_classes?: string[];\n card_mod?: {\n style: string;\n };\n}\n\n/**\n * Scene Card Class\n *\n * Used to create a card for an entity of the Scene domain.\n *\n * @class\n */\nclass ImageAreaCard {\n /**\n * Configuration of the card.\n *\n * @type {EntityCardConfig}\n */\n config: ImageAreaCardConfig = {\n type: \"area\",\n area: \"\",\n show_camera: true,\n alert_classes: [],\n sensor_classes: [],\n card_mod: {\n style: `\n .sensors {\n display: none;\n }\n .buttons {\n display: none;\n }\n `\n }\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(area_slug: string) {\n\n this.config.area = area_slug;\n }\n\n /**\n * Get a card.\n *\n * @return {cards.AbstractCardConfig} A card object.\n */\n getCard(): cards.AbstractCardConfig {\n return this.config;\n }\n}\n\nexport { ImageAreaCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {LightCardConfig} from \"../types/lovelace-mushroom/cards/light-card-config\";\nimport {generic} from \"../types/strategy/generic\";\nimport isCallServiceActionConfig = generic.isCallServiceActionConfig;\nimport isCallServiceActionTarget = generic.isCallServiceActionTarget;\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Card Class\n *\n * Used to create a card for controlling an entity of the light domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass LightCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {LightCardConfig}\n * @private\n */\n #defaultConfig: LightCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.LightCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.LightCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {LightCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {LockCardConfig} from \"../types/lovelace-mushroom/cards/lock-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Lock Card Class\n *\n * Used to create a card for controlling an entity of the lock domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass LockCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {LockCardConfig}\n * @private\n */\n #defaultConfig: LockCardConfig = {\n type: \"custom:mushroom-lock-card\",\n icon: undefined,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.LockCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.LockCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {LockCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {MediaPlayerCardConfig} from \"../types/lovelace-mushroom/cards/media-player-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Mediaplayer Card Class\n *\n * Used to create a card for controlling an entity of the media_player domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass MediaPlayerCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {MediaPlayerCardConfig}\n * @private\n */\n #defaultConfig: MediaPlayerCardConfig = {\n type: \"custom:mushroom-media-player-card\",\n use_media_info: true,\n media_controls: [\n \"on_off\",\n \"play_pause_stop\",\n ],\n show_volume_level: true,\n volume_controls: [\n \"volume_mute\",\n \"volume_set\",\n \"volume_buttons\",\n ],\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.MediaPlayerCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.MediaPlayerCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {MediaPlayerCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Miscellaneous Card Class\n *\n * Used to create a card an entity of any domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass MiscellaneousCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {MiscellaneousCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {NumberCardConfig} from \"../types/lovelace-mushroom/cards/number-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported\n/**\n * Number Card Class\n *\n * Used to create a card for controlling an entity of the number domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass NumberCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {NumberCardConfig}\n * @private\n */\n #defaultConfig: NumberCardConfig = {\n type: \"custom:mushroom-number-card\",\n icon: undefined,\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.NumberCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.NumberCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {NumberCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { cards } from \"../types/strategy/cards\";\nimport { EntityRegistryEntry } from \"../types/homeassistant/data/entity_registry\";\nimport { PersonCardConfig } from \"../types/lovelace-mushroom/cards/person-card-config\";\n\n/**\n * Person Card Class\n *\n * Used to create a card for an entity of the Person domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass PersonCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {PersonCardConfig}\n * @private\n */\n #defaultConfig: PersonCardConfig = {\n type: \"custom:mushroom-person-card\",\n icon_type: \"entity-picture\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.PersonCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.PersonCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { PersonCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport { SceneCardConfig } from \"../types/lovelace-mushroom/cards/scene-card-config\";\n\n/**\n * Scene Card Class\n *\n * Used to create a card for an entity of the Scene domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SceneCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {SceneCardConfig}\n * @private\n */\n #defaultConfig: SceneCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n icon_type: \"entity-picture\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.SceneCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.SceneCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SceneCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n/**\n * Sensor Card Class\n *\n * Used to create a card for controlling an entity of the sensor domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SensorCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"custom:mushroom-entity-card\",\n icon: \"mdi:information\",\n animate: true,\n line_color: \"green\",\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SensorCard};\n","import { AbstractCard } from \"./AbstractCard\";\nimport { SwipeCardConfig } from \"../types/lovelace-mushroom/cards/swipe-card-config\";\nimport { SwiperOptions } from \"swiper/types/swiper-options\";\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Swipe Card Class\n *\n * Used to create a card for controlling an entity of the light domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SwipeCard {\n\n /**\n * Configuration of the card.\n *\n * @type {SwipeCardConfig}\n */\n config: SwipeCardConfig = {\n type: \"custom:swipe-card\",\n start_card: 1,\n parameters: {\n centeredSlides: false,\n followFinger: true,\n spaceBetween: 16,\n grabCursor: true,\n },\n cards: [],\n };\n\n /**\n * Class constructor.\n *\n * @param {AbstractCard[]} cards The hass entity to create a card for.\n * @param {SwiperOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(cards: (AbstractCard | EntityCardConfig)[], options?: SwiperOptions) {\n\n this.config.cards = cards;\n\n const multipleSlicesPerView = 2.2\n const slidesPerView = cards.length > 2 ? multipleSlicesPerView : cards.length ?? 1\n\n this.config.parameters = { ...this.config.parameters, slidesPerView, ...options };\n }\n\n /**\n * Get a card.\n *\n * @return {SwipeCardConfig} A card object.\n */\n getCard(): SwipeCardConfig {\n return this.config;\n }\n}\n\nexport { SwipeCard };\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {EntityCardConfig} from \"../types/lovelace-mushroom/cards/entity-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch Card Class\n *\n * Used to create a card for controlling an entity of the switch domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass SwitchCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {EntityCardConfig}\n * @private\n */\n #defaultConfig: EntityCardConfig = {\n type: \"tile\",\n icon: undefined,\n vertical: false,\n tap_action: {\n action: \"toggle\",\n },\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.EntityCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.EntityCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SwitchCard};\n","import {AbstractCard} from \"./AbstractCard\";\nimport {cards} from \"../types/strategy/cards\";\nimport {EntityRegistryEntry} from \"../types/homeassistant/data/entity_registry\";\nimport {VACUUM_COMMANDS, VacuumCardConfig} from \"../types/lovelace-mushroom/cards/vacuum-card-config\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Vacuum Card Class\n *\n * Used to create a card for controlling an entity of the vacuum domain.\n *\n * @class\n * @extends AbstractCard\n */\nclass VacuumCard extends AbstractCard {\n /**\n * Default configuration of the card.\n *\n * @type {VacuumCardConfig}\n * @private\n */\n #defaultConfig: VacuumCardConfig = {\n type: \"custom:mushroom-vacuum-card\",\n icon: undefined,\n icon_animation: true,\n commands: [...VACUUM_COMMANDS],\n tap_action: {\n action: \"more-info\",\n }\n };\n\n /**\n * Class constructor.\n *\n * @param {EntityRegistryEntry} entity The hass entity to create a card for.\n * @param {cards.VacuumCardOptions} [options={}] Options for the card.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor(entity: EntityRegistryEntry, options: cards.VacuumCardOptions = {}) {\n super(entity);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {VacuumCard};\n","import { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport isCallServiceActionConfig = generic.isCallServiceActionConfig;\n\n/**\n * Abstract Chip class.\n *\n * To create a new chip, extend this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractChip {\n /**\n * Configuration of the chip.\n *\n * @type {LovelaceChipConfig}\n */\n config: LovelaceChipConfig = {\n type: \"template\"\n };\n\n /**\n * Class Constructor.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the chip.\n *\n * @returns {LovelaceChipConfig} A chip.\n */\n getChip(): LovelaceChipConfig {\n return this.config;\n }\n\n /**\n * Set the target to switch.\n *\n * @param {HassServiceTarget} target Target to switch.\n */\n setTapActionTarget(target: HassServiceTarget) {\n if (\"tap_action\" in this.config && isCallServiceActionConfig(this.config.tap_action)) {\n this.config.tap_action.target = target;\n\n return;\n }\n\n if (Helper.debug) {\n console.warn(\n this.constructor.name\n + \" - Target not set: Invalid target or tap action.\");\n }\n }\n}\n\nexport { AbstractChip };\n","import { chips } from \"../types/strategy/chips\";\nimport { DEVICE_CLASSES } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass AggregateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig | undefined}\n *\n */\n getDefaultConfig({ device_class, show_content = true, magic_device_id = \"global\", area_slug, tap_action }: chips.AggregateChipOptions) {\n\n const domain = DEVICE_CLASSES.sensor.includes(device_class) ? \"sensor\" : \"binary_sensor\"\n let icon = device_class !== \"motion\" ? Helper.icons[domain][device_class]?.default : Helper.icons[domain][device_class]?.state?.on\n let icon_color = \"\"\n let content = \"\"\n\n const device = Helper.magicAreasDevices[magic_device_id]\n const magicEntity = device?.entities[`aggregate_${device_class}`]\n\n if (domain === \"binary_sensor\") {\n content = show_content ? Helper.getDeviceClassCountTemplate(device_class, \"eq\", \"on\", area_slug) : \"\"\n icon_color = Helper.getBinarySensorColorFromState(device_class, \"eq\", \"on\", \"red\", \"grey\", area_slug)\n }\n\n if (domain === \"sensor\") {\n\n content = show_content ? Helper.getAverageStateTemplate(device_class, area_slug) : \"\"\n icon_color = Helper.getSensorColorFromState(device_class, area_slug!) ?? \"white\"\n icon = Helper.getSensorIconFromState(device_class, area_slug!) ?? icon\n\n if (device_class === \"illuminance\") {\n if (magicEntity) {\n icon_color = `{{ 'blue' if 'dark' in state_attr('${device?.entities.area_state?.entity_id}', 'states') else 'amber' }}`\n }\n }\n }\n\n if (device_class === \"cover\") {\n\n if (magicEntity) {\n icon_color = `{{ 'red' if is_state('${magicEntity.entity_id}', 'open') else 'grey' }}`\n content = show_content ? Helper.getDeviceClassCountTemplate(device_class, \"eq\", \"open\", area_slug) : \"\"\n }\n }\n\n if (device_class === \"health\") {\n icon_color = `{{ 'red' if is_state(entity, 'on') else 'green' }}`\n }\n\n return {\n entity: magicEntity?.entity_id,\n icon_color,\n icon,\n content: content,\n tap_action: tap_action ?? { action: \"none\" }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.AggregateChipOptions} options The chip options.\n */\n constructor(options: chips.AggregateChipOptions) {\n super();\n\n const defaultConfig = this.getDefaultConfig(options)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AggregateChip };\n","import { chips } from \"../types/strategy/chips\";\nimport { AlarmChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { navigateTo } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols False positive.\n/**\n * Alarm Chip class.\n *\n * Used to create a chip for showing the alarm.\n */\nclass AlarmChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @private\n * @readonly\n */\n readonly #defaultConfig: AlarmChipConfig = {\n type: \"alarm-control-panel\",\n tap_action: navigateTo('security')\n };\n\n /**\n * Class Constructor.\n *\n * @param {string} entityId Id of a alarm entity.\n * @param {chips.AlarmChipOptions} options Alarm Chip options.\n */\n constructor(entityId: string, options: chips.AlarmChipOptions = {}) {\n super();\n this.#defaultConfig = {\n ...this.#defaultConfig,\n ...{ entity: entityId },\n ...options,\n };\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { AlarmChip };\n","\nimport { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport StrategyArea = generic.StrategyArea;\nimport { LovelaceChipConfig, TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { MAGIC_AREAS_DOMAIN, TOD_ORDER } from \"../variables\";\nimport { slugify } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area selects Chips class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass AreaScenesChips {\n /**\n * Configuration of the chip.\n *\n * @type {LovelaceChipConfig[]}\n */\n config: LovelaceChipConfig[] = [];\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(device: MagicAreaRegistryEntry, area: StrategyArea): TemplateChipConfig[] {\n\n const selects = TOD_ORDER.map(tod => Helper.getEntityState(device?.entities[`scene_${tod as 'morning'}`]?.entity_id)).filter(Boolean)\n\n const chips = [] as TemplateChipConfig[]\n\n if (selects.find(scene => scene?.state == \"Adaptive lighting\")) {\n chips.push({\n type: \"template\",\n icon: \"mdi:theme-light-dark\",\n content: \"AD\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_light_adapt`,\n data: {\n area: slugify(device.name),\n }\n },\n })\n }\n\n selects.forEach((scene, index) => {\n if (scene?.state === \"Scène instantanée\") {\n const entity_id = `scene.${slugify(device.name)}_${TOD_ORDER[index]}_snapshot_scene`\n chips.push({\n type: \"template\",\n entity: scene?.entity_id,\n icon: scene?.attributes.icon,\n content: TOD_ORDER[index],\n tap_action: {\n action: \"call-service\",\n service: \"scene.turn_on\",\n data: { entity_id }\n },\n hold_action: {\n action: \"more-info\"\n }\n })\n } else if (scene?.state !== \"Adaptive lighting\") {\n const sceneEntity_id = Helper.getStateEntities(area, \"scene\").find(s => s.attributes.friendly_name === scene?.state)?.entity_id\n chips.push({\n type: \"template\",\n entity: scene?.entity_id,\n icon: scene?.attributes.icon,\n content: TOD_ORDER[index],\n tap_action: {\n action: \"call-service\",\n service: \"scene.turn_on\",\n data: {\n entity_id: sceneEntity_id,\n }\n },\n hold_action: {\n action: \"more-info\"\n }\n })\n }\n })\n\n return chips\n\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry, area: StrategyArea) {\n\n this.config = this.getDefaultConfig(device, area);\n\n }\n\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the chip.\n *\n * @returns {LovelaceChipConfig} A chip.\n */\n getChips(): LovelaceChipConfig[] {\n return this.config;\n }\n}\n\nexport { AreaScenesChips };\n","import { AreaInformations } from \"../popups/AreaInformationsPopup\";\nimport { generic } from \"../types/strategy/generic\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AREA_STATE_ICONS, DEVICE_ICONS } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area state Chip class.\n *\n * Used to create a chip to indicate area state.\n */\nclass AreaStateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig({ area, floor, showContent = false }: { area?: generic.StrategyArea, floor?: generic.StrategyFloor, showContent?: boolean }): TemplateChipConfig {\n\n const device_id = area?.slug ?? floor?.floor_id\n\n const device = device_id ? Helper.magicAreasDevices[device_id] : undefined\n const { area_state, presence_hold, all_media_players, aggregate_motion, aggregate_presence, aggregate_occupancy } = device?.entities ?? {}\n\n const motion_entities = aggregate_motion ? [aggregate_motion.entity_id] : area?.domains.motion ?? []\n const presence_entities = aggregate_presence ? [aggregate_presence.entity_id] : area?.domains.presence ?? []\n const occupancy_entities = aggregate_occupancy ? [aggregate_occupancy.entity_id] : area?.domains.occupancy ?? []\n const media_player_entities = all_media_players ? [all_media_players.entity_id] : area?.domains.media_player ?? []\n\n const isOn = '| selectattr(\"state\",\"eq\", \"on\") | list | count > 0'\n const isSomeone = `[${[...motion_entities, ...presence_entities, ...occupancy_entities]?.map(e => `states['${e}']`)}] ${isOn}`\n const isMotion = `[${motion_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isPresence = `[${presence_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isOccupancy = `[${occupancy_entities?.map(e => `states['${e}']`)}] ${isOn}`\n const isMediaPlaying = `[${media_player_entities?.map(e => `states['${e}']`)}] | selectattr(\"state\",\"eq\", \"playing\") | list | count > 0`\n\n return {\n type: \"template\",\n entity: area_state?.entity_id,\n icon_color: `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set motion = ${isSomeone} %}\n {% set media_player = ${isMediaPlaying} %}\n {% set bl = state_attr('${area_state?.entity_id}', 'states') or [] %}\n {% if motion %}\n red\n {% elif media_player %}\n blue\n {% elif presence_hold == 'on' %}\n red\n {% elif 'sleep' in bl %}\n blue\n {% elif 'extended' in bl %}\n orange\n {% elif 'occupied' in bl %}\n grey\n {% else %}\n transparent\n {% endif %}\n `,\n icon: `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set motion = ${isMotion} %}\n {% set presence = ${isPresence} %}\n {% set occupancy = ${isOccupancy} %}\n {% set media_player = ${isMediaPlaying} %}\n {% set bl = state_attr('${area_state?.entity_id}', 'states') or [] %}\n {% if motion %}\n ${Helper.icons.binary_sensor.motion?.state?.on}\n {% elif presence %}\n ${Helper.icons.binary_sensor.presence?.state?.on}\n {% elif occupancy %}\n ${Helper.icons.binary_sensor.occupancy?.state?.on}\n {% elif media_player %}\n ${Helper.icons.media_player._?.state?.playing}\n {% elif presence_hold == 'on' %}\n ${DEVICE_ICONS.presence_hold}\n {% elif 'sleep' in bl %}\n ${AREA_STATE_ICONS.sleep}\n {% elif 'extended' in bl %}\n ${AREA_STATE_ICONS.extended}\n {% elif 'occupied' in bl %}\n ${AREA_STATE_ICONS.occupied}\n {% else %}\n ${AREA_STATE_ICONS.clear}\n {% endif %}`,\n content: showContent ? `\n {% set presence_hold = states('${presence_hold?.entity_id}')%}\n {% set bl = state_attr('${area_state?.entity_id}', 'states')%}\n {% if presence_hold == 'on' %}\n presence_hold\n {% elif 'sleep' in bl %}\n sleep\n {% elif 'extended' in bl %}\n extended\n {% elif 'occupied' in bl %}\n occupied\n {% else %}\n clear\n {% endif %}` : \"\",\n tap_action: device ? new AreaInformations(device, true).getPopup() : { action: \"none\" },\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: { area?: generic.StrategyArea, floor?: generic.StrategyFloor, showContent?: boolean }) {\n super();\n\n const defaultConfig = this.getDefaultConfig(options)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AreaStateChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate how many climates are operating.\n */\nclass ClimateChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:thermostat\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"climate\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"climate\", \"ne\", \"off\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"climate\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options.magic_device_id ?? \"global\", \"climate\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { ClimateChip };\n","import { ConditionalChipConfig, LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\n\ntype ConditionalChipOptions = Omit\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Motion Chip class.\n *\n * Used to create a chip to indicate how many motions are operating.\n */\nclass ConditionalChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: ConditionalChipConfig = {\n type: \"conditional\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {MagicAreaRegistryEntry} device The chip device.\n * @param {ConditionalChipOptions} options The chip options.\n */\n constructor(conditions: Array<{ entity: string; state_not?: string; state?: string; }>, chip: LovelaceChipConfig) {\n super();\n\n this.#defaultConfig.conditions = conditions;\n this.#defaultConfig.chip = chip;\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { ConditionalChip };\n","import { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AREA_CONTROL_ICONS } from \"../variables\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Control Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass ControlChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n entity: undefined,\n content: \"\",\n icon: AREA_CONTROL_ICONS.media_player,\n icon_color: \"green\",\n tap_action: {\n action: \"more-info\"\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(domain: string, entity_id: string) {\n super();\n\n this.#defaultConfig.entity = entity_id\n this.#defaultConfig.icon = AREA_CONTROL_ICONS[domain as \"media_player\"]\n this.#defaultConfig.icon_color = `{{ \"green\" if states(\"${entity_id}\") == \"on\" else \"red\" }}`;\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n\n }\n}\n\nexport { ControlChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover Chip class.\n *\n * Used to create a chip to indicate how many covers aren't closed.\n */\nclass CoverChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:window-open\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"cover\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"cover\", \"eq\", \"open\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"cover\", area_slug: options?.area_slug })\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { CoverChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan Chip class.\n *\n * Used to create a chip to indicate how many fans are on and to turn all off.\n */\nclass FanChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:fan\",\n content: Helper.getCountTemplate(\"fan\", \"eq\", \"on\"),\n tap_action: {\n action: \"navigate\",\n navigation_path: \"fan\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"fan\", \"eq\", \"on\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"fan\", area_slug: options?.area_slug })\n\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { FanChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass LightChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:lightbulb-group\",\n icon_color: \"amber\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"light\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"light\", \"eq\", \"on\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"light\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options?.magic_device_id ?? \"global\", \"light\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { LightChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { getMAEntity } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * MediaPlayer Chip class.\n *\n * Used to create a chip to indicate how many climates are operating.\n */\nclass MediaPlayerChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: Helper.icons.media_player._.default,\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"media_player\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"media_player\", \"eq\", \"playing\", options?.area_slug);\n }\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"media_player\", area_slug: options?.area_slug })\n\n const magicAreasEntity = getMAEntity(options?.magic_device_id ?? \"global\", \"media_player\");\n\n if (magicAreasEntity) {\n this.#defaultConfig.entity = magicAreasEntity.entity_id;\n }\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { MediaPlayerChip };\n","import { Helper } from \"../Helper\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { chips } from \"../types/strategy/chips\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Safety Chip class.\n *\n * Used to create a chip to indicate how many safetys are operating.\n */\nclass SafetyChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: Helper.icons.binary_sensor.safety?.default,\n icon_color: \"grey\",\n content: Helper.getDeviceClassCountTemplate(\"safety\", \"ne\", \"off\"),\n tap_action: {\n action: \"none\",\n },\n hold_action: {\n action: \"navigate\",\n navigation_path: \"safety\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: chips.TemplateChipOptions = {}) {\n super();\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { SafetyChip };\n","import {Helper} from \"../Helper\";\nimport {chips} from \"../types/strategy/chips\";\nimport {AbstractChip} from \"./AbstractChip\";\nimport {TemplateChipConfig} from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Settings Chip class.\n *\n * Used to create a chip to indicate how many fans are on and to turn all off.\n */\nclass SettingsChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n \"type\": \"template\",\n \"icon\": \"mdi:cog\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(options: chips.TemplateChipOptions = {}) {\n super();\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {SettingsChip};\n","import { Helper } from \"../Helper\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AbstractChip } from \"./AbstractChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Spotify Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass SpotifyChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(entityId: string): TemplateChipConfig {\n\n return {\n type: \"template\",\n entity: entityId,\n icon_color: `{{ 'green' if is_state('${entityId}', 'playing') else 'grey' }}`,\n content: '{{ states(entity) }}',\n icon: \"mdi:spotify\",\n // content: show_content ? `{{ states('${entityId}') if not states('${entityId}') == 'on' else '' }}` : \"\",\n tap_action: {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Spotify\",\n \"content\":\n {\n type: \"vertical-stack\",\n cards: [\n ...([entityId].map(x => {\n\n const entity = Helper.getEntityState(x)\n const source_list = entity.attributes.source_list\n const chunkSize = 3;\n const source_cards_chunk = []\n\n for (let i = 0; i < source_list.length; i += chunkSize) {\n const chunk = source_list.slice(i, i + chunkSize);\n source_cards_chunk.push(chunk)\n }\n\n return {\n type: \"custom:stack-in-card\",\n cards: [\n {\n type: \"custom:mushroom-media-player-card\",\n entity: \"media_player.spotify_juicy\",\n icon: \"mdi:spotify\",\n icon_color: \"green\",\n use_media_info: true,\n use_media_artwork: false,\n show_volume_level: false,\n media_controls: [\n \"play_pause_stop\",\n \"previous\",\n \"next\"\n ],\n volume_controls: [\n \"volume_buttons\",\n \"volume_set\"\n ],\n fill_container: false,\n card_mod: {\n style: \"ha-card {\\n --rgb-state-media-player: var(--rgb-green);\\n}\\n\"\n }\n },\n {\n type: \"custom:swipe-card\",\n parameters: null,\n spaceBetween: 8,\n scrollbar: null,\n start_card: 1,\n hide: false,\n draggable: true,\n snapOnRelease: true,\n slidesPerView: 2.2,\n cards: [\n ...(source_cards_chunk.map(source_cards => (\n {\n type: \"horizontal-stack\",\n cards: [\n ...(source_cards.map((source: string) => (\n {\n type: \"custom:mushroom-template-card\",\n icon: \"mdi:speaker-play\",\n icon_color: `{% if states[entity].attributes.source == '${source}' %}\\namber\\n{% else %}\\ngrey\\n{% endif %}`,\n primary: null,\n secondary: source,\n entity: entity.entity_id,\n multiline_secondary: false,\n tap_action: {\n action: \"call-service\",\n service: \"spotcast.start\",\n data: {\n device_name: source,\n force_playback: true\n }\n },\n layout: \"vertical\",\n style: \"mushroom-card \\n background-size: 42px 32px;\\nmushroom-shape-icon {\\n --shape-color: none !important;\\n} \\n ha-card { \\n background: rgba(#1a1a2a;, 1.25);\\n {% if is_state('media_player.cuisine_media_players', 'playing') %}\\n {% else %}\\n background: rgba(var(--rgb-primary-background-color), 0.8);\\n {% endif %} \\n width: 115px;\\n border-radius: 30px;\\n margin-top: 10px;\\n margin-left: auto;\\n margin-right: auto;\\n margin-bottom: 20px;\\n }\\n\",\n card_mode: {\n style: \":host {\\n background: rgba(var(--rgb-primary-background-color), 0.8);\\n border-radius: 50px;!important\\n} \\n\"\n },\n line_width: 8,\n line_color: \"#FF6384\",\n card_mod: {\n style: `\n :host {\n --mush-icon-symbol-size: 0.75em;\n }\n `\n }\n\n }))\n ).filter(Boolean),\n ]\n }))\n ).filter(Boolean),\n ]\n },\n {\n type: \"custom:spotify-card\",\n always_play_random_song: true,\n hide_currently_playing: true,\n hide_playback_controls: true,\n hide_top_header: true,\n hide_warning: true,\n hide_chromecast_devices: true,\n display_style: \"Grid\",\n grid_covers_per_row: 5,\n limit: 20\n }\n ],\n card_mod: {\n style: \"ha-card {\\n {% if not is_state('media_player.spotify_juicy', 'off') and not is_state('media_player.spotify_juicy', 'idle') %}\\n background: url( '{{ state_attr(\\\"media_player.spotify_juicy\\\", \\\"entity_picture\\\") }}' ), linear-gradient(to left, transparent, rgb(var(--rgb-card-background-color)) 100%);\\n\\n {% if state_attr('media_player.spotify_juicy', 'media_content_type') == 'tvshow' %}\\n background-size: auto 100%, cover;\\n {% else %}\\n background-size: 130% auto, cover;\\n {% endif %}\\n\\n background-position: top right;\\n background-repeat: no-repeat;\\n background-blend-mode: saturation;\\n {% endif %}\\n}\\n\"\n }\n }\n })\n ).filter(Boolean),\n ],\n card_mod: {\n style: \"ha-card {\\n background:#4a1a1a;\\n}\\n\"\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(entityId: string) {\n super();\n\n const defaultConfig = this.getDefaultConfig(entityId)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { SpotifyChip };\n","import { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch Chip class.\n *\n * Used to create a chip to indicate how many switches are on and to turn all off.\n */\nclass SwitchChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: \"mdi:dip-switch\",\n content: \"\",\n tap_action: {\n action: \"navigate\",\n navigation_path: \"switch\",\n },\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n if (options?.show_content) {\n this.#defaultConfig.content = Helper.getCountTemplate(\"switch\", \"eq\", \"on\", options?.area_slug);\n }\n this.#defaultConfig.icon_color = Helper.getFromDomainState({ domain: \"switch\", area_slug: options?.area_slug })\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport { SwitchChip };\n","import { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { MAGIC_AREAS_DOMAIN } from \"../variables\";\nimport { AbstractChip } from \"./AbstractChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate Chip class.\n *\n * Used to create a chip to indicate climate level.\n */\nclass ToggleSceneChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {ConditionalChipConfig}\n *\n */\n getDefaultConfig(device: MagicAreaRegistryEntry): TemplateChipConfig {\n return {\n type: \"template\",\n entity: device?.entities.light_control?.entity_id,\n icon: \"mdi:recycle-variant\",\n // icon_color: \"{% if is_state(config.entity, 'on') %}green{% else %}red{% endif %}\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_scene_toggle`,\n data: {\n area: device?.name,\n }\n },\n hold_action: {\n action: \"more-info\"\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.TemplateChipOptions} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { ToggleSceneChip };\n","import { AbstractChip } from \"./AbstractChip\";\nimport { TemplateChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { navigateTo } from \"../utils\";\nimport { Helper } from \"../Helper\";\nimport { chips } from \"../types/strategy/chips\";\nimport { UNAVAILABLE } from \"../variables\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Unavailable Chip class.\n *\n * Used to create a chip to indicate unable entities.\n */\nclass UnavailableChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @type {TemplateChipConfig}\n *\n * @readonly\n * @private\n */\n readonly #defaultConfig: TemplateChipConfig = {\n type: \"template\",\n icon: 'mdi:alert-circle-outline',\n icon_color: \"orange\",\n content: \"\",\n };\n\n /**\n * Class Constructor.\n *\n * @param {chips.ChipOptions} options The chip options.\n */\n constructor(options: chips.ChipOptions = {}) {\n super();\n\n this.#defaultConfig.content = Helper.getCountTemplate(\"all\", \"eq\", UNAVAILABLE, options?.area_slug);\n\n this.#defaultConfig.icon = Helper.getFromDomainState({\n domain: \"all\",\n operator: \"eq\",\n value: UNAVAILABLE,\n ifReturn: this.#defaultConfig.icon,\n elseReturn: \"mdi:alert-circle-check-outline\",\n area_slug: options?.area_slug\n });\n\n\n this.#defaultConfig.icon_color = Helper.getFromDomainState({\n domain: \"all\",\n operator: \"eq\",\n value: UNAVAILABLE,\n ifReturn: this.#defaultConfig.icon_color,\n elseReturn: \"green\",\n area_slug: options?.area_slug\n });\n\n this.#defaultConfig.tap_action = navigateTo(\"unavailable\")\n\n this.config = Object.assign(this.config, this.#defaultConfig);\n }\n}\n\nexport { UnavailableChip };\n","import {chips} from \"../types/strategy/chips\";\nimport {WeatherChipConfig} from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport {AbstractChip} from \"./AbstractChip\";\nimport { WeatherPopup } from \"../popups/WeatherPopup\";\n\n// noinspection JSUnusedGlobalSymbols False positive.\n/**\n * Weather Chip class.\n *\n * Used to create a chip for showing the weather.\n */\nclass WeatherChip extends AbstractChip {\n /**\n * Default configuration of the chip.\n *\n * @private\n * @readonly\n */\n readonly #defaultConfig: WeatherChipConfig = {\n type: \"weather\",\n show_temperature: true,\n show_conditions: true,\n };\n\n /**\n * Class Constructor.\n *\n * @param {string} entityId Id of a weather entity.\n * @param {chips.WeatherChipOptions} options Weather Chip options.\n */\n constructor(entityId: string, options: chips.WeatherChipOptions = {}) {\n super();\n this.#defaultConfig = {\n ...this.#defaultConfig,\n tap_action: new WeatherPopup(entityId).getPopup() as any,\n ...{entity: entityId},\n ...options,\n };\n\n this.#defaultConfig.tap_action = new WeatherPopup(entityId).getPopup()\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n }\n}\n\nexport {WeatherChip};\n","import { generic } from \"./types/strategy/generic\";\nimport StrategyDefaults = generic.StrategyDefaults;\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { ControlChip } from \"./chips/ControlChip\";\nimport { SettingsChip } from \"./chips/SettingsChip\";\nimport { LightSettings } from \"./popups/LightSettingsPopup\";\nimport { ToggleSceneChip } from \"./chips/ToggleSceneChip\";\nimport { SceneSettings } from \"./popups/SceneSettingsPopup\";\nimport { UNDISCLOSED } from \"./variables\";\nimport { ClimateChip } from \"./chips/ClimateChip\";\nimport { AggregateChip } from \"./chips/AggregateChip\";\nimport { LightChip } from \"./chips/LightChip\";\nimport { MediaPlayerChip } from \"./chips/MediaPlayerChip\";\nimport { CoverChip } from \"./chips/CoverChip\";\nimport { FanChip } from \"./chips/FanChip\";\nimport { SwitchChip } from \"./chips/SwitchChip\";\n\n/**\n * Default configuration for the mushroom strategy.\n */\nexport const configurationDefaults: StrategyDefaults = {\n areas: {\n undisclosed: {\n slug: UNDISCLOSED,\n aliases: [],\n area_id: UNDISCLOSED,\n name: \"Non assigné\",\n picture: null,\n hidden: false,\n domains: {},\n devices: [],\n entities: [],\n }\n },\n floors: {\n undisclosed: {\n aliases: [],\n floor_id: UNDISCLOSED,\n name: \"Non assigné\",\n hidden: false,\n areas_slug: [UNDISCLOSED]\n }\n },\n debug: true,\n domains: {\n _: {\n hide_config_entities: false,\n },\n default: {\n showControls: false,\n hidden: false,\n },\n light: {\n showControls: true,\n controlChip: LightChip,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.light_control?.entity_id) {\n chips.push(new ControlChip(\"light\", device?.entities.light_control?.entity_id).getChip());\n }\n if (device?.entities.all_lights?.entity_id) {\n chips.push(new SettingsChip({ tap_action: new LightSettings(device).getPopup() }).getChip());\n }\n return chips\n },\n controllerCardOptions: {\n onService: \"light.turn_on\",\n offService: \"light.turn_off\",\n toggleService: \"light.toggle\",\n },\n hidden: false,\n order: 1\n },\n climate: {\n showControls: true,\n controlChip: ClimateChip,\n controllerCardOptions: {\n onService: \"climate.turn_on\",\n offService: \"climate.turn_off\",\n toggleService: \"climate.toggle\",\n },\n hidden: false,\n order: 2,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.climate_control?.entity_id) {\n chips.push(new ControlChip(\"climate\", device?.entities.climate_control?.entity_id).getChip());\n }\n return chips\n },\n },\n media_player: {\n showControls: true,\n controlChip: MediaPlayerChip,\n controllerCardOptions: {\n onService: \"media_player.turn_on\",\n offService: \"media_player.turn_off\",\n toggleService: \"media_player.toggle\",\n },\n hidden: false,\n order: 3,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.media_player_control?.entity_id) {\n chips.push(new ControlChip(\"media_player\", device?.entities.media_player_control?.entity_id).getChip());\n }\n return chips\n },\n },\n cover: {\n showControls: true,\n controlChip: CoverChip,\n controllerCardOptions: {\n onService: \"cover.open_cover\",\n offService: \"cover.close_cover\",\n toggleService: \"cover.toggle\",\n },\n hidden: false,\n order: 4\n },\n scene: {\n showControls: false,\n extraControls: (device: MagicAreaRegistryEntry) => {\n const chips = [];\n if (device?.entities.all_lights?.entity_id) {\n chips.push(new ToggleSceneChip(device).getChip());\n chips.push(new SettingsChip({ tap_action: new SceneSettings(device).getPopup() }).getChip());\n }\n return chips\n },\n onService: \"scene.turn_on\",\n offService: \"scene.turn_off\",\n hidden: false,\n order: 5\n },\n fan: {\n showControls: true,\n controlChip: FanChip,\n controllerCardOptions: {\n onService: \"fan.turn_on\",\n offService: \"fan.turn_off\",\n toggleService: \"fan.toggle\",\n },\n hidden: false,\n order: 6\n },\n switch: {\n showControls: true,\n controlChip: SwitchChip,\n controllerCardOptions: {\n onService: \"switch.turn_on\",\n offService: \"switch.turn_off\",\n toggleService: \"switch.toggle\",\n },\n hidden: false,\n order: 7\n },\n camera: {\n showControls: false,\n controllerCardOptions: {\n },\n hidden: false,\n order: 8\n },\n lock: {\n showControls: false,\n controllerCardOptions: {\n },\n hidden: false,\n order: 9\n },\n vacuum: {\n showControls: true,\n controllerCardOptions: {\n onService: \"vacuum.start\",\n offService: \"vacuum.stop\",\n },\n hidden: false,\n order: 10\n },\n sensor: {\n controlChip: AggregateChip,\n showControls: true,\n hidden: false,\n },\n binary_sensor: {\n controlChip: AggregateChip,\n showControls: true,\n hidden: false,\n },\n number: {\n showControls: false,\n hidden: false,\n },\n },\n home_view: {\n hidden: [],\n },\n views: {\n home: {\n order: 1,\n hidden: false,\n },\n security: {\n order: 2,\n hidden: false,\n },\n light: {\n order: 3,\n hidden: false,\n },\n climate: {\n order: 4,\n hidden: false,\n },\n media_player: {\n order: 5,\n hidden: false,\n },\n cover: {\n order: 6,\n hidden: false,\n },\n scene: {\n order: 7,\n hidden: false,\n },\n fan: {\n order: 8,\n hidden: false,\n },\n switch: {\n order: 9,\n hidden: false,\n },\n camera: {\n order: 10,\n hidden: false,\n },\n vacuum: {\n order: 11,\n hidden: false,\n },\n sensor: {\n hidden: false,\n },\n binary_sensor: {\n hidden: false,\n },\n securityDetails: {\n hidden: false,\n },\n battery: {\n hidden: false,\n },\n battery_charging: {\n hidden: false,\n },\n carbon_monoxide: {\n hidden: false,\n },\n cold: {\n hidden: false,\n },\n connectivity: {\n hidden: false,\n },\n door: {\n hidden: false,\n },\n garage_door: {\n hidden: false,\n },\n gas: {\n hidden: false,\n },\n heat: {\n hidden: false,\n },\n lock: {\n hidden: false,\n },\n moisture: {\n hidden: false,\n },\n motion: {\n hidden: false,\n },\n moving: {\n hidden: false,\n },\n occupancy: {\n hidden: false,\n },\n opening: {\n hidden: false,\n },\n plug: {\n hidden: false,\n },\n power: {\n hidden: false,\n },\n presence: {\n hidden: false,\n },\n problem: {\n hidden: false,\n },\n running: {\n hidden: false,\n },\n safety: {\n hidden: false,\n },\n smoke: {\n hidden: false,\n },\n sound: {\n hidden: false,\n },\n tamper: {\n hidden: false,\n },\n update: {\n hidden: false,\n },\n vibration: {\n hidden: false,\n },\n window: {\n hidden: false,\n },\n apparent_power: {\n hidden: false,\n },\n aqi: {\n hidden: false,\n },\n area: {\n hidden: false,\n },\n atmospheric_pressure: {\n hidden: false,\n },\n blood_glucose_concentration: {\n hidden: false,\n },\n carbon_dioxide: {\n hidden: false,\n },\n current: {\n hidden: false,\n },\n data_rate: {\n hidden: false,\n },\n data_size: {\n hidden: false,\n },\n date: {\n hidden: false,\n },\n distance: {\n hidden: false,\n },\n duration: {\n hidden: false,\n },\n energy: {\n hidden: false,\n },\n energy_storage: {\n hidden: false,\n },\n enum: {\n hidden: false,\n },\n frequency: {\n hidden: false,\n },\n humidity: {\n hidden: false,\n },\n illuminance: {\n hidden: false,\n },\n irradiance: {\n hidden: false,\n },\n monetary: {\n hidden: false,\n },\n nitrogen_dioxide: {\n hidden: false,\n },\n nitrogen_monoxide: {\n hidden: false,\n },\n nitrous_oxide: {\n hidden: false,\n },\n ozone: {\n hidden: false,\n },\n ph: {\n hidden: false,\n },\n pm1: {\n hidden: false,\n },\n pm25: {\n hidden: false,\n },\n pm10: {\n hidden: false,\n },\n power_factor: {\n hidden: false,\n },\n precipitation: {\n hidden: false,\n },\n precipitation_intensity: {\n hidden: false,\n },\n pressure: {\n hidden: false,\n },\n reactive_power: {\n hidden: false,\n },\n signal_strength: {\n hidden: false,\n },\n sound_pressure: {\n hidden: false,\n },\n speed: {\n hidden: false,\n },\n sulphur_dioxide: {\n hidden: false,\n },\n temperature: {\n hidden: false,\n },\n timestamp: {\n hidden: false,\n },\n volatile_organic_compounds: {\n hidden: false,\n },\n volatile_organic_compounds_parts: {\n hidden: false,\n },\n voltage: {\n hidden: false,\n },\n volume: {\n hidden: false,\n },\n volume_flow_rate: {\n hidden: false,\n },\n volume_storage: {\n hidden: false,\n },\n water: {\n hidden: false,\n },\n weight: {\n hidden: false,\n },\n wind_speed: {\n hidden: false,\n },\n }\n};\n","import { Helper } from \"./Helper\";\nimport { generic } from \"./types/strategy/generic\";\nimport { LovelaceConfig, LovelaceViewConfig } from \"./types/homeassistant/data/lovelace\";\nimport { AGGREGATE_DOMAINS, CUSTOM_VIEWS, DEVICE_CLASSES, DOMAINS_VIEWS, VIEWS_ICONS } from \"./variables\";\nimport { AreaView } from \"./views/AreaView\";\nimport { getAreaName, getDomainTranslationKey, getFloorName } from \"./utils\";\nimport { FloorView } from \"./views/FloorView\";\nimport { ResourceKeys } from \"./types/homeassistant/data/frontend\";\n\n/**\n * Linus Dashboard Strategy.
\n *
\n * Linus dashboard strategy provides a strategy for Home-Assistant to create a dashboard automatically.
\n * The strategy makes use of Mushroom and Mini Graph cards to represent your entities.
\n *
\n * Features:
\n * 🛠 Automatically create a dashboard with minimal configuration.
\n * 😍 Built-in views for several standard domains.
\n * 🎨 Many options to customize to your needs.
\n *
\n * Check the [Repository]{@link https://github.com/AalianKhan/linus-strategy} for more information.\n */\nclass LinusStrategy extends HTMLTemplateElement {\n /**\n * Generate a dashboard.\n *\n * Called when opening a dashboard.\n *\n * @param {generic.DashBoardInfo} info Dashboard strategy information object.\n * @return {Promise}\n */\n static async generateDashboard(info: generic.DashBoardInfo): Promise {\n if (!Helper.isInitialized()) await Helper.initialize(info);\n\n const views: LovelaceViewConfig[] = info.config?.views ?? [];\n\n LinusStrategy.createDomainSubviews(views);\n LinusStrategy.createUnavailableEntitiesSubview(views);\n LinusStrategy.createAreaSubviews(views);\n LinusStrategy.createFloorSubviews(views);\n\n if (Helper.strategyOptions.extra_views) {\n views.push(...Helper.strategyOptions.extra_views);\n }\n\n return { views };\n }\n\n /**\n * Create subviews for each domain.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createDomainSubviews(views: LovelaceViewConfig[]) {\n const exposedViewIds = Helper.getExposedViewIds();\n exposedViewIds.forEach(viewId => {\n if (![...CUSTOM_VIEWS, ...DOMAINS_VIEWS].includes(viewId)) return;\n if (DOMAINS_VIEWS.includes(viewId) && (Helper.domains[viewId] ?? []).length === 0) return;\n\n let domain = viewId;\n let device_class = \"_\";\n\n if (DEVICE_CLASSES.binary_sensor.includes(viewId)) {\n domain = \"binary_sensor\";\n device_class = viewId;\n } else if (DEVICE_CLASSES.sensor.includes(viewId)) {\n domain = \"sensor\";\n device_class = viewId;\n }\n\n views.push({\n title: Helper.localize(getDomainTranslationKey(domain, device_class)),\n icon: (VIEWS_ICONS as Record)[viewId] ?? Helper.icons[device_class === \"battery\" ? \"binary_sensor\" : domain as ResourceKeys]?.[device_class]?.default,\n path: viewId,\n subview: !Object.keys(VIEWS_ICONS).includes(viewId),\n strategy: {\n type: \"custom:linus-strategy\",\n options: { viewId },\n },\n });\n });\n }\n\n /**\n * Create a subview for unavailable entities.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createUnavailableEntitiesSubview(views: LovelaceViewConfig[]) {\n views.push({\n title: \"Unavailable\",\n path: \"unavailable\",\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { viewId: \"unavailable\" },\n },\n });\n }\n\n /**\n * Create subviews for each area.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createAreaSubviews(views: LovelaceViewConfig[]) {\n for (let area of Helper.orderedAreas) {\n if (!area.hidden) {\n views.push({\n title: getAreaName(area),\n path: area.slug ?? area.name,\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { area },\n },\n });\n }\n }\n }\n\n /**\n * Create subviews for each floor.\n *\n * @param {LovelaceViewConfig[]} views Array of Lovelace view configurations.\n */\n private static createFloorSubviews(views: LovelaceViewConfig[]) {\n for (let floor of Helper.orderedFloors) {\n if (!floor.hidden) {\n views.push({\n title: getFloorName(floor),\n path: floor.floor_id,\n subview: true,\n strategy: {\n type: \"custom:linus-strategy\",\n options: { floor },\n },\n });\n }\n }\n }\n\n /**\n * Generate a view.\n *\n * Called when opening a subview.\n *\n * @param {generic.ViewInfo} info The view's strategy information object.\n * @return {Promise}\n */\n /**\n * Generate a view.\n *\n * Called when opening a subview.\n *\n * @param {generic.ViewInfo} info The view's strategy information object.\n * @return {Promise}\n */\n static async generateView(info: generic.ViewInfo): Promise {\n const { viewId, floor, area } = info.view.strategy?.options ?? {};\n let view: LovelaceViewConfig = {};\n\n if (area) {\n try {\n view = await new AreaView(area).getView();\n } catch (e) {\n Helper.logError(`View for '${area?.name}' couldn't be loaded!`, e);\n }\n } else if (floor) {\n try {\n view = await new FloorView(floor).getView();\n } catch (e) {\n Helper.logError(`View for '${floor?.name}' couldn't be loaded!`, e);\n }\n } else if (viewId) {\n try {\n\n if (viewId === \"unavailable\") {\n\n const viewModule = await import(\"./views/UnavailableView\");\n view = await new viewModule.UnavailableView().getView();\n\n } else if (AGGREGATE_DOMAINS.includes(viewId)) {\n\n const viewModule = await import(\"./views/AggregateView\");\n view = await new viewModule.AggregateView({ domain: viewId }).getView();\n\n } else if ([...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(viewId)) {\n\n const domain = DEVICE_CLASSES.binary_sensor.includes(viewId) ? \"binary_sensor\" : \"sensor\";\n\n const viewModule = await import(\"./views/AggregateView\");\n view = await new viewModule.AggregateView({ domain, device_class: viewId }).getView();\n\n } else {\n\n const viewType = Helper.sanitizeClassName(viewId + \"View\");\n const viewModule = await import(`./views/${viewType}`);\n view = await new viewModule[viewType](Helper.strategyOptions.views[viewId]).getView();\n\n }\n } catch (e) {\n Helper.logError(`View for '${viewId}' couldn't be loaded!`, e);\n }\n\n }\n\n return view;\n }\n}\n\ncustomElements.define(\"ll-strategy-linus-strategy\", LinusStrategy);\n\nexport const version = \"v1.0.4\";\nconsole.info(\n \"%c Linus Strategy %c \".concat(version, \" \"),\n \"color: #F5F5DC; background: #004225; font-weight: 700;\", \"color: #004225; background: #F5F5DC; font-weight: 700;\"\n);\n","import {Helper} from \"../Helper\";\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\n\n/**\n * Abstract Popup class.\n *\n * To create a new Popup, extend this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractPopup {\n /**\n * Configuration of the Popup.\n *\n * @type {PopupActionConfig}\n */\n config: PopupActionConfig = {\n action: \"fire-dom-event\",\n browser_mod: {}\n };\n\n /**\n * Class Constructor.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n // noinspection JSUnusedGlobalSymbols Method is called on dymanically imported classes.\n /**\n * Get the Popup.\n *\n * @returns {PopupActionConfig} A Popup.\n */\n getPopup(): PopupActionConfig {\n return this.config;\n }\n}\n\nexport {AbstractPopup};\n","import { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass AreaInformations extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry, minimalist: boolean): PopupActionConfig {\n\n const { area_state } = device?.entities ?? {}\n\n const { friendly_name, adjoining_areas, features, states, presence_sensors, on_states } = Helper.getEntityState(area_state?.entity_id)?.attributes ?? {}\n\n presence_sensors?.sort((a: string, b: string) => {\n const aState = Helper.getEntityState(a);\n const bState = Helper.getEntityState(b);\n const lastChangeA = new Date(aState?.last_changed).getTime();\n const lastChangeB = new Date(bState?.last_changed).getTime();\n if (a === `switch.magic_areas_presence_hold_${slugify(device?.name)}`) {\n return -1;\n } else if (b === `switch.magic_areas_presence_hold_${slugify(device?.name)}`) {\n return 1;\n } else {\n return lastChangeB - lastChangeA;\n }\n });\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: friendly_name,\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"custom:mushroom-entity-card\",\n entity: area_state?.entity_id,\n name: \"Présence\",\n secondary_info: \"last-changed\",\n color: \"red\",\n tap_action: device?.id ? {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.sequence\",\n data: {\n sequence: [\n {\n service: \"browser_mod.close_popup\",\n data: {}\n },\n {\n service: \"browser_mod.navigate\",\n data: { path: `/config/devices/device/${device?.id}` }\n }\n ]\n }\n }\n } : \"more-info\"\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: \"Recharger la pièce\",\n icon: \"mdi:refresh\",\n icon_color: \"blue\",\n tap_action: {\n action: \"call-service\",\n service: `homeassistant.reload_config_entry`,\n target: { \"device_id\": device?.id },\n }\n },\n ]\n },\n ...(!minimalist ? [\n {\n type: \"custom:mushroom-template-card\",\n primary: `Configuration de la pièce :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: [\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Type : {{ state_attr('${area_state?.entity_id}', 'type') }}`,\n icon: `\n {% set type = state_attr('${area_state?.entity_id}', 'type') %}\n {% if type == \"interior\" %}\n mdi:home-import-outline\n {% elif type == \"exterior\" %}\n mdi:home-import-outline\n {% else %}\n mdi:home-alert\n {% endif %}\n `,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Étage : {{ state_attr('${area_state?.entity_id}', 'floor') }}`,\n icon: `\n {% set floor = state_attr('${area_state?.entity_id}', 'floor') %}\n {% if floor == \"third\" %}\n mdi:home-floor-3\n {% elif floor == \"second\" %}\n mdi:home-floor-2\n {% elif floor == \"first\" %}\n mdi:home-floor-1\n {% elif floor == \"ground\" %}\n mdi:home-floor-g\n {% elif floor == \"basement\" %}\n mdi:home-floor-b\n {% else %}\n mdi:home-alert\n {% endif %}\n `,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Délai pièce vide : {{ state_attr('${area_state?.entity_id}', 'clear_timeout') }}s`,\n icon: `mdi:camera-timer`,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Interval mise à jour : {{ state_attr('${area_state?.entity_id}', 'update_interval') }}s`,\n icon: `mdi:update`,\n },\n {\n type: \"template\",\n entity: area_state?.entity_id,\n content: `Pièces adjacentes : ${adjoining_areas?.length ? adjoining_areas.join(' ') : 'Non défini'}`,\n icon: `mdi:view-dashboard-variant`,\n },\n ],\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n }\n ] : []),\n {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.area_state_popup.name\"),\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n (minimalist ? {\n type: \"vertical-stack\",\n cards: presence_sensors?.map((sensor: string) => ({\n type: \"custom:mushroom-entity-card\",\n entity: sensor,\n content_info: \"name\",\n secondary_info: \"last-changed\",\n icon_color: sensor.includes('media_player.') ? \"blue\" : \"red\",\n }))\n } :\n {\n type: \"custom:mushroom-chips-card\",\n chips: presence_sensors?.map((sensor: string) => ({\n type: \"entity\",\n entity: sensor,\n content_info: \"name\",\n icon_color: sensor.includes('media_player.') ? \"blue\" : \"red\",\n tap_action: {\n action: \"more-info\"\n }\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n }),\n ...(!minimalist ? [\n {\n type: \"custom:mushroom-template-card\",\n primary: `Présence détecté pour les états :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: on_states?.map((sensor: string) => ({\n type: \"template\",\n content: sensor,\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: `Fonctionnalitées disponibles :`,\n card_mod: {\n style: `ha-card {padding: 4px 12px!important;}`\n }\n },\n {\n type: \"custom:mushroom-chips-card\",\n chips: features?.map((sensor: string) => ({\n type: \"template\",\n content: sensor,\n })),\n card_mod: {\n style: `ha-card .chip-container * {margin-bottom: 0px!important;}`\n }\n },\n ] : [])\n ].filter(Boolean)\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry, minimalist: boolean = false) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device, minimalist)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { AreaInformations };\n","import { Helper } from \"../Helper\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { MAGIC_AREAS_DOMAIN } from \"../variables\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass LightSettings extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry): PopupActionConfig {\n\n const { aggregate_illuminance, adaptive_lighting_range, minimum_brightness, maximum_brightness, maximum_lighting_level } = device?.entities ?? {}\n\n const device_slug = slugify(device?.name ?? \"\")\n\n const OPTIONS_ADAPTIVE_LIGHTING_RANGE = {\n \"\": 1,\n \"Small\": 10,\n \"Medium\": 25,\n \"Large\": 50,\n \"Extra large\": 100,\n } as Record\n\n const adaptive_lighting_range_state = Helper.getEntityState(adaptive_lighting_range?.entity_id)?.state\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Configurer l'éclairage adaptatif\",\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_adapt_brightness_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_adapt_color_${device_slug}`,\n vertical: \"true\",\n },\n {\n type: \"tile\",\n entity: `switch.adaptive_lighting_sleep_mode_${device_slug}`,\n vertical: \"true\",\n }\n ]\n },\n {\n type: \"custom:mushroom-select-card\",\n entity: adaptive_lighting_range?.entity_id,\n secondary_info: \"last-changed\",\n icon_color: \"blue\",\n },\n {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"custom:mushroom-number-card\",\n entity: maximum_lighting_level?.entity_id,\n icon_color: \"red\",\n card_mod: {\n style: `\n :host {\n --mush-control-height: 20px;\n }\n `\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: \"Utiliser la valeur actuelle\",\n icon: \"mdi:pencil\",\n layout: \"vertical\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.area_lux_for_lighting_max`,\n data: {\n area: device?.name\n }\n },\n },\n ],\n },\n {\n type: \"custom:mushroom-number-card\",\n entity: minimum_brightness?.entity_id,\n icon_color: \"green\",\n card_mod: {\n style: \":host {--mush-control-height: 10px;}\"\n }\n },\n {\n type: \"custom:mushroom-number-card\",\n entity: maximum_brightness?.entity_id,\n icon_color: \"green\",\n card_mod: {\n style: \":host {--mush-control-height: 10px;}\"\n }\n },\n {\n type: \"custom:apexcharts-card\",\n graph_span: \"15h\",\n header: {\n show: true,\n title: \"Luminosité en fonction du temps\",\n show_states: true,\n colorize_states: true\n },\n yaxis: [\n {\n id: \"illuminance\",\n min: 0,\n apex_config: {\n tickAmount: 4\n }\n },\n {\n id: \"brightness\",\n opposite: true,\n min: 0,\n max: 100,\n apex_config: {\n tickAmount: 4\n }\n }\n ],\n series: [\n (aggregate_illuminance?.entity_id ? {\n entity: aggregate_illuminance?.entity_id,\n yaxis_id: \"illuminance\",\n color: \"orange\",\n name: \"Luminosité ambiante (lx)\",\n type: \"line\",\n group_by: {\n func: \"last\",\n duration: \"30m\"\n }\n } : undefined),\n {\n entity: adaptive_lighting_range?.entity_id,\n type: \"area\",\n yaxis_id: \"illuminance\",\n show: {\n in_header: false\n },\n color: \"blue\",\n name: \"Zone d'éclairage adaptatif\",\n unit: \"lx\",\n transform: `return parseInt(hass.states['${maximum_lighting_level?.entity_id}'].state) + ${OPTIONS_ADAPTIVE_LIGHTING_RANGE[adaptive_lighting_range_state]};`,\n group_by: {\n func: \"last\",\n }\n },\n {\n entity: maximum_lighting_level?.entity_id,\n type: \"area\",\n yaxis_id: \"illuminance\",\n name: \"Zone d'éclairage à 100%\",\n color: \"red\",\n show: {\n in_header: false\n },\n group_by: {\n func: \"last\",\n }\n },\n ].filter(Boolean)\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n }\n}\n\nexport { LightSettings };\n","\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { slugify } from \"../utils\";\nimport { MAGIC_AREAS_DOMAIN, TOD_ORDER } from \"../variables\";\nimport { AbstractPopup } from \"./AbstractPopup\";\nimport { generic } from \"../types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Scene Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass SceneSettings extends AbstractPopup {\n\n getDefaultConfig(device: MagicAreaRegistryEntry): PopupActionConfig {\n\n const { scene_morning, scene_daytime, scene_evening, scene_night } = device?.entities ?? {}\n const selectControl = [scene_morning, scene_daytime, scene_evening, scene_night].filter(Boolean)\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Configurer les scènes\",\n content: {\n type: \"vertical-stack\",\n cards: [\n ...(selectControl.length ? TOD_ORDER.map(tod => (\n {\n type: \"custom:config-template-card\",\n variables: {\n SCENE_STATE: `states['${device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id}'].state`\n },\n entities: [device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id],\n card: {\n type: \"horizontal-stack\",\n cards: [\n {\n type: \"entities\",\n entities: [device?.entities[('scene_' + tod) as \"scene_morning\"]?.entity_id]\n },\n {\n type: \"conditional\",\n conditions: [\n {\n entity: \"${SCENE_STATE}\",\n state: \"on\"\n },\n // {\n // entity: \"${SCENE_STATE}\",\n // state: \"off\"\n // }\n ],\n card:\n {\n type: \"tile\",\n entity: \"${SCENE_STATE}\",\n show_entity_picture: true,\n tap_action: {\n action: \"toggle\"\n },\n }\n },\n {\n type: \"conditional\",\n conditions: [\n {\n entity: \"${SCENE_STATE}\",\n state: \"unavailable\"\n },\n // {\n // entity: \"${SCENE_STATE}\",\n // state: \"off\"\n // }\n ],\n card:\n\n {\n type: \"custom:mushroom-template-card\",\n secondary: \"Utiliser l'éclairage actuel\",\n multiline_secondary: true,\n icon: \"mdi:pencil\",\n layout: \"vertical\",\n tap_action: {\n action: \"call-service\",\n service: `${MAGIC_AREAS_DOMAIN}.snapshot_lights_as_tod_scene`,\n data: {\n area: slugify(device.name),\n tod\n }\n },\n },\n }\n ]\n }\n }\n )\n ) : [{\n type: \"custom:mushroom-template-card\",\n primary: \"Ajouter une nouvelle scène\",\n secondary: `Cliquer ici pour vous rendre sur la page des scènes`,\n multiline_secondary: true,\n icon: `mdi:palette`,\n tap_action: {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.sequence\",\n data: {\n sequence: [\n {\n service: \"browser_mod.navigate\",\n data: { path: `/config/scene/dashboard` }\n },\n {\n service: \"browser_mod.close_popup\",\n data: {}\n }\n ]\n }\n }\n },\n card_mod: {\n style: `\n ha-card {\n box-shadow: none!important;\n }\n `\n }\n }])\n ].filter(Boolean)\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(device: MagicAreaRegistryEntry) {\n super();\n\n const defaultConfig = this.getDefaultConfig(device)\n\n this.config = Object.assign(this.config, defaultConfig);\n\n\n }\n}\n\nexport { SceneSettings };\n","import { Helper } from \"../Helper\";\nimport { version } from \"../linus-strategy\";\nimport { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Linus Chip class.\n *\n * Used to create a chip to indicate how many lights are on and to turn all off.\n */\nclass SettingsPopup extends AbstractPopup {\n\n getDefaultConfig(): PopupActionConfig {\n\n const linusDeviceIds = Object.values(Helper.magicAreasDevices).map((area) => area?.id).flat()\n\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.name\"),\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"horizontal-stack\",\n cards: [\n linusDeviceIds.length > 0 && {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.state.on\"),\n icon: \"mdi:refresh\",\n icon_color: \"blue\",\n tap_action: {\n action: \"call-service\",\n service: `homeassistant.reload_config_entry`,\n target: { \"device_id\": linusDeviceIds },\n }\n },\n {\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.settings_chip.state.off\"),\n icon: \"mdi:restart\",\n icon_color: \"red\",\n tap_action: {\n action: \"call-service\",\n service: \"homeassistant.restart\",\n }\n },\n ].filter(Boolean)\n },\n {\n type: \"markdown\",\n content: `Linus dashboard est en version ${version}.`,\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor() {\n super();\n\n const defaultConfig = this.getDefaultConfig()\n\n this.config = Object.assign(this.config, defaultConfig);\n\n\n }\n}\n\nexport { SettingsPopup };\n","import { PopupActionConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AbstractPopup } from \"./AbstractPopup\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Weather Chip class.\n *\n * Used to create a chip to indicate how many Weathers are on and to turn all off.\n */\nclass WeatherPopup extends AbstractPopup {\n\n getDefaultConfig(entityId: string): PopupActionConfig {\n return {\n action: \"fire-dom-event\",\n browser_mod: {\n service: \"browser_mod.popup\",\n data: {\n title: \"Météo\",\n content: {\n type: \"vertical-stack\",\n cards: [\n {\n type: \"weather-forecast\",\n entity: entityId,\n show_current: true,\n show_forecast: true\n },\n ]\n }\n }\n }\n }\n }\n\n /**\n * Class Constructor.\n *\n * @param {chips.PopupActionConfig} options The chip options.\n */\n constructor(entity_id: string) {\n super();\n\n this.config = Object.assign(this.config, this.getDefaultConfig(entity_id));\n\n\n }\n}\n\nexport {WeatherPopup};\n","import {ActionsSharedConfig} from \"../shared/config/actions-config\";\nimport {LovelaceCardConfig} from \"../../homeassistant/data/lovelace\";\nimport {EntitySharedConfig} from \"../shared/config/entity-config\";\nimport {AppearanceSharedConfig} from \"../shared/config/appearance-config\";\n\nexport const VACUUM_COMMANDS = [\n \"on_off\",\n \"start_pause\",\n \"stop\",\n \"locate\",\n \"clean_spot\",\n \"return_home\",\n] as const;\n\nexport type VacuumCommand = (typeof VACUUM_COMMANDS)[number];\n\n/**\n * Vacuum Card Config.\n *\n * @param {boolean} icon_animation Animate the icon when vacuum is cleaning.\n * @param {VacuumCommand[]} commands List of commands to display (start_pause, stop, locate, clean_spot, return_home).\n *\n * @see https://github.com/piitaya/lovelace-mushroom/blob/main/docs/cards/vacuum.md\n */\nexport type VacuumCardConfig = LovelaceCardConfig &\n EntitySharedConfig &\n AppearanceSharedConfig &\n ActionsSharedConfig & {\n icon_animation?: boolean;\n commands?: VacuumCommand[];\n};\n","import {\n CallServiceActionConfig,\n LovelaceCardConfig,\n LovelaceConfig,\n LovelaceViewConfig\n} from \"../homeassistant/data/lovelace\";\nimport { HomeAssistant } from \"../homeassistant/types\";\nimport { AreaRegistryEntry } from \"../homeassistant/data/area_registry\";\nimport { cards } from \"./cards\";\nimport { EntityRegistryEntry } from \"../homeassistant/data/entity_registry\";\nimport { LovelaceChipConfig } from \"../lovelace-mushroom/utils/lovelace/chip/types\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { FloorRegistryEntry } from \"../homeassistant/data/floor_registry\";\nimport { DeviceRegistryEntry } from \"../homeassistant/data/device_registry\";\n\nexport namespace generic {\n /**\n * An entry out of a Home Assistant Register.\n */\n export type RegistryEntry =\n | AreaRegistryEntry\n | DataTransfer\n | EntityRegistryEntry\n\n /**\n * View Entity.\n *\n * @property {number} [order] Ordering position of the entity in the list of available views.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n */\n export interface ViewConfig extends LovelaceViewConfig {\n hidden?: boolean;\n order?: number;\n }\n\n /**\n * Domain Configuration.\n *\n * @property {number} [order] Ordering position of the entity in the list of available views.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n * @property {boolean} [hide_config_entities] True if the entity's categorie is \"config\" and should be hidden from the\n * dashboard.\n */\n export interface DomainConfig extends Partial {\n hidden?: boolean;\n order?: number;\n hide_config_entities?: boolean\n }\n\n /**\n * Dashboard Information Object.\n *\n * Home Assistant passes this object to the Dashboard Generator method.\n *\n * @property {LovelaceConfig} config Dashboard configuration.\n * @property {HomeAssistant} hass The Home Assistant object.\n *\n * @see https://developers.home-assistant.io/docs/frontend/custom-ui/custom-strategy/#dashboard-strategies\n */\n export interface DashBoardInfo {\n config?: LovelaceConfig & {\n strategy: {\n options?: StrategyConfig\n }\n };\n hass: HomeAssistant;\n }\n\n /**\n * View Information Object.\n *\n * Home Assistant passes this object to the View Generator method.\n *\n * @property {LovelaceViewConfig} view View configuration.\n * @property {LovelaceConfig} config Dashboard configuration.\n * @property {HomeAssistant} hass The Home Assistant object.\n *\n * @see https://developers.home-assistant.io/docs/frontend/custom-ui/custom-strategy/#view-strategies\n */\n export interface ViewInfo {\n view: LovelaceViewConfig & {\n strategy?: {\n options?: StrategyConfig & { viewId: string, area: StrategyArea, floor: StrategyFloor }\n }\n };\n config: LovelaceConfig\n hass: HomeAssistant;\n }\n\n /**\n * Strategy Configuration.\n *\n * @property {Object.} areas List of areas.\n * @property {Object.} [card_options] Card options for entities.\n * @property {chips} [chips] List of chips to show in the Home view.\n * @property {boolean} [debug] Set to true for more verbose debugging info.\n * @property {Object.} domains List of domains.\n * @property {object[]} [extra_cards] List of cards to show below room cards.\n * @property {object[]} [extra_views] List of views to add to the dashboard.\n * @property {object[]} [quick_access_cards] List of cards to show between welcome card and rooms cards.\n * @property {Object.} views List of views.\n */\n export interface StrategyConfig {\n areas: { [k: string]: StrategyArea };\n floors: { [k: string]: StrategyFloor };\n card_options?: { [k: string]: CustomCardConfig };\n chips?: Chips;\n debug: boolean;\n domains: { [k: string]: DomainConfig };\n extra_cards?: LovelaceCardConfig[];\n extra_views?: ViewConfig[];\n home_view: {\n hidden: HiddenSectionType[]\n }\n quick_access_cards?: LovelaceCardConfig[];\n views: { [k: string]: ViewConfig };\n }\n\n const hiddenSectionList = [\"chips\", \"persons\", \"greeting\", \"areas\", \"areasTitle\"] as const;\n export type HiddenSectionType = typeof hiddenSectionList[number];\n\n /**\n * Represents the default configuration for a strategy.\n */\n export interface StrategyDefaults extends StrategyConfig {\n areas: {\n undisclosed: StrategyArea & {\n area_id: \"undisclosed\",\n },\n [k: string]: StrategyArea,\n },\n floors: {\n undisclosed: StrategyFloor & {\n floor_id: \"undisclosed\",\n },\n [k: string]: StrategyFloor,\n },\n domains: {\n default: DomainConfig,\n [k: string]: DomainConfig,\n }\n }\n\n /**\n * Strategy Device.\n *\n */\n export interface StrategyDevice extends DeviceRegistryEntry {\n floor_id: string | null;\n entities: string[];\n }\n\n export interface MagicAreaRegistryEntry extends DeviceRegistryEntry {\n entities: Record;\n area_name: string;\n }\n\n /**\n * Strategy Entity.\n *\n */\n export interface StrategyEntity extends EntityRegistryEntry {\n floor_id: string | null;\n }\n\n /**\n * Strategy Area.\n *\n * @property {number} [order] Ordering position of the area in the list of available areas.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n * @property {object[]} [extra_cards] An array of card configurations.\n * The configured cards are added to the dashboard.\n * @property {string} [type=default] The type of area card.\n */\n export interface StrategyArea extends AreaRegistryEntry {\n slug: string;\n domains: Record;\n order?: number;\n hidden?: boolean;\n extra_cards?: LovelaceCardConfig[];\n type?: string;\n devices: string[];\n entities: string[];\n magicAreaDevice?: StrategyDevice;\n }\n\n /**\n * Strategy Floor.\n *\n * @property {number} [order] Ordering position of the area in the list of available areas.\n * @property {boolean} [hidden] True if the entity should be hidden from the dashboard.\n */\n export interface StrategyFloor extends FloorRegistryEntry {\n order?: number;\n hidden?: boolean;\n type?: string;\n areas_slug: string[];\n }\n\n /**\n * A list of chips to show in the Home view.\n *\n * @property {boolean} light_count Chip to display the number of lights on.\n * @property {boolean} fan_count Chip to display the number of fans on.\n * @property {boolean} cover_count Chip to display the number of unclosed covers.\n * @property {boolean} switch_count Chip to display the number of switches on.\n * @property {boolean} climate_count Chip to display the number of climates which are not off.\n * @property {string} weather_entity Entity ID for the weather chip to use, accepts `weather.` only.\n * @property {object[]} extra_chips List of extra chips.\n */\n export interface Chips {\n extra_chips: LovelaceChipConfig[];\n\n light_count: boolean;\n fan_count: boolean;\n cover_count: boolean;\n switch_count: boolean;\n climate_count: boolean;\n weather_entity: string;\n alarm_entity: string;\n\n [key: string]: any;\n }\n\n /**\n * Custom Card Configuration for an entity.\n *\n * @property {boolean} hidden True if the entity should be hidden from the dashboard.\n */\n export interface CustomCardConfig extends LovelaceCardConfig {\n hidden?: boolean;\n }\n\n /**\n * Area Filter Context.\n *\n * @property {AreaRegistryEntry} area Area Entity.\n * @property {string[]} areaDeviceIds The id of devices which are linked to the area entity.\n * @property {string} domain Domain of the entity.\n * Example: `light`.\n */\n export interface AreaFilterContext {\n area: AreaRegistryEntry;\n areaDeviceIds: string[];\n domain: string;\n }\n\n /**\n * Checks if the given object is an instance of CallServiceActionConfig.\n *\n * @param {any} obj - The object to be checked.\n * @return {boolean} - Returns true if the object is an instance of CallServiceActionConfig, otherwise false.\n */\n export function isCallServiceActionConfig(obj: any): obj is CallServiceActionConfig {\n return obj && obj.action === \"call-service\" && [\"action\", \"service\"].every(key => key in obj);\n }\n\n /**\n * Checks if the given object is an instance of HassServiceTarget.\n *\n * @param {any} obj - The object to check.\n * @return {boolean} - True if the object is an instance of HassServiceTarget, false otherwise.\n */\n export function isCallServiceActionTarget(obj: any): obj is HassServiceTarget {\n return obj && [\"entity_id\", \"device_id\", \"area_id\"].some(key => key in obj);\n }\n}\n","import { Helper } from \"./Helper\";\nimport { EntityRegistryEntry } from \"./types/homeassistant/data/entity_registry\";\nimport { generic } from \"./types/strategy/generic\";\nimport MagicAreaRegistryEntry = generic.MagicAreaRegistryEntry;\nimport StrategyFloor = generic.StrategyFloor;\nimport StrategyArea = generic.StrategyArea;\nimport { ActionConfig } from \"./types/homeassistant/data/lovelace\";\nimport { DEVICE_CLASSES, AGGREGATE_DOMAINS, GROUP_DOMAINS, LIGHT_DOMAIN, UNDISCLOSED, LIGHT_GROUPS } from \"./variables\";\nimport { LovelaceChipConfig } from \"./types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { chips } from \"./types/strategy/chips\";\n\n/**\n * Groups the elements of an array based on a provided function\n * @param {T[]} array - The array to group\n * @param {(item: T) => K} fn - The function to determine the group key for each element\n * @returns {Record} - An object where the keys are the group identifiers and the values are arrays of grouped elements\n */\nexport function groupBy(array: T[], fn: (item: T) => K): Record {\n return array.reduce((result, item) => {\n // Determine the group key for the current item\n const key = fn(item);\n\n // If the group key does not exist in the result, create an array for it\n if (!result[key]) {\n result[key] = [];\n }\n\n // Add the current item to the group\n result[key].push(item);\n\n return result;\n }, {} as Record);\n}\n\nexport function slugify(text: string | null, separator: string = \"_\"): string {\n if (text === \"\" || text === null) {\n return \"\";\n }\n const slug = text.toLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .replace(/\\s+/g, separator)\n .replace(/-/g, \"_\");\n return slug === \"\" ? \"unknown\" : slug;\n}\n\nexport function getMagicAreaSlug(device: MagicAreaRegistryEntry): string {\n return slugify(device.name ?? \"\".replace('-', '_'));\n}\n\nexport function getStateContent(entity_id: string): string {\n return entity_id.startsWith('binary_sensor.') ? 'last-changed' : 'state'\n}\n\nexport function navigateTo(path: string): ActionConfig {\n return {\n action: \"navigate\",\n navigation_path: `${path}`,\n }\n}\n\nexport function getAggregateEntity(device: MagicAreaRegistryEntry, domains: string | string[], device_classes?: string | string[]): EntityRegistryEntry[] {\n const aggregateKeys: EntityRegistryEntry[] = [];\n const domainList = Array.isArray(domains) ? domains : [domains];\n const deviceClassList = Array.isArray(device_classes) ? device_classes : [device_classes];\n\n domainList.forEach(domain => {\n if (domain === \"light\") {\n Object.values(device?.entities ?? {}).forEach(entity => {\n if (entity.entity_id.endsWith('_lights')) {\n aggregateKeys.push(entity);\n }\n });\n } else if (GROUP_DOMAINS.includes(domain)) {\n aggregateKeys.push(device?.entities[`${domain}_group` as 'cover_group']);\n } else if (AGGREGATE_DOMAINS.includes(domain)) {\n deviceClassList.forEach(device_class => {\n aggregateKeys.push(device?.entities[`aggregate_${device_class}` as 'aggregate_motion']);\n });\n }\n });\n\n return aggregateKeys.filter(Boolean);\n}\n\nexport function getMAEntity(magic_device_id: string, domain: string, device_class?: string): EntityRegistryEntry | undefined {\n const magicAreaDevice = Helper.magicAreasDevices[magic_device_id];\n\n // TODO remove '' when new release\n if (domain === LIGHT_DOMAIN) return magicAreaDevice?.entities?.[''] ?? magicAreaDevice?.entities?.['all_lights']\n if (GROUP_DOMAINS.includes(domain)) return magicAreaDevice?.entities?.[`${domain}_group` as 'cover_group']\n if (device_class && [...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(device_class)) return magicAreaDevice?.entities?.[`aggregate_${device_class}` as 'aggregate_motion']\n return magicAreaDevice?.entities?.[domain] ?? undefined\n}\n\n\nexport function getEntityDomain(entityId: string): string {\n let domain = entityId.split(\".\")[0];\n return domain\n}\n\nexport function groupEntitiesByDomain(entity_ids: string[]): Record {\n return entity_ids\n .reduce((acc: Record, entity_id) => {\n let domain = getEntityDomain(entity_id)\n\n if (Object.keys(DEVICE_CLASSES).includes(domain)) {\n const entityState = Helper.getEntityState(entity_id);\n\n if (entityState?.attributes?.device_class) {\n domain = entityState.attributes.device_class\n }\n }\n if (!acc[domain]) {\n acc[domain] = [];\n }\n acc[domain].push(entity_id);\n return acc;\n }, {});\n}\n\n// Numeric chips.\nexport async function createChipsFromList(chipsList: string[], chipOptions?: Partial, magic_device_id: string = \"global\", area_slug?: string | string[]) {\n const chips: LovelaceChipConfig[] = [];\n\n const area_slugs = area_slug ? Array.isArray(area_slug) ? area_slug : [area_slug] : [];\n\n const domains = magic_device_id === \"global\"\n ? Object.keys(Helper.domains)\n : area_slugs.flatMap(area_slug => Object.keys(Helper.areas[area_slug]?.domains ?? {}));\n\n for (let chipType of chipsList) {\n if (!domains.includes(chipType)) continue;\n\n const className = Helper.sanitizeClassName(chipType + \"Chip\");\n\n try {\n let chipModule;\n if ([...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor].includes(chipType)) {\n chipModule = await import(\"./chips/AggregateChip\");\n const chip = new chipModule.AggregateChip({ ...chipOptions, device_class: chipType, area_slug, magic_device_id, tap_action: navigateTo(chipType) });\n chips.push(chip.getChip());\n } else {\n chipModule = await import(\"./chips/\" + className);\n const chip = new chipModule[className]({ ...chipOptions, area_slug });\n chips.push(chip.getChip());\n }\n } catch (e) {\n Helper.logError(`An error occurred while creating the ${chipType} chip!`, e);\n\n }\n }\n\n return chips;\n}\n\nexport function getDomainTranslationKey(domain: string, device_class?: string) {\n if (domain === 'scene') return 'ui.dialogs.quick-bar.commands.navigation.scene'\n\n if (AGGREGATE_DOMAINS.includes(domain) && device_class) return `component.${domain}.entity_component.${device_class}.name`\n return `component.${domain}.entity_component._.name`\n}\n\nexport function getStateTranslationKey(state: string, domain: string, device_class?: string) {\n if (domain === 'scene') return 'ui.dialogs.quick-bar.commands.navigation.scene'\n\n if (AGGREGATE_DOMAINS.includes(domain)) return `component.${domain}.entity_component.${device_class}.state.${state}`\n\n return `component.${domain}.entity_component._.name`\n}\n\nexport function getFloorName(floor: StrategyFloor): string {\n return floor.floor_id === UNDISCLOSED ? Helper.localize(\"component.linus_dashboard.entity.button.floor_not_found.name\") : floor.name!\n}\n\nexport function getAreaName(area: StrategyArea): string {\n return area.area_id === UNDISCLOSED ? Helper.localize(\"ui.card.area.area_not_found\") : area.name!\n}\n\nexport function getGlobalEntitiesExceptUndisclosed(device_class: string): string[] {\n return Helper.domains[device_class]?.filter(entity =>\n !Helper.areas[UNDISCLOSED].domains[device_class]?.includes(entity.entity_id)\n ).map(e => e.entity_id) ?? [];\n}\n\n\nexport function addLightGroupsToEntities(area: generic.StrategyArea, entities: generic.StrategyEntity[]) {\n const lightGroups = LIGHT_GROUPS\n .map(type => getMAEntity(area.slug, type))\n .filter(Boolean);\n\n for (const lightGroup of lightGroups) {\n if (!lightGroup) continue;\n const lightGroupState = Helper.getEntityState(lightGroup.entity_id);\n if (lightGroupState.attributes.entity_id?.length) {\n entities.unshift(lightGroup as generic.StrategyEntity);\n lightGroupState.attributes.entity_id.forEach((entity_id: string) => {\n const index = entities.findIndex(entity => entity.entity_id === entity_id);\n if (index !== -1) {\n entities.splice(index, 1);\n }\n });\n }\n }\n\n return entities;\n}","export const MAGIC_AREAS_DOMAIN = \"magic_areas\";\nexport const MAGIC_AREAS_NAME = \"Magic Areas\";\n\nexport const UNAVAILABLE = \"unavailable\";\nexport const UNDISCLOSED = \"undisclosed\";\n\nexport const TOD_ORDER = [\"morning\", \"daytime\", \"evening\", \"night\"];\n\nexport const LIGHT_DOMAIN = \"light\";\nexport const LIGHT_GROUPS = [\"overhead_lights\", \"accent_lights\", \"task_lights\", \"sleep_lights\"];\nexport const GROUP_DOMAINS = [\"climate\", \"media_player\", \"cover\"];\nexport const AGGREGATE_DOMAINS = [\"binary_sensor\", \"sensor\"];\n\nexport const DEVICE_CLASSES = {\n sensor: [\n \"temperature\",\n \"humidity\",\n \"illuminance\",\n\n \"battery\",\n\n // \"sensor\",\n \"apparent_power\",\n \"aqi\",\n \"area\",\n \"atmospheric_pressure\",\n \"blood_glucose_concentration\",\n \"carbon_dioxide\",\n \"carbon_monoxide\",\n \"current\",\n \"data_rate\",\n \"data_size\",\n \"date\",\n \"distance\",\n \"duration\",\n \"energy\",\n \"energy_storage\",\n \"enum\",\n \"frequency\",\n \"gas\",\n \"irradiance\",\n // \"moisture\",\n \"monetary\",\n \"nitrogen_dioxide\",\n \"nitrogen_monoxide\",\n \"nitrous_oxide\",\n \"ozone\",\n \"ph\",\n \"pm1\",\n \"pm25\",\n \"pm10\",\n \"power_factor\",\n \"power\",\n \"precipitation\",\n \"precipitation_intensity\",\n \"pressure\",\n \"reactive_power\",\n \"signal_strength\",\n \"sound_pressure\",\n \"speed\",\n \"sulphur_dioxide\",\n \"timestamp\",\n \"volatile_organic_compounds\",\n \"volatile_organic_compounds_parts\",\n \"voltage\",\n \"volume\",\n \"volume_flow_rate\",\n \"volume_storage\",\n \"water\",\n \"weight\",\n \"wind_speed\",\n ],\n binary_sensor: [\n \"battery_charging\",\n \"carbon_monoxide\",\n \"cold\",\n \"connectivity\",\n \"door\",\n \"garage_door\",\n // \"gas\",\n \"heat\",\n // \"light\",\n \"lock\",\n \"moisture\",\n \"motion\",\n \"moving\",\n \"occupancy\",\n \"opening\",\n \"plug\",\n // \"power\",\n \"presence\",\n \"problem\",\n \"running\",\n \"safety\",\n \"smoke\",\n \"sound\",\n \"tamper\",\n \"update\",\n \"vibration\",\n \"window\",\n ],\n};\n\nexport const AREA_CARDS_DOMAINS = [LIGHT_DOMAIN, \"switch\", \"climate\", \"fan\", \"camera\", \"cover\", \"vacuum\", \"media_player\", \"lock\", \"scene\", \"plant\", \"binary_sensor\", \"sensor\"];\n\nexport const CUSTOM_VIEWS = [\"home\", \"security\", \"security-details\"];\n\nexport const DOMAINS_VIEWS = [...AREA_CARDS_DOMAINS, ...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor];\n\nexport const HOME_EXPOSED_CHIPS = [\"weather\", \"alarm\", \"spotify\", LIGHT_DOMAIN, ...GROUP_DOMAINS, \"fan\", \"switch\", \"safety\", \"motion\", \"occupancy\", \"door\", \"window\"];\nexport const AREA_EXPOSED_CHIPS = [LIGHT_DOMAIN, ...GROUP_DOMAINS, \"fan\", \"switch\", \"safety\", ...DEVICE_CLASSES.binary_sensor, ...DEVICE_CLASSES.sensor];\nexport const SECURITY_EXPOSED_CHIPS = [\"alarm\", \"safety\", \"motion\", \"occupancy\", \"door\", \"window\"];\n\nexport const DEVICE_ICONS = {\n presence_hold: 'mdi:car-brake-hold'\n};\n\nexport const VIEWS_ICONS = {\n home: \"mdi:home-assistant\",\n security: \"mdi:security\",\n};\n\nexport const AREA_STATE_ICONS = {\n occupied: \"mdi:account\",\n extended: \"mdi:account-clock\",\n clear: \"mdi:account-off\",\n bright: \"mdi:brightness-2\",\n dark: \"mdi:brightness-5\",\n sleep: \"mdi:bed\",\n};\n\nexport const AREA_CONTROL_ICONS = {\n light: \"mdi:lightbulb-auto-outline\",\n climate: \"mdi:thermostat-auto\",\n media_player: \"mdi:auto-mode\",\n};\n","import { AGGREGATE_DOMAINS, AREA_CARDS_DOMAINS, UNDISCLOSED } from './../variables';\nimport { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { TemplateCardConfig } from '../types/lovelace-mushroom/cards/template-card-config';\nimport { ChipsCardConfig } from '../types/lovelace-mushroom/cards/chips-card';\nimport { addLightGroupsToEntities, getAreaName, getFloorName, slugify } from '../utils';\nimport { views } from '../types/strategy/views';\nimport { GroupedCard } from '../cards/GroupedCard';\n\n/**\n * Abstract View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class AbstractView {\n /**\n * Configuration of the view.\n *\n * @type {views.ViewConfig}\n */\n config: views.ViewConfig = {\n icon: \"mdi:view-dashboard\",\n type: \"sections\",\n subview: false,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * The domain of which we operate the devices.\n *\n * @private\n * @readonly\n */\n readonly #domain: string;\n\n /**\n * The device class of the view.\n *\n * @private\n * @readonly\n */\n readonly #device_class?: string;\n\n /**\n * Class constructor.\n *\n * @param {string} [domain] The domain which the view is representing.\n * @param {string} [device_class] The device class which the view is representing.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor(domain: string, device_class?: string) {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n\n this.#domain = domain;\n this.#device_class = device_class;\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createViewCards(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n return []\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n return []\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const configEntityHidden = Helper.strategyOptions.domains[this.#domain ?? \"_\"].hide_config_entities\n || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n let isFirstLoop = true;\n\n const floors = Helper.orderedFloors;\n\n for (const floor of floors) {\n if (floor.areas_slug.length === 0 || !AREA_CARDS_DOMAINS.includes(this.#domain ?? \"\")) continue;\n\n const floorCards = [];\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug])) {\n let entities = Helper.getAreaEntities(area, this.#device_class ?? this.#domain);\n const className = Helper.sanitizeClassName(this.#domain + \"Card\");\n const cardModule = await import(`../cards/${className}`);\n\n if (entities.length === 0 || !cardModule) continue;\n\n if (this.#domain === \"light\") entities = addLightGroupsToEntities(area, entities);\n\n const entityCards = entities\n .filter(entity => !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n && !Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"]?.hidden\n && !(entity.entity_category === \"config\" && configEntityHidden))\n .map(entity => new cardModule[className](entity).getCard());\n\n if (entityCards.length) {\n const areaCards = [new GroupedCard(entityCards).getCard()]\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[this.#domain].controllerCardOptions,\n subtitle: getAreaName(area),\n subtitleIcon: area.area_id === UNDISCLOSED ? \"mdi:help-circle\" : area.icon ?? \"mdi:floor-plan\",\n subtitleNavigate: area.slug\n } as any;\n if (this.#domain) {\n if (area.slug !== UNDISCLOSED && (!AGGREGATE_DOMAINS.includes(this.#domain) || this.#device_class)) {\n titleCardOptions.showControls = Helper.strategyOptions.domains[this.#domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[this.#domain].extraControls;\n titleCardOptions.controlChipOptions = { device_class: this.#device_class, area_slug: area.slug }\n } else {\n titleCardOptions.showControls = false;\n }\n }\n\n const areaControllerCard = new ControllerCard(titleCardOptions, this.#domain, area.slug).createCard();\n\n floorCards.push(...areaControllerCard, ...areaCards);\n }\n }\n\n if (floorCards.length) {\n const titleSectionOptions: any = {\n ...Helper.strategyOptions.domains[this.#domain].controllerCardOptions,\n title: getFloorName(floor),\n titleIcon: floor.icon ?? \"mdi:floor-plan\",\n titleNavigate: slugify(floor.name)\n };\n if (this.#domain) {\n if (!AGGREGATE_DOMAINS.includes(this.#domain) || this.#device_class) {\n titleSectionOptions.showControls = Helper.strategyOptions.domains[this.#domain].showControls;\n titleSectionOptions.extraControls = Helper.strategyOptions.domains[this.#domain].extraControls;\n titleSectionOptions.controlChipOptions = {\n device_class: this.#device_class,\n area_slug: floor.areas_slug\n }\n } else {\n titleSectionOptions.showControls = false;\n }\n }\n\n const floorControllerCard = floors.length > 1 ? new ControllerCard(\n titleSectionOptions,\n this.#domain,\n floor.floor_id\n ).createCard() : [];\n\n const section = { type: \"grid\", cards: [] } as LovelaceGridCardConfig;\n if (isFirstLoop) {\n section.cards.push(...this.viewControllerCard);\n isFirstLoop = false;\n }\n\n section.cards.push(...floorControllerCard);\n section.cards.push(...floorCards);\n viewSections.push(section);\n }\n }\n\n\n return viewSections;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n cards: await this.createViewCards(),\n };\n }\n\n /**\n * Get a target of entity IDs for the given domain.\n *\n * @param {string} domain - The target domain to retrieve entity IDs from.\n * @return {HassServiceTarget} - A target for a service call.\n */\n targetDomain(domain: string): HassServiceTarget {\n return {\n entity_id: Helper.domains[domain]?.filter(\n entity =>\n !entity.hidden_by\n && !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n ).map(entity => entity.entity_id),\n };\n }\n}\n\nexport { AbstractView };\n\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { DEVICE_CLASSES } from \"../variables\";\nimport { getDomainTranslationKey } from \"../utils\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Aggregate View Class.\n *\n * Used to create a view for entities of the fan domain.\n *\n * @class AggregateView\n * @extends AbstractView\n */\nclass AggregateView extends AbstractView {\n\n /**\n * Class constructor.\n *\n * @param {views.AggregateViewOptions} [options={}] Options for the view.\n */\n constructor(options: views.AggregateViewOptions) {\n const domain = options?.device_class ? DEVICE_CLASSES.sensor.includes(options?.device_class) ? \"sensor\" : \"binary_sensor\" : options?.domain;\n super(domain, options?.device_class);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n {\n title: Helper.localize(getDomainTranslationKey(domain, options?.device_class)),\n // subtitle: Helper.getDeviceClassCountTemplate(options?.device_class, \"eq\", \"on\") + ` ${Helper.localize(getStateTranslationKey(\"on\", domain, options?.device_class))}s`,\n showControls: !!options?.device_class,\n controlChipOptions: { device_class: options?.device_class },\n }, domain, \"global\").createCard();\n\n }\n}\n\nexport { AggregateView };\n","import { Helper } from \"../Helper\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyArea = generic.StrategyArea;\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { ImageAreaCard } from \"../cards/ImageAreaCard\";\nimport { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS, UNDISCLOSED } from \"../variables\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from \"../utils\";\nimport { ResourceKeys } from \"../types/homeassistant/data/frontend\";\nimport { UnavailableChip } from \"../chips/UnavailableChip\";\nimport { GroupedCard } from \"../cards/GroupedCard\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Area View Class.\n *\n * Used to create a Area view.\n *\n * @class AreaView\n */\nclass AreaView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: true,\n };\n\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyArea}\n * @private\n */\n area: StrategyArea\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(area: StrategyArea, options: views.ViewConfig = {}) {\n\n this.area = area;\n\n this.config = { ...this.config, ...options };\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n chips.push(new AreaStateChip({ area: this.area, showContent: true }).getChip());\n\n const areaChips = await createChipsFromList(AREA_EXPOSED_CHIPS, { show_content: true }, this.area.slug, this.area.slug);\n if (areaChips) {\n chips.push(...areaChips);\n }\n\n const unavailableChip = new UnavailableChip({ area_slug: this.area.slug }).getChip();\n if (unavailableChip) chips.push(unavailableChip);\n\n // (device?.entities.all_lights && device?.entities.all_lights.entity_id !== \"unavailable\" ? {\n // type: \"custom:mushroom-chips-card\",\n // alignment: \"center\",\n // chips: new AreaScenesChips(device, area).getChips()\n // } : undefined)\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const exposedDomainIds = Helper.getExposedDomainIds();\n\n // Create global section card if area is not undisclosed\n if (this.area.area_id !== UNDISCLOSED && this.area.picture) {\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: [new ImageAreaCard(this.area.area_id).getCard()],\n });\n }\n\n\n for (const domain of exposedDomainIds) {\n if (domain === \"default\") continue;\n\n try {\n const cardModule = await import(`../cards/${Helper.sanitizeClassName(domain + \"Card\")}`);\n let entities = Helper.getAreaEntities(this.area, domain);\n const configEntityHidden = Helper.strategyOptions.domains[domain]?.hide_config_entities || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n\n const domainCards: EntityCardConfig[] = [];\n\n if (entities.length) {\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n subtitle: Helper.localize(getDomainTranslationKey(domain)),\n domain,\n subtitleIcon: Helper.icons[domain as ResourceKeys]._?.default,\n subtitleNavigate: domain,\n };\n\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleCardOptions.showControls = false\n } else {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleCardOptions.controlChipOptions = { area_slug: this.area.slug };\n }\n }\n\n const titleCard = new ControllerCard(titleCardOptions, domain, this.area.slug).createCard();\n\n if (domain === \"light\") entities = addLightGroupsToEntities(this.area, entities);\n\n const entityCards = entities\n .filter(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && configEntityHidden);\n })\n .map(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n if (domain === \"sensor\" && Helper.getEntityState(entity.entity_id)?.attributes.unit_of_measurement) {\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, {\n type: \"custom:mini-graph-card\",\n entities: [entity.entity_id],\n ...cardOptions,\n }).getCard();\n }\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, cardOptions).getCard();\n });\n\n if (entityCards.length) {\n domainCards.push(new GroupedCard(entityCards).getCard())\n domainCards.unshift(...titleCard);\n }\n\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: domainCards,\n });\n }\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n\n // Handle default domain if not hidden\n if (!Helper.strategyOptions.domains.default.hidden) {\n const areaDevices = this.area.devices.filter(device_id => Helper.devices[device_id].area_id === this.area.area_id);\n const miscellaneousEntities = this.area.entities.filter(entity_id => {\n const entity = Helper.entities[entity_id];\n const entityLinked = areaDevices.includes(entity.device_id ?? \"null\") || entity.area_id === this.area.area_id;\n const entityUnhidden = entity.hidden_by === null && entity.disabled_by === null;\n const domainExposed = exposedDomainIds.includes(entity.entity_id.split(\".\", 1)[0]);\n\n return entityUnhidden && !domainExposed && entityLinked;\n });\n\n if (miscellaneousEntities.length) {\n try {\n const cardModule = await import(\"../cards/MiscellaneousCard\");\n\n const miscellaneousEntityCards = miscellaneousEntities\n .filter(entity_id => {\n const entity = Helper.entities[entity_id];\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && Helper.strategyOptions.domains[\"_\"].hide_config_entities);\n })\n .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard());\n\n const miscellaneousCards = new GroupedCard(miscellaneousEntityCards).getCard()\n\n const titleCard = {\n type: \"heading\",\n heading: Helper.localize(\"ui.panel.lovelace.editor.card.generic.other_cards\"),\n // icon: this.#defaultConfig.titleIcon,\n heading_style: \"subtitle\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n }\n\n viewSections.push({\n type: \"grid\",\n column_span: 1,\n cards: [titleCard, miscellaneousCards],\n });\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n }\n\n return viewSections;\n }\n\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createSectionCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n\n}\n\nexport { AreaView };","import { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\nimport { Helper } from \"../Helper\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Camera View Class.\n *\n * Used to create a view for entities of the camera domain.\n *\n * @class CameraView\n * @extends AbstractView\n */\nclass CameraView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"camera\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Cameras\",\n icon: \"mdi:cctv\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.camera.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(CameraView.#domain, \"ne\", \"off\") + ` ${Helper.localize(\"component.light.entity_component._.state.on\")}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(CameraView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(CameraView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.camera.controllerCardOptions,\n }, CameraView.#domain).createCard();\n }\n}\n\nexport { CameraView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\nimport { ClimateCard } from \"../cards/ClimateCard\";\nimport { ClimateChip } from \"../chips/ClimateChip\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Climate View Class.\n *\n * Used to create a view for entities of the climate domain.\n *\n * @class ClimateView\n * @extends AbstractView\n */\nclass ClimateView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"climate\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Climates\",\n icon: \"mdi:thermostat\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.climate.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(ClimateView.#domain, \"ne\", \"off\") + ` ${Helper.localize(`component.fan.entity_component._.state.on`)}s`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(ClimateView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(ClimateView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.climate.controllerCardOptions,\n }, ClimateView.#domain).createCard();\n }\n}\n\nexport { ClimateView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Cover View Class.\n *\n * Used to create a view for entities of the cover domain.\n *\n * @class CoverView\n * @extends AbstractView\n */\nclass CoverView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"cover\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Covers\",\n icon: \"mdi:window-open\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.cover.entity_component._.name`)}`,\n // subtitle: Helper.getCountTemplate(CoverView.#domain, \"eq\", \"open\") + ` ${Helper.localize(`component.cover.entity_component._.state.open`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(CoverView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(CoverView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.cover.controllerCardOptions,\n }, CoverView.#domain).createCard();\n }\n}\n\nexport { CoverView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Fan View Class.\n *\n * Used to create a view for entities of the fan domain.\n *\n * @class FanView\n * @extends AbstractView\n */\nclass FanView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"fan\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Fans\",\n icon: \"mdi:fan\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.fan.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(FanView.#domain, \"eq\", \"on\") + ` ${Helper.localize(`component.fan.entity_component._.state.on`)}s`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(FanView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(FanView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.fan.controllerCardOptions,\n }, FanView.#domain).createCard();\n }\n}\n\nexport { FanView };\n","import { Helper } from \"../Helper\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceCardConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { generic } from \"../types/strategy/generic\";\nimport StrategyFloor = generic.StrategyFloor;\nimport { EntityCardConfig } from \"../types/lovelace-mushroom/cards/entity-card-config\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS } from \"../variables\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { AreaStateChip } from \"../chips/AreaStateChip\";\nimport { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from \"../utils\";\nimport { GroupedCard } from \"../cards/GroupedCard\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Floor View Class.\n *\n * Used to create a Floor view.\n *\n * @class FloorView\n */\nclass FloorView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: true,\n };\n\n\n /**\n * Default configuration of the view.\n *\n * @type {StrategyFloor}\n * @private\n */\n floor: StrategyFloor;\n\n /**\n * View controller card.\n *\n * @type {LovelaceGridCardConfig[]}\n * @private\n */\n viewControllerCard: LovelaceGridCardConfig[] = [];\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(floor: StrategyFloor, options: views.ViewConfig = {}) {\n\n this.floor = floor;\n\n this.config = { ...this.config, ...options };\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n const device = Helper.magicAreasDevices[this.floor.floor_id];\n\n if (device) {\n chips.push(new AreaStateChip({ floor: this.floor, showContent: true }).getChip());\n }\n\n const areaChips = await createChipsFromList(AREA_EXPOSED_CHIPS, { show_content: true }, this.floor.floor_id, this.floor.areas_slug);\n if (areaChips) {\n chips.push(...areaChips);\n }\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n const exposedDomainIds = Helper.getExposedDomainIds();\n let isFirstLoop = true;\n\n for (const domain of exposedDomainIds) {\n if (domain === \"default\") continue;\n\n const domainCards: LovelaceCardConfig[] = [];\n\n try {\n const cardModule = await import(`../cards/${Helper.sanitizeClassName(domain + \"Card\")}`);\n const configEntityHidden = Helper.strategyOptions.domains[domain]?.hide_config_entities || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n\n for (const area of this.floor.areas_slug.map(area_slug => Helper.areas[area_slug])) {\n\n if (!area) continue\n\n\n let areaEntities = Helper.getAreaEntities(area, domain);\n\n if (areaEntities.length) {\n\n if (domain === \"light\") areaEntities = addLightGroupsToEntities(area, areaEntities);\n\n const entityCards: EntityCardConfig[] = areaEntities\n .filter(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === \"config\" && configEntityHidden);\n })\n .map(entity => {\n const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n if (domain === \"sensor\" && Helper.getEntityState(entity.entity_id)?.attributes.unit_of_measurement) {\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, {\n type: \"custom:mini-graph-card\",\n entities: [entity.entity_id],\n ...cardOptions,\n }).getCard();\n }\n return new cardModule[Helper.sanitizeClassName(domain + \"Card\")](entity, cardOptions).getCard();\n });\n\n if (entityCards.length) {\n const titleCardOptions = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n subtitle: area.name,\n domain,\n subtitleIcon: area.icon,\n subtitleNavigate: area.slug,\n };\n\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleCardOptions.showControls = false\n } else {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleCardOptions.controlChipOptions = { area_slug: area.slug };\n }\n }\n\n const titleCard = new ControllerCard(titleCardOptions, domain, area.slug).createCard();\n\n let areaCards = [new GroupedCard(entityCards).getCard()]\n areaCards.unshift(...titleCard);\n\n domainCards.push(...areaCards);\n }\n }\n }\n\n if (domainCards.length) {\n const titleSectionOptions: any = {\n ...Helper.strategyOptions.domains[domain].controllerCardOptions,\n title: Helper.localize(getDomainTranslationKey(domain)),\n titleIcon: Helper.icons[domain as keyof typeof Helper.icons]._?.default ?? \"mdi:floor-plan\",\n titleNavigate: domain,\n };\n if (domain) {\n if (AGGREGATE_DOMAINS.includes(domain)) {\n titleSectionOptions.showControls = false\n } else {\n titleSectionOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleSectionOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n titleSectionOptions.controlChipOptions = { area_slug: this.floor.areas_slug };\n }\n }\n\n const domainControllerCard = new ControllerCard(\n titleSectionOptions,\n domain,\n this.floor.floor_id\n ).createCard();\n\n const section = { type: \"grid\", cards: [] } as LovelaceGridCardConfig;\n if (isFirstLoop) {\n section.cards.push(...this.viewControllerCard);\n isFirstLoop = false;\n }\n\n section.cards.push(...domainControllerCard);\n section.cards.push(...domainCards);\n viewSections.push(section);\n }\n\n } catch (e) {\n Helper.logError(\"An error occurred while creating the domain cards!\", e);\n }\n }\n\n return viewSections;\n }\n\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createSectionCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n\n}\n\nexport { FloorView };\n","import { Helper } from \"../Helper\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { ActionConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { PersonCardConfig } from \"../types/lovelace-mushroom/cards/person-card-config\";\nimport { SettingsChip } from \"../chips/SettingsChip\";\nimport { SettingsPopup } from \"../popups/SettingsPopup\";\nimport { HOME_EXPOSED_CHIPS, UNAVAILABLE, UNDISCLOSED } from \"../variables\";\nimport { createChipsFromList, getFloorName, getMAEntity, navigateTo, slugify } from \"../utils\";\nimport { WeatherChip } from \"../chips/WeatherChip\";\nimport { AggregateChip } from \"../chips/AggregateChip\";\nimport { PersonCard } from \"../cards/PersonCard\";\nimport { ConditionalChip } from \"../chips/ConditionalChip\";\nimport { UnavailableChip } from \"../chips/UnavailableChip\";\n\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Home View Class.\n *\n * Used to create a Home view.\n *\n * @class HomeView\n */\nclass HomeView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n title: \"Home\",\n icon: \"mdi:home-assistant\",\n type: \"sections\",\n subview: false,\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createSectionBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n const chipOptions = Helper.strategyOptions.chips;\n\n let chipModule;\n\n // Weather chip.\n const weatherEntityId = Helper.linus_dashboard_config?.weather_entity_id;\n\n if (weatherEntityId) {\n try {\n const weatherChip = new WeatherChip(weatherEntityId);\n chips.push(weatherChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the weather chip!\", e);\n }\n }\n\n // Alarm chip.\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n\n if (alarmEntityId) {\n try {\n chipModule = await import(\"../chips/AlarmChip\");\n const alarmChip = new chipModule.AlarmChip(alarmEntityId);\n\n chips.push(alarmChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the alarm chip!\", e);\n }\n }\n\n // Spotify chip.\n const spotifyEntityId = chipOptions?.spotify_entity ?? Helper.domains.media_player?.find(\n (entity) => entity.entity_id.startsWith(\"media_player.spotify_\") && entity.disabled_by === null && entity.hidden_by === null,\n )?.entity_id;\n\n if (spotifyEntityId) {\n try {\n chipModule = await import(\"../chips/SpotifyChip\");\n const spotifyChip = new chipModule.SpotifyChip(spotifyEntityId);\n\n chips.push(spotifyChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the spotify chip!\", e);\n }\n }\n\n const homeChips = await createChipsFromList(HOME_EXPOSED_CHIPS, { show_content: true });\n if (homeChips) {\n chips.push(...homeChips);\n }\n\n const unavailableChip = new UnavailableChip().getChip();\n if (unavailableChip) chips.push(unavailableChip);\n\n const linusSettings = new SettingsChip({ tap_action: new SettingsPopup().getPopup() })\n\n chips.push(linusSettings.getChip());\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"areas\")) {\n // Areas section is hidden.\n return [];\n }\n\n const groupedSections: LovelaceGridCardConfig[] = [];\n const floors = Helper.orderedFloors\n let isFirstLoop = true;\n\n for (const floor of floors) {\n if (floor.areas_slug.length === 0) continue\n\n const options = Helper.strategyOptions;\n let floorSection = {\n type: \"grid\",\n column_span: 1,\n cards: [],\n } as LovelaceGridCardConfig;\n\n if (isFirstLoop) {\n const personCards = await this.#createPersonCards();\n floorSection.cards.push({\n type: \"horizontal-stack\",\n cards: personCards,\n } as StackCardConfig);\n\n\n if (!Helper.strategyOptions.home_view.hidden.includes(\"greeting\")) {\n const tod = Helper.magicAreasDevices.global?.entities.time_of_the_day;\n\n floorSection.cards.push({\n type: \"custom:mushroom-template-card\",\n primary: `\n {% set tod = states(\"${tod?.entity_id}\") %}\n {% if (tod == \"evening\") %} Bonne soirée, {{user}} !\n {% elif (tod == \"daytime\") %} Bonne après-midi, {{user}} !\n {% elif (tod == \"night\") %} Bonne nuit, {{user}} !\n {% else %} Bonjour, {{user}} !\n {% endif %}`,\n icon: \"mdi:hand-wave\",\n icon_color: \"orange\",\n layout_options: {\n grid_columns: 4,\n grid_rows: 1,\n },\n tap_action: {\n action: \"none\",\n } as ActionConfig,\n double_tap_action: {\n action: \"none\",\n } as ActionConfig,\n hold_action: {\n action: \"none\",\n } as ActionConfig,\n } as TemplateCardConfig);\n }\n\n\n // Add quick access cards.\n if (options.quick_access_cards) {\n floorSection.cards.push(...options.quick_access_cards);\n }\n\n // Add custom cards.\n if (options.extra_cards) {\n floorSection.cards.push(...options.extra_cards);\n }\n }\n\n if (isFirstLoop && !Helper.strategyOptions.home_view.hidden.includes(\"areasTitle\")) {\n floorSection.cards.push({\n type: \"heading\",\n heading: `${Helper.localize(\"ui.components.area-picker.area\")}s`,\n heading_style: \"title\",\n });\n\n isFirstLoop = false;\n }\n\n const temperature = floor.areas_slug.some(area_slug => {\n const area = Helper.areas[area_slug];\n return area.domains?.temperature;\n });\n\n if (floors.length > 1) {\n floorSection.cards.push(\n {\n type: \"heading\",\n heading: getFloorName(floor),\n heading_style: \"subtitle\",\n icon: floor.icon ?? \"mdi:floor-plan\",\n badges: [{\n type: \"custom:mushroom-chips-card\",\n alignment: \"end\",\n chips: [\n temperature &&\n new AggregateChip({\n device_class: \"temperature\",\n show_content: true,\n magic_device_id: floor.floor_id,\n area_slug: floor.areas_slug,\n tap_action: navigateTo('temperature')\n }).getChip(),\n ],\n card_mod: {\n style: `\n ha-card {\n min-width: 100px;\n }\n `,\n }\n }],\n tap_action: floor.floor_id !== UNDISCLOSED ? navigateTo(slugify(floor.name)) : undefined,\n }\n );\n }\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).values()) {\n\n type ModuleType = typeof import(\"../cards/HomeAreaCard\");\n\n let module: ModuleType;\n let moduleName =\n Helper.strategyOptions.areas[area.slug]?.type ??\n Helper.strategyOptions.areas[\"_\"]?.type ??\n \"default\";\n\n // Load module by type in strategy options.\n try {\n module = await import((`../cards/${moduleName}`));\n } catch (e) {\n // Fallback to the default strategy card.\n module = await import(\"../cards/HomeAreaCard\");\n\n if (Helper.strategyOptions.debug && moduleName !== \"default\") {\n console.error(e);\n }\n }\n\n // Get a card for the area.\n if (!Helper.strategyOptions.areas[area.slug as string]?.hidden) {\n let options = {\n ...Helper.strategyOptions.areas[\"_\"],\n ...Helper.strategyOptions.areas[area.slug],\n area_slug: area.slug,\n };\n\n floorSection.cards.push({\n ...new module.HomeAreaCard(options).getCard(),\n layout_options: {\n grid_columns: 2\n }\n });\n }\n }\n\n\n if (floor.floor_id === UNDISCLOSED) {\n floorSection.cards.push({\n type: \"custom:mushroom-template-card\",\n primary: Helper.localize(\"component.linus_dashboard.entity.button.add_new_area.state.on\"),\n secondary: Helper.localize(\"component.linus_dashboard.entity.button.add_new_area.state.off\"),\n multiline_secondary: true,\n icon: \"mdi:view-dashboard-variant\",\n fill_container: true,\n layout_options: {\n grid_columns: 4,\n grid_rows: 1,\n },\n tap_action: {\n action: \"navigate\",\n navigation_path: \"/config/areas/dashboard\",\n },\n } as any);\n }\n\n groupedSections.push(floorSection);\n }\n\n return groupedSections;\n }\n\n /**\n * Create the person cards to include in the view.\n *\n * @return {Promise} A Person Card array.\n */\n async #createPersonCards(): Promise {\n if (Helper.strategyOptions.home_view.hidden.includes(\"persons\")) {\n // Person section is hidden.\n\n return [];\n }\n\n const cards: PersonCardConfig[] = [];\n const persons = Helper.domains.person.filter((entity) => {\n return entity.hidden_by == null\n && entity.disabled_by == null\n });\n\n for (const person of persons) {\n cards.push(new PersonCard(person).getCard());\n }\n\n\n return cards;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createSectionBadges(),\n sections: await this.createSectionCards(),\n };\n }\n}\n\nexport { HomeView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Light View Class.\n *\n * Used to create a view for entities of the light domain.\n *\n * @class LightView\n * @extends AbstractView\n */\nclass LightView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"light\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n icon: \"mdi:lightbulb-group\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.light.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(LightView.#domain, \"eq\", \"on\") + ` ${Helper.localize(\"component.light.entity_component._.state.on\")}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(LightView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.light.controllerCardOptions,\n }, LightView.#domain, \"global\").createCard();\n\n }\n}\n\nexport { LightView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * MediaPlayer View Class.\n *\n * Used to create a view for entities of the media_player domain.\n *\n * @class MediaPlayerView\n * @extends AbstractView\n */\nclass MediaPlayerView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"media_player\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"MediaPlayers\",\n icon: \"mdi:cast\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.media_player.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(MediaPlayerView.#domain, \"ne\", \"off\") + \" media players on\",\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(MediaPlayerView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(MediaPlayerView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.media_player.controllerCardOptions,\n }, MediaPlayerView.#domain).createCard();\n }\n}\n\nexport { MediaPlayerView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Scene View Class.\n *\n * Used to create a view for entities of the scene domain.\n *\n * @class SceneView\n * @extends AbstractView\n */\nclass SceneView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"scene\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Scenes\",\n icon: \"mdi:palette\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`ui.dialogs.quick-bar.commands.navigation.scene`)}`,\n // subtitle: Helper.getCountTemplate(SceneView.#domain, \"ne\", \"on\") + ` ${Helper.localize(`ui.dialogs.quick-bar.commands.navigation.scene`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(SceneView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to scene all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(SceneView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.scene.controllerCardOptions,\n }, SceneView.#domain).createCard();\n }\n}\n\nexport { SceneView };\n","import { Helper } from \"../Helper\";\nimport { StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { TitleCardConfig } from \"../types/lovelace-mushroom/cards/title-card-config\";\nimport { AggregateCard } from \"../cards/AggregateCard\";\n\n/**\n * Security View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nabstract class SecurityDetailsView {\n /**\n * Configuration of the view.\n *\n * @type {LovelaceViewConfig}\n */\n config: LovelaceViewConfig = {\n title: Helper.localize(\"component.binary_sensor.entity_component.safety.name\"),\n icon: \"mdi:security\",\n subview: true,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {StackCardConfig}\n */\n viewControllerCard: StackCardConfig = {\n cards: [],\n type: \"\",\n };\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n protected constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TitleCardConfig)[]>} An array of card objects.\n */\n async createViewCards(): Promise<(StackCardConfig | TitleCardConfig)[]> {\n const viewCards: LovelaceCardConfig[] = [];\n\n const globalDevice = Helper.magicAreasDevices[\"global\"];\n\n if (!globalDevice) {\n console.debug(\"Security view : Global device not found\");\n return [];\n }\n\n const {\n aggregate_motion,\n aggregate_door,\n aggregate_window,\n } = globalDevice?.entities;\n\n\n if (aggregate_motion?.entity_id) {\n viewCards.push(new AggregateCard('binary_sensor', { device_class: 'motion', title: Helper.localize(\"component.binary_sensor.entity_component.motion.name\") }).createCard())\n // viewCards.push(new AggregateCard({ entity_id: aggregate_motion.entity_id }, { title: `${Helper.localize(\"component.binary_sensor.entity_component.motion.name\")}s` }).createCard())\n }\n\n if (aggregate_door?.entity_id || aggregate_window?.entity_id) {\n viewCards.push(new AggregateCard('binary_sensor', { device_class: ['door', 'window'], title: Helper.localize(\"component.binary_sensor.entity_component.opening.name\") }).createCard())\n // viewCards.push(new AggregateCard({ entity_id: [aggregate_door?.entity_id, aggregate_window?.entity_id] }, { title: `${Helper.localize(\"component.binary_sensor.entity_component.opening.name\")}s` }).createCard())\n }\n\n return viewCards;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n cards: await this.createViewCards(),\n };\n }\n}\n\nexport { SecurityDetailsView };\n","import { Helper } from \"../Helper\";\nimport { LovelaceGridCardConfig, StackCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { AlarmCard } from \"../cards/AlarmCard\";\nimport { PersonCard } from \"../cards/PersonCard\";\nimport { BinarySensorCard } from \"../cards/BinarySensorCard\";\nimport { createChipsFromList, getAreaName, getFloorName, navigateTo } from \"../utils\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { views } from \"../types/strategy/views\";\nimport { ChipsCardConfig } from \"../types/lovelace-mushroom/cards/chips-card\";\nimport { TemplateCardConfig } from \"../types/lovelace-mushroom/cards/template-card-config\";\nimport { LovelaceChipConfig } from \"../types/lovelace-mushroom/utils/lovelace/chip/types\";\nimport { SECURITY_EXPOSED_CHIPS } from \"../variables\";\nimport { GroupedCard } from \"../cards/GroupedCard\";\n\n/**\n * Security View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nclass SecurityView {\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n config: views.ViewConfig = {\n title: Helper.localize(\"component.binary_sensor.entity_component.safety.name\"),\n icon: \"mdi:security\",\n type: \"sections\",\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]>} Promise a View Card array.\n * @override\n */\n async createViewBadges(): Promise<(StackCardConfig | TemplateCardConfig | ChipsCardConfig)[]> {\n\n if (Helper.strategyOptions.home_view.hidden.includes(\"chips\")) {\n // Chips section is hidden.\n\n return [];\n }\n\n const chips: LovelaceChipConfig[] = [];\n\n let chipModule;\n\n // Alarm chip.\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n\n if (alarmEntityId) {\n try {\n chipModule = await import(\"../chips/AlarmChip\");\n const alarmChip = new chipModule.AlarmChip(alarmEntityId);\n\n chips.push(alarmChip.getChip());\n } catch (e) {\n Helper.logError(\"An error occurred while creating the alarm chip!\", e);\n }\n }\n\n const homeChips = await createChipsFromList(SECURITY_EXPOSED_CHIPS, { show_content: true });\n if (homeChips) {\n chips.push(...homeChips);\n }\n\n return chips.map(chip => ({\n type: \"custom:mushroom-chips-card\",\n alignment: \"center\",\n chips: [chip],\n }));\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n */\n async createSectionCards(): Promise {\n const globalSection: LovelaceGridCardConfig = {\n type: \"grid\",\n column_span: 1,\n cards: []\n };\n\n const alarmEntityId = Helper.linus_dashboard_config?.alarm_entity_id\n if (alarmEntityId) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Sécurité\",\n heading_style: \"title\",\n }\n )\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Alarme\",\n heading_style: \"subtitle\",\n })\n globalSection.cards.push(new AlarmCard(Helper.entities[alarmEntityId]).getCard())\n }\n\n const persons = Helper.domains.person\n if (persons?.length) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Personnes\",\n heading_style: \"subtitle\",\n })\n\n for (const person of persons) {\n globalSection.cards.push(new PersonCard(person, {\n layout: \"horizontal\",\n primary_info: \"name\",\n secondary_info: \"state\"\n }).getCard())\n }\n }\n\n const globalDevice = Helper.magicAreasDevices[\"global\"];\n\n const {\n aggregate_motion,\n aggregate_door,\n aggregate_window,\n } = globalDevice?.entities ?? {};\n\n if (aggregate_motion || aggregate_door || aggregate_window) {\n globalSection.cards.push(\n {\n type: \"heading\",\n heading: \"Capteurs\",\n heading_style: \"subtitle\",\n })\n if (aggregate_motion?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_motion, { tap_action: navigateTo('security-details') }).getCard());\n if (aggregate_door?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_door, { tap_action: navigateTo('security-details') }).getCard());\n if (aggregate_window?.entity_id) globalSection.cards.push(new BinarySensorCard(aggregate_window, { tap_action: navigateTo('security-details') }).getCard());\n }\n\n const sections = [globalSection]\n if (Helper.domains.camera?.length) sections.push(await this.createCamerasSection())\n\n return sections;\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} An array of card objects.\n */\n async createCamerasSection(): Promise {\n const domain = \"camera\";\n const camerasSection: LovelaceGridCardConfig = {\n type: \"grid\",\n column_span: 1,\n cards: [\n {\n type: \"heading\",\n heading: `${Helper.localize(`component.camera.entity_component._.name`)}s`,\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n icon: Helper.icons[domain]._?.default,\n }]\n };\n\n const orderedFloors = Object.values(Helper.floors).sort((a, b) => {\n // Check if 'level' is undefined in either object\n if (a.level === undefined) return 1; // a should come after b\n if (b.level === undefined) return -1; // b should come after a\n\n // Both 'level' values are defined, compare them\n return a.level - b.level;\n });\n\n for (const floor of orderedFloors) {\n\n if (floor.areas_slug.length === 0) continue\n\n let floorCards: LovelaceCardConfig[] = [\n {\n type: \"heading\",\n heading: getFloorName(floor),\n heading_style: \"title\",\n badges: [],\n layout_options: {\n grid_columns: \"full\",\n grid_rows: 1\n },\n icon: floor.icon ?? \"mdi:floor-plan\",\n }\n ]\n\n // Create cards for each area.\n for (const [i, area] of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).entries()) {\n const entities = Helper.getAreaEntities(area, domain);\n const className = Helper.sanitizeClassName(domain + \"Card\");\n\n const cardModule = await import(`../cards/${className}`);\n\n if (entities.length === 0 || !cardModule) {\n continue;\n }\n\n // Set the target for controller cards to the current area.\n let target: HassServiceTarget = {\n area_id: [area.slug],\n };\n\n let areaCards: LovelaceCardConfig[] = [];\n\n const entityCards = []\n\n // Create a card for each domain-entity of the current area.\n for (const entity of entities) {\n let cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id];\n let deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"];\n\n if (cardOptions?.hidden || deviceOptions?.hidden) {\n continue;\n }\n\n const configEntityHidden =\n Helper.strategyOptions.domains[domain ?? \"_\"].hide_config_entities\n || Helper.strategyOptions.domains[\"_\"].hide_config_entities;\n if (entity.entity_category === \"config\" && configEntityHidden) {\n continue;\n }\n entityCards.push(new cardModule[className](entity, cardOptions).getCard());\n }\n\n if (entityCards.length) {\n areaCards.push(new GroupedCard(entityCards).getCard())\n }\n\n // Vertical stack the area cards if it has entities.\n if (areaCards.length) {\n const titleCardOptions: any = {};\n titleCardOptions.subtitle = getAreaName(area)\n titleCardOptions.subtitleIcon = area.icon ?? \"mdi:floor-plan\";\n titleCardOptions.navigate = area.slug;\n if (domain) {\n titleCardOptions.showControls = Helper.strategyOptions.domains[domain].showControls;\n titleCardOptions.extraControls = Helper.strategyOptions.domains[domain].extraControls;\n }\n\n // Create and insert a Controller card.\n areaCards.unshift(...new ControllerCard(target, titleCardOptions, domain).createCard())\n\n floorCards.push(...areaCards);\n }\n }\n\n if (floorCards.length > 1) camerasSection.cards.push(...floorCards)\n }\n\n return camerasSection;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n badges: await this.createViewBadges(),\n sections: await this.createSectionCards(),\n };\n }\n}\n\nexport { SecurityView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Switch View Class.\n *\n * Used to create a view for entities of the switch domain.\n *\n * @class SwitchView\n * @extends AbstractView\n */\nclass SwitchView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"switch\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Switches\",\n icon: \"mdi:dip-switch\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.switch.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(SwitchView.#domain, \"eq\", \"on\") + \" switches on\",\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(SwitchView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(SwitchView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.switch.controllerCardOptions,\n }, SwitchView.#domain).createCard();\n }\n}\n\nexport { SwitchView };\n","import { AREA_CARDS_DOMAINS, UNAVAILABLE, UNDISCLOSED } from '../variables';\nimport { Helper } from \"../Helper\";\nimport { LovelaceGridCardConfig } from \"../types/homeassistant/lovelace/cards/types\";\nimport { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from \"../types/homeassistant/data/lovelace\";\nimport { HassServiceTarget } from \"home-assistant-js-websocket\";\nimport { getEntityDomain, getFloorName, slugify } from '../utils';\nimport { views } from '../types/strategy/views';\nimport { GroupedCard } from '../cards/GroupedCard';\n\n/**\n * Abstract View Class.\n *\n * To create a new view, extend the new class with this one.\n *\n * @class\n * @abstract\n */\nclass UnavailableView {\n /**\n * Configuration of the view.\n *\n * @type {views.ViewConfig}\n */\n config: views.ViewConfig = {\n title: Helper.localize(\"state.default.unavailable\"),\n icon: \"mdi:view-dashboard\",\n type: \"sections\",\n subview: true,\n };\n\n /**\n * A card to switch all entities in the view.\n *\n * @type {LovelaceCardConfig[]}\n */\n viewControllerCard: LovelaceCardConfig[] = []\n\n /**\n * Class constructor.\n *\n * @throws {Error} If trying to instantiate this class.\n * @throws {Error} If the Helper module isn't initialized.\n */\n constructor() {\n if (!Helper.isInitialized()) {\n throw new Error(\"The Helper module must be initialized before using this one.\");\n }\n }\n\n /**\n * Create the cards to include in the view.\n *\n * @return {Promise} Promise a View Card array.\n * @override\n */\n async createSectionCards(): Promise {\n const viewSections: LovelaceGridCardConfig[] = [];\n\n for (const floor of Helper.orderedFloors) {\n if (floor.areas_slug.length === 0) continue;\n\n const floorCards = [];\n\n for (const area of floor.areas_slug.map(area_slug => Helper.areas[area_slug]).values()) {\n const entities = Helper.areas[area.slug].entities;\n const unavailableEntities = entities?.filter(entity_id => AREA_CARDS_DOMAINS.includes(getEntityDomain(entity_id)) && Helper.getEntityState(entity_id)?.state === UNAVAILABLE).map(entity_id => Helper.entities[entity_id]);\n const cardModule = await import(`../cards/MiscellaneousCard`);\n\n if (entities.length === 0 || !cardModule) continue;\n\n let target: HassServiceTarget = { area_id: [area.slug] };\n if (area.area_id === UNDISCLOSED) {\n target = { entity_id: unavailableEntities.map(entity => entity.entity_id) };\n }\n\n const entityCards = unavailableEntities\n .filter(entity => !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n && !Helper.strategyOptions.card_options?.[entity.device_id ?? \"null\"]?.hidden\n && !(entity.entity_category === \"config\"))\n .map(entity => new cardModule.MiscellaneousCard(entity).getCard());\n\n if (entityCards.length) {\n floorCards.push(new GroupedCard(entityCards).getCard())\n }\n }\n\n if (floorCards.length) {\n const titleSectionOptions: any = {\n title: getFloorName(floor),\n titleIcon: floor.icon ?? \"mdi:floor-plan\",\n titleNavigate: slugify(floor.name)\n };\n viewSections.push({ type: \"grid\", cards: floorCards });\n }\n }\n\n if (viewSections.length) {\n viewSections.unshift({ type: \"grid\", cards: this.viewControllerCard });\n }\n\n return viewSections;\n }\n\n /**\n * Get a view object.\n *\n * The view includes the cards which are created by method createViewCards().\n *\n * @returns {Promise} The view object.\n */\n async getView(): Promise {\n return {\n ...this.config,\n sections: await this.createSectionCards(),\n };\n }\n\n /**\n * Get a target of entity IDs for the given domain.\n *\n * @param {string} domain - The target domain to retrieve entity IDs from.\n * @return {HassServiceTarget} - A target for a service call.\n */\n targetDomain(domain: string): HassServiceTarget {\n return {\n entity_id: Helper.domains[domain]?.filter(\n entity =>\n !entity.hidden_by\n && !Helper.strategyOptions.card_options?.[entity.entity_id]?.hidden\n ).map(entity => entity.entity_id),\n };\n }\n}\n\nexport { UnavailableView };\n","import { Helper } from \"../Helper\";\nimport { ControllerCard } from \"../cards/ControllerCard\";\nimport { AbstractView } from \"./AbstractView\";\nimport { views } from \"../types/strategy/views\";\nimport { cards } from \"../types/strategy/cards\";\n\n// noinspection JSUnusedGlobalSymbols Class is dynamically imported.\n/**\n * Vacuum View Class.\n *\n * Used to create a view for entities of the vacuum domain.\n *\n * @class VacuumView\n * @extends AbstractView\n */\nclass VacuumView extends AbstractView {\n /**\n * Domain of the view's entities.\n *\n * @type {string}\n * @static\n * @private\n */\n static #domain: string = \"vacuum\";\n\n /**\n * Default configuration of the view.\n *\n * @type {views.ViewConfig}\n * @private\n */\n #defaultConfig: views.ViewConfig = {\n title: \"Vacuums\",\n icon: \"mdi:robot-vacuum\",\n subview: false,\n };\n\n /**\n * Default configuration of the view's Controller card.\n *\n * @type {cards.ControllerCardOptions}\n * @private\n */\n #viewControllerCardConfig: cards.ControllerCardOptions = {\n title: `${Helper.localize(`component.vacuum.entity_component._.name`)}s`,\n // subtitle: Helper.getCountTemplate(VacuumView.#domain, \"ne\", \"off\") + ` ${Helper.localize(`component.vacuum.entity_component._.state.on`)}`,\n };\n\n /**\n * Class constructor.\n *\n * @param {views.ViewConfig} [options={}] Options for the view.\n */\n constructor(options: views.ViewConfig = {}) {\n super(VacuumView.#domain);\n\n this.config = Object.assign(this.config, this.#defaultConfig, options);\n\n // Create a Controller card to switch all entities of the domain.\n this.viewControllerCard = new ControllerCard(\n this.targetDomain(VacuumView.#domain),\n {\n ...this.#viewControllerCardConfig,\n ...Helper.strategyOptions.domains.vacuum.controllerCardOptions,\n }, VacuumView.#domain).createCard();\n }\n}\n\nexport { VacuumView };\n","var map = {\n\t\"./AbstractCard\": [\n\t\t\"./src/cards/AbstractCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AbstractCard.ts\": [\n\t\t\"./src/cards/AbstractCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateCard\": [\n\t\t\"./src/cards/AggregateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateCard.ts\": [\n\t\t\"./src/cards/AggregateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmCard\": [\n\t\t\"./src/cards/AlarmCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmCard.ts\": [\n\t\t\"./src/cards/AlarmCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./BinarySensorCard\": [\n\t\t\"./src/cards/BinarySensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./BinarySensorCard.ts\": [\n\t\t\"./src/cards/BinarySensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraCard\": [\n\t\t\"./src/cards/CameraCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraCard.ts\": [\n\t\t\"./src/cards/CameraCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateCard\": [\n\t\t\"./src/cards/ClimateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateCard.ts\": [\n\t\t\"./src/cards/ClimateCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ControllerCard\": [\n\t\t\"./src/cards/ControllerCard.ts\"\n\t],\n\t\"./ControllerCard.ts\": [\n\t\t\"./src/cards/ControllerCard.ts\"\n\t],\n\t\"./CoverCard\": [\n\t\t\"./src/cards/CoverCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverCard.ts\": [\n\t\t\"./src/cards/CoverCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanCard\": [\n\t\t\"./src/cards/FanCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanCard.ts\": [\n\t\t\"./src/cards/FanCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./GroupedCard\": [\n\t\t\"./src/cards/GroupedCard.ts\"\n\t],\n\t\"./GroupedCard.ts\": [\n\t\t\"./src/cards/GroupedCard.ts\"\n\t],\n\t\"./HomeAreaCard\": [\n\t\t\"./src/cards/HomeAreaCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./HomeAreaCard.ts\": [\n\t\t\"./src/cards/HomeAreaCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./ImageAreaCard\": [\n\t\t\"./src/cards/ImageAreaCard.ts\"\n\t],\n\t\"./ImageAreaCard.ts\": [\n\t\t\"./src/cards/ImageAreaCard.ts\"\n\t],\n\t\"./LightCard\": [\n\t\t\"./src/cards/LightCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightCard.ts\": [\n\t\t\"./src/cards/LightCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LockCard\": [\n\t\t\"./src/cards/LockCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./LockCard.ts\": [\n\t\t\"./src/cards/LockCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerCard\": [\n\t\t\"./src/cards/MediaPlayerCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerCard.ts\": [\n\t\t\"./src/cards/MediaPlayerCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MiscellaneousCard\": [\n\t\t\"./src/cards/MiscellaneousCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./MiscellaneousCard.ts\": [\n\t\t\"./src/cards/MiscellaneousCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./NumberCard\": [\n\t\t\"./src/cards/NumberCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./NumberCard.ts\": [\n\t\t\"./src/cards/NumberCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./PersonCard\": [\n\t\t\"./src/cards/PersonCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./PersonCard.ts\": [\n\t\t\"./src/cards/PersonCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneCard\": [\n\t\t\"./src/cards/SceneCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneCard.ts\": [\n\t\t\"./src/cards/SceneCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SensorCard\": [\n\t\t\"./src/cards/SensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SensorCard.ts\": [\n\t\t\"./src/cards/SensorCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwipeCard\": [\n\t\t\"./src/cards/SwipeCard.ts\"\n\t],\n\t\"./SwipeCard.ts\": [\n\t\t\"./src/cards/SwipeCard.ts\"\n\t],\n\t\"./SwitchCard\": [\n\t\t\"./src/cards/SwitchCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchCard.ts\": [\n\t\t\"./src/cards/SwitchCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumCard\": [\n\t\t\"./src/cards/VacuumCard.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumCard.ts\": [\n\t\t\"./src/cards/VacuumCard.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/cards lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AbstractChip\": [\n\t\t\"./src/chips/AbstractChip.ts\"\n\t],\n\t\"./AbstractChip.ts\": [\n\t\t\"./src/chips/AbstractChip.ts\"\n\t],\n\t\"./AggregateChip\": [\n\t\t\"./src/chips/AggregateChip.ts\"\n\t],\n\t\"./AggregateChip.ts\": [\n\t\t\"./src/chips/AggregateChip.ts\"\n\t],\n\t\"./AlarmChip\": [\n\t\t\"./src/chips/AlarmChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./AlarmChip.ts\": [\n\t\t\"./src/chips/AlarmChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaScenesChips\": [\n\t\t\"./src/chips/AreaScenesChips.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaScenesChips.ts\": [\n\t\t\"./src/chips/AreaScenesChips.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaStateChip\": [\n\t\t\"./src/chips/AreaStateChip.ts\"\n\t],\n\t\"./AreaStateChip.ts\": [\n\t\t\"./src/chips/AreaStateChip.ts\"\n\t],\n\t\"./ClimateChip\": [\n\t\t\"./src/chips/ClimateChip.ts\"\n\t],\n\t\"./ClimateChip.ts\": [\n\t\t\"./src/chips/ClimateChip.ts\"\n\t],\n\t\"./ConditionalChip\": [\n\t\t\"./src/chips/ConditionalChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./ConditionalChip.ts\": [\n\t\t\"./src/chips/ConditionalChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./ControlChip\": [\n\t\t\"./src/chips/ControlChip.ts\"\n\t],\n\t\"./ControlChip.ts\": [\n\t\t\"./src/chips/ControlChip.ts\"\n\t],\n\t\"./CoverChip\": [\n\t\t\"./src/chips/CoverChip.ts\"\n\t],\n\t\"./CoverChip.ts\": [\n\t\t\"./src/chips/CoverChip.ts\"\n\t],\n\t\"./FanChip\": [\n\t\t\"./src/chips/FanChip.ts\"\n\t],\n\t\"./FanChip.ts\": [\n\t\t\"./src/chips/FanChip.ts\"\n\t],\n\t\"./LightChip\": [\n\t\t\"./src/chips/LightChip.ts\"\n\t],\n\t\"./LightChip.ts\": [\n\t\t\"./src/chips/LightChip.ts\"\n\t],\n\t\"./MediaPlayerChip\": [\n\t\t\"./src/chips/MediaPlayerChip.ts\"\n\t],\n\t\"./MediaPlayerChip.ts\": [\n\t\t\"./src/chips/MediaPlayerChip.ts\"\n\t],\n\t\"./SafetyChip\": [\n\t\t\"./src/chips/SafetyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SafetyChip.ts\": [\n\t\t\"./src/chips/SafetyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SettingsChip\": [\n\t\t\"./src/chips/SettingsChip.ts\"\n\t],\n\t\"./SettingsChip.ts\": [\n\t\t\"./src/chips/SettingsChip.ts\"\n\t],\n\t\"./SpotifyChip\": [\n\t\t\"./src/chips/SpotifyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SpotifyChip.ts\": [\n\t\t\"./src/chips/SpotifyChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchChip\": [\n\t\t\"./src/chips/SwitchChip.ts\"\n\t],\n\t\"./SwitchChip.ts\": [\n\t\t\"./src/chips/SwitchChip.ts\"\n\t],\n\t\"./ToggleSceneChip\": [\n\t\t\"./src/chips/ToggleSceneChip.ts\"\n\t],\n\t\"./ToggleSceneChip.ts\": [\n\t\t\"./src/chips/ToggleSceneChip.ts\"\n\t],\n\t\"./UnavailableChip\": [\n\t\t\"./src/chips/UnavailableChip.ts\"\n\t],\n\t\"./UnavailableChip.ts\": [\n\t\t\"./src/chips/UnavailableChip.ts\"\n\t],\n\t\"./WeatherChip\": [\n\t\t\"./src/chips/WeatherChip.ts\",\n\t\t\"main\"\n\t],\n\t\"./WeatherChip.ts\": [\n\t\t\"./src/chips/WeatherChip.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/chips lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./AbstractView\": [\n\t\t\"./src/views/AbstractView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AbstractView.ts\": [\n\t\t\"./src/views/AbstractView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateView\": [\n\t\t\"./src/views/AggregateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AggregateView.ts\": [\n\t\t\"./src/views/AggregateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./AreaView\": [\n\t\t\"./src/views/AreaView.ts\"\n\t],\n\t\"./AreaView.ts\": [\n\t\t\"./src/views/AreaView.ts\"\n\t],\n\t\"./CameraView\": [\n\t\t\"./src/views/CameraView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CameraView.ts\": [\n\t\t\"./src/views/CameraView.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateView\": [\n\t\t\"./src/views/ClimateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./ClimateView.ts\": [\n\t\t\"./src/views/ClimateView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverView\": [\n\t\t\"./src/views/CoverView.ts\",\n\t\t\"main\"\n\t],\n\t\"./CoverView.ts\": [\n\t\t\"./src/views/CoverView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanView\": [\n\t\t\"./src/views/FanView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FanView.ts\": [\n\t\t\"./src/views/FanView.ts\",\n\t\t\"main\"\n\t],\n\t\"./FloorView\": [\n\t\t\"./src/views/FloorView.ts\"\n\t],\n\t\"./FloorView.ts\": [\n\t\t\"./src/views/FloorView.ts\"\n\t],\n\t\"./HomeView\": [\n\t\t\"./src/views/HomeView.ts\",\n\t\t\"main\"\n\t],\n\t\"./HomeView.ts\": [\n\t\t\"./src/views/HomeView.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightView\": [\n\t\t\"./src/views/LightView.ts\",\n\t\t\"main\"\n\t],\n\t\"./LightView.ts\": [\n\t\t\"./src/views/LightView.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerView\": [\n\t\t\"./src/views/MediaPlayerView.ts\",\n\t\t\"main\"\n\t],\n\t\"./MediaPlayerView.ts\": [\n\t\t\"./src/views/MediaPlayerView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneView\": [\n\t\t\"./src/views/SceneView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SceneView.ts\": [\n\t\t\"./src/views/SceneView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityDetailsView\": [\n\t\t\"./src/views/SecurityDetailsView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityDetailsView.ts\": [\n\t\t\"./src/views/SecurityDetailsView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityView\": [\n\t\t\"./src/views/SecurityView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SecurityView.ts\": [\n\t\t\"./src/views/SecurityView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchView\": [\n\t\t\"./src/views/SwitchView.ts\",\n\t\t\"main\"\n\t],\n\t\"./SwitchView.ts\": [\n\t\t\"./src/views/SwitchView.ts\",\n\t\t\"main\"\n\t],\n\t\"./UnavailableView\": [\n\t\t\"./src/views/UnavailableView.ts\",\n\t\t\"main\"\n\t],\n\t\"./UnavailableView.ts\": [\n\t\t\"./src/views/UnavailableView.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumView\": [\n\t\t\"./src/views/VacuumView.ts\",\n\t\t\"main\"\n\t],\n\t\"./VacuumView.ts\": [\n\t\t\"./src/views/VacuumView.ts\",\n\t\t\"main\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = \"./src/views lazy recursive ^\\\\.\\\\/.*$\";\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/linus-strategy.ts\");\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/src/cards/GroupedCard.ts b/src/cards/GroupedCard.ts new file mode 100644 index 0000000..8574c48 --- /dev/null +++ b/src/cards/GroupedCard.ts @@ -0,0 +1,66 @@ +import { AbstractCard } from "./AbstractCard"; +import { EntityCardConfig } from "../types/lovelace-mushroom/cards/entity-card-config"; +import { SwipeCard } from "./SwipeCard"; +import { SwipeCardConfig } from "../types/lovelace-mushroom/cards/swipe-card-config"; + + +// noinspection JSUnusedGlobalSymbols Class is dynamically imported. +/** + * Grouped Card Class + * + * Used to create a card for controlling an entity of the light domain. + * + * @class + * @extends AbstractCard + */ +class GroupedCard { + + /** + * Configuration of the card. + * + * @type {AbstractCard} + */ + config: { cards: (AbstractCard | EntityCardConfig)[] } = { + cards: [], + }; + + /** + * Class constructor. + * + * @param {AbstractCard[]} cards The hass entity to create a card for. + * @throws {Error} If the Helper module isn't initialized. + */ + constructor(cards: (AbstractCard | EntityCardConfig)[]) { + + this.config.cards = cards; + } + + /** + * Get a card. + * + * @return {AbstractCard} A card object. + */ + getCard(): EntityCardConfig | SwipeCardConfig { + + // Group entity cards into pairs and create vertical stacks + const groupedEntityCards = []; + for (let i = 0; i < this.config.cards.length; i += 2) { + groupedEntityCards.push({ + type: "vertical-stack", + cards: this.config.cards.slice(i, i + 2), + }); + } + + // If there are more than 2 groups, use a GroupedCard, otherwise use a horizontal stack + const groupedCards = groupedEntityCards.length > 2 + ? new SwipeCard(groupedEntityCards).getCard() + : { + type: "horizontal-stack", + cards: groupedEntityCards, + } + + return groupedCards; + } +} + +export { GroupedCard }; diff --git a/src/cards/SwipeCard.ts b/src/cards/SwipeCard.ts index e7e2bf7..25f797b 100644 --- a/src/cards/SwipeCard.ts +++ b/src/cards/SwipeCard.ts @@ -1,4 +1,4 @@ -import {AbstractCard} from "./AbstractCard"; +import { AbstractCard } from "./AbstractCard"; import { SwipeCardConfig } from "../types/lovelace-mushroom/cards/swipe-card-config"; import { SwiperOptions } from "swiper/types/swiper-options"; import { EntityCardConfig } from "../types/lovelace-mushroom/cards/entity-card-config"; @@ -39,14 +39,14 @@ class SwipeCard { * @param {SwiperOptions} [options={}] Options for the card. * @throws {Error} If the Helper module isn't initialized. */ - constructor(cards: (AbstractCard | EntityCardConfig)[], options?: SwiperOptions) { + constructor(cards: (AbstractCard | EntityCardConfig)[], options?: SwiperOptions) { this.config.cards = cards; const multipleSlicesPerView = 2.2 const slidesPerView = cards.length > 2 ? multipleSlicesPerView : cards.length ?? 1 - this.config.parameters = {...this.config.parameters, slidesPerView, ...options}; + this.config.parameters = { ...this.config.parameters, slidesPerView, ...options }; } /** @@ -55,10 +55,8 @@ class SwipeCard { * @return {SwipeCardConfig} A card object. */ getCard(): SwipeCardConfig { - return { - ...this.config, - }; + return this.config; } } -export {SwipeCard}; +export { SwipeCard }; diff --git a/src/views/AbstractView.ts b/src/views/AbstractView.ts index 649da00..34f26da 100644 --- a/src/views/AbstractView.ts +++ b/src/views/AbstractView.ts @@ -6,9 +6,9 @@ import { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from ". import { HassServiceTarget } from "home-assistant-js-websocket"; import { TemplateCardConfig } from '../types/lovelace-mushroom/cards/template-card-config'; import { ChipsCardConfig } from '../types/lovelace-mushroom/cards/chips-card'; -import { SwipeCard } from '../cards/SwipeCard'; import { addLightGroupsToEntities, getAreaName, getFloorName, slugify } from '../utils'; import { views } from '../types/strategy/views'; +import { GroupedCard } from '../cards/GroupedCard'; /** * Abstract View Class. @@ -126,7 +126,7 @@ abstract class AbstractView { .map(entity => new cardModule[className](entity).getCard()); if (entityCards.length) { - const areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards; + const areaCards = [new GroupedCard(entityCards).getCard()] const titleCardOptions = { ...Helper.strategyOptions.domains[this.#domain].controllerCardOptions, subtitle: getAreaName(area), diff --git a/src/views/AreaView.ts b/src/views/AreaView.ts index fefe9ee..b181490 100644 --- a/src/views/AreaView.ts +++ b/src/views/AreaView.ts @@ -6,10 +6,8 @@ import { TemplateCardConfig } from "../types/lovelace-mushroom/cards/template-ca import { LovelaceViewConfig } from "../types/homeassistant/data/lovelace"; import { generic } from "../types/strategy/generic"; import StrategyArea = generic.StrategyArea; -import { SwipeCard } from "../cards/SwipeCard"; import { EntityCardConfig } from "../types/lovelace-mushroom/cards/entity-card-config"; import { ControllerCard } from "../cards/ControllerCard"; -import { HassServiceTarget } from "home-assistant-js-websocket"; import { ImageAreaCard } from "../cards/ImageAreaCard"; import { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS, UNDISCLOSED } from "../variables"; import { LovelaceChipConfig } from "../types/lovelace-mushroom/utils/lovelace/chip/types"; @@ -17,6 +15,7 @@ import { AreaStateChip } from "../chips/AreaStateChip"; import { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from "../utils"; import { ResourceKeys } from "../types/homeassistant/data/frontend"; import { UnavailableChip } from "../chips/UnavailableChip"; +import { GroupedCard } from "../cards/GroupedCard"; // noinspection JSUnusedGlobalSymbols Class is dynamically imported. @@ -172,7 +171,7 @@ class AreaView { }); if (entityCards.length) { - domainCards.push(...(entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards)); + domainCards.push(new GroupedCard(entityCards).getCard()) domainCards.unshift(...titleCard); } @@ -212,7 +211,7 @@ class AreaView { }) .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard()); - const miscellaneousCards = miscellaneousEntityCards.length > 2 ? [new SwipeCard(miscellaneousEntityCards).getCard()] : miscellaneousEntityCards; + const miscellaneousCards = new GroupedCard(miscellaneousEntityCards).getCard() const titleCard = { type: "heading", @@ -229,7 +228,7 @@ class AreaView { viewSections.push({ type: "grid", column_span: 1, - cards: [titleCard, ...miscellaneousCards], + cards: [titleCard, miscellaneousCards], }); } catch (e) { Helper.logError("An error occurred while creating the domain cards!", e); diff --git a/src/views/FloorView.ts b/src/views/FloorView.ts index 5cfd97d..bff6667 100644 --- a/src/views/FloorView.ts +++ b/src/views/FloorView.ts @@ -6,14 +6,13 @@ import { TemplateCardConfig } from "../types/lovelace-mushroom/cards/template-ca import { LovelaceCardConfig, LovelaceViewConfig } from "../types/homeassistant/data/lovelace"; import { generic } from "../types/strategy/generic"; import StrategyFloor = generic.StrategyFloor; -import { SwipeCard } from "../cards/SwipeCard"; import { EntityCardConfig } from "../types/lovelace-mushroom/cards/entity-card-config"; import { ControllerCard } from "../cards/ControllerCard"; -import { HassServiceTarget } from "home-assistant-js-websocket"; import { AGGREGATE_DOMAINS, AREA_EXPOSED_CHIPS } from "../variables"; import { LovelaceChipConfig } from "../types/lovelace-mushroom/utils/lovelace/chip/types"; import { AreaStateChip } from "../chips/AreaStateChip"; import { addLightGroupsToEntities, createChipsFromList, getDomainTranslationKey } from "../utils"; +import { GroupedCard } from "../cards/GroupedCard"; // noinspection JSUnusedGlobalSymbols Class is dynamically imported. @@ -169,8 +168,7 @@ class FloorView { const titleCard = new ControllerCard(titleCardOptions, domain, area.slug).createCard(); - let areaCards; - areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards; + let areaCards = [new GroupedCard(entityCards).getCard()] areaCards.unshift(...titleCard); domainCards.push(...areaCards); @@ -212,42 +210,6 @@ class FloorView { viewSections.push(section); } - - // // Handle default domain if not hidden - // if (!Helper.strategyOptions.domains.default.hidden) { - // const areaDevices = area.devices.filter(device_id => Helper.devices[device_id].area_id === floor.area_id); - // const miscellaneousEntities = floor.entities.filter(entity_id => { - // const entity = Helper.entities[entity_id]; - // const entityLinked = areaDevices.includes(entity.device_id ?? "null") || entity.area_id === floor.area_id; - // const entityUnhidden = entity.hidden_by === null && entity.disabled_by === null; - // const domainExposed = exposedDomainIds.includes(entity.entity_id.split(".", 1)[0]); - - // return entityUnhidden && !domainExposed && entityLinked; - // }); - - // if (miscellaneousEntities.length) { - // try { - // const cardModule = await import("../cards/MiscellaneousCard"); - - // const swipeCard = miscellaneousEntities - // .filter(entity_id => { - // const entity = Helper.entities[entity_id]; - // const cardOptions = Helper.strategyOptions.card_options?.[entity.entity_id]; - // const deviceOptions = Helper.strategyOptions.card_options?.[entity.device_id ?? "null"]; - // return !cardOptions?.hidden && !deviceOptions?.hidden && !(entity.entity_category === "config" && Helper.strategyOptions.domains["_"].hide_config_entities); - // }) - // .map(entity_id => new cardModule.MiscellaneousCard(Helper.entities[entity_id], Helper.strategyOptions.card_options?.[entity_id]).getCard()); - - // viewSections.push({ - // type: "grid", - // column_span: 1, - // cards: [new SwipeCard(swipeCard).getCard()], - // }); - // } catch (e) { - // Helper.logError("An error occurred while creating the domain cards!", e); - // } - // } - // } } catch (e) { Helper.logError("An error occurred while creating the domain cards!", e); } diff --git a/src/views/HomeView.ts b/src/views/HomeView.ts index 6123bcd..2d04533 100644 --- a/src/views/HomeView.ts +++ b/src/views/HomeView.ts @@ -219,7 +219,10 @@ class HomeView { isFirstLoop = false; } - const temperatureEntity = getMAEntity(floor.floor_id, "sensor", "temperature"); + const temperature = floor.areas_slug.some(area_slug => { + const area = Helper.areas[area_slug]; + return area.domains?.temperature; + }); if (floors.length > 1) { floorSection.cards.push( @@ -232,10 +235,14 @@ class HomeView { type: "custom:mushroom-chips-card", alignment: "end", chips: [ - new ConditionalChip( - [{ entity: temperatureEntity?.entity_id!, state_not: UNAVAILABLE }], - new AggregateChip({ device_class: "temperature", show_content: true, magic_device_id: floor.floor_id, area_slug: floor.areas_slug }).getChip() - ).getChip(), + temperature && + new AggregateChip({ + device_class: "temperature", + show_content: true, + magic_device_id: floor.floor_id, + area_slug: floor.areas_slug, + tap_action: navigateTo('temperature') + }).getChip(), ], card_mod: { style: ` diff --git a/src/views/SecurityView.ts b/src/views/SecurityView.ts index 99de721..b15f6b6 100644 --- a/src/views/SecurityView.ts +++ b/src/views/SecurityView.ts @@ -6,13 +6,13 @@ import { PersonCard } from "../cards/PersonCard"; import { BinarySensorCard } from "../cards/BinarySensorCard"; import { createChipsFromList, getAreaName, getFloorName, navigateTo } from "../utils"; import { HassServiceTarget } from "home-assistant-js-websocket"; -import { SwipeCard } from "../cards/SwipeCard"; import { ControllerCard } from "../cards/ControllerCard"; import { views } from "../types/strategy/views"; import { ChipsCardConfig } from "../types/lovelace-mushroom/cards/chips-card"; import { TemplateCardConfig } from "../types/lovelace-mushroom/cards/template-card-config"; import { LovelaceChipConfig } from "../types/lovelace-mushroom/utils/lovelace/chip/types"; import { SECURITY_EXPOSED_CHIPS } from "../variables"; +import { GroupedCard } from "../cards/GroupedCard"; /** * Security View Class. @@ -264,11 +264,7 @@ class SecurityView { } if (entityCards.length) { - if (entityCards.length > 2) { - areaCards.push(new SwipeCard(entityCards).getCard()); - } else { - areaCards.push(...entityCards); - } + areaCards.push(new GroupedCard(entityCards).getCard()) } // Vertical stack the area cards if it has entities. diff --git a/src/views/UnavailableView.ts b/src/views/UnavailableView.ts index 8096eb4..16bf10d 100644 --- a/src/views/UnavailableView.ts +++ b/src/views/UnavailableView.ts @@ -3,10 +3,9 @@ import { Helper } from "../Helper"; import { LovelaceGridCardConfig } from "../types/homeassistant/lovelace/cards/types"; import { LovelaceCardConfig, LovelaceSectionConfig, LovelaceViewConfig } from "../types/homeassistant/data/lovelace"; import { HassServiceTarget } from "home-assistant-js-websocket"; - -import { SwipeCard } from '../cards/SwipeCard'; import { getEntityDomain, getFloorName, slugify } from '../utils'; import { views } from '../types/strategy/views'; +import { GroupedCard } from '../cards/GroupedCard'; /** * Abstract View Class. @@ -81,8 +80,7 @@ class UnavailableView { .map(entity => new cardModule.MiscellaneousCard(entity).getCard()); if (entityCards.length) { - const areaCards = entityCards.length > 2 ? [new SwipeCard(entityCards).getCard()] : entityCards; - floorCards.push(...areaCards); + floorCards.push(new GroupedCard(entityCards).getCard()) } }