diff --git a/custom_components/battery_notes/__pycache__/__init__.cpython-312.pyc b/custom_components/battery_notes/__pycache__/__init__.cpython-312.pyc index 3b4bf5f0..4e183058 100644 Binary files a/custom_components/battery_notes/__pycache__/__init__.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/binary_sensor.cpython-312.pyc b/custom_components/battery_notes/__pycache__/binary_sensor.cpython-312.pyc index fdfb216e..0c0e0a44 100644 Binary files a/custom_components/battery_notes/__pycache__/binary_sensor.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/binary_sensor.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/button.cpython-312.pyc b/custom_components/battery_notes/__pycache__/button.cpython-312.pyc index 8b63781c..d15f2b25 100644 Binary files a/custom_components/battery_notes/__pycache__/button.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/button.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/common.cpython-312.pyc b/custom_components/battery_notes/__pycache__/common.cpython-312.pyc index 5b005bc2..328be69e 100644 Binary files a/custom_components/battery_notes/__pycache__/common.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/common.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/config_flow.cpython-312.pyc b/custom_components/battery_notes/__pycache__/config_flow.cpython-312.pyc index c397f2a5..993521c7 100644 Binary files a/custom_components/battery_notes/__pycache__/config_flow.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/config_flow.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/const.cpython-312.pyc b/custom_components/battery_notes/__pycache__/const.cpython-312.pyc index e703beef..418870c8 100644 Binary files a/custom_components/battery_notes/__pycache__/const.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/const.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/coordinator.cpython-312.pyc b/custom_components/battery_notes/__pycache__/coordinator.cpython-312.pyc index e715a229..7932788d 100644 Binary files a/custom_components/battery_notes/__pycache__/coordinator.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/coordinator.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/device.cpython-312.pyc b/custom_components/battery_notes/__pycache__/device.cpython-312.pyc index 257afd53..164086a6 100644 Binary files a/custom_components/battery_notes/__pycache__/device.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/device.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/diagnostics.cpython-312.pyc b/custom_components/battery_notes/__pycache__/diagnostics.cpython-312.pyc index 115cf5f3..bd1eba37 100644 Binary files a/custom_components/battery_notes/__pycache__/diagnostics.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/diagnostics.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/discovery.cpython-312.pyc b/custom_components/battery_notes/__pycache__/discovery.cpython-312.pyc index 954725fa..4b3b2f1a 100644 Binary files a/custom_components/battery_notes/__pycache__/discovery.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/discovery.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/entity.cpython-312.pyc b/custom_components/battery_notes/__pycache__/entity.cpython-312.pyc index 1d7a7d78..682451f9 100644 Binary files a/custom_components/battery_notes/__pycache__/entity.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/entity.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/library.cpython-312.pyc b/custom_components/battery_notes/__pycache__/library.cpython-312.pyc index baaf6075..f0778c1a 100644 Binary files a/custom_components/battery_notes/__pycache__/library.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/library.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/library_updater.cpython-312.pyc b/custom_components/battery_notes/__pycache__/library_updater.cpython-312.pyc index aaa4c9e3..80f44b23 100644 Binary files a/custom_components/battery_notes/__pycache__/library_updater.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/library_updater.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/sensor.cpython-312.pyc b/custom_components/battery_notes/__pycache__/sensor.cpython-312.pyc index fc120874..e442cffa 100644 Binary files a/custom_components/battery_notes/__pycache__/sensor.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/sensor.cpython-312.pyc differ diff --git a/custom_components/battery_notes/__pycache__/store.cpython-312.pyc b/custom_components/battery_notes/__pycache__/store.cpython-312.pyc index 8475f494..ab4fb801 100644 Binary files a/custom_components/battery_notes/__pycache__/store.cpython-312.pyc and b/custom_components/battery_notes/__pycache__/store.cpython-312.pyc differ diff --git a/custom_components/battery_notes/const.py b/custom_components/battery_notes/const.py index f0c25b56..7dc83cde 100644 --- a/custom_components/battery_notes/const.py +++ b/custom_components/battery_notes/const.py @@ -11,7 +11,7 @@ LOGGER: Logger = getLogger(__package__) -MIN_HA_VERSION = "2024.5" +MIN_HA_VERSION = "2024.7" manifestfile = Path(__file__).parent / "manifest.json" with open(file=manifestfile, encoding="UTF-8") as json_file: diff --git a/custom_components/battery_notes/data/library.json b/custom_components/battery_notes/data/library.json index e45263e8..8dffcdc2 100644 --- a/custom_components/battery_notes/data/library.json +++ b/custom_components/battery_notes/data/library.json @@ -104,6 +104,11 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "_TZ3000_bi6lpsew", + "model": "TS0043", + "battery_type": "CR2032" + }, { "manufacturer": "_TZ3000_bjawzodf", "model": "TY0201", @@ -271,6 +276,11 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "_TZ3000_zl1kmjqx", + "model": "TY0201", + "battery_type": "CR2450" + }, { "manufacturer": "_TZ3210_alxkwn0h", "model": "TS0201", @@ -352,6 +362,12 @@ "battery_type": "AA", "battery_quantity": 2 }, + { + "manufacturer": "_TZE200_hue3yfsn", + "model": "TS0601", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "_TZE200_kb5noeto", "model": "TS0601", @@ -364,6 +380,12 @@ "battery_type": "AAA", "battery_quantity": 3 }, + { + "manufacturer": "_TZE200_myd45weu", + "model": "TS0601", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "_TZE200_p3dbf6qs", "model": "TS0601", @@ -482,6 +504,13 @@ "model": "ZWA011", "battery_type": "CR14250" }, + { + "manufacturer": "Aeotec Ltd.", + "model": "MultiSensor 7", + "model_id": "ZWA024", + "battery_type": "CR123A", + "battery_quantity": 2 + }, { "manufacturer": "Aeotec Ltd.", "model": "ZW187", @@ -807,6 +836,12 @@ "battery_type": "LR20", "battery_quantity": 3 }, + { + "manufacturer": "Aqara", + "model": "Roller shade driver E1", + "model_id": "ZNJLBL01LM", + "battery_type": "Rechargeable" + }, { "manufacturer": "Aqara", "model": "RTCGQ11LM", @@ -1036,6 +1071,12 @@ "battery_type": "AA", "battery_quantity": 4 }, + { + "manufacturer": "August Home Inc.", + "model": "AUG-SL05-M01-G01", + "battery_type": "CR123", + "battery_quantity": 2 + }, { "manufacturer": "August Home Inc.", "model": "AUG-SL05-M01-S01", @@ -1219,6 +1260,12 @@ "model": "3328-G", "battery_type": "CR2450" }, + { + "manufacturer": "CentraLite", + "model": "3400", + "battery_type": "CR123A", + "battery_quantity": 2 + }, { "manufacturer": "CentraLite", "model": "3450-L", @@ -1660,6 +1707,12 @@ "battery_type": "AA", "battery_quantity": 3 }, + { + "manufacturer": "eQ-3", + "model": "HmIP-ASIR-2", + "battery_type": "AA", + "battery_quantity": 3 + }, { "manufacturer": "eQ-3", "model": "HmIP-DLD", @@ -1988,6 +2041,14 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "Eve Systems", + "model": "Eve Thermo 20EBP1701", + "model_id": "79", + "hw_version": "1.1", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "Eve Systems", "model": "Thermo 20EBP1701", @@ -2236,6 +2297,12 @@ "model": "HESZB-120", "battery_type": "CR123A" }, + { + "manufacturer": "frient A/S", + "model": "MOSZB-140", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "frient A/S", "model": "SBTZB-110", @@ -2244,7 +2311,7 @@ { "manufacturer": "frient A/S", "model": "SMSZB-120", - "battery_type": "CR123" + "battery_type": "CR123A" }, { "manufacturer": "Fyta", @@ -2267,6 +2334,11 @@ "model": "32563 / ZW6301", "battery_type": "CR2" }, + { + "manufacturer": "Gerda", + "model": "Tedee Pro", + "battery_type": "Rechargeable" + }, { "manufacturer": "GiEX", "model": "Water irrigation valve (QT06_1)", @@ -2300,6 +2372,13 @@ "model": "Pixel 6a", "battery_type": "Rechargeable" }, + { + "manufacturer": "Google", + "model": "Topaz-2.33", + "hw_version": "Battery", + "battery_type": "AA", + "battery_quantity": 6 + }, { "manufacturer": "Google", "model": "Topaz-2.7", @@ -2350,6 +2429,21 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "Govee", + "model": "H5121", + "battery_type": "CR2450" + }, + { + "manufacturer": "Govee", + "model": "H5122", + "battery_type": "CR2032" + }, + { + "manufacturer": "Govee", + "model": "H5123", + "battery_type": "CR1632" + }, { "manufacturer": "Govee", "model": "H5177", @@ -2519,6 +2613,17 @@ "battery_type": "CR123A", "battery_quantity": 2 }, + { + "manufacturer": "Honeywell", + "model": "RCHTSENSOR", + "battery_type": "AAA", + "battery_quantity": 2 + }, + { + "manufacturer": "Honeywell", + "model": "RF6000", + "battery_type": "CR123" + }, { "manufacturer": "Honeywell", "model": "TH6320ZW", @@ -2604,12 +2709,12 @@ { "manufacturer": "Ikea", "model": "FYRTUR roller blind, block-out (E1757)", - "battery_type": "BRAUNIT Battery pack (rechargeable)" + "battery_type": "Rechargeable" }, { "manufacturer": "Ikea", "model": "KADRILJ roller blind (E1926)", - "battery_type": "BRAUNIT Battery pack (rechargeable)" + "battery_type": "Rechargeable" }, { "manufacturer": "IKEA", @@ -2717,12 +2822,12 @@ { "manufacturer": "IKEA of Sweden", "model": "FYRTUR block-out roller blind", - "battery_type": "BRAUNIT Battery pack" + "battery_type": "Rechargeable" }, { "manufacturer": "IKEA of Sweden", "model": "KADRILJ roller blind", - "battery_type": "BRAUNIT Battery pack" + "battery_type": "Rechargeable" }, { "manufacturer": "IKEA of Sweden", @@ -3232,6 +3337,22 @@ "model": "Z3-1BRL", "battery_type": "CR2032" }, + { + "manufacturer": "Lutron Electronics Co., Inc", + "model": "CSX-YJ-XX (SerenaHoneycombShade)", + "battery_type": "D", + "battery_quantity": 6 + }, + { + "manufacturer": "Lutron Electronics Co., Inc", + "model": "PJ2-3BRL-GXX-F01 (Pico3ButtonRaiseLower)", + "battery_type": "CR2032" + }, + { + "manufacturer": "Lutron Electronics Co., Inc", + "model": "PJ2-3BRL-GXX-X01 (Pico3ButtonRaiseLower)", + "battery_type": "CR2032" + }, { "manufacturer": "Merkury", "model": "SS003", @@ -3312,7 +3433,7 @@ { "manufacturer": "Mopeka IOT", "model": "M1015", - "battery_type": "AAA-Lithium" + "battery_type": "AAA Lithium" }, { "manufacturer": "Mopeka IOT", @@ -3351,6 +3472,11 @@ "model": "Zigbee 4 channel switch K8 (black) (4512721)", "battery_type": "CR2450" }, + { + "manufacturer": "Namron AS", + "model": "4512762", + "battery_type": "CR2350" + }, { "manufacturer": "Neo", "model": "Alarm (NAS-AB02B2)", @@ -3784,6 +3910,19 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "PLab", + "model": "Home Buttons", + "hw_version": "2.3", + "battery_type": "Rechargeable" + }, + { + "manufacturer": "PLab", + "model": "Home Buttons Mini", + "hw_version": "1.1", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "PLab", "model": "HomeButtons", @@ -3929,7 +4068,7 @@ { "manufacturer": "Ring", "model": "Intercom", - "battery_type": "\"Rechargeable\"" + "battery_type": "Rechargeable" }, { "manufacturer": "Ring", @@ -3940,7 +4079,7 @@ { "manufacturer": "Ring", "model": "Peephole Cam", - "battery_type": "\"Rechargeable\"" + "battery_type": "Rechargeable" }, { "manufacturer": "Ring", @@ -4245,6 +4384,14 @@ "model": "Shelly H&T", "battery_type": "MANUAL" }, + { + "manufacturer": "Shelly", + "model": "Shelly H&T Gen3", + "model_id": "S3SN-0U12A", + "hw_version": "gen3", + "battery_type": "AA", + "battery_quantity": 4 + }, { "manufacturer": "Shelly", "model": "Shelly Motion", @@ -4274,7 +4421,7 @@ { "manufacturer": "Shelly", "model": "SNSN-0013A", - "battery_type": "AA (LR6)", + "battery_type": "AA", "battery_quantity": 4 }, { @@ -4494,7 +4641,7 @@ { "manufacturer": "SmartLabs, Inc", "model": "2844-222 (0x10, 0x16)", - "battery_type": "9-volt" + "battery_type": "9V" }, { "manufacturer": "SmartLabs, Inc", @@ -4600,6 +4747,11 @@ "model": "Water sensor (3315-S)", "battery_type": "CR2" }, + { + "manufacturer": "SmartWave", + "model": "SmartWave Window Covering (10001)", + "battery_type": "Rechargeable" + }, { "manufacturer": "Smartwings", "model": "Roller shade (WM25L-Z)", @@ -4882,6 +5034,13 @@ "battery_type": "AAA", "battery_quantity": 3 }, + { + "manufacturer": "Tado", + "model": "Smart Radiator Thermostat", + "model_id": "SRT01", + "battery_type": "AA", + "battery_quantity": 2 + }, { "manufacturer": "Tado", "model": "SU02", @@ -4963,6 +5122,13 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "Third Reality", + "model": "Temperature and Humidity Sensor Lite", + "model_id": "3RTHS0224Z", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "Third Reality", "model": "Water sensor (3RWS18BZ)", @@ -4975,6 +5141,12 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "Third Reality, Inc", + "model": "3RDTS01056Z", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "Third Reality, Inc", "model": "3RMS16BZ", @@ -5020,7 +5192,7 @@ { "manufacturer": "Tile", "model": "T1101", - "battery_type": "Cr2032" + "battery_type": "CR2032" }, { "manufacturer": "Tile", @@ -5182,6 +5354,12 @@ "model": "Door sensor (TS0203)", "battery_type": "CR2032" }, + { + "manufacturer": "Tuya", + "model": "Door sensor (TS0203)", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "TuYa", "model": "Door sensor (ZD08)", @@ -5224,6 +5402,13 @@ "model": "Luminance motion sensor (ZG-204ZL)", "battery_type": "CR2450" }, + { + "manufacturer": "Tuya", + "model": "Motion Sensor", + "model_id": "rjzon9kyxpoeksj3", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "TuYa", "model": "Motion sensor (809WZT)", @@ -5234,6 +5419,12 @@ "model": "Motion sensor (IH012-RT01)", "battery_type": "CR2450" }, + { + "manufacturer": "Tuya", + "model": "Motion Sensor (rjzon9kyxpoeksj3)", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "TuYa", "model": "Motion sensor (TS0202)", @@ -5370,6 +5561,12 @@ "model": "Smoke Alarm (gymi8xdlnxtpslit)", "battery_type": "CR123A" }, + { + "manufacturer": "Tuya", + "model": "Smoke Detector", + "model_id": "lsjnzox4skgduemo", + "battery_type": "PP3" + }, { "manufacturer": "Tuya", "model": "Smoke Detector (lsjnzox4skgduemo)", @@ -5398,6 +5595,20 @@ "battery_type": "AA", "battery_quantity": 2 }, + { + "manufacturer": "Tuya", + "model": "Soil sensor (TS0601_soil_3)", + "battery_type": "AAA", + "battery_quantity": 2 + }, + { + "manufacturer": "Tuya", + "model": "T & H Sensor", + "model_id": "lf36y5nwb8jkxwgg", + "hw_version": "TH01CB3S", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "TuYa", "model": "T & H Sensor (lf36y5nwb8jkxwgg)", @@ -5432,6 +5643,13 @@ "battery_type": "AAA", "battery_quantity": 2 }, + { + "manufacturer": "Tuya", + "model": "Temperature and humidity sensor", + "model_id": "ZG-227Z", + "battery_type": "AAA", + "battery_quantity": 2 + }, { "manufacturer": "TuYa", "model": "Temperature and humidity sensor (TH02Z)", @@ -5465,6 +5683,12 @@ "model": "Temperature and humidity sensor (ZTH05)", "battery_type": "CR2032" }, + { + "manufacturer": "Tuya", + "model": "Temperature and humidity sensor (ZTH08-E)", + "battery_type": "AAA", + "battery_quantity": 3 + }, { "manufacturer": "Tuya", "model": "TH05", @@ -5668,6 +5892,16 @@ "battery_type": "AAA", "battery_quantity": 3 }, + { + "manufacturer": "TUYATEC-1wzznw9a", + "model": "RH3052", + "battery_type": "CR2032" + }, + { + "manufacturer": "TUYATEC-r9hgssol", + "model": "RH3001", + "battery_type": "CR2450" + }, { "manufacturer": "TUYATEC-riuj5xzs", "model": "RH3052", @@ -6331,6 +6565,12 @@ "battery_type": "AA", "battery_quantity": 4 }, + { + "manufacturer": "Yale", + "model": "SD-L1000-CH", + "battery_type": "AA", + "battery_quantity": 4 + }, { "manufacturer": "Yale", "model": "YRD210", @@ -6373,6 +6613,18 @@ "battery_type": "AA", "battery_quantity": 4 }, + { + "manufacturer": "Yale Home Inc.", + "model": "AK-R1", + "battery_type": "AAA", + "battery_quantity": 2 + }, + { + "manufacturer": "Yale Home Inc.", + "model": "ASL6_05/101110/MB", + "battery_type": "AA", + "battery_quantity": 4 + }, { "manufacturer": "Yeelight", "model": "ble YLAI003", @@ -6511,6 +6763,12 @@ "manufacturer": "Zooz", "model": "ZSE44", "battery_type": "CR2450" + }, + { + "manufacturer": "Zooz", + "model": "ZSE70", + "battery_type": "CR123A", + "battery_quantity": 2 } ] } \ No newline at end of file diff --git a/custom_components/battery_notes/manifest.json b/custom_components/battery_notes/manifest.json index 2d231d2e..4a37791d 100644 --- a/custom_components/battery_notes/manifest.json +++ b/custom_components/battery_notes/manifest.json @@ -9,5 +9,5 @@ "integration_type": "device", "iot_class": "calculated", "issue_tracker": "https://github.com/andrew-codechimp/ha-battery-notes/issues", - "version": "2.4.8" + "version": "2.4.12" } diff --git a/custom_components/battery_notes/sensor.py b/custom_components/battery_notes/sensor.py index bfce69bc..cbaa4786 100644 --- a/custom_components/battery_notes/sensor.py +++ b/custom_components/battery_notes/sensor.py @@ -432,13 +432,9 @@ async def _entity_rename_listener(event: Event) -> None: ) @callback - def _filter_entity_id(event_data: Mapping[str, Any] | Event) -> bool: + def _filter_entity_id(event_data: Mapping[str, Any]) -> bool: """Only dispatch the listener for update events concerning the source entity.""" - # Breaking change in 2024.4.0, check for Event for versions prior to this - if type(event_data) is Event: # pylint: disable=unidiomatic-typecheck - event_data = event_data.data - return ( event_data["action"] == "update" and "old_entity_id" in event_data diff --git a/custom_components/battery_notes/translations/cs.json b/custom_components/battery_notes/translations/cs.json index 3dccff45..0057cfee 100644 --- a/custom_components/battery_notes/translations/cs.json +++ b/custom_components/battery_notes/translations/cs.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Výrobce: {manufacturer}\nModel: {model}\nID modelu: {model_id}\nHardware verze: {hw_version}\n", + "description": "Výrobce: {manufacturer}\nModel: {model}\nID modelu: {model_id}\nHardware verze: {hw_version}", "data": { "battery_type": "Typ baterie", "battery_quantity": "Množství baterií", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Výrobce: {manufacturer}\nModel: {model}\nID modelu: {model_id}\nHardware verze: {hw_version}\n", + "description": "Výrobce: {manufacturer}\nModel: {model}\nID modelu: {model_id}\nHardware verze: {hw_version}", "data": { "name": "Název", "battery_type": "Typ baterie", diff --git a/custom_components/battery_notes/translations/da.json b/custom_components/battery_notes/translations/da.json index 509848e6..db3280ea 100644 --- a/custom_components/battery_notes/translations/da.json +++ b/custom_components/battery_notes/translations/da.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Batteri type", "battery_quantity": "Antal batterier", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Navn", "battery_type": "Batteri type", diff --git a/custom_components/battery_notes/translations/en.json b/custom_components/battery_notes/translations/en.json index 995bea17..b2476d69 100644 --- a/custom_components/battery_notes/translations/en.json +++ b/custom_components/battery_notes/translations/en.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Battery type", "battery_quantity": "Battery quantity", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Name", "battery_type": "Battery type", diff --git a/custom_components/battery_notes/translations/es-ES.json b/custom_components/battery_notes/translations/es-ES.json index 03e39615..fc6f8997 100644 --- a/custom_components/battery_notes/translations/es-ES.json +++ b/custom_components/battery_notes/translations/es-ES.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Fabricante: {manufacturer}\nModelo: {model}\nID de Modelo: {model_id}\nVersión de Hardware: {hw_version}\n", + "description": "Fabricante: {manufacturer}\nModelo: {model}\nID de Modelo: {model_id}\nVersión de Hardware: {hw_version}", "data": { "battery_type": "Tipo de batería", "battery_quantity": "Cantidad de batería", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Fabricante: {manufacturer}\nModelo: {model}\nID de Modelo: {model_id}\nVersión de Hardware: {hw_version}\n", + "description": "Fabricante: {manufacturer}\nModelo: {model}\nID de Modelo: {model_id}\nVersión de Hardware: {hw_version}", "data": { "name": "Nombre", "battery_type": "Tipo de batería", diff --git a/custom_components/battery_notes/translations/fi.json b/custom_components/battery_notes/translations/fi.json index 09227fab..192fe267 100644 --- a/custom_components/battery_notes/translations/fi.json +++ b/custom_components/battery_notes/translations/fi.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Akun tyyppi", "battery_quantity": "Akkujen määrä", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Nimi", "battery_type": "Akun tyyppi", diff --git a/custom_components/battery_notes/translations/fr.json b/custom_components/battery_notes/translations/fr.json index dc59f298..780057f3 100644 --- a/custom_components/battery_notes/translations/fr.json +++ b/custom_components/battery_notes/translations/fr.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Fabricant : {manufacturer}\nModèle : {model}\nID modèle : {model_id}\nVersion du matériel : {hw_version}", "data": { "battery_type": "Type de batterie", "battery_quantity": "Nombre de batteries", @@ -44,8 +44,8 @@ } }, "manual": { - "description": "This device is marked in the library as manual, variants use different battery types so it cannot be set in the library.\nThe next step will allow you to set your battery type but please do not submit a device request.", - "title": "Device manual configuration" + "description": "Cet appareil est marqué dans la bibliothèque comme manuel, les variantes utilisent des types de batterie différents, il ne peut donc pas être défini dans la bibliothèque.\nL'étape suivante vous permettra de définir votre type de batterie, mais veuillez ne pas soumettre de demande d'appareil.", + "title": "Configuration manuelle de l'appareil" } }, "abort": { @@ -53,13 +53,13 @@ }, "error": { "unknown": "Erreur inconnue.", - "unconfigurable_entity": "It is not possible to add this entity to Battery Notes." + "unconfigurable_entity": "Il n'est pas possible d'ajouter cette entité à Battery Notes." } }, "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Fabricant : {manufacturer}\nModèle : {model}\nID modèle : {model_id}\nVersion du matériel : {hw_version}", "data": { "name": "Nom", "battery_type": "Type de batterie", @@ -75,7 +75,7 @@ } }, "error": { - "unknown": "Erreur inconnue.." + "unknown": "Erreur inconnue." } }, "entity": { @@ -84,7 +84,7 @@ "name": "{device_name}Batterie faible", "state_attributes": { "battery_low_threshold": { - "name": "Seuil bas de la batterie" + "name": "Seuil de batterie faible" } } } @@ -114,7 +114,7 @@ "name": "Batterie faible" }, "battery_low_threshold": { - "name": "Seuil bas de la batterie" + "name": "Seuil de batterie faible" }, "battery_last_reported": { "name": "Batterie signalée pour la dernière fois" diff --git a/custom_components/battery_notes/translations/hu.json b/custom_components/battery_notes/translations/hu.json index ae73422a..8702102f 100644 --- a/custom_components/battery_notes/translations/hu.json +++ b/custom_components/battery_notes/translations/hu.json @@ -2,15 +2,15 @@ "config": { "step": { "user": { - "description": "Ha segítségre van szükséged a konfigurációhoz: https://andrew-codechimp.github.io/HA-Battery-Notes/", + "description": "Segítség a konfigurációhoz: https://andrew-codechimp.github.io/HA-Battery-Notes/", "data": { - "association_type": "Association type" + "association_type": "Társítás típusa" }, "menu_options": { - "device": "Device (recommended)", - "entity": "Entity" + "device": "Eszköz (javasolt)", + "entity": "Entitás" }, - "title": "Choose your association type" + "title": "Válaszd ki a társítás típusát" }, "device": { "data": { @@ -18,59 +18,59 @@ "name": "Név" }, "data_description": { - "name": "Üresen hagyva a forrás eszköz neve lesz használva" + "name": "Üresen hagyva a forráseszköz nevét kapja" } }, "entity": { "data": { - "source_entity_id": "Entity", + "source_entity_id": "Entitás", "name": "Név" }, "data_description": { - "name": "Leaving blank will take the name from the source entity" + "name": "Üresen hagyva a forrás entitás nevét kapja" } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Gyártó: {manufacturer}\nModell: {model}\nModell azonosító: {model_id}\nHardver verzió: {hw_version}", "data": { - "battery_type": "Elem típus", - "battery_quantity": "Az akkumulátor mennyisége", - "battery_low_threshold": "Az akkumulátor alacsony küszöbértéke", - "battery_low_template": "Battery low template" + "battery_type": "Elemtípus", + "battery_quantity": "Elem darabszám", + "battery_low_threshold": "Alacsony elemszint küszöbérték", + "battery_low_template": "Alacsony elemszint sablon" }, "data_description": { - "battery_low_threshold": "A 0 a globális alapértelmezett küszöböt fogja használni", - "battery_low_template": "Template to determine a battery is low, should return true if low\nOnly needed for non-standard battery levels" + "battery_low_threshold": "0 érték esetén a központi beállítást fogja használni", + "battery_low_template": "A sablon igaz értéket kell adjon, ha az elem nemsokára lemerül\nCsak nem szokványos töltöttségi szint esetén kell megadni" } }, "manual": { - "description": "This device is marked in the library as manual, variants use different battery types so it cannot be set in the library.\nThe next step will allow you to set your battery type but please do not submit a device request.", - "title": "Device manual configuration" + "description": "Az eszköz különböző típusú elemekkel is használható, így manuálisan kell beállítani az elem típusát.\nA következő lépésben elvégezhető a beállítás, de kérlek, ne küldd be ezt az eszközt nekünk!", + "title": "Eszköz manuális beállítása" } }, "abort": { - "already_configured": "Eszköz már konfigurálva van" + "already_configured": "Az eszköz már konfigurálva van" }, "error": { "unknown": "Ismeretlen hiba lépett fel.", - "unconfigurable_entity": "It is not possible to add this entity to Battery Notes." + "unconfigurable_entity": "Ez az entitás nem adható a Battery Noteshoz." } }, "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Gyártó: {manufacturer}\nModell: {model}\nModell azonosító: {model_id}\nHardver verzió: {hw_version}", "data": { "name": "Név", - "battery_type": "Elem típus", - "battery_quantity": "Az akkumulátor mennyisége", - "battery_low_threshold": "Az akkumulátor alacsony küszöbértéke", - "battery_low_template": "Battery low template" + "battery_type": "Elemtípus", + "battery_quantity": "Elem darabszám", + "battery_low_threshold": "Alacsony elemszint küszöbérték", + "battery_low_template": "Alacsony elemszint sablon" }, "data_description": { - "name": "Üresen hagyva a forrás eszköz neve lesz használva", - "battery_low_threshold": "A 0 a globális alapértelmezett küszöböt fogja használni", - "battery_low_template": "Template to determine a battery is low, should return true if low\nOnly needed for non-standard battery levels" + "name": "Üresen hagyva a forráseszköz nevét kapja", + "battery_low_threshold": "0 érték esetén a központi beállítást fogja használni", + "battery_low_template": "A sablon igaz értéket kell adjon, ha az elem nemsokára lemerül\nCsak nem szokványos töltöttségi szint esetén kell megadni" } } }, @@ -81,106 +81,106 @@ "entity": { "binary_sensor": { "battery_low": { - "name": "{device_name}Lemerült elem", + "name": "{device_name}Alacsony elemszint", "state_attributes": { "battery_low_threshold": { - "name": "Az akkumulátor alacsony küszöbértéke" + "name": "Alacsony elemszint küszöbérték" } } } }, "button": { "battery_replaced": { - "name": "{device_name}Elem cserélve" + "name": "{device_name}Elemcsere" } }, "sensor": { "battery_plus": { - "name": "{device_name}Akkumulátor+", + "name": "{device_name}Elem+", "state_attributes": { "battery_type": { - "name": "Elem típus" + "name": "Elemtípus" }, "battery_quantity": { - "name": "Az akkumulátor mennyisége" + "name": "Elem darabszám" }, "battery_type_and_quantity": { - "name": "Az akkumulátor típusa és mennyisége" + "name": "Elemtípus és darabszám" }, "battery_last_replaced": { - "name": "Utolsó elemcsere" + "name": "Elemcsere" }, "battery_low": { - "name": "Lemerült elem" + "name": "Elem lemerül" }, "battery_low_threshold": { - "name": "Az akkumulátor alacsony küszöbértéke" + "name": "Alacsony elemszint küszöbérték" }, "battery_last_reported": { - "name": "Az akkumulátor legutóbbi jelentése" + "name": "Utolsó elemszint jelentés" }, "battery_last_reported_level": { - "name": "Az akkumulátor utoljára jelentett szintje" + "name": "Utolsó elemszint" }, "source_entity_id": { - "name": "Source Entity Id" + "name": "Forrás entitás azonosító" }, "device_id": { - "name": "Device Id" + "name": "Eszköz azonosító" }, "device_name": { - "name": "Device name" + "name": "Eszköznév" } } }, "battery_type": { - "name": "{device_name}Elem típus", + "name": "{device_name}Elemtípus", "state_attributes": { "battery_type": { - "name": "Elem típus" + "name": "Elemtípus" }, "battery_quantity": { - "name": "Az akkumulátor mennyisége" + "name": "Elem darabszám" } } }, "battery_last_replaced": { - "name": "{device_name}Utolsó elemcsere" + "name": "{device_name}Elemcsere" } } }, "services": { "set_battery_replaced": { - "description": "Állítsa be az utoljára cserélt akkumulátort.", + "description": "Beállítja az elemcsere időpontját.", "fields": { "device_id": { - "description": "Az eszköz eleme cserélve lett.", + "description": "Eszköz, melynek eleme cserélve lett.", "name": "Eszköz" }, "entity_id": { - "description": "Entity that has had its battery replaced.", - "name": "Entity" + "description": "Entitás, melynek eleme cserélve lett (csak entitáshoz társított elem esetén).", + "name": "Entitás" }, "datetime_replaced": { - "description": "Csere dátuma.", - "name": "Dátum" + "description": "Csere időpontja.", + "name": "Időpont" } }, - "name": "Elemcsere beállítása" + "name": "Elemcsere időpontjának beállítása" }, "check_battery_last_reported": { - "description": "Raise events for devices that haven't reported their battery level.", + "description": "Eseményt generál azon eszközökről, melyek nem jelentették az elemszintjüket.", "fields": { "days_last_reported": { - "description": "Number of days since a device last reported its battery level.", - "name": "Napok" + "description": "Eltelt napok száma mióta az eszköz nem jelentette az elemszintjét.", + "name": "Napok száma" } }, - "name": "Check battery last reported" + "name": "Elemszint jelentések ellenőrzése" }, "check_battery_low": { - "description": "Raise events for devices that have a low battery.", - "name": "Check battery low" + "description": "Eseményt generál azon eszközökről, melyek elemszintje alacsony.", + "name": "Alacsony elemszintek ellenőrzése" } } } \ No newline at end of file diff --git a/custom_components/battery_notes/translations/it.json b/custom_components/battery_notes/translations/it.json index 081184df..5248d1d5 100644 --- a/custom_components/battery_notes/translations/it.json +++ b/custom_components/battery_notes/translations/it.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Tipo di batteria", "battery_quantity": "Quantità batteria", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Nome", "battery_type": "Tipo di batteria", diff --git a/custom_components/battery_notes/translations/lt.json b/custom_components/battery_notes/translations/lt.json index e91637a2..8f31a207 100644 --- a/custom_components/battery_notes/translations/lt.json +++ b/custom_components/battery_notes/translations/lt.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Baterijos tipas", "battery_quantity": "Baterijų kiekis", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Pavadinimas", "battery_type": "Baterijos tipas", diff --git a/custom_components/battery_notes/translations/lv.json b/custom_components/battery_notes/translations/lv.json new file mode 100644 index 00000000..23cc01df --- /dev/null +++ b/custom_components/battery_notes/translations/lv.json @@ -0,0 +1,186 @@ +{ + "config": { + "step": { + "user": { + "description": "Ja nepieciešama konfigurēšanas palīdzība, papildus informāciju var iegūt šeit: https://andrew-codechimp.github.io/HA-Battery-Notes/", + "data": { + "association_type": "Asociācijas veids" + }, + "menu_options": { + "device": "Ierīce (ieteicams)", + "entity": "Vienība" + }, + "title": "Norādiet asociācijas veidu" + }, + "device": { + "data": { + "device_id": "Ierīce", + "name": "Nosaukums" + }, + "data_description": { + "name": "Atstājot tukšu tiks ņemts nosaukums no pamata ierīces" + } + }, + "entity": { + "data": { + "source_entity_id": "Vienība", + "name": "Nosaukums" + }, + "data_description": { + "name": "Atstājot tukšu tiks ņemts nosaukums no pamata vienības" + } + }, + "battery": { + "description": "Ražotājs: {manufacturer}\nModelis: {model}\nModeļa ID: {model_id}\nAparatūras versija: {hw_version}", + "data": { + "battery_type": "Baterijas tips", + "battery_quantity": "Bateriju daudzums", + "battery_low_threshold": "Zema baterijas līmeņa slieksnis", + "battery_low_template": "Zema baterijas līmeņa šablons" + }, + "data_description": { + "battery_low_threshold": "Norādiet 0, lai izmantotu noklusēto slieksni", + "battery_low_template": "Šablons lai noteiktu zemu baterijas līmeni, kam jāatgriež patiesa vērtība, līmenis ir zems\nNepieciešams tikai nestandarta bateriju līmeņiem" + } + }, + "manual": { + "description": "Iekārta bibliotekā ir atzīmēta kā manuāla, kas nozīmē, ka šīs ierīces paveidi izmanto dažādus bateriju tipus.\nNākošājā solī norādiet kādu bateriju tipu ierīce izmanto. ", + "title": "Ierīces manuāla konfigurācija" + } + }, + "abort": { + "already_configured": "Ierīce jau ir konfigurēta" + }, + "error": { + "unknown": "Notika nezināma kļūda.", + "unconfigurable_entity": "Nav iespējams pievienot šo vienību baterijas piezīmēm." + } + }, + "options": { + "step": { + "init": { + "description": "Ražotājs: {manufacturer}\nModelis: {model}\nModeļa ID: {model_id}\nAparatūras versija: {hw_version}", + "data": { + "name": "Nosaukums", + "battery_type": "Baterijas tips", + "battery_quantity": "Bateriju daudzums", + "battery_low_threshold": "Zema baterijas līmeņa slieksnis", + "battery_low_template": "Zema baterijas līmeņa šablons" + }, + "data_description": { + "name": "Atstājot tukšu tiks ņemts nosaukums no pamata ierīces", + "battery_low_threshold": "Norādiet 0, lai izmantotu noklusēto slieksni", + "battery_low_template": "Šablons lai noteiktu zemu baterijas līmeni, kam jāatgriež patiesa vērtība, līmenis ir zems\nNepieciešams tikai nestandarta bateriju līmeņiem" + } + } + }, + "error": { + "unknown": "Notika nezināma kļūda." + } + }, + "entity": { + "binary_sensor": { + "battery_low": { + "name": "{device_name}Baterijai zems līmenis", + "state_attributes": { + "battery_low_threshold": { + "name": "Zema baterijas līmeņa slieksnis" + } + } + } + }, + "button": { + "battery_replaced": { + "name": "{device_name}Baterija nomainīta" + } + }, + "sensor": { + "battery_plus": { + "name": "{device_name}Baterija+", + "state_attributes": { + "battery_type": { + "name": "Baterijas tips" + }, + "battery_quantity": { + "name": "Bateriju daudzums" + }, + "battery_type_and_quantity": { + "name": "Baterijas tips un daudzums" + }, + "battery_last_replaced": { + "name": "Baterija pēdējo reizi nomainīta" + }, + "battery_low": { + "name": "Baterijai zems līmenis" + }, + "battery_low_threshold": { + "name": "Zema baterijas līmeņa slieksnis" + }, + "battery_last_reported": { + "name": "Baterijas līmenis pēdējo reizi ziņots" + }, + "battery_last_reported_level": { + "name": "Baterijas pēdējais ziņotais līmenis" + }, + "source_entity_id": { + "name": "Pamata ierīces ID" + }, + "device_id": { + "name": "Ierīces ID" + }, + "device_name": { + "name": "Ierīces nosaukums" + } + } + }, + "battery_type": { + "name": "{device_name}Baterijas tips", + "state_attributes": { + "battery_type": { + "name": "Baterijas tips" + }, + "battery_quantity": { + "name": "Bateriju daudzums" + } + } + }, + "battery_last_replaced": { + "name": "{device_name}Baterija pēdējo reizi nomainīta" + } + } + }, + "services": { + "set_battery_replaced": { + "description": "Uzstādīt bateriju kā nomainītu.", + "fields": { + "device_id": { + "description": "Ierīces baterija tika nomainīta.", + "name": "Ierīce" + }, + "entity_id": { + "description": "Vienība, kurai tika nomainīta baterija (tiek izmantota tikai ar vienību saistītās baterijas piezīmēs).", + "name": "Vienība" + }, + "datetime_replaced": { + "description": "Nomainīšanas datums.", + "name": "Datums" + } + }, + "name": "Baterija tika nomainīta" + }, + "check_battery_last_reported": { + "description": "Izraisīt notikumu par ierīcēm, kas nav ziņojušas to baterijas līmeni.", + "fields": { + "days_last_reported": { + "description": "Dienas, kopš ierīce pēdējo reizi ziņoja tās baterijas līmeni.", + "name": "Dienas" + } + }, + "name": "Pārbaudīt, kad pēdējo reizi ziņota informācija par bateriju" + }, + "check_battery_low": { + "description": "Izraisīt notikumus par ierīcēm, kam ir zems baterijas līmenis.", + "name": "Pārbaudīt zemu baterijas līmeni" + } + } +} \ No newline at end of file diff --git a/custom_components/battery_notes/translations/no.json b/custom_components/battery_notes/translations/no.json index 7b8027f4..cd55a8dc 100644 --- a/custom_components/battery_notes/translations/no.json +++ b/custom_components/battery_notes/translations/no.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Battery type", "battery_quantity": "Battery quantity", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Navn", "battery_type": "Battery type", diff --git a/custom_components/battery_notes/translations/pt.json b/custom_components/battery_notes/translations/pt.json index 06d24a66..511369bf 100644 --- a/custom_components/battery_notes/translations/pt.json +++ b/custom_components/battery_notes/translations/pt.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Tipo de bateria", "battery_quantity": "Quantidade de baterias", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Nome", "battery_type": "Tipo de bateria", diff --git a/custom_components/battery_notes/translations/ru.json b/custom_components/battery_notes/translations/ru.json index c81e5c2d..fac1cdda 100644 --- a/custom_components/battery_notes/translations/ru.json +++ b/custom_components/battery_notes/translations/ru.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Производитель: {manufacturer}\nМодель: {model}\nID модели: {model_id}\nРевизия: {hw_version}\n", + "description": "Производитель: {manufacturer}\nМодель: {model}\nID модели: {model_id}\nРевизия: {hw_version}", "data": { "battery_type": "Тип батареи", "battery_quantity": "Количество батарей", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Производитель: {manufacturer}\nМодель: {model}\nID модели: {model_id}\nРевизия: {hw_version}\n", + "description": "Производитель: {manufacturer}\nМодель: {model}\nID модели: {model_id}\nРевизия: {hw_version}", "data": { "name": "Название", "battery_type": "Тип батареи", diff --git a/custom_components/battery_notes/translations/sk.json b/custom_components/battery_notes/translations/sk.json index 4e4b41ff..06fd3434 100644 --- a/custom_components/battery_notes/translations/sk.json +++ b/custom_components/battery_notes/translations/sk.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Typ batérie", "battery_quantity": "Množstvo batérie", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Názov", "battery_type": "Typ batérie", diff --git a/custom_components/battery_notes/translations/sr-Latn.json b/custom_components/battery_notes/translations/sr-Latn.json index a325409e..82aec1e6 100644 --- a/custom_components/battery_notes/translations/sr-Latn.json +++ b/custom_components/battery_notes/translations/sr-Latn.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Tip baterije", "battery_quantity": "Broj baterija", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Naziv", "battery_type": "Tip baterije", diff --git a/custom_components/battery_notes/translations/sv-SE.json b/custom_components/battery_notes/translations/sv-SE.json index 268e1ce6..82b2c547 100644 --- a/custom_components/battery_notes/translations/sv-SE.json +++ b/custom_components/battery_notes/translations/sv-SE.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "Batterityp", "battery_quantity": "Antal batterier", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "Namn", "battery_type": "Batterityp", diff --git a/custom_components/battery_notes/translations/uk.json b/custom_components/battery_notes/translations/uk.json index e64df4be..5204b8d0 100644 --- a/custom_components/battery_notes/translations/uk.json +++ b/custom_components/battery_notes/translations/uk.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Виробник: {manufacturer}\nМодель: {model}\nID моделі: {model_id}\nРевізія: {hw_version}\n", + "description": "Виробник: {manufacturer}\nМодель: {model}\nID моделі: {model_id}\nРевізія: {hw_version}", "data": { "battery_type": "Тип батареї", "battery_quantity": "Кількість батарей", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Виробник: {manufacturer}\nМодель: {model}\nID моделі: {model_id}\nРевізія: {hw_version}\n", + "description": "Виробник: {manufacturer}\nМодель: {model}\nID моделі: {model_id}\nРевізія: {hw_version}", "data": { "name": "Назва", "battery_type": "Тип батареї", diff --git a/custom_components/battery_notes/translations/ur-IN.json b/custom_components/battery_notes/translations/ur-IN.json index 1a140149..b1be2007 100644 --- a/custom_components/battery_notes/translations/ur-IN.json +++ b/custom_components/battery_notes/translations/ur-IN.json @@ -31,7 +31,7 @@ } }, "battery": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "battery_type": "بیٹری کی قسم", "battery_quantity": "بیٹری کی مقدار", @@ -59,7 +59,7 @@ "options": { "step": { "init": { - "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}\n", + "description": "Manufacturer: {manufacturer}\nModel: {model}\nModel ID: {model_id}\nHardware version: {hw_version}", "data": { "name": "نام", "battery_type": "بیٹری کی قسم", diff --git a/custom_components/hacs/__pycache__/__init__.cpython-312.pyc b/custom_components/hacs/__pycache__/__init__.cpython-312.pyc index eddfa98c..7c823d31 100644 Binary files a/custom_components/hacs/__pycache__/__init__.cpython-312.pyc and b/custom_components/hacs/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/base.cpython-312.pyc b/custom_components/hacs/__pycache__/base.cpython-312.pyc index 969ea49f..bf2f85c3 100644 Binary files a/custom_components/hacs/__pycache__/base.cpython-312.pyc and b/custom_components/hacs/__pycache__/base.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/config_flow.cpython-312.pyc b/custom_components/hacs/__pycache__/config_flow.cpython-312.pyc index 01fab51d..c2693e79 100644 Binary files a/custom_components/hacs/__pycache__/config_flow.cpython-312.pyc and b/custom_components/hacs/__pycache__/config_flow.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/const.cpython-312.pyc b/custom_components/hacs/__pycache__/const.cpython-312.pyc index 8ded1f00..5bee3bd1 100644 Binary files a/custom_components/hacs/__pycache__/const.cpython-312.pyc and b/custom_components/hacs/__pycache__/const.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/coordinator.cpython-312.pyc b/custom_components/hacs/__pycache__/coordinator.cpython-312.pyc index 1256ec52..245d13b1 100644 Binary files a/custom_components/hacs/__pycache__/coordinator.cpython-312.pyc and b/custom_components/hacs/__pycache__/coordinator.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/data_client.cpython-312.pyc b/custom_components/hacs/__pycache__/data_client.cpython-312.pyc index 00cf714b..7c37512a 100644 Binary files a/custom_components/hacs/__pycache__/data_client.cpython-312.pyc and b/custom_components/hacs/__pycache__/data_client.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/diagnostics.cpython-312.pyc b/custom_components/hacs/__pycache__/diagnostics.cpython-312.pyc index 6b33ef19..b57c488b 100644 Binary files a/custom_components/hacs/__pycache__/diagnostics.cpython-312.pyc and b/custom_components/hacs/__pycache__/diagnostics.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/entity.cpython-312.pyc b/custom_components/hacs/__pycache__/entity.cpython-312.pyc index 031ef98e..f71e1713 100644 Binary files a/custom_components/hacs/__pycache__/entity.cpython-312.pyc and b/custom_components/hacs/__pycache__/entity.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/enums.cpython-312.pyc b/custom_components/hacs/__pycache__/enums.cpython-312.pyc index 068591cf..32d3deb2 100644 Binary files a/custom_components/hacs/__pycache__/enums.cpython-312.pyc and b/custom_components/hacs/__pycache__/enums.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/exceptions.cpython-312.pyc b/custom_components/hacs/__pycache__/exceptions.cpython-312.pyc index 68a0dacd..b3dac7c0 100644 Binary files a/custom_components/hacs/__pycache__/exceptions.cpython-312.pyc and b/custom_components/hacs/__pycache__/exceptions.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/frontend.cpython-312.pyc b/custom_components/hacs/__pycache__/frontend.cpython-312.pyc index cbd20928..b372d1ba 100644 Binary files a/custom_components/hacs/__pycache__/frontend.cpython-312.pyc and b/custom_components/hacs/__pycache__/frontend.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/repairs.cpython-312.pyc b/custom_components/hacs/__pycache__/repairs.cpython-312.pyc index 19f182ba..fdbf944e 100644 Binary files a/custom_components/hacs/__pycache__/repairs.cpython-312.pyc and b/custom_components/hacs/__pycache__/repairs.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/switch.cpython-312.pyc b/custom_components/hacs/__pycache__/switch.cpython-312.pyc index 7de193e7..cb796f3f 100644 Binary files a/custom_components/hacs/__pycache__/switch.cpython-312.pyc and b/custom_components/hacs/__pycache__/switch.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/system_health.cpython-312.pyc b/custom_components/hacs/__pycache__/system_health.cpython-312.pyc index 5e82e2f9..d1f19104 100644 Binary files a/custom_components/hacs/__pycache__/system_health.cpython-312.pyc and b/custom_components/hacs/__pycache__/system_health.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/types.cpython-312.pyc b/custom_components/hacs/__pycache__/types.cpython-312.pyc index 61538150..e67f318e 100644 Binary files a/custom_components/hacs/__pycache__/types.cpython-312.pyc and b/custom_components/hacs/__pycache__/types.cpython-312.pyc differ diff --git a/custom_components/hacs/__pycache__/update.cpython-312.pyc b/custom_components/hacs/__pycache__/update.cpython-312.pyc index 57bb4ab8..e805ce50 100644 Binary files a/custom_components/hacs/__pycache__/update.cpython-312.pyc and b/custom_components/hacs/__pycache__/update.cpython-312.pyc differ diff --git a/custom_components/hacs/const.py b/custom_components/hacs/const.py index b40b7cb4..271484bb 100644 --- a/custom_components/hacs/const.py +++ b/custom_components/hacs/const.py @@ -7,7 +7,7 @@ NAME_SHORT = "HACS" DOMAIN = "hacs" CLIENT_ID = "395a8e669c5de9f7c6e8" -MINIMUM_HA_VERSION = "0.0.0" +MINIMUM_HA_VERSION = "2024.4.1" URL_BASE = "/hacsfiles" diff --git a/custom_components/hacs/hacs_frontend/__pycache__/__init__.cpython-312.pyc b/custom_components/hacs/hacs_frontend/__pycache__/__init__.cpython-312.pyc index 84563f7f..e71a9d9b 100644 Binary files a/custom_components/hacs/hacs_frontend/__pycache__/__init__.cpython-312.pyc and b/custom_components/hacs/hacs_frontend/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/hacs/hacs_frontend/__pycache__/version.cpython-312.pyc b/custom_components/hacs/hacs_frontend/__pycache__/version.cpython-312.pyc index f40eac37..c5606061 100644 Binary files a/custom_components/hacs/hacs_frontend/__pycache__/version.cpython-312.pyc and b/custom_components/hacs/hacs_frontend/__pycache__/version.cpython-312.pyc differ diff --git a/custom_components/hacs/manifest.json b/custom_components/hacs/manifest.json index 38de9cc1..40cfec6c 100644 --- a/custom_components/hacs/manifest.json +++ b/custom_components/hacs/manifest.json @@ -16,11 +16,11 @@ "lovelace", "repairs" ], - "documentation": "https://hacs.xyz/docs/use/", + "documentation": "https://hacs.xyz/docs/configuration/start", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/hacs/integration/issues", "requirements": [ "aiogithubapi>=22.10.1" ], - "version": "2.0.2-dev-61d2d5f" + "version": "2.0.1" } \ No newline at end of file diff --git a/custom_components/hacs/repositories/__pycache__/__init__.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/__init__.cpython-312.pyc index 8611aa7b..95cb9dd5 100644 Binary files a/custom_components/hacs/repositories/__pycache__/__init__.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/appdaemon.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/appdaemon.cpython-312.pyc index c4a3352a..af147853 100644 Binary files a/custom_components/hacs/repositories/__pycache__/appdaemon.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/appdaemon.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/base.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/base.cpython-312.pyc index 4f7e1c2e..44dcd9a3 100644 Binary files a/custom_components/hacs/repositories/__pycache__/base.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/base.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/integration.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/integration.cpython-312.pyc index 8cbd0e06..c413a13d 100644 Binary files a/custom_components/hacs/repositories/__pycache__/integration.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/integration.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/plugin.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/plugin.cpython-312.pyc index fcf64c0d..02a71edf 100644 Binary files a/custom_components/hacs/repositories/__pycache__/plugin.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/plugin.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/python_script.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/python_script.cpython-312.pyc index 138d132b..9799b794 100644 Binary files a/custom_components/hacs/repositories/__pycache__/python_script.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/python_script.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/template.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/template.cpython-312.pyc index 0527e355..a0c09d74 100644 Binary files a/custom_components/hacs/repositories/__pycache__/template.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/template.cpython-312.pyc differ diff --git a/custom_components/hacs/repositories/__pycache__/theme.cpython-312.pyc b/custom_components/hacs/repositories/__pycache__/theme.cpython-312.pyc index 3085c974..08463e39 100644 Binary files a/custom_components/hacs/repositories/__pycache__/theme.cpython-312.pyc and b/custom_components/hacs/repositories/__pycache__/theme.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/__init__.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/__init__.cpython-312.pyc index 78c8a122..4ec68add 100644 Binary files a/custom_components/hacs/utils/__pycache__/__init__.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/backup.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/backup.cpython-312.pyc index d7527f39..de32ff65 100644 Binary files a/custom_components/hacs/utils/__pycache__/backup.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/backup.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/configuration_schema.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/configuration_schema.cpython-312.pyc index eb150722..b8e36159 100644 Binary files a/custom_components/hacs/utils/__pycache__/configuration_schema.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/configuration_schema.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/data.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/data.cpython-312.pyc index a8f8c9a7..113e1e08 100644 Binary files a/custom_components/hacs/utils/__pycache__/data.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/data.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/decode.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/decode.cpython-312.pyc index 2db890f8..9e73020c 100644 Binary files a/custom_components/hacs/utils/__pycache__/decode.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/decode.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/decorator.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/decorator.cpython-312.pyc index d1e7cde7..621639af 100644 Binary files a/custom_components/hacs/utils/__pycache__/decorator.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/decorator.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/file_system.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/file_system.cpython-312.pyc index f3f1fc96..a7e10ef5 100644 Binary files a/custom_components/hacs/utils/__pycache__/file_system.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/file_system.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/filters.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/filters.cpython-312.pyc index 9d716bfc..214aa28e 100644 Binary files a/custom_components/hacs/utils/__pycache__/filters.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/filters.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/github_graphql_query.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/github_graphql_query.cpython-312.pyc index 23d11749..116343b6 100644 Binary files a/custom_components/hacs/utils/__pycache__/github_graphql_query.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/github_graphql_query.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/json.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/json.cpython-312.pyc index c1c50bd6..f160b0e9 100644 Binary files a/custom_components/hacs/utils/__pycache__/json.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/json.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/logger.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/logger.cpython-312.pyc index c4b982ee..0a96c8a6 100644 Binary files a/custom_components/hacs/utils/__pycache__/logger.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/logger.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/path.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/path.cpython-312.pyc index 6701e437..89f7cfa6 100644 Binary files a/custom_components/hacs/utils/__pycache__/path.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/path.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/queue_manager.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/queue_manager.cpython-312.pyc index 1d964fbf..2e26b236 100644 Binary files a/custom_components/hacs/utils/__pycache__/queue_manager.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/queue_manager.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/regex.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/regex.cpython-312.pyc index abd43bc7..7d12cfb4 100644 Binary files a/custom_components/hacs/utils/__pycache__/regex.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/regex.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/store.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/store.cpython-312.pyc index 81b7acc1..37ced155 100644 Binary files a/custom_components/hacs/utils/__pycache__/store.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/store.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/url.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/url.cpython-312.pyc index 05cce1ff..b8253592 100644 Binary files a/custom_components/hacs/utils/__pycache__/url.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/url.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/validate.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/validate.cpython-312.pyc index d97f6a6a..e1c88d7b 100644 Binary files a/custom_components/hacs/utils/__pycache__/validate.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/validate.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/version.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/version.cpython-312.pyc index 6bc8eab5..b86404f0 100644 Binary files a/custom_components/hacs/utils/__pycache__/version.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/version.cpython-312.pyc differ diff --git a/custom_components/hacs/utils/__pycache__/workarounds.cpython-312.pyc b/custom_components/hacs/utils/__pycache__/workarounds.cpython-312.pyc index 847bd89f..243cca46 100644 Binary files a/custom_components/hacs/utils/__pycache__/workarounds.cpython-312.pyc and b/custom_components/hacs/utils/__pycache__/workarounds.cpython-312.pyc differ diff --git a/custom_components/hacs/websocket/__pycache__/__init__.cpython-312.pyc b/custom_components/hacs/websocket/__pycache__/__init__.cpython-312.pyc index 498bdcb8..457b02fa 100644 Binary files a/custom_components/hacs/websocket/__pycache__/__init__.cpython-312.pyc and b/custom_components/hacs/websocket/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/hacs/websocket/__pycache__/critical.cpython-312.pyc b/custom_components/hacs/websocket/__pycache__/critical.cpython-312.pyc index abceed60..8be8a7f7 100644 Binary files a/custom_components/hacs/websocket/__pycache__/critical.cpython-312.pyc and b/custom_components/hacs/websocket/__pycache__/critical.cpython-312.pyc differ diff --git a/custom_components/hacs/websocket/__pycache__/repositories.cpython-312.pyc b/custom_components/hacs/websocket/__pycache__/repositories.cpython-312.pyc index 28632039..b7468d54 100644 Binary files a/custom_components/hacs/websocket/__pycache__/repositories.cpython-312.pyc and b/custom_components/hacs/websocket/__pycache__/repositories.cpython-312.pyc differ diff --git a/custom_components/hacs/websocket/__pycache__/repository.cpython-312.pyc b/custom_components/hacs/websocket/__pycache__/repository.cpython-312.pyc index 76f43301..a05ebba8 100644 Binary files a/custom_components/hacs/websocket/__pycache__/repository.cpython-312.pyc and b/custom_components/hacs/websocket/__pycache__/repository.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__init__.py b/custom_components/multiscrape/__init__.py new file mode 100644 index 00000000..a47c159a --- /dev/null +++ b/custom_components/multiscrape/__init__.py @@ -0,0 +1,160 @@ +"""The multiscrape component.""" +import asyncio +import contextlib +import logging + +import voluptuous as vol +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import (CONF_NAME, CONF_RESOURCE, + CONF_RESOURCE_TEMPLATE, SERVICE_RELOAD, + Platform) +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import HomeAssistantError +from homeassistant.helpers import discovery +from homeassistant.helpers.reload import (async_integration_yaml_config, + async_reload_integration_platforms) + +from .const import (CONF_FORM_SUBMIT, CONF_LOG_RESPONSE, CONF_PARSER, + COORDINATOR, DOMAIN, PLATFORM_IDX, SCRAPER, SCRAPER_DATA, + SCRAPER_IDX) +from .coordinator import (create_content_request_manager, + create_multiscrape_coordinator) +from .file import create_file_manager +from .form import create_form_submitter +from .http import create_http_wrapper +from .schema import COMBINED_SCHEMA, CONFIG_SCHEMA # noqa: F401 +from .scraper import create_scraper +from .service import setup_config_services, setup_integration_services + +_LOGGER = logging.getLogger(__name__) +PLATFORMS = [Platform.SENSOR, Platform.BINARY_SENSOR, Platform.BUTTON] + + +async def async_setup(hass: HomeAssistant, entry: ConfigEntry): + """Set up the multiscrape platforms.""" + _LOGGER.debug("# Start loading multiscrape") + _async_setup_shared_data(hass) + + async def reload_service_handler(service): + """Remove all user-defined groups and load new ones from config.""" + conf = None + with contextlib.suppress(HomeAssistantError): + conf = await async_integration_yaml_config(hass, DOMAIN) + if conf is None: + return + await async_reload_integration_platforms(hass, DOMAIN, PLATFORMS) + _async_setup_shared_data(hass) + await _async_process_config(hass, conf) + + hass.services.async_register( + DOMAIN, SERVICE_RELOAD, reload_service_handler, schema=vol.Schema({}) + ) + _LOGGER.debug("# Reload service registered") + + await setup_integration_services(hass) + + if len(entry[DOMAIN]) == 1: + if not entry[DOMAIN][0].get(CONF_RESOURCE) and not entry[DOMAIN][0].get( + CONF_RESOURCE_TEMPLATE + ): + _LOGGER.info( + "Did not find any configuration. Assuming we want just the integration level services." + ) + return True + + return await _async_process_config(hass, entry) + + +def _async_setup_shared_data(hass: HomeAssistant): + """Create shared data for platform config and scraper coordinators.""" + hass.data[DOMAIN] = {key: [] for key in [SCRAPER_DATA, *PLATFORMS]} + + +async def _async_process_config(hass: HomeAssistant, config) -> bool: + """Process scraper configuration.""" + + _LOGGER.debug("# Start processing config from configuration.yaml") + + refresh_tasks = [] + load_tasks = [] + + for scraper_idx, conf in enumerate(config[DOMAIN]): + config_name = conf.get(CONF_NAME) + if config_name is None: + config_name = f"Scraper_noname_{scraper_idx}" + _LOGGER.debug( + "# Found no name for scraper, generated a unique name: %s", config_name + ) + + _LOGGER.debug( + "%s # Setting up multiscrape with config:\n %s", config_name, conf + ) + + file_manager = await create_file_manager(hass, config_name, conf.get(CONF_LOG_RESPONSE)) + form_submit_config = conf.get(CONF_FORM_SUBMIT) + form_submitter = None + if form_submit_config: + parser = conf.get(CONF_PARSER) + form_http = create_http_wrapper(config_name, form_submit_config, hass, file_manager) + form_submitter = create_form_submitter( + config_name, + form_submit_config, + hass, + form_http, + file_manager, + parser, + ) + + http = create_http_wrapper(config_name, conf, hass, file_manager) + scraper = create_scraper(config_name, conf, hass, file_manager) + request_manager = create_content_request_manager(config_name, conf, hass, http, form_submitter) + coordinator = create_multiscrape_coordinator( + config_name, + conf, + hass, + request_manager, + file_manager, + scraper, + ) + await coordinator.async_register_shutdown() + + hass.data[DOMAIN][SCRAPER_DATA].append( + {SCRAPER: scraper, COORDINATOR: coordinator} + ) + + await setup_config_services(hass, coordinator, config_name) + + for platform_domain in PLATFORMS: + if platform_domain not in conf: + continue + + for platform_conf in conf[platform_domain]: + hass.data[DOMAIN][platform_domain].append(platform_conf) + platform_idx = len(hass.data[DOMAIN][platform_domain]) - 1 + + load = discovery.async_load_platform( + hass, + platform_domain, + DOMAIN, + {SCRAPER_IDX: scraper_idx, PLATFORM_IDX: platform_idx}, + config, + ) + load_tasks.append(load) + + if refresh_tasks: + await asyncio.gather(*refresh_tasks) + + if load_tasks: + await asyncio.gather(*load_tasks) + + + return True + + +async def async_get_config_and_coordinator(hass, platform_domain, discovery_info): + """Get the config and coordinator for the platform from discovery.""" + shared_data = hass.data[DOMAIN][SCRAPER_DATA][discovery_info[SCRAPER_IDX]] + conf = hass.data[DOMAIN][platform_domain][discovery_info[PLATFORM_IDX]] + coordinator = shared_data[COORDINATOR] + scraper = shared_data[SCRAPER] + return conf, coordinator, scraper diff --git a/custom_components/multiscrape/__pycache__/__init__.cpython-312.pyc b/custom_components/multiscrape/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..b7733cfe Binary files /dev/null and b/custom_components/multiscrape/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/const.cpython-312.pyc b/custom_components/multiscrape/__pycache__/const.cpython-312.pyc new file mode 100644 index 00000000..2971926e Binary files /dev/null and b/custom_components/multiscrape/__pycache__/const.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/coordinator.cpython-312.pyc b/custom_components/multiscrape/__pycache__/coordinator.cpython-312.pyc new file mode 100644 index 00000000..787cfdf3 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/coordinator.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/entity.cpython-312.pyc b/custom_components/multiscrape/__pycache__/entity.cpython-312.pyc new file mode 100644 index 00000000..06b7e233 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/entity.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/file.cpython-312.pyc b/custom_components/multiscrape/__pycache__/file.cpython-312.pyc new file mode 100644 index 00000000..da3eb3cd Binary files /dev/null and b/custom_components/multiscrape/__pycache__/file.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/form.cpython-312.pyc b/custom_components/multiscrape/__pycache__/form.cpython-312.pyc new file mode 100644 index 00000000..25c5c4d0 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/form.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/http.cpython-312.pyc b/custom_components/multiscrape/__pycache__/http.cpython-312.pyc new file mode 100644 index 00000000..dfa5aa22 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/http.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/schema.cpython-312.pyc b/custom_components/multiscrape/__pycache__/schema.cpython-312.pyc new file mode 100644 index 00000000..a7ac50eb Binary files /dev/null and b/custom_components/multiscrape/__pycache__/schema.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/scraper.cpython-312.pyc b/custom_components/multiscrape/__pycache__/scraper.cpython-312.pyc new file mode 100644 index 00000000..72ee2ddc Binary files /dev/null and b/custom_components/multiscrape/__pycache__/scraper.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/selector.cpython-312.pyc b/custom_components/multiscrape/__pycache__/selector.cpython-312.pyc new file mode 100644 index 00000000..a683f882 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/selector.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/sensor.cpython-312.pyc b/custom_components/multiscrape/__pycache__/sensor.cpython-312.pyc new file mode 100644 index 00000000..f7164ef0 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/sensor.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/service.cpython-312.pyc b/custom_components/multiscrape/__pycache__/service.cpython-312.pyc new file mode 100644 index 00000000..3a245198 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/service.cpython-312.pyc differ diff --git a/custom_components/multiscrape/__pycache__/util.cpython-312.pyc b/custom_components/multiscrape/__pycache__/util.cpython-312.pyc new file mode 100644 index 00000000..142a3524 Binary files /dev/null and b/custom_components/multiscrape/__pycache__/util.cpython-312.pyc differ diff --git a/custom_components/multiscrape/binary_sensor.py b/custom_components/multiscrape/binary_sensor.py new file mode 100644 index 00000000..1e414a3a --- /dev/null +++ b/custom_components/multiscrape/binary_sensor.py @@ -0,0 +1,186 @@ +"""Support for multiscrape binary sensors.""" +from __future__ import annotations + +import logging + +from homeassistant.components.binary_sensor import BinarySensorEntity +from homeassistant.const import (CONF_DEVICE_CLASS, CONF_FORCE_UPDATE, + CONF_ICON, CONF_NAME, CONF_UNIQUE_ID, + Platform) +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import PlatformNotReady +from homeassistant.helpers.entity import async_generate_entity_id +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType +from homeassistant.util import slugify + +from . import async_get_config_and_coordinator +from .const import (CONF_ON_ERROR_VALUE_DEFAULT, CONF_ON_ERROR_VALUE_LAST, + CONF_ON_ERROR_VALUE_NONE, CONF_PICTURE, CONF_SENSOR_ATTRS, + LOG_LEVELS) +from .entity import MultiscrapeEntity +from .selector import Selector + +ENTITY_ID_FORMAT = Platform.BINARY_SENSOR + ".{}" +_LOGGER = logging.getLogger(__name__) + + +async def async_setup_platform( + hass: HomeAssistant, + config: ConfigType, + async_add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: + """Set up the multiscrape binary sensor.""" + # Must update the sensor now (including fetching the scraper resource) to + # ensure it's updating its state. + if discovery_info is not None: + conf, coordinator, scraper = await async_get_config_and_coordinator( + hass, Platform.BINARY_SENSOR, discovery_info + ) + else: + _LOGGER.info("?? # Could not find binary_sensor configuration") + + if not coordinator.last_update_success: + raise PlatformNotReady + + sensor_name = conf.get(CONF_NAME) + _LOGGER.debug("%s # %s # Setting up binary sensor", + scraper.name, sensor_name) + unique_id = conf.get(CONF_UNIQUE_ID) + device_class = conf.get(CONF_DEVICE_CLASS) + force_update = conf.get(CONF_FORCE_UPDATE) + icon_template = conf.get(CONF_ICON) + picture = conf.get(CONF_PICTURE) + + sensor_selector = Selector(hass, conf) + attribute_selectors = {} + for attr_conf in conf.get(CONF_SENSOR_ATTRS) or []: + attr_name = slugify(attr_conf[CONF_NAME]) + attribute_selectors[attr_name] = Selector(hass, attr_conf) + + async_add_entities( + [ + MultiscrapeBinarySensor( + hass, + coordinator, + scraper, + unique_id, + sensor_name, + device_class, + force_update, + icon_template, + picture, + sensor_selector, + attribute_selectors, + ) + ], + ) + + +class MultiscrapeBinarySensor(MultiscrapeEntity, BinarySensorEntity): + """Representation of a multiscrape binary sensor.""" + + def __init__( + self, + hass, + coordinator, + scraper, + unique_id, + name, + device_class, + force_update, + icon_template, + picture, + sensor_selector, + attribute_selectors, + ): + """Initialize a multiscrape binary sensor.""" + super().__init__( + hass, + coordinator, + scraper, + name, + device_class, + force_update, + icon_template, + picture, + attribute_selectors, + ) + + self.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, unique_id or name, hass=hass + ) + + self._attr_unique_id = unique_id + self._sensor_selector = sensor_selector + + def _update_sensor(self): + """Update state from the scraped data.""" + _LOGGER.debug( + "%s # %s # Start scraping to update sensor", self.scraper.name, self._name + ) + + try: + if self.coordinator.update_error is True: + raise ValueError( + "Skipped scraping because data couldn't be updated") + + value = self.scraper.scrape( + self._sensor_selector, self._name, variables=self.coordinator.form_variables) + try: + self._attr_is_on = bool(int(value)) + except ValueError: + self._attr_is_on = { + "true": True, + "on": True, + "open": True, + "yes": True, + }.get(value.lower(), False) + + _LOGGER.debug( + "%s # %s # Selected: %s, set sensor to: %s", + self.scraper.name, + self._name, + value, + self._attr_is_on, + ) + except Exception as exception: + self.coordinator.notify_scrape_exception() + + if self._sensor_selector.on_error.log not in [False, "false", "False"]: + level = LOG_LEVELS[self._sensor_selector.on_error.log] + _LOGGER.log( + level, + "%s # %s # Unable to scrape data: %s. \nConsider using debug logging and log_response for further investigation.", + self.scraper.name, + self._name, + exception, + ) + + if self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_NONE: + self._attr_available = False + _LOGGER.debug( + "%s # %s # On-error, set value to None", + self.scraper.name, + self._name, + ) + elif self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_LAST: + _LOGGER.debug( + "%s # %s # On-error, keep old value: %s", + self.scraper.name, + self._name, + self._attr_is_on, + ) + return + elif self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_DEFAULT: + self._attr_is_on = self._sensor_selector.on_error_default + _LOGGER.debug( + "%s # %s # On-error, set default value: %s", + self.scraper.name, + self._name, + self._sensor_selector.on_error_default, + ) + # determine icon after exception so it's also set for on_error cases + if self._icon_template: + self._set_icon(self._attr_is_on) diff --git a/custom_components/multiscrape/button.py b/custom_components/multiscrape/button.py new file mode 100644 index 00000000..8c14eef4 --- /dev/null +++ b/custom_components/multiscrape/button.py @@ -0,0 +1,68 @@ +"""Support for Multiscrape refresh button.""" +from __future__ import annotations + +import logging + +from homeassistant.components.button import ButtonEntity +from homeassistant.const import CONF_NAME +from homeassistant.const import CONF_UNIQUE_ID +from homeassistant.const import Platform +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity import async_generate_entity_id +from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType +from homeassistant.helpers.typing import DiscoveryInfoType + +from . import async_get_config_and_coordinator + +ENTITY_ID_FORMAT = Platform.BUTTON + ".{}" +_LOGGER = logging.getLogger(__name__) + + +async def async_setup_platform( + hass: HomeAssistant, + config: ConfigType, + async_add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: + """Set up the multiscrape refresh button.""" + + conf, coordinator, scraper = await async_get_config_and_coordinator( + hass, Platform.BUTTON, discovery_info + ) + name = conf.get(CONF_NAME) + unique_id = conf.get(CONF_UNIQUE_ID) + + async_add_entities( + [ + MultiscrapeRefreshButton( + hass, + coordinator, + unique_id, + name, + ) + ] + ) + + +class MultiscrapeRefreshButton(ButtonEntity): + """Multiscrape refresh button.""" + + def __init__(self, hass, coordinator, unique_id, name): + """Initialize MultiscrapeRefreshButton.""" + self._attr_icon = "mdi:refresh" + self._attr_entity_category = EntityCategory.CONFIG + self._attr_name = name + self._coordinator = coordinator + + self.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, unique_id or name, hass=hass + ) + + self._attr_unique_id = unique_id + + async def async_press(self) -> None: + """Press the button.""" + _LOGGER.info("Multiscrape triggered by button") + await self._coordinator.async_request_refresh() diff --git a/custom_components/multiscrape/const.py b/custom_components/multiscrape/const.py new file mode 100644 index 00000000..e7098a06 --- /dev/null +++ b/custom_components/multiscrape/const.py @@ -0,0 +1,69 @@ +"""The scraper component constants.""" + +DOMAIN = "multiscrape" + +DEFAULT_METHOD = "GET" +DEFAULT_VERIFY_SSL = True +DEFAULT_FORCE_UPDATE = False + +DEFAULT_BINARY_SENSOR_NAME = "Multiscrape Binary Sensor" +DEFAULT_SENSOR_NAME = "Multiscrape Sensor" +DEFAULT_BUTTON_NAME = "Multiscrape Refresh Button" + +CONF_STATE_CLASS = "state_class" +CONF_ON_ERROR = "on_error" +CONF_ON_ERROR_LOG = "log" +CONF_ON_ERROR_VALUE = "value" +CONF_ON_ERROR_VALUE_LAST = "last" +CONF_ON_ERROR_VALUE_NONE = "none" +CONF_ON_ERROR_VALUE_DEFAULT = "default" +CONF_ON_ERROR_DEFAULT = "default" +CONF_PICTURE = "picture" +CONF_PARSER = "parser" +CONF_SELECT = "select" +CONF_SELECT_LIST = "select_list" +CONF_SEPARATOR = "list_separator" +CONF_ATTR = "attribute" +CONF_SENSOR_ATTRS = "attributes" +CONF_FORM_SUBMIT = "form_submit" +CONF_FORM_SELECT = "select" +CONF_FORM_INPUT = "input" +CONF_FORM_INPUT_FILTER = "input_filter" +CONF_FORM_SUBMIT_ONCE = "submit_once" +CONF_FORM_RESUBMIT_ERROR = "resubmit_on_error" +CONF_FORM_VARIABLES = "variables" +CONF_LOG_RESPONSE = "log_response" +CONF_EXTRACT = "extract" +EXTRACT_OPTIONS = ["text", "content", "tag"] +DEFAULT_PARSER = "lxml" +DEFAULT_EXTRACT = "text" + +CONF_FIELDS = "fields" + +SCRAPER_IDX = "scraper_idx" +PLATFORM_IDX = "platform_idx" + +COORDINATOR = "coordinator" +SCRAPER = "scraper" + +SCRAPER_DATA = "scraper" + +METHODS = ["POST", "GET", "post", "get"] +DEFAULT_SEPARATOR = "," + +LOG_ERROR = "error" +LOG_WARNING = "warning" +LOG_INFO = "info" +LOG_FALSE = False +LOG_LEVELS = { + LOG_INFO: 20, + LOG_WARNING: 30, + LOG_ERROR: 40, + LOG_FALSE: False, + "false": False, + "False": False, +} + + +DEFAULT_ON_ERROR_LOG = LOG_ERROR +DEFAULT_ON_ERROR_VALUE = CONF_ON_ERROR_VALUE_NONE diff --git a/custom_components/multiscrape/coordinator.py b/custom_components/multiscrape/coordinator.py new file mode 100644 index 00000000..1c1d62c2 --- /dev/null +++ b/custom_components/multiscrape/coordinator.py @@ -0,0 +1,222 @@ +"""Coordinator class for multiscrape integration.""" +import logging +from collections.abc import Callable +from datetime import timedelta + +from homeassistant.const import (CONF_RESOURCE, CONF_RESOURCE_TEMPLATE, + CONF_SCAN_INTERVAL, + EVENT_HOMEASSISTANT_STARTED) +from homeassistant.core import Event, HomeAssistant +from homeassistant.helpers.update_coordinator import (DataUpdateCoordinator, + event) +from homeassistant.util.dt import utcnow + +from .const import DOMAIN +from .file import LoggingFileManager +from .form import FormSubmitter +from .http import HttpWrapper +from .scraper import Scraper +from .util import create_renderer + +_LOGGER = logging.getLogger(__name__) +# we don't want to go with the default 15 seconds defined in helpers/entity_component +DEFAULT_SCAN_INTERVAL = timedelta(seconds=60) + + +def create_content_request_manager( + config_name, config, hass: HomeAssistant, http, form_submitter +): + """Create a content request manager instance.""" + _LOGGER.debug("%s # Creating ContentRequestManager", config_name) + resource = config.get(CONF_RESOURCE) + resource_template = config.get(CONF_RESOURCE_TEMPLATE) + + if resource_template is not None: + resource_renderer = create_renderer(hass, resource_template) + else: + resource_renderer = create_renderer(hass, resource) + return ContentRequestManager(config_name, http, resource_renderer, form_submitter) + + +class ContentRequestManager: + """Responsible for orchestrating all request required to retrieve the desired content.""" + + def __init__( + self, + config_name: str, + http: HttpWrapper, + resource_renderer: Callable, + form: FormSubmitter = None, + ) -> None: + """Initialize ContentRequestManager.""" + self._config_name = config_name + self._http = http + self._form_submitter = form + self._resource_renderer = resource_renderer + self._cookies = None + self._form_variables = {} + + def notify_scrape_exception(self): + """Notify the form_submitter of an exception so it will re-submit next trigger.""" + if self._form_submitter: + self._form_submitter.notify_scrape_exception() + + async def get_content(self) -> str: + """Retrieve the content of a url and first submit a form if required.""" + resource = self._resource_renderer() + + if self._form_submitter: + try: + result, self._cookies = await self._form_submitter.async_submit(resource) + self._form_variables = self._form_submitter.scrape_variables() + + if result: + _LOGGER.debug( + "%s # Using response from form-submit as content for scraping.", + self._config_name, + ) + return result + except Exception as ex: + _LOGGER.error( + "%s # Exception in form-submit feature. Will continue trying to scrape target page.\n%s", + self._config_name, + ex, + ) + + response = await self._http.async_request("page", resource, cookies=self._cookies, variables=self._form_variables) + return response.text + + @property + def form_variables(self): + """Return the form variables.""" + return self._form_variables + + +def create_multiscrape_coordinator( + config_name, conf, hass, request_manager, file_manager, scraper +): + """Create a multiscrape coordinator instance.""" + _LOGGER.debug("%s # Creating coordinator", config_name) + + scan_interval = conf.get(CONF_SCAN_INTERVAL, DEFAULT_SCAN_INTERVAL) + + return MultiscrapeDataUpdateCoordinator( + config_name, + hass, + request_manager, + file_manager, + scraper, + scan_interval, + ) + + +class MultiscrapeDataUpdateCoordinator(DataUpdateCoordinator): + """Multiscrape coordinator class.""" + + def __init__( + self, + config_name, + hass: HomeAssistant, + request_manager: ContentRequestManager, + file_manager: LoggingFileManager, + scraper: Scraper, + update_interval: timedelta | None, + ): + """Initialize the coordinator.""" + self._config_name = config_name + self._request_manager = request_manager + self._file_manager = file_manager + self._scraper = scraper + self._update_interval = update_interval + self.update_error = False + self._resource = None + self._retry: int = 0 + + if self._update_interval == timedelta(seconds=0): + self._update_interval = None + + _LOGGER.debug( + "%s # Scan interval is %s", self._config_name, self._update_interval + ) + + super().__init__( + hass, _LOGGER, name=DOMAIN, update_interval=self._update_interval + ) + + async def _on_hass_start(_: Event) -> None: + """Trigger scrape on startup.""" + if self.update_interval and self.update_interval > timedelta(0): + _LOGGER.debug("%s # Home assistant started, triggering scrape on startup", self._config_name) + await self.async_refresh() + + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STARTED, _on_hass_start) + + def notify_scrape_exception(self): + """Notify the ContentRequestManager of a scrape exception so it can notify the FormSubmitter.""" + self._request_manager.notify_scrape_exception() + + async def _async_update_data(self): + await self._prepare_new_run() + + try: + response = await self._request_manager.get_content() + await self._scraper.set_content(response) + _LOGGER.debug( + "%s # Data successfully refreshed. Sensors will now start scraping to update.", + self._config_name, + ) + self._retry = 0 + + except Exception as ex: + _LOGGER.error( + "%s # Updating failed with exception: %s", + self._config_name, + ex, + ) + self._scraper.reset() + self.update_error = True + if self._update_interval is None: + self._async_unsub_refresh() + if self._retry < 3: + self._unsub_refresh = event.async_track_point_in_utc_time( + self.hass, + self._job, + utcnow().replace(microsecond=self._microsecond) + + timedelta(seconds=30), + ) + _LOGGER.warning( + "%s # Since updating failed and scan_interval = 0, retry %s of 3 will be scheduled in 30 seconds", + self._config_name, + self._retry + 1, + ) + self._retry = self._retry + 1 + else: + _LOGGER.error( + "%s # Updating and 3 retries failed and scan_interval = 0, please manually retry with trigger service.", + self._config_name, + ) + + async def _prepare_new_run(self): + _LOGGER.debug( + "%s # New run: start (re)loading data from resource", self._config_name + ) + self.update_error = False + if self._file_manager: + _LOGGER.debug( + "%s # Deleting logging files from previous run", self._config_name + ) + try: + await self.hass.async_add_executor_job(self._file_manager.empty_folder) + except Exception as ex: + _LOGGER.error( + "%s # Error deleting files from previous run: %s", + self._config_name, + ex, + ) + + self._scraper.reset() + + @property + def form_variables(self): + """Return the form variables.""" + return self._request_manager.form_variables diff --git a/custom_components/multiscrape/entity.py b/custom_components/multiscrape/entity.py new file mode 100644 index 00000000..f9efe5cb --- /dev/null +++ b/custom_components/multiscrape/entity.py @@ -0,0 +1,195 @@ +"""The base entity for the scraper component.""" +import logging +from abc import abstractmethod +from typing import Any + +from homeassistant.core import callback +from homeassistant.exceptions import TemplateError +from homeassistant.helpers.restore_state import RestoreEntity +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +from .const import (CONF_ON_ERROR_VALUE_DEFAULT, CONF_ON_ERROR_VALUE_LAST, + CONF_ON_ERROR_VALUE_NONE, LOG_LEVELS) +from .scraper import Scraper + +_LOGGER = logging.getLogger(__name__) + + +class MultiscrapeEntity(RestoreEntity): + """A class for entities using DataUpdateCoordinator.""" + + def __init__( + self, + hass, + coordinator: DataUpdateCoordinator[Any], + scraper: Scraper, + name, + device_class, + force_update, + icon_template, + picture, + attribute_selectors, + ) -> None: + """Create the entity that may have a coordinator.""" + + self.coordinator = coordinator + self.scraper = scraper + self._name = name + + self._attr_name = name + self._attr_device_class = device_class + self._attr_force_update = force_update + self._attr_should_poll = False + self._attr_extra_state_attributes = {} + if picture: + self._attr_entity_picture = picture + _LOGGER.debug( + "%s # %s # Set picture to: %s", + self.scraper.name, + self._name, + self._attr_entity_picture, + ) + + self.hass = hass + self._attribute_selectors = attribute_selectors + + self._icon_template = icon_template + if self._icon_template: + self._icon_template.hass = hass + + super().__init__() + + def _set_icon(self, value): + try: + self._attr_icon = self._icon_template.async_render( + variables={"value": value}, parse_result=False + ) + _LOGGER.debug( + "%s # %s # Icon template rendered and set to: %s", + self.scraper.name, + self._name, + self._attr_icon, + ) + except TemplateError as exception: + _LOGGER.error( + "%s # %s # Exception occurred when rendering icon template. Exception: %s", + self.scraper.name, + self._name, + exception, + ) + + async def async_added_to_hass(self) -> None: + """When entity is added to hass.""" + await super().async_added_to_hass() + _LOGGER.debug( + "%s # %s # Added sensor to HA", + self.scraper.name, + self._name, + ) + if self.coordinator: + self.async_on_remove( + self.coordinator.async_add_listener( + self._handle_coordinator_update) + ) + + if not (state := await self.async_get_last_state()): + return + _LOGGER.debug("%s # %s # Restoring previous state: %s", self.scraper.name, self._name, state.state) + self._attr_native_value = state.state + + for name in self._attribute_selectors: + if state.attributes.get(name) is not None: + _LOGGER.debug("%s # %s # Restoring attribute `%s` with value: %s", self.scraper.name, self._name, name, state.attributes[name]) + self._attr_extra_state_attributes[name] = state.attributes[name] + + + @callback + def _handle_coordinator_update(self) -> None: + """Handle updated data from the coordinator.""" + if not self.coordinator.last_update_success: + _LOGGER.debug( + "%s # %s # Last update of the resource was not successful. Setting sensor availability to False", + self.scraper.name, + self._name, + ) + self._attr_available = False + else: + self._attr_available = True + self._update_sensor() + self._update_attributes() + self.async_write_ha_state() + _LOGGER.debug( + "%s # %s # Sensor updated and state written to HA", + self.scraper.name, + self._name, + ) + + @abstractmethod + def _update_sensor(self): + """Update state from the scraper data.""" + + def _update_attributes(self): + if self._attribute_selectors: + _LOGGER.debug( + "%s # %s # Start scraping attributes", + self.scraper.name, + self._name, + ) + self.old_attributes, self._attr_extra_state_attributes = ( + self._attr_extra_state_attributes, + {}, + ) + for name, attr_selector in self._attribute_selectors.items(): + try: + attr_value = self.scraper.scrape( + attr_selector, self._name, name, variables=self.coordinator.form_variables) + self._attr_extra_state_attributes[name] = attr_value + except Exception as exception: + _LOGGER.debug( + "%s # %s # %s # Exception selecting attribute data: %s", + self.scraper.name, + self._name, + name, + exception, + ) + + if attr_selector.on_error.log in LOG_LEVELS: + level = LOG_LEVELS[attr_selector.on_error.log] + _LOGGER.log( + level, + "%s # %s # %s # Unable to extract data from HTML", + self.scraper.name, + self._name, + name, + ) + + if attr_selector.on_error.value == CONF_ON_ERROR_VALUE_NONE: + _LOGGER.debug( + "%s # %s # %s # On-error, set value to None", + self.scraper.name, + self._name, + name, + ) + self._attr_extra_state_attributes[name] = None + elif attr_selector.on_error.value == CONF_ON_ERROR_VALUE_LAST: + self._attr_extra_state_attributes[ + name + ] = self.old_attributes.get(name) + _LOGGER.debug( + "%s # %s # %s # On-error, keep old value: %s", + self.scraper.name, + self._name, + name, + self.old_attributes.get(name), + ) + elif attr_selector.on_error.value == CONF_ON_ERROR_VALUE_DEFAULT: + self._attr_extra_state_attributes[ + name + ] = attr_selector.on_error_default + _LOGGER.debug( + "%s # %s # %s # On-error, set default value: %s", + self.scraper.name, + self._name, + name, + attr_selector.on_error_default, + ) diff --git a/custom_components/multiscrape/file.py b/custom_components/multiscrape/file.py new file mode 100644 index 00000000..bf09037b --- /dev/null +++ b/custom_components/multiscrape/file.py @@ -0,0 +1,53 @@ +"""LoggingFileManager for file utilities.""" +import logging +import os + +from homeassistant.core import HomeAssistant +from homeassistant.util import slugify + +_LOGGER = logging.getLogger(__name__) + +async def create_file_manager(hass: HomeAssistant, config_name: str, log_response: bool): + """Create a file manager instance.""" + file_manager = None + if log_response: + folder = os.path.join( + hass.config.config_dir, f"multiscrape/{slugify(config_name)}/" + ) + _LOGGER.debug( + "%s # Log responses enabled, creating logging folder: %s", + config_name, + folder, + ) + file_manager = LoggingFileManager(folder) + hass.async_add_executor_job(file_manager.create_folders) + return file_manager + +class LoggingFileManager: + """LoggingFileManager for handling logging files.""" + + def __init__(self, folder): + """Initialize the LoggingFileManager.""" + self.folder = folder + + def create_folders(self): + """Create folders for the logging files.""" + if not os.path.exists(os.path.dirname(self.folder)): + try: + os.makedirs(os.path.dirname(self.folder)) + except OSError as exc: # Guard against race condition + if exc.errno != errno.EEXIST: # noqa: F821 + raise + + def empty_folder(self): + """Empty the logging folders (typically called before a new run).""" + for filename in os.listdir(self.folder): + file_path = os.path.join(self.folder, filename) + if os.path.isfile(file_path) or os.path.islink(file_path): + os.unlink(file_path) + + def write(self, filename, content): + """Write the logging content to a file.""" + path = os.path.join(self.folder, filename) + with open(path, "w", encoding="utf8") as file: + file.write(str(content)) diff --git a/custom_components/multiscrape/form.py b/custom_components/multiscrape/form.py new file mode 100644 index 00000000..0f54d183 --- /dev/null +++ b/custom_components/multiscrape/form.py @@ -0,0 +1,272 @@ +"""Form submit logic.""" +import logging +from urllib.parse import urljoin + +from bs4 import BeautifulSoup +from homeassistant.const import CONF_NAME, CONF_RESOURCE +from homeassistant.core import HomeAssistant + +from custom_components.multiscrape.scraper import create_scraper + +from .const import (CONF_FORM_INPUT, CONF_FORM_INPUT_FILTER, + CONF_FORM_RESUBMIT_ERROR, CONF_FORM_SELECT, + CONF_FORM_SUBMIT_ONCE, CONF_FORM_VARIABLES) +from .file import LoggingFileManager +from .http import HttpWrapper +from .selector import Selector + +_LOGGER = logging.getLogger(__name__) + + +def create_form_submitter(config_name, config, hass, http, file_manager, parser): + """Create a form submitter instance.""" + resource = config.get(CONF_RESOURCE) + select = config.get(CONF_FORM_SELECT) + input_values = config.get(CONF_FORM_INPUT) + input_filter = config.get(CONF_FORM_INPUT_FILTER) + resubmit_error = config.get(CONF_FORM_RESUBMIT_ERROR) + submit_once = config.get(CONF_FORM_SUBMIT_ONCE) + + scraper = None + variables_selectors = {} + variables = config.get(CONF_FORM_VARIABLES) + if (variables != []): + scraper = create_scraper(config_name, config, hass, file_manager) + for variables_conf in variables: + variables_selectors[variables_conf.get(CONF_NAME)] = Selector(hass, variables_conf) + + return FormSubmitter( + config_name, + hass, + http, + file_manager, + resource, + select, + input_values, + input_filter, + submit_once, + resubmit_error, + variables_selectors, + scraper, + parser, + ) + + +class FormSubmitter: + """Class to take care of submitting a form.""" + + def __init__( + self, + config_name, + hass: HomeAssistant, + http: HttpWrapper, + file_manager: LoggingFileManager, + form_resource, + select, + input_values, + input_filter, + submit_once, + resubmit_error, + variables_selectors, + scraper, + parser, + ): + """Initialize FormSubmitter class.""" + _LOGGER.debug("%s # Initializing form submitter", config_name) + self._config_name = config_name + self._hass = hass + self._http = http + self._file_manager = file_manager + self._form_resource = form_resource + self._select = select + self._input_values = input_values + self._input_filter = input_filter + self._submit_once = submit_once + self._resubmit_error = resubmit_error + self._variables_selectors = variables_selectors + self._scraper = scraper + self._parser = parser + self._should_submit = True + self._cookies = None + + def notify_scrape_exception(self): + """Make sure form is re-submitted after an exception.""" + if self._resubmit_error: + _LOGGER.debug( + "%s # Exception occurred while scraping, will try to resubmit the form next interval.", + self._config_name, + ) + self._should_submit = True + + async def async_submit(self, main_resource): + """Submit the form.""" + if not self._should_submit: + _LOGGER.debug("%s # Skip submitting form", self._config_name) + return + + _LOGGER.debug("%s # Starting with form-submit", self._config_name) + input_fields = {} + action, method = None, None + + if self._select: + if self._form_resource: + page = await self._fetch_form_page(self._form_resource) + else: + page = await self._fetch_form_page(main_resource) + form = await self._async_substract_form(page) + + input_fields = self._get_input_fields(form) + for field in self._input_filter: + input_fields.pop(field, None) + + action = form.get("action") + method = form.get("method") + + _LOGGER.debug( + "%s # Found form action %s and method %s", + self._config_name, + action, + method, + ) + else: + _LOGGER.debug( + "%s # Skip scraping form, assuming all input is given in config.", + self._config_name, + ) + + input_fields.update(self._input_values) + + _LOGGER.debug( + "%s # Merged input fields with input data in config. Result: %s", + self._config_name, + input_fields, + ) + + if not method: + method = "POST" + + submit_resource = self._determine_submit_resource(action, main_resource) + + _LOGGER.debug("%s # Submitting the form", self._config_name) + response = await self._http.async_request( + "form_submit", + submit_resource, + method=method, + request_data=input_fields, + cookies=self._cookies + ) + _LOGGER.debug( + "%s # Form seems to be submitted successfully (to be sure, use log_response and check file). Now continuing to retrieve target page.", + self._config_name, + ) + + if self._submit_once: + self._should_submit = False + + if self._scraper: + await self._scraper.set_content(response.text) + + if not self._form_resource: + return response.text, response.cookies + else: + return None, response.cookies + + def scrape_variables(self): + """Scrape header mappings.""" + result = {} + for variable_key in self._variables_selectors: + result[variable_key] = self._scraper.scrape(self._variables_selectors[variable_key], variable_key) + return result + + def _determine_submit_resource(self, action, main_resource): + resource = main_resource + if action and self._form_resource: + resource = urljoin(self._form_resource, action) + elif action: + resource = urljoin(main_resource, action) + elif self._form_resource: + resource = self._form_resource + + _LOGGER.debug( + "%s # Determined the url to submit the form to: %s", + self._config_name, + resource, + ) + return resource + + async def _fetch_form_page(self, resource): + _LOGGER.debug( + "%s # Requesting page with form from: %s", + self._config_name, + resource, + ) + response = await self._http.async_request( + "form_page", + resource, + "GET", + ) + self._cookies = response.cookies + return response.text + + def _get_input_fields(self, form): + _LOGGER.debug("%s # Finding all input fields in form", self._config_name) + elements = form.findAll("input") + input_fields = { + element.get("name"): element.get("value") for element in elements + } + _LOGGER.debug( + "%s # Found the following input fields: %s", self._config_name, input_fields + ) + return input_fields + + async def _async_file_log(self, content_name, content): + try: + filename = f"{content_name}.txt" + await self._hass.async_add_executor_job( + self._file_manager.write, filename, content + ) + except Exception as ex: + _LOGGER.error( + "%s # Unable to write BeautifulSoup form-page result to file: %s. \nException: %s", + self._config_name, + filename, + ex, + ) + _LOGGER.debug( + "%s # The page with the form parsed by BeautifulSoup has been written to file: %s", + self._config_name, + filename, + ) + + async def _async_substract_form(self, page): + try: + _LOGGER.debug( + "%s # Parse page with form with BeautifulSoup parser %s", + self._config_name, + self._parser, + ) + soup = BeautifulSoup(page, self._parser) + soup.prettify() + if self._file_manager: + await self._async_file_log("form_page_soup", soup) + + _LOGGER.debug( + "%s # Try to find form with selector %s", + self._config_name, + self._select, + ) + form = soup.select_one(self._select) + + if not form: + raise ValueError("Could not find form") + + _LOGGER.debug("%s # Form looks like this: \n%s", self._config_name, form) + return form + + except IndexError as exception: + _LOGGER.info( + "%s # Unable to get the form from the page: %s", + self._config_name, + exception, + ) + raise diff --git a/custom_components/multiscrape/http.py b/custom_components/multiscrape/http.py new file mode 100644 index 00000000..4e94b0c1 --- /dev/null +++ b/custom_components/multiscrape/http.py @@ -0,0 +1,210 @@ +"""HTTP request related functionality.""" +import asyncio +import logging +from collections.abc import Callable + +import httpx +from homeassistant.const import (CONF_AUTHENTICATION, CONF_HEADERS, + CONF_METHOD, CONF_PARAMS, CONF_PASSWORD, + CONF_PAYLOAD, CONF_TIMEOUT, CONF_USERNAME, + CONF_VERIFY_SSL, HTTP_DIGEST_AUTHENTICATION) +from homeassistant.helpers.httpx_client import get_async_client + +from .util import create_dict_renderer, create_renderer + +_LOGGER = logging.getLogger(__name__) + + +def create_http_wrapper(config_name, config, hass, file_manager): + """Create a http wrapper instance.""" + verify_ssl = config.get(CONF_VERIFY_SSL) + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + auth_type = config.get(CONF_AUTHENTICATION) + timeout = config.get(CONF_TIMEOUT) + headers = config.get(CONF_HEADERS) + params = config.get(CONF_PARAMS) + payload = config.get(CONF_PAYLOAD) + method = config.get(CONF_METHOD) + + client = get_async_client(hass, verify_ssl) + http = HttpWrapper( + config_name, + hass, + client, + file_manager, + timeout, + method, + params_renderer=create_dict_renderer(hass, params), + headers_renderer=create_dict_renderer(hass, headers), + data_renderer=create_renderer(hass, payload), + ) + if username and password: + http.set_authentication(username, password, auth_type) + return http + + +class HttpWrapper: + """Class to wrap a httpx request.""" + + def __init__( + self, + config_name, + hass, + client, + file_manager, + timeout, + method: str = None, + params_renderer: Callable = None, + headers_renderer: Callable = None, + data_renderer: Callable = None, + ): + """Initialize HttpWrapper.""" + _LOGGER.debug("%s # Initializing http wrapper", config_name) + self._client = client + self._file_manager = file_manager + self._config_name = config_name + self._timeout = timeout + self._hass = hass + self._auth = None + self._method = method + self._params_renderer = params_renderer + self._headers_renderer = headers_renderer + self._data_renderer = data_renderer + + def set_authentication(self, username, password, auth_type): + """Set http authentication.""" + if auth_type == HTTP_DIGEST_AUTHENTICATION: + self._auth = httpx.DigestAuth(username, password) + else: + self._auth = (username, password) + _LOGGER.debug( + "%s # Authentication configuration processed", self._config_name) + + async def async_request(self, context, resource, method=None, request_data=None, cookies=None, variables: dict = {}): + """Execute a HTTP request.""" + data = request_data or self._data_renderer(variables) + method = method or self._method or "GET" + headers = self._headers_renderer(variables) + params = self._params_renderer(variables) + + _LOGGER.debug( + "%s # Executing %s-request with a %s to url: %s with headers: %s and cookies: %s.", + self._config_name, + context, + method, + resource, + headers, + cookies + ) + if self._file_manager: + task1 = self._async_file_log("request_headers", context, headers) + task2 = self._async_file_log("request_body", context, data) + task3 = self._async_file_log("request_cookies", context, cookies) + await asyncio.gather(task1, task2, task3) + + response = None + + try: + response = await self._client.request( + method, + resource, + headers=headers, + params=params, + auth=self._auth, + data=data, + timeout=self._timeout, + follow_redirects=True, + cookies=cookies + ) + + _LOGGER.debug( + "%s # Response status code received: %s", + self._config_name, + response.status_code, + ) + if self._file_manager: + task1 = self._async_file_log( + "response_headers", context, response.headers + ) + task2 = self._async_file_log("response_body", context, response.text) + task3 = self._async_file_log("response_cookies", context, response.cookies) + await asyncio.gather(task1, task2, task3) + + # bit of a hack since httpx also raises an exception for redirects: https://github.com/encode/httpx/blob/c6c8cb1fe2da9380f8046a19cdd5aade586f69c8/CHANGELOG.md#0200-13th-october-2021 + if 400 <= response.status_code <= 599: + response.raise_for_status() + return response + except httpx.TimeoutException as ex: + _LOGGER.debug( + "%s # Timeout error while executing %s request to url: %s.\n Error message:\n %s", + self._config_name, + method, + resource, + repr(ex), + ) + await self._handle_request_exception(context, response) + raise + except httpx.RequestError as ex: + _LOGGER.debug( + "%s # Request error while executing %s request to url: %s.\n Error message:\n %s", + self._config_name, + method, + resource, + repr(ex), + ) + await self._handle_request_exception(context, response) + raise + except Exception as ex: + _LOGGER.debug( + "%s # Error executing %s request to url: %s.\n Error message:\n %s", + self._config_name, + method, + resource, + repr(ex), + ) + await self._handle_request_exception(context, response) + raise + + async def _handle_request_exception(self, context, response): + try: + if self._file_manager: + task1 = self._async_file_log( + "response_headers_error", context, response.headers + ) + task2 = self._async_file_log( + "response_body_error", context, response.text + ) + task3 = self._async_file_log( + "response_cookies_error", context, response.cookies + ) + await asyncio.gather(task1, task2, task3) + except Exception as exc: + _LOGGER.debug( + "%s # Unable to write headers, cookies and/or body to file during handling of exception.\n Error message:\n %s", + self._config_name, + repr(exc), + ) + + async def _async_file_log(self, content_name, context, content): + """Write content to a file if content is not None.""" + if content is not None: + try: + filename = f"{context}_{content_name}.txt" + await self._hass.async_add_executor_job( + self._file_manager.write, filename, content + ) + except Exception as ex: + _LOGGER.error( + "%s # Unable to write %s to file: %s. \nException: %s", + self._config_name, + content_name, + filename, + ex, + ) + _LOGGER.debug( + "%s # %s written to file: %s", + self._config_name, + content_name, + filename, + ) diff --git a/custom_components/multiscrape/icons.json b/custom_components/multiscrape/icons.json new file mode 100644 index 00000000..441d186b --- /dev/null +++ b/custom_components/multiscrape/icons.json @@ -0,0 +1,8 @@ +{ + "services": { + "reload": "mdi:reload", + "get_content": "mdi:content-copy", + "scrape": "mdi:web-sync", + "trigger": "mdi:web-refresh" + } +} diff --git a/custom_components/multiscrape/manifest.json b/custom_components/multiscrape/manifest.json new file mode 100644 index 00000000..2e2df0f1 --- /dev/null +++ b/custom_components/multiscrape/manifest.json @@ -0,0 +1,12 @@ +{ + "domain": "multiscrape", + "name": "Multiscrape", + "codeowners": ["@danieldotnl"], + "config_flow": false, + "dependencies": [], + "documentation": "https://github.com/danieldotnl/ha-multiscrape", + "iot_class": "local_polling", + "issue_tracker": "https://github.com/danieldotnl/ha-multiscrape/issues", + "requirements": ["lxml>=4.9.1", "beautifulsoup4>=4.12.2"], + "version": "8.0.2" +} diff --git a/custom_components/multiscrape/schema.py b/custom_components/multiscrape/schema.py new file mode 100644 index 00000000..2b641b7c --- /dev/null +++ b/custom_components/multiscrape/schema.py @@ -0,0 +1,212 @@ +"""The multiscrape component schemas.""" +import logging + +import homeassistant.helpers.config_validation as cv +import voluptuous as vol +from homeassistant.components.binary_sensor import \ + DEVICE_CLASSES_SCHEMA as BINARY_SENSOR_DEVICE_CLASSES_SCHEMA +from homeassistant.components.binary_sensor import \ + DOMAIN as BINARY_SENSOR_DOMAIN +from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN +from homeassistant.components.sensor import \ + DEVICE_CLASSES_SCHEMA as SENSOR_DEVICE_CLASSES_SCHEMA +from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN +from homeassistant.components.sensor import \ + STATE_CLASSES_SCHEMA as SENSOR_STATE_CLASSES_SCHEMA +from homeassistant.const import (CONF_AUTHENTICATION, CONF_DEVICE_CLASS, + CONF_FORCE_UPDATE, CONF_HEADERS, CONF_ICON, + CONF_METHOD, CONF_NAME, CONF_PARAMS, + CONF_PASSWORD, CONF_PAYLOAD, CONF_RESOURCE, + CONF_RESOURCE_TEMPLATE, CONF_SCAN_INTERVAL, + CONF_TIMEOUT, CONF_UNIQUE_ID, + CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME, + CONF_VALUE_TEMPLATE, CONF_VERIFY_SSL, + HTTP_BASIC_AUTHENTICATION, + HTTP_DIGEST_AUTHENTICATION) + +from .const import (CONF_ATTR, CONF_EXTRACT, CONF_FORM_INPUT, + CONF_FORM_INPUT_FILTER, CONF_FORM_RESUBMIT_ERROR, + CONF_FORM_SELECT, CONF_FORM_SUBMIT, CONF_FORM_SUBMIT_ONCE, + CONF_FORM_VARIABLES, CONF_LOG_RESPONSE, CONF_ON_ERROR, + CONF_ON_ERROR_DEFAULT, CONF_ON_ERROR_LOG, + CONF_ON_ERROR_VALUE, CONF_ON_ERROR_VALUE_DEFAULT, + CONF_ON_ERROR_VALUE_LAST, CONF_ON_ERROR_VALUE_NONE, + CONF_PARSER, CONF_PICTURE, CONF_SELECT, CONF_SELECT_LIST, + CONF_SENSOR_ATTRS, CONF_SEPARATOR, CONF_STATE_CLASS, + DEFAULT_BINARY_SENSOR_NAME, DEFAULT_BUTTON_NAME, + DEFAULT_EXTRACT, DEFAULT_FORCE_UPDATE, DEFAULT_METHOD, + DEFAULT_PARSER, DEFAULT_SENSOR_NAME, DEFAULT_SEPARATOR, + DEFAULT_VERIFY_SSL, DOMAIN, EXTRACT_OPTIONS, LOG_ERROR, + LOG_LEVELS, METHODS) +from .scraper import DEFAULT_TIMEOUT + +_LOGGER = logging.getLogger(__name__) + +HTTP_SCHEMA = { + vol.Exclusive(CONF_RESOURCE, CONF_RESOURCE): cv.url, + vol.Exclusive(CONF_RESOURCE_TEMPLATE, CONF_RESOURCE): cv.template, + vol.Optional(CONF_AUTHENTICATION): vol.In( + [HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION] + ), + vol.Optional(CONF_HEADERS): vol.Schema({cv.string: cv.template}), + vol.Optional(CONF_PARAMS): vol.Schema({cv.string: cv.template}), + vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(METHODS), + vol.Optional(CONF_USERNAME): cv.string, + vol.Optional(CONF_PASSWORD): cv.string, + vol.Optional(CONF_PAYLOAD): cv.template, + vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean, + vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int, +} + +INTEGRATION_SCHEMA = { + **HTTP_SCHEMA, + vol.Optional(CONF_PARSER, default=DEFAULT_PARSER): cv.string, + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_SCAN_INTERVAL): cv.time_period, + vol.Optional(CONF_LOG_RESPONSE, default=False): cv.boolean, + vol.Optional(CONF_SEPARATOR, default=DEFAULT_SEPARATOR): cv.string, +} + +ON_ERROR_SCHEMA = { + vol.Optional(CONF_ON_ERROR_LOG, default=LOG_ERROR): vol.In(list(LOG_LEVELS.keys())), + vol.Optional(CONF_ON_ERROR_VALUE, default=CONF_ON_ERROR_VALUE_NONE): vol.In( + [ + CONF_ON_ERROR_VALUE_LAST, + CONF_ON_ERROR_VALUE_NONE, + CONF_ON_ERROR_VALUE_DEFAULT, + ] + ), + vol.Optional(CONF_ON_ERROR_DEFAULT): cv.template, +} + +SELECTOR_SCHEMA = { + vol.Optional(CONF_SELECT): cv.template, + vol.Optional(CONF_SELECT_LIST): cv.template, + vol.Optional(CONF_ATTR): cv.string, + vol.Optional(CONF_VALUE_TEMPLATE): cv.template, + vol.Optional(CONF_ON_ERROR): vol.Schema(ON_ERROR_SCHEMA), + vol.Optional(CONF_EXTRACT, default=DEFAULT_EXTRACT): vol.In(EXTRACT_OPTIONS), +} + +FORM_HEADERS_MAPPING_SCHEMA = {vol.Required(CONF_NAME): cv.string, **SELECTOR_SCHEMA} + +FORM_SUBMIT_SCHEMA = { + **HTTP_SCHEMA, + vol.Optional(CONF_FORM_SELECT): cv.string, + vol.Optional(CONF_FORM_INPUT): vol.Schema({cv.string: cv.string}), + vol.Optional(CONF_FORM_INPUT_FILTER, default=[]): cv.ensure_list, + vol.Optional(CONF_FORM_SUBMIT_ONCE, default=False): cv.boolean, + vol.Optional(CONF_FORM_RESUBMIT_ERROR, default=True): cv.boolean, + vol.Optional(CONF_FORM_VARIABLES, default=[]): vol.All( + cv.ensure_list, [vol.Schema(FORM_HEADERS_MAPPING_SCHEMA)] + ), +} + +SENSOR_ATTRIBUTE_SCHEMA = {vol.Required(CONF_NAME): cv.string, **SELECTOR_SCHEMA} + +SENSOR_SCHEMA = { + vol.Optional(CONF_NAME, default=DEFAULT_SENSOR_NAME): cv.string, + vol.Optional(CONF_UNIQUE_ID): cv.string, + vol.Optional(CONF_UNIT_OF_MEASUREMENT): cv.string, + vol.Optional(CONF_DEVICE_CLASS): SENSOR_DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_STATE_CLASS): SENSOR_STATE_CLASSES_SCHEMA, + vol.Optional(CONF_ICON): cv.template, + vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean, + vol.Optional(CONF_PICTURE): cv.string, + **SELECTOR_SCHEMA, + vol.Optional(CONF_SENSOR_ATTRS): vol.All( + cv.ensure_list, [vol.Schema(SENSOR_ATTRIBUTE_SCHEMA)] + ), +} + +BINARY_SENSOR_SCHEMA = { + vol.Optional(CONF_NAME, default=DEFAULT_BINARY_SENSOR_NAME): cv.string, + vol.Optional(CONF_UNIQUE_ID): cv.string, + vol.Optional(CONF_DEVICE_CLASS): BINARY_SENSOR_DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_ICON): cv.template, + vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean, + vol.Optional(CONF_PICTURE): cv.string, + **SELECTOR_SCHEMA, + vol.Optional(CONF_SENSOR_ATTRS): vol.All( + cv.ensure_list, [vol.Schema(SENSOR_ATTRIBUTE_SCHEMA)] + ), +} + +BUTTON_SCHEMA = { + vol.Optional(CONF_NAME, default=DEFAULT_BUTTON_NAME): cv.string, + vol.Optional(CONF_UNIQUE_ID): cv.string, +} + +COMBINED_SCHEMA = vol.Schema( + { + **INTEGRATION_SCHEMA, + vol.Optional(CONF_FORM_SUBMIT): vol.Schema(FORM_SUBMIT_SCHEMA), + vol.Optional(SENSOR_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(SENSOR_SCHEMA)] + ), + vol.Optional(BINARY_SENSOR_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(BINARY_SENSOR_SCHEMA)] + ), + vol.Optional(BUTTON_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(BUTTON_SCHEMA)] + ), + } +) + +CONFIG_SCHEMA = vol.Schema( + {DOMAIN: vol.All(cv.ensure_list, [COMBINED_SCHEMA])}, + extra=vol.ALLOW_EXTRA, +) + + +def create_service_schema(): + """Create a schema without templates that render an output value.""" + # Templates are evaluated by home assistant when the service is triggered, so we make them a string and restore them afterwards. + SERVICE_SELECTOR_SCHEMA = dict(SELECTOR_SCHEMA) + SERVICE_SELECTOR_SCHEMA.update({vol.Optional(CONF_VALUE_TEMPLATE): cv.string}) + + SERVICE_SENSOR_ATTRIBUTE_SCHEMA = { + vol.Required(CONF_NAME): cv.string, + **SERVICE_SELECTOR_SCHEMA, + } + + SERVICE_SENSOR_SCHEMA = dict(SENSOR_SCHEMA) + SERVICE_SENSOR_SCHEMA.update({vol.Optional(CONF_VALUE_TEMPLATE): cv.string}) + SERVICE_SENSOR_SCHEMA.update({vol.Optional(CONF_ICON): cv.string}) + SERVICE_SENSOR_SCHEMA.update( + { + vol.Optional(CONF_SENSOR_ATTRS): vol.All( + cv.ensure_list, [vol.Schema(SERVICE_SENSOR_ATTRIBUTE_SCHEMA)] + ) + } + ) + + SERVICE_BINARY_SENSOR_SCHEMA = dict(BINARY_SENSOR_SCHEMA) + SERVICE_BINARY_SENSOR_SCHEMA.update({vol.Optional(CONF_VALUE_TEMPLATE): cv.string}) + SERVICE_BINARY_SENSOR_SCHEMA.update({vol.Optional(CONF_ICON): cv.string}) + SERVICE_BINARY_SENSOR_SCHEMA.update( + { + vol.Optional(CONF_SENSOR_ATTRS): vol.All( + cv.ensure_list, [vol.Schema(SERVICE_SENSOR_ATTRIBUTE_SCHEMA)] + ) + } + ) + + return vol.Schema( + { + **INTEGRATION_SCHEMA, + vol.Optional(CONF_FORM_SUBMIT): vol.Schema(FORM_SUBMIT_SCHEMA), + vol.Optional(SENSOR_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(SERVICE_SENSOR_SCHEMA)] + ), + vol.Optional(BINARY_SENSOR_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(SERVICE_BINARY_SENSOR_SCHEMA)] + ), + vol.Optional(BUTTON_DOMAIN): vol.All( + cv.ensure_list, [vol.Schema(BUTTON_SCHEMA)] + ), + } + ) + + +SERVICE_COMBINED_SCHEMA = create_service_schema() diff --git a/custom_components/multiscrape/scraper.py b/custom_components/multiscrape/scraper.py new file mode 100644 index 00000000..450881b6 --- /dev/null +++ b/custom_components/multiscrape/scraper.py @@ -0,0 +1,192 @@ +"""Support for multiscrape requests.""" +import logging + +from bs4 import BeautifulSoup + +from .const import CONF_PARSER, CONF_SEPARATOR + +DEFAULT_TIMEOUT = 10 +_LOGGER = logging.getLogger(__name__) + + +def create_scraper(config_name, config, hass, file_manager): + """Create a scraper instance.""" + _LOGGER.debug("%s # Creating scraper", config_name) + parser = config.get(CONF_PARSER) + separator = config.get(CONF_SEPARATOR) + + return Scraper( + config_name, + hass, + file_manager, + parser, + separator, + ) + + +class Scraper: + """Class for handling the retrieval and scraping of data.""" + + def __init__( + self, + config_name, + hass, + file_manager, + parser, + separator, + ): + """Initialize the data object.""" + _LOGGER.debug("%s # Initializing scraper", config_name) + + self._hass = hass + self._file_manager = file_manager + self._config_name = config_name + self._parser = parser + self._soup: BeautifulSoup = None + self._data = None + self._separator = separator + self.reset() + + @property + def name(self): + """Property for config name.""" + return self._config_name + + def reset(self): + """Reset the scraper object.""" + self._data = None + self._soup = None + + @property + def formatted_content(self): + """Property for getting the content. HTML will be prettified.""" + if self._soup: + return self._soup.prettify() + return self._data + + async def set_content(self, content): + """Set the content to be scraped.""" + self._data = content + + if content[0] in ["{", "["]: + _LOGGER.debug( + "%s # Response seems to be json. Skip parsing with BeautifulSoup.", + self._config_name, + ) + else: + try: + _LOGGER.debug( + "%s # Loading the content in BeautifulSoup.", + self._config_name, + ) + self._soup = await self._hass.async_add_executor_job( + BeautifulSoup, self._data, self._parser + ) + + if self._file_manager: + await self._async_file_log("page_soup", self._soup.prettify()) + + except Exception as ex: + self.reset() + _LOGGER.error( + "%s # Unable to parse response with BeautifulSoup: %s", + self._config_name, + ex, + ) + raise + + def scrape(self, selector, sensor, attribute=None, variables: dict = {}): + """Scrape based on given selector the data.""" + # This is required as this function is called separately for sensors and attributes + log_prefix = f"{self._config_name} # {sensor}" + if attribute: + log_prefix = log_prefix + f"# {attribute}" + + if selector.just_value: + _LOGGER.debug("%s # Applying value_template only.", log_prefix) + result = selector.value_template.async_render_with_possible_json_value( + self._data, None, variables=variables + ) + return selector.value_template._parse_result(result) + + if self._data[0] in ["{", "["]: + raise ValueError( + "JSON cannot be scraped. Please provide a value template to parse JSON response." + ) + + if selector.is_list: + tags = self._soup.select(selector.list) + _LOGGER.debug("%s # List selector selected tags: %s", + log_prefix, tags) + if selector.attribute is not None: + _LOGGER.debug( + "%s # Try to find attributes: %s", + log_prefix, + selector.attribute, + ) + values = [tag[selector.attribute] for tag in tags] + else: + values = [self.extract_tag_value(tag, selector) for tag in tags] + value = self._separator.join(values) + _LOGGER.debug("%s # List selector csv: %s", log_prefix, value) + + else: + tag = self._soup.select_one(selector.element) + _LOGGER.debug("%s # Tag selected: %s", log_prefix, tag) + if tag is None: + raise ValueError("Could not find a tag for given selector") + + if selector.attribute is not None: + _LOGGER.debug( + "%s # Try to find attribute: %s", log_prefix, selector.attribute + ) + value = tag[selector.attribute] + else: + value = self.extract_tag_value(tag, selector) + _LOGGER.debug("%s # Selector result: %s", log_prefix, value) + + if value is not None and selector.value_template is not None: + _LOGGER.debug( + "%s # Applying value_template on selector result", log_prefix) + variables["value"] = value + value = selector.value_template.async_render(variables=variables, parse_result=True + ) + + _LOGGER.debug( + "%s # Final selector value: %s of type %s", log_prefix, value, type( + value) + ) + return value + + def extract_tag_value(self, tag, selector): + """Extract value from a tag.""" + if tag.name in ("style", "script", "template"): + return tag.string + else: + if selector.extract == "text": + return tag.text + elif selector.extract == "content": + return ''.join(map(str, tag.contents)) + elif selector.extract == "tag": + return str(tag) + + async def _async_file_log(self, content_name, content): + try: + filename = f"{content_name}.txt" + await self._hass.async_add_executor_job( + self._file_manager.write, filename, content + ) + except Exception as ex: + _LOGGER.error( + "%s # Unable to write %s to file: %s. \nException: %s", + self._config_name, + content_name, + filename, + ex, + ) + _LOGGER.debug( + "%s # %s written to file: %s", + self._config_name, + content_name, + filename, + ) diff --git a/custom_components/multiscrape/selector.py b/custom_components/multiscrape/selector.py new file mode 100644 index 00000000..b9b4f3eb --- /dev/null +++ b/custom_components/multiscrape/selector.py @@ -0,0 +1,85 @@ +"""Abstraction of the CSS selectors defined in the config.""" +from collections import namedtuple + +from homeassistant.const import CONF_NAME, CONF_VALUE_TEMPLATE + +from .const import (CONF_ATTR, CONF_EXTRACT, CONF_ON_ERROR, + CONF_ON_ERROR_DEFAULT, CONF_ON_ERROR_LOG, + CONF_ON_ERROR_VALUE, CONF_SELECT, CONF_SELECT_LIST, + DEFAULT_ON_ERROR_LOG, DEFAULT_ON_ERROR_VALUE) + + +class Selector: + """Implementation of a Selector handling the css selectors from the config.""" + + def __init__(self, hass, conf): + """Initialize a Selector.""" + self.name = conf.get(CONF_NAME) + + self.select_template = conf.get(CONF_SELECT) + if self.select_template and self.select_template.hass is None: + self.select_template.hass = hass + + self.select_list_template = conf.get(CONF_SELECT_LIST) + if self.select_list_template and self.select_list_template.hass is None: + self.select_list_template.hass = hass + + self.attribute = conf.get(CONF_ATTR) + self.value_template = conf.get(CONF_VALUE_TEMPLATE) + if self.value_template and self.value_template.hass is None: + self.value_template.hass = hass + + self.extract = conf.get(CONF_EXTRACT) + self.on_error = self.create_on_error(conf.get(CONF_ON_ERROR), hass) + + if ( + not self.select_template + and not self.select_list_template + and not self.value_template + ): + raise ValueError( + "Selector error: either select, select_list or a value_template should be provided." + ) + + def create_on_error(self, conf, hass): + """Determine from config what to do in case of scrape errors.""" + On_Error = namedtuple( + "On_Error", + f"{CONF_ON_ERROR_LOG} {CONF_ON_ERROR_VALUE} {CONF_ON_ERROR_DEFAULT}", + ) + + if not conf: + return On_Error(DEFAULT_ON_ERROR_LOG, DEFAULT_ON_ERROR_VALUE, None) + + log = conf.get(CONF_ON_ERROR_LOG, DEFAULT_ON_ERROR_LOG) + value = conf.get(CONF_ON_ERROR_VALUE, DEFAULT_ON_ERROR_VALUE) + default_template = conf.get(CONF_ON_ERROR_DEFAULT) + if default_template is not None: + default_template.hass = hass + + return On_Error(log, value, default_template) + + @property + def is_list(self): + """Determine whether this selector is a list selector.""" + return self.select_list_template is not None + + @property + def element(self): + """Render the select template and return the CSS selector for a single element.""" + return self.select_template.async_render(parse_result=True) + + @property + def list(self): + """Render the select template and return the CSS selector for a list of elements.""" + return self.select_list_template.async_render(parse_result=True) + + @property + def just_value(self): + """Determine if this selector define a static value and no select is required.""" + return not self.select_list_template and not self.select_template + + @property + def on_error_default(self): + """Return the default on_error value in case as defined in the config.""" + return self.on_error.default.async_render(parse_result=True) diff --git a/custom_components/multiscrape/sensor.py b/custom_components/multiscrape/sensor.py new file mode 100644 index 00000000..3a583525 --- /dev/null +++ b/custom_components/multiscrape/sensor.py @@ -0,0 +1,194 @@ +"""Support for Multiscrape sensors.""" +from __future__ import annotations + +import logging + +from homeassistant.components.sensor import SensorDeviceClass, SensorEntity +from homeassistant.components.sensor.helpers import async_parse_date_datetime +from homeassistant.const import (CONF_DEVICE_CLASS, CONF_FORCE_UPDATE, + CONF_ICON, CONF_NAME, CONF_UNIQUE_ID, + CONF_UNIT_OF_MEASUREMENT, Platform) +from homeassistant.core import HomeAssistant +from homeassistant.exceptions import PlatformNotReady +from homeassistant.helpers.entity import async_generate_entity_id +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType +from homeassistant.util import slugify + +from . import async_get_config_and_coordinator +from .const import (CONF_ON_ERROR_VALUE_DEFAULT, CONF_ON_ERROR_VALUE_LAST, + CONF_ON_ERROR_VALUE_NONE, CONF_PICTURE, CONF_SENSOR_ATTRS, + CONF_STATE_CLASS, LOG_LEVELS) +from .entity import MultiscrapeEntity +from .selector import Selector + +_LOGGER = logging.getLogger(__name__) +ENTITY_ID_FORMAT = Platform.SENSOR + ".{}" + + +async def async_setup_platform( + hass: HomeAssistant, + config: ConfigType, + async_add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: + """Set up the multiscrape sensor.""" + # Must update the sensor now (including fetching the scraper resource) to + # ensure it's updating its state. + if discovery_info is not None: + conf, coordinator, scraper = await async_get_config_and_coordinator( + hass, Platform.SENSOR, discovery_info + ) + else: + _LOGGER.info("?? # Could not find sensor configuration") + + if not coordinator.last_update_success: + raise PlatformNotReady + + sensor_name = conf.get(CONF_NAME) + _LOGGER.debug("%s # %s # Setting up sensor", scraper.name, sensor_name) + unique_id = conf.get(CONF_UNIQUE_ID) + unit = conf.get(CONF_UNIT_OF_MEASUREMENT) + device_class = conf.get(CONF_DEVICE_CLASS) + state_class = conf.get(CONF_STATE_CLASS) + force_update = conf.get(CONF_FORCE_UPDATE) + icon_template = conf.get(CONF_ICON) + picture = conf.get(CONF_PICTURE) + + sensor_selector = Selector(hass, conf) + attribute_selectors = {} + for attr_conf in conf.get(CONF_SENSOR_ATTRS) or []: + attr_name = slugify(attr_conf[CONF_NAME]) + attribute_selectors[attr_name] = Selector(hass, attr_conf) + + async_add_entities( + [ + MultiscrapeSensor( + hass, + coordinator, + scraper, + unique_id, + sensor_name, + unit, + device_class, + state_class, + force_update, + icon_template, + picture, + sensor_selector, + attribute_selectors, + ) + ], + ) + + +class MultiscrapeSensor(MultiscrapeEntity, SensorEntity): + """Implementation of a multiscrape sensor.""" + + def __init__( + self, + hass, + coordinator, + scraper, + unique_id, + name, + unit_of_measurement, + device_class, + state_class, + force_update, + icon_template, + picture, + sensor_selector, + attribute_selectors, + ): + """Initialize the multiscrape sensor.""" + super().__init__( + hass, + coordinator, + scraper, + name, + device_class, + force_update, + icon_template, + picture, + attribute_selectors, + ) + + self.entity_id = async_generate_entity_id( + ENTITY_ID_FORMAT, unique_id or name, hass=hass + ) + self._attr_unique_id = unique_id + self._attr_state_class = state_class + self._attr_native_unit_of_measurement = unit_of_measurement + + self._sensor_selector = sensor_selector + + def _update_sensor(self): + """Update state from the scraper data.""" + _LOGGER.debug( + "%s # %s # Start scraping to update sensor", self.scraper.name, self._name + ) + self._attr_available = True + + try: + if self.coordinator.update_error is True: + raise ValueError( + "Skipped scraping because data couldn't be updated") + + value = self.scraper.scrape( + self._sensor_selector, self._name, variables=self.coordinator.form_variables) + _LOGGER.debug( + "%s # %s # Selected: %s", self.scraper.name, self._name, value + ) + + if self.device_class not in { + SensorDeviceClass.DATE, + SensorDeviceClass.TIMESTAMP, + }: + self._attr_native_value = value + + else: + self._attr_native_value = async_parse_date_datetime( + value, self.entity_id, self.device_class + ) + except Exception as exception: + self.coordinator.notify_scrape_exception() + + if self._sensor_selector.on_error.log not in [False, "false", "False"]: + level = LOG_LEVELS[self._sensor_selector.on_error.log] + _LOGGER.log( + level, + "%s # %s # Unable to scrape data: %s \nConsider using debug logging and log_response for further investigation.", + self.scraper.name, + self._name, + exception, + ) + + if self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_NONE: + self._attr_available = False + _LOGGER.debug( + "%s # %s # On-error, set value to None", + self.scraper.name, + self._name, + ) + elif self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_LAST: + _LOGGER.debug( + "%s # %s # On-error, keep old value: %s", + self.scraper.name, + self._name, + self._attr_native_value, + ) + if self._attr_native_value is None: + self._attr_available = False + return + elif self._sensor_selector.on_error.value == CONF_ON_ERROR_VALUE_DEFAULT: + self._attr_native_value = self._sensor_selector.on_error_default + _LOGGER.debug( + "%s # %s # On-error, set default value: %s", + self.scraper.name, + self._name, + self._sensor_selector.on_error_default, + ) + # determine icon after exception so it's also set for on_error cases + if self._icon_template: + self._set_icon(self._attr_native_value) diff --git a/custom_components/multiscrape/service.py b/custom_components/multiscrape/service.py new file mode 100644 index 00000000..ffda2351 --- /dev/null +++ b/custom_components/multiscrape/service.py @@ -0,0 +1,188 @@ +"""Class for implementing the multiscrape services.""" + +import logging + +import homeassistant.helpers.config_validation as cv +import voluptuous as vol +from homeassistant.const import (CONF_DESCRIPTION, CONF_HEADERS, CONF_ICON, + CONF_NAME, CONF_UNIQUE_ID, + CONF_VALUE_TEMPLATE, Platform) +from homeassistant.core import HomeAssistant, ServiceCall, SupportsResponse +from homeassistant.helpers.service import async_set_service_schema +from homeassistant.helpers.template import Template +from homeassistant.util import slugify + +from .const import (CONF_FIELDS, CONF_FORM_SUBMIT, CONF_FORM_VARIABLES, + CONF_LOG_RESPONSE, CONF_PARSER, CONF_SENSOR_ATTRS, DOMAIN) +from .coordinator import (MultiscrapeDataUpdateCoordinator, + create_content_request_manager) +from .file import create_file_manager +from .form import create_form_submitter +from .http import create_http_wrapper +from .schema import SERVICE_COMBINED_SCHEMA +from .scraper import create_scraper +from .selector import Selector + +_LOGGER = logging.getLogger(__name__) + + +async def setup_integration_services(hass: HomeAssistant): + """Set up the multiscrape integration level services.""" + _LOGGER.debug("Setting up multiscrape integration level services") + await setup_get_content_service(hass) + await setup_scrape_service(hass) + + +async def setup_config_services( + hass: HomeAssistant, coordinator: MultiscrapeDataUpdateCoordinator, config_name: str +): + """Set up the multiscrape configuration level services.""" + _LOGGER.debug( + "%s # Setting up multiscrape configuration level services", config_name + ) + target_name = slugify(config_name) + await _setup_trigger_service(hass, target_name, coordinator) + + +async def _setup_trigger_service(hass: HomeAssistant, target_name, coordinator): + async def _async_trigger_service(service: ServiceCall): + _LOGGER.info("Multiscrape triggered by service: %s", service.__repr__()) + await coordinator.async_request_refresh() + + hass.services.async_register( + DOMAIN, + f"trigger_{target_name}", + _async_trigger_service, + schema=vol.Schema({}), + ) + + # Register the service description + service_desc = { + CONF_NAME: f"Trigger an update of {target_name}", + CONF_DESCRIPTION: f"Triggers an update for the multiscrape {target_name} integration, independent of the update interval.", + CONF_FIELDS: {}, + } + async_set_service_schema(hass, DOMAIN, f"trigger_{target_name}", service_desc) + + +async def setup_get_content_service(hass: HomeAssistant): + """Set up the multiscrape get_content service.""" + + async def _async_get_content_service(service: ServiceCall) -> None: + _LOGGER.info("Get_content service triggered: %s", service.__repr__()) + config_name = "get_content_service" + conf = _restore_templates(service.data) + request_manager, scraper = await _prepare_service_request( + hass, conf, config_name + ) + result = await request_manager.get_content() + await scraper.set_content(result) + return {"content": str(scraper.formatted_content)} + + hass.services.async_register( + DOMAIN, + "get_content", + _async_get_content_service, + schema=SERVICE_COMBINED_SCHEMA, + supports_response=SupportsResponse.ONLY, + ) + + +async def setup_scrape_service(hass: HomeAssistant): + """Set up the multiscrape scrape service.""" + + async def _async_scrape_service(service: ServiceCall) -> None: + _LOGGER.info("Scrape service triggered: %s", service.__repr__()) + conf = _restore_templates(service.data) + config_name = "scrape_service" + request_manager, scraper = await _prepare_service_request( + hass, conf, config_name + ) + result = await request_manager.get_content() + await scraper.set_content(result) + + response = {} + + for platform in [Platform.SENSOR, Platform.BINARY_SENSOR]: + for sensor in conf.get(platform) or []: + name = sensor.get(CONF_UNIQUE_ID) or slugify(sensor.get(CONF_NAME)) + sensor_selector = Selector(hass, sensor) + response[name] = {"value": scraper.scrape(sensor_selector, config_name)} + + if sensor.get(CONF_ICON): + response[CONF_ICON] = sensor.get(CONF_ICON).async_render( + variables={"value": response[name]}, parse_result=False + ) + + for attr_conf in sensor.get(CONF_SENSOR_ATTRS) or []: + attr_name = slugify(attr_conf[CONF_NAME]) + attr_selector = Selector(hass, attr_conf) + response[name].setdefault(CONF_SENSOR_ATTRS, {}).update( + {attr_name: scraper.scrape(attr_selector, config_name)} + ) + + return response + + hass.services.async_register( + DOMAIN, + "scrape", + _async_scrape_service, + schema=SERVICE_COMBINED_SCHEMA, + supports_response=SupportsResponse.ONLY, + ) + + +async def _prepare_service_request(hass: HomeAssistant, conf, config_name): + file_manager = await create_file_manager(hass, config_name, conf.get(CONF_LOG_RESPONSE)) + http = create_http_wrapper(config_name, conf, hass, file_manager) + form_submitter = None + form_submit_config = conf.get(CONF_FORM_SUBMIT) + parser = conf.get(CONF_PARSER) + if form_submit_config: + form_http = create_http_wrapper( + config_name, form_submit_config, hass, file_manager) + form_submitter = create_form_submitter( + config_name, form_submit_config, hass, form_http, file_manager, parser + ) + request_manager = create_content_request_manager( + config_name, conf, hass, http, form_submitter + ) + scraper = create_scraper(config_name, conf, hass, file_manager) + return request_manager, scraper + + +def _restore_templates(config): + config = dict(config) + selectors = [] + for platform in [Platform.SENSOR, Platform.BINARY_SENSOR]: + selectors.extend(config.get(platform) or []) + if config.get(CONF_FORM_SUBMIT): + selectors.extend(config[CONF_FORM_SUBMIT].get(CONF_FORM_VARIABLES) or []) + + for selector in selectors: + for attr_conf in selector.get(CONF_SENSOR_ATTRS) or []: + attr_conf[CONF_VALUE_TEMPLATE] = ( + _restore_template(attr_conf.get(CONF_VALUE_TEMPLATE)) + if attr_conf.get(CONF_VALUE_TEMPLATE) + else None + ) + if selector.get(CONF_ICON): + selector[CONF_ICON] = _restore_template(selector.get(CONF_ICON)) + if selector.get(CONF_VALUE_TEMPLATE): + selector[CONF_VALUE_TEMPLATE] = _restore_template(selector[CONF_VALUE_TEMPLATE]) + + headers = config.get(CONF_HEADERS) or {} + for key, value in headers.items(): + headers[key] = _restore_template(value) + + return config + +def _restore_template(value: str | Template): + value = value.template if isinstance(value, Template) else value + return cv.template(_replace_template_characters(value)) + + +def _replace_template_characters(template: str): + template = template.replace("{!{", "{{").replace("}!}", "}}") + template = template.replace("{!%", "{%").replace("%!}", "%}") + return template diff --git a/custom_components/multiscrape/services.yaml b/custom_components/multiscrape/services.yaml new file mode 100644 index 00000000..48d6fd6b --- /dev/null +++ b/custom_components/multiscrape/services.yaml @@ -0,0 +1,7 @@ +reload: + name: Reload + description: Reload all rest entities and notify services + +trigger: + name: Trigger + description: Trigger a scrape run independent of the update interval diff --git a/custom_components/multiscrape/util.py b/custom_components/multiscrape/util.py new file mode 100644 index 00000000..f20cd27e --- /dev/null +++ b/custom_components/multiscrape/util.py @@ -0,0 +1,47 @@ +"""Some utility functions.""" +import logging + +from homeassistant.exceptions import TemplateError +from homeassistant.helpers.template import Template + +_LOGGER: logging.Logger = logging.getLogger(__name__) + + +def create_renderer(hass, value_template): + """Create a template renderer based on value_template.""" + if value_template is None: + return lambda variables={}, parse_result=None: None + + if not isinstance(value_template, Template): + value_template = Template(value_template, hass) + else: + value_template.hass = hass + + def _render(variables: dict = {}, parse_result=False): + try: + return value_template.async_render(variables, parse_result) + except TemplateError: + _LOGGER.exception( + "Error rendering template: %s with variables %s", value_template, variables + ) + raise + + return _render + + +def create_dict_renderer(hass, templates_dict): + """Create template renderers for a dictionary with value_templates.""" + if templates_dict is None: + return lambda variables={}, parse_result=None: {} + + # Create a copy of the templates_dict to avoid modification of the original + templates_dict = templates_dict.copy() + for item in templates_dict: + templates_dict[item] = create_renderer(hass, templates_dict[item]) + + def _render(variables: dict = {}, parse_result=False): + return { + item: templates_dict[item](variables, parse_result) for item in templates_dict + } + + return _render diff --git a/custom_components/plex_recently_added/__init__.py b/custom_components/plex_recently_added/__init__.py deleted file mode 100644 index 8b137891..00000000 --- a/custom_components/plex_recently_added/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/custom_components/plex_recently_added/__pycache__/__init__.cpython-312.pyc b/custom_components/plex_recently_added/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index ce92b633..00000000 Binary files a/custom_components/plex_recently_added/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/custom_components/plex_recently_added/__pycache__/sensor.cpython-312.pyc b/custom_components/plex_recently_added/__pycache__/sensor.cpython-312.pyc deleted file mode 100644 index 78bfa39c..00000000 Binary files a/custom_components/plex_recently_added/__pycache__/sensor.cpython-312.pyc and /dev/null differ diff --git a/custom_components/plex_recently_added/manifest.json b/custom_components/plex_recently_added/manifest.json deleted file mode 100644 index a8bde7d0..00000000 --- a/custom_components/plex_recently_added/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "domain": "plex_recently_added", - "name": "Plex Recently Added", - "version": "0.3.8", - "documentation": "https://github.com/NemesisRE/sensor.plex_recently_added", - "issue_tracker": "https://github.com/NemesisRE/sensor.plex_recently_added", - "dependencies": [], - "codeowners": ["@maykar", "@NemesisRE"], - "requirements": [] - } diff --git a/custom_components/plex_recently_added/sensor.py b/custom_components/plex_recently_added/sensor.py deleted file mode 100644 index 886d691a..00000000 --- a/custom_components/plex_recently_added/sensor.py +++ /dev/null @@ -1,401 +0,0 @@ -""" -Home Assistant component to feed the Upcoming Media Lovelace card with -Plex recently added media. - -https://github.com/NemesisRE/sensor.plex_recently_added - -https://github.com/NemesisRE/upcoming-media-card - -""" -import os.path -import logging -import json -import aiohttp -import asyncio -import async_timeout -import voluptuous as vol -import homeassistant.helpers.config_validation as cv -from datetime import datetime, timedelta -from homeassistant.components.sensor import PLATFORM_SCHEMA -from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PORT, CONF_SSL -from homeassistant.helpers.entity import Entity - -SCAN_INTERVAL = timedelta(minutes=3) -_LOGGER = logging.getLogger(__name__) - - -async def fetch(session, url, self, ssl, content): - try: - with async_timeout.timeout(8): - async with session.get( - url, ssl=ssl, headers={ - "Accept": "application/json", "X-Plex-Token": self.token} - ) as response: - if content: - return await response.content.read() - else: - return await response.text() - except: - pass - - -async def request(url, self, content=False, ssl=False): - async with aiohttp.ClientSession() as session: - return await fetch(session, url, self, ssl, content) - - -CONF_DL_IMAGES = 'download_images' -DEFAULT_NAME = 'Plex Recently Added' -CONF_SERVER = 'server_name' -CONF_SSL_CERT = 'ssl_cert' -CONF_TOKEN = 'token' -CONF_MAX = 'max' -CONF_IMG_CACHE = 'img_dir' -CONF_SECTION_TYPES = 'section_types' -CONF_EXCLUDE_KEYWORDS = 'exclude_keywords' -CONF_RESOLUTION = 'image_resolution' -CONF_ON_DECK = 'on_deck' - -PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ - vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_SSL, default=False): cv.boolean, - vol.Optional(CONF_SSL_CERT, default=False): cv.boolean, - vol.Required(CONF_TOKEN): cv.string, - vol.Optional(CONF_MAX, default=5): cv.string, - vol.Optional(CONF_SERVER): cv.string, - vol.Optional(CONF_DL_IMAGES, default=True): cv.boolean, - vol.Optional(CONF_ON_DECK, default=False): cv.boolean, - vol.Optional(CONF_HOST, default='localhost'): cv.string, - vol.Optional(CONF_PORT, default=32400): cv.port, - vol.Optional(CONF_SECTION_TYPES, - default=['movie', 'show']): vol.All(cv.ensure_list, [cv.string]), - vol.Optional(CONF_EXCLUDE_KEYWORDS): - vol.All(cv.ensure_list, [cv.string]), - vol.Optional(CONF_RESOLUTION, default=200): cv.positive_int, - vol.Optional(CONF_IMG_CACHE, - default='/upcoming-media-card-images/plex/'): cv.string -}) - - -def setup_platform(hass, config, add_devices, discovery_info=None): - name = config.get(CONF_NAME) - add_devices([PlexRecentlyAddedSensor(hass, config, name)], True) - - -class PlexRecentlyAddedSensor(Entity): - - def __init__(self, hass, conf, name): - from pytz import timezone - self._name = name - self.conf_dir = str(hass.config.path()) + '/' - self._dir = conf.get(CONF_IMG_CACHE) - if self._name: - self._dir = self._dir + self._name.replace(' ', '_') + '/' - self.img = '{0}{1}{2}{3}{4}.jpg'.format( - self.conf_dir, {}, self._dir, {}, {}) - self.img_url = '{0}{1}{2}{3}.jpg'.format({}, self._dir, {}, {}) - self._tz = timezone(str(hass.config.time_zone)) - self.cert = conf.get(CONF_SSL_CERT) - self.ssl = 's' if conf.get(CONF_SSL) or self.cert else '' - self.token = conf.get(CONF_TOKEN) - self.server_name = conf.get(CONF_SERVER) - self.max_items = int(conf.get(CONF_MAX)) - self.dl_images = conf.get(CONF_DL_IMAGES) - self.on_deck = conf.get(CONF_ON_DECK) - self.sections = conf.get(CONF_SECTION_TYPES) - self.excludes = conf.get(CONF_EXCLUDE_KEYWORDS) - self.resolution = conf.get(CONF_RESOLUTION) - if self.server_name: - _LOGGER.warning( - "Plex Recently Added: The server_name option has been removed. Use host and port options instead.") - return - else: - self.server_ip = conf.get(CONF_HOST) - self.local_ip = conf.get(CONF_HOST) - self.port = conf.get(CONF_PORT) - self.url_elements = [self.ssl, self.server_ip, self.local_ip, - self.port, self.token, self.cert, self.dl_images] - self.change_detected = False - self._state = None - self.card_json = [] - self.api_json = [] - self.data = [{1}] - - @property - def name(self): - return self._name - - @property - def state(self): - if self.server_name: - return "server_name is no longer an option, use host and port." - return self._state - - @property - def extra_state_attributes(self): - if self.server_name: - return - import math - attributes = {} - if self.change_detected: - self.card_json = [] - defaults = {} - """First object in JSON sets card defaults""" - defaults['title_default'] = '$title' - defaults['line1_default'] = '$episode' - defaults['line2_default'] = '$release' - defaults['line3_default'] = '$number - $rating - $runtime' - defaults['line4_default'] = '$genres' - defaults['icon'] = 'mdi:eye-off' - self.card_json.append(defaults) - """Format Plex API values for card's JSON""" - for media in self.data: - card_item = {} - if 'ratingKey' in media: - key = media['ratingKey'] - else: - continue - if 'addedAt' in media: - card_item['airdate'] = datetime.utcfromtimestamp( - media['addedAt']).strftime('%Y-%m-%dT%H:%M:%SZ') - else: - continue - if 'originallyAvailableAt' in media: - card_item['aired'] = media.get('originallyAvailableAt', '') - else: - card_item['aired'] = '' - if days_since(media['addedAt'], self._tz) <= 7: - card_item['release'] = '$day, $date $time' - else: - card_item['release'] = '$day, $date $time' - if 'viewCount' in media: - card_item['flag'] = False - else: - card_item['flag'] = True - if media['type'] == 'movie': - card_item['title'] = media.get('title', '') - card_item['episode'] = '' - elif media['type'] == 'episode': - card_item['title'] = media.get('grandparentTitle', '') - card_item['episode'] = media.get('title', '') - card_item['number'] = ('S{:02d}E{:02d}').format( - media.get('parentIndex', 0), media.get('index', 0)) - else: - continue - if media.get('duration', 0) > 0: - card_item['runtime'] = math.floor( - media['duration'] / 60000) - if 'studio' in media: - card_item['studio'] = media.get('studio', '') - if 'Genre' in media: - card_item['genres'] = ', '.join( - [genre['tag'] for genre in media['Genre']][:3]) - if media.get('rating', 0) > 0: - card_item['rating'] = ('\N{BLACK STAR} ' + - str(media['rating'])) - else: - card_item['rating'] = '' - if media['type'] == 'movie': - poster = media.get('thumb', '') - fanart = media.get('art', '') - elif media['type'] == 'episode': - poster = media.get('grandparentThumb', '') - fanart = media.get('grandparentArt', '') - else: - continue - if self.dl_images: - if os.path.isfile(self.img.format('www', 'p', key)): - card_item['poster'] = self.img_url.format('/local', - 'p', key) - else: - continue - if os.path.isfile(self.img.format('www', 'f', key)): - card_item['fanart'] = self.img_url.format('/local', - 'f', key) - else: - card_item['fanart'] = '' - else: - card_item['poster'] = image_url(self, - False, poster, self.resolution) - card_item['fanart'] = image_url(self, - False, fanart, self.resolution) - should_add = True - if self.excludes: - for exclude in self.excludes: - if exclude.lower() in card_item['title'].lower(): - should_add = False - if should_add: - self.card_json.append(card_item) - self.change_detected = False - attributes['data'] = self.card_json - return attributes - - async def async_update(self): - import os - import re - if self.server_name: - return - url_base = 'http{0}://{1}:{2}/library/sections'.format(self.ssl, - self.server_ip, - self.port) - all_libraries = url_base + '/all' - recently_added = (url_base + '/{0}/recentlyAdded?X-Plex-Container-' - 'Start=0&X-Plex-Container-Size={1}') - on_deck = (url_base + '/{0}/onDeck?X-Plex-Container-' - 'Start=0&X-Plex-Container-Size={1}') - - """Find the ID of all libraries in Plex.""" - sections = [] - try: - libraries = await request(all_libraries, self) - if not libraries: - self._state = '%s cannot be reached' % self.server_ip - return - libraries = json.loads(libraries) - for lib_section in libraries['MediaContainer']['Directory']: - if lib_section['type'] in self.sections: - sections.append(lib_section['key']) - except OSError: - _LOGGER.warning("Host %s is not available", self.server_ip) - self._state = '%s cannot be reached' % self.server_ip - return - self.api_json = [] - self._state = 'Online' - """Get JSON for each library, combine and sort.""" - for library in sections: - recent_or_deck = on_deck if self.on_deck else recently_added - sub_sec = await request(recent_or_deck.format( - library, self.max_items * 2), self) - sub_sec = json.loads(sub_sec) - try: - self.api_json += sub_sec['MediaContainer']['Metadata'] - except: - pass - self.api_json = sorted(self.api_json, key=lambda i: i['addedAt'], - reverse=True)[:self.max_items] - - """Update attributes if view count changes""" - if view_count(self.api_json) != view_count(self.data): - self.change_detected = True - self.data = self.api_json - - api_ids = media_ids(self.api_json, True) - data_ids = media_ids(self.data, True) - if self.dl_images: - directory = self.conf_dir + 'www' + self._dir - if not os.path.exists(directory): - os.makedirs(directory, mode=0o777) - - """Make list of images in dir that use our naming scheme""" - dir_re = re.compile(r'[pf]\d+\.jpg') # p1234.jpg or f1234.jpg - dir_images = list(filter(dir_re.search, - os.listdir(directory))) - dir_ids = [file[1:-4] for file in dir_images] - dir_ids.sort(key=int) - - """Update if media items have changed or images are missing""" - if dir_ids != api_ids or data_ids != api_ids: - self.change_detected = True # Tell attributes to update - self.data = self.api_json - """Remove images not in list""" - for file in dir_images: - if not any(str(ids) in file for ids in data_ids): - os.remove(directory + file) - """Retrieve image from Plex if it doesn't exist""" - for media in self.data: - if 'type' not in media: - continue - elif media['type'] == 'movie': - poster = media.get('thumb', '') - fanart = media.get('art', '') - elif media['type'] == 'episode': - poster = media.get('grandparentThumb', '') - fanart = media.get('grandparentArt', '') - else: - _LOGGER.error("Media type: %s", media['type']) - continue - poster_jpg = '{}p{}.jpg'.format(directory, - media['ratingKey']) - fanart_jpg = '{}f{}.jpg'.format(directory, - media['ratingKey']) - if not os.path.isfile(fanart_jpg): - fanart_image = await request(image_url( - self, True, fanart, self.resolution), self, True, True) - if fanart_image: - open(fanart_jpg, 'wb').write(fanart_image) - else: - pass - if not os.path.isfile(poster_jpg): - poster_image = await request(image_url( - self, True, poster, self.resolution), self, True, True) - if poster_image: - open(poster_jpg, 'wb').write(poster_image) - else: - continue - else: - """Update if media items have changed""" - if api_ids != data_ids: - self.change_detected = True # Tell attributes to update - self.data = self.api_json - - -def image_url(self, cert_check, img, resolution=200): - """Plex can resize images with a long & partially % encoded url.""" - from urllib.parse import quote - ssl, host, local, port, token, self_cert, dl_images = self.url_elements - if not cert_check and not self_cert: - ssl = '' - if dl_images: - host = local - encoded = quote('http{0}://{1}:{2}{3}?X-Plex-Token={4}'.format(ssl, - local, - port, - img, - token), - safe='') - url = ('http{0}://{1}:{2}/photo/:/transcode?width={5}&height={5}' - '&minSize=1&url={3}&X-Plex-Token={4}').format(ssl, host, port, - encoded, token, - resolution) - return url - - -def days_since(date, tz): - import time - from pytz import utc - date = datetime.utcfromtimestamp(date).isoformat() + 'Z' - date = datetime.strptime(date, '%Y-%m-%dT%H:%M:%SZ') - date = str(date.replace(tzinfo=utc).astimezone(tz))[:10] - date = time.strptime(date, '%Y-%m-%d') - date = time.mktime(date) - now = datetime.now().strftime('%Y-%m-%d') - now = time.strptime(now, '%Y-%m-%d') - now = time.mktime(now) - return int((now - date) / 86400) - - -def media_ids(data, remote): - ids = [] - for media in data: - if 'ratingKey' in media: - ids.append(str(media['ratingKey'])) - else: - continue - """Double ids to compare to dir contents (poster & fanart jpgs)""" - if remote: - ids = ids * 2 - ids.sort(key=int) - return ids - - -def view_count(data): - ids = [] - for media in data: - if 'ratingKey' in media: - if 'viewCount' in media: - ids.append(str(media['viewCount'])) - else: - ids.append('0') - else: - continue - return ids diff --git a/custom_components/spotcast/__init__.py b/custom_components/spotcast/__init__.py index 9741ac24..c1abff2a 100644 --- a/custom_components/spotcast/__init__.py +++ b/custom_components/spotcast/__init__.py @@ -2,7 +2,7 @@ from __future__ import annotations -__version__ = "3.8.2" +__version__ = "3.9.0" import collections import logging @@ -43,6 +43,7 @@ SCHEMA_WS_CASTDEVICES, SCHEMA_WS_DEVICES, SCHEMA_WS_PLAYER, + CONF_START_POSITION, SERVICE_START_COMMAND_SCHEMA, SPOTCAST_CONFIG_SCHEMA, WS_TYPE_SPOTCAST_ACCOUNTS, @@ -62,6 +63,7 @@ get_spotify_media_player, is_empty_str, is_valid_uri, + url_to_spotify_uri, ) from .spotcast_controller import SpotcastController @@ -143,7 +145,7 @@ def get_devices(): me_resp = client._get("me") # pylint: disable=W0212 spotify_media_player = get_spotify_media_player( hass, me_resp["id"]) - resp = get_spotify_devices(spotify_media_player) + resp = get_spotify_devices(spotify_media_player, hass) connection.send_message( websocket_api.result_message(msg["id"], resp)) @@ -220,6 +222,7 @@ def start_casting(call: ha_core.ServiceCall): start_volume = call.data.get(CONF_START_VOL) spotify_device_id = call.data.get(CONF_SPOTIFY_DEVICE_ID) position = call.data.get(CONF_OFFSET) + start_position = call.data.get(CONF_START_POSITION) force_playback = call.data.get(CONF_FORCE_PLAYBACK) account = call.data.get(CONF_SPOTIFY_ACCOUNT) ignore_fully_played = call.data.get(CONF_IGNORE_FULLY_PLAYED) @@ -241,6 +244,14 @@ def start_casting(call: ha_core.ServiceCall): # remove ? from badly formatted URI uri = uri.split("?")[0] + if uri.startswith("http"): + try: + u = url_to_spotify_uri(uri) + _LOGGER.debug("converted web URL %s to spotify URI %s", uri, u) + uri = u + except ValueError: + _LOGGER.error("invalid web URL provided, could not convert to spotify URI: %s", uri) + if not is_valid_uri(uri): _LOGGER.error("Invalid URI provided, aborting casting") return @@ -257,6 +268,9 @@ def start_casting(call: ha_core.ServiceCall): account, spotify_device_id, device_name, entity_id ) + if start_position is not None: + start_position *= 1000 + if ( is_empty_str(uri) and len( @@ -271,6 +285,7 @@ def start_casting(call: ha_core.ServiceCall): episodeName, audiobookName, genreName, + category, ], ) ) @@ -302,6 +317,7 @@ def start_casting(call: ha_core.ServiceCall): random_song, position, ignore_fully_played, + start_position, ) else: searchResults = [] @@ -331,6 +347,7 @@ def start_casting(call: ha_core.ServiceCall): random_song, position, ignore_fully_played, + start_position, ) if len(searchResults) > 1: diff --git a/custom_components/spotcast/__pycache__/__init__.cpython-312.pyc b/custom_components/spotcast/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..a75785ad Binary files /dev/null and b/custom_components/spotcast/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/cast.cpython-312.pyc b/custom_components/spotcast/__pycache__/cast.cpython-312.pyc new file mode 100644 index 00000000..6faa3027 Binary files /dev/null and b/custom_components/spotcast/__pycache__/cast.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/const.cpython-312.pyc b/custom_components/spotcast/__pycache__/const.cpython-312.pyc new file mode 100644 index 00000000..8e4d7915 Binary files /dev/null and b/custom_components/spotcast/__pycache__/const.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/error.cpython-312.pyc b/custom_components/spotcast/__pycache__/error.cpython-312.pyc new file mode 100644 index 00000000..325f82c1 Binary files /dev/null and b/custom_components/spotcast/__pycache__/error.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/helpers.cpython-312.pyc b/custom_components/spotcast/__pycache__/helpers.cpython-312.pyc new file mode 100644 index 00000000..156cd714 Binary files /dev/null and b/custom_components/spotcast/__pycache__/helpers.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/spotcast_controller.cpython-312.pyc b/custom_components/spotcast/__pycache__/spotcast_controller.cpython-312.pyc new file mode 100644 index 00000000..d28105ba Binary files /dev/null and b/custom_components/spotcast/__pycache__/spotcast_controller.cpython-312.pyc differ diff --git a/custom_components/spotcast/__pycache__/spotify_controller.cpython-312.pyc b/custom_components/spotcast/__pycache__/spotify_controller.cpython-312.pyc new file mode 100644 index 00000000..a3c6bf03 Binary files /dev/null and b/custom_components/spotcast/__pycache__/spotify_controller.cpython-312.pyc differ diff --git a/custom_components/spotcast/const.py b/custom_components/spotcast/const.py index 7962efb4..f27db2c3 100644 --- a/custom_components/spotcast/const.py +++ b/custom_components/spotcast/const.py @@ -28,6 +28,7 @@ CONF_FORCE_PLAYBACK = "force_playback" CONF_RANDOM = "random_song" CONF_SHUFFLE = "shuffle" +CONF_START_POSITION = "start_position" CONF_SP_DC = "sp_dc" CONF_SP_KEY = "sp_key" CONF_START_VOL = "start_volume" @@ -99,6 +100,7 @@ vol.Optional(CONF_REPEAT, default="off"): cv.string, vol.Optional(CONF_SHUFFLE, default=False): cv.boolean, vol.Optional(CONF_OFFSET, default=0): cv.string, + vol.Optional(CONF_START_POSITION): cv.positive_int, vol.Optional(CONF_START_VOL, default=101): cv.positive_int, vol.Optional(CONF_IGNORE_FULLY_PLAYED, default=False): cv.boolean, } diff --git a/custom_components/spotcast/helpers.py b/custom_components/spotcast/helpers.py index e9e4ca0e..42aee5fb 100644 --- a/custom_components/spotcast/helpers.py +++ b/custom_components/spotcast/helpers.py @@ -2,6 +2,9 @@ import asyncio import logging +import requests +import urllib.parse +import difflib import random import time from functools import partial, wraps @@ -434,6 +437,26 @@ def get_random_playlist_from_category( return chosen["uri"] + +def url_to_spotify_uri(url: str) -> str: + """ + Convert a spotify web url (e.g. https://open.spotify.com/track/XXXX) to + a spotify-style URI (spotify:track:XXXX). Returns None on error. + """ + + o: urllib.parse.ParseResult + # will raise ValueError if URL is invalid + o = urllib.parse.urlparse(url) + + if o.hostname != "open.spotify.com": + raise ValueError('Spotify URLs must have a hostname of "open.spotify.com"') + + path = o.path.split("/") + if len(path) != 3: + raise ValueError('Spotify URLs must be of the form "https://open.spotify.com//"') + + return f'spotify:{path[1]}:{path[2]}' + def is_valid_uri(uri: str) -> bool: # list of possible types diff --git a/custom_components/spotcast/manifest.json b/custom_components/spotcast/manifest.json index b6911852..7e7455dd 100644 --- a/custom_components/spotcast/manifest.json +++ b/custom_components/spotcast/manifest.json @@ -15,5 +15,8 @@ "documentation": "https://github.com/fondberg/spotcast", "iot_class": "cloud_polling", "issue_tracker": "https://github.com/fondberg/spotcast/issues", - "version": "v3.8.2" -} + "requirements": [ + "spotipy==2.23.0" + ], + "version": "v3.9.0" +} \ No newline at end of file diff --git a/custom_components/spotcast/services.yaml b/custom_components/spotcast/services.yaml index 477a5b5b..44062ed1 100644 --- a/custom_components/spotcast/services.yaml +++ b/custom_components/spotcast/services.yaml @@ -167,6 +167,18 @@ start: step: 1 min: 0 max: 999999 + start_position: + name: "Position" + description: "Start position of the track in seconds" + example: 1 + required: false + default: 0 + selector: + number: + mode: box + step: 1 + min: 0 + max: 999999 start_volume: name: "Start Volume" description: "Set the volume for playback in percentage." diff --git a/custom_components/spotcast/spotcast_controller.py b/custom_components/spotcast/spotcast_controller.py index 5baa7468..a536547d 100644 --- a/custom_components/spotcast/spotcast_controller.py +++ b/custom_components/spotcast/spotcast_controller.py @@ -314,7 +314,8 @@ def play( random_song: bool, position: str, ignore_fully_played: str, - country_code: str = None, + position_ms: str, + country_code: str = None ) -> None: _LOGGER.debug( "Playing URI: %s on device-id: %s", @@ -342,14 +343,14 @@ def play( episode_uri, ) client.start_playback( - device_id=spotify_device_id, uris=[episode_uri]) + device_id=spotify_device_id, uris=[episode_uri], position_ms = position_ms) elif uri.find("episode") > 0: _LOGGER.debug("Playing episode using uris= for uri: %s", uri) - client.start_playback(device_id=spotify_device_id, uris=[uri]) + client.start_playback(device_id=spotify_device_id, uris=[uri], position_ms = position_ms) elif uri.find("track") > 0: _LOGGER.debug("Playing track using uris= for uri: %s", uri) - client.start_playback(device_id=spotify_device_id, uris=[uri]) + client.start_playback(device_id=spotify_device_id, uris=[uri], position_ms = position_ms) else: if uri == "random": _LOGGER.debug( @@ -359,7 +360,7 @@ def play( no_playlists = len(playlists["items"]) uri = playlists["items"][random.randint( 0, no_playlists - 1)]["uri"] - kwargs = {"device_id": spotify_device_id, "context_uri": uri} + kwargs = {"device_id": spotify_device_id, "context_uri": uri, "position_ms": position_ms} if random_song: if uri.find("album") > 0: diff --git a/custom_components/tplink_router/__init__.py b/custom_components/tplink_router/__init__.py new file mode 100644 index 00000000..8d5c4f2f --- /dev/null +++ b/custom_components/tplink_router/__init__.py @@ -0,0 +1,71 @@ +from homeassistant.const import ( + CONF_HOST, + CONF_PASSWORD, + CONF_SCAN_INTERVAL, + CONF_VERIFY_SSL, + Platform, +) +from homeassistant.core import HomeAssistant +from homeassistant.config_entries import ConfigEntry +from .const import DOMAIN +import logging +from .coordinator import TPLinkRouterCoordinator +from .sensor import SENSOR_TYPES +from .button import BUTTON_TYPES +from .switch import SWITCH_TYPES + +PLATFORMS: list[Platform] = [ + Platform.DEVICE_TRACKER, + Platform.SENSOR, + Platform.SWITCH, + Platform.BUTTON, +] + +_LOGGER = logging.getLogger(__name__) + + +async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + # Construct the device + host = entry.data[CONF_HOST] + if not (host.startswith('http://') or host.startswith('https://')): + host = "http://{}".format(host) + verify_ssl = entry.data[CONF_VERIFY_SSL] if CONF_VERIFY_SSL in entry.data else True + client = await TPLinkRouterCoordinator.get_client( + hass=hass, + host=host, + password=entry.data[CONF_PASSWORD], + logger=_LOGGER, + verify_ssl=verify_ssl + ) + + def callback(): + firm = client.get_firmware() + stat = client.get_status() + + return firm, stat + + firmware, status = await hass.async_add_executor_job(TPLinkRouterCoordinator.request, client, callback) + + # Create device coordinator and fetch data + coordinator = TPLinkRouterCoordinator(hass, client, entry.data[CONF_SCAN_INTERVAL], firmware, status, _LOGGER, + entry.entry_id) + + await coordinator.async_config_entry_first_refresh() + hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + + await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) + entry.async_on_unload(entry.add_update_listener(async_reload_entry)) + + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) + + if unload_ok: + hass.data[DOMAIN].pop(entry.entry_id) + return unload_ok + + +async def async_reload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> None: + await hass.config_entries.async_reload(config_entry.entry_id) diff --git a/custom_components/tplink_router/__pycache__/__init__.cpython-312.pyc b/custom_components/tplink_router/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..257d5c1c Binary files /dev/null and b/custom_components/tplink_router/__pycache__/__init__.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/button.cpython-312.pyc b/custom_components/tplink_router/__pycache__/button.cpython-312.pyc new file mode 100644 index 00000000..a2f24f3d Binary files /dev/null and b/custom_components/tplink_router/__pycache__/button.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/config_flow.cpython-312.pyc b/custom_components/tplink_router/__pycache__/config_flow.cpython-312.pyc new file mode 100644 index 00000000..430abd4b Binary files /dev/null and b/custom_components/tplink_router/__pycache__/config_flow.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/const.cpython-312.pyc b/custom_components/tplink_router/__pycache__/const.cpython-312.pyc new file mode 100644 index 00000000..c9bdb99f Binary files /dev/null and b/custom_components/tplink_router/__pycache__/const.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/coordinator.cpython-312.pyc b/custom_components/tplink_router/__pycache__/coordinator.cpython-312.pyc new file mode 100644 index 00000000..132d5ad2 Binary files /dev/null and b/custom_components/tplink_router/__pycache__/coordinator.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/device_tracker.cpython-312.pyc b/custom_components/tplink_router/__pycache__/device_tracker.cpython-312.pyc new file mode 100644 index 00000000..7c8d3c9a Binary files /dev/null and b/custom_components/tplink_router/__pycache__/device_tracker.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/sensor.cpython-312.pyc b/custom_components/tplink_router/__pycache__/sensor.cpython-312.pyc new file mode 100644 index 00000000..c9060ab6 Binary files /dev/null and b/custom_components/tplink_router/__pycache__/sensor.cpython-312.pyc differ diff --git a/custom_components/tplink_router/__pycache__/switch.cpython-312.pyc b/custom_components/tplink_router/__pycache__/switch.cpython-312.pyc new file mode 100644 index 00000000..e2bd6db9 Binary files /dev/null and b/custom_components/tplink_router/__pycache__/switch.cpython-312.pyc differ diff --git a/custom_components/tplink_router/button.py b/custom_components/tplink_router/button.py new file mode 100644 index 00000000..54b87995 --- /dev/null +++ b/custom_components/tplink_router/button.py @@ -0,0 +1,73 @@ +"""Component providing support for TPLinkRouter button entities.""" +from __future__ import annotations + +from collections.abc import Callable +from dataclasses import dataclass +from typing import Any +from homeassistant.const import EntityCategory +from homeassistant.components.button import ( + ButtonDeviceClass, + ButtonEntity, + ButtonEntityDescription, +) +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.update_coordinator import CoordinatorEntity +from .const import DOMAIN +from .coordinator import TPLinkRouterCoordinator + + +@dataclass +class TPLinkRouterButtonEntityDescriptionMixin: + method: Callable[[TPLinkRouterCoordinator], Any] + + +@dataclass +class TPLinkButtonEntityDescription( + ButtonEntityDescription, TPLinkRouterButtonEntityDescriptionMixin +): + """A class that describes button entities for the host.""" + + +BUTTON_TYPES = ( + TPLinkButtonEntityDescription( + key="reboot", + name="Reboot", + device_class=ButtonDeviceClass.RESTART, + entity_category=EntityCategory.CONFIG, + method=lambda coordinator: coordinator.reboot(), + ), +) + + +async def async_setup_entry( + hass: HomeAssistant, + entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + coordinator = hass.data[DOMAIN][entry.entry_id] + + buttons = [] + + for description in BUTTON_TYPES: + buttons.append(TPLinkRouterButtonEntity(coordinator, description)) + async_add_entities(buttons, False) + + +class TPLinkRouterButtonEntity(CoordinatorEntity[TPLinkRouterCoordinator], ButtonEntity): + entity_description: TPLinkButtonEntityDescription + + def __init__( + self, + coordinator: TPLinkRouterCoordinator, + description: TPLinkButtonEntityDescription, + ) -> None: + super().__init__(coordinator) + + self._attr_device_info = coordinator.device_info + self._attr_unique_id = f"{coordinator.unique_id}_{DOMAIN}_{description.key}" + self.entity_description = description + + async def async_press(self) -> None: + await self.entity_description.method(self.coordinator) diff --git a/custom_components/tplink_router/config_flow.py b/custom_components/tplink_router/config_flow.py new file mode 100644 index 00000000..b95cf99f --- /dev/null +++ b/custom_components/tplink_router/config_flow.py @@ -0,0 +1,88 @@ +"""Config flow for Simple Integration integration.""" +import logging + +import voluptuous as vol +from typing import Any +from homeassistant import config_entries +from homeassistant.core import callback +import homeassistant.helpers.config_validation as cv +from homeassistant.data_entry_flow import FlowResult +from .const import DOMAIN +from .coordinator import TPLinkRouterCoordinator +from homeassistant.const import ( + CONF_HOST, + CONF_PASSWORD, + CONF_SCAN_INTERVAL, + CONF_VERIFY_SSL, +) + +STEP_USER_DATA_SCHEMA = vol.Schema( + { + vol.Required(CONF_HOST, default='http://192.168.0.1'): str, + vol.Required(CONF_PASSWORD): cv.string, + vol.Required(CONF_SCAN_INTERVAL, default=30): int, + vol.Required(CONF_VERIFY_SSL, default=True): cv.boolean, + } +) + +_LOGGER = logging.getLogger(__name__) + + +class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): + + async def async_step_user(self, user_input=None): + """Handle the initial step.""" + errors = {} + if user_input is not None: + try: + router = await TPLinkRouterCoordinator.get_client( + hass=self.hass, + host=user_input[CONF_HOST], + password=user_input[CONF_PASSWORD], + logger=_LOGGER, + verify_ssl=user_input[CONF_VERIFY_SSL], + ) + await self.hass.async_add_executor_job(router.authorize) + return self.async_create_entry(title=user_input["host"], data=user_input) + except Exception as error: + _LOGGER.error('TplinkRouter Integration Exception - {}'.format(error)) + errors['base'] = str(error) + + return self.async_show_form(step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors) + + @staticmethod + @callback + def async_get_options_flow(config_entry: config_entries.ConfigEntry) -> config_entries.OptionsFlow: + return OptionsFlow(config_entry) + + +class OptionsFlow(config_entries.OptionsFlowWithConfigEntry): + + async def async_step_init(self, user_input: dict[str, Any] | None = None) -> FlowResult: + errors = {} + data = user_input or self.config_entry.data + + if user_input is not None: + try: + router = await TPLinkRouterCoordinator.get_client( + hass=self.hass, + host=user_input[CONF_HOST], + password=user_input[CONF_PASSWORD], + logger=_LOGGER, + verify_ssl=user_input[CONF_VERIFY_SSL], + ) + await self.hass.async_add_executor_job(router.authorize) + self.hass.config_entries.async_update_entry(self.config_entry, data=user_input) + return self.async_create_entry(title=user_input["host"], data=user_input) + except Exception as error: + _LOGGER.error('TplinkRouter Integration Exception - {}'.format(error)) + errors['base'] = str(error) + + data_schema = vol.Schema({ + vol.Required(CONF_HOST, default=data.get(CONF_HOST)): cv.string, + vol.Required(CONF_PASSWORD, default=data.get(CONF_PASSWORD)): cv.string, + vol.Required(CONF_SCAN_INTERVAL, default=data.get(CONF_SCAN_INTERVAL)): int, + vol.Required(CONF_VERIFY_SSL, default=data.get(CONF_VERIFY_SSL)): cv.boolean, + }) + + return self.async_show_form(step_id="init", data_schema=data_schema, errors=errors) diff --git a/custom_components/tplink_router/const.py b/custom_components/tplink_router/const.py new file mode 100644 index 00000000..6baeef6c --- /dev/null +++ b/custom_components/tplink_router/const.py @@ -0,0 +1,6 @@ +DEFAULT_NAME = "TP-Link Router" +DOMAIN = "tplink_router" + +EVENT_NEW_DEVICE = f"{DOMAIN}_new_device" +EVENT_ONLINE = f"{DOMAIN}_device_online" +EVENT_OFFLINE = f"{DOMAIN}_device_offline" diff --git a/custom_components/tplink_router/coordinator.py b/custom_components/tplink_router/coordinator.py new file mode 100644 index 00000000..0d3390ed --- /dev/null +++ b/custom_components/tplink_router/coordinator.py @@ -0,0 +1,73 @@ +from __future__ import annotations +from datetime import timedelta +from logging import Logger +from collections.abc import Callable +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator +from tplinkrouterc6u import TplinkRouterProvider, AbstractRouter, Firmware, Status, Connection +from homeassistant.core import HomeAssistant +from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo +from .const import ( + DOMAIN, + DEFAULT_NAME, +) + + +class TPLinkRouterCoordinator(DataUpdateCoordinator): + def __init__( + self, + hass: HomeAssistant, + router: AbstractRouter, + update_interval: int, + firmware: Firmware, + status: Status, + logger: Logger, + unique_id: str + ) -> None: + self.router = router + self.unique_id = unique_id + self.status = status + self.device_info = DeviceInfo( + configuration_url=router.host, + connections={(CONNECTION_NETWORK_MAC, self.status.lan_macaddr)}, + identifiers={(DOMAIN, self.status.lan_macaddr)}, + manufacturer="TPLink", + model=firmware.model, + name=DEFAULT_NAME, + sw_version=firmware.firmware_version, + hw_version=firmware.hardware_version, + ) + + super().__init__( + hass, + logger, + name=DOMAIN, + update_interval=timedelta(seconds=update_interval), + ) + + @staticmethod + async def get_client(hass: HomeAssistant, host: str, password: str, logger: Logger, + verify_ssl: bool) -> AbstractRouter: + return await hass.async_add_executor_job(TplinkRouterProvider.get_client, host, password, 'admin', + logger, verify_ssl) + + @staticmethod + def request(router: AbstractRouter, callback: Callable): + router.authorize() + data = callback() + router.logout() + + return data + + async def reboot(self) -> None: + await self.hass.async_add_executor_job(TPLinkRouterCoordinator.request, self.router, self.router.reboot) + + async def set_wifi(self, wifi: Connection, enable: bool) -> None: + def callback(): + self.router.set_wifi(wifi, enable) + + await self.hass.async_add_executor_job(TPLinkRouterCoordinator.request, self.router, callback) + + async def _async_update_data(self): + """Asynchronous update of all data.""" + self.status = await self.hass.async_add_executor_job(TPLinkRouterCoordinator.request, self.router, + self.router.get_status) diff --git a/custom_components/tplink_router/device_tracker.py b/custom_components/tplink_router/device_tracker.py new file mode 100644 index 00000000..f50079b9 --- /dev/null +++ b/custom_components/tplink_router/device_tracker.py @@ -0,0 +1,148 @@ +from __future__ import annotations + +from typing import Any, TypeAlias +from homeassistant.components.device_tracker.config_entry import ScannerEntity +from homeassistant.components.device_tracker.const import SourceType +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant, callback +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.update_coordinator import CoordinatorEntity +from .coordinator import TPLinkRouterCoordinator +from .const import ( + DOMAIN, + EVENT_NEW_DEVICE, + EVENT_ONLINE, + EVENT_OFFLINE, +) +from tplinkrouterc6u import Device, Connection + +MAC_ADDR: TypeAlias = str + + +async def async_setup_entry( + hass: HomeAssistant, + entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + coordinator = hass.data[DOMAIN][entry.entry_id] + tracked: dict[MAC_ADDR, TPLinkTracker] = {} + + @callback + def coordinator_updated(): + """Update the status of the device.""" + update_items(coordinator, async_add_entities, tracked) + + entry.async_on_unload(coordinator.async_add_listener(coordinator_updated)) + coordinator_updated() + + +@callback +def update_items( + coordinator: TPLinkRouterCoordinator, + async_add_entities: AddEntitiesCallback, + tracked: dict[MAC_ADDR, TPLinkTracker], +) -> None: + """Update tracked device state from the hub.""" + new_tracked: list[TPLinkTracker] = [] + active: list[MAC_ADDR] = [] + fire_event = tracked != {} + for device in coordinator.status.devices: + active.append(device.macaddr) + if device.macaddr not in tracked: + tracked[device.macaddr] = TPLinkTracker(coordinator, device) + new_tracked.append(tracked[device.macaddr]) + if fire_event: + coordinator.hass.bus.fire(EVENT_NEW_DEVICE, tracked[device.macaddr].data) + else: + tracked[device.macaddr].device = device + if fire_event and not tracked[device.macaddr].active: + coordinator.hass.bus.fire(EVENT_ONLINE, tracked[device.macaddr].data) + tracked[device.macaddr].active = True + + if new_tracked: + async_add_entities(new_tracked) + + for mac in tracked: + if mac not in active and tracked[mac].active: + tracked[mac].active = False + coordinator.hass.bus.fire(EVENT_OFFLINE, tracked[mac].data) + + +class TPLinkTracker(CoordinatorEntity, ScannerEntity): + """Representation of network device.""" + + def __init__( + self, + coordinator: TPLinkRouterCoordinator, + data: Device, + ) -> None: + """Initialize the tracked device.""" + self.device = data + self.active = True + + super().__init__(coordinator) + + @property + def is_connected(self) -> bool: + """Return true if the client is connected to the network.""" + return self.active + + @property + def source_type(self) -> str: + """Return the source type of the client.""" + return SourceType.ROUTER + + @property + def name(self) -> str: + """Return the name of the client.""" + return self.device.hostname if self.device.hostname != '' else self.device.macaddr + + @property + def hostname(self) -> str: + """Return the hostname of the client.""" + return self.device.hostname + + @property + def mac_address(self) -> MAC_ADDR: + """Return the mac address of the client.""" + return self.device.macaddr + + @property + def ip_address(self) -> str: + """Return the ip address of the client.""" + return self.device.ipaddr + + @property + def unique_id(self) -> str: + """Return an unique identifier for this device.""" + return f"{self.coordinator.unique_id}_{DOMAIN}_{self.mac_address}" + + @property + def icon(self) -> str: + """Return device icon.""" + return "mdi:lan-connect" if self.is_connected else "mdi:lan-disconnect" + + @property + def extra_state_attributes(self) -> dict[str, str]: + attributes = { + 'connection': self.device.type.get_type(), + 'band': self.device.type.get_band(), + 'packets_sent': self.device.packets_sent, + 'packets_received': self.device.packets_received + } + if self.device.down_speed is not None or self.device.up_speed is not None: + attributes['up_speed'] = self.device.up_speed + attributes['down_speed'] = self.device.down_speed + return attributes + + @property + def data(self) -> dict[str, str]: + return dict(self.extra_state_attributes.items() | { + 'hostname': self.hostname, + 'ip_address': self.ip_address, + 'mac_address': self.mac_address, + }.items()) + + @property + def entity_registry_enabled_default(self) -> bool: + return True diff --git a/custom_components/tplink_router/manifest.json b/custom_components/tplink_router/manifest.json new file mode 100644 index 00000000..cdbf9980 --- /dev/null +++ b/custom_components/tplink_router/manifest.json @@ -0,0 +1,15 @@ +{ + "domain": "tplink_router", + "name": "TP-Link Router", + "codeowners": [ + "@AlexandrErohin" + ], + "config_flow": true, + "documentation": "https://github.com/AlexandrErohin/home-assistant-tplink-router", + "iot_class": "local_polling", + "issue_tracker": "https://github.com/AlexandrErohin/home-assistant-tplink-router/issues", + "requirements": [ + "tplinkrouterc6u==5.0.0" + ], + "version": "v2.0.0" +} diff --git a/custom_components/tplink_router/sensor.py b/custom_components/tplink_router/sensor.py new file mode 100644 index 00000000..26b4e14a --- /dev/null +++ b/custom_components/tplink_router/sensor.py @@ -0,0 +1,125 @@ +from dataclasses import dataclass +from collections.abc import Callable +from typing import Any +from homeassistant.components.sensor import ( + SensorDeviceClass, + SensorStateClass, + SensorEntity, + SensorEntityDescription, +) +from homeassistant.const import PERCENTAGE, UnitOfInformation +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant, callback +from .const import DOMAIN +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.update_coordinator import CoordinatorEntity +from .coordinator import TPLinkRouterCoordinator +from tplinkrouterc6u import Status + + +@dataclass +class TPLinkRouterSensorRequiredKeysMixin: + value: Callable[[Status], Any] + + +@dataclass +class TPLinkRouterSensorEntityDescription(SensorEntityDescription, TPLinkRouterSensorRequiredKeysMixin): + """A class that describes sensor entities.""" + + +SENSOR_TYPES: tuple[TPLinkRouterSensorEntityDescription, ...] = ( + TPLinkRouterSensorEntityDescription( + key="guest_wifi_clients_total", + name="Total guest wifi clients", + icon="mdi:account-multiple", + state_class=SensorStateClass.TOTAL, + value=lambda status: status.guest_clients_total, + ), + TPLinkRouterSensorEntityDescription( + key="wifi_clients_total", + name="Total main wifi clients", + icon="mdi:account-multiple", + state_class=SensorStateClass.TOTAL, + value=lambda status: status.wifi_clients_total, + ), + TPLinkRouterSensorEntityDescription( + key="wired_clients_total", + name="Total wired clients", + icon="mdi:account-multiple", + state_class=SensorStateClass.TOTAL, + value=lambda status: status.wired_total, + ), + TPLinkRouterSensorEntityDescription( + key="iot_clients_total", + name="Total IoT clients", + icon="mdi:account-multiple", + state_class=SensorStateClass.TOTAL, + value=lambda status: status.iot_clients_total, + ), + TPLinkRouterSensorEntityDescription( + key="clients_total", + name="Total clients", + icon="mdi:account-multiple", + state_class=SensorStateClass.TOTAL, + value=lambda status: status.clients_total, + ), + TPLinkRouterSensorEntityDescription( + key="cpu_used", + name="CPU used", + icon="mdi:cpu-64-bit", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=PERCENTAGE, + suggested_display_precision=1, + value=lambda status: (status.cpu_usage * 100) if status.cpu_usage is not None else None, + ), + TPLinkRouterSensorEntityDescription( + key="memory_used", + name="Memory used", + icon="mdi:memory", + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=PERCENTAGE, + suggested_display_precision=1, + value=lambda status: (status.mem_usage * 100) if status.mem_usage is not None else None, + ), +) + + +async def async_setup_entry( + hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback +) -> None: + coordinator = hass.data[DOMAIN][entry.entry_id] + + sensors = [] + + for description in SENSOR_TYPES: + sensors.append(TPLinkRouterSensor(coordinator, description)) + async_add_entities(sensors, False) + + +class TPLinkRouterSensor( + CoordinatorEntity[TPLinkRouterCoordinator], SensorEntity +): + _attr_has_entity_name = True + entity_description: TPLinkRouterSensorEntityDescription + + def __init__( + self, + coordinator: TPLinkRouterCoordinator, + description: TPLinkRouterSensorEntityDescription, + ) -> None: + super().__init__(coordinator) + + self._attr_device_info = coordinator.device_info + self._attr_unique_id = f"{coordinator.unique_id}_{DOMAIN}_{description.key}" + self.entity_description = description + + @callback + def _handle_coordinator_update(self) -> None: + """Handle updated data from the coordinator.""" + self._attr_native_value = self.entity_description.value(self.coordinator.status) + self.async_write_ha_state() + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return self.entity_description.value(self.coordinator.status) is not None diff --git a/custom_components/tplink_router/strings.json b/custom_components/tplink_router/strings.json new file mode 100644 index 00000000..36706356 --- /dev/null +++ b/custom_components/tplink_router/strings.json @@ -0,0 +1,30 @@ +{ + "title": "TP-Link Router", + "config": { + "step": { + "user": { + "description": "description", + "data": { + "host": "[%key:common::config_flow::data::host%]", + "username": "[%key:common::config_flow::data::username%]", + "password": "[%key:common::config_flow::data::password%]", + "scan_interval": "[%key:common::config_flow::data::scan_interval%]", + "verify_ssl": "[%key:common::config_flow::data::verify_ssl%]" + } + } + } + }, + "options": { + "step": { + "init": { + "data": { + "host": "[%key:common::config_flow::data::host%]", + "username": "[%key:common::config_flow::data::username%]", + "password": "[%key:common::config_flow::data::password%]", + "scan_interval": "[%key:common::config_flow::data::scan_interval%]", + "verify_ssl": "[%key:common::config_flow::data::verify_ssl%]" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/tplink_router/switch.py b/custom_components/tplink_router/switch.py new file mode 100644 index 00000000..086dd871 --- /dev/null +++ b/custom_components/tplink_router/switch.py @@ -0,0 +1,153 @@ +from __future__ import annotations +from collections.abc import Callable +from dataclasses import dataclass +from typing import Any +from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import EntityCategory +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from .const import DOMAIN +from homeassistant.helpers.update_coordinator import CoordinatorEntity +from .coordinator import TPLinkRouterCoordinator +from tplinkrouterc6u import Connection, Status + + +@dataclass +class TPLinkRouterSwitchEntityDescriptionMixin: + method: Callable[[TPLinkRouterCoordinator, bool], Any] + property: str + + +@dataclass +class TPLinkRouterSwitchEntityDescription(SwitchEntityDescription, TPLinkRouterSwitchEntityDescriptionMixin): + """A class that describes sensor entities.""" + + +SWITCH_TYPES = ( + TPLinkRouterSwitchEntityDescription( + key="wifi_guest_24g", + name="Guest WIFI 2.4G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='guest_2g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.GUEST_2G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="wifi_guest_5g", + name="Guest WIFI 5G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='guest_5g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.GUEST_5G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="wifi_guest_6g", + name="Guest WIFI 6G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='guest_6g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.GUEST_6G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="wifi_24g", + name="WIFI 2.4G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='wifi_2g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.HOST_2G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="wifi_5g", + name="WIFI 5G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='wifi_5g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.HOST_5G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="wifi_6g", + name="WIFI 6G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='wifi_6g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.HOST_6G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="iot_24g", + name="IoT WIFI 2.4G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='iot_2g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.IOT_2G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="iot_5g", + name="IoT WIFI 5G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='iot_5g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.IOT_5G, value), + ), + TPLinkRouterSwitchEntityDescription( + key="iot_6g", + name="IoT WIFI 6G", + icon="mdi:wifi", + entity_category=EntityCategory.CONFIG, + property='iot_6g_enable', + method=lambda coordinator, value: coordinator.set_wifi(Connection.IOT_6G, value), + ), +) + + +async def async_setup_entry( + hass: HomeAssistant, + entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + coordinator = hass.data[DOMAIN][entry.entry_id] + + switches = [] + + for description in SWITCH_TYPES: + switches.append(TPLinkRouterSwitchEntity(coordinator, description)) + async_add_entities(switches, False) + + +class TPLinkRouterSwitchEntity( + CoordinatorEntity[TPLinkRouterCoordinator], SwitchEntity +): + entity_description: TPLinkRouterSwitchEntityDescription + + def __init__( + self, + coordinator: TPLinkRouterCoordinator, + description: TPLinkRouterSwitchEntityDescription, + ) -> None: + super().__init__(coordinator) + + self._attr_device_info = coordinator.device_info + self._attr_unique_id = f"{coordinator.unique_id}_{DOMAIN}_{description.key}" + self.entity_description = description + + @property + def is_on(self) -> bool: + """Return true if switch is on.""" + return getattr(self.coordinator.status, self.entity_description.property) + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return getattr(self.coordinator.status, self.entity_description.property) is not None + + async def async_turn_on(self, **kwargs: Any) -> None: + """Turn the entity on.""" + await self.entity_description.method(self.coordinator, True) + setattr(self.coordinator.status, self.entity_description.property, True) + self.async_write_ha_state() + + async def async_turn_off(self, **kwargs: Any) -> None: + """Turn the entity off.""" + await self.entity_description.method(self.coordinator, False) + setattr(self.coordinator.status, self.entity_description.property, False) + self.async_write_ha_state() diff --git a/custom_components/tplink_router/translations/bg.json b/custom_components/tplink_router/translations/bg.json new file mode 100644 index 00000000..7d95d5dc --- /dev/null +++ b/custom_components/tplink_router/translations/bg.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Конфигурация на интеграцията", + "data": { + "host": "Хост", + "username": "Потребителско име", + "password": "Парола", + "scan_interval": "Интервал за сканиране за актуализации в секунди", + "verify_ssl": "Проверка на SSL за HTTPS връзка" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Редактиране на параметрите за рутера.", + "data": { + "host": "Хост", + "username": "Потребителско име", + "password": "Парола", + "scan_interval": "Интервал за сканиране за актуализации в секунди", + "verify_ssl": "Проверка на SSL за HTTPS връзка" + } + } + } + } +} diff --git a/custom_components/tplink_router/translations/cs.json b/custom_components/tplink_router/translations/cs.json new file mode 100644 index 00000000..e1911186 --- /dev/null +++ b/custom_components/tplink_router/translations/cs.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Nastavení integrace", + "data": { + "host": "Host", + "username": "Login", + "password": "Heslo", + "scan_interval": "Interval skenování v sekundách", + "verify_ssl": "Kontrolovat ssl pro HTTPS připojení" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Upravit parametry nastavení.", + "data": { + "host": "Host", + "username": "Login", + "password": "Heslo", + "scan_interval": "Interval skenování v sekundách", + "verify_ssl": "Kontrolovat ssl pro HTTPS připojení" + } + } + } + } +} diff --git a/custom_components/tplink_router/translations/en.json b/custom_components/tplink_router/translations/en.json new file mode 100644 index 00000000..537f2359 --- /dev/null +++ b/custom_components/tplink_router/translations/en.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Integration config", + "data": { + "host": "Host", + "username": "Login", + "password": "Password", + "scan_interval": "Scan interval for updates in seconds", + "verify_ssl": "Verify ssl for https connection" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Edit parameters for the router.", + "data": { + "host": "Host", + "username": "Login", + "password": "Password", + "scan_interval": "Scan interval for updates in seconds", + "verify_ssl": "Verify ssl for https connection" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/tplink_router/translations/es.json b/custom_components/tplink_router/translations/es.json new file mode 100644 index 00000000..015ce980 --- /dev/null +++ b/custom_components/tplink_router/translations/es.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Configuración de la integración", + "data": { + "host": "Host", + "username": "Usuario", + "password": "Contraseña", + "scan_interval": "Intervalo de escaneo para actualizaciones en segundos", + "verify_ssl": "Verificar SSL para conexión https" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Editar parámetros del router.", + "data": { + "host": "Host", + "username": "Usuario", + "password": "Contraseña", + "scan_interval": "Intervalo de escaneo para actualizaciones en segundos", + "verify_ssl": "Verificar SSL para conexión https" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/tplink_router/translations/fr.json b/custom_components/tplink_router/translations/fr.json new file mode 100644 index 00000000..7c621dd4 --- /dev/null +++ b/custom_components/tplink_router/translations/fr.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Configuration de l'intégration", + "data": { + "host": "Hôte", + "username": "Utilisateur", + "password": "Mot de passe", + "scan_interval": "Intervalle d'analyse des mises à jour en secondes", + "verify_ssl": "Vérifier SSL pour la connexion https" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Modifier les paramètres du routeur.", + "data": { + "host": "Hôte", + "username": "Utilisateur", + "password": "Mot de passe", + "scan_interval": "Intervalle d'analyse des mises à jour en secondes", + "verify_ssl": "Vérifier SSL pour la connexion https" + } + } + } + } +} \ No newline at end of file diff --git a/custom_components/tplink_router/translations/ja.json b/custom_components/tplink_router/translations/ja.json new file mode 100644 index 00000000..871c7196 --- /dev/null +++ b/custom_components/tplink_router/translations/ja.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "統合の設定", + "data": { + "host": "ホスト", + "username": "ログイン", + "password": "パスワード", + "scan_interval": "更新のスキャン間隔(秒)", + "verify_ssl": "https接続でSSLを検証する" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "ルーターのパラメーターを編集します。", + "data": { + "host": "ホスト", + "username": "ログイン", + "password": "パスワード", + "scan_interval": "更新のスキャン間隔(秒)", + "verify_ssl": "https接続でSSLを検証する" + } + } + } + } +} diff --git a/custom_components/tplink_router/translations/pt.json b/custom_components/tplink_router/translations/pt.json new file mode 100644 index 00000000..06ff175f --- /dev/null +++ b/custom_components/tplink_router/translations/pt.json @@ -0,0 +1,30 @@ +{ + "config": { + "step": { + "user": { + "description": "Configuração da integração", + "data": { + "host": "Host", + "username": "Utilizador", + "password": "Palavra-passe", + "scan_interval": "Intervalo de verificação para atualizações em segundos", + "verify_ssl": "Verificar SSL para a conexão https" + } + } + } + }, + "options": { + "step": { + "init": { + "description": "Editar parâmetros do router.", + "data": { + "host": "Host", + "username": "Utilizador", + "password": "Palavra-passe", + "scan_interval": "Intervalo de verificação para atualizações em segundos", + "verify_ssl": "Verificar SSL para a conexão https" + } + } + } + } +} diff --git a/www/community/anchor-card/anchor-card.js b/www/community/anchor-card/anchor-card.js index 7d4041a2..7e5a0b44 100644 --- a/www/community/anchor-card/anchor-card.js +++ b/www/community/anchor-card/anchor-card.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,n,o,i,l,r={},_=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function c(e,t){for(var n in t)e[n]=t[n];return e}function a(e){var t=e.parentNode;t&&t.removeChild(e)}function u(e,o,i,l,r){var _={type:e,props:o,key:i,ref:l,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++n:r};return null==r&&null!=t.vnode&&t.vnode(_),_}function h(e){return e.children}function d(e,t){this.props=e,this.context=t}function p(e,t){if(null==t)return e.__?p(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t0?u(y.type,y.props,y.key,null,y.__v):y)){if(y.__=n,y.__b=n.__b+1,null===(m=x[f])||m&&y.key==m.key&&y.type===m.type)x[f]=void 0;else for(v=0;v{clearTimeout(n),n=setTimeout((()=>{e.apply(this,o)}),t)}}((()=>{const e=window.location.href;!1!==this.config.disable_in_edit_mode&&window.location.search.includes("edit=1")||(e!==this.lastUrl?(window.dispatchEvent(new Event("locationchange")),this.lastUrl=e):this.backoutResponsibility&&window.history.back())}),100);scrollToAnchor(){requestAnimationFrame((()=>{const e=this.config.anchor_id,t=new URLSearchParams(window.location.search),n=t.get("anchor");if(n&&n===e){!0===this.config.backout&&(this.backoutResponsibility=!0),setTimeout((()=>{const e=this.anchorReplacementElement?this.anchorReplacementElement.getBoundingClientRect():this.getBoundingClientRect(),t=this.config.offset||0,n=window.scrollY||document.documentElement.scrollTop;this.config.transition?function(e,t){const n=window.scrollY,o=e-n;let i=null;requestAnimationFrame((function e(l){null===i&&(i=l);const r=l-i,_=function(e,t,n,o){return(e/=o/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t}(r,n,o,t);window.scrollTo(0,_),r{const e=this.parentElement;e&&(e.style.height="0px",e.style.maxHeight="0px")}),10),setTimeout((()=>{const e=this.parentElement.parentElement;e&&e.classList.contains("card")&&(e.style.visibility="hidden",e.style.position="absolute",this.anchorReplacementElement=e.nextElementSibling)}),10),(()=>{const e=window.history.pushState;window.history.pushState=function(...t){const n=e.apply(this,t);return window.dispatchEvent(new Event("pushstate")),n};const t=window.history.replaceState;window.history.replaceState=function(...e){const n=t.apply(this,e);return window.dispatchEvent(new Event("replacestate")),n},window.addEventListener("popstate",this.checkLocationChange),window.addEventListener("pushstate",this.checkLocationChange),window.addEventListener("replacestate",this.checkLocationChange)})(),window.addEventListener("locationchange",this.scrollToAnchor),window.dispatchEvent(new Event("locationchange"))}disconnectedCallback(){window.removeEventListener("locationchange",this.scrollToAnchor),window.removeEventListener("popstate",this.checkLocationChange),window.removeEventListener("pushstate",this.checkLocationChange),window.removeEventListener("replacestate",this.checkLocationChange)}setConfig(e){this.config=e,this._render()}_render=()=>{!function(n,o,i){var l,_,s;t.__&&t.__(n,o),_=(l="function"==typeof i)?null:i&&i.__k||o.__k,s=[],C(o,n=(!l&&i||o).__k=function(t,n,o){var i,l,r,_={};for(r in n)"key"==r?i=n[r]:"ref"==r?l=n[r]:_[r]=n[r];if(arguments.length>2&&(_.children=arguments.length>3?e.call(arguments,2):o),"function"==typeof t&&null!=t.defaultProps)for(r in t.defaultProps)void 0===_[r]&&(_[r]=t.defaultProps[r]);return u(t,_,i,l,null)}(h,null,[n]),_||r,r,void 0!==o.ownerSVGElement,!l&&i?[i]:_?null:o.firstChild?e.call(o.childNodes):null,s,!l&&i?i:_?_.__e:o.firstChild,l),L(s,n)}(U(h,{children:U("ha-card",{style:{margin:`-${this.config.negative_margin||13}px 0`,borderWidth:"0px",maxHeight:"0px",height:"0px",transform:"scale(0)"},children:!this.config.anchor_id&&U("ul",{style:{padding:"20px"},children:[U("li",{children:["anchor_id - set a per-page unique identifier. scroll to this card using the url param"," ",U("strong",{children:"anchor"},void 0),U("br",{},void 0),U("i",{children:"example: lovelace/0?anchor=lights"},void 0)]},void 0),U("li",{children:"negative_margin - set a negative margin of the card to fix spacing visuals. default is 13px."},void 0),U("li",{children:"timeout - set a timeout to wait before scrolling to the card. default is 150ms. increase this if other cards take long to render."},void 0),U("li",{children:"offset - the scroll offset. default is 0. can be a negative value."},void 0),U("li",{children:"disable_in_edit_mode - prevent scrolling when edit=1."},void 0),U("li",{children:"remove_anchor - removes the anchor param from the url after scrolling. default is true."},void 0)]},void 0)},void 0)},void 0),this)};getCardSize(){return 1}}const M="anchor-card";customElements.define(M,D),window.customCards=window.customCards||[],window.customCards.push({type:M,name:"Anchor Card",preview:!1,description:"A card that acts as a scroll anchor"})})(); \ No newline at end of file +(()=>{"use strict";var e,n,t,o,i,r,_,l={},c=[],a=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(e,n){for(var t in n)e[t]=n[t];return e}function u(e){var n=e.parentNode;n&&n.removeChild(e)}function h(e,o,i,r,_){var l={type:e,props:o,key:i,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==_?++t:_};return null==_&&null!=n.vnode&&n.vnode(l),l}function d(e){return e.children}function p(e,n){this.props=e,this.context=n}function f(e,n){if(null==n)return e.__?f(e.__,e.__.__k.indexOf(e)+1):null;for(var t;n0?h(g.type,g.props,g.key,null,g.__v):g)){if(g.__=t,g.__b=t.__b+1,null===(m=x[p])||m&&g.key==m.key&&g.type===m.type)x[p]=void 0;else for(v=0;v2&&(l.children=arguments.length>3?e.call(arguments,2):o),"function"==typeof n&&null!=n.defaultProps)for(_ in n.defaultProps)void 0===l[_]&&(l[_]=n.defaultProps[_]);return h(n,l,i,r,null)}(d,null,[t]),_||l,l,void 0!==o.ownerSVGElement,!r&&i?[i]:_?null:o.firstChild?e.call(o.childNodes):null,c,!r&&i?i:_?_.__e:o.firstChild,r),T(c,t)}function D(e,n){var t={__c:n="__cC"+_++,__:e,Consumer:function(e,n){return e.children(n)},Provider:function(e){var t,o;return this.getChildContext||(t=[],(o={})[n]=this,this.getChildContext=function(){return o},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&t.some(m)},this.sub=function(e){t.push(e);var n=e.componentWillUnmount;e.componentWillUnmount=function(){t.splice(t.indexOf(e),1),n&&n.call(e)}}),e.children}};return t.Provider.__=t.Consumer.contextType=t}e=c.slice,n={__e:function(e,n){for(var t,o,i;n=n.__;)if((t=n.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(e)),i=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(e),i=t.__d),i)return t.__E=t}catch(n){e=n}throw e}},t=0,p.prototype.setState=function(e,n){var t;t=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),"function"==typeof e&&(e=e(s({},t),this.props)),e&&s(t,e),null!=e&&this.__v&&(n&&this.__h.push(n),m(this))},p.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),m(this))},p.prototype.render=d,o=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0,_=0;var F=0;function R(e,t,o,i,r){var _,l,c={};for(l in t)"ref"==l?_=t[l]:c[l]=t[l];var a={type:e,props:c,key:o,ref:_,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--F,__source:i,__self:r};if("function"==typeof e&&(_=e.defaultProps))for(l in _)void 0===c[l]&&(c[l]=_[l]);return n.vnode&&n.vnode(a),a}var B,I,M,N=0,W=[],O=n.__b,$=n.__r,q=n.diffed,z=n.__c,Y=n.unmount;function j(e,t){n.__h&&n.__h(I,e,N||t),N=0;var o=I.__H||(I.__H={__:[],__h:[]});return e>=o.__.length&&o.__.push({}),o.__[e]}function G(e){var n=I.context[e.__c],t=j(B++,9);return t.c=e,n?(null==t.__&&(t.__=!0,n.sub(I)),n.props.value):e.__}function V(){for(var e;e=W.shift();)if(e.__P)try{e.__H.__h.forEach(K),e.__H.__h.forEach(Q),e.__H.__h=[]}catch(t){e.__H.__h=[],n.__e(t,e.__v)}}n.__b=function(e){I=null,O&&O(e)},n.__r=function(e){$&&$(e),B=0;var n=(I=e.__c).__H;n&&(n.__h.forEach(K),n.__h.forEach(Q),n.__h=[])},n.diffed=function(e){q&&q(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==W.push(t)&&M===n.requestAnimationFrame||((M=n.requestAnimationFrame)||function(e){var n,t=function(){clearTimeout(o),J&&cancelAnimationFrame(n),setTimeout(e)},o=setTimeout(t,100);J&&(n=requestAnimationFrame(t))})(V)),I=null},n.__c=function(e,t){t.some((function(e){try{e.__h.forEach(K),e.__h=e.__h.filter((function(e){return!e.__||Q(e)}))}catch(o){t.some((function(e){e.__h&&(e.__h=[])})),t=[],n.__e(o,e.__v)}})),z&&z(e,t)},n.unmount=function(e){Y&&Y(e);var t,o=e.__c;o&&o.__H&&(o.__H.__.forEach((function(e){try{K(e)}catch(e){t=e}})),t&&n.__e(t,o.__v))};var J="function"==typeof requestAnimationFrame;function K(e){var n=I,t=e.__c;"function"==typeof t&&(e.__c=void 0,t()),I=n}function Q(e){var n=I;e.__c=e.__(),I=n}function X(e,n){return!e||e.length!==n.length||n.some((function(n,t){return n!==e[t]}))}const Z=D(void 0),ee=D(void 0),ne=({hass:e,children:n})=>R(Z.Provider,{value:e,children:n},void 0),te=({config:e,children:n})=>R(ee.Provider,{value:e,children:n},void 0),oe=({schema:e,computeLabel:t,configChanged:o})=>{const i=G(Z),r=G(ee),_=(N=5,function(e,n){var t=j(B++,7);return X(t.__H,n)&&(t.__=e(),t.__H=n,t.__h=e),t.__}((function(){return{current:null}}),[]));return function(l,c){var a=j(B++,3);!n.__s&&X(a.__H,c)&&(a.__=()=>{const n=document.createElement("ha-form");return n.hass=i,n.data=r,n.schema=e,n.computeLabel=t,n.addEventListener("value-changed",o),_.current&&_.current.appendChild(n),()=>{n.removeEventListener("value-changed",o)}},a.__H=c,I.__H.__h.push(a))}(0,[]),R("div",{ref:_},void 0)},ie="anchor-card",re="anchor-card-editor";class _e extends HTMLElement{constructor(){super(),this.scrollToAnchor=this.scrollToAnchor.bind(this)}static getConfigElement(){return document.createElement(re)}static getStubConfig(){return{anchor_id:"example",negative_margin:13,timeout:50,offset:0,transition:0}}config;anchorReplacementElement=null;replacementIsOnTop=!1;checkLocationChange=function(e,n=100){let t;return(...o)=>{clearTimeout(t),t=setTimeout((()=>{e.apply(this,o)}),n)}}((()=>{window.location.search.includes("edit=1")||window.dispatchEvent(new Event("locationchange"))}),100);scrollToAnchor(){requestAnimationFrame((()=>{const e=this.config.anchor_id,n=new URLSearchParams(window.location.search);if(n.get("anchor")===e){setTimeout((()=>{const e=this.anchorReplacementElement?this.anchorReplacementElement.getBoundingClientRect():this.getBoundingClientRect(),n=this.config.offset||0,t=window.scrollY||document.documentElement.scrollTop;this.config.transition?function(e,n){const t=window.scrollY,o=e-t;let i=null;requestAnimationFrame((function e(r){null===i&&(i=r);const _=r-i,l=function(e,n,t,o){return(e/=o/2)<1?t/2*e*e+n:-t/2*(--e*(e-2)-1)+n}(_,t,o,n);window.scrollTo(0,l),_{const e=this.parentElement;e&&(e.style.height="0px",e.style.maxHeight="0px")}),10),setTimeout((()=>{const e=this.parentElement.parentElement;e&&e.classList.contains("card")&&e.parentElement.classList.contains("container")&&(e.style.visibility="hidden",e.style.position="absolute",e.nextElementSibling?this.anchorReplacementElement=e.nextElementSibling:e.previousElementSibling&&(this.anchorReplacementElement=e.previousElementSibling,this.replacementIsOnTop=!0))}),10),(()=>{const e=window.history.pushState;window.history.pushState=function(...n){const t=e.apply(this,n);return window.dispatchEvent(new Event("pushstate")),t};const n=window.history.replaceState;window.history.replaceState=function(...e){const t=n.apply(this,e);return window.dispatchEvent(new Event("replacestate")),t},window.addEventListener("popstate",this.checkLocationChange),window.addEventListener("pushstate",this.checkLocationChange),window.addEventListener("replacestate",this.checkLocationChange)})(),window.addEventListener("locationchange",this.scrollToAnchor),window.dispatchEvent(new Event("locationchange"))}disconnectedCallback(){window.removeEventListener("locationchange",this.scrollToAnchor),window.removeEventListener("popstate",this.checkLocationChange),window.removeEventListener("pushstate",this.checkLocationChange),window.removeEventListener("replacestate",this.checkLocationChange)}setConfig(e){this.config=e,this._render()}_render=()=>{U(R(d,{children:R("ha-card",{style:{margin:`-${this.config.negative_margin||13}px 0`,borderWidth:"0px",maxHeight:"0px",height:"0px",transform:"scale(0)"}},void 0)},void 0),this)};getCardSize(){return 1}}class le extends HTMLElement{_config;_hass;usedBackoutBefore=!1;set hass(e){this._hass=e}setConfig(e){if(void 0===e.anchor_id||void 0===e.negative_margin||void 0===e.timeout||void 0===e.offset||void 0===e.transition||void 0!==e.backout||void 0!==e.disable_in_edit_mode){void 0!==e.backout&&(this.usedBackoutBefore=!0),e={anchor_id:"example",negative_margin:13,timeout:50,offset:0,transition:0,...e,backout:void 0,disable_in_edit_mode:void 0};const n=new CustomEvent("config-changed",{detail:{config:e},bubbles:!0,composed:!0});this.dispatchEvent(n)}this._config=e,this._render()}configChanged(e){const n=Object.assign({},this._config);n.anchor_id=e.detail.value.anchor_id,n.negative_margin=e.detail.value.negative_margin,n.timeout=e.detail.value.timeout,n.offset=e.detail.value.offset,n.transition=e.detail.value.transition,this._config=n;const t=new CustomEvent("config-changed",{detail:{config:n},bubbles:!0,composed:!0});this.dispatchEvent(t),this._render()}computeLabel(e){return{anchor_id:"Anchor ID",negative_margin:"Negative Margin",timeout:"Timeout (wait time before scrolling)",offset:"Offset (scroll offset)",transition:"Transition (scroll duration, set to 0 for default smooth scroll, otherwise do not set values <10)"}[e.name]||e.name}_render=()=>{U(R(d,{children:R(ne,{hass:this._hass,children:R(te,{config:this._config,children:[R("div",{style:{display:"flex",flexDirection:"column",gap:"8px",marginBottom:"12px"},children:[R("span",{children:"Set a per-page unique anchor ID to this card."},void 0),R("span",{children:"To scroll to this anchor, navigate to it with a URL param via another card/action, example:"},void 0),R("code",{style:{backgroundColor:"#00000050",padding:"4px 8px",borderRadius:"4px"},children:"/lovelace/lights?anchor=kitchen"},void 0),R("div",{style:{backgroundColor:"#00000050",padding:"4px 8px",borderRadius:"4px",whiteSpace:"pre-wrap",fontFamily:"monospace"},children:R("span",{children:["tap_action:","\n"," ","action: navigate","\n"," ","navigation_path: /lovelace/lights?anchor=kitchen","\n"," ","navigation_replace: true"]},void 0)},void 0)]},void 0),R(oe,{schema:[{name:"anchor_id",selector:{text:{}}},{name:"negative_margin",selector:{number:{min:-100,max:100,step:5}}},{name:"timeout",selector:{number:{min:0,max:1e3,step:10}}},{name:"offset",selector:{number:{min:-500,max:500,step:10}}},{name:"transition",selector:{number:{min:0,max:2e3,step:50}}}],computeLabel:this.computeLabel,configChanged:this.configChanged.bind(this)},void 0),R("p",{children:["*",this.usedBackoutBefore?R(d,{children:[R("b",{style:{color:"red"},children:["You used ",R("code",{children:"backout"},void 0)," on this card, check this section:"]},void 0),R("br",{},void 0)]},void 0):"","If you navigate within the same page, use the"," ",R("a",{href:"https://www.home-assistant.io/dashboards/actions/#navigation_replace",children:"navigation_replace"},void 0)," ","option on your navigation action to prevent having to go back multiple times to reach the previous page."]},void 0),R("p",{children:["*If you use the Sections view and want to edit this card, refresh the page"," ",R("b",{style:{color:"red"},children:"when already in edit mode"},void 0)," ","(that's the only way to make it appear)."]},void 0)]},void 0)},void 0)},void 0),this)}}customElements.define(ie,_e),customElements.define(re,le),window.customCards=window.customCards||[],window.customCards.push({type:ie,name:"Anchor Card",preview:!1,description:"A card that acts as a scroll anchor"})})(); \ No newline at end of file diff --git a/www/community/anchor-card/anchor-card.js.gz b/www/community/anchor-card/anchor-card.js.gz index 1fd14f35..18dcece7 100644 Binary files a/www/community/anchor-card/anchor-card.js.gz and b/www/community/anchor-card/anchor-card.js.gz differ diff --git a/www/community/android-tv-card/universal-remote-card.min.js b/www/community/android-tv-card/universal-remote-card.min.js index c5dfb843..2899dcb6 100644 --- a/www/community/android-tv-card/universal-remote-card.min.js +++ b/www/community/android-tv-card/universal-remote-card.min.js @@ -1,8 +1,8 @@ /*! For license information please see universal-remote-card.min.js.LICENSE.txt */ -(()=>{var t={68:(t,e,i)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CONTEXT=void 0;const n=i(315),o=i(589),a=i(450);e.CONTEXT=t=>({True:!0,False:!1,None:null,hass:t,states:e=>(0,n.states)(t,e),is_state:(e,i)=>(0,n.is_state)(t,e,i),state_attr:(e,i)=>(0,n.state_attr)(t,e,i),is_state_attr:(e,i,o)=>(0,n.is_state_attr)(t,e,i,o),has_value:e=>(0,n.has_value)(t,e),iif:(e,i,n,a)=>(0,o.iif)(t,e,i,n,a),match_media:t=>(0,a.match_media)(t)})},383:function(t,e,i){"use strict";var n=this&&this.__createBinding||(Object.create?function(t,e,i,n){void 0===n&&(n=i);var o=Object.getOwnPropertyDescriptor(e,i);o&&!("get"in o?!e.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(t,n,o)}:function(t,e,i,n){void 0===n&&(n=i),t[n]=e[i]}),o=this&&this.__exportStar||function(t,e){for(var i in t)"default"===i||Object.prototype.hasOwnProperty.call(e,i)||n(e,t,i)};Object.defineProperty(e,"__esModule",{value:!0}),o(i(729),e)},729:(t,e,i)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.renderTemplate=void 0;const n=i(894),o=i(68);e.renderTemplate=function(t,e,i){if("string"==typeof e&&(e.includes("{{")&&e.includes("}}")||e.includes("{%")&&e.includes("%}"))){if(e=(0,n.renderString)(structuredClone(e),Object.assign(Object.assign({},(0,o.CONTEXT)(t)),i)).trim(),[void 0,null,"undefined","null","None"].includes(e))return"";if("true"==e.toLowerCase())return!0;if("false"==e.toLowerCase())return!1}return e}},450:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.match_media=void 0,e.match_media=function(t){return window.matchMedia(t).matches}},589:(t,e,i)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.iif=void 0;const n=i(383);e.iif=function(t,e,i,o,a){if(a){const i=(0,n.renderTemplate)(t,e);if([void 0,null,"undefined","null","None"].includes(i))return a}const r=`\n\t\t{% if ${e} %}\n\t\t${null==i||i}\n\t\t{% else %}\n\t\t${null!=o&&o}\n\t\t{% endif %}\n\t`;return(0,n.renderTemplate)(t,r)}},315:(t,e)=>{"use strict";function i(t,e){try{return t.states[e].state}catch(t){return}}function n(t,e,i){try{return t.states[e].attributes[i]}catch(t){return}}Object.defineProperty(e,"__esModule",{value:!0}),e.has_value=e.is_state_attr=e.state_attr=e.is_state=e.states=void 0,e.states=i,e.is_state=function(t,e,n){try{const o=i(t,e);return Array.isArray(n)?n.includes(o):o==n}catch(t){return!1}},e.state_attr=n,e.is_state_attr=function(t,e,i,o){try{const a=n(t,e,i);return Array.isArray(o)?o.includes(a):a==o}catch(t){return!1}},e.has_value=function(t,e){try{const n=i(t,e);return!![!1,0,-0,""].includes(n)||Boolean(n)}catch(t){return!1}}},894:function(t){var e;"undefined"!=typeof self&&self,e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=11)}([function(t,e,i){"use strict";var n=Array.prototype,o=Object.prototype,a={"&":"&",'"':""","'":"'","<":"<",">":">","\\":"\"},r=/[&"'<>\\]/g;function s(t,e){return o.hasOwnProperty.call(t,e)}function c(t){return a[t]}function l(t,e,i){var n,o,a;if(t instanceof Error&&(t=(o=t).name+": "+o.message),Object.setPrototypeOf?(n=new Error(t),Object.setPrototypeOf(n,l.prototype)):(n=this,Object.defineProperty(n,"message",{enumerable:!1,writable:!0,value:t})),Object.defineProperty(n,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(n,this.constructor),o){var r=Object.getOwnPropertyDescriptor(o,"stack");(a=r&&(r.get||function(){return r.value}))||(a=function(){return o.stack})}else{var s=new Error(t).stack;a=function(){return s}}return Object.defineProperty(n,"stack",{get:function(){return a.call(n)}}),Object.defineProperty(n,"cause",{value:o}),n.lineno=e,n.colno=i,n.firstUpdate=!0,n.Update=function(t){var e="("+(t||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?e+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(e+=" [Line "+this.lineno+"]")),e+="\n ",this.firstUpdate&&(e+=" "),this.message=e+(this.message||""),this.firstUpdate=!1,this},n}function u(t){return"[object Function]"===o.toString.call(t)}function p(t){return"[object Array]"===o.toString.call(t)}function h(t){return"[object String]"===o.toString.call(t)}function d(t){return"[object Object]"===o.toString.call(t)}function m(t){var e,i=(e=t)?"string"==typeof e?e.split("."):[e]:[];return function(t){for(var e=t,n=0;nt.length)r=o.slice(0,t.length),o.slice(r.length,l).forEach((function(t,i){i2?o-2:0),r=2;r0||!i)&&process.stdout.write(" ".repeat(e));var a=o===n.length-1?"":"\n";process.stdout.write(""+t+a)}))}t.exports={Node:c,Root:p,NodeList:u,Value:l,Literal:h,Symbol:d,Group:m,Array:f,Pair:y,Dict:_,Output:j,Capture:V,TemplateData:B,If:v,IfAsync:g,InlineIf:k,For:w,AsyncEach:C,AsyncAll:E,Macro:x,Caller:L,Import:T,FromImport:A,FunCall:S,Filter:O,FilterAsync:M,KeywordArgs:$,Block:I,Super:N,Extends:P,Include:R,Set:D,Switch:F,Case:K,LookupVal:b,BinOp:H,In:Y,Is:Z,Or:z,And:W,Not:G,Add:q,Concat:X,Sub:J,Mul:Q,Div:tt,FloorDiv:et,Mod:it,Pow:nt,Neg:ot,Pos:at,Compare:rt,CompareOperand:st,CallExtension:ct,CallExtensionAsync:lt,printNodes:function t(e,i){if(i=i||0,ut(e.typename+": ",i),e instanceof u)ut("\n"),e.children.forEach((function(e){t(e,i+2)}));else if(e instanceof ct)ut(e.extName+"."+e.prop+"\n"),e.args&&t(e.args,i+2),e.contentArgs&&e.contentArgs.forEach((function(e){t(e,i+2)}));else{var n=[],o=null;e.iterFields((function(t,e){t instanceof c?n.push([e,t]):(o=o||{})[e]=t})),o?ut(JSON.stringify(o,null,2)+"\n",null,!0):ut("\n"),n.forEach((function(e){var n=e[0],o=e[1];ut("["+n+"] =>",i+2),t(o,i+4)}))}}}},function(t,e){},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=i(8),a=i(17),r=i(3),s=i(0).TemplateError,c=i(2).Frame,l=i(1).Obj,u={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},p=function(t){var e,i;function o(){return t.apply(this,arguments)||this}i=t,(e=o).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i);var a=o.prototype;return a.init=function(t,e){this.templateName=t,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=e},a.fail=function(t,e,i){throw void 0!==e&&(e+=1),void 0!==i&&(i+=1),new s(t,e,i)},a._pushBuffer=function(){var t=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=t,this._emit("var "+this.buffer+' = "";'),t},a._popBuffer=function(){this.buffer=this.bufferStack.pop()},a._emit=function(t){this.codebuf.push(t)},a._emitLine=function(t){this._emit(t+"\n")},a._emitLines=function(){for(var t=this,e=arguments.length,i=new Array(e),n=0;n0&&o._emit(","),o.compile(t,e)})),n&&this._emit(n)},a._compileExpression=function(t,e){this.assertType(t,r.Literal,r.Symbol,r.Group,r.Array,r.Dict,r.FunCall,r.Caller,r.Filter,r.LookupVal,r.Compare,r.InlineIf,r.In,r.Is,r.And,r.Or,r.Not,r.Add,r.Concat,r.Sub,r.Mul,r.Div,r.FloorDiv,r.Mod,r.Pow,r.Neg,r.Pos,r.Compare,r.NodeList),this.compile(t,e)},a.assertType=function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n0&&n._emit(","),t){n._emitLine("function(cb) {"),n._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var o=n._pushBuffer();n._withScopedSyntax((function(){n.compile(t,e),n._emitLine("cb(null, "+o+");")})),n._popBuffer(),n._emitLine("return "+o+";"),n._emitLine("}")}else n._emit("null")})),i){var c=this._tmpid();this._emitLine(", "+this._makeCallback(c)),this._emitLine(this.buffer+" += runtime.suppressValue("+c+", "+s+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+s+" && env.opts.autoescape);\n")},a.compileCallExtensionAsync=function(t,e){this.compileCallExtension(t,e,!0)},a.compileNodeList=function(t,e){this._compileChildren(t,e)},a.compileLiteral=function(t){if("string"==typeof t.value){var e=t.value.replace(/\\/g,"\\\\");e=(e=(e=(e=(e=e.replace(/"/g,'\\"')).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t")).replace(/\u2028/g,"\\u2028"),this._emit('"'+e+'"')}else null===t.value?this._emit("null"):this._emit(t.value.toString())},a.compileSymbol=function(t,e){var i=t.value,n=e.lookup(i);n?this._emit(n):this._emit('runtime.contextOrFrameLookup(context, frame, "'+i+'")')},a.compileGroup=function(t,e){this._compileAggregate(t,e,"(",")")},a.compileArray=function(t,e){this._compileAggregate(t,e,"[","]")},a.compileDict=function(t,e){this._compileAggregate(t,e,"{","}")},a.compilePair=function(t,e){var i=t.key,n=t.value;i instanceof r.Symbol?i=new r.Literal(i.lineno,i.colno,i.value):i instanceof r.Literal&&"string"==typeof i.value||this.fail("compilePair: Dict keys must be strings or names",i.lineno,i.colno),this.compile(i,e),this._emit(": "),this._compileExpression(n,e)},a.compileInlineIf=function(t,e){this._emit("("),this.compile(t.cond,e),this._emit("?"),this.compile(t.body,e),this._emit(":"),null!==t.else_?this.compile(t.else_,e):this._emit('""'),this._emit(")")},a.compileIn=function(t,e){this._emit("runtime.inOperator("),this.compile(t.left,e),this._emit(","),this.compile(t.right,e),this._emit(")")},a.compileIs=function(t,e){var i=t.right.name?t.right.name.value:t.right.value;this._emit('env.getTest("'+i+'").call(context, '),this.compile(t.left,e),t.right.args&&(this._emit(","),this.compile(t.right.args,e)),this._emit(") === true")},a._binOpEmitter=function(t,e,i){this.compile(t.left,e),this._emit(i),this.compile(t.right,e)},a.compileOr=function(t,e){return this._binOpEmitter(t,e," || ")},a.compileAnd=function(t,e){return this._binOpEmitter(t,e," && ")},a.compileAdd=function(t,e){return this._binOpEmitter(t,e," + ")},a.compileConcat=function(t,e){return this._binOpEmitter(t,e,' + "" + ')},a.compileSub=function(t,e){return this._binOpEmitter(t,e," - ")},a.compileMul=function(t,e){return this._binOpEmitter(t,e," * ")},a.compileDiv=function(t,e){return this._binOpEmitter(t,e," / ")},a.compileMod=function(t,e){return this._binOpEmitter(t,e," % ")},a.compileNot=function(t,e){this._emit("!"),this.compile(t.target,e)},a.compileFloorDiv=function(t,e){this._emit("Math.floor("),this.compile(t.left,e),this._emit(" / "),this.compile(t.right,e),this._emit(")")},a.compilePow=function(t,e){this._emit("Math.pow("),this.compile(t.left,e),this._emit(", "),this.compile(t.right,e),this._emit(")")},a.compileNeg=function(t,e){this._emit("-"),this.compile(t.target,e)},a.compilePos=function(t,e){this._emit("+"),this.compile(t.target,e)},a.compileCompare=function(t,e){var i=this;this.compile(t.expr,e),t.ops.forEach((function(t){i._emit(" "+u[t.type]+" "),i.compile(t.expr,e)}))},a.compileLookupVal=function(t,e){this._emit("runtime.memberLookup(("),this._compileExpression(t.target,e),this._emit("),"),this._compileExpression(t.val,e),this._emit(")")},a._getNodeName=function(t){switch(t.typename){case"Symbol":return t.value;case"FunCall":return"the return value of ("+this._getNodeName(t.name)+")";case"LookupVal":return this._getNodeName(t.target)+'["'+this._getNodeName(t.val)+'"]';case"Literal":return t.value.toString();default:return"--expression--"}},a.compileFunCall=function(t,e){this._emit("(lineno = "+t.lineno+", colno = "+t.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(t.name,e),this._emit(', "'+this._getNodeName(t.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(t.args,e,"[","])"),this._emit(")")},a.compileFilter=function(t,e){var i=t.name;this.assertType(i,r.Symbol),this._emit('env.getFilter("'+i.value+'").call(context, '),this._compileAggregate(t.args,e),this._emit(")")},a.compileFilterAsync=function(t,e){var i=t.name,n=t.symbol.value;this.assertType(i,r.Symbol),e.set(n,n),this._emit('env.getFilter("'+i.value+'").call(context, '),this._compileAggregate(t.args,e),this._emitLine(", "+this._makeCallback(n)),this._addScopeLevel()},a.compileKeywordArgs=function(t,e){this._emit("runtime.makeKeywordArgs("),this.compileDict(t,e),this._emit(")")},a.compileSet=function(t,e){var i=this,n=[];t.targets.forEach((function(t){var o=t.value,a=e.lookup(o);null==a&&(a=i._tmpid(),i._emitLine("var "+a+";")),n.push(a)})),t.value?(this._emit(n.join(" = ")+" = "),this._compileExpression(t.value,e),this._emitLine(";")):(this._emit(n.join(" = ")+" = "),this.compile(t.body,e),this._emitLine(";")),t.targets.forEach((function(t,e){var o=n[e],a=t.value;i._emitLine('frame.set("'+a+'", '+o+", true);"),i._emitLine("if(frame.topLevel) {"),i._emitLine('context.setVariable("'+a+'", '+o+");"),i._emitLine("}"),"_"!==a.charAt(0)&&(i._emitLine("if(frame.topLevel) {"),i._emitLine('context.addExport("'+a+'", '+o+");"),i._emitLine("}"))}))},a.compileSwitch=function(t,e){var i=this;this._emit("switch ("),this.compile(t.expr,e),this._emit(") {"),t.cases.forEach((function(t,n){i._emit("case "),i.compile(t.cond,e),i._emit(": "),i.compile(t.body,e),t.body.children.length&&i._emitLine("break;")})),t.default&&(this._emit("default:"),this.compile(t.default,e)),this._emit("}")},a.compileIf=function(t,e,i){var n=this;this._emit("if("),this._compileExpression(t.cond,e),this._emitLine(") {"),this._withScopedSyntax((function(){n.compile(t.body,e),i&&n._emit("cb()")})),t.else_?(this._emitLine("}\nelse {"),this._withScopedSyntax((function(){n.compile(t.else_,e),i&&n._emit("cb()")}))):i&&(this._emitLine("}\nelse {"),this._emit("cb()")),this._emitLine("}")},a.compileIfAsync=function(t,e){this._emit("(function(cb) {"),this.compileIf(t,e,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},a._emitLoopBindings=function(t,e,i,n){var o=this;[{name:"index",val:i+" + 1"},{name:"index0",val:i},{name:"revindex",val:n+" - "+i},{name:"revindex0",val:n+" - "+i+" - 1"},{name:"first",val:i+" === 0"},{name:"last",val:i+" === "+n+" - 1"},{name:"length",val:n}].forEach((function(t){o._emitLine('frame.set("loop.'+t.name+'", '+t.val+");")}))},a.compileFor=function(t,e){var i=this,n=this._tmpid(),o=this._tmpid(),a=this._tmpid();if(e=e.push(),this._emitLine("frame = frame.push();"),this._emit("var "+a+" = "),this._compileExpression(t.arr,e),this._emitLine(";"),this._emit("if("+a+") {"),this._emitLine(a+" = runtime.fromIterator("+a+");"),t.name instanceof r.Array){this._emitLine("var "+n+";"),this._emitLine("if(runtime.isArray("+a+")) {"),this._emitLine("var "+o+" = "+a+".length;"),this._emitLine("for("+n+"=0; "+n+" < "+a+".length; "+n+"++) {"),t.name.children.forEach((function(o,r){var s=i._tmpid();i._emitLine("var "+s+" = "+a+"["+n+"]["+r+"];"),i._emitLine('frame.set("'+o+'", '+a+"["+n+"]["+r+"]);"),e.set(t.name.children[r].value,s)})),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}"),this._emitLine("} else {");var s=t.name.children,c=s[0],l=s[1],u=this._tmpid(),p=this._tmpid();e.set(c.value,u),e.set(l.value,p),this._emitLine(n+" = -1;"),this._emitLine("var "+o+" = runtime.keys("+a+").length;"),this._emitLine("for(var "+u+" in "+a+") {"),this._emitLine(n+"++;"),this._emitLine("var "+p+" = "+a+"["+u+"];"),this._emitLine('frame.set("'+c.value+'", '+u+");"),this._emitLine('frame.set("'+l.value+'", '+p+");"),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}"),this._emitLine("}")}else{var h=this._tmpid();e.set(t.name.value,h),this._emitLine("var "+o+" = "+a+".length;"),this._emitLine("for(var "+n+"=0; "+n+" < "+a+".length; "+n+"++) {"),this._emitLine("var "+h+" = "+a+"["+n+"];"),this._emitLine('frame.set("'+t.name.value+'", '+h+");"),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}")}this._emitLine("}"),t.else_&&(this._emitLine("if (!"+o+") {"),this.compile(t.else_,e),this._emitLine("}")),this._emitLine("frame = frame.pop();")},a._compileAsyncLoop=function(t,e,i){var n=this,o=this._tmpid(),a=this._tmpid(),s=this._tmpid(),c=i?"asyncAll":"asyncEach";if(e=e.push(),this._emitLine("frame = frame.push();"),this._emit("var "+s+" = runtime.fromIterator("),this._compileExpression(t.arr,e),this._emitLine(");"),t.name instanceof r.Array){var l=t.name.children.length;this._emit("runtime."+c+"("+s+", "+l+", function("),t.name.children.forEach((function(t){n._emit(t.value+",")})),this._emit(o+","+a+",next) {"),t.name.children.forEach((function(t){var i=t.value;e.set(i,i),n._emitLine('frame.set("'+i+'", '+i+");")}))}else{var u=t.name.value;this._emitLine("runtime."+c+"("+s+", 1, function("+u+", "+o+", "+a+",next) {"),this._emitLine('frame.set("'+u+'", '+u+");"),e.set(u,u)}this._emitLoopBindings(t,s,o,a),this._withScopedSyntax((function(){var a;i&&(a=n._pushBuffer()),n.compile(t.body,e),n._emitLine("next("+o+(a?","+a:"")+");"),i&&n._popBuffer()}));var p=this._tmpid();this._emitLine("}, "+this._makeCallback(p)),this._addScopeLevel(),i&&this._emitLine(this.buffer+" += "+p+";"),t.else_&&(this._emitLine("if (!"+s+".length) {"),this.compile(t.else_,e),this._emitLine("}")),this._emitLine("frame = frame.pop();")},a.compileAsyncEach=function(t,e){this._compileAsyncLoop(t,e)},a.compileAsyncAll=function(t,e){this._compileAsyncLoop(t,e,!0)},a._compileMacro=function(t,e){var i=this,n=[],o=null,a="macro_"+this._tmpid(),s=void 0!==e;t.args.children.forEach((function(e,a){a===t.args.children.length-1&&e instanceof r.Dict?o=e:(i.assertType(e,r.Symbol),n.push(e))}));var l,u=[].concat(n.map((function(t){return"l_"+t.value})),["kwargs"]),p=n.map((function(t){return'"'+t.value+'"'})),h=(o&&o.children||[]).map((function(t){return'"'+t.key.value+'"'}));l=s?e.push(!0):new c,this._emitLines("var "+a+" = runtime.makeMacro(","["+p.join(", ")+"], ","["+h.join(", ")+"], ","function ("+u.join(", ")+") {","var callerFrame = frame;","frame = "+(s?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),n.forEach((function(t){i._emitLine('frame.set("'+t.value+'", l_'+t.value+");"),l.set(t.value,"l_"+t.value)})),o&&o.children.forEach((function(t){var e=t.key.value;i._emit('frame.set("'+e+'", '),i._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+e+'")'),i._emit(' ? kwargs["'+e+'"] : '),i._compileExpression(t.value,l),i._emit(");")}));var d=this._pushBuffer();return this._withScopedSyntax((function(){i.compile(t.body,l)})),this._emitLine("frame = "+(s?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+d+");"),this._emitLine("});"),this._popBuffer(),a},a.compileMacro=function(t,e){var i=this._compileMacro(t),n=t.name.value;e.set(n,i),e.parent?this._emitLine('frame.set("'+n+'", '+i+");"):("_"!==t.name.value.charAt(0)&&this._emitLine('context.addExport("'+n+'");'),this._emitLine('context.setVariable("'+n+'", '+i+");"))},a.compileCaller=function(t,e){this._emit("(function (){");var i=this._compileMacro(t,e);this._emit("return "+i+";})()")},a._compileGetTemplate=function(t,e,i,n){var o=this._tmpid(),a=this._templateName(),r=this._makeCallback(o),s=i?"true":"false",c=n?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(t.template,e),this._emitLine(", "+s+", "+a+", "+c+", "+r),o},a.compileImport=function(t,e){var i=t.target.value,n=this._compileGetTemplate(t,e,!1,!1);this._addScopeLevel(),this._emitLine(n+".getExported("+(t.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(n)),this._addScopeLevel(),e.set(i,n),e.parent?this._emitLine('frame.set("'+i+'", '+n+");"):this._emitLine('context.setVariable("'+i+'", '+n+");")},a.compileFromImport=function(t,e){var i=this,n=this._compileGetTemplate(t,e,!1,!1);this._addScopeLevel(),this._emitLine(n+".getExported("+(t.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(n)),this._addScopeLevel(),t.names.children.forEach((function(t){var o,a,s=i._tmpid();t instanceof r.Pair?(o=t.key.value,a=t.value.value):a=o=t.value,i._emitLine("if(Object.prototype.hasOwnProperty.call("+n+', "'+o+'")) {'),i._emitLine("var "+s+" = "+n+"."+o+";"),i._emitLine("} else {"),i._emitLine("cb(new Error(\"cannot import '"+o+"'\")); return;"),i._emitLine("}"),e.set(a,s),e.parent?i._emitLine('frame.set("'+a+'", '+s+");"):i._emitLine('context.setVariable("'+a+'", '+s+");")}))},a.compileBlock=function(t){var e=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+t.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(e)),this._emitLine(this.buffer+" += "+e+";"),this._addScopeLevel()},a.compileSuper=function(t,e){var i=t.blockName.value,n=t.symbol.value,o=this._makeCallback(n);this._emitLine('context.getSuper(env, "'+i+'", b_'+i+", frame, runtime, "+o),this._emitLine(n+" = runtime.markSafe("+n+");"),this._addScopeLevel(),e.set(n,n)},a.compileExtends=function(t,e){var i=this._tmpid(),n=this._compileGetTemplate(t,e,!0,!1);this._emitLine("parentTemplate = "+n),this._emitLine("for(var "+i+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+i+", parentTemplate.blocks["+i+"]);"),this._emitLine("}"),this._addScopeLevel()},a.compileInclude=function(t,e){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var i=this._compileGetTemplate(t,e,!1,t.ignoreMissing);this._emitLine("callback(null,"+i+");});"),this._emitLine("});");var n=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(n)),this._emitLine("callback(null,"+n+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},a.compileTemplateData=function(t,e){this.compileLiteral(t,e)},a.compileCapture=function(t,e){var i=this,n=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=n},a.compileOutput=function(t,e){var i=this;t.children.forEach((function(n){n instanceof r.TemplateData?n.value&&(i._emit(i.buffer+" += "),i.compileLiteral(n,e),i._emitLine(";")):(i._emit(i.buffer+" += runtime.suppressValue("),i.throwOnUndefined&&i._emit("runtime.ensureDefined("),i.compile(n,e),i.throwOnUndefined&&i._emit(","+t.lineno+","+t.colno+")"),i._emit(", env.opts.autoescape);\n"))}))},a.compileRoot=function(t,e){var i=this;e&&this.fail("compileRoot: root node can't have frame"),e=new c,this._emitFuncBegin(t,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(t,e),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var n=[],o=t.findAll(r.Block);o.forEach((function(t,e){var o=t.name.value;if(-1!==n.indexOf(o))throw new Error('Block "'+o+'" defined more than once.');n.push(o),i._emitFuncBegin(t,"b_"+o);var a=new c;i._emitLine("var frame = frame.push(true);"),i.compile(t.body,a),i._emitFuncEnd()})),this._emitLine("return {"),o.forEach((function(t,e){var n="b_"+t.name.value;i._emitLine(n+": "+n+",")})),this._emitLine("root: root\n};")},a.compile=function(t,e){var i=this["compile"+t.typename];i?i.call(this,t,e):this.fail("compile: Cannot compile node: "+t.typename,t.lineno,t.colno)},a.getCode=function(){return this.codebuf.join("")},o}(l);t.exports={compile:function(t,e,i,n,r){void 0===r&&(r={});var s=new p(n,r.throwOnUndefined),c=(i||[]).map((function(t){return t.preprocess})).filter((function(t){return!!t})).reduce((function(t,e){return e(t)}),t);return s.compile(a.transform(o.parse(c,i,r),e,n)),s.getCode()},Compiler:p}},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=i(4),a=i(1).EmitterObj;t.exports=function(t){var e,i;function a(){return t.apply(this,arguments)||this}i=t,(e=a).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i);var r=a.prototype;return r.resolve=function(t,e){return o.resolve(o.dirname(t),e)},r.isRelative=function(t){return 0===t.indexOf("./")||0===t.indexOf("../")},a}(a)},function(t,e,i){"use strict";function n(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}var a=i(12),r=i(15),s=i(0),c=i(5),l=i(18),u=i(10),p=u.FileSystemLoader,h=u.WebLoader,d=u.PrecompiledLoader,m=i(20),f=i(21),y=i(1),_=y.Obj,b=y.EmitterObj,v=i(2),g=v.handleError,k=v.Frame,w=i(22);function C(t,e,i){a((function(){t(e,i)}))}var E={type:"code",obj:{root:function(t,e,i,n,o){try{o(null,"")}catch(t){o(g(t,null,null))}}}},x=function(t){function e(){return t.apply(this,arguments)||this}n(e,t);var i=e.prototype;return i.init=function(t,e){var i=this;e=this.opts=e||{},this.opts.dev=!!e.dev,this.opts.autoescape=null==e.autoescape||e.autoescape,this.opts.throwOnUndefined=!!e.throwOnUndefined,this.opts.trimBlocks=!!e.trimBlocks,this.opts.lstripBlocks=!!e.lstripBlocks,this.loaders=[],t?this.loaders=s.isArray(t)?t:[t]:p?this.loaders=[new p("views")]:h&&(this.loaders=[new h("/views")]),"undefined"!=typeof window&&window.nunjucksPrecompiled&&this.loaders.unshift(new d(window.nunjucksPrecompiled)),this._initLoaders(),this.globals=f(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],s._entries(l).forEach((function(t){var e=t[0],n=t[1];return i.addFilter(e,n)})),s._entries(m).forEach((function(t){var e=t[0],n=t[1];return i.addTest(e,n)}))},i._initLoaders=function(){var t=this;this.loaders.forEach((function(e){e.cache={},"function"==typeof e.on&&(e.on("update",(function(i,n){e.cache[i]=null,t.emit("update",i,n,e)})),e.on("load",(function(i,n){t.emit("load",i,n,e)})))}))},i.invalidateCache=function(){this.loaders.forEach((function(t){t.cache={}}))},i.addExtension=function(t,e){return e.__name=t,this.extensions[t]=e,this.extensionsList.push(e),this},i.removeExtension=function(t){var e=this.getExtension(t);e&&(this.extensionsList=s.without(this.extensionsList,e),delete this.extensions[t])},i.getExtension=function(t){return this.extensions[t]},i.hasExtension=function(t){return!!this.extensions[t]},i.addGlobal=function(t,e){return this.globals[t]=e,this},i.getGlobal=function(t){if(void 0===this.globals[t])throw new Error("global not found: "+t);return this.globals[t]},i.addFilter=function(t,e,i){var n=e;return i&&this.asyncFilters.push(t),this.filters[t]=n,this},i.getFilter=function(t){if(!this.filters[t])throw new Error("filter not found: "+t);return this.filters[t]},i.addTest=function(t,e){return this.tests[t]=e,this},i.getTest=function(t){if(!this.tests[t])throw new Error("test not found: "+t);return this.tests[t]},i.resolveTemplate=function(t,e,i){return t.isRelative&&e&&t.isRelative(i)&&t.resolve?t.resolve(e,i):i},i.getTemplate=function(t,e,i,n,o){var a,r=this,c=this,l=null;if(t&&t.raw&&(t=t.raw),s.isFunction(i)&&(o=i,i=null,e=e||!1),s.isFunction(e)&&(o=e,e=!1),t instanceof T)l=t;else{if("string"!=typeof t)throw new Error("template names must be a string: "+t);for(var u=0;u0&&!this.skip(o.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",t.lineno,t.colno);var s=this.parsePrimary();if("_"===s.value.charAt(0)&&this.fail("parseFrom: names starting with an underscore cannot be imported",s.lineno,s.colno),this.skipSymbol("as")){var c=this.parsePrimary();n.addChild(new a.Pair(s.lineno,s.colno,s,c))}else n.addChild(s);i=this.parseWithContext()}return new a.FromImport(t.lineno,t.colno,e,n,i)},c.parseBlock=function(){var t=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",t.lineno,t.colno);var e=new a.Block(t.lineno,t.colno);e.name=this.parsePrimary(),e.name instanceof a.Symbol||this.fail("parseBlock: variable name expected",t.lineno,t.colno),this.advanceAfterBlockEnd(t.value),e.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(e.name.value);var i=this.peekToken();return i||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(i.value),e},c.parseExtends=function(){var t="extends",e=this.peekToken();this.skipSymbol(t)||this.fail("parseTemplateRef: expected "+t);var i=new a.Extends(e.lineno,e.colno);return i.template=this.parseExpression(),this.advanceAfterBlockEnd(e.value),i},c.parseInclude=function(){var t="include",e=this.peekToken();this.skipSymbol(t)||this.fail("parseInclude: expected "+t);var i=new a.Include(e.lineno,e.colno);return i.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(i.ignoreMissing=!0),this.advanceAfterBlockEnd(e.value),i},c.parseIf=function(){var t,e=this.peekToken();this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?t=new a.If(e.lineno,e.colno):this.skipSymbol("ifAsync")?t=new a.IfAsync(e.lineno,e.colno):this.fail("parseIf: expected if, elif, or elseif",e.lineno,e.colno),t.cond=this.parseExpression(),this.advanceAfterBlockEnd(e.value),t.body=this.parseUntilBlocks("elif","elseif","else","endif");var i=this.peekToken();switch(i&&i.value){case"elseif":case"elif":t.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),t.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":t.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return t},c.parseSet=function(){var t=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",t.lineno,t.colno);for(var e,i=new a.Set(t.lineno,t.colno,[]);(e=this.parsePrimary())&&(i.targets.push(e),this.skip(o.TOKEN_COMMA)););return this.skipValue(o.TOKEN_OPERATOR,"=")?(i.value=this.parseExpression(),this.advanceAfterBlockEnd(t.value)):this.skip(o.TOKEN_BLOCK_END)?(i.body=new a.Capture(t.lineno,t.colno,this.parseUntilBlocks("endset")),i.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",t.lineno,t.colno),i},c.parseSwitch=function(){var t="switch",e="endswitch",i="case",n="default",o=this.peekToken();this.skipSymbol(t)||this.skipSymbol(i)||this.skipSymbol(n)||this.fail('parseSwitch: expected "switch," "case" or "default"',o.lineno,o.colno);var r=this.parseExpression();this.advanceAfterBlockEnd(t),this.parseUntilBlocks(i,n,e);var s,c=this.peekToken(),l=[];do{this.skipSymbol(i);var u=this.parseExpression();this.advanceAfterBlockEnd(t);var p=this.parseUntilBlocks(i,n,e);l.push(new a.Case(c.line,c.col,u,p)),c=this.peekToken()}while(c&&c.value===i);switch(c.value){case n:this.advanceAfterBlockEnd(),s=this.parseUntilBlocks(e),this.advanceAfterBlockEnd();break;case e:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new a.Switch(o.lineno,o.colno,r,l,s)},c.parseStatement=function(){var t=this.peekToken();if(t.type!==o.TOKEN_SYMBOL&&this.fail("tag name expected",t.lineno,t.colno),this.breakOnBlocks&&-1!==s.indexOf(this.breakOnBlocks,t.value))return null;switch(t.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var e=0;e0;){var c=r[0],l=r[1],u=r[2];u===t?n+=1:u===e&&(n-=1),0===n?(o+=l,this.tokens.backN(c.length-l.length)):o+=c}return new a.Output(s.lineno,s.colno,[new a.TemplateData(s.lineno,s.colno,o)])},c.parsePostfix=function(t){for(var e,i=this.peekToken();i;){if(i.type===o.TOKEN_LEFT_PAREN)t=new a.FunCall(i.lineno,i.colno,t,this.parseSignature());else if(i.type===o.TOKEN_LEFT_BRACKET)(e=this.parseAggregate()).children.length>1&&this.fail("invalid index"),t=new a.LookupVal(i.lineno,i.colno,t,e.children[0]);else{if(i.type!==o.TOKEN_OPERATOR||"."!==i.value)break;this.nextToken();var n=this.nextToken();n.type!==o.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+n.value,n.lineno,n.colno),e=new a.Literal(n.lineno,n.colno,n.value),t=new a.LookupVal(i.lineno,i.colno,t,e)}i=this.peekToken()}return t},c.parseExpression=function(){return this.parseInlineIf()},c.parseInlineIf=function(){var t=this.parseOr();if(this.skipSymbol("if")){var e=this.parseOr(),i=t;(t=new a.InlineIf(t.lineno,t.colno)).body=i,t.cond=e,this.skipSymbol("else")?t.else_=this.parseOr():t.else_=null}return t},c.parseOr=function(){for(var t=this.parseAnd();this.skipSymbol("or");){var e=this.parseAnd();t=new a.Or(t.lineno,t.colno,t,e)}return t},c.parseAnd=function(){for(var t=this.parseNot();this.skipSymbol("and");){var e=this.parseNot();t=new a.And(t.lineno,t.colno,t,e)}return t},c.parseNot=function(){var t=this.peekToken();return this.skipSymbol("not")?new a.Not(t.lineno,t.colno,this.parseNot()):this.parseIn()},c.parseIn=function(){for(var t=this.parseIs();;){var e=this.nextToken();if(!e)break;var i=e.type===o.TOKEN_SYMBOL&&"not"===e.value;if(i||this.pushToken(e),!this.skipSymbol("in")){i&&this.pushToken(e);break}var n=this.parseIs();t=new a.In(t.lineno,t.colno,t,n),i&&(t=new a.Not(t.lineno,t.colno,t))}return t},c.parseIs=function(){var t=this.parseCompare();if(this.skipSymbol("is")){var e=this.skipSymbol("not"),i=this.parseCompare();t=new a.Is(t.lineno,t.colno,t,i),e&&(t=new a.Not(t.lineno,t.colno,t))}return t},c.parseCompare=function(){for(var t=["==","===","!=","!==","<",">","<=",">="],e=this.parseConcat(),i=[];;){var n=this.nextToken();if(!n)break;if(-1===t.indexOf(n.value)){this.pushToken(n);break}i.push(new a.CompareOperand(n.lineno,n.colno,this.parseConcat(),n.value))}return i.length?new a.Compare(i[0].lineno,i[0].colno,e,i):e},c.parseConcat=function(){for(var t=this.parseAdd();this.skipValue(o.TOKEN_TILDE,"~");){var e=this.parseAdd();t=new a.Concat(t.lineno,t.colno,t,e)}return t},c.parseAdd=function(){for(var t=this.parseSub();this.skipValue(o.TOKEN_OPERATOR,"+");){var e=this.parseSub();t=new a.Add(t.lineno,t.colno,t,e)}return t},c.parseSub=function(){for(var t=this.parseMul();this.skipValue(o.TOKEN_OPERATOR,"-");){var e=this.parseMul();t=new a.Sub(t.lineno,t.colno,t,e)}return t},c.parseMul=function(){for(var t=this.parseDiv();this.skipValue(o.TOKEN_OPERATOR,"*");){var e=this.parseDiv();t=new a.Mul(t.lineno,t.colno,t,e)}return t},c.parseDiv=function(){for(var t=this.parseFloorDiv();this.skipValue(o.TOKEN_OPERATOR,"/");){var e=this.parseFloorDiv();t=new a.Div(t.lineno,t.colno,t,e)}return t},c.parseFloorDiv=function(){for(var t=this.parseMod();this.skipValue(o.TOKEN_OPERATOR,"//");){var e=this.parseMod();t=new a.FloorDiv(t.lineno,t.colno,t,e)}return t},c.parseMod=function(){for(var t=this.parsePow();this.skipValue(o.TOKEN_OPERATOR,"%");){var e=this.parsePow();t=new a.Mod(t.lineno,t.colno,t,e)}return t},c.parsePow=function(){for(var t=this.parseUnary();this.skipValue(o.TOKEN_OPERATOR,"**");){var e=this.parseUnary();t=new a.Pow(t.lineno,t.colno,t,e)}return t},c.parseUnary=function(t){var e,i=this.peekToken();return e=this.skipValue(o.TOKEN_OPERATOR,"-")?new a.Neg(i.lineno,i.colno,this.parseUnary(!0)):this.skipValue(o.TOKEN_OPERATOR,"+")?new a.Pos(i.lineno,i.colno,this.parseUnary(!0)):this.parsePrimary(),t||(e=this.parseFilter(e)),e},c.parsePrimary=function(t){var e,i=this.nextToken(),n=null;if(i?i.type===o.TOKEN_STRING?e=i.value:i.type===o.TOKEN_INT?e=parseInt(i.value,10):i.type===o.TOKEN_FLOAT?e=parseFloat(i.value):i.type===o.TOKEN_BOOLEAN?"true"===i.value?e=!0:"false"===i.value?e=!1:this.fail("invalid boolean: "+i.value,i.lineno,i.colno):i.type===o.TOKEN_NONE?e=null:i.type===o.TOKEN_REGEX&&(e=new RegExp(i.value.body,i.value.flags)):this.fail("expected expression, got end of file"),void 0!==e?n=new a.Literal(i.lineno,i.colno,e):i.type===o.TOKEN_SYMBOL?n=new a.Symbol(i.lineno,i.colno,i.value):(this.pushToken(i),n=this.parseAggregate()),t||(n=this.parsePostfix(n)),n)return n;throw this.error("unexpected token: "+i.value,i.lineno,i.colno)},c.parseFilterName=function(){for(var t=this.expect(o.TOKEN_SYMBOL),e=t.value;this.skipValue(o.TOKEN_OPERATOR,".");)e+="."+this.expect(o.TOKEN_SYMBOL).value;return new a.Symbol(t.lineno,t.colno,e)},c.parseFilterArgs=function(t){return this.peekToken().type===o.TOKEN_LEFT_PAREN?this.parsePostfix(t).args.children:[]},c.parseFilter=function(t){for(;this.skip(o.TOKEN_PIPE);){var e=this.parseFilterName();t=new a.Filter(e.lineno,e.colno,e,new a.NodeList(e.lineno,e.colno,[t].concat(this.parseFilterArgs(t))))}return t},c.parseFilterStatement=function(){var t=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var e=this.parseFilterName(),i=this.parseFilterArgs(e);this.advanceAfterBlockEnd(t.value);var n=new a.Capture(e.lineno,e.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var o=new a.Filter(e.lineno,e.colno,e,new a.NodeList(e.lineno,e.colno,[n].concat(i)));return new a.Output(e.lineno,e.colno,[o])},c.parseAggregate=function(){var t,e=this.nextToken();switch(e.type){case o.TOKEN_LEFT_PAREN:t=new a.Group(e.lineno,e.colno);break;case o.TOKEN_LEFT_BRACKET:t=new a.Array(e.lineno,e.colno);break;case o.TOKEN_LEFT_CURLY:t=new a.Dict(e.lineno,e.colno);break;default:return null}for(;;){var i=this.peekToken().type;if(i===o.TOKEN_RIGHT_PAREN||i===o.TOKEN_RIGHT_BRACKET||i===o.TOKEN_RIGHT_CURLY){this.nextToken();break}if(t.children.length>0&&(this.skip(o.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",e.lineno,e.colno)),t instanceof a.Dict){var n=this.parsePrimary();this.skip(o.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",e.lineno,e.colno);var r=this.parseExpression();t.addChild(new a.Pair(n.lineno,n.colno,n,r))}else{var s=this.parseExpression();t.addChild(s)}}return t},c.parseSignature=function(t,e){var i=this.peekToken();if(!e&&i.type!==o.TOKEN_LEFT_PAREN){if(t)return null;this.fail("expected arguments",i.lineno,i.colno)}i.type===o.TOKEN_LEFT_PAREN&&(i=this.nextToken());for(var n=new a.NodeList(i.lineno,i.colno),r=new a.KeywordArgs(i.lineno,i.colno),s=!1;;){if(i=this.peekToken(),!e&&i.type===o.TOKEN_RIGHT_PAREN){this.nextToken();break}if(e&&i.type===o.TOKEN_BLOCK_END)break;if(s&&!this.skip(o.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",i.lineno,i.colno);else{var c=this.parseExpression();this.skipValue(o.TOKEN_OPERATOR,"=")?r.addChild(new a.Pair(c.lineno,c.colno,c,this.parseExpression())):n.addChild(c)}s=!0}return r.children.length&&n.addChild(r),n},c.parseUntilBlocks=function(){for(var t=this.breakOnBlocks,e=arguments.length,i=new Array(e),n=0;n=","//","**"],D=M+this.current();switch(-1!==n.indexOf(R,D)&&(this.forward(),M=D,-1!==n.indexOf(R,D+this.current())&&(M=D+this.current(),this.forward())),M){case"(":P=m;break;case")":P=f;break;case"[":P=y;break;case"]":P=_;break;case"{":P=b;break;case"}":P=v;break;case",":P=k;break;case":":P=w;break;case"~":P=C;break;case"|":P=E;break;default:P=g}return O(P,M,e,i)}if((t=this._extractUntil(o+a)).match(/^[-+]?[0-9]+$/)){if("."===this.current()){this.forward();var F=this._extract("0123456789");return O(x,t+"."+F,e,i)}return O("int",t,e,i)}if(t.match(/^(true|false)$/))return O(L,t,e,i);if("none"===t)return O(T,t,e,i);if("null"===t)return O(T,t,e,i);if(t)return O(A,t,e,i);throw new Error("Unexpected value while parsing: "+t)}var K,j=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if((t=this._extractString(this.tags.BLOCK_START+"-"))||(t=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,O(l,t,e,i);if((t=this._extractString(this.tags.VARIABLE_START+"-"))||(t=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,O(p,t,e,i);t="";var V=!1;for(this._matches(this.tags.COMMENT_START)&&(V=!0,t=this._extractString(this.tags.COMMENT_START));null!==(K=this._extractUntil(j));){if(t+=K,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!V){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=t.length){var B=t.slice(-this.colno);if(/^\s+$/.test(B)&&!(t=t.slice(0,-this.colno)).length)return this.nextToken()}break}if(this._matches(this.tags.COMMENT_END)){if(!V)throw new Error("unexpected end of comment");t+=this._extractString(this.tags.COMMENT_END);break}t+=this.current(),this.forward()}if(null===K&&V)throw new Error("expected end of comment, got end of file");return O(V?d:c,t,e,i)},e._parseString=function(t){this.forward();for(var e="";!this.isFinished()&&this.current()!==t;){var i=this.current();if("\\"===i){switch(this.forward(),this.current()){case"n":e+="\n";break;case"t":e+="\t";break;case"r":e+="\r";break;default:e+=this.current()}this.forward()}else e+=i,this.forward()}return this.forward(),e},e._matches=function(t){return this.index+t.length>this.len?null:this.str.slice(this.index,this.index+t.length)===t},e._extractString=function(t){return this._matches(t)?(this.forwardN(t.length),t):null},e._extractUntil=function(t){return this._extractMatching(!0,t||"")},e._extract=function(t){return this._extractMatching(!1,t)},e._extractMatching=function(t,e){if(this.isFinished())return null;var i=e.indexOf(this.current());if(t&&-1===i||!t&&-1!==i){var n=this.current();this.forward();for(var o=e.indexOf(this.current());(t&&-1===o||!t&&-1!==o)&&!this.isFinished();)n+=this.current(),this.forward(),o=e.indexOf(this.current());return n}return""},e._extractRegex=function(t){var e=this.currentStr().match(t);return e?(this.forwardN(e[0].length),e):null},e.isFinished=function(){return this.index>=this.len},e.forwardN=function(t){for(var e=0;e1024){for(var e=0,i=o.length-a;e0&&r.length>o&&!r.warned){r.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=r.length,s=c,console&&console.warn&&console.warn(s)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,i){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:i},o=h.bind(n);return o.listener=i,n.wrapFn=o,o}function m(t,e,i){var n=t._events;if(void 0===n)return[];var o=n[e];return void 0===o?[]:"function"==typeof o?i?[o.listener||o]:[o]:i?function(t){for(var e=new Array(t.length),i=0;i0&&(r=e[0]),r instanceof Error)throw r;var s=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw s.context=r,s}var c=o[t];if(void 0===c)return!1;if("function"==typeof c)a(c,this,e);else{var l=c.length,u=y(c,l);for(i=0;i=0;a--)if(i[a]===e||i[a].listener===e){r=i[a].listener,o=a;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},s.prototype.listeners=function(t){return m(this,t,!0)},s.prototype.rawListeners=function(t){return m(this,t,!1)},s.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){"use strict";var n=i(3),o=i(0),a=0;function r(){return"hole_"+a++}function s(t,e){for(var i=null,n=0;n=e)return t;var i=e-t.length,r=n.repeat(" ",i/2-i%2),s=n.repeat(" ",i/2);return o.copySafeness(t,r+t+s)},e.default=function(t,e,i){return i?t||e:void 0!==t?t:e},e.dictsort=function(t,e,i){if(!n.isObject(t))throw new n.TemplateError("dictsort filter: val must be an object");var o,a=[];for(var r in t)a.push([r,t[r]]);if(void 0===i||"key"===i)o=0;else{if("value"!==i)throw new n.TemplateError("dictsort filter: You can only sort by either key or value");o=1}return a.sort((function(t,i){var a=t[o],r=i[o];return e||(n.isString(a)&&(a=a.toUpperCase()),n.isString(r)&&(r=r.toUpperCase())),a>r?1:a===r?0:-1})),a},e.dump=function(t,e){return JSON.stringify(t,null,e)},e.escape=function(t){return t instanceof o.SafeString?t:(t=null==t?"":t,o.markSafe(n.escape(t.toString())))},e.safe=function(t){return t instanceof o.SafeString?t:(t=null==t?"":t,o.markSafe(t.toString()))},e.first=function(t){return t[0]},e.forceescape=function(t){return t=null==t?"":t,o.markSafe(n.escape(t.toString()))},e.groupby=function(t,e){return n.groupBy(t,e,this.env.opts.throwOnUndefined)},e.indent=function(t,e,i){if(""===(t=a(t,"")))return"";e=e||4;var r=t.split("\n"),s=n.repeat(" ",e),c=r.map((function(t,e){return 0!==e||i?""+s+t:t})).join("\n");return o.copySafeness(t,c)},e.join=function(t,e,i){return e=e||"",i&&(t=n.map(t,(function(t){return t[i]}))),t.join(e)},e.last=function(t){return t[t.length-1]},e.length=function(t){var e=a(t,"");return void 0!==e?"function"==typeof Map&&e instanceof Map||"function"==typeof Set&&e instanceof Set?e.size:!n.isObject(e)||e instanceof o.SafeString?e.length:n.keys(e).length:0},e.list=c,e.lower=function(t){return(t=a(t,"")).toLowerCase()},e.nl2br=function(t){return null==t?"":o.copySafeness(t,t.replace(/\r\n|\n/g,"
\n"))},e.random=function(t){return t[Math.floor(Math.random()*t.length)]},e.reject=l(!1),e.rejectattr=function(t,e){return t.filter((function(t){return!t[e]}))},e.select=l(!0),e.selectattr=function(t,e){return t.filter((function(t){return!!t[e]}))},e.replace=function(t,e,i,n){var a=t;if(e instanceof RegExp)return t.replace(e,i);void 0===n&&(n=-1);var r="";if("number"==typeof e)e=""+e;else if("string"!=typeof e)return t;if("number"==typeof t&&(t=""+t),"string"!=typeof t&&!(t instanceof o.SafeString))return t;if(""===e)return r=i+t.split("").join(i)+i,o.copySafeness(t,r);var s=t.indexOf(e);if(0===n||-1===s)return t;for(var c=0,l=0;s>-1&&(-1===n||l=o&&u.push(i),a.push(u)}return a},e.sum=function(t,e,i){return void 0===i&&(i=0),e&&(t=n.map(t,(function(t){return t[e]}))),i+t.reduce((function(t,e){return t+e}),0)},e.sort=o.makeMacro(["value","reverse","case_sensitive","attribute"],[],(function(t,e,i,o){var a=this,r=n.map(t,(function(t){return t})),s=n.getAttrGetter(o);return r.sort((function(t,r){var c=o?s(t):t,l=o?s(r):r;if(a.env.opts.throwOnUndefined&&o&&(void 0===c||void 0===l))throw new TypeError('sort: attribute "'+o+'" resolved to undefined');return!i&&n.isString(c)&&n.isString(l)&&(c=c.toLowerCase(),l=l.toLowerCase()),cl?e?-1:1:0})),r})),e.string=function(t){return o.copySafeness(t,t)},e.striptags=function(t,e){var i,n=u((t=a(t,"")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi,""));return i=e?n.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,"\n").replace(/\n\n\n+/g,"\n\n"):n.replace(/\s+/gi," "),o.copySafeness(t,i)},e.title=function(t){var e=(t=a(t,"")).split(" ").map((function(t){return s(t)}));return o.copySafeness(t,e.join(" "))},e.trim=u,e.truncate=function(t,e,i,n){var r=t;if(e=e||255,(t=a(t,"")).length<=e)return t;if(i)t=t.substring(0,e);else{var s=t.lastIndexOf(" ",e);-1===s&&(s=e),t=t.substring(0,s)}return t+=null!=n?n:"...",o.copySafeness(r,t)},e.upper=function(t){return(t=a(t,"")).toUpperCase()},e.urlencode=function(t){var e=encodeURIComponent;return n.isString(t)?e(t):(n.isArray(t)?t:n._entries(t)).map((function(t){var i=t[0],n=t[1];return e(i)+"="+e(n)})).join("&")};var p=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,h=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,d=/^https?:\/\/.*$/,m=/^www\./,f=/\.(?:org|net|com)(?:\:|\/|$)/;e.urlize=function(t,e,i){r(e)&&(e=1/0);var n=!0===i?' rel="nofollow"':"";return t.split(/(\s+)/).filter((function(t){return t&&t.length})).map((function(t){var i=t.match(p),o=i?i[1]:t,a=o.substr(0,e);return d.test(o)?'"+a+"":m.test(o)?'"+a+"":h.test(o)?''+o+"":f.test(o)?'"+a+"":t})).join("")},e.wordcount=function(t){var e=(t=a(t,""))?t.match(/\w+/g):null;return e?e.length:null},e.float=function(t,e){var i=parseFloat(t);return r(i)?e:i};var y=o.makeMacro(["value","default","base"],[],(function(t,e,i){void 0===i&&(i=10);var n=parseInt(t,i);return r(n)?e:n}));e.int=y,e.d=e.default,e.e=e.escape},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=function(t){var e,i;function o(e){var i;return(i=t.call(this)||this).precompiled=e||{},i}return i=t,(e=o).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i),o.prototype.getSource=function(t){return this.precompiled[t]?{src:{type:"code",obj:this.precompiled[t]},path:t}:null},o}(i(6));t.exports={PrecompiledLoader:o}},function(t,e,i){"use strict";var n=i(2).SafeString;e.callable=function(t){return"function"==typeof t},e.defined=function(t){return void 0!==t},e.divisibleby=function(t,e){return t%e==0},e.escaped=function(t){return t instanceof n},e.equalto=function(t,e){return t===e},e.eq=e.equalto,e.sameas=e.equalto,e.even=function(t){return t%2==0},e.falsy=function(t){return!t},e.ge=function(t,e){return t>=e},e.greaterthan=function(t,e){return t>e},e.gt=e.greaterthan,e.le=function(t,e){return t<=e},e.lessthan=function(t,e){return t0)for(var o=t;oe;a+=i)n.push(a);return n},cycler:function(){return t=Array.prototype.slice.call(arguments),e=-1,{current:null,reset:function(){e=-1,this.current=null},next:function(){return++e>=t.length&&(e=0),this.current=t[e],this.current}};var t,e},joiner:function(t){return function(t){t=t||",";var e=!0;return function(){var i=e?"":t;return e=!1,i}}(t)}}}},function(t,e,i){var n=i(4);t.exports=function(t,e){function i(t,e){if(this.name=t,this.path=t,this.defaultEngine=e.defaultEngine,this.ext=n.extname(t),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=("."!==this.defaultEngine[0]?".":"")+this.defaultEngine)}return i.prototype.render=function(e,i){t.render(this.name,e,i)},e.set("view",i),e.set("nunjucksEnv",t),t}},function(t,e,i){"use strict";var n=i(4),o=i(4),a=i(0)._prettifyError,r=i(5),s=i(7).Environment,c=i(24);function l(t,e){return!!Array.isArray(e)&&e.some((function(e){return t.match(e)}))}function u(t,e){(e=e||{}).isString=!0;var i=e.env||new s([]),n=e.wrapper||c;if(!e.name)throw new Error('the "name" option is required when compiling a string');return n([p(t,e.name,i)],e)}function p(t,e,i){var n,o=(i=i||new s([])).asyncFilters,c=i.extensionsList;e=e.replace(/\\/g,"/");try{n=r.compile(t,o,c,e,i.opts)}catch(t){throw a(e,!1,t)}return{name:e,template:n}}t.exports={precompile:function(t,e){var i=(e=e||{}).env||new s([]),a=e.wrapper||c;if(e.isString)return u(t,e);var r=n.existsSync(t)&&n.statSync(t),h=[],d=[];if(r.isFile())h.push(p(n.readFileSync(t,"utf-8"),e.name||t,i));else if(r.isDirectory()){!function i(a){n.readdirSync(a).forEach((function(r){var s=o.join(a,r),c=s.substr(o.join(t,"/").length),u=n.statSync(s);u&&u.isDirectory()?l(c+="/",e.exclude)||i(s):l(c,e.include)&&d.push(s)}))}(t);for(var m=0;mt.length||o>0&&r>=n||o<0&&r<=n);r+=o)a.push(i.memberLookup(t,r));return a}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var m={pop:function(t){if(void 0===t)return this.pop();if(t>=this.length||t<0)throw new Error("KeyError");return this.splice(t,1)},append:function(t){return this.push(t)},remove:function(t){for(var e=0;e{"use strict";const t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),o=new WeakMap;class a{constructor(t,e,i){if(this._$cssResult$=!0,i!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const i=this.t;if(e&&void 0===t){const e=void 0!==i&&1===i.length;e&&(t=o.get(i)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(i,t))}return t}toString(){return this.cssText}}const r=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new a(i,t,n)},s=(i,n)=>{if(e)i.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of n){const n=document.createElement("style"),o=t.litNonce;void 0!==o&&n.setAttribute("nonce",o),n.textContent=e.cssText,i.appendChild(n)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new a("string"==typeof t?t:t+"",void 0,n))(e)})(t):t,{is:l,defineProperty:u,getOwnPropertyDescriptor:p,getOwnPropertyNames:h,getOwnPropertySymbols:d,getPrototypeOf:m}=Object,f=globalThis,y=f.trustedTypes,_=y?y.emptyScript:"",b=f.reactiveElementPolyfillSupport,v=(t,e)=>t,g={toAttribute(t,e){switch(e){case Boolean:t=t?_:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},k=(t,e)=>!l(t,e),w={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:k};Symbol.metadata??=Symbol("metadata"),f.litPropertyMetadata??=new WeakMap;class C extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=w){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),n=this.getPropertyDescriptor(t,i,e);void 0!==n&&u(this.prototype,t,n)}}static getPropertyDescriptor(t,e,i){const{get:n,set:o}=p(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return n?.call(this)},set(e){const a=n?.call(this);o.call(this,e),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??w}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const t=m(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const t=this.properties,e=[...h(t),...d(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(c(t))}else void 0!==t&&e.push(c(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$Eg=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$ES(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$E_??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$E_?.delete(t)}_$ES(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$E_?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$E_?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e){const i=this.constructor.elementProperties.get(t),n=this.constructor._$Eu(t,i);if(void 0!==n&&!0===i.reflect){const o=(void 0!==i.converter?.toAttribute?i.converter:g).toAttribute(e,i.type);this._$Em=t,null==o?this.removeAttribute(n):this.setAttribute(n,o),this._$Em=null}}_$AK(t,e){const i=this.constructor,n=i._$Eh.get(t);if(void 0!==n&&this._$Em!==n){const t=i.getPropertyOptions(n),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:g;this._$Em=n,this[n]=o.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??k)(this[t],e))return;this.C(t,e,i)}!1===this.isUpdatePending&&(this._$Eg=this._$EP())}C(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$ET??=new Set).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.C(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$E_?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$Ej()}catch(e){throw t=!1,this._$Ej(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$E_?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ej(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$ET&&=this._$ET.forEach((t=>this._$EO(t,this[t]))),this._$Ej()}updated(t){}firstUpdated(t){}}C.elementStyles=[],C.shadowRootOptions={mode:"open"},C[v("elementProperties")]=new Map,C[v("finalized")]=new Map,b?.({ReactiveElement:C}),(f.reactiveElementVersions??=[]).push("2.0.3");const E=globalThis,x=E.trustedTypes,L=x?x.createPolicy("lit-html",{createHTML:t=>t}):void 0,T="$lit$",A=`lit$${(Math.random()+"").slice(9)}$`,S="?"+A,O=`<${S}>`,M=document,$=()=>M.createComment(""),I=t=>null===t||"object"!=typeof t&&"function"!=typeof t,N=Array.isArray,P="[ \t\n\f\r]",R=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,D=/-->/g,F=/>/g,K=RegExp(`>|${P}(?:([^\\s"'>=/]+)(${P}*=${P}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),j=/'/g,V=/"/g,B=/^(?:script|style|textarea|title)$/i,U=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),H=U(1),Y=(U(2),Symbol.for("lit-noChange")),Z=Symbol.for("lit-nothing"),z=new WeakMap,W=M.createTreeWalker(M,129);function G(t,e){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==L?L.createHTML(e):e}const q=(t,e)=>{const i=t.length-1,n=[];let o,a=2===e?"":"",r=R;for(let e=0;e"===c[0]?(r=o??R,l=-1):void 0===c[1]?l=-2:(l=r.lastIndex-c[2].length,s=c[1],r=void 0===c[3]?K:'"'===c[3]?V:j):r===V||r===j?r=K:r===D||r===F?r=R:(r=K,o=void 0);const p=r===K&&t[e+1].startsWith("/>")?" ":"";a+=r===R?i+O:l>=0?(n.push(s),i.slice(0,l)+T+i.slice(l)+A+p):i+A+(-2===l?e:p)}return[G(t,a+(t[i]||"")+(2===e?"":"")),n]};class X{constructor({strings:t,_$litType$:e},i){let n;this.parts=[];let o=0,a=0;const r=t.length-1,s=this.parts,[c,l]=q(t,e);if(this.el=X.createElement(c,i),W.currentNode=this.el.content,2===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(n=W.nextNode())&&s.length0){n.textContent=x?x.emptyScript:"";for(let i=0;iN(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==Z&&I(this._$AH)?this._$AA.nextSibling.data=t:this.$(M.createTextNode(t)),this._$AH=t}g(t){const{values:e,_$litType$:i}=t,n="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=X.createElement(G(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===n)this._$AH.p(e);else{const t=new Q(n,this),i=t.u(this.options);t.p(e),this.$(i),this._$AH=t}}_$AC(t){let e=z.get(t.strings);return void 0===e&&z.set(t.strings,e=new X(t)),e}T(t){N(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,n=0;for(const o of t)n===e.length?e.push(i=new tt(this.k($()),this.k($()),this,this.options)):i=e[n],i._$AI(o),n++;n2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=Z}_$AI(t,e=this,i,n){const o=this.strings;let a=!1;if(void 0===o)t=J(this,t,e,0),a=!I(t)||t!==this._$AH&&t!==Y,a&&(this._$AH=t);else{const n=t;let r,s;for(t=o[0],r=0;r{const n=i?.renderBefore??e;let o=n._$litPart$;if(void 0===o){const t=i?.renderBefore??null;n._$litPart$=o=new tt(e.insertBefore($(),t),t,void 0,i??{})}return o._$AI(t),o})(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Y}}st._$litElement$=!0,st.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:st});const ct=globalThis.litElementPolyfillSupport;ct?.({LitElement:st}),(globalThis.litElementVersions??=[]).push("4.0.3");const lt=t=>(e,i)=>{void 0!==i?i.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)},ut={attribute:!0,type:String,converter:g,reflect:!1,hasChanged:k},pt=(t=ut,e,i)=>{const{kind:n,metadata:o}=i;let a=globalThis.litPropertyMetadata.get(o);if(void 0===a&&globalThis.litPropertyMetadata.set(o,a=new Map),a.set(i.name,t),"accessor"===n){const{name:n}=i;return{set(i){const o=e.get.call(this);e.set.call(this,i),this.requestUpdate(n,o,t)},init(e){return void 0!==e&&this.C(n,void 0,t),e}}}if("setter"===n){const{name:n}=i;return function(i){const o=this[n];e.call(this,i),this.requestUpdate(n,o,t)}}throw Error("Unsupported decorator location: "+n)};function ht(t){return(e,i)=>"object"==typeof i?pt(t,e,i):((t,e,i)=>{const n=e.hasOwnProperty(i);return e.constructor.createProperty(i,n?{...t,wrapped:!0}:t),n?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function dt(t){return ht({...t,state:!0,attribute:!1})}function mt(t){return(e,i)=>{const n="function"==typeof e?e:e[i];Object.assign(n,t)}}var ft=i(383);function yt(t){return null==t}var _t={isNothing:yt,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:yt(t)?[]:[t]},repeat:function(t,e){var i,n="";for(i=0;is&&(e=n-s+(a=" ... ").length),i-n>s&&(i=n+s-(r=" ...").length),{str:a+t.slice(e,i).replace(/\t/g,"→")+r,pos:n-e+a.length}}function wt(t,e){return _t.repeat(" ",e-t.length)+t}var Ct=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var i,n=/\r?\n|\r|\0/g,o=[0],a=[],r=-1;i=n.exec(t.buffer);)a.push(i.index),o.push(i.index+i[0].length),t.position<=i.index&&r<0&&(r=o.length-2);r<0&&(r=o.length-1);var s,c,l="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,p=e.maxLength-(e.indent+u+3);for(s=1;s<=e.linesBefore&&!(r-s<0);s++)c=kt(t.buffer,o[r-s],a[r-s],t.position-(o[r]-o[r-s]),p),l=_t.repeat(" ",e.indent)+wt((t.line-s+1).toString(),u)+" | "+c.str+"\n"+l;for(c=kt(t.buffer,o[r],a[r],t.position,p),l+=_t.repeat(" ",e.indent)+wt((t.line+1).toString(),u)+" | "+c.str+"\n",l+=_t.repeat("-",e.indent+u+3+c.pos)+"^\n",s=1;s<=e.linesAfter&&!(r+s>=a.length);s++)c=kt(t.buffer,o[r+s],a[r+s],t.position-(o[r]-o[r+s]),p),l+=_t.repeat(" ",e.indent)+wt((t.line+s+1).toString(),u)+" | "+c.str+"\n";return l.replace(/\n$/,"")},Et=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],xt=["scalar","sequence","mapping"],Lt=function(t,e){if(e=e||{},Object.keys(e).forEach((function(e){if(-1===Et.indexOf(e))throw new gt('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=function(t){var e={};return null!==t&&Object.keys(t).forEach((function(i){t[i].forEach((function(t){e[String(t)]=i}))})),e}(e.styleAliases||null),-1===xt.indexOf(this.kind))throw new gt('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function Tt(t,e){var i=[];return t[e].forEach((function(t){var e=i.length;i.forEach((function(i,n){i.tag===t.tag&&i.kind===t.kind&&i.multi===t.multi&&(e=n)})),i[e]=t})),i}function At(t){return this.extend(t)}At.prototype.extend=function(t){var e=[],i=[];if(t instanceof Lt)i.push(t);else if(Array.isArray(t))i=i.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new gt("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(i=i.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof Lt))throw new gt("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new gt("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new gt("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),i.forEach((function(t){if(!(t instanceof Lt))throw new gt("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var n=Object.create(At.prototype);return n.implicit=(this.implicit||[]).concat(e),n.explicit=(this.explicit||[]).concat(i),n.compiledImplicit=Tt(n,"implicit"),n.compiledExplicit=Tt(n,"explicit"),n.compiledTypeMap=function(){var t,e,i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function n(t){t.multi?(i.multi[t.kind].push(t),i.multi.fallback.push(t)):i[t.kind][t.tag]=i.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Rt=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),Dt=/^[-+]?[0-9]+e/,Ft=new Lt("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!Rt.test(t)||"_"===t[t.length-1])},construct:function(t){var e,i;return i="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:i*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||_t.isNegativeZero(t))},represent:function(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(_t.isNegativeZero(t))return"-0.0";return i=t.toString(10),Dt.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"}),Kt=St.extend({implicit:[Ot,Mt,Pt,Ft]}),jt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Vt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),Bt=new Lt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==jt.exec(t)||null!==Vt.exec(t))},construct:function(t){var e,i,n,o,a,r,s,c,l=0,u=null;if(null===(e=jt.exec(t))&&(e=Vt.exec(t)),null===e)throw new Error("Date resolve error");if(i=+e[1],n=+e[2]-1,o=+e[3],!e[4])return new Date(Date.UTC(i,n,o));if(a=+e[4],r=+e[5],s=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(u=-u)),c=new Date(Date.UTC(i,n,o,a,r,s,l)),u&&c.setTime(c.getTime()-u),c},instanceOf:Date,represent:function(t){return t.toISOString()}}),Ut=new Lt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),Ht="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",Yt=new Lt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,i,n=0,o=t.length,a=Ht;for(i=0;i64)){if(e<0)return!1;n+=6}return n%8==0},construct:function(t){var e,i,n=t.replace(/[\r\n=]/g,""),o=n.length,a=Ht,r=0,s=[];for(e=0;e>16&255),s.push(r>>8&255),s.push(255&r)),r=r<<6|a.indexOf(n.charAt(e));return 0==(i=o%4*6)?(s.push(r>>16&255),s.push(r>>8&255),s.push(255&r)):18===i?(s.push(r>>10&255),s.push(r>>2&255)):12===i&&s.push(r>>4&255),new Uint8Array(s)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,i,n="",o=0,a=t.length,r=Ht;for(e=0;e>18&63],n+=r[o>>12&63],n+=r[o>>6&63],n+=r[63&o]),o=(o<<8)+t[e];return 0==(i=a%3)?(n+=r[o>>18&63],n+=r[o>>12&63],n+=r[o>>6&63],n+=r[63&o]):2===i?(n+=r[o>>10&63],n+=r[o>>4&63],n+=r[o<<2&63],n+=r[64]):1===i&&(n+=r[o>>2&63],n+=r[o<<4&63],n+=r[64],n+=r[64]),n}}),Zt=Object.prototype.hasOwnProperty,zt=Object.prototype.toString,Wt=new Lt("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,i,n,o,a,r=[],s=t;for(e=0,i=s.length;e>10),56320+(t-65536&1023))}for(var Ce=new Array(256),Ee=new Array(256),xe=0;xe<256;xe++)Ce[xe]=ke(xe)?1:0,Ee[xe]=ke(xe);function Le(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Qt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Te(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=Ct(i),new gt(e,i)}function Ae(t,e){throw Te(t,e)}function Se(t,e){t.onWarning&&t.onWarning.call(null,Te(t,e))}var Oe={YAML:function(t,e,i){var n,o,a;null!==t.version&&Ae(t,"duplication of %YAML directive"),1!==i.length&&Ae(t,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]))&&Ae(t,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),a=parseInt(n[2],10),1!==o&&Ae(t,"unacceptable YAML version of the document"),t.version=i[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&Se(t,"unsupported YAML version of the document")},TAG:function(t,e,i){var n,o;2!==i.length&&Ae(t,"TAG directive accepts exactly two arguments"),n=i[0],o=i[1],pe.test(n)||Ae(t,"ill-formed tag handle (first argument) of the TAG directive"),te.call(t.tagMap,n)&&Ae(t,'there is a previously declared suffix for "'+n+'" tag handle'),he.test(o)||Ae(t,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(e){Ae(t,"tag prefix is malformed: "+o)}t.tagMap[n]=o}};function Me(t,e,i,n){var o,a,r,s;if(e1&&(t.result+=_t.repeat("\n",e-1))}function Fe(t,e){var i,n,o=t.tag,a=t.anchor,r=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=r),n=t.input.charCodeAt(t.position);0!==n&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,Ae(t,"tab characters must not be used in indentation")),45===n)&&ye(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,Pe(t,!0,-1)&&t.lineIndent<=e)r.push(null),n=t.input.charCodeAt(t.position);else if(i=t.line,Ve(t,e,ne,!1,!0),r.push(t.result),Pe(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===i||t.lineIndent>e)&&0!==n)Ae(t,"bad indentation of a sequence entry");else if(t.lineIndente?m=1:t.lineIndent===e?m=0:t.lineIndente?m=1:t.lineIndent===e?m=0:t.lineIndente)&&(_&&(r=t.line,s=t.lineStart,c=t.position),Ve(t,e,oe,!0,o)&&(_?f=t.result:y=t.result),_||(Ie(t,h,d,m,f,y,r,s,c),m=f=y=null),Pe(t,!0,-1),l=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==l)Ae(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===o?Ae(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Ae(t,"repeat of an indentation width identifier"):(l=e+o-1,c=!0)}if(fe(a)){do{a=t.input.charCodeAt(++t.position)}while(fe(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!me(a)&&0!==a)}for(;0!==a;){for(Ne(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!c||t.lineIndentl&&(l=t.lineIndent),me(a))u++;else{if(t.lineIndent0){for(o=r,a=0;o>0;o--)(r=be(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+r:Ae(t,"expected hexadecimal character");t.result+=we(a),t.position++}else Ae(t,"unknown escape sequence");i=n=t.position}else me(s)?(Me(t,i,n,!0),De(t,Pe(t,!1,e)),i=n=t.position):t.position===t.lineStart&&Re(t)?Ae(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}Ae(t,"unexpected end of the stream within a double quoted scalar")}(t,h)?y=!0:function(t){var e,i,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!ye(n)&&!_e(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&Ae(t,"name of an alias node must contain at least one character"),i=t.input.slice(e,t.position),te.call(t.anchorMap,i)||Ae(t,'unidentified alias "'+i+'"'),t.result=t.anchorMap[i],Pe(t,!0,-1),!0}(t)?(y=!0,null===t.tag&&null===t.anchor||Ae(t,"alias node should not have any properties")):function(t,e,i){var n,o,a,r,s,c,l,u,p=t.kind,h=t.result;if(ye(u=t.input.charCodeAt(t.position))||_e(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(ye(n=t.input.charCodeAt(t.position+1))||i&&_e(n)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,r=!1;0!==u;){if(58===u){if(ye(n=t.input.charCodeAt(t.position+1))||i&&_e(n))break}else if(35===u){if(ye(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&Re(t)||i&&_e(u))break;if(me(u)){if(s=t.line,c=t.lineStart,l=t.lineIndent,Pe(t,!1,-1),t.lineIndent>=e){r=!0,u=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=c,t.lineIndent=l;break}}r&&(Me(t,o,a,!1),De(t,t.line-s),o=a=t.position,r=!1),fe(u)||(a=t.position+1),u=t.input.charCodeAt(++t.position)}return Me(t,o,a,!1),!!t.result||(t.kind=p,t.result=h,!1)}(t,h,ee===i)&&(y=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===m&&(y=s&&Fe(t,d))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&Ae(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),c=0,l=t.implicitTypes.length;c"),null!==t.result&&p.kind!==t.kind&&Ae(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+p.kind+'", not "'+t.kind+'"'),p.resolve(t.result,t.tag)?(t.result=p.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Ae(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||y}function Be(t){var e,i,n,o,a=t.position,r=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(o=t.input.charCodeAt(t.position))&&(Pe(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==o));){for(r=!0,o=t.input.charCodeAt(++t.position),e=t.position;0!==o&&!ye(o);)o=t.input.charCodeAt(++t.position);for(n=[],(i=t.input.slice(e,t.position)).length<1&&Ae(t,"directive name must not be less than one character in length");0!==o;){for(;fe(o);)o=t.input.charCodeAt(++t.position);if(35===o){do{o=t.input.charCodeAt(++t.position)}while(0!==o&&!me(o));break}if(me(o))break;for(e=t.position;0!==o&&!ye(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==o&&Ne(t),te.call(Oe,i)?Oe[i](t,i,n):Se(t,'unknown document directive "'+i+'"')}Pe(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,Pe(t,!0,-1)):r&&Ae(t,"directives end mark is expected"),Ve(t,t.lineIndent-1,oe,!1,!0),Pe(t,!0,-1),t.checkLineBreaks&&le.test(t.input.slice(a,t.position))&&Se(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&Re(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,Pe(t,!0,-1)):t.position=55296&&n<=56319&&e+1=56320&&i<=57343?1024*(n-55296)+i-56320+65536:n}function Mi(t){return/^\n* /.test(t)}var $i=1,Ii=2,Ni=3,Pi=4,Ri=5;function Di(t,e,i,n,o){t.dump=function(){if(0===e.length)return t.quotingType===wi?'""':"''";if(!t.noCompatMode&&(-1!==vi.indexOf(e)||gi.test(e)))return t.quotingType===wi?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,i),r=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),s=n||t.flowLevel>-1&&i>=t.flowLevel;switch(function(t,e,i,n,o,a,r,s){var c,l=0,u=null,p=!1,h=!1,d=-1!==n,m=-1,f=function(t){return Ti(t)&&t!==ze&&!Li(t)&&t!==ri&&t!==ui&&t!==si&&t!==ai&&t!==hi&&t!==di&&t!==fi&&t!==_i&&t!==ti&&t!==ii&&t!==oi&&t!==Je&&t!==yi&&t!==ci&&t!==li&&t!==ni&&t!==Qe&&t!==ei&&t!==pi&&t!==mi}(Oi(t,0))&&function(t){return!Li(t)&&t!==si}(Oi(t,t.length-1));if(e||r)for(c=0;c=65536?c+=2:c++){if(!Ti(l=Oi(t,c)))return Ri;f=f&&Si(l,u,s),u=l}else{for(c=0;c=65536?c+=2:c++){if((l=Oi(t,c))===Ge)p=!0,d&&(h=h||c-m-1>n&&" "!==t[m+1],m=c);else if(!Ti(l))return Ri;f=f&&Si(l,u,s),u=l}h=h||d&&c-m-1>n&&" "!==t[m+1]}return p||h?i>9&&Mi(t)?Ri:r?a===wi?Ri:Ii:h?Pi:Ni:!f||r||o(t)?a===wi?Ri:Ii:$i}(e,s,t.indent,r,(function(e){return function(t,e){var i,n;for(i=0,n=t.implicitTypes.length;i"+Fi(e,t.indent)+Ki(Ei(function(t,e){for(var i,n,o,a=/(\n+)([^\n]*)/g,r=(o=-1!==(o=t.indexOf("\n"))?o:t.length,a.lastIndex=o,ji(t.slice(0,o),e)),s="\n"===t[0]||" "===t[0];n=a.exec(t);){var c=n[1],l=n[2];i=" "===l[0],r+=c+(s||i||""===l?"":"\n")+ji(l,e),s=i}return r}(e,r),a));case Ri:return'"'+function(t){for(var e,i="",n=0,o=0;o=65536?o+=2:o++)n=Oi(t,o),!(e=bi[n])&&Ti(n)?(i+=t[o],n>=65536&&(i+=t[o+1])):i+=e||ki(n);return i}(e)+'"';default:throw new gt("impossible error: invalid scalar style")}}()}function Fi(t,e){var i=Mi(t)?String(e):"",n="\n"===t[t.length-1];return i+(!n||"\n"!==t[t.length-2]&&"\n"!==t?n?"":"-":"+")+"\n"}function Ki(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function ji(t,e){if(""===t||" "===t[0])return t;for(var i,n,o=/ [^ ]/g,a=0,r=0,s=0,c="";i=o.exec(t);)(s=i.index)-a>e&&(n=r>a?r:s,c+="\n"+t.slice(a,n),a=n+1),r=s;return c+="\n",t.length-a>e&&r>a?c+=t.slice(a,r)+"\n"+t.slice(r+1):c+=t.slice(a),c.slice(1)}function Vi(t,e,i,n){var o,a,r,s="",c=t.tag;for(o=0,a=i.length;o tag resolver accepts not "'+c+'" style');n=s.represent[c](e,c)}t.dump=n}return!0}return!1}function Ui(t,e,i,n,o,a,r){t.tag=null,t.dump=i,Bi(t,i,!1)||Bi(t,i,!0);var s,c=Ye.call(t.dump),l=n;n&&(n=t.flowLevel<0||t.flowLevel>e);var u,p,h="[object Object]"===c||"[object Array]"===c;if(h&&(p=-1!==(u=t.duplicates.indexOf(i))),(null!==t.tag&&"?"!==t.tag||p||2!==t.indent&&e>0)&&(o=!1),p&&t.usedDuplicates[u])t.dump="*ref_"+u;else{if(h&&p&&!t.usedDuplicates[u]&&(t.usedDuplicates[u]=!0),"[object Object]"===c)n&&0!==Object.keys(t.dump).length?(function(t,e,i,n){var o,a,r,s,c,l,u="",p=t.tag,h=Object.keys(i);if(!0===t.sortKeys)h.sort();else if("function"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new gt("sortKeys must be a boolean or a function");for(o=0,a=h.length;o1024)&&(t.dump&&Ge===t.dump.charCodeAt(0)?l+="?":l+="? "),l+=t.dump,c&&(l+=xi(t,e)),Ui(t,e+1,s,!0,c)&&(t.dump&&Ge===t.dump.charCodeAt(0)?l+=":":l+=": ",u+=l+=t.dump));t.tag=p,t.dump=u||"{}"}(t,e,t.dump,o),p&&(t.dump="&ref_"+u+t.dump)):(function(t,e,i){var n,o,a,r,s,c="",l=t.tag,u=Object.keys(i);for(n=0,o=u.length;n1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Ui(t,e,r,!1,!1)&&(c+=s+=t.dump));t.tag=l,t.dump="{"+c+"}"}(t,e,t.dump),p&&(t.dump="&ref_"+u+" "+t.dump));else if("[object Array]"===c)n&&0!==t.dump.length?(t.noArrayIndent&&!r&&e>0?Vi(t,e-1,t.dump,o):Vi(t,e,t.dump,o),p&&(t.dump="&ref_"+u+t.dump)):(function(t,e,i){var n,o,a,r="",s=t.tag;for(n=0,o=i.length;n",t.dump=s+" "+t.dump)}return!0}function Hi(t,e){var i,n,o=[],a=[];for(Yi(t,o,a),i=0,n=a.length;ii+"."+t)))}else e.push(i);return e}function Cn(t,e){const i=e.split(".");if(null!=t)return 1==i.length?t[i[0]]:Cn(t[i[0]],i.splice(1).join("."))}function En(t,e,i){const n=e.split(".");return 1==n.length?t[n[0]]=i:(n[0]in t&&"object"==typeof t[n[0]]||(/^-?\d+$/.test(n[1])?t[n[0]]=new Array(parseInt(n[1])):t[n[0]]={}),En(t[n[0]],n.splice(1).join("."),i)),t}function xn(t,...e){function i(t){return t&&"object"==typeof t&&!Array.isArray(t)}if(!e.length)return t;const n=e.shift();if(i(t)&&i(n))for(const e in n)i(n[e])?(t[e]||Object.assign(t,{[e]:{}}),xn(t[e],n[e])):Object.assign(t,{[e]:n[e]});return xn(t,...e)}function Ln(t){let e,i;switch(t){case"LG webOS":e=gn,i=kn;break;case"Samsung TV":e=bn,i=vn;break;case"Kodi":e=mn,i=fn;break;case"Roku":e=yn,i=_n;break;case"Apple TV":e=ln,i=un;break;case"Fire TV":e=hn,i=dn;break;default:e=sn,i=cn}return[structuredClone(e),structuredClone(i)]}var Tn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};class An extends st{constructor(){super(...arguments),this.baseTabIndex=0,this.entryIndex=-1,this.actionsTabIndex=0,this.touchpadTabIndex=2,this.guiMode=!0,this.yamlStringsCache={},this.autofillCooldown=!1,this.people=[],this.BASE_TABS=["general","layout","actions","icons"],this.TOUCHPAD_TABS=["up","down","center","left","right"],this.DEFAULT_KEYS=[],this.DEFAULT_SOURCES=[],this.DEFAULT_ACTIONS=[]}static get properties(){return{hass:{},config:{}}}setConfig(t){this.config=t}configChanged(t){const e=new Event("config-changed",{bubbles:!0,composed:!0});e.detail={config:t},this.dispatchEvent(e),this.requestUpdate()}entriesChanged(t){let e;e=3===this.baseTabIndex?"custom_icons":"custom_actions",this.configChanged({...this.config,[e]:t})}entryChanged(t){let e,i,n;if(3===this.baseTabIndex)e=structuredClone(this.config.custom_icons??[]),i=e[this.entryIndex],n={...i,...t};else switch(e=structuredClone(this.config.custom_actions??[]),i=e[this.entryIndex],this.renderTemplate(i?.type,this.getEntryContext(i))){case"touchpad":if(2!=this.touchpadTabIndex){n={...i,[this.TOUCHPAD_TABS[this.touchpadTabIndex]]:{...i[this.TOUCHPAD_TABS[this.touchpadTabIndex]],...t}};break}default:n={...i,...t}}e[this.entryIndex]=n,this.entriesChanged(e)}toggleGuiMode(t){this.yamlString=void 0,this.autofillCooldown=!1,this.guiMode=!this.guiMode}get activeEntry(){if(this.entryIndex<0)return;let t;return 3===this.baseTabIndex?(this.config.custom_icons??[])[this.entryIndex]:(t=(this.config.custom_actions??[])[this.entryIndex],"touchpad"===this.renderTemplate(t?.type,this.getEntryContext(t))&&2!=this.touchpadTabIndex?t[this.TOUCHPAD_TABS[this.touchpadTabIndex]]??{}:t)}get yaml(){if(null==this.yamlString){let t="";switch(this.baseTabIndex){case 3:case 2:t=Wi(this.activeEntry);break;case 1:t=Wi(this.config.rows)}this.yamlString=["{}","[]"].includes(t.trim())?"":t}return this.yamlString??""}set yaml(t){this.yamlString=t;try{const t=zi(this.yaml);switch(this.baseTabIndex){case 3:{const e=structuredClone(this.config.custom_icons??[]);e[this.entryIndex]=t,this.entriesChanged(e);break}case 2:{const e=structuredClone(this.config.custom_actions??[]);switch(this.renderTemplate(e[this.entryIndex].type,this.getEntryContext(t))){case"touchpad":if(2!=this.touchpadTabIndex){e[this.entryIndex]={...e[this.entryIndex],[this.TOUCHPAD_TABS[this.touchpadTabIndex]]:t};break}default:e[this.entryIndex]=t}this.entriesChanged(e);break}case 1:this.configChanged({...this.config,rows:t})}this.errors=void 0}catch(t){this.errors=[t.message]}}handleYamlCodeChanged(t){t.stopPropagation();const e=t.detail.value;e!=this.yaml&&(this.yaml=e)}handleStyleCodeChanged(t){t.stopPropagation();const e=t.detail.value;this.entryIndex>-1&&this.activeEntry?e!=this.activeEntry?.styles&&this.entryChanged({styles:e}):e!=this.config.styles&&this.configChanged({...this.config,styles:e})}handleActionCodeChanged(t){t.stopPropagation();const e=t.target.id,i=t.detail.value;if(this.yamlStringsCache[e]=i,this.activeEntry)try{const t=zi(i);if(JSON.stringify(t??{}).includes("null"))return;this.entryChanged({[e]:t}),this.errors=void 0}catch(t){this.errors=[t.message]}}handleBaseTabSelected(t){this.yamlStringsCache={},this.yamlString=void 0,this.entryIndex=-1,this.guiMode=!0;const e=t.detail.index;this.baseTabIndex!=e&&(this.baseTabIndex=e)}handleActionsTabSelected(t){this.yamlStringsCache={};const e=t.detail.index;this.actionsTabIndex!=e&&(this.actionsTabIndex=e)}handleTouchpadTabSelected(t){this.yamlString=void 0,this.yamlStringsCache={};const e=t.detail.index;this.touchpadTabIndex!=e&&(this.touchpadTabIndex=e,this.setActionsTab(this.entryIndex))}handleSelectorChange(t){this.yamlStringsCache={};const e=t.target.id;let i=t.detail.value;switch(e.endsWith(".confirmation.exemptions")&&(i=(i??[]).map((t=>({user:t})))),this.autofillCooldown=!1,this.baseTabIndex){case 3:case 2:this.entryChanged(En(structuredClone(this.activeEntry),e,i));break;default:this.configChanged({...this.config,[e]:i})}}handleLayoutActionListItemDragStart(t){t.stopPropagation(),t.isTrusted&&t.dataTransfer&&t.dataTransfer.setData("text/plain","- "+t.currentTarget.innerText)}addEntry(t){const e=t.detail.index;let i;switch(this.baseTabIndex){case 3:i=structuredClone(this.config.custom_icons)??[],i.push({name:`custom_icon_${(this.config.custom_icons??[]).length}`,path:""});break;default:{const t=Qi[e];i=structuredClone(this.config.custom_actions)??[];let n=t;const o=this.config.custom_actions?.filter((e=>e.type==t));o&&o.length&&(n+=`_${(this.config.custom_actions??[]).length}`),i.push({type:Qi[e],name:n});break}}this.autofillCooldown=!1,this.entriesChanged(i);const n=this.shadowRoot?.querySelector(".features");n&&setTimeout((()=>n.scrollTop=n.scrollHeight),100)}removeEntry(t){const e=t.currentTarget.index;let i;i=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],i=structuredClone(i),i.splice(e,1),this.entriesChanged(i)}moveEntry(t){let e;t.stopPropagation(),e=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],e=structuredClone(e);const{oldIndex:i,newIndex:n}=t.detail;e.splice(n,0,e.splice(i,1)[0]),this.entriesChanged(e)}copyEntry(t){let e;e=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],e=structuredClone(e);const i=t.currentTarget.index,n=structuredClone(e[i]);n.name=`${n.name}_copy`,e.splice(i,1,e[i],n),this.entriesChanged(e)}editEntry(t){this.yamlStringsCache={},this.yamlString=void 0;const e=t.currentTarget.index;3===this.baseTabIndex||(this.setActionsTab(e),this.touchpadTabIndex=2),this.entryIndex=e}exitEditEntry(t){this.yamlStringsCache={},this.yamlString=void 0,this.entryIndex=-1}setActionsTab(t){let e=this.config.custom_actions?.[t]??{type:"button",name:""};const i=e.type;"touchpad"==i&&2!=this.touchpadTabIndex&&(e=e[this.TOUCHPAD_TABS[this.touchpadTabIndex]]??{});const n=this.getEntryContext(e);"none"!=this.renderTemplate(e?.momentary_start_action?.action??"none",n)||"none"!=this.renderTemplate(e?.momentary_end_action?.action??"none",n)?"touchpad"==i&&2==this.touchpadTabIndex?this.actionsTabIndex=2:this.actionsTabIndex=1:"touchpad"!=i||"none"==this.renderTemplate(e?.multi_tap_action?.action??"none",n)&&"none"==this.renderTemplate(e?.multi_double_tap_action?.action??"none",n)&&"none"==this.renderTemplate(e?.multi_hold_action?.action??"none",n)?this.actionsTabIndex=0:this.actionsTabIndex=1}buildIconElement(t,e){let i=H``,n=this.renderTemplate(t.icon??t.path??"",e);if(!n.includes(":")){const t=(this.config.custom_icons??[]).filter((t=>t.name==n))[0]??pn.filter((t=>t.name==n))[0];n=t?.path??n}if(!n.length)switch(this.renderTemplate(t?.type,e)){case"touchpad":n="mdi:gesture-tap-button";break;case"slider":n=this.renderTemplate(t?.vertical??!1,e)?"mdi:tune-vertical-variant":"mdi:tune-variant";break;default:n="mdi:circle-small"}return i=n.includes(":")?H``:H``,i}buildEntryList(){let t,e;return 3===this.baseTabIndex?(t=this.config.custom_icons??[],e="Custom Icons"):(t=this.config.custom_actions??[],e="Custom Actions"),H`
${e}
${t.map(((t,e)=>{const i=this.getEntryContext(t),n=this.buildIconElement(t,i),o=this.renderTemplate(t.label,i),a=this.renderTemplate(t.type,i),r=this.renderTemplate(t.name,i);return H`
${n}
${a} ⸱ ${r} ${o?` ⸱ ${o}`:""} ${i.config.entity?H`${i.config.entity}${i.config.attribute?` ⸱ ${i.config.attribute}`:""}`:""}
`}))}
`}buildAddEntryButton(){return 3===this.baseTabIndex?H``:H`${Qi.map((t=>H`${t}`))}`}buildEntryHeader(){let t;return t=3===this.baseTabIndex?"SVG Icon":this.renderTemplate(this.config.custom_actions?.[this.entryIndex]?.type??"button",this.getEntryContext(this.activeEntry??{type:"button",name:""})),H`
${t}
`}buildSelector(t,e,i,n){const o={...this.hass,localize:(t,e)=>({"ui.panel.lovelace.editor.action-editor.actions.repeat":"Repeat","ui.panel.lovelace.editor.action-editor.actions.fire-dom-event":"Fire DOM event","ui.panel.lovelace.editor.action-editor.actions.key":"Key","ui.panel.lovelace.editor.action-editor.actions.source":"Source","ui.panel.lovelace.editor.action-editor.actions.keyboard":"Keyboard","ui.panel.lovelace.editor.action-editor.actions.textbox":"Textbox","ui.panel.lovelace.editor.action-editor.actions.search":"Search"}[t]??this.hass.localize(t,e))};let a;switch(this.baseTabIndex){case 3:case 2:a=Cn(this.activeEntry,e);break;case 1:break;default:a=this.config[e]}return e.endsWith(".confirmation.exemptions")&&(a=(a??[]).map((t=>t.user))),H``}buildMainFeatureOptions(t=H``,e=H``){const i=this.renderTemplate(this.activeEntry.autofill_entity_id??this.config.autofill_entity_id??an,this.getEntryContext(this.activeEntry)),n=(Array.isArray(this.activeEntry?.tap_action?.target?.entity_id)?this.activeEntry?.tap_action?.target?.entity_id?.[0]:this.activeEntry?.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id;return H`${this.buildSelector("Name","name",{text:{}})} ${this.buildSelector("Entity","entity_id",{entity:{}},i?n:void 0)} ${this.hass.states[this.activeEntry?.entity_id??(i?n:"")??""]?this.buildSelector("Attribute","value_attribute",{attribute:{entity_id:this.activeEntry?.entity_id??n}},i?"state":void 0):""} ${t}
${e} ${this.buildSelector("Autofill","autofill_entity_id",{boolean:{}},this.config.autofill_entity_id??an)} ${this.buildSelector("Haptics","haptics",{boolean:{}},i?this.config.haptics??rn:rn)}
`}buildAppearancePanel(t=H``){return H`
Appearance
${this.buildAlertBox("Change the feature appearance based on its value using a template like '{{ value | float }}'.")} ${t}${this.buildCodeEditor("jinja2")}
`}buildCommonAppearanceOptions(){const t=this.getEntryContext(this.activeEntry??{type:"button",name:""});let e,i=this.renderTemplate(this.activeEntry?.icon??"",t);if(i&&!i.includes(":")){const t=(this.config.custom_icons??[]).filter((t=>t.name==i))[0]??pn.filter((t=>t.name==i))[0];i=t?.path??i,e=H``}return H`${this.buildSelector("Label","label",{text:{multiline:!0}})}
${this.buildSelector("Icon","icon",{icon:{}})}${e??""}${this.buildSelector("Units","unit_of_measurement",{text:{}})}
`}buildInteractionsPanel(t){return H`
Interactions
${t}
`}buildActionOption(t,e,i,n=!1){const o=this.getEntryContext(this.activeEntry??{}),a=this.renderTemplate(this.activeEntry.autofill_entity_id??this.config.autofill_entity_id??an,o),r=this.renderTemplate(this.activeEntry?.[e]?.action??"none",o),s=this.renderTemplate(this.activeEntry?.[e]?.platform??"Android TV",o);return H`
${this.buildSelector(t,e,i)} ${"none"!=r&&"double_tap_action"==e?this.buildSelector("Double tap window","double_tap_action.double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.double_tap_window:void 0)??en):"none"!=r&&"multi_double_tap_action"==e?this.buildSelector("Double tap window","multi_double_tap_action.double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.double_tap_window:void 0)??en):"hold_action"==e&&this.activeEntry.hold_action?H`
${this.buildSelector("Hold time","hold_action.hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.hold_time:void 0)??nn)} ${"repeat"==this.renderTemplate(this.activeEntry?.hold_action?.action,o)?this.buildSelector("Repeat delay","hold_action.repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.repeat_delay:void 0)??on):""}
`:"multi_hold_action"==e&&this.activeEntry.multi_hold_action?H`
${this.buildSelector("Hold time","multi_hold_action.hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.hold_time:void 0)??nn)} ${"repeat"==this.renderTemplate(this.activeEntry?.multi_hold_action?.action,o)?this.buildSelector("Repeat delay","multi_hold_action.repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(a?this.config.repeat_delay:void 0)??on):""}
`:""} ${"key"==r?H`
${this.buildSelector("Remote ID",`${e}.remote_id`,{entity:{filter:{domain:"remote"}}},a?this.config.remote_id:void 0)} ${this.buildSelector("Key",`${e}.key`,{text:{}})}
`:""} ${"source"==r?H`
${this.buildSelector("Remote ID",`${e}.remote_id`,{entity:{filter:{domain:"remote"}}},a?this.config.remote_id:void 0)} ${this.buildSelector("Source",`${e}.source`,{text:{}})}
`:""} ${["keyboard","textbox","search"].includes(r)?H`
${this.buildSelector("Keyboard ID",`${e}.keyboard_id`,{entity:{filter:{domain:["remote","media_player"]}}},a?this.config.keyboard_id:void 0)} ${this.buildSelector("Platform",`${e}.platform`,{select:{mode:"dropdown",options:Gi,reorder:!1}},a&&Gi.includes(this.config.platform)?this.config.platform:"Android TV")}
${["Android TV","Roku"].includes(s)?this.buildSelector("Remote ID",`${e}.remote_id`,{entity:{filter:{domain:"remote"}}},a?this.config.remote_id:void 0):""} ${"Roku"==s?this.buildSelector("Media Player ID",`${e}.media_player_id`,{entity:{filter:{domain:"media_player"}}},a?this.config.media_player_id:void 0):""}
${this.buildSelector("Prompt",`${e}.keyboard_prompt`,{text:{}})}`:""} ${"more-info"==r?this.buildSelector("Entity",`${e}.target.entity_id`,{entity:{}},a?this.activeEntry?.entity_id??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id:void 0):""} ${"toggle"==r?this.buildSelector("Target",`${e}.target`,{target:{}}):""} ${n||"fire-dom-event"==r?this.buildCodeEditor("action",e):""} ${"none"!=r?H`${this.buildSelector("Confirmation",`${e}.confirmation`,{boolean:{}},!1)} ${this.activeEntry?.[e]?.confirmation?H`${this.buildSelector("Text",`${e}.confirmation.text`,{text:{}})} ${this.buildSelector("Exemptions",`${e}.confirmation.exemptions`,{select:{multiple:!0,mode:"list",options:this.people,reorder:!1}})}`:""}`:""}
`}buildTabBar(t,e,i){return H`${i.map((t=>H``))}`}buildButtonGuiEditor(){const t=this.buildTabBar(this.actionsTabIndex,this.handleActionsTabSelected,["default","momentary"]);let e;const i=Xi.concat();i.splice(Xi.indexOf("repeat"),1);const n={ui_action:{actions:i,default_action:"none"}};return e=1===this.actionsTabIndex?H`${t} ${this.buildActionOption("Start behavior (optional)","momentary_start_action",n)} ${this.buildAlertBox("Set the action below, and then use the code editor to set a data field to the seconds the feature was held down using a template like '{{ hold_secs | float }}'.")} ${this.buildActionOption("End behavior (optional)","momentary_end_action",n,!0)}`:H`${t} ${this.buildActionOption("Tap behavior (optional)","tap_action",n)} ${this.buildActionOption("Double tap behavior (optional)","double_tap_action",n)} ${this.buildActionOption("Hold behavior (optional)","hold_action",{ui_action:{actions:Xi,default_action:"none"}})}`,H`${this.buildMainFeatureOptions()} ${this.buildAppearancePanel(this.buildCommonAppearanceOptions())} ${this.buildInteractionsPanel(e)}`}buildSliderGuiEditor(){const t=Xi.concat();t.splice(Xi.indexOf("repeat"),1);const e=this.getEntryContext(this.activeEntry??{}),i=Number(this.renderTemplate(this.activeEntry?.range?.[0],e)),n=Number(this.renderTemplate(this.activeEntry?.range?.[0],e)),o=Number(this.renderTemplate(this.activeEntry?.step,e)),a=this.renderTemplate(this.activeEntry?.unit_of_measurement,e);return H`${this.buildMainFeatureOptions(void 0,H`${this.buildSelector("Min","range.0",{number:{max:n??void 0,step:o,mode:"box",unit_of_measurement:a},RANGE_MIN:0})} ${this.buildSelector("Max","range.1",{number:{min:i??void 0,step:o,mode:"box",unit_of_measurement:a},RANGE_MAX:1})} ${this.buildSelector("Step","step",{number:{min:0,step:o??Math.min(1,((n??1)-(i??0))/100),mode:"box",unit_of_measurement:a},STEP:.01})} ${this.buildSelector("Update after action delay","value_from_hass_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},1e3)}`)} ${this.buildAppearancePanel(H`${this.buildCommonAppearanceOptions()}${this.buildSelector("Vertical","vertical",{boolean:{}},!1)}`)} ${this.buildInteractionsPanel(H`${this.buildAlertBox()} ${this.buildActionOption("Behavior","tap_action",{ui_action:{actions:t,default_action:"perform-action"}},!0)}`)}`}buildTouchpadGuiEditor(){const t=["default","multi-touch"];2==this.touchpadTabIndex&&t.push("momentary");const e=this.buildTabBar(this.actionsTabIndex,this.handleActionsTabSelected,t);let i;const n=Xi.concat();n.splice(Xi.indexOf("repeat"),1);const o={ui_action:{actions:n,default_action:"none"}};switch(this.actionsTabIndex){case 2:i=H`${e} ${this.buildActionOption("Start behavior (optional)","momentary_start_action",o)} ${this.buildAlertBox("Set the action below, and then use the code editor to set a data field to the seconds the feature was held down using a template like '{{ hold_secs | float }}'.")} ${this.buildActionOption("End behavior (optional)","momentary_end_action",o,!0)}`;break;case 1:i=H`${e} ${this.buildActionOption(`Multi-touch ${2==this.touchpadTabIndex?"tap":"swipe"} behavior (optional)`,"multi_tap_action",o)} ${2==this.touchpadTabIndex?this.buildActionOption("Multi-touch double tap behavior (optional)","multi_double_tap_action",o):""} ${this.buildActionOption("Multi-touch hold behavior (optional)","multi_hold_action",{ui_action:{actions:Xi,default_action:"none"}})}`;break;default:i=H`${e} ${this.buildActionOption((2==this.touchpadTabIndex?"Tap":"Swipe")+" behavior (optional)","tap_action",o)} ${2==this.touchpadTabIndex?this.buildActionOption("Double tap behavior (optional)","double_tap_action",o):""} ${this.buildActionOption("Hold behavior (optional)","hold_action",{ui_action:{actions:Xi,default_action:"none"}})}`}const a=this.buildTabBar(this.touchpadTabIndex,this.handleTouchpadTabSelected,this.TOUCHPAD_TABS);return H`${a} ${2==this.touchpadTabIndex?this.buildMainFeatureOptions():""} ${this.buildAppearancePanel(this.buildCommonAppearanceOptions())} ${this.buildInteractionsPanel(i)}`}buildIconGuiEditor(){return H`
${this.buildAlertBox("Icons must be resized to 24x24px to display correctly. Use a tool like https://yqnn.github.io/svg-path-editor/ to edit your SVG paths. If correctly sized the icon will perfectly fit in the preview ouline below.","info")} ${this.buildSelector("Name","name",{text:{}})} ${this.buildSelector("SVG Path","path",{text:{multiline:!0}})}
`}buildEntryGuiEditor(){let t;if(3===this.baseTabIndex)t=this.buildIconGuiEditor();else switch(this.config.custom_actions?.[this.entryIndex]?.type){case"slider":t=this.buildSliderGuiEditor();break;case"touchpad":t=this.buildTouchpadGuiEditor();break;default:t=this.buildButtonGuiEditor()}return H`
${t}
`}buildCodeEditor(t,e){let i,n,o,a,r;switch(t){case"jinja2":n=(this.entryIndex>-1?this.activeEntry?.styles:this.config.styles)??"",o=this.handleStyleCodeChanged,i="CSS Styles",a=!0,r=!1;break;case"action":t="yaml",o=this.handleActionCodeChanged,e=e??"tap_action",n=this.yamlStringsCache[e]??Wi(this.activeEntry?.[e]??{}),n="{}"==n.trim()?"":n,a=!0,r=!1;break;case"layout":t="yaml",n=this.yaml,o=this.handleYamlCodeChanged,n="[]"==n.trim()?"":n,a=!1,r=!1;break;default:n=this.yaml,o=this.handleYamlCodeChanged,a=!0,r=!0}return H`
${i?H`
${i}
`:""}
`}buildEntryEditor(){let t;return t=this.guiMode?this.buildEntryGuiEditor():this.buildCodeEditor("yaml"),H`${this.buildEntryHeader()}
${t}
`}buildLayoutEditor(){const t=this.config.custom_actions?.map((t=>t.name))??[],e=this.DEFAULT_KEYS.filter((e=>!t.includes(e.name))),i=this.DEFAULT_SOURCES.filter((e=>!t.includes(e.name)));return H`
${this.buildCodeEditor("layout")}
${this.config.custom_actions?.length?H`
Custom Actions
    ${this.config.custom_actions.map((t=>{const e=this.getEntryContext(t),i=this.buildIconElement(t,e);return H`
  • ${i} ${t.name}
  • `}))}

`:""}
${e.length?H`
Default Keys
    ${e.map((t=>{const e=this.getEntryContext(t),i=this.buildIconElement(t,e);return H`
  • ${i} ${t.name}
  • `}))}
`:""} ${i.length?H`
Default Sources
    ${i.map((t=>{const e=this.getEntryContext(t),i=this.buildIconElement(t,e);return H`
  • ${i} ${t.name}
  • `}))}
`:""}
`}buildGeneralEditor(){return H`
Media Platform and Entity IDs
${this.buildSelector("Platform","platform",{select:{mode:"dropdown",options:qi,reorder:!1}},"Android TV")} ${this.buildSelector("Remote ID","remote_id",{entity:{filter:{domain:"remote"}}})} ${this.buildSelector("Keyboard ID","keyboard_id",{entity:{filter:{domain:["remote","media_player"]}}})} ${this.buildSelector("Media Player ID","media_player_id",{entity:{filter:{domain:"media_player"}}})}
Action Timings
${this.buildSelector("Hold time","hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},nn)} ${this.buildSelector("Repeat delay","repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},on)} ${this.buildSelector("Double tap window","double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},en)}
Miscellaneous
${this.buildCodeEditor("jinja2")}
${this.buildSelector("Autofill","autofill_entity_id",{boolean:{}},an)} ${this.buildSelector("Haptics","haptics",{boolean:{}},rn)}
${this.buildSelector("Title","title",{text:{}})}
`}buildErrorPanel(){return H`${this.errors&&this.errors.length>0?H`
${this.hass.localize("ui.errors.config.error_detected")}:
    ${this.errors.map((t=>H`
  • ${t}
  • `))}
`:""}`}buildAlertBox(t="Set the action below, and then use the code editor to set a data field to the feature's new value using a template like '{{ value | float }}'.",e="info"){return H``}buildPeopleList(){this.people=[];const t=Object.keys(this.hass.states).filter((t=>t.startsWith("person.")));for(const e of t)this.people.push({value:this.hass.states[e].attributes.user_id,label:this.hass.states[e].attributes.friendly_name??this.hass.states[e].attributes.id??e})}render(){if(!this.hass)return H``;if(!this.autofillCooldown){this.autofillCooldown=!0;const t=this.autofillDefaultFields(this.config);this.configChanged(t),setTimeout((()=>this.autofillCooldown=!1),1e3)}this.buildPeopleList();const t={config:{...this.config,entity:(0,ft.renderTemplate)(this.hass,this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??"")}},e=(0,ft.renderTemplate)(this.hass,this.config.platform??"Android TV",t),[i,n]=Ln(e);this.DEFAULT_KEYS=i,this.DEFAULT_SOURCES=n,this.DEFAULT_ACTIONS=[...i,...n];const o=this.buildTabBar(this.baseTabIndex,this.handleBaseTabSelected,this.BASE_TABS);let a;switch(this.baseTabIndex){case 3:case 2:a=this.entryIndex>-1&&this.activeEntry?H`${this.buildEntryEditor()}`:H`${this.buildEntryList()}${this.buildAddEntryButton()}`;break;case 1:a=this.buildLayoutEditor();break;default:a=this.buildGeneralEditor()}return H`${o}${a}${this.buildErrorPanel()}`}renderTemplate(t,e){e={render:t=>this.renderTemplate(t,e),...e};const i=(0,ft.renderTemplate)(this.hass,t,e);if(i!=t)return i;if("string"==typeof t)for(const i of["VALUE","HOLD_SECS","UNIT"]){if(t==i)return e[i];t.includes(i)&&(t=t.replace(new RegExp(i,"g"),e[i]??""))}return t}getEntryContext(t){const e={VALUE:0,HOLD_SECS:0,UNIT:"",value:0,hold_secs:0,unit:"",config:{...t,entity:"",attribute:""}};e.config.attribute=this.renderTemplate(t?.value_attribute??"state",e),e.config.entity=this.renderTemplate(t?.entity_id??(Array.isArray(t?.tap_action?.target?.entity_id)?t?.tap_action?.target?.entity_id?.[0]:t?.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id,e);const i=this.renderTemplate(t?.unit_of_measurement,e);e.UNIT=i,e.unit=i;const n=this.getFeatureValue(e.config.entity,e.config.attribute);return e.VALUE=n,e.value=n,e}getFeatureValue(t,e){if(this.hass.states[t]){if("state"!=e&&e){let i;const n=e.match(/\[\d+\]$/);if(n){const o=parseInt(n[0].replace(/\[|\]/g,""));return e=e.replace(n[0],""),i=this.hass.states[t].attributes[e],i&&Array.isArray(i)&&i.length?i[o]:void 0}if(i=this.hass.states[t].attributes[e],null!=i||"elapsed"==e)switch(e){case"brightness":return Math.round(100*parseInt(i??0)/255);case"elapsed":if(t.startsWith("timer.")){const e=this.hass.states[t].attributes.duration.split(":"),i=3600*parseInt(e[0])+60*parseInt(e[1])+parseInt(e[2]);if("idle"==this.hass.states[t].state)return 0;if("active"==this.hass.states[t].state){const e=(Date.parse(this.hass.states[t].attributes.finishes_at)-Date.now())/1e3,n=Math.floor(i-e);return Math.min(n,i)}{const e=this.hass.states[t].attributes.remaining.split(":"),n=3600*parseInt(e[0])+60*parseInt(e[1])+parseInt(e[2]);return Math.floor(i-n)}}default:return i}return i}return this.hass.states[t].state}return""}updatePlatform(t){switch(t){case"KODI":case"Kodi":return"Kodi";case"ROKU":case"Roku":return"Roku";case"FIRE":case"FIRETV":case"FIRE_TV":case"FIRE TV":case"Fire TV":return"Fire TV";case"APPLE TV":case"Apple TV":return"Apple TV";case"SAMSUNG TV":case"Samsung TV":return"Samsung TV";case"WEBOS":case"LG webOS":return"LG webOS";case"ANDROID":case"ANDROIDTV":case"ANDROID_TV":case"ANDROID TV":case"Android TV":return"Android TV";default:return}}autofillDefaultFields(t){const e=structuredClone(t),i=[];for(const t of e.custom_actions??[])i.push(this.autofillDefaultEntryFields(e,t));return e.custom_actions=i,e}autofillDefaultEntryFields(t,e,i,n){const o=this.getEntryContext(e);if(this.renderTemplate(e.autofill_entity_id??t.autofill_entity_id??an,o)){if(i&&n){const t=structuredClone(this.DEFAULT_ACTIONS.filter((t=>t.name==i))[0])??{},o=t[n];e={...o,...e}}else{const t=structuredClone(this.DEFAULT_ACTIONS.filter((t=>t.name==this.renderTemplate(e.name,o)))[0])??{};e={...t,...e,value_attribute:e.value_attribute??t.value_attribute}}for(const t of Ji)if(e[t]){const i=e[t]??{};switch(this.renderTemplate(i.action,o)){case"keyboard":case"textbox":case"search":case"key":case"source":break;case"toggle":case"more-info":case"service":case"perform-action":for(const t of["entity_id","device_id","area_id","label_id"])i.data?.[t]&&(i.target=i.target??{},i.target[t]=i.data?.[t],delete i.data?.[t]);default:delete i.keyboard_id,delete i.keyboard_prompt,delete i.remote_id,delete i.media_player_id,delete i.platform}e[t]=i}if("touchpad"==this.renderTemplate(e.type,o))for(const i of tn)e[i]&&(e[i]=this.autofillDefaultEntryFields(t,e[i]??{},this.renderTemplate(e.name,o),i))}return e}handleUpdateDeprecatedConfig(){let t=this.updateDeprecatedFields(this.config);t=this.autofillDefaultFields(t),this.configChanged(t)}updateDeprecatedFields(t=this.config){const e=structuredClone(t);if("adb_id"in e&&(e.keyboard_id=e.adb_id,delete e.adb_id),"keyboard_mode"in e&&(e.platform=e.keyboard_mode,delete e.keyboard_mode),e.platform=this.updatePlatform(e.platform),"enable_button_feedback"in e&&(e.haptics=e.enable_button_feedback),"button_haptics"in e&&(e.haptics=e.button_haptics),!e.rows){const i=[],n=Object.keys(e).filter((t=>t.includes("_row")));for(const o of n){let n=t[o];"string"==typeof n&&(n=[n]),"volume_row"==o?n=["volume_"+n[0]]:"navigation_row"==o&&(n=["navigation_"+n[0]]),i.push(n),delete e[o]}e.rows=i}const i=JSON.stringify(e.rows??[]).replace(/vol_buttons/g,"volume_buttons").replace(/nav_buttons/g,"navigation_buttons").replace(/d_pad/g,"dpad").replace(/direction_pad/g,"dpad").replace(/num_pad/g,"numpad").replace(/number_pad/g,"numpad").replace(/x_pad/g,"xpad").replace(/gamepad/g,"xpad").replace(/xgamepad/g,"xpad").replace(/x_gamepad/g,"xpad").replace(/n_pad/g,"npad").replace(/ngamepad/g,"npad").replace(/n_gamepad/g,"npad").replace(/volume_slider/g,"slider").replace(/nav_touchpad/g,"touchpad").replace(/navigation_touchpad/g,"touchpad");if(e.rows=JSON.parse(i),!Array.isArray(e.custom_icons)&&"object"==typeof e.custom_icons&&null!=e.custom_icons){const t=[];for(const i of Object.keys(e.custom_icons))t.push({name:i,path:e?.custom_icons?.[i]});e.custom_icons=t}let n=[];if(Array.isArray(e.custom_actions)||"object"!=typeof e.custom_actions||null==e.custom_actions)n=e.custom_actions??[];else for(const t of Object.keys(e.custom_actions))n.push({...e.custom_actions?.[t],name:t});for(const t of["custom_keys","custom_sources"])if(t in e){for(const i of Object.keys(e[t]))n.push({...e[t]?.[i],name:i});delete e[t]}const o=n.findIndex((t=>"slider"==t.name)),a=n[o]??{type:"slider",name:"slider"};let r=!1;if("slider_style"in e){let t=a.styles??"";t+="\n:host {";const i=e.slider_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",a.styles=t.trim(),delete e.slider_style,r=!0}if("tooltip"in a){let t=a.styles??"";t+=`\n.tooltip {\n display: {{ "initial" if render(${a.tooltip}) else "none" }};\n}`,a.styles=t.trim(),r=!0}if("slider_range"in e&&(a.range=e.slider_range,delete e.slider_range,r=!0),"slider_step"in e&&(a.step=e.slider_step,delete e.slider_step,r=!0),"slider_attribute"in e&&(a.value_attribute=e.slider_attribute,delete e.slider_attribute,r=!0),"enable_slider_feedback"in e&&(a.haptics=e.enable_slider_feedback,delete e.enable_slider_feedback,r=!0),"slider_haptics"in e&&(a.haptics=e.slider_haptics,delete e.slider_haptics,r=!0),"slider_id"in e){e.media_player_id||(e.media_player_id=e.slider_id),a.entity_id=a.entity_id??e.slider_id??t.media_player_id??"";const i=a.tap_action??this.DEFAULT_KEYS.filter((t=>"slider"==t.name))[0].tap_action;if(i){const t=i.data??{},n=i.target??{};"entity_id"in n||(n.entity_id=t.entity_id??e.slider_id,delete t.entity_id),i.data=t,i.target=n}a.tap_action=i,delete e.slider_id,r=!0}if(r){const t=this.DEFAULT_KEYS.filter((t=>"slider"==t.name))[0];o>-1?n[o]={...structuredClone(t),...a}:n.push({...structuredClone(t),...a})}const s=n.findIndex((t=>"touchpad"==t.name)),c=n[s]??{type:"touchpad",name:"touchpad"};let l=!1;if("touchpad_style"in e){let t=c.styles??"";t+="\ntoucharea {";const i=e.touchpad_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",c.styles=t.trim(),delete e.touchpad_style,l=!0}if("touchpad_height"in e){let t=c.styles??"";t+=`\ntoucharea {\n height: ${e.touchpad_height};\n}`,c.styles=t.trim(),delete e.touchpad_height,l=!0}"enable_touchpad_feedback"in e&&(c.haptics=e.enable_touchpad_feedback,delete e.enable_touchpad_feedback,l=!0),"touchpad_haptics"in e&&(c.haptics=e.touchpad_haptics,delete e.touchpad_haptics,l=!0),"enable_double_click"in e&&(c.double_tap_action={action:"key",key:e.double_click_keycode??"BACK"},delete e.enable_double_click,delete e.double_click_keycode,l=!0),"long_click_keycode"in e&&(c.hold_action={action:"key",key:e.long_click_keycode??"DPAD_CENTER"},l=!0);const u=this.DEFAULT_KEYS.filter((t=>"touchpad"==t.name))[0];if(e.rows.toString().includes("touchpad")){const t=n.filter((t=>"center"==t.name))[0];if(t){for(const e of Ji)t[e]?c[e]=t[e]:u[e]&&!c[e]&&(c[e]=u[e]);l=!0}for(const t of tn){const i=n.filter((e=>e.name==t))[0];!c[t]&&i&&e.rows.toString().includes("touchpad")&&(c[t]=i,delete c[t]?.icon,l=!0)}}if(l){for(const t of tn)c[t]||(c[t]=structuredClone(u[t]??{}),delete c[t]?.type,delete c[t]?.icon);s>-1?n[s]={...structuredClone(u),...c}:n.push({...structuredClone(u),...c})}for(const[t,e]of n.entries()){const i=this.updateDeprecatedActionFields(e,n);for(const t of tn)i[t]&&(i[t]=this.updateDeprecatedActionFields(i[t],n));n[t]=i}if(e.style){let t=e.styles??"";t+="\n:host {";const i=e.style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",e.styles=t.trim(),delete e.style}if(e.button_style){let t=e.styles??"";t+="\nremote-button {";const i=e.button_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",e.styles=t.trim(),delete e.button_style}if(e.row_styles){let t=e.styles??"";const i=e.row_styles;for(const e in i){if(e.includes("-"))t+=`\n#${e} {`;else if("rows"==e)t+="\n.row {";else{if("columns"!=e)continue;t+="\n.column {"}for(const n in i[e])t+=`\n ${n}: ${i[e][n]};`;t+="\n}"}e.styles=t.trim(),delete e.row_styles}return e.custom_actions=n,e}updateDeprecatedActionFields(t,e){let i=structuredClone(t);"svg_path"in i&&(i.icon=i.svg_path);const n=["key","source","service","service_data","data","target","navigation_path","navigation_replace","url_path","confirmation","pipeline_id","start_listening"],o=i.tap_action??{};let a=!1;for(const t of n)t in i&&(a=!0,o[t]=i[t],delete i[t]);a&&(i.tap_action=o);for(const t of Ji)if(t in i){const e=i[t];e&&(e.action?"call-service"==e.action&&(e.action="perform-action",e.perform_action=e.service??"",delete e.service):e.key?e.action="key":e.source?e.action="source":e.perform_action?e.action="perform-action":e.service?(e.action="perform-action",e.perform_action=e.service,delete e.service):e.navigation_path?e.action="navigate":e.url_path?e.action="url":e.browser_mod?e.action="fire-dom-event":e.pipeline_id||e.start_listening?e.action="assist":e.action="none",e.service_data&&(e.data={...e.service_data,...e.data},delete e.service_data),i[t]=e)}if(i.type=(i.type??"button").toLowerCase(),i.style){let t=i.styles??"";t+="\n:host {";const e=i.style;for(const i in e)t+=`\n ${i}: ${e[i]};`;t+="\n}",i.styles=t.trim(),delete i.style}if("template"in t){const n=e?.filter((e=>t.template==e.name))[0]??this.DEFAULT_ACTIONS.filter((e=>t.template==e.name))[0]??{};i=xn(structuredClone(n),t),delete i.template}return i}static get styles(){return r`:host{display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}.content{padding:12px;display:inline-flex;flex-direction:column;gap:24px;box-sizing:border-box;width:100%}.action-options{display:inline-flex;flex-direction:column;gap:8px;box-sizing:border-box;width:100%}ha-expansion-panel{display:block;border-radius:6px;border:solid 1px var(--outline-color);--ha-card-border-radius:6px;--expansion-panel-content-padding:0}ha-icon{display:flex;color:var(--secondary-text-color)}.add-list-item{margin:0 18px 12px}ha-button{width:fit-content;--mdc-icon-size:100%}ha-list-item{text-transform:capitalize}.features{max-height:480px;overflow:auto;overflow-y:scroll}.feature-list-item{display:flex;align-items:center;pointer-events:none}.handle{display:flex;align-items:center;cursor:move;cursor:grab;padding-right:8px;padding-inline-end:8px;padding-inline-start:initial;direction:var(--direction);pointer-events:all}.feature-list-item-content{height:60px;font-size:16px;display:flex;align-items:center;justify-content:flex-start;flex-grow:1;gap:8px}.primary:first-letter{text-transform:capitalize}.feature-list-item-label{display:flex;flex-direction:column}.secondary{font-size:12px;color:var(--secondary-text-color)}.copy-icon,.edit-icon,.remove-icon{color:var(--secondary-text-color);pointer-events:all;--mdc-icon-button-size:36px}.header{display:inline-flex;justify-content:space-between;align-items:center}.text-icon{color:var(--mdc-dialog-content-ink-color,rgba(0,0,0,.6))}.back-title{display:flex;align-items:center;font-size:18px}.wrapper{width:100%}.gui-editor{display:inline-flex;flex-direction:column;gap:24px;padding:8px 0;width:100%}.yaml-editor{display:inline-flex;flex-direction:column;padding:8px 0;width:100%}ha-code-editor{--code-mirror-max-height:calc(100vh - 245px)}.layout-editor{display:flex;flex-direction:column;font-weight:500}.actions-list-container{background:var(--code-editor-background-color,var(--mdc-text-field-fill-color,#f5f5f5));padding:4px;border-radius:4px}.default-action-lists-container{display:flex;flex-direction:row}.action-list-container{max-height:285px;overflow:scroll}.custom-action-list-container{max-height:190px}.action-list{columns:1;-webkit-columns:1;-moz-columns:1;margin-top:4px;padding-left:4px}.custom-action-list{columns:2;-webkit-columns:2;-moz-columns:2}.action-list-item::marker{content:''}.action-list-item{display:flex;flex-direction:row;align-items:center;gap:4px;padding:2px 0}.action-list-item-label{width:100%;background:0 0;border:none;outline:0;font-family:monospace;font-size:14px}.error,.info{word-break:break-word;margin-top:8px}.error{color:var(--error-color)}.error ul{margin:4px 0}.error li,.warning li{white-space:pre-wrap}.title-header{font-size:20px;font-weight:500;padding:12px 4px}.panel-header{display:inline-flex;gap:4px}.style-header{font-size:var(--mdc-typography-body1-font-size,1rem);font-weight:500;padding:8px}.form{display:grid;grid-template-columns:repeat(var(--form-grid-column-count,auto-fit),minmax(var(--form-grid-min-width,200px),1fr));gap:24px 8px}.custom-icon-picked{position:absolute;padding:16px;pointer-events:none}.custom-icon-preview{align-self:center;outline:1px dashed var(--primary-color);--mdc-icon-size:50%}`}}Tn([ht()],An.prototype,"hass",void 0),Tn([ht()],An.prototype,"config",void 0),Tn([dt()],An.prototype,"baseTabIndex",void 0),Tn([dt()],An.prototype,"entryIndex",void 0),Tn([dt()],An.prototype,"actionsTabIndex",void 0),Tn([dt()],An.prototype,"touchpadTabIndex",void 0),Tn([dt()],An.prototype,"guiMode",void 0),Tn([dt()],An.prototype,"errors",void 0);var Sn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let On=class extends st{constructor(){super(...arguments),this.onKeyDownFired=!1}getRokuId(t){return(this.config?.keyboard_id??"").split(".")[0]!=t?"media_player"===t?this.config?.media_player_id:this.config?.remote_id:this.config?.keyboard_id}forceCursorToEnd(){this.textarea.selectionStart=this.textarea.value.length,this.textarea.selectionEnd=this.textarea.value.length}forceCursorToEndEvent(t){t.preventDefault(),this.forceCursorToEnd()}kodiOnKeyDown(t){if(t.stopImmediatePropagation(),["Backspace","Enter"].includes(t.key)){const t=this.textarea?.value??"";this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:t,done:!1})}}kodiOnInput(t){t.stopImmediatePropagation();const e=this.textarea?.value??"";this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!1})}rokuOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"backspace",Enter:"enter"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:i}),"Enter"==e&&this.closeDialog())}rokuOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.hass.callService("remote","send_command",{entity_id:this.config?.keyboard_id,command:`Lit_${i}`});else if(!this.onKeyDownFired){const t={deleteContentBackward:"backspace",insertLineBreak:"enter"}[e??""];t&&this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:t})}this.onKeyDownFired=!1}fireTvOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"67",Enter:"66"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input keyevent ${i}`}),"Enter"==e&&this.closeDialog())}fireTvOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.androidTvSendText(i);else if(!this.onKeyDownFired){const t={deleteContentBackward:"67",insertLineBreak:"66"}[e??""];t&&this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input keyevent ${t}`})}this.onKeyDownFired=!1}androidTvOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"DEL",Enter:"ENTER"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:i}),"Enter"==e&&this.closeDialog())}androidTvOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.androidTvSendText(i);else if(!this.onKeyDownFired){const t={deleteContentBackward:"DEL",insertLineBreak:"ENTER"}[e??""];t&&(this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:t}),"insertLineBreak"==e&&this.closeDialog())}this.onKeyDownFired=!1}androidTvEnterAndClose(){this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:"ENTER"}),this.closeDialog()}androidTvSendText(t){this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${t}"`})}keyboardOnPaste(t){t.stopImmediatePropagation(),"Kodi"!=this.config?.platform&&this.forceCursorToEnd();const e=t.clipboardData?.getData("Text");if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:this.textarea?.value??"",done:!1});break;case"Roku":this.hass.callService("remote","send_command",{entity_id:this.config?.keyboard_id,command:`Lit_${e}`});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${e}"`})}}textBox(t){const e=this.textarea?.value;if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!1});break;case"Roku":this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:`Lit_${e}`});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${e}"`})}this.closeDialog()}search(t){const e=this.textarea?.value;if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!0});break;case"Roku":this.hass.callService("roku","search",{entity_id:this.getRokuId("media_player"),keyword:e});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`am start -a "android.search.action.GLOBAL_SEARCH" --es query "${e}"`})}this.closeDialog()}showDialog(t){this.config=t.detail,"media_player"===(this.config?.keyboard_id??"").split(".")[0]?(this.domain="androidtv",this.service="adb_command"):(this.domain="remote",this.service="send_command");const e=this.shadowRoot?.querySelector("dialog");if(e){try{e.showModal()}catch{e.close(),e.showModal()}window.addEventListener("popstate",(()=>this.closeDialog()))}this.textarea=this.shadowRoot?.querySelector("textarea");const i=this.textarea;"Kodi"==this.config?.platform&&"search"==this.config?.action&&this.hass.callService("kodi","call_method",{entity_id:this.config.keyboard_id,method:"Addons.ExecuteAddon",addonid:"script.globalsearch"}),setTimeout((()=>{i&&i.focus()}),.4)}cancelDialog(t){t.preventDefault(),this.closeDialog()}closeDialog(t){const e=this.shadowRoot?.querySelector("dialog");if(e){try{e.close()}catch{e.showModal(),e.close()}window.removeEventListener("popstate",(()=>this.closeDialog()))}this.textarea&&(this.textarea.value="",this.textarea.blur()),this.config=void 0,this.domain=void 0,this.service=void 0,this.textarea=void 0}buildDialogButton(t,e){return H`
${t}
`}render(){let t,e,i,n,o=H``,a=this.forceCursorToEndEvent;switch(this.config?.action){case"search":t="Search for something...",o=H`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Search",this.search)}`;break;case"textbox":t="Type something...",o=H`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Send",this.textBox)}`;break;default:switch(this.config?.platform){case"Kodi":e=this.kodiOnInput,i=this.kodiOnKeyDown,a=void 0;break;case"Roku":e=this.rokuOnInput,i=this.rokuOnKeyDown;break;case"Fire TV":e=this.fireTvOnInput,i=this.fireTvOnKeyDown;break;default:e=this.androidTvOnInput,i=this.androidTvOnKeyDown}t="Type something...",n=this.keyboardOnPaste,o=H`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Enter",this.androidTvEnterAndClose)}`}t=this.config?.keyboard_prompt??t;const r=H``;return H`${r}
${o}
`}static get styles(){return r`:host{-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}dialog{height:0;width:0;display:inline-flex;flex-direction:column;position:fixed;border:none;background:var(--ha-card-background,var(--card-background-color,#fff));border-radius:var(--ha-card-border-radius,12px);opacity:0;transition:all .1s ease-in-out;pointer-events:none}dialog[open]{height:fit-content;width:85%;opacity:1;transition:all .1s ease-in-out;pointer-events:all}textarea{position:relative;height:180px;padding:8px;outline:0;background:0 0;border:none;resize:none;font-family:inherit;font-weight:500;font-size:30px}.buttons{height:36px;display:inline-flex;flex-direction:row;justify-content:space-between;margin:0 12px}.button{height:100%;width:min-content;align-content:center;cursor:pointer;border-radius:var(--mdc-shape-small,4px);overflow:hidden}button{height:100%;width:100%;background:0 0;opacity:1;border:none;overflow:hidden;cursor:pointer;padding:0}@media (hover:hover){button:hover{background:var(--ha-ripple-color);opacity:var(--md-ripple-hover-opacity)}}button:active{background:var(--ha-ripple-color);opacity:var(--md-ripple-pressed-opacity)}.button span{font-family:inherit;font-size:var(--paper-font-body1_-_font-size);font-weight:600;text-transform:uppercase;color:var(--mdc-theme-primary,#6200ee);user-select:none;-webkit-user-select:none;-moz-user-select:none;position:relative;top:-32px;padding:0 8px;pointer-events:none}dialog::backdrop{background:#000;opacity:.7}`}};var Mn,$n,In;Sn([ht()],On.prototype,"hass",void 0),Sn([dt()],On.prototype,"config",void 0),On=Sn([lt("keyboard-dialog")],On),(In=Mn||(Mn={})).language="language",In.system="system",In.comma_decimal="comma_decimal",In.decimal_comma="decimal_comma",In.space_comma="space_comma",In.none="none",function(t){t.language="language",t.system="system",t.am_pm="12",t.twenty_four="24"}($n||($n={})),new Set(["fan","input_boolean","light","switch","group","automation"]);new Set(["call-service","divider","section","weblink","cast","select"]);var Nn=function(t){!function(t,e,i,n){n=n||{},i=null==i?{}:i;var o=new Event(e,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});o.detail=i,t.dispatchEvent(o)}(window,"haptic",t)},Pn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};class Rn extends st{constructor(){super(...arguments),this.icons=[],this.renderRipple=!0,this.value=0,this.getValueFromHass=!0,this.unitOfMeasurement="",this.fireMouseEvent=!0,this.swiping=!1}fireHapticEvent(t){(this.renderTemplate(this.config.haptics)??1)&&Nn(t)}endAction(){this.momentaryStart=void 0,this.momentaryEnd=void 0,this.swiping=!1,this.initialX=void 0,this.initialY=void 0}sendAction(t,e=this.config){let i;switch(t){case"momentary_start_action":i=e.momentary_start_action;break;case"momentary_end_action":i=e.momentary_end_action;break;case"multi_hold_action":i=e.multi_hold_action??e.hold_action??e.multi_tap_action??e.tap_action;break;case"multi_double_tap_action":i=e.multi_double_tap_action??e.double_tap_action??e.multi_tap_action??e.tap_action;break;case"multi_tap_action":i=e.multi_tap_action??e.tap_action;break;case"hold_action":i=e.hold_action??e.tap_action;break;case"double_tap_action":i=e.double_tap_action??e.tap_action;break;default:i=e.tap_action}if(i&&(i=this.deepRenderTemplate(i),this.handleConfirmation(i)))try{switch(i.action){case"navigate":this.navigate(i);break;case"url":this.url(i);break;case"assist":this.assist(i);break;case"more-info":this.moreInfo(i);break;case"toggle":this.toggle(i);break;case"call-service":case"perform-action":this.callService(i);break;case"source":this.source(i);break;case"key":this.key(i,t);break;case"fire-dom-event":this.fireDomEvent(i);break;case"textbox":case"search":case"keyboard":this.keyboard(i)}}catch(t){throw this.endAction(),t}}key(t,e){const i={entity_id:t.remote_id??"",command:t.key??""};"hold_action"!=e||this.config.hold_action||(i.hold_secs=.5),this.hass.callService("remote","send_command",i)}source(t){this.hass.callService("remote","turn_on",{entity_id:t.remote_id??"",activity:t.source??""})}callService(t){const[e,i]=(t.perform_action??t.service).split(".");this.hass.callService(e,i,t.data,t.target)}navigate(t){const e=t.navigation_path??"",i=t.navigation_replace??!1;if(e.includes("//"))return void console.error('Protocol detected in navigation path. To navigate to another website use the action "url" with the key "url_path" instead.');1==i?window.history.replaceState(window.history.state?.root?{root:!0}:null,"",e):window.history.pushState(null,"",e);const n=new Event("location-changed",{bubbles:!1,cancelable:!0,composed:!1});n.detail={replace:1==i},window.dispatchEvent(n)}url(t){let e=t.url_path??"";e.includes("//")||(e=`https://${e}`),window.open(e)}assist(t){this.hass?.auth?.external?.config?.hasAssist?this.hass?.auth?.external?.fireMessage({type:"assist/show",payload:{pipeline_id:t.pipeline_id,start_listening:t.start_listening}}):window.open(`${window.location.href}?conversation=1`,"_self")}moreInfo(t){const e=new Event("hass-more-info",{bubbles:!0,cancelable:!0,composed:!0});e.detail={entityId:t.target?.entity_id},this.dispatchEvent(e)}toggle(t){const e={...t.data,...t.target};if(Array.isArray(e.entity_id))for(const t of e.entity_id)this.toggleSingle(t);else e.entity_id?this.toggleSingle(e.entity_id):this.hass.callService("homeassistant","toggle",e)}toggleSingle(t){const e=["closed","locked","off"].includes(this.hass.states[t].state);let i,n=t.split(".")[0];switch(n){case"lock":i=e?"unlock":"lock";break;case"cover":i=e?"open_cover":"close_cover";break;case"button":case"input_button":i="press";break;case"scene":i="turn_on";break;case"valve":i=e?"open_valve":"close_valve";break;default:n="homeassistant",i=e?"turn_on":"turn_off"}this.hass.callService(n,i,{entity_id:t})}keyboard(t){const e=new Event("keyboard-dialog-open",{composed:!0,bubbles:!0});e.detail=t,this.getRootNode().querySelector("keyboard-dialog").shadowRoot?.querySelector("dialog")?.dispatchEvent(e)}fireDomEvent(t){const e=new Event(t.event_type??"ll-custom",{composed:!0,bubbles:!0});e.detail=t,this.dispatchEvent(e)}handleConfirmation(t){if("confirmation"in t){const e=t.confirmation;if(0!=e){this.fireHapticEvent("warning");let i="";if(i=1!=e&&e?.text?e.text:`Are you sure you want to run action '${t.action}'?`,1==e){if(!confirm(i))return!1}else if(e?.exemptions){if(!e.exemptions?.map((t=>t.user)).includes(this.hass.user.id)&&!confirm(i))return!1}else if(!confirm(i))return!1}}return!0}setValue(){if(this.entityId=this.renderTemplate(this.config.entity_id),this.unitOfMeasurement=this.renderTemplate(this.config.unit_of_measurement)??"",this.getValueFromHass&&this.entityId)if(clearInterval(this.valueUpdateInterval),this.valueUpdateInterval=void 0,this.valueAttribute=this.renderTemplate(this.config.value_attribute??"state").toLowerCase(),this.hass.states[this.entityId])if("state"==this.valueAttribute)this.value=this.hass.states[this.entityId].state;else{let t;const e=this.valueAttribute.match(/\[\d+\]$/);if(e){const i=parseInt(e[0].replace(/\[|\]/g,""));this.valueAttribute=this.valueAttribute.replace(e[0],""),t=this.hass.states[this.entityId]?.attributes?.[this.valueAttribute],t=t&&Array.isArray(t)&&t.length?t[i]:void 0}else t=this.hass.states[this.entityId]?.attributes?.[this.valueAttribute];if(null!=t||"elapsed"==this.valueAttribute)switch(this.valueAttribute){case"brightness":this.value=Math.round(100*parseInt(t??0)/255);break;case"media_position":try{const e=()=>{"playing"==this.hass.states[this.entityId].state?this.value=Math.min(Math.floor(Math.floor(t)+(Date.now()-Date.parse(this.hass.states[this.entityId].attributes?.media_position_updated_at))/1e3),Math.floor(this.hass.states[this.entityId].attributes?.media_duration)):this.value=t};e(),this.valueUpdateInterval=setInterval(e,500)}catch(e){console.error(e),this.value=t}break;case"elapsed":if(this.entityId.startsWith("timer.")){if("idle"==this.hass.states[this.entityId].state)this.value=0;else{const t=this.hass.states[this.entityId].attributes?.duration.split(":"),e=3600*parseInt(t[0])+60*parseInt(t[1])+parseInt(t[2]),i=Date.parse(this.hass.states[this.entityId].attributes?.finishes_at);try{const t=()=>{if("active"==this.hass.states[this.entityId].state){const t=(i-Date.now())/1e3,n=Math.floor(e-t);this.value=Math.min(n,e)}else{const t=this.hass.states[this.entityId].attributes?.remaining.split(":"),i=3600*parseInt(t[0])+60*parseInt(t[1])+parseInt(t[2]);this.value=Math.floor(e-i)}};t(),this.valueUpdateInterval=setInterval(t,500)}catch(t){console.error(t),this.value=0}}break}default:this.value=t}else this.value=t}else this.value=void 0}renderTemplate(t,e){let i=0;this.momentaryStart&&this.momentaryEnd&&(i=(this.momentaryEnd-this.momentaryStart)/1e3),e={VALUE:this.value,HOLD_SECS:i??0,UNIT:this.unitOfMeasurement,value:this.value,hold_secs:i??0,unit:this.unitOfMeasurement,config:{...this.config,entity:this.entityId,attribute:this.valueAttribute},...e};let n=(e={render:t=>this.renderTemplate(t,e),...e}).value;null!=n&&"number"==typeof n&&null!=this.precision&&(n=Number(n).toFixed(this.precision),e={...e,VALUE:n,value:n});const o=(0,ft.renderTemplate)(this.hass,t,e);if(o!=t)return o;if("string"==typeof t)for(const i of["VALUE","HOLD_SECS","UNIT"]){if(t==i)return e[i];t.includes(i)&&(t=t.replace(new RegExp(i,"g"),e[i]??""))}return t}deepRenderTemplate(t,e){const i=structuredClone(t),n=wn(i);for(const t of n)En(i,t,this.renderTemplate(Cn(i,t),e));return i}buildIcon(t,e){t=this.renderTemplate(t??"",e);let i=H``;if(t)if(t.includes(":"))i=H``;else{const e=(this.icons??[]).filter((e=>e.name==t))[0]??pn.filter((e=>e.name==t))[0];i=H``}return H`
${i}
`}buildLabel(t,e){if(t){const i=this.renderTemplate(t,e);if(i)return H`
${i}
`}return""}buildRipple(){return this.renderRipple?H``:""}buildStyles(t,e){return t?H``:""}onStart(t){}onEnd(t){}onMove(t){}onMouseDown(t){this.fireMouseEvent&&this.onStart(t)}onMouseUp(t){this.fireMouseEvent&&this.onEnd(t),this.fireMouseEvent=!0}onMouseMove(t){this.fireMouseEvent&&this.onMove(t)}onTouchStart(t){this.fireMouseEvent=!1,this.onStart(t)}onTouchEnd(t){this.fireMouseEvent=!1,this.onEnd(t)}onTouchMove(t){this.fireMouseEvent=!1,this.onMove(t)}onContextMenu(t){if(!this.fireMouseEvent)return t.preventDefault(),t.stopPropagation(),!1}toggleRipple(){this.cancelRippleToggle(),this.renderRippleTransition=setTimeout((()=>this.rippleTransition=!1),400),this.renderRippleOff=setTimeout((()=>this.renderRipple=!1),800),this.renderRippleOn=setTimeout((()=>this.cancelRippleToggle()),850)}cancelRippleToggle(){clearTimeout(this.renderRippleOff),clearTimeout(this.renderRippleOn),clearTimeout(this.renderRippleTransition),this.renderRippleOff=void 0,this.renderRippleOn=void 0,this.renderRippleTransition=void 0,this.rippleTransition=!0,this.renderRipple=!0}static get styles(){return r`:host{display:flex;flex-flow:column;place-content:center space-evenly;align-items:center;position:relative;border:none;border-radius:10px;padding:0;box-sizing:border-box;outline:0;overflow:visible;font-size:inherit;color:inherit;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}md-ripple.transition-on{opacity:1 transition: opacity 375ms linear}md-ripple.transition-off{opacity:0;transition:opacity 375ms linear}.icon{pointer-events:none;position:relative;flex-flow:column;place-content:center;display:var(--icon-display,inline-flex);transform:var(--icon-transform);color:var(--icon-color,var(--primary-text-color));filter:var(--icon-filter, none);height:var(--size,48px);width:var(--size,48px);--mdc-icon-size:var(--size, 48px)}ha-icon,svg{display:inline-flex;flex-direction:column;justify-content:center;text-align:center;align-items:center;vertical-align:middle;height:var(--size,48px);width:var(--size,48px);pointer-events:none}.label{position:relative;pointer-events:none;justify-content:center;align-items:center;height:15px;line-height:15px;width:inherit;margin:0;font-family:inherit;font-size:12px;font-weight:700;display:var(--label-display,inline-flex);transform:var(--label-transform);color:var(--label-color,inherit);filter:var(--label-filter, none)}`}}Pn([ht()],Rn.prototype,"hass",void 0),Pn([ht()],Rn.prototype,"config",void 0),Pn([ht()],Rn.prototype,"icons",void 0),Pn([dt()],Rn.prototype,"renderRipple",void 0),Pn([dt()],Rn.prototype,"renderRippleOff",void 0),Pn([dt()],Rn.prototype,"renderRippleOn",void 0),Pn([dt()],Rn.prototype,"renderRippleTransition",void 0),Pn([dt()],Rn.prototype,"rippleTransition",void 0),Pn([dt()],Rn.prototype,"value",void 0),Pn([mt({passive:!0})],Rn.prototype,"onMouseDown",null),Pn([mt({passive:!0})],Rn.prototype,"onMouseMove",null),Pn([mt({passive:!0})],Rn.prototype,"onTouchStart",null),Pn([mt({passive:!0})],Rn.prototype,"onTouchMove",null);var Dn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let Fn=class extends Rn{constructor(){super(...arguments),this.clickCount=0,this.hold=!1}onClick(t){if(t.stopImmediatePropagation(),this.clickCount++,"none"!=this.renderTemplate(this.config.double_tap_action?.action??"none")){if(this.clickCount>1)this.fireHapticEvent("success"),this.sendAction("double_tap_action"),this.endAction();else if(!this.clickTimer){const t=this.config.double_tap_action?.double_tap_window?this.renderTemplate(this.config.double_tap_action?.double_tap_window):en;this.clickTimer=setTimeout((()=>{this.fireHapticEvent("light"),this.sendAction("tap_action"),this.endAction()}),t)}}else this.fireHapticEvent("light"),this.sendAction("tap_action"),this.endAction()}onStart(t){if(this.cancelRippleToggle(),this.swiping=!1,"targetTouches"in t?(this.initialX=t.targetTouches[0].clientX,this.initialY=t.targetTouches[0].clientY):(this.initialX=t.clientX,this.initialY=t.clientY),"none"!=this.renderTemplate(this.config.momentary_start_action?.action??"none"))this.fireHapticEvent("light"),this.momentaryStart=performance.now(),this.sendAction("momentary_start_action");else if("none"!=this.renderTemplate(this.config.momentary_end_action?.action??"none"))this.fireHapticEvent("light"),this.momentaryStart=performance.now();else if(!this.holdTimer){const t=this.renderTemplate(this.config.hold_action?.hold_time??nn);this.holdTimer=setTimeout((()=>{if(!this.swiping)if(this.hold=!0,"repeat"==this.renderTemplate(this.config.hold_action?.action)){const t=this.renderTemplate(this.config.hold_action?.repeat_delay??on);this.holdInterval||(this.holdInterval=setInterval((()=>{this.fireHapticEvent("selection"),this.sendAction("tap_action")}),t))}else this.fireHapticEvent("medium"),this.sendAction("hold_action")}),t)}}onEnd(t){this.swiping||("none"!=this.renderTemplate(this.config.momentary_end_action?.action??"none")?(this.fireHapticEvent("selection"),this.momentaryEnd=performance.now(),this.sendAction("momentary_end_action"),this.endAction()):"none"!=this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.endAction():this.hold?(t.stopImmediatePropagation(),t.preventDefault(),this.endAction()):this.onClick(t)),this.toggleRipple()}onMove(t){let e,i;"targetTouches"in t?(e=t.targetTouches[0].clientX,i=t.targetTouches[0].clientY):(e=t.clientX,i=t.clientY);const n=(this.initialX??e)-e,o=(this.initialY??i)-i;Math.abs(Math.abs(n)-Math.abs(o))>24&&(this.endAction(),this.swiping=!0)}onMouseLeave(t){this.endAction(),this.swiping=!0,this.toggleRipple()}onTouchCancel(t){this.endAction(),this.toggleRipple()}endAction(){clearTimeout(this.clickTimer),this.clickTimer=void 0,this.clickCount=0,clearTimeout(this.holdTimer),clearInterval(this.holdInterval),this.holdTimer=void 0,this.holdInterval=void 0,this.hold=!1,super.endAction()}render(){return this.setValue(),H` ${this.buildStyles(this.config.styles)}`}static get styles(){return[super.styles,r`:host{align-content:center;text-align:center}button{display:flex;height:inherit;width:inherit;border-radius:var(--size,48px);overflow:visible;cursor:pointer;pointer-events:all;position:relative;opacity:1;padding:0;background:rgb(0,0,0,0);border:none;flex-direction:column;align-content:center;text-align:center;justify-content:center;align-items:center;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}`]}};Dn([ht()],Fn.prototype,"config",void 0),Fn=Dn([lt("remote-button")],Fn);class Kn{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}const jn="important",Vn=" !"+jn,Bn=(t=>(...e)=>({_$litDirective$:t,values:e}))(class extends Kn{constructor(t){if(super(t),1!==t.type||"style"!==t.name||t.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((e,i)=>{const n=t[i];return null==n?e:e+`${i=i.includes("-")?i:i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${n};`}),"")}update(t,[e]){const{style:i}=t.element;if(void 0===this.ut)return this.ut=new Set(Object.keys(e)),this.render(e);for(const t of this.ut)null==e[t]&&(this.ut.delete(t),t.includes("-")?i.removeProperty(t):i[t]=null);for(const t in e){const n=e[t];if(null!=n){this.ut.add(t);const e="string"==typeof n&&n.endsWith(Vn);t.includes("-")||e?i.setProperty(t,e?n.slice(0,-11):n,e?jn:""):i[t]=n}}return Y}});var Un=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let Hn=class extends Rn{constructor(){super(...arguments),this.showTooltip=!1,this.thumbOffset=0,this.sliderOn=!0,this.currentValue=this.value,this.speed=.02,this.range=[0,1],this.step=.01,this.sliderWidth=0,this.sliderHeight=0,this.vertical=!1,this.thumbWidth=50,this.resizeObserver=new ResizeObserver((t=>{for(const e of t)this.sliderWidth=this.vertical?e.contentRect.height:e.contentRect.width,this.sliderHeight=this.vertical?e.contentRect.width:e.contentRect.height,this.setThumbOffset()})),this.rtl=!1}onInput(t){const e=t.currentTarget;if(this.swiping)null==this.value&&(this.getValueFromHass=!0),this.setValue(),this.currentValue=this.value??0,this.setThumbOffset(),this.showTooltip=!1;else{this.getValueFromHass=!1,clearTimeout(this.getValueFromHassTimer),this.value=e.value,this.fireHapticEvent("selection");const t=parseFloat(this.oldValue??this.value??"0"),i=parseFloat(e.value??t);this.newValue=i,this.currentValue=t,this.setThumbOffset(),this.showTooltip=!0,i>this.range[0]&&(this.sliderOn=!0),clearInterval(this.intervalId),this.intervalId=void 0;let n=t;t>i?this.intervalId=setInterval((()=>{n-=this.speed,this.currentValue=n,this.setThumbOffset(),i>=n&&(clearInterval(this.intervalId),this.intervalId=void 0,this.currentValue=i,this.setThumbOffset())}),1):t{n+=this.speed,this.currentValue=n,this.setThumbOffset(),i<=n&&(clearInterval(this.intervalId),this.intervalId=void 0,this.currentValue=i,this.setThumbOffset())}),1)):this.currentValue=i,this.oldValue=i}}onStart(t){const e=t.currentTarget;this.swiping||(this.getValueFromHass=!1,clearTimeout(this.getValueFromHassTimer),this.currentValue=e.value,this.value=e.value,this.setThumbOffset(),this.showTooltip=!0,this.sliderOn=!0)}onEnd(t){this.setThumbOffset(),this.showTooltip=!1,this.setValue(),this.swiping?(this.getValueFromHass=!0,this.setValue(),this.currentValue=this.value??0,this.setThumbOffset(),this.setSliderState(this.currentValue)):(this.newValue||0==this.newValue||(this.newValue=Number(this.value)),this.precision||(this.newValue=Math.trunc(this.newValue)),this.value=this.newValue,this.fireHapticEvent("light"),this.sendAction("tap_action")),this.endAction(),this.resetGetValueFromHass()}onMove(t){if(!this.vertical){let e,i;e="clientX"in t?t.clientX:t.touches[0].clientX,i="clientY"in t?t.clientY:t.touches[0].clientY,null==this.initialY&&(this.initialY=i),null==this.initialX?this.initialX=e:Math.abs(e-this.initialX)this.range[0]}resetGetValueFromHass(){const t=this.renderTemplate(this.config.value_from_hass_delay??1e3);this.getValueFromHassTimer=setTimeout((()=>this.getValueFromHass=!0),t)}endAction(){clearInterval(this.valueUpdateInterval),this.valueUpdateInterval=void 0,super.endAction()}buildBackground(){const t={};return this.vertical&&(t.transform=`rotateZ(${this.rtl?"90":"270"}deg)`,t.width=`${this.sliderWidth}px`,t.height=`var(--background-height, ${this.sliderHeight}px)`),H`
`}buildTooltip(){return H`
`}buildSliderStyles(t){let e,i;const n=this.shadowRoot?.querySelector(".container");if(n){const t=getComputedStyle(n);e=t.getPropertyValue("height"),i=t.getPropertyValue("width")}const o=`'${this.renderTemplate("{{ value }}{{ unit }}",t)}'`;let a,r;this.vertical?(a=`translate(calc(-0.3 * ${i??"var(--height)"} - 0.8em - 18px), calc(-1 * var(--thumb-offset)))`,r="translateY(calc(-1 * var(--thumb-offset)))"):(a=`translate(var(--thumb-offset), calc(-0.5 * ${e??"var(--height)"} - 0.4em - 10px))`,r="translateX(var(--thumb-offset))");const s=`\n\t\t:host {\n\t\t\t--tooltip-label: ${o};\n\t\t\t--tooltip-transform: ${a};\n\t\t\t--icon-transform: ${r};\n\t\t}\n\t\t${this.rtl?"\n\t\t.slider::-webkit-slider-thumb {\n\t\t\tscale: -1;\n\t\t}\n\t\t.slider::-moz-range-thumb {\n\t\t\tscale: -1;\n\t\t}\n\t\t":""}\n\t\t`;return H``}buildSlider(t=this.config,e){const i=e.value;this.setSliderState(i);const n={};return"none"==this.renderTemplate(t.tap_action?.action,e)&&(n["pointer-events"]="none"),this.vertical&&(n.transform=`rotateZ(${this.rtl?"90":"270"}deg)`,n.height=`${this.sliderHeight}px`,n.width=`${this.sliderWidth}px`,n["touch-action"]="none"),H``}render(){this.setValue(),this.getValueFromHass&&(this.currentValue=this.value);const t={VALUE:this.getValueFromHass?this.value:this.currentValue,value:this.getValueFromHass?this.value:this.currentValue};this.config.range&&(this.range[0]=parseFloat(this.renderTemplate(this.config.range[0],t)??0),this.range[1]=parseFloat(this.renderTemplate(this.config.range[1],t)??1)),this.speed=(this.range[1]-this.range[0])/50,this.config.step?this.step=Number(this.renderTemplate(this.config.step,t)):this.step=(this.range[1]-this.range[0])/100;const e=this.step.toString().split(".");e.length>1?this.precision=e[1].length:this.precision=0,this.vertical=1==this.renderTemplate(this.config.vertical??!1,t),this.resizeObserver.observe(this);const i={},n=this.shadowRoot?.querySelector("input");if(n){const t=getComputedStyle(n),e=t.getPropertyValue("--thumb-width"),o=t.getPropertyValue("--height");this.thumbWidth=e?parseInt(e.replace(/[^0-9]+/g,"")):parseInt(o.replace(/[^0-9]+/g,"")),this.vertical&&(this.style.setProperty("width","fit-content"),this.style.setProperty("align-self","stretch"),i.height=`${this.sliderWidth}px`,i.width="var(--height)")}return this.rtl="rtl"==getComputedStyle(this).direction,this.setThumbOffset(),this.style.setProperty("--thumb-offset",`calc(${this.rtl&&!this.vertical?"-1 * ":""}${this.thumbOffset}px)`),H`
${this.buildBackground()}${this.buildSlider(void 0,t)} ${this.buildIcon(this.config.icon,t)} ${this.buildLabel(this.config.label,t)}
${this.buildTooltip()}${this.buildSliderStyles(t)} ${this.buildStyles(this.config.styles,t)}`}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver.disconnect()}static get styles(){return[super.styles,r`:host{display:flex;flex-flow:column;flex-grow:0;place-content:center space-evenly;align-items:center;position:relative;height:unset;width:100%;border:none;border-radius:25px;padding:0;box-sizing:border-box;line-height:0;outline:0;overflow:visible;font-size:inherit;color:inherit;pointer-events:none;--color:var(--primary-text-color);--height:48px}.container{all:inherit;overflow:hidden;height:var(--height);align-self:center;color:var(--background,var(--primary-background-color))}.background{position:absolute;width:inherit;height:var(--background-height,100%);background:var( +(()=>{var __webpack_modules__={894:function(t){var e;"undefined"!=typeof self&&self,e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=t,i.c=e,i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=11)}([function(t,e,i){"use strict";var n=Array.prototype,o=Object.prototype,a={"&":"&",'"':""","'":"'","<":"<",">":">","\\":"\"},r=/[&"'<>\\]/g;function s(t,e){return o.hasOwnProperty.call(t,e)}function c(t){return a[t]}function l(t,e,i){var n,o,a;if(t instanceof Error&&(t=(o=t).name+": "+o.message),Object.setPrototypeOf?(n=new Error(t),Object.setPrototypeOf(n,l.prototype)):(n=this,Object.defineProperty(n,"message",{enumerable:!1,writable:!0,value:t})),Object.defineProperty(n,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(n,this.constructor),o){var r=Object.getOwnPropertyDescriptor(o,"stack");(a=r&&(r.get||function(){return r.value}))||(a=function(){return o.stack})}else{var s=new Error(t).stack;a=function(){return s}}return Object.defineProperty(n,"stack",{get:function(){return a.call(n)}}),Object.defineProperty(n,"cause",{value:o}),n.lineno=e,n.colno=i,n.firstUpdate=!0,n.Update=function(t){var e="("+(t||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?e+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(e+=" [Line "+this.lineno+"]")),e+="\n ",this.firstUpdate&&(e+=" "),this.message=e+(this.message||""),this.firstUpdate=!1,this},n}function u(t){return"[object Function]"===o.toString.call(t)}function p(t){return"[object Array]"===o.toString.call(t)}function h(t){return"[object String]"===o.toString.call(t)}function d(t){return"[object Object]"===o.toString.call(t)}function m(t){var e,i=(e=t)?"string"==typeof e?e.split("."):[e]:[];return function(t){for(var e=t,n=0;nt.length)r=o.slice(0,t.length),o.slice(r.length,l).forEach((function(t,i){i2?o-2:0),r=2;r0||!i)&&process.stdout.write(" ".repeat(e));var a=o===n.length-1?"":"\n";process.stdout.write(""+t+a)}))}t.exports={Node:c,Root:p,NodeList:u,Value:l,Literal:h,Symbol:d,Group:m,Array:f,Pair:y,Dict:_,Output:U,Capture:K,TemplateData:H,If:v,IfAsync:g,InlineIf:k,For:w,AsyncEach:E,AsyncAll:C,Macro:x,Caller:L,Import:T,FromImport:A,FunCall:S,Filter:O,FilterAsync:M,KeywordArgs:$,Block:I,Super:D,Extends:N,Include:P,Set:R,Switch:F,Case:j,LookupVal:b,BinOp:V,In:Y,Is:Z,Or:z,And:q,Not:W,Add:G,Concat:X,Sub:J,Mul:Q,Div:tt,FloorDiv:et,Mod:it,Pow:nt,Neg:ot,Pos:at,Compare:rt,CompareOperand:st,CallExtension:ct,CallExtensionAsync:lt,printNodes:function t(e,i){if(i=i||0,ut(e.typename+": ",i),e instanceof u)ut("\n"),e.children.forEach((function(e){t(e,i+2)}));else if(e instanceof ct)ut(e.extName+"."+e.prop+"\n"),e.args&&t(e.args,i+2),e.contentArgs&&e.contentArgs.forEach((function(e){t(e,i+2)}));else{var n=[],o=null;e.iterFields((function(t,e){t instanceof c?n.push([e,t]):(o=o||{})[e]=t})),o?ut(JSON.stringify(o,null,2)+"\n",null,!0):ut("\n"),n.forEach((function(e){var n=e[0],o=e[1];ut("["+n+"] =>",i+2),t(o,i+4)}))}}}},function(t,e){},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=i(8),a=i(17),r=i(3),s=i(0).TemplateError,c=i(2).Frame,l=i(1).Obj,u={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},p=function(t){var e,i;function o(){return t.apply(this,arguments)||this}i=t,(e=o).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i);var a=o.prototype;return a.init=function(t,e){this.templateName=t,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=e},a.fail=function(t,e,i){throw void 0!==e&&(e+=1),void 0!==i&&(i+=1),new s(t,e,i)},a._pushBuffer=function(){var t=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=t,this._emit("var "+this.buffer+' = "";'),t},a._popBuffer=function(){this.buffer=this.bufferStack.pop()},a._emit=function(t){this.codebuf.push(t)},a._emitLine=function(t){this._emit(t+"\n")},a._emitLines=function(){for(var t=this,e=arguments.length,i=new Array(e),n=0;n0&&o._emit(","),o.compile(t,e)})),n&&this._emit(n)},a._compileExpression=function(t,e){this.assertType(t,r.Literal,r.Symbol,r.Group,r.Array,r.Dict,r.FunCall,r.Caller,r.Filter,r.LookupVal,r.Compare,r.InlineIf,r.In,r.Is,r.And,r.Or,r.Not,r.Add,r.Concat,r.Sub,r.Mul,r.Div,r.FloorDiv,r.Mod,r.Pow,r.Neg,r.Pos,r.Compare,r.NodeList),this.compile(t,e)},a.assertType=function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n0&&n._emit(","),t){n._emitLine("function(cb) {"),n._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var o=n._pushBuffer();n._withScopedSyntax((function(){n.compile(t,e),n._emitLine("cb(null, "+o+");")})),n._popBuffer(),n._emitLine("return "+o+";"),n._emitLine("}")}else n._emit("null")})),i){var c=this._tmpid();this._emitLine(", "+this._makeCallback(c)),this._emitLine(this.buffer+" += runtime.suppressValue("+c+", "+s+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+s+" && env.opts.autoescape);\n")},a.compileCallExtensionAsync=function(t,e){this.compileCallExtension(t,e,!0)},a.compileNodeList=function(t,e){this._compileChildren(t,e)},a.compileLiteral=function(t){if("string"==typeof t.value){var e=t.value.replace(/\\/g,"\\\\");e=(e=(e=(e=(e=e.replace(/"/g,'\\"')).replace(/\n/g,"\\n")).replace(/\r/g,"\\r")).replace(/\t/g,"\\t")).replace(/\u2028/g,"\\u2028"),this._emit('"'+e+'"')}else null===t.value?this._emit("null"):this._emit(t.value.toString())},a.compileSymbol=function(t,e){var i=t.value,n=e.lookup(i);n?this._emit(n):this._emit('runtime.contextOrFrameLookup(context, frame, "'+i+'")')},a.compileGroup=function(t,e){this._compileAggregate(t,e,"(",")")},a.compileArray=function(t,e){this._compileAggregate(t,e,"[","]")},a.compileDict=function(t,e){this._compileAggregate(t,e,"{","}")},a.compilePair=function(t,e){var i=t.key,n=t.value;i instanceof r.Symbol?i=new r.Literal(i.lineno,i.colno,i.value):i instanceof r.Literal&&"string"==typeof i.value||this.fail("compilePair: Dict keys must be strings or names",i.lineno,i.colno),this.compile(i,e),this._emit(": "),this._compileExpression(n,e)},a.compileInlineIf=function(t,e){this._emit("("),this.compile(t.cond,e),this._emit("?"),this.compile(t.body,e),this._emit(":"),null!==t.else_?this.compile(t.else_,e):this._emit('""'),this._emit(")")},a.compileIn=function(t,e){this._emit("runtime.inOperator("),this.compile(t.left,e),this._emit(","),this.compile(t.right,e),this._emit(")")},a.compileIs=function(t,e){var i=t.right.name?t.right.name.value:t.right.value;this._emit('env.getTest("'+i+'").call(context, '),this.compile(t.left,e),t.right.args&&(this._emit(","),this.compile(t.right.args,e)),this._emit(") === true")},a._binOpEmitter=function(t,e,i){this.compile(t.left,e),this._emit(i),this.compile(t.right,e)},a.compileOr=function(t,e){return this._binOpEmitter(t,e," || ")},a.compileAnd=function(t,e){return this._binOpEmitter(t,e," && ")},a.compileAdd=function(t,e){return this._binOpEmitter(t,e," + ")},a.compileConcat=function(t,e){return this._binOpEmitter(t,e,' + "" + ')},a.compileSub=function(t,e){return this._binOpEmitter(t,e," - ")},a.compileMul=function(t,e){return this._binOpEmitter(t,e," * ")},a.compileDiv=function(t,e){return this._binOpEmitter(t,e," / ")},a.compileMod=function(t,e){return this._binOpEmitter(t,e," % ")},a.compileNot=function(t,e){this._emit("!"),this.compile(t.target,e)},a.compileFloorDiv=function(t,e){this._emit("Math.floor("),this.compile(t.left,e),this._emit(" / "),this.compile(t.right,e),this._emit(")")},a.compilePow=function(t,e){this._emit("Math.pow("),this.compile(t.left,e),this._emit(", "),this.compile(t.right,e),this._emit(")")},a.compileNeg=function(t,e){this._emit("-"),this.compile(t.target,e)},a.compilePos=function(t,e){this._emit("+"),this.compile(t.target,e)},a.compileCompare=function(t,e){var i=this;this.compile(t.expr,e),t.ops.forEach((function(t){i._emit(" "+u[t.type]+" "),i.compile(t.expr,e)}))},a.compileLookupVal=function(t,e){this._emit("runtime.memberLookup(("),this._compileExpression(t.target,e),this._emit("),"),this._compileExpression(t.val,e),this._emit(")")},a._getNodeName=function(t){switch(t.typename){case"Symbol":return t.value;case"FunCall":return"the return value of ("+this._getNodeName(t.name)+")";case"LookupVal":return this._getNodeName(t.target)+'["'+this._getNodeName(t.val)+'"]';case"Literal":return t.value.toString();default:return"--expression--"}},a.compileFunCall=function(t,e){this._emit("(lineno = "+t.lineno+", colno = "+t.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(t.name,e),this._emit(', "'+this._getNodeName(t.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(t.args,e,"[","])"),this._emit(")")},a.compileFilter=function(t,e){var i=t.name;this.assertType(i,r.Symbol),this._emit('env.getFilter("'+i.value+'").call(context, '),this._compileAggregate(t.args,e),this._emit(")")},a.compileFilterAsync=function(t,e){var i=t.name,n=t.symbol.value;this.assertType(i,r.Symbol),e.set(n,n),this._emit('env.getFilter("'+i.value+'").call(context, '),this._compileAggregate(t.args,e),this._emitLine(", "+this._makeCallback(n)),this._addScopeLevel()},a.compileKeywordArgs=function(t,e){this._emit("runtime.makeKeywordArgs("),this.compileDict(t,e),this._emit(")")},a.compileSet=function(t,e){var i=this,n=[];t.targets.forEach((function(t){var o=t.value,a=e.lookup(o);null==a&&(a=i._tmpid(),i._emitLine("var "+a+";")),n.push(a)})),t.value?(this._emit(n.join(" = ")+" = "),this._compileExpression(t.value,e),this._emitLine(";")):(this._emit(n.join(" = ")+" = "),this.compile(t.body,e),this._emitLine(";")),t.targets.forEach((function(t,e){var o=n[e],a=t.value;i._emitLine('frame.set("'+a+'", '+o+", true);"),i._emitLine("if(frame.topLevel) {"),i._emitLine('context.setVariable("'+a+'", '+o+");"),i._emitLine("}"),"_"!==a.charAt(0)&&(i._emitLine("if(frame.topLevel) {"),i._emitLine('context.addExport("'+a+'", '+o+");"),i._emitLine("}"))}))},a.compileSwitch=function(t,e){var i=this;this._emit("switch ("),this.compile(t.expr,e),this._emit(") {"),t.cases.forEach((function(t,n){i._emit("case "),i.compile(t.cond,e),i._emit(": "),i.compile(t.body,e),t.body.children.length&&i._emitLine("break;")})),t.default&&(this._emit("default:"),this.compile(t.default,e)),this._emit("}")},a.compileIf=function(t,e,i){var n=this;this._emit("if("),this._compileExpression(t.cond,e),this._emitLine(") {"),this._withScopedSyntax((function(){n.compile(t.body,e),i&&n._emit("cb()")})),t.else_?(this._emitLine("}\nelse {"),this._withScopedSyntax((function(){n.compile(t.else_,e),i&&n._emit("cb()")}))):i&&(this._emitLine("}\nelse {"),this._emit("cb()")),this._emitLine("}")},a.compileIfAsync=function(t,e){this._emit("(function(cb) {"),this.compileIf(t,e,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},a._emitLoopBindings=function(t,e,i,n){var o=this;[{name:"index",val:i+" + 1"},{name:"index0",val:i},{name:"revindex",val:n+" - "+i},{name:"revindex0",val:n+" - "+i+" - 1"},{name:"first",val:i+" === 0"},{name:"last",val:i+" === "+n+" - 1"},{name:"length",val:n}].forEach((function(t){o._emitLine('frame.set("loop.'+t.name+'", '+t.val+");")}))},a.compileFor=function(t,e){var i=this,n=this._tmpid(),o=this._tmpid(),a=this._tmpid();if(e=e.push(),this._emitLine("frame = frame.push();"),this._emit("var "+a+" = "),this._compileExpression(t.arr,e),this._emitLine(";"),this._emit("if("+a+") {"),this._emitLine(a+" = runtime.fromIterator("+a+");"),t.name instanceof r.Array){this._emitLine("var "+n+";"),this._emitLine("if(runtime.isArray("+a+")) {"),this._emitLine("var "+o+" = "+a+".length;"),this._emitLine("for("+n+"=0; "+n+" < "+a+".length; "+n+"++) {"),t.name.children.forEach((function(o,r){var s=i._tmpid();i._emitLine("var "+s+" = "+a+"["+n+"]["+r+"];"),i._emitLine('frame.set("'+o+'", '+a+"["+n+"]["+r+"]);"),e.set(t.name.children[r].value,s)})),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}"),this._emitLine("} else {");var s=t.name.children,c=s[0],l=s[1],u=this._tmpid(),p=this._tmpid();e.set(c.value,u),e.set(l.value,p),this._emitLine(n+" = -1;"),this._emitLine("var "+o+" = runtime.keys("+a+").length;"),this._emitLine("for(var "+u+" in "+a+") {"),this._emitLine(n+"++;"),this._emitLine("var "+p+" = "+a+"["+u+"];"),this._emitLine('frame.set("'+c.value+'", '+u+");"),this._emitLine('frame.set("'+l.value+'", '+p+");"),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}"),this._emitLine("}")}else{var h=this._tmpid();e.set(t.name.value,h),this._emitLine("var "+o+" = "+a+".length;"),this._emitLine("for(var "+n+"=0; "+n+" < "+a+".length; "+n+"++) {"),this._emitLine("var "+h+" = "+a+"["+n+"];"),this._emitLine('frame.set("'+t.name.value+'", '+h+");"),this._emitLoopBindings(t,a,n,o),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("}")}this._emitLine("}"),t.else_&&(this._emitLine("if (!"+o+") {"),this.compile(t.else_,e),this._emitLine("}")),this._emitLine("frame = frame.pop();")},a._compileAsyncLoop=function(t,e,i){var n=this,o=this._tmpid(),a=this._tmpid(),s=this._tmpid(),c=i?"asyncAll":"asyncEach";if(e=e.push(),this._emitLine("frame = frame.push();"),this._emit("var "+s+" = runtime.fromIterator("),this._compileExpression(t.arr,e),this._emitLine(");"),t.name instanceof r.Array){var l=t.name.children.length;this._emit("runtime."+c+"("+s+", "+l+", function("),t.name.children.forEach((function(t){n._emit(t.value+",")})),this._emit(o+","+a+",next) {"),t.name.children.forEach((function(t){var i=t.value;e.set(i,i),n._emitLine('frame.set("'+i+'", '+i+");")}))}else{var u=t.name.value;this._emitLine("runtime."+c+"("+s+", 1, function("+u+", "+o+", "+a+",next) {"),this._emitLine('frame.set("'+u+'", '+u+");"),e.set(u,u)}this._emitLoopBindings(t,s,o,a),this._withScopedSyntax((function(){var a;i&&(a=n._pushBuffer()),n.compile(t.body,e),n._emitLine("next("+o+(a?","+a:"")+");"),i&&n._popBuffer()}));var p=this._tmpid();this._emitLine("}, "+this._makeCallback(p)),this._addScopeLevel(),i&&this._emitLine(this.buffer+" += "+p+";"),t.else_&&(this._emitLine("if (!"+s+".length) {"),this.compile(t.else_,e),this._emitLine("}")),this._emitLine("frame = frame.pop();")},a.compileAsyncEach=function(t,e){this._compileAsyncLoop(t,e)},a.compileAsyncAll=function(t,e){this._compileAsyncLoop(t,e,!0)},a._compileMacro=function(t,e){var i=this,n=[],o=null,a="macro_"+this._tmpid(),s=void 0!==e;t.args.children.forEach((function(e,a){a===t.args.children.length-1&&e instanceof r.Dict?o=e:(i.assertType(e,r.Symbol),n.push(e))}));var l,u=[].concat(n.map((function(t){return"l_"+t.value})),["kwargs"]),p=n.map((function(t){return'"'+t.value+'"'})),h=(o&&o.children||[]).map((function(t){return'"'+t.key.value+'"'}));l=s?e.push(!0):new c,this._emitLines("var "+a+" = runtime.makeMacro(","["+p.join(", ")+"], ","["+h.join(", ")+"], ","function ("+u.join(", ")+") {","var callerFrame = frame;","frame = "+(s?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),n.forEach((function(t){i._emitLine('frame.set("'+t.value+'", l_'+t.value+");"),l.set(t.value,"l_"+t.value)})),o&&o.children.forEach((function(t){var e=t.key.value;i._emit('frame.set("'+e+'", '),i._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+e+'")'),i._emit(' ? kwargs["'+e+'"] : '),i._compileExpression(t.value,l),i._emit(");")}));var d=this._pushBuffer();return this._withScopedSyntax((function(){i.compile(t.body,l)})),this._emitLine("frame = "+(s?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+d+");"),this._emitLine("});"),this._popBuffer(),a},a.compileMacro=function(t,e){var i=this._compileMacro(t),n=t.name.value;e.set(n,i),e.parent?this._emitLine('frame.set("'+n+'", '+i+");"):("_"!==t.name.value.charAt(0)&&this._emitLine('context.addExport("'+n+'");'),this._emitLine('context.setVariable("'+n+'", '+i+");"))},a.compileCaller=function(t,e){this._emit("(function (){");var i=this._compileMacro(t,e);this._emit("return "+i+";})()")},a._compileGetTemplate=function(t,e,i,n){var o=this._tmpid(),a=this._templateName(),r=this._makeCallback(o),s=i?"true":"false",c=n?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(t.template,e),this._emitLine(", "+s+", "+a+", "+c+", "+r),o},a.compileImport=function(t,e){var i=t.target.value,n=this._compileGetTemplate(t,e,!1,!1);this._addScopeLevel(),this._emitLine(n+".getExported("+(t.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(n)),this._addScopeLevel(),e.set(i,n),e.parent?this._emitLine('frame.set("'+i+'", '+n+");"):this._emitLine('context.setVariable("'+i+'", '+n+");")},a.compileFromImport=function(t,e){var i=this,n=this._compileGetTemplate(t,e,!1,!1);this._addScopeLevel(),this._emitLine(n+".getExported("+(t.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(n)),this._addScopeLevel(),t.names.children.forEach((function(t){var o,a,s=i._tmpid();t instanceof r.Pair?(o=t.key.value,a=t.value.value):a=o=t.value,i._emitLine("if(Object.prototype.hasOwnProperty.call("+n+', "'+o+'")) {'),i._emitLine("var "+s+" = "+n+"."+o+";"),i._emitLine("} else {"),i._emitLine("cb(new Error(\"cannot import '"+o+"'\")); return;"),i._emitLine("}"),e.set(a,s),e.parent?i._emitLine('frame.set("'+a+'", '+s+");"):i._emitLine('context.setVariable("'+a+'", '+s+");")}))},a.compileBlock=function(t){var e=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+t.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(e)),this._emitLine(this.buffer+" += "+e+";"),this._addScopeLevel()},a.compileSuper=function(t,e){var i=t.blockName.value,n=t.symbol.value,o=this._makeCallback(n);this._emitLine('context.getSuper(env, "'+i+'", b_'+i+", frame, runtime, "+o),this._emitLine(n+" = runtime.markSafe("+n+");"),this._addScopeLevel(),e.set(n,n)},a.compileExtends=function(t,e){var i=this._tmpid(),n=this._compileGetTemplate(t,e,!0,!1);this._emitLine("parentTemplate = "+n),this._emitLine("for(var "+i+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+i+", parentTemplate.blocks["+i+"]);"),this._emitLine("}"),this._addScopeLevel()},a.compileInclude=function(t,e){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var i=this._compileGetTemplate(t,e,!1,t.ignoreMissing);this._emitLine("callback(null,"+i+");});"),this._emitLine("});");var n=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(n)),this._emitLine("callback(null,"+n+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},a.compileTemplateData=function(t,e){this.compileLiteral(t,e)},a.compileCapture=function(t,e){var i=this,n=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax((function(){i.compile(t.body,e)})),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=n},a.compileOutput=function(t,e){var i=this;t.children.forEach((function(n){n instanceof r.TemplateData?n.value&&(i._emit(i.buffer+" += "),i.compileLiteral(n,e),i._emitLine(";")):(i._emit(i.buffer+" += runtime.suppressValue("),i.throwOnUndefined&&i._emit("runtime.ensureDefined("),i.compile(n,e),i.throwOnUndefined&&i._emit(","+t.lineno+","+t.colno+")"),i._emit(", env.opts.autoescape);\n"))}))},a.compileRoot=function(t,e){var i=this;e&&this.fail("compileRoot: root node can't have frame"),e=new c,this._emitFuncBegin(t,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(t,e),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var n=[],o=t.findAll(r.Block);o.forEach((function(t,e){var o=t.name.value;if(-1!==n.indexOf(o))throw new Error('Block "'+o+'" defined more than once.');n.push(o),i._emitFuncBegin(t,"b_"+o);var a=new c;i._emitLine("var frame = frame.push(true);"),i.compile(t.body,a),i._emitFuncEnd()})),this._emitLine("return {"),o.forEach((function(t,e){var n="b_"+t.name.value;i._emitLine(n+": "+n+",")})),this._emitLine("root: root\n};")},a.compile=function(t,e){var i=this["compile"+t.typename];i?i.call(this,t,e):this.fail("compile: Cannot compile node: "+t.typename,t.lineno,t.colno)},a.getCode=function(){return this.codebuf.join("")},o}(l);t.exports={compile:function(t,e,i,n,r){void 0===r&&(r={});var s=new p(n,r.throwOnUndefined),c=(i||[]).map((function(t){return t.preprocess})).filter((function(t){return!!t})).reduce((function(t,e){return e(t)}),t);return s.compile(a.transform(o.parse(c,i,r),e,n)),s.getCode()},Compiler:p}},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=i(4),a=i(1).EmitterObj;t.exports=function(t){var e,i;function a(){return t.apply(this,arguments)||this}i=t,(e=a).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i);var r=a.prototype;return r.resolve=function(t,e){return o.resolve(o.dirname(t),e)},r.isRelative=function(t){return 0===t.indexOf("./")||0===t.indexOf("../")},a}(a)},function(t,e,i){"use strict";function n(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,o(t,e)}function o(t,e){return o=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},o(t,e)}var a=i(12),r=i(15),s=i(0),c=i(5),l=i(18),u=i(10),p=u.FileSystemLoader,h=u.WebLoader,d=u.PrecompiledLoader,m=i(20),f=i(21),y=i(1),_=y.Obj,b=y.EmitterObj,v=i(2),g=v.handleError,k=v.Frame,w=i(22);function E(t,e,i){a((function(){t(e,i)}))}var C={type:"code",obj:{root:function(t,e,i,n,o){try{o(null,"")}catch(t){o(g(t,null,null))}}}},x=function(t){function e(){return t.apply(this,arguments)||this}n(e,t);var i=e.prototype;return i.init=function(t,e){var i=this;e=this.opts=e||{},this.opts.dev=!!e.dev,this.opts.autoescape=null==e.autoescape||e.autoescape,this.opts.throwOnUndefined=!!e.throwOnUndefined,this.opts.trimBlocks=!!e.trimBlocks,this.opts.lstripBlocks=!!e.lstripBlocks,this.loaders=[],t?this.loaders=s.isArray(t)?t:[t]:p?this.loaders=[new p("views")]:h&&(this.loaders=[new h("/views")]),"undefined"!=typeof window&&window.nunjucksPrecompiled&&this.loaders.unshift(new d(window.nunjucksPrecompiled)),this._initLoaders(),this.globals=f(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],s._entries(l).forEach((function(t){var e=t[0],n=t[1];return i.addFilter(e,n)})),s._entries(m).forEach((function(t){var e=t[0],n=t[1];return i.addTest(e,n)}))},i._initLoaders=function(){var t=this;this.loaders.forEach((function(e){e.cache={},"function"==typeof e.on&&(e.on("update",(function(i,n){e.cache[i]=null,t.emit("update",i,n,e)})),e.on("load",(function(i,n){t.emit("load",i,n,e)})))}))},i.invalidateCache=function(){this.loaders.forEach((function(t){t.cache={}}))},i.addExtension=function(t,e){return e.__name=t,this.extensions[t]=e,this.extensionsList.push(e),this},i.removeExtension=function(t){var e=this.getExtension(t);e&&(this.extensionsList=s.without(this.extensionsList,e),delete this.extensions[t])},i.getExtension=function(t){return this.extensions[t]},i.hasExtension=function(t){return!!this.extensions[t]},i.addGlobal=function(t,e){return this.globals[t]=e,this},i.getGlobal=function(t){if(void 0===this.globals[t])throw new Error("global not found: "+t);return this.globals[t]},i.addFilter=function(t,e,i){var n=e;return i&&this.asyncFilters.push(t),this.filters[t]=n,this},i.getFilter=function(t){if(!this.filters[t])throw new Error("filter not found: "+t);return this.filters[t]},i.addTest=function(t,e){return this.tests[t]=e,this},i.getTest=function(t){if(!this.tests[t])throw new Error("test not found: "+t);return this.tests[t]},i.resolveTemplate=function(t,e,i){return t.isRelative&&e&&t.isRelative(i)&&t.resolve?t.resolve(e,i):i},i.getTemplate=function(t,e,i,n,o){var a,r=this,c=this,l=null;if(t&&t.raw&&(t=t.raw),s.isFunction(i)&&(o=i,i=null,e=e||!1),s.isFunction(e)&&(o=e,e=!1),t instanceof T)l=t;else{if("string"!=typeof t)throw new Error("template names must be a string: "+t);for(var u=0;u0&&!this.skip(o.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",t.lineno,t.colno);var s=this.parsePrimary();if("_"===s.value.charAt(0)&&this.fail("parseFrom: names starting with an underscore cannot be imported",s.lineno,s.colno),this.skipSymbol("as")){var c=this.parsePrimary();n.addChild(new a.Pair(s.lineno,s.colno,s,c))}else n.addChild(s);i=this.parseWithContext()}return new a.FromImport(t.lineno,t.colno,e,n,i)},c.parseBlock=function(){var t=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",t.lineno,t.colno);var e=new a.Block(t.lineno,t.colno);e.name=this.parsePrimary(),e.name instanceof a.Symbol||this.fail("parseBlock: variable name expected",t.lineno,t.colno),this.advanceAfterBlockEnd(t.value),e.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(e.name.value);var i=this.peekToken();return i||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(i.value),e},c.parseExtends=function(){var t="extends",e=this.peekToken();this.skipSymbol(t)||this.fail("parseTemplateRef: expected "+t);var i=new a.Extends(e.lineno,e.colno);return i.template=this.parseExpression(),this.advanceAfterBlockEnd(e.value),i},c.parseInclude=function(){var t="include",e=this.peekToken();this.skipSymbol(t)||this.fail("parseInclude: expected "+t);var i=new a.Include(e.lineno,e.colno);return i.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(i.ignoreMissing=!0),this.advanceAfterBlockEnd(e.value),i},c.parseIf=function(){var t,e=this.peekToken();this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?t=new a.If(e.lineno,e.colno):this.skipSymbol("ifAsync")?t=new a.IfAsync(e.lineno,e.colno):this.fail("parseIf: expected if, elif, or elseif",e.lineno,e.colno),t.cond=this.parseExpression(),this.advanceAfterBlockEnd(e.value),t.body=this.parseUntilBlocks("elif","elseif","else","endif");var i=this.peekToken();switch(i&&i.value){case"elseif":case"elif":t.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),t.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":t.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return t},c.parseSet=function(){var t=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",t.lineno,t.colno);for(var e,i=new a.Set(t.lineno,t.colno,[]);(e=this.parsePrimary())&&(i.targets.push(e),this.skip(o.TOKEN_COMMA)););return this.skipValue(o.TOKEN_OPERATOR,"=")?(i.value=this.parseExpression(),this.advanceAfterBlockEnd(t.value)):this.skip(o.TOKEN_BLOCK_END)?(i.body=new a.Capture(t.lineno,t.colno,this.parseUntilBlocks("endset")),i.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",t.lineno,t.colno),i},c.parseSwitch=function(){var t="switch",e="endswitch",i="case",n="default",o=this.peekToken();this.skipSymbol(t)||this.skipSymbol(i)||this.skipSymbol(n)||this.fail('parseSwitch: expected "switch," "case" or "default"',o.lineno,o.colno);var r=this.parseExpression();this.advanceAfterBlockEnd(t),this.parseUntilBlocks(i,n,e);var s,c=this.peekToken(),l=[];do{this.skipSymbol(i);var u=this.parseExpression();this.advanceAfterBlockEnd(t);var p=this.parseUntilBlocks(i,n,e);l.push(new a.Case(c.line,c.col,u,p)),c=this.peekToken()}while(c&&c.value===i);switch(c.value){case n:this.advanceAfterBlockEnd(),s=this.parseUntilBlocks(e),this.advanceAfterBlockEnd();break;case e:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new a.Switch(o.lineno,o.colno,r,l,s)},c.parseStatement=function(){var t=this.peekToken();if(t.type!==o.TOKEN_SYMBOL&&this.fail("tag name expected",t.lineno,t.colno),this.breakOnBlocks&&-1!==s.indexOf(this.breakOnBlocks,t.value))return null;switch(t.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var e=0;e0;){var c=r[0],l=r[1],u=r[2];u===t?n+=1:u===e&&(n-=1),0===n?(o+=l,this.tokens.backN(c.length-l.length)):o+=c}return new a.Output(s.lineno,s.colno,[new a.TemplateData(s.lineno,s.colno,o)])},c.parsePostfix=function(t){for(var e,i=this.peekToken();i;){if(i.type===o.TOKEN_LEFT_PAREN)t=new a.FunCall(i.lineno,i.colno,t,this.parseSignature());else if(i.type===o.TOKEN_LEFT_BRACKET)(e=this.parseAggregate()).children.length>1&&this.fail("invalid index"),t=new a.LookupVal(i.lineno,i.colno,t,e.children[0]);else{if(i.type!==o.TOKEN_OPERATOR||"."!==i.value)break;this.nextToken();var n=this.nextToken();n.type!==o.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+n.value,n.lineno,n.colno),e=new a.Literal(n.lineno,n.colno,n.value),t=new a.LookupVal(i.lineno,i.colno,t,e)}i=this.peekToken()}return t},c.parseExpression=function(){return this.parseInlineIf()},c.parseInlineIf=function(){var t=this.parseOr();if(this.skipSymbol("if")){var e=this.parseOr(),i=t;(t=new a.InlineIf(t.lineno,t.colno)).body=i,t.cond=e,this.skipSymbol("else")?t.else_=this.parseOr():t.else_=null}return t},c.parseOr=function(){for(var t=this.parseAnd();this.skipSymbol("or");){var e=this.parseAnd();t=new a.Or(t.lineno,t.colno,t,e)}return t},c.parseAnd=function(){for(var t=this.parseNot();this.skipSymbol("and");){var e=this.parseNot();t=new a.And(t.lineno,t.colno,t,e)}return t},c.parseNot=function(){var t=this.peekToken();return this.skipSymbol("not")?new a.Not(t.lineno,t.colno,this.parseNot()):this.parseIn()},c.parseIn=function(){for(var t=this.parseIs();;){var e=this.nextToken();if(!e)break;var i=e.type===o.TOKEN_SYMBOL&&"not"===e.value;if(i||this.pushToken(e),!this.skipSymbol("in")){i&&this.pushToken(e);break}var n=this.parseIs();t=new a.In(t.lineno,t.colno,t,n),i&&(t=new a.Not(t.lineno,t.colno,t))}return t},c.parseIs=function(){var t=this.parseCompare();if(this.skipSymbol("is")){var e=this.skipSymbol("not"),i=this.parseCompare();t=new a.Is(t.lineno,t.colno,t,i),e&&(t=new a.Not(t.lineno,t.colno,t))}return t},c.parseCompare=function(){for(var t=["==","===","!=","!==","<",">","<=",">="],e=this.parseConcat(),i=[];;){var n=this.nextToken();if(!n)break;if(-1===t.indexOf(n.value)){this.pushToken(n);break}i.push(new a.CompareOperand(n.lineno,n.colno,this.parseConcat(),n.value))}return i.length?new a.Compare(i[0].lineno,i[0].colno,e,i):e},c.parseConcat=function(){for(var t=this.parseAdd();this.skipValue(o.TOKEN_TILDE,"~");){var e=this.parseAdd();t=new a.Concat(t.lineno,t.colno,t,e)}return t},c.parseAdd=function(){for(var t=this.parseSub();this.skipValue(o.TOKEN_OPERATOR,"+");){var e=this.parseSub();t=new a.Add(t.lineno,t.colno,t,e)}return t},c.parseSub=function(){for(var t=this.parseMul();this.skipValue(o.TOKEN_OPERATOR,"-");){var e=this.parseMul();t=new a.Sub(t.lineno,t.colno,t,e)}return t},c.parseMul=function(){for(var t=this.parseDiv();this.skipValue(o.TOKEN_OPERATOR,"*");){var e=this.parseDiv();t=new a.Mul(t.lineno,t.colno,t,e)}return t},c.parseDiv=function(){for(var t=this.parseFloorDiv();this.skipValue(o.TOKEN_OPERATOR,"/");){var e=this.parseFloorDiv();t=new a.Div(t.lineno,t.colno,t,e)}return t},c.parseFloorDiv=function(){for(var t=this.parseMod();this.skipValue(o.TOKEN_OPERATOR,"//");){var e=this.parseMod();t=new a.FloorDiv(t.lineno,t.colno,t,e)}return t},c.parseMod=function(){for(var t=this.parsePow();this.skipValue(o.TOKEN_OPERATOR,"%");){var e=this.parsePow();t=new a.Mod(t.lineno,t.colno,t,e)}return t},c.parsePow=function(){for(var t=this.parseUnary();this.skipValue(o.TOKEN_OPERATOR,"**");){var e=this.parseUnary();t=new a.Pow(t.lineno,t.colno,t,e)}return t},c.parseUnary=function(t){var e,i=this.peekToken();return e=this.skipValue(o.TOKEN_OPERATOR,"-")?new a.Neg(i.lineno,i.colno,this.parseUnary(!0)):this.skipValue(o.TOKEN_OPERATOR,"+")?new a.Pos(i.lineno,i.colno,this.parseUnary(!0)):this.parsePrimary(),t||(e=this.parseFilter(e)),e},c.parsePrimary=function(t){var e,i=this.nextToken(),n=null;if(i?i.type===o.TOKEN_STRING?e=i.value:i.type===o.TOKEN_INT?e=parseInt(i.value,10):i.type===o.TOKEN_FLOAT?e=parseFloat(i.value):i.type===o.TOKEN_BOOLEAN?"true"===i.value?e=!0:"false"===i.value?e=!1:this.fail("invalid boolean: "+i.value,i.lineno,i.colno):i.type===o.TOKEN_NONE?e=null:i.type===o.TOKEN_REGEX&&(e=new RegExp(i.value.body,i.value.flags)):this.fail("expected expression, got end of file"),void 0!==e?n=new a.Literal(i.lineno,i.colno,e):i.type===o.TOKEN_SYMBOL?n=new a.Symbol(i.lineno,i.colno,i.value):(this.pushToken(i),n=this.parseAggregate()),t||(n=this.parsePostfix(n)),n)return n;throw this.error("unexpected token: "+i.value,i.lineno,i.colno)},c.parseFilterName=function(){for(var t=this.expect(o.TOKEN_SYMBOL),e=t.value;this.skipValue(o.TOKEN_OPERATOR,".");)e+="."+this.expect(o.TOKEN_SYMBOL).value;return new a.Symbol(t.lineno,t.colno,e)},c.parseFilterArgs=function(t){return this.peekToken().type===o.TOKEN_LEFT_PAREN?this.parsePostfix(t).args.children:[]},c.parseFilter=function(t){for(;this.skip(o.TOKEN_PIPE);){var e=this.parseFilterName();t=new a.Filter(e.lineno,e.colno,e,new a.NodeList(e.lineno,e.colno,[t].concat(this.parseFilterArgs(t))))}return t},c.parseFilterStatement=function(){var t=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var e=this.parseFilterName(),i=this.parseFilterArgs(e);this.advanceAfterBlockEnd(t.value);var n=new a.Capture(e.lineno,e.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var o=new a.Filter(e.lineno,e.colno,e,new a.NodeList(e.lineno,e.colno,[n].concat(i)));return new a.Output(e.lineno,e.colno,[o])},c.parseAggregate=function(){var t,e=this.nextToken();switch(e.type){case o.TOKEN_LEFT_PAREN:t=new a.Group(e.lineno,e.colno);break;case o.TOKEN_LEFT_BRACKET:t=new a.Array(e.lineno,e.colno);break;case o.TOKEN_LEFT_CURLY:t=new a.Dict(e.lineno,e.colno);break;default:return null}for(;;){var i=this.peekToken().type;if(i===o.TOKEN_RIGHT_PAREN||i===o.TOKEN_RIGHT_BRACKET||i===o.TOKEN_RIGHT_CURLY){this.nextToken();break}if(t.children.length>0&&(this.skip(o.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",e.lineno,e.colno)),t instanceof a.Dict){var n=this.parsePrimary();this.skip(o.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",e.lineno,e.colno);var r=this.parseExpression();t.addChild(new a.Pair(n.lineno,n.colno,n,r))}else{var s=this.parseExpression();t.addChild(s)}}return t},c.parseSignature=function(t,e){var i=this.peekToken();if(!e&&i.type!==o.TOKEN_LEFT_PAREN){if(t)return null;this.fail("expected arguments",i.lineno,i.colno)}i.type===o.TOKEN_LEFT_PAREN&&(i=this.nextToken());for(var n=new a.NodeList(i.lineno,i.colno),r=new a.KeywordArgs(i.lineno,i.colno),s=!1;;){if(i=this.peekToken(),!e&&i.type===o.TOKEN_RIGHT_PAREN){this.nextToken();break}if(e&&i.type===o.TOKEN_BLOCK_END)break;if(s&&!this.skip(o.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",i.lineno,i.colno);else{var c=this.parseExpression();this.skipValue(o.TOKEN_OPERATOR,"=")?r.addChild(new a.Pair(c.lineno,c.colno,c,this.parseExpression())):n.addChild(c)}s=!0}return r.children.length&&n.addChild(r),n},c.parseUntilBlocks=function(){for(var t=this.breakOnBlocks,e=arguments.length,i=new Array(e),n=0;n=","//","**"],R=M+this.current();switch(-1!==n.indexOf(P,R)&&(this.forward(),M=R,-1!==n.indexOf(P,R+this.current())&&(M=R+this.current(),this.forward())),M){case"(":N=m;break;case")":N=f;break;case"[":N=y;break;case"]":N=_;break;case"{":N=b;break;case"}":N=v;break;case",":N=k;break;case":":N=w;break;case"~":N=E;break;case"|":N=C;break;default:N=g}return O(N,M,e,i)}if((t=this._extractUntil(o+a)).match(/^[-+]?[0-9]+$/)){if("."===this.current()){this.forward();var F=this._extract("0123456789");return O(x,t+"."+F,e,i)}return O("int",t,e,i)}if(t.match(/^(true|false)$/))return O(L,t,e,i);if("none"===t)return O(T,t,e,i);if("null"===t)return O(T,t,e,i);if(t)return O(A,t,e,i);throw new Error("Unexpected value while parsing: "+t)}var j,U=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if((t=this._extractString(this.tags.BLOCK_START+"-"))||(t=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,O(l,t,e,i);if((t=this._extractString(this.tags.VARIABLE_START+"-"))||(t=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,O(p,t,e,i);t="";var K=!1;for(this._matches(this.tags.COMMENT_START)&&(K=!0,t=this._extractString(this.tags.COMMENT_START));null!==(j=this._extractUntil(U));){if(t+=j,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!K){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=t.length){var H=t.slice(-this.colno);if(/^\s+$/.test(H)&&!(t=t.slice(0,-this.colno)).length)return this.nextToken()}break}if(this._matches(this.tags.COMMENT_END)){if(!K)throw new Error("unexpected end of comment");t+=this._extractString(this.tags.COMMENT_END);break}t+=this.current(),this.forward()}if(null===j&&K)throw new Error("expected end of comment, got end of file");return O(K?d:c,t,e,i)},e._parseString=function(t){this.forward();for(var e="";!this.isFinished()&&this.current()!==t;){var i=this.current();if("\\"===i){switch(this.forward(),this.current()){case"n":e+="\n";break;case"t":e+="\t";break;case"r":e+="\r";break;default:e+=this.current()}this.forward()}else e+=i,this.forward()}return this.forward(),e},e._matches=function(t){return this.index+t.length>this.len?null:this.str.slice(this.index,this.index+t.length)===t},e._extractString=function(t){return this._matches(t)?(this.forwardN(t.length),t):null},e._extractUntil=function(t){return this._extractMatching(!0,t||"")},e._extract=function(t){return this._extractMatching(!1,t)},e._extractMatching=function(t,e){if(this.isFinished())return null;var i=e.indexOf(this.current());if(t&&-1===i||!t&&-1!==i){var n=this.current();this.forward();for(var o=e.indexOf(this.current());(t&&-1===o||!t&&-1!==o)&&!this.isFinished();)n+=this.current(),this.forward(),o=e.indexOf(this.current());return n}return""},e._extractRegex=function(t){var e=this.currentStr().match(t);return e?(this.forwardN(e[0].length),e):null},e.isFinished=function(){return this.index>=this.len},e.forwardN=function(t){for(var e=0;e1024){for(var e=0,i=o.length-a;e0&&r.length>o&&!r.warned){r.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=r.length,s=c,console&&console.warn&&console.warn(s)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,i){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:i},o=h.bind(n);return o.listener=i,n.wrapFn=o,o}function m(t,e,i){var n=t._events;if(void 0===n)return[];var o=n[e];return void 0===o?[]:"function"==typeof o?i?[o.listener||o]:[o]:i?function(t){for(var e=new Array(t.length),i=0;i0&&(r=e[0]),r instanceof Error)throw r;var s=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw s.context=r,s}var c=o[t];if(void 0===c)return!1;if("function"==typeof c)a(c,this,e);else{var l=c.length,u=y(c,l);for(i=0;i=0;a--)if(i[a]===e||i[a].listener===e){r=i[a].listener,o=a;break}if(o<0)return this;0===o?i.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},s.prototype.listeners=function(t){return m(this,t,!0)},s.prototype.rawListeners=function(t){return m(this,t,!1)},s.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?n(this._events):[]}},function(t,e,i){"use strict";var n=i(3),o=i(0),a=0;function r(){return"hole_"+a++}function s(t,e){for(var i=null,n=0;n=e)return t;var i=e-t.length,r=n.repeat(" ",i/2-i%2),s=n.repeat(" ",i/2);return o.copySafeness(t,r+t+s)},e.default=function(t,e,i){return i?t||e:void 0!==t?t:e},e.dictsort=function(t,e,i){if(!n.isObject(t))throw new n.TemplateError("dictsort filter: val must be an object");var o,a=[];for(var r in t)a.push([r,t[r]]);if(void 0===i||"key"===i)o=0;else{if("value"!==i)throw new n.TemplateError("dictsort filter: You can only sort by either key or value");o=1}return a.sort((function(t,i){var a=t[o],r=i[o];return e||(n.isString(a)&&(a=a.toUpperCase()),n.isString(r)&&(r=r.toUpperCase())),a>r?1:a===r?0:-1})),a},e.dump=function(t,e){return JSON.stringify(t,null,e)},e.escape=function(t){return t instanceof o.SafeString?t:(t=null==t?"":t,o.markSafe(n.escape(t.toString())))},e.safe=function(t){return t instanceof o.SafeString?t:(t=null==t?"":t,o.markSafe(t.toString()))},e.first=function(t){return t[0]},e.forceescape=function(t){return t=null==t?"":t,o.markSafe(n.escape(t.toString()))},e.groupby=function(t,e){return n.groupBy(t,e,this.env.opts.throwOnUndefined)},e.indent=function(t,e,i){if(""===(t=a(t,"")))return"";e=e||4;var r=t.split("\n"),s=n.repeat(" ",e),c=r.map((function(t,e){return 0!==e||i?""+s+t:t})).join("\n");return o.copySafeness(t,c)},e.join=function(t,e,i){return e=e||"",i&&(t=n.map(t,(function(t){return t[i]}))),t.join(e)},e.last=function(t){return t[t.length-1]},e.length=function(t){var e=a(t,"");return void 0!==e?"function"==typeof Map&&e instanceof Map||"function"==typeof Set&&e instanceof Set?e.size:!n.isObject(e)||e instanceof o.SafeString?e.length:n.keys(e).length:0},e.list=c,e.lower=function(t){return(t=a(t,"")).toLowerCase()},e.nl2br=function(t){return null==t?"":o.copySafeness(t,t.replace(/\r\n|\n/g,"
\n"))},e.random=function(t){return t[Math.floor(Math.random()*t.length)]},e.reject=l(!1),e.rejectattr=function(t,e){return t.filter((function(t){return!t[e]}))},e.select=l(!0),e.selectattr=function(t,e){return t.filter((function(t){return!!t[e]}))},e.replace=function(t,e,i,n){var a=t;if(e instanceof RegExp)return t.replace(e,i);void 0===n&&(n=-1);var r="";if("number"==typeof e)e=""+e;else if("string"!=typeof e)return t;if("number"==typeof t&&(t=""+t),"string"!=typeof t&&!(t instanceof o.SafeString))return t;if(""===e)return r=i+t.split("").join(i)+i,o.copySafeness(t,r);var s=t.indexOf(e);if(0===n||-1===s)return t;for(var c=0,l=0;s>-1&&(-1===n||l=o&&u.push(i),a.push(u)}return a},e.sum=function(t,e,i){return void 0===i&&(i=0),e&&(t=n.map(t,(function(t){return t[e]}))),i+t.reduce((function(t,e){return t+e}),0)},e.sort=o.makeMacro(["value","reverse","case_sensitive","attribute"],[],(function(t,e,i,o){var a=this,r=n.map(t,(function(t){return t})),s=n.getAttrGetter(o);return r.sort((function(t,r){var c=o?s(t):t,l=o?s(r):r;if(a.env.opts.throwOnUndefined&&o&&(void 0===c||void 0===l))throw new TypeError('sort: attribute "'+o+'" resolved to undefined');return!i&&n.isString(c)&&n.isString(l)&&(c=c.toLowerCase(),l=l.toLowerCase()),cl?e?-1:1:0})),r})),e.string=function(t){return o.copySafeness(t,t)},e.striptags=function(t,e){var i,n=u((t=a(t,"")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi,""));return i=e?n.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,"\n").replace(/\n\n\n+/g,"\n\n"):n.replace(/\s+/gi," "),o.copySafeness(t,i)},e.title=function(t){var e=(t=a(t,"")).split(" ").map((function(t){return s(t)}));return o.copySafeness(t,e.join(" "))},e.trim=u,e.truncate=function(t,e,i,n){var r=t;if(e=e||255,(t=a(t,"")).length<=e)return t;if(i)t=t.substring(0,e);else{var s=t.lastIndexOf(" ",e);-1===s&&(s=e),t=t.substring(0,s)}return t+=null!=n?n:"...",o.copySafeness(r,t)},e.upper=function(t){return(t=a(t,"")).toUpperCase()},e.urlencode=function(t){var e=encodeURIComponent;return n.isString(t)?e(t):(n.isArray(t)?t:n._entries(t)).map((function(t){var i=t[0],n=t[1];return e(i)+"="+e(n)})).join("&")};var p=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,h=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,d=/^https?:\/\/.*$/,m=/^www\./,f=/\.(?:org|net|com)(?:\:|\/|$)/;e.urlize=function(t,e,i){r(e)&&(e=1/0);var n=!0===i?' rel="nofollow"':"";return t.split(/(\s+)/).filter((function(t){return t&&t.length})).map((function(t){var i=t.match(p),o=i?i[1]:t,a=o.substr(0,e);return d.test(o)?'"+a+"":m.test(o)?'"+a+"":h.test(o)?''+o+"":f.test(o)?'"+a+"":t})).join("")},e.wordcount=function(t){var e=(t=a(t,""))?t.match(/\w+/g):null;return e?e.length:null},e.float=function(t,e){var i=parseFloat(t);return r(i)?e:i};var y=o.makeMacro(["value","default","base"],[],(function(t,e,i){void 0===i&&(i=10);var n=parseInt(t,i);return r(n)?e:n}));e.int=y,e.d=e.default,e.e=e.escape},function(t,e,i){"use strict";function n(t,e){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},n(t,e)}var o=function(t){var e,i;function o(e){var i;return(i=t.call(this)||this).precompiled=e||{},i}return i=t,(e=o).prototype=Object.create(i.prototype),e.prototype.constructor=e,n(e,i),o.prototype.getSource=function(t){return this.precompiled[t]?{src:{type:"code",obj:this.precompiled[t]},path:t}:null},o}(i(6));t.exports={PrecompiledLoader:o}},function(t,e,i){"use strict";var n=i(2).SafeString;e.callable=function(t){return"function"==typeof t},e.defined=function(t){return void 0!==t},e.divisibleby=function(t,e){return t%e==0},e.escaped=function(t){return t instanceof n},e.equalto=function(t,e){return t===e},e.eq=e.equalto,e.sameas=e.equalto,e.even=function(t){return t%2==0},e.falsy=function(t){return!t},e.ge=function(t,e){return t>=e},e.greaterthan=function(t,e){return t>e},e.gt=e.greaterthan,e.le=function(t,e){return t<=e},e.lessthan=function(t,e){return t0)for(var o=t;oe;a+=i)n.push(a);return n},cycler:function(){return t=Array.prototype.slice.call(arguments),e=-1,{current:null,reset:function(){e=-1,this.current=null},next:function(){return++e>=t.length&&(e=0),this.current=t[e],this.current}};var t,e},joiner:function(t){return function(t){t=t||",";var e=!0;return function(){var i=e?"":t;return e=!1,i}}(t)}}}},function(t,e,i){var n=i(4);t.exports=function(t,e){function i(t,e){if(this.name=t,this.path=t,this.defaultEngine=e.defaultEngine,this.ext=n.extname(t),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=("."!==this.defaultEngine[0]?".":"")+this.defaultEngine)}return i.prototype.render=function(e,i){t.render(this.name,e,i)},e.set("view",i),e.set("nunjucksEnv",t),t}},function(t,e,i){"use strict";var n=i(4),o=i(4),a=i(0)._prettifyError,r=i(5),s=i(7).Environment,c=i(24);function l(t,e){return!!Array.isArray(e)&&e.some((function(e){return t.match(e)}))}function u(t,e){(e=e||{}).isString=!0;var i=e.env||new s([]),n=e.wrapper||c;if(!e.name)throw new Error('the "name" option is required when compiling a string');return n([p(t,e.name,i)],e)}function p(t,e,i){var n,o=(i=i||new s([])).asyncFilters,c=i.extensionsList;e=e.replace(/\\/g,"/");try{n=r.compile(t,o,c,e,i.opts)}catch(t){throw a(e,!1,t)}return{name:e,template:n}}t.exports={precompile:function(t,e){var i=(e=e||{}).env||new s([]),a=e.wrapper||c;if(e.isString)return u(t,e);var r=n.existsSync(t)&&n.statSync(t),h=[],d=[];if(r.isFile())h.push(p(n.readFileSync(t,"utf-8"),e.name||t,i));else if(r.isDirectory()){!function i(a){n.readdirSync(a).forEach((function(r){var s=o.join(a,r),c=s.substr(o.join(t,"/").length),u=n.statSync(s);u&&u.isDirectory()?l(c+="/",e.exclude)||i(s):l(c,e.include)&&d.push(s)}))}(t);for(var m=0;mt.length||o>0&&r>=n||o<0&&r<=n);r+=o)a.push(i.memberLookup(t,r));return a}function d(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var m={pop:function(t){if(void 0===t)return this.pop();if(t>=this.length||t<0)throw new Error("KeyError");return this.splice(t,1)},append:function(t){return this.push(t)},remove:function(t){for(var e=0;e{"use strict";__webpack_require__.d(__webpack_exports__,{W:()=>BaseRemoteElement});var lit__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(670),lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(385),ha_nunjucks__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(703),_models_constants__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(290),_models_maps__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(963),_utils__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(626),__decorate=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};class BaseRemoteElement extends lit__WEBPACK_IMPORTED_MODULE_0__.WF{constructor(){super(...arguments),this.icons=[],this.renderRipple=!0,this.value=0,this.getValueFromHass=!0,this.unitOfMeasurement="",this.fireMouseEvent=!0,this.swiping=!1}fireHapticEvent(t){if(this.renderTemplate(this.config.haptics)??1){const e=new Event("haptic",{bubbles:!0,composed:!0});e.detail=t,window.dispatchEvent(e)}}endAction(){this.momentaryStart=void 0,this.momentaryEnd=void 0,this.swiping=!1,this.initialX=void 0,this.initialY=void 0}sendAction(t,e=this.config){let i;switch(t){case"momentary_start_action":i=e.momentary_start_action;break;case"momentary_end_action":i=e.momentary_end_action;break;case"multi_hold_action":i=e.multi_hold_action??e.hold_action??e.multi_tap_action??e.tap_action;break;case"multi_double_tap_action":i=e.multi_double_tap_action??e.double_tap_action??e.multi_tap_action??e.tap_action;break;case"multi_tap_action":i=e.multi_tap_action??e.tap_action;break;case"hold_action":i=e.hold_action??e.tap_action;break;case"double_tap_action":i=e.double_tap_action??e.tap_action;break;default:i=e.tap_action}if(!i)return clearTimeout(this.getValueFromHassTimer),this.getValueFromHass=!0,void this.requestUpdate();if(i=this.deepRenderTemplate(i),i&&this.handleConfirmation(i))try{switch(i.action){case"navigate":this.navigate(i);break;case"url":this.url(i);break;case"assist":this.assist(i);break;case"more-info":this.moreInfo(i);break;case"toggle":this.toggle(i);break;case"call-service":case"perform-action":this.callService(i);break;case"source":this.source(i);break;case"key":this.key(i,t);break;case"fire-dom-event":this.fireDomEvent(i);break;case"eval":this.eval(i);break;case"textbox":case"search":case"keyboard":this.keyboard(i)}}catch(t){throw this.endAction(),t}else this.dispatchEvent(new CustomEvent("confirmation-failed"))}key(t,e){switch(t.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:t.media_player_id,method:t.key});break;case"LG webOS":this.hass.callService("webostv","button",{entity_id:t.media_player_id,button:t.key});break;default:{const i={entity_id:t.remote_id??"",command:t.key??""};"hold_action"!=e||this.config.hold_action&&"none"!=this.config.hold_action.action||(i.hold_secs=.5),this.hass.callService("remote","send_command",i);break}}}source(t){switch(t.platform){case"Fire TV":case"Roku":case"Kodi":case"Apple TV":case"Samsung TV":case"LG webOS":this.hass.callService("media_player","select_source",{entity_id:t.media_player_id??"",source:t.source??""});break;default:this.hass.callService("remote","turn_on",{entity_id:t.remote_id??"",activity:t.source??""})}}callService(t){const[e,i]=(t.perform_action??t.service).split(".");this.hass.callService(e,i,t.data,t.target)}navigate(t){const e=t.navigation_path??"",i=t.navigation_replace??!1;if(e.includes("//"))return void console.error('Protocol detected in navigation path. To navigate to another website use the action "url" with the key "url_path" instead.');1==i?window.history.replaceState(window.history.state?.root?{root:!0}:null,"",e):window.history.pushState(null,"",e);const n=new Event("location-changed",{bubbles:!1,cancelable:!0,composed:!1});n.detail={replace:1==i},window.dispatchEvent(n)}url(t){let e=t.url_path??"";e.includes("//")||(e=`https://${e}`),window.open(e)}assist(t){this.hass?.auth?.external?.config?.hasAssist?this.hass?.auth?.external?.fireMessage({type:"assist/show",payload:{pipeline_id:t.pipeline_id,start_listening:t.start_listening}}):window.open(`${window.location.href}?conversation=1`,"_self")}moreInfo(t){const e=new Event("hass-more-info",{bubbles:!0,cancelable:!0,composed:!0});e.detail={entityId:t.target?.entity_id??this.config.entity_id},this.dispatchEvent(e)}toggle(t){const e={...t.data,...t.target};if(Array.isArray(e.entity_id))for(const t of e.entity_id)this.toggleSingle(t);else e.entity_id?this.toggleSingle(e.entity_id):this.hass.callService("homeassistant","toggle",e)}toggleSingle(t){const e=["closed","locked","off"].includes(this.hass.states[t].state);let i,n=t.split(".")[0];switch(n){case"lock":i=e?"unlock":"lock";break;case"cover":i=e?"open_cover":"close_cover";break;case"button":case"input_button":i="press";break;case"scene":i="turn_on";break;case"valve":i=e?"open_valve":"close_valve";break;default:n="homeassistant",i=e?"turn_on":"turn_off"}this.hass.callService(n,i,{entity_id:t})}keyboard(t){const e=new Event("keyboard-dialog-open",{composed:!0,bubbles:!0});e.detail=t,this.getRootNode().querySelector("keyboard-dialog").shadowRoot?.querySelector("dialog")?.dispatchEvent(e)}fireDomEvent(t){const e=new Event(t.event_type??"ll-custom",{composed:!0,bubbles:!0});e.detail=t,this.dispatchEvent(e)}eval(action){eval(action.eval??"")}handleConfirmation(t){if(t.confirmation){let e=`Are you sure you want to run action '${t.action}'?`;return 1==t.confirmation?(this.fireHapticEvent("warning"),confirm(e)):(t.confirmation?.text&&(e=t.confirmation.text),!!t.confirmation?.exemptions?.map((t=>t.user)).includes(this.hass.user?.id)||(this.fireHapticEvent("warning"),confirm(e)))}return!0}firstUpdated(){this.addEventListener("confirmation-failed",this.confirmationFailed)}confirmationFailed(){clearTimeout(this.getValueFromHassTimer),this.getValueFromHass=!0,this.requestUpdate()}setValue(){if(this.entityId=this.renderTemplate(this.config.entity_id),this.unitOfMeasurement=this.renderTemplate(this.config.unit_of_measurement)??"",this.getValueFromHass&&this.entityId)if(clearInterval(this.valueUpdateInterval),this.valueUpdateInterval=void 0,this.valueAttribute=this.renderTemplate(this.config.value_attribute??"state").toLowerCase(),this.hass.states[this.entityId])if("state"==this.valueAttribute)this.value=this.hass.states[this.entityId].state;else{let t;const e=this.valueAttribute.match(/\[\d+\]$/);if(e){const i=parseInt(e[0].replace(/\[|\]/g,""));this.valueAttribute=this.valueAttribute.replace(e[0],""),t=this.hass.states[this.entityId]?.attributes?.[this.valueAttribute],t=t&&Array.isArray(t)&&t.length?t[i]:void 0}else t=this.hass.states[this.entityId]?.attributes?.[this.valueAttribute];if(null!=t||"elapsed"==this.valueAttribute)switch(this.valueAttribute){case"brightness":this.value=Math.round(100*parseInt(t??0)/255);break;case"media_position":try{const e=()=>{"playing"==this.hass.states[this.entityId].state?this.value=Math.min(Math.floor(Math.floor(t)+(Date.now()-Date.parse(this.hass.states[this.entityId].attributes?.media_position_updated_at))/1e3),Math.floor(this.hass.states[this.entityId].attributes?.media_duration)):this.value=t};e(),this.valueUpdateInterval=setInterval(e,500)}catch(e){console.error(e),this.value=t}break;case"elapsed":if(this.entityId.startsWith("timer.")){if("idle"==this.hass.states[this.entityId].state)this.value=0;else{const t=this.hass.states[this.entityId].attributes?.duration.split(":"),e=3600*parseInt(t[0])+60*parseInt(t[1])+parseInt(t[2]),i=Date.parse(this.hass.states[this.entityId].attributes?.finishes_at);try{const t=()=>{if("active"==this.hass.states[this.entityId].state){const t=(i-Date.now())/1e3,n=Math.floor(e-t);this.value=Math.min(n,e)}else{const t=this.hass.states[this.entityId].attributes?.remaining.split(":"),i=3600*parseInt(t[0])+60*parseInt(t[1])+parseInt(t[2]);this.value=Math.floor(e-i)}};t(),this.valueUpdateInterval=setInterval(t,500)}catch(t){console.error(t),this.value=0}}break}default:this.value=t}else this.value=t}else this.value=void 0}renderTemplate(t,e){let i=0;this.momentaryStart&&this.momentaryEnd&&(i=(this.momentaryEnd-this.momentaryStart)/1e3),e={VALUE:this.value,HOLD_SECS:i??0,UNIT:this.unitOfMeasurement,value:this.value,hold_secs:i??0,unit:this.unitOfMeasurement,config:{...this.config,entity:this.entityId,attribute:this.valueAttribute},...e};let n=(e={render:t=>this.renderTemplate(t,e),...e}).value;null!=n&&"number"==typeof n&&null!=this.precision&&(n=Number(n).toFixed(this.precision),e={...e,VALUE:n,value:n});const o=(0,ha_nunjucks__WEBPACK_IMPORTED_MODULE_2__.X)(this.hass,t,e);if(o!=t)return o;if("string"==typeof t)for(const i of["VALUE","HOLD_SECS","UNIT"]){if(t==i)return e[i];t.includes(i)&&(t=t.replace(new RegExp(i,"g"),e[i]??""))}return t}deepRenderTemplate(t,e){const i=structuredClone(t),n=(0,_utils__WEBPACK_IMPORTED_MODULE_4__.b$)(i);for(const t of n)(0,_utils__WEBPACK_IMPORTED_MODULE_4__.HD)(i,t,this.renderTemplate((0,_utils__WEBPACK_IMPORTED_MODULE_4__.vz)(i,t),e));return i}resetGetValueFromHass(){const t=this.renderTemplate(this.config.value_from_hass_delay??_models_constants__WEBPACK_IMPORTED_MODULE_5__.s$);this.getValueFromHassTimer=setTimeout((()=>{this.getValueFromHass=!0,this.requestUpdate()}),t)}buildIcon(t,e){t=this.renderTemplate(t??"",e);let i=lit__WEBPACK_IMPORTED_MODULE_0__.qy``;if(t)if(t.includes(":"))i=lit__WEBPACK_IMPORTED_MODULE_0__.qy``;else{const e=(this.icons??[]).filter((e=>e.name==t))[0]??_models_maps__WEBPACK_IMPORTED_MODULE_3__.o$.filter((e=>e.name==t))[0];i=lit__WEBPACK_IMPORTED_MODULE_0__.qy``}return lit__WEBPACK_IMPORTED_MODULE_0__.qy`
${i}
`}buildLabel(t,e){if(t){const i=this.renderTemplate(t,e);if(i)return lit__WEBPACK_IMPORTED_MODULE_0__.qy`
${i}
`}return""}buildRipple(){return this.renderRipple?lit__WEBPACK_IMPORTED_MODULE_0__.qy``:""}buildStyles(t,e){return t?lit__WEBPACK_IMPORTED_MODULE_0__.qy``:""}onStart(t){}onEnd(t){}onMove(t){}onMouseDown(t){this.fireMouseEvent&&this.onStart(t)}onMouseUp(t){this.fireMouseEvent&&this.onEnd(t),this.fireMouseEvent=!0}onMouseMove(t){this.fireMouseEvent&&this.onMove(t)}onTouchStart(t){this.fireMouseEvent=!1,this.onStart(t)}onTouchEnd(t){this.fireMouseEvent=!1,this.onEnd(t)}onTouchMove(t){this.fireMouseEvent=!1,this.onMove(t)}onContextMenu(t){if(!this.fireMouseEvent)return t.preventDefault(),t.stopPropagation(),!1}toggleRipple(){this.cancelRippleToggle(),this.renderRippleTransition=setTimeout((()=>this.rippleTransition=!1),400),this.renderRippleOff=setTimeout((()=>this.renderRipple=!1),800),this.renderRippleOn=setTimeout((()=>this.cancelRippleToggle()),850)}cancelRippleToggle(){clearTimeout(this.renderRippleOff),clearTimeout(this.renderRippleOn),clearTimeout(this.renderRippleTransition),this.renderRippleOff=void 0,this.renderRippleOn=void 0,this.renderRippleTransition=void 0,this.rippleTransition=!0,this.renderRipple=!0}static get styles(){return lit__WEBPACK_IMPORTED_MODULE_0__.AH`:host{display:flex;flex-flow:column;place-content:center space-evenly;align-items:center;position:relative;border:none;border-radius:10px;padding:0;box-sizing:border-box;outline:0;overflow:visible;font-size:inherit;color:inherit;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}md-ripple.transition-on{opacity:1 transition: opacity 375ms linear}md-ripple.transition-off{opacity:0;transition:opacity 375ms linear}.icon{pointer-events:none;position:relative;flex-flow:column;place-content:center;display:var(--icon-display,inline-flex);transform:var(--icon-transform);color:var(--icon-color,var(--primary-text-color));filter:var(--icon-filter, none);height:var(--size,48px);width:var(--size,48px);--mdc-icon-size:var(--size, 48px)}ha-icon,svg{display:inline-flex;flex-direction:column;justify-content:center;text-align:center;align-items:center;vertical-align:middle;height:var(--size,48px);width:var(--size,48px);pointer-events:none}.label{position:relative;pointer-events:none;justify-content:center;align-items:center;height:15px;line-height:15px;width:inherit;margin:0;font-family:inherit;font-size:12px;font-weight:700;display:var(--label-display,inline-flex);transform:var(--label-transform);color:var(--label-color,inherit);filter:var(--label-filter, none)}`}}__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.MZ)()],BaseRemoteElement.prototype,"hass",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.MZ)()],BaseRemoteElement.prototype,"config",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.MZ)()],BaseRemoteElement.prototype,"icons",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"renderRipple",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"renderRippleOff",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"renderRippleOn",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"renderRippleTransition",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"rippleTransition",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.wk)()],BaseRemoteElement.prototype,"value",void 0),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.Ls)({passive:!0})],BaseRemoteElement.prototype,"onMouseDown",null),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.Ls)({passive:!0})],BaseRemoteElement.prototype,"onMouseMove",null),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.Ls)({passive:!0})],BaseRemoteElement.prototype,"onTouchStart",null),__decorate([(0,lit_decorators_js__WEBPACK_IMPORTED_MODULE_1__.Ls)({passive:!0})],BaseRemoteElement.prototype,"onTouchMove",null)},290:(t,e,i)=>{"use strict";i.d(e,{$6:()=>r,At:()=>o,HB:()=>h,RZ:()=>p,Xy:()=>s,a3:()=>a,bQ:()=>d,hI:()=>l,jc:()=>n,s$:()=>c,zM:()=>u});const n=200,o=500,a=100,r=!0,s=!0,c=1e3,l=1,u=100,p=.01,h=0,d=1},963:(t,e,i)=>{"use strict";i.d(e,{$i:()=>n,tz:()=>o,qz:()=>a,_6:()=>r,o$:()=>s,iu:()=>c,ci:()=>l,np:()=>u,rl:()=>p,j0:()=>h,$S:()=>d,ks:()=>m,Qz:()=>f,CI:()=>y,Mo:()=>_});const n=[{type:"button",name:"power",tap_action:{action:"key",key:"POWER"},icon:"mdi:power"},{type:"button",name:"home",tap_action:{action:"key",key:"HOME"},icon:"mdi:home"},{type:"button",name:"back",tap_action:{action:"key",key:"BACK"},icon:"mdi:keyboard-backspace"},{type:"button",name:"menu",tap_action:{action:"key",key:"MENU"},icon:"mdi:menu"},{type:"button",name:"settings",tap_action:{action:"key",key:"SETTINGS"},icon:"mdi:cog"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"VOLUME_UP"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"VOLUME_DOWN"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"key",key:"MUTE"},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"DPAD_UP"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"DPAD_DOWN"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"DPAD_LEFT"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"DPAD_RIGHT"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"DPAD_CENTER"},icon:"mdi:checkbox-blank-circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"DPAD_CENTER"},up:{tap_action:{action:"key",key:"DPAD_UP"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"DPAD_DOWN"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"DPAD_LEFT"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"DPAD_RIGHT"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"key",key:"MEDIA_PLAY"},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"key",key:"MEDIA_PAUSE"},icon:"mdi:pause"},{type:"button",name:"play_pause",tap_action:{action:"key",key:"MEDIA_PLAY_PAUSE"},icon:"mdi:play-pause"},{type:"button",name:"rewind",tap_action:{action:"key",key:"MEDIA_REWIND"},icon:"mdi:rewind"},{type:"button",name:"fast_forward",tap_action:{action:"key",key:"MEDIA_FAST_FORWARD"},icon:"mdi:fast-forward"},{type:"button",name:"previous",tap_action:{action:"key",key:"MEDIA_PREVIOUS"},icon:"mdi:skip-previous"},{type:"button",name:"next",tap_action:{action:"key",key:"MEDIA_NEXT"},icon:"mdi:skip-next"},{type:"button",name:"stop",tap_action:{action:"key",key:"MEDIA_STOP"},icon:"mdi:stop"},{type:"button",name:"record",tap_action:{action:"key",key:"MEDIA_RECORD"},icon:"mdi:record"},{type:"button",name:"keyboard",tap_action:{action:"keyboard"},icon:"mdi:keyboard"},{type:"button",name:"textbox",tap_action:{action:"textbox"},icon:"mdi:text-box"},{type:"button",name:"search",tap_action:{action:"search"},icon:"mdi:google-assistant"},{type:"button",name:"delete",tap_action:{action:"key",key:"DEL"},hold_action:{action:"repeat"},icon:"mdi:backspace"},{type:"button",name:"forward_delete",tap_action:{action:"key",key:"FOWARD_DEL"},hold_action:{action:"repeat"},icon:"mdi:backspace-reverse"},{type:"button",name:"enter",tap_action:{action:"key",key:"ENTER"},icon:"mdi:magnify"},{type:"button",name:"channel_up",tap_action:{action:"key",key:"CHANNEL_UP"},icon:"mdi:arrow-up-circle"},{type:"button",name:"channel_down",tap_action:{action:"key",key:"CHANNEL_DOWN"},icon:"mdi:arrow-down-circle"},{type:"button",name:"red",tap_action:{action:"key",key:"PROG_RED"},icon:"mdi:alpha-r-box"},{type:"button",name:"green",tap_action:{action:"key",key:"PROG_GREEN"},icon:"mdi:alpha-g-box"},{type:"button",name:"yellow",tap_action:{action:"key",key:"PROG_YELLOW"},icon:"mdi:alpha-y-box"},{type:"button",name:"blue",tap_action:{action:"key",key:"PROG_BLUE"},icon:"mdi:alpha-b-box"},{type:"button",name:"a",tap_action:{action:"key",key:"BUTTON_A"},icon:"mdi:alpha-a-circle"},{type:"button",name:"b",tap_action:{action:"key",key:"BUTTON_B"},icon:"mdi:alpha-b-circle"},{type:"button",name:"x",tap_action:{action:"key",key:"BUTTON_X"},icon:"mdi:alpha-x-circle"},{type:"button",name:"y",tap_action:{action:"key",key:"BUTTON_Y"},icon:"mdi:alpha-y-circle"},{type:"button",name:"xpad",icon:"mdi:gamepad-circle"},{type:"button",name:"npad",icon:"mdi:gamepad-circle"},{type:"button",name:"n0",tap_action:{action:"key",key:"0"},icon:"mdi:numeric-0"},{type:"button",name:"n1",tap_action:{action:"key",key:"1"},icon:"mdi:numeric-1"},{type:"button",name:"n2",tap_action:{action:"key",key:"2"},icon:"mdi:numeric-2"},{type:"button",name:"n3",tap_action:{action:"key",key:"3"},icon:"mdi:numeric-3"},{type:"button",name:"n4",tap_action:{action:"key",key:"4"},icon:"mdi:numeric-4"},{type:"button",name:"n5",tap_action:{action:"key",key:"5"},icon:"mdi:numeric-5"},{type:"button",name:"n6",tap_action:{action:"key",key:"6"},icon:"mdi:numeric-6"},{type:"button",name:"n7",tap_action:{action:"key",key:"7"},icon:"mdi:numeric-7"},{type:"button",name:"n8",tap_action:{action:"key",key:"8"},icon:"mdi:numeric-8"},{type:"button",name:"n9",tap_action:{action:"key",key:"9"},icon:"mdi:numeric-9"},{type:"button",name:"numpad",icon:"mdi:dialpad"},{type:"button",name:"f1",tap_action:{action:"key",key:"F1"},icon:"mdi:keyboard-f1"},{type:"button",name:"f2",tap_action:{action:"key",key:"F2"},icon:"mdi:keyboard-f2"},{type:"button",name:"f3",tap_action:{action:"key",key:"F3"},icon:"mdi:keyboard-f3"},{type:"button",name:"f4",tap_action:{action:"key",key:"F4"},icon:"mdi:keyboard-f4"},{type:"button",name:"f5",tap_action:{action:"key",key:"F5"},icon:"mdi:keyboard-f5"},{type:"button",name:"f6",tap_action:{action:"key",key:"F6"},icon:"mdi:keyboard-f6"},{type:"button",name:"f7",tap_action:{action:"key",key:"F7"},icon:"mdi:keyboard-f7"},{type:"button",name:"f8",tap_action:{action:"key",key:"F8"},icon:"mdi:keyboard-f8"},{type:"button",name:"f9",tap_action:{action:"key",key:"F9"},icon:"mdi:keyboard-f9"},{type:"button",name:"f10",tap_action:{action:"key",key:"F10"},icon:"mdi:keyboard-f10"},{type:"button",name:"f11",tap_action:{action:"key",key:"F11"},icon:"mdi:keyboard-f11"},{type:"button",name:"f12",tap_action:{action:"key",key:"F12"},icon:"mdi:keyboard-f12"},{type:"button",name:"info",tap_action:{action:"key",key:"INFO"},icon:"mdi:information"},{type:"button",name:"guide",tap_action:{action:"key",key:"GUIDE"},icon:"mdi:television-guide"},{type:"button",name:"captions",tap_action:{action:"key",key:"CAPTIONS"},icon:"mdi:closed-caption"},{type:"button",name:"button_mode",tap_action:{action:"key",key:"BUTTON_MODE"},icon:"mdi:gesture-tap-button"},{type:"button",name:"explorer",tap_action:{action:"key",key:"EXPLORER"},icon:"mdi:folder-multiple"},{type:"button",name:"teletext",tap_action:{action:"key",key:"TV_TELETEXT"},icon:"mdi:card-text"},{type:"button",name:"tv",tap_action:{action:"key",key:"TV"},icon:"mdi:television-box"},{type:"button",name:"dvr",tap_action:{action:"key",key:"DVR"},icon:"mdi:audio-video"},{type:"button",name:"audio_track",tap_action:{action:"key",key:"MEDIA_AUDIO_TRACK"},icon:"mdi:waveform"}],o=[{type:"button",name:"appletv",tap_action:{action:"source",source:"https://tv.apple.com"},icon:"appletv"},{type:"button",name:"crunchyroll",tap_action:{action:"source",source:"crunchyroll://"},icon:"crunchyroll"},{type:"button",name:"dazn",tap_action:{action:"source",source:"https://open.dazn.com/"},icon:"dazn"},{type:"button",name:"discoveryplus",tap_action:{action:"source",source:"discoveryplus://"},icon:"discovery"},{type:"button",name:"disney",tap_action:{action:"source",source:"https://www.disneyplus.com"},icon:"disney"},{type:"button",name:"emby",tap_action:{action:"source",source:"embyatv://tv.emby.embyatv/startapp"},icon:"mdi:emby"},{type:"button",name:"f1tv",tap_action:{action:"source",source:"com.formulaone.production"},icon:"f1tv"},{type:"button",name:"filmplus",tap_action:{action:"source",source:"com.guideplus.co"},icon:"filmplus"},{type:"button",name:"foxsports",tap_action:{action:"source",source:"foxsports://live"},icon:"foxsports"},{type:"button",name:"hulu",tap_action:{action:"source",source:"hulu://"},icon:"mdi:hulu"},{type:"button",name:"jellyfin",tap_action:{action:"source",source:"org.jellyfin.androidtv"},icon:"jellyfin"},{type:"button",name:"kijk",tap_action:{action:"source",source:"com.talpa.kijk"},icon:"kijk"},{type:"button",name:"kodi",tap_action:{action:"source",source:"org.xbmc.kodi"},icon:"mdi:kodi"},{type:"button",name:"max",tap_action:{action:"source",source:"com.wbd.stream"},icon:"max"},{type:"button",name:"mlbtv",tap_action:{action:"source",source:"mlbatbat://"},icon:"mlbtv"},{type:"button",name:"nba",tap_action:{action:"source",source:"gametime://"},icon:"nba"},{type:"button",name:"netflix",tap_action:{action:"source",source:"netflix://"},icon:"mdi:netflix"},{type:"button",name:"npostart",tap_action:{action:"source",source:"nl.uitzendinggemist"},icon:"npo"},{type:"button",name:"nrktv",tap_action:{action:"source",source:"nrktv://"},icon:"nrktv"},{type:"button",name:"pandora",tap_action:{action:"source",source:"com.pandora.android.atv"},icon:"mdi:pandora"},{type:"button",name:"paramount",tap_action:{action:"source",source:"com.cbs.ott"},icon:"paramount"},{type:"button",name:"pia",tap_action:{action:"source",source:"piavpn://"},icon:"pia"},{type:"button",name:"plex",tap_action:{action:"source",source:"plex://"},icon:"mdi:plex"},{type:"button",name:"primevideo",tap_action:{action:"source",source:"https://app.primevideo.com"},icon:"primevideo"},{type:"button",name:"rakutentv",tap_action:{action:"source",source:"https://rakutentv.page.link"},icon:"rakutentv"},{type:"button",name:"rakutenviki",tap_action:{action:"source",source:"viki://home"},icon:"rakutenviki"},{type:"button",name:"skyshowtime",tap_action:{action:"source",source:"https://www.skyshowtime.com/deeplink"},icon:"showtime"},{type:"button",name:"spotify",tap_action:{action:"source",source:"spotify://"},icon:"mdi:spotify"},{type:"button",name:"starplus",tap_action:{action:"source",source:"https://www.starplus.com"},icon:"starplus"},{type:"button",name:"steam",tap_action:{action:"source",source:"com.valvesoftware.steamlink"},icon:"mdi:steam"},{type:"button",name:"stremio",tap_action:{action:"source",source:"stremio://"},icon:"stremio"},{type:"button",name:"surfshark",tap_action:{action:"source",source:"https://surfshark.com/locations-ul"},icon:"surfshark"},{type:"button",name:"tv2play",tap_action:{action:"source",source:"dk.tv2.tv2playtv://*.tv2.dk/android/dk.tv2.tv2playtv/callback"},icon:"tv2play"},{type:"button",name:"viaplay",tap_action:{action:"source",source:"viaplay://deeplink/film"},icon:"viaplay"},{type:"button",name:"videoland",tap_action:{action:"source",source:"videoland-v2://"},icon:"videoland"},{type:"button",name:"vlc",tap_action:{action:"source",source:"org.videolan.vlc"},icon:"mdi:vlc"},{type:"button",name:"vudu",tap_action:{action:"source",source:"vuduapp://"},icon:"vudu"},{type:"button",name:"waiputv",tap_action:{action:"source",source:"de.exaring.waipu"},icon:"waiputv"},{type:"button",name:"wow",tap_action:{action:"source",source:"de.sky.online"},icon:"wow"},{type:"button",name:"youtube",tap_action:{action:"source",source:"vnd.youtube://"},icon:"mdi:youtube"},{type:"button",name:"youtubetv",tap_action:{action:"source",source:"https://tv.youtube.com"},icon:"mdi:youtube-tv"}],a=[{type:"button",name:"wakeup",tap_action:{action:"key",key:"wakeup"},icon:"mdi:power-on"},{type:"button",name:"suspend",tap_action:{action:"key",key:"suspend"},icon:"mdi:power-off"},{type:"button",name:"home",tap_action:{action:"key",key:"home"},icon:"mdi:home"},{type:"button",name:"menu",tap_action:{action:"key",key:"menu"},icon:"mdi:menu"},{type:"button",name:"top_menu",tap_action:{action:"key",key:"top_menu"},icon:"mdi:apple"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"volume_up"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"volume_down"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"up"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"down"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"left"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"right"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"select"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"select"},up:{tap_action:{action:"key",key:"up"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"down"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"left"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"right"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"key",key:"play"},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"key",key:"pause"},icon:"mdi:pause"},{type:"button",name:"skip_backward",tap_action:{action:"key",key:"skip_backward"},icon:"mdi:skip-backward"},{type:"button",name:"skip_forward",tap_action:{action:"key",key:"skip_forward"},icon:"mdi:skip-forward"},{type:"button",name:"previous",tap_action:{action:"key",key:"previous"},icon:"mdi:skip-previous"},{type:"button",name:"next",tap_action:{action:"key",key:"next"},icon:"mdi:skip-next"}],r=[{type:"button",name:"allente",tap_action:{action:"source",source:"Allente"},icon:"allente"},{type:"button",name:"appletv",tap_action:{action:"source",source:"TV"},icon:"appletv"},{type:"button",name:"crunchyroll",tap_action:{action:"source",source:"Crunchyroll"},icon:"crunchyroll"},{type:"button",name:"dazn",tap_action:{action:"source",source:"DAZN"},icon:"dazn"},{type:"button",name:"discoveryplus",tap_action:{action:"source",source:"discovery+"},icon:"discovery"},{type:"button",name:"disney",tap_action:{action:"source",source:"Disney+"},icon:"disney"},{type:"button",name:"emby",tap_action:{action:"source",source:"Emby"},icon:"mdi:emby"},{type:"button",name:"f1tv",tap_action:{action:"source",source:"F1 TV"},icon:"f1tv"},{type:"button",name:"foxsports",tap_action:{action:"source",source:"FOX Sports"},icon:"foxsports"},{type:"button",name:"hulu",tap_action:{action:"source",source:"Hulu"},icon:"mdi:hulu"},{type:"button",name:"max",tap_action:{action:"source",source:"Max"},icon:"max"},{type:"button",name:"mlbtv",tap_action:{action:"source",source:"MLB"},icon:"mlbtv"},{type:"button",name:"nba",tap_action:{action:"source",source:"NBA"},icon:"nba"},{type:"button",name:"netflix",tap_action:{action:"source",source:"Netflix"},icon:"mdi:netflix"},{type:"button",name:"npostart",tap_action:{action:"source",source:"NPO"},icon:"npo"},{type:"button",name:"nrktv",tap_action:{action:"source",source:"NRK TV"},icon:"nrktv"},{type:"button",name:"pandora",tap_action:{action:"source",source:"Pandora"},icon:"mdi:pandora"},{type:"button",name:"paramount",tap_action:{action:"source",source:"Paramount+"},icon:"paramount"},{type:"button",name:"pia",tap_action:{action:"source",source:"PIA VPN"},icon:"pia"},{type:"button",name:"plex",tap_action:{action:"source",source:"Plex"},icon:"mdi:plex"},{type:"button",name:"primevideo",tap_action:{action:"source",source:"Prime Video"},icon:"primevideo"},{type:"button",name:"skyshowtime",tap_action:{action:"source",source:"SkyShowtime"},icon:"showtime"},{type:"button",name:"spotify",tap_action:{action:"source",source:"Spotify"},icon:"mdi:spotify"},{type:"button",name:"steam",tap_action:{action:"source",source:"Steam Link"},icon:"mdi:steam"},{type:"button",name:"tv2play",tap_action:{action:"source",source:"TV 2 Play"},icon:"tv2play"},{type:"button",name:"viaplay",tap_action:{action:"source",source:"Viaplay"},icon:"viaplay"},{type:"button",name:"videoland",tap_action:{action:"source",source:"Videoland"},icon:"videoland"},{type:"button",name:"vlc",tap_action:{action:"source",source:"VLC"},icon:"mdi:vlc"},{type:"button",name:"vudu",tap_action:{action:"source",source:"Fandango at Home"},icon:"vudu"},{type:"button",name:"waiputv",tap_action:{action:"source",source:"waipu.tv"},icon:"waiputv"},{type:"button",name:"wow",tap_action:{action:"source",source:"WOW"},icon:"wow"},{type:"button",name:"youtube",tap_action:{action:"source",source:"YouTube"},icon:"mdi:youtube"},{type:"button",name:"youtubetv",tap_action:{action:"source",source:"YouTube TV"},icon:"mdi:youtube-tv"}],s=[{name:"allente",path:"M12.8246 16.9889V9.1355H8.9057C8.9057 9.1355 8.8874 10.2821 8.8874 10.3738 8.1728 9.4052 6.9869 8.9602 5.2068 8.9522 3.3664 8.9706 1.8037 9.7768.9791 10.947.3325 11.8161 0 12.9234 0 14.2716 0 15.6774.3325 16.7663.9791 17.6171 1.8481 18.8187 3.2697 19.447 5.0629 19.447 7.0759 19.447 7.8717 19.0779 8.6282 18.4497 8.6282 18.8737 8.7382 19.3187 8.8141 19.3187H13.0444C12.8612 19.0779 12.8246 17.9313 12.8246 16.9889ZM8.2408 15.8239C7.8901 16.248 7.3351 16.5072 6.4293 16.5072 5.4686 16.5072 4.8769 16.1564 4.5628 15.693 4.3219 15.3423 4.1937 14.769 4.1937 14.2323 4.1937 13.6773 4.3403 13.0674 4.6361 12.6984 4.9869 12.2742 5.5785 11.9785 6.5026 11.9785 7.3351 11.9785 7.8874 12.2559 8.2199 12.6251 8.5523 12.9758 8.7382 13.6041 8.7382 14.2323 8.7408 14.8266 8.5549 15.4365 8.2408 15.8239ZM14.2801 19.3658C14.2068 19.3291 14.1361 19.0804 14.2068 18.3134 14.2068 16.7611 14.2068 8.4731 14.2068 6.1825 14.2068 5.4234 14.0733 4.8998 14.0366 4.7322H18.2487C18.2932 4.8605 18.4188 5.3422 18.4188 6.0149 18.4188 8.0647 18.3246 15.2544 18.4188 18.4416 18.4188 18.9783 18.4188 19.2741 18.5288 19.3657ZM19.7512 19.3175C19.678 19.2808 19.678 19.1709 19.678 18.2651 19.678 16.7128 19.678 8.4248 19.678 6.1342 19.678 5.3751 19.5445 4.8515 19.5078 4.6839H23.7199C23.7644 4.8123 23.89 5.2939 23.89 5.9667 23.89 8.0164 23.89 15.4012 23.89 18.3933 23.89 18.93 23.89 19.2258 24 19.3174Z"},{name:"appletv",path:"M 6.820312 8.246094 C 7.179688 7.824219 7.398438 7.273438 7.398438 6.675781 C 7.398438 6.613281 7.398438 6.550781 7.394531 6.492188 L 7.394531 6.5 C 6.746094 6.566406 6.183594 6.871094 5.785156 7.324219 L 5.78125 7.328125 C 5.417969 7.726562 5.195312 8.261719 5.195312 8.851562 C 5.195312 8.910156 5.199219 8.96875 5.203125 9.023438 L 5.203125 9.015625 C 5.207031 9.015625 5.214844 9.015625 5.222656 9.015625 C 5.867188 9.015625 6.445312 8.71875 6.820312 8.25 Z M 8.195312 12.304688 C 8.203125 13.292969 8.796875 14.140625 9.648438 14.511719 L 9.664062 14.519531 C 9.46875 15.109375 9.214844 15.625 8.894531 16.09375 L 8.90625 16.070312 C 8.449219 16.734375 7.980469 17.398438 7.230469 17.414062 C 6.5 17.429688 6.269531 16.980469 5.425781 16.980469 C 4.589844 16.980469 4.328125 17.398438 3.632812 17.429688 C 2.925781 17.453125 2.375 16.703125 1.914062 16.039062 C 1.226562 15.109375 0.8125 13.941406 0.8125 12.671875 C 0.8125 11.902344 0.964844 11.167969 1.242188 10.5 L 1.226562 10.535156 C 1.679688 9.734375 2.519531 9.195312 3.484375 9.171875 L 3.488281 9.171875 C 4.191406 9.15625 4.863281 9.648438 5.296875 9.648438 C 5.726562 9.648438 6.535156 9.0625 7.386719 9.148438 C 8.210938 9.179688 8.933594 9.59375 9.378906 10.21875 L 9.386719 10.226562 C 8.675781 10.664062 8.210938 11.429688 8.195312 12.304688 Z M 15.019531 17.304688 C 14.589844 17.429688 14.097656 17.5 13.585938 17.5 C 13.582031 17.5 13.574219 17.5 13.566406 17.5 C 12.417969 17.5 11.847656 16.851562 11.847656 15.546875 L 11.847656 9.796875 L 10.851562 9.796875 L 10.851562 8.753906 L 11.898438 8.753906 L 11.898438 7.398438 L 13.28125 6.832031 L 13.28125 8.761719 L 14.878906 8.761719 L 14.878906 9.804688 L 13.289062 9.804688 L 13.289062 15.238281 C 13.285156 15.277344 13.285156 15.320312 13.285156 15.367188 C 13.285156 15.640625 13.359375 15.898438 13.492188 16.117188 L 13.492188 16.109375 C 13.644531 16.265625 13.855469 16.363281 14.089844 16.363281 C 14.128906 16.363281 14.160156 16.359375 14.195312 16.355469 L 14.191406 16.355469 C 14.492188 16.34375 14.777344 16.304688 15.050781 16.242188 L 15.019531 16.25 Z M 20.019531 17.367188 L 18.324219 17.367188 L 15.195312 8.753906 L 16.726562 8.753906 L 18.617188 14.355469 C 18.6875 14.574219 18.871094 15.199219 19.164062 16.242188 L 19.441406 15.308594 L 19.75 14.367188 L 21.710938 8.746094 L 23.230469 8.746094 Z M 20.019531 17.367188 Z"},{name:"crunchyroll",path:"M 2.933594 13.46875 C 2.707031 10.601562 3.65625 7.769531 5.566406 5.621094 C 7.476562 3.476562 10.179688 2.199219 13.050781 2.089844 C 15.921875 1.984375 18.710938 3.050781 20.777344 5.046875 C 22.847656 7.042969 24.007812 9.792969 24 12.667969 L 24 12 C 24 5.371094 18.628906 0 12 0 C 5.371094 0 0 5.371094 0 12 C 0 18.628906 5.371094 24 12 24 L 12.800781 24 C 7.261719 23.609375 2.964844 19.015625 2.933594 13.46875 Z M 19.199219 14 C 14.886719 14.015625 13.8125 8.011719 17.867188 6.53125 C 16.679688 5.898438 15.347656 5.574219 14 5.601562 C 10.601562 5.601562 7.539062 7.648438 6.238281 10.785156 C 4.9375 13.925781 5.65625 17.539062 8.058594 19.941406 C 10.460938 22.34375 14.074219 23.0625 17.214844 21.761719 C 20.351562 20.460938 22.398438 17.398438 22.398438 14 C 22.421875 13.464844 22.378906 12.925781 22.265625 12.398438 C 21.609375 13.449219 20.4375 14.0625 19.199219 14 Z M 19.199219 14 Z"},{name:"dazn",path:"m14.774 8.291.772-2.596.79 2.596zm3.848 2.268-2.025-6.128c-.045-.135-.097-.224-.154-.266a.497.497 0 0 0-.28-.063h-1.12a.485.485 0 0 0-.284.068c-.06.045-.11.132-.149.261l-2.045 6.128c-.025.032-.038.096-.038.192 0 .149.09.223.27.223h.84c.076 0 .139-.003.187-.01a.207.207 0 0 0 .116-.048.326.326 0 0 0 .077-.116c.022-.051.046-.119.072-.202l.318-1.071h2.306l.327 1.051c.026.09.051.16.077.213a.395.395 0 0 0 .087.12c.031.028.07.047.114.053h.002c.045.006.103.01.173.01h.897c.18 0 .27-.074.27-.223a.59.59 0 0 0-.005-.09.878.878 0 0 0-.036-.108l.003.006zm-.994 2.467h-.646c-.168 0-.279.024-.333.072-.055.049-.082.147-.082.295v3.638l-1.91-3.647c-.076-.155-.152-.253-.226-.295-.074-.041-.204-.063-.39-.063h-.599c-.167 0-.278.025-.332.073-.055.048-.082.147-.082.294v6.138c0 .148.025.246.077.294.052.048.16.072.328.072h.656c.167 0 .278-.024.332-.072.055-.048.082-.146.082-.294v-3.648l1.91 3.657c.077.155.152.253.227.295.073.042.204.062.39.062h.598c.167 0 .278-.024.333-.072.054-.048.082-.146.082-.294v-6.138c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.333-.073zm3.203-.581 1.665 1.665v8.385H1.505V14.11l1.663-1.664a.63.63 0 0 0 0-.89L1.504 9.891V1.505h20.991v8.384l-1.665 1.666a.63.63 0 0 0 0 .89zM24 0H0v10.613L1.387 12 0 13.387V24h24V13.387L22.613 12 24 10.613zM10.67 18.469H7.96l2.855-4.014a.67.67 0 0 0 .087-.155.425.425 0 0 0 .019-.135v-.772c0-.148-.028-.246-.082-.294-.055-.048-.166-.073-.334-.073H6.382c-.149 0-.245.028-.29.082-.045.055-.068.169-.068.343v.58c0 .172.023.287.068.341.045.055.141.083.29.083h2.545L6.11 18.469a.438.438 0 0 0-.107.27v.792c0 .148.027.245.082.294.055.048.167.072.334.072h4.25c.148 0 .245-.027.29-.081.045-.055.068-.17.068-.344v-.579c0-.173-.023-.287-.068-.342-.045-.055-.142-.082-.29-.082zM9.408 8.233c0 .264-.017.484-.052.661a1.08 1.08 0 0 1-.174.43.648.648 0 0 1-.318.231 1.523 1.523 0 0 1-.487.068h-.79v-4.17h.79c.366 0 .63.11.79.324.16.215.241.571.241 1.067v1.389zm1.38-2.789c-.225-.457-.533-.795-.921-1.013-.39-.219-.88-.328-1.47-.328H6.418c-.167 0-.278.024-.333.072-.054.049-.082.147-.082.294v6.138c0 .148.028.246.082.295.055.048.166.072.333.072h2.218c1.048 0 1.765-.447 2.15-1.342.09-.205.153-.413.188-.622a4.91 4.91 0 0 0 .054-.796V6.911c0-.367-.018-.656-.054-.868a2.2 2.2 0 0 0-.193-.612l.006.013z"},{name:"discovery",path:"M 20.89,2.51 C 20.89,2.51 21.19,2.51 21.19,2.51 21.19,2.51 21.19,4.12 21.19,4.12 21.19,4.12 22.90,4.12 22.90,4.12 22.90,4.12 22.90,4.52 22.90,4.52 22.90,4.52 21.19,4.52 21.19,4.52 21.19,5.07 21.32,5.87 20.99,6.33 21.37,6.65 21.51,6.90 21.77,7.33 22.76,8.97 23.02,10.57 23.00,12.45 22.95,16.30 20.25,19.55 16.67,20.72 15.89,20.97 14.98,21.18 14.16,21.19 14.16,21.19 11.95,21.19 11.95,21.19 11.52,21.19 11.05,21.25 10.64,21.09 11.68,20.46 12.51,19.78 13.21,18.78 15.48,15.57 14.70,11.39 11.65,8.99 10.33,7.95 8.87,7.56 7.23,7.43 7.23,7.43 7.23,2.71 7.23,2.71 7.23,2.71 11.75,2.71 11.75,2.71 11.75,2.71 13.76,2.71 13.76,2.71 15.63,2.71 17.70,3.38 19.18,4.52 19.18,4.52 19.18,4.12 19.18,4.12 19.18,4.12 20.89,4.12 20.89,4.12 20.89,4.12 20.89,2.51 20.89,2.51 Z M 20.89,4.52 C 20.89,4.52 19.28,4.52 19.28,4.52 19.28,4.52 20.89,6.03 20.89,6.03 20.89,6.03 20.89,4.52 20.89,4.52 Z M 6.23,8.28 C 8.69,7.96 10.94,8.76 12.50,10.74 13.67,12.24 13.78,13.56 13.76,15.36 13.73,17.32 12.38,19.32 10.74,20.30 9.24,21.21 8.31,21.21 6.63,21.19 3.58,21.15 0.82,18.17 0.80,15.16 0.80,14.11 0.75,13.69 1.08,12.65 1.85,10.26 3.80,8.73 6.23,8.28 Z"},{name:"disney",path:"M2.056 6.834C1.572 6.834 1 6.77 1 6.483c0-2.023 3.562-2.11 5.08-2.11c1.978 0 4.506.614 6.66 1.384c3.277 1.188 9.917 5.145 9.917 9.674c0 4.001-4.31 5.914-8.311 5.914a22 22 0 0 1-3.21-.33c-.066.243-.11.418-.264.924a4.3 4.3 0 0 1-.77.087l-.505-.043c-.33-.396-.44-1.033-.572-1.715c-2-1.165-3.298-2.155-3.891-2.836c-.506-.528-1.078-1.232-1.078-1.913c0-.351.22-.66.726-1.01c1.034-.77 2.352-1.188 4.507-1.563l.044-.9c.022-.22.242-2.573.748-3.013c.813.66.901 1.341.967 2.353c.022.44.044.901.11 1.385h.308c1.539 0 6.244.395 6.244 2.616c0 .528-.77 1.517-1.518 1.517a1.9 1.9 0 0 1-.966-.285c.329-.375.813-.704.945-.99c-.44-.528-2.814-1.143-4.551-1.143a4 4 0 0 0-.572.022l.022 4.815c.703.44 1.561.483 2.11.483c2.42 0 7.431-.417 7.431-4.331c0-3.87-4.946-6.86-8.64-8.266a21.4 21.4 0 0 0-7.937-1.496a7.2 7.2 0 0 0-1.803.198c-.373.088-.505.176-.505.264c0 .153.747.242.836.286a.22.22 0 0 1 .11.175a.26.26 0 0 1-.088.176c-.089 0-.286.022-.528.022M9.2 14.551c-2.176.177-4.595.397-4.595 1.166c0 .594 1.012 1.32 1.627 1.781a7.05 7.05 0 0 0 2.77 1.319zm11.155-9.85c-.02.428-.042.942-.042 1.723c0 .3 0 .642.01 1.027c-.042.193-.32.214-.46.278a1.2 1.2 0 0 1-.256-.192V4.83c0-.29.01-.588.01-1.038c0-.225 0-.482-.01-.792c0-.192.032-.374.15-.802a.34.34 0 0 1 .3-.224c.245.064.491.17.577.374c-.257.76-.235 1.594-.279 2.353m-.384-.085c.428.021.941.042 1.722.042c.3 0 .643 0 1.027-.01c.193.041.215.32.279.459q-.078.141-.193.257H20.1c-.289 0-.589-.01-1.037-.01c-.225 0-.482 0-.792.01c-.193.002-.375-.03-.803-.149a.35.35 0 0 1-.225-.299c.064-.246.172-.492.374-.578c.76.257 1.595.235 2.355.278z"},{name:"f1tv",path:"M20.2174 15 20.3424 15 20.3424 14.4214 20.3445 14.4214 20.5524 15 20.6605 15 20.8684 14.4214 20.8705 14.4214 20.8705 15 20.9955 15 20.9955 14.2503 20.8127 14.2503 20.6111 14.8373 20.609 14.8373 20.4022 14.2503 20.2174 14.2503 20.2174 15ZM19.5255 14.3636 19.7627 14.3636 19.7627 15 19.894 15 19.894 14.3636 20.1324 14.3636 20.1324 14.2503 19.5255 14.2503 19.5255 14.3636ZM18 15 24 9 20.3887 9 14.3889 15 18 15ZM17.1397 11.613 9.8764 11.613C7.6627 11.613 7.2754 11.7304 6.3272 12.6785 5.4405 13.5653 4.0001 15 4.0001 15L7.1465 15 7.8971 14.2494C8.3906 13.7559 8.6451 13.7047 9.6814 13.7047L15.0481 13.7047 17.1397 11.613ZM6.2304 12.2506C5.5755 12.8685 4.1506 14.2526 3.3826 15L0 15C0 15 2.7105 12.2974 4.217 10.8145 5.7691 9.337 6.5429 9 9.3897 9L19.7529 9 17.509 11.2437 9.6002 11.2437C7.5999 11.2437 7.1504 11.3824 6.2304 12.2506Z"},{name:"filmplus",path:"M19.5906 0C19.2204.1246 18.8469.259 18.4817.3964 18.1169.5341 17.7562.6762 17.3905.8103 17.025.9447 16.6652 1.0866 16.3033 1.2284 15.9418 1.3706 15.5767 1.5033 15.2165 1.6468 14.8561 1.7901 14.4937 1.9267 14.1333 2.0689 13.7729 2.2113 13.4083 2.3479 13.0465 2.4872 12.6847 2.6266 12.336 2.7852 11.9722 2.9182 11.6087 3.0514 11.258 3.21 10.8957 3.3469 10.5336 3.484 10.1695 3.6231 9.8086 3.765 9.4476 3.9072 9.0824 4.0401 8.7215 4.1831 8.3605 4.3264 7.9875 4.4577 7.6238 4.5907 7.2603 4.7239 6.8848 4.863 6.5236 4.9957 6.1626 5.1286 5.8024 5.2859 5.4495 5.4269 5.0967 5.5679 4.7658 5.7433 4.4291 5.9116 4.0921 6.0797 3.7952 6.2539 3.5 6.4878 3.2048 6.722 2.9843 6.9433 2.7474 7.2404 2.5105 7.5376 2.3245 7.8004 2.1626 8.1608 2.0006 8.5213 1.8671 8.8716 1.7782 9.2817 1.689 9.6917 1.5898 10.1143 1.5557 10.5645 1.5217 11.0146 1.4955 11.5342 1.5 12.0139 1.5045 12.4937 1.4958 13.03 1.5 13.5192 1.5042 14.0084 1.4933 14.5338 1.5 15.0244 1.5067 15.515 1.5368 16.0098 1.5279 16.5017 1.519 16.9937 1.5429 17.5047 1.5 17.9791 1.4571 18.4538 1.5229 18.9854 1.5557 19.4286 1.5886 19.8718 1.6684 20.3111 1.779 20.7105 1.8897 21.11 2.019 21.4422 2.1991 21.7957 2.3789 22.1494 2.5433 22.4078 2.7892 22.7108 3.0348 23.0141 3.26 23.2075 3.5836 23.4216 3.9072 23.6354 4.2342 23.7815 4.6214 23.8891 5.0083 23.9969 5.5471 24.0466 5.9599 24 6.3728 23.9534 6.8037 23.859 7.1675 23.7023 7.5312 23.5459 7.8415 23.4116 8.1411 23.1707 8.441 22.9302 8.6677 22.7392 8.9216 22.446 9.1755 22.1525 9.3328 21.884 9.5209 21.5401 9.7088 21.1958 9.8245 20.8535 9.9466 20.4605 10.0689 20.0677 10.1319 19.617 10.1709 19.1797 10.2102 18.7426 10.2339 18.2102 10.2526 17.7561 10.2713 17.302 10.3078 16.7615 10.3103 16.3086 10.3128 15.8559 10.8603 15.859 11.1702 15.6633 11.4805 15.4679 11.8376 15.3123 12.1695 15.1574 12.5015 15.0024 12.8299 14.7724 13.1733 14.6559 13.5164 14.5391 13.8735 14.3334 13.9898 13.9671 14.106 13.6011 14.2351 13.2284 14.4082 12.8803 14.581 12.5318 14.6604 12.1477 14.8305 11.7974 15.0005 11.447 15.1488 11.0807 15.2422 10.7038 14.7689 10.8594 14.3223 11.1044 13.8677 11.3084 13.4133 11.5128 12.962 11.7196 12.5127 11.9325 12.0631 12.1452 11.5978 12.3334 11.151 12.55 10.7042 12.7666 10.2403 12.9561 9.798 13.1763 9.3559 13.3962 8.8472 13.5395 8.4193 13.7764 7.9914 14.0134 7.3004 14.0733 7.3537 14.6899 7.4069 15.3065 7.3779 16.0259 7.3815 16.6411 7.3852 17.2563 7.386 18.0429 7.3813 18.6199 7.3765 19.1972 7.2826 19.7809 6.9891 20.2068 6.6958 20.633 6.3326 21.0007 5.8392 20.9709 5.3459 20.941 4.9266 20.6071 4.7036 20.1274 4.4803 19.6477 4.4218 19.018 4.4268 18.4251 4.4318 17.8322 4.4238 17.067 4.4268 16.446 4.4299 15.8249 4.424 15.0905 4.4268 14.4669 4.4296 13.8433 4.4226 13.0896 4.4268 12.4878 4.431 11.886 4.4817 11.241 4.6409 10.7228 4.7998 10.2046 5.0139 9.8537 5.3955 9.4983 5.7774 9.1431 6.1417 8.9296 6.5946 8.7183 7.0476 8.507 7.5217 8.3306 7.9755 8.1201 8.4291 7.9094 8.8817 7.7293 9.3414 7.5348 9.8008 7.3399 10.2509 7.1281 10.7075 6.9218 11.1644 6.7158 11.6433 6.5422 12.101 6.3362 12.5584 6.1299 13.018 5.9337 13.4797 5.7357 13.9415 5.5378 14.3942 5.3282 14.8606 5.1376 15.3266 4.9466 15.7626 4.7089 16.2392 4.5371 16.7162 4.3654 17.1151 4.0764 17.6109 3.9298 18.1066 3.7829 18.3569 3.3218 18.5054 2.8452 18.6543 2.3688 18.8898 1.8879 19.0521 1.4127 19.214.9374 19.4498.4808 19.5906 0ZM17.1376 6.0767C13.8936 7.4135 10.6707 8.8111 7.4373 10.1742 7.4373 11.0197 7.4373 11.8654 7.4373 12.7108 8.1832 12.3663 8.9787 12.0555 9.7169 11.7012 10.455 11.3469 11.2394 11.0534 11.9616 10.6846 12.6836 10.3155 13.5413 10.085 14.2323 9.6939 14.9233 9.3029 15.8537 9.1788 16.2373 8.4374 16.6206 7.6962 16.8519 6.8538 17.1376 6.0767ZM19.3118 17.5331C19.2422 16.7922 19.413 16.0875 19.2932 15.3497 19.1733 14.6118 18.2033 14.8496 17.6394 14.8014 17.0755 14.7532 16.1511 14.7866 16.1899 15.554 16.2286 16.3214 16.2401 16.9385 16.2456 17.7003 15.7024 17.7274 14.9517 17.6574 14.4338 17.6725 13.9159 17.6875 13.2419 17.5412 13.066 18.1165 12.8898 18.6918 13.0473 19.2808 13.0582 19.8553 13.0691 20.4295 13.7091 20.4755 14.2387 20.4321 14.7683 20.3886 15.5022 20.4647 16.0505 20.4321 16.1314 19.59 15.8272 18.4524 16.5737 17.8612 17.3202 17.27 18.4151 17.6443 19.3118 17.5331ZM17.5 17.6446C17.1808 17.6309 16.853 17.7695 16.615 17.9861 16.3769 18.2024 16.2713 18.4758 16.2456 18.8153 16.2203 19.1548 16.2587 19.6507 16.2456 20.0139 16.2325 20.3771 16.2551 20.8496 16.2456 21.2125 16.2362 21.5755 16.2576 22.0728 16.2456 22.4111 16.2337 22.7495 16.2699 23.1323 16.6167 23.2387 16.9631 23.3452 17.4153 23.2728 17.7787 23.2753 18.1422 23.2778 18.5985 23.3427 18.93 23.2282 19.2617 23.1136 19.3138 22.7401 19.3118 22.4111 19.3099 22.0822 19.3157 21.5855 19.3397 21.2404 19.3637 20.8953 19.2121 20.2662 19.6742 20.3484 20.1364 20.4307 20.4293 20.3738 20.8449 20.3763 21.2606 20.3788 21.6703 20.4123 22.043 20.3757 22.4154 20.339 22.518 19.9925 22.5453 19.6794 22.5726 19.3664 22.4399 18.8917 22.5174 18.5645 22.5949 18.2372 22.4709 17.8707 22.1464 17.7369 21.8222 17.6028 21.4169 17.6485 21.0401 17.6446 20.6632 17.6407 20.2284 17.646 19.8415 17.6446 19.4546 17.6432 19.0596 17.6663 18.6707 17.6725 18.2819 17.6786 17.8685 17.6602 17.5 17.6446Z"},{name:"foxsports",path:"M 0.2305 15.125 L 0.2305 5 L 6.2148 5 L 6.3984 7.7695 L 3.0469 7.7695 L 3.0469 9.0898 L 5.7773 9.0898 L 5.7773 11.8516 L 3.0273 11.8516 L 3.0273 15.125 L 0.2305 15.125 M 23.2813 15.0938 L 20.2852 9.8398 L 23.0078 5 L 20.0117 5 L 18.7695 7.1797 L 17.5469 5 L 14.4453 5 L 17.2188 9.875 L 14.2813 15.1016 L 17.293 15.0977 L 18.7305 12.5391 L 20.1836 15.0938 L 23.2813 15.0938 M 11.9102 12.0977 L 11.9102 8.0508 C 11.9102 7.5898 11.5156 7.1758 11.0703 7.1758 C 10.6289 7.1758 10.2695 7.5898 10.2695 8.0508 L 10.2695 12.082 C 10.2695 12.5469 10.6289 12.918 11.0703 12.918 C 11.5156 12.918 11.9102 12.5586 11.9102 12.0977 Z M 6.3242 10.0742 C 6.3242 7.3594 8.4414 5.1523 11.0586 5.1523 C 13.6758 5.1523 15.7969 7.3594 15.7969 10.0742 C 15.7969 12.793 13.6758 14.9961 11.0586 14.9961 C 8.4414 14.9961 6.3242 12.793 6.3242 10.0742 Z M 0 19.5195 L 0 18.9961 L 0.2617 18.7344 L 2.3867 18.7344 L 2.4648 18.6563 L 2.4648 18.1016 L 2.4102 18.0391 L 0.4375 18.0391 L 0 17.5938 L 0 16.3203 L 0.5039 15.8086 L 3.3633 15.8086 L 3.3633 16.3711 L 3.1563 16.5859 L 1.082 16.5859 L 1.0039 16.668 L 1.0039 17.207 L 1.0625 17.2656 L 3.0273 17.2656 L 3.4648 17.7148 L 3.4648 19.0039 L 2.9609 19.5195 L 0 19.5195 M 6.4609 17.6055 L 6.6094 17.4531 L 6.6094 16.7422 L 6.4609 16.5938 L 5.0938 16.5938 L 5.0938 17.6055 Z M 4.0898 15.8086 L 7.0547 15.8086 L 7.6172 16.3789 L 7.6172 17.7539 L 7.0547 18.3281 L 5.0938 18.3281 L 5.0938 19.5195 L 4.0898 19.5195 Z M 10.5156 18.6484 L 10.7227 18.4414 L 10.7227 16.8203 L 10.5156 16.6133 L 9.3477 16.6133 L 9.1406 16.8203 L 9.1406 18.4414 L 9.3477 18.6484 Z M 8.1445 18.9492 L 8.1445 16.3789 L 8.6992 15.8086 L 11.1602 15.8086 L 11.7227 16.3789 L 11.7227 18.9492 L 11.1602 19.5195 L 8.6992 19.5195 Z M 14.7344 17.3984 L 14.875 17.2539 L 14.875 16.7109 L 14.7344 16.5664 L 13.3828 16.5664 L 13.3828 17.3984 Z M 12.3789 15.8086 L 15.375 15.8086 L 15.8789 16.3203 L 15.8789 17.5039 L 15.3984 17.9961 L 16.0313 19.5195 L 14.9141 19.5195 L 14.4453 18.1719 L 13.3828 18.1719 L 13.3828 19.5195 L 12.3789 19.5195 Z M 17.3789 16.668 L 16.2188 16.668 L 16.2188 15.8086 L 19.5391 15.8086 L 19.5391 16.668 L 18.3828 16.668 L 18.3828 19.5195 L 17.3789 19.5195 L 17.3789 16.668 M 20.082 19.6211 L 20.082 19.0977 L 20.3438 18.8359 L 22.4688 18.8359 L 22.5469 18.7578 L 22.5469 18.2031 L 22.4922 18.1406 L 20.5195 18.1406 L 20.082 17.6953 L 20.082 16.4219 L 20.5859 15.9102 L 23.4453 15.9102 L 23.4453 16.4727 L 23.2383 16.6875 L 21.168 16.6875 L 21.0859 16.7695 L 21.0859 17.3086 L 21.1445 17.3672 L 23.1133 17.3672 L 23.5469 17.8164 L 23.5469 19.1055 L 23.043 19.6211 L 20.082 19.6211 Z"},{name:"jellyfin",path:"M12 .002C8.826.002-1.398 18.537.16 21.666c1.56 3.129 22.14 3.094 23.682 0C25.384 18.573 15.177 0 12 0zm7.76 18.949c-1.008 2.028-14.493 2.05-15.514 0C3.224 16.9 9.92 4.755 12.003 4.755c2.081 0 8.77 12.166 7.759 14.196zM12 9.198c-1.054 0-4.446 6.15-3.93 7.189.518 1.04 7.348 1.027 7.86 0 .511-1.027-2.874-7.19-3.93-7.19z"},{name:"kijk",path:"M19.5051 14.5813C18.3413 15.5829 17.1659 16.3763 16.0112 16.94 14.6307 17.6141 13.2811 17.956 12 17.956 7.4971 17.956 3.4816 13.8181 1.9157 11.9739A23.7339 23.7339 90 014.4949 9.3696C5.6587 8.3683 6.8341 7.5749 7.9888 7.0109 9.3693 6.3368 10.7189 5.9952 12 5.9952 16.5029 5.9952 20.5184 10.1328 22.0843 11.9773A23.7288 23.7288 90 0119.5051 14.5813ZM12 4.5C5.3725 4.5 0 11.9755 0 11.9755S5.3725 19.4509 12 19.4509 24 11.9755 24 11.9755 18.6275 4.5 12 4.5ZM11.4315 9.9397C11.4955 9.9397 11.5469 9.9917 11.5469 10.0557V13.8779C11.5469 13.9419 11.4952 13.9939 11.4315 13.9939H10.1952A.1157.1157 90 0110.0797 13.8779V10.0557C10.0797 9.9917 10.1315 9.9397 10.1952 9.9397H11.4315ZM9.5221 10.072 8.4128 11.8576 8.4099 11.8624A.192.192 90 008.3819 11.9611.192.192 90 008.4085 12.0571L8.4099 12.0592 8.4125 12.064 9.5219 13.8499A.0893.0893 90 019.4469 13.988H8.1336A.1144.1144 90 018.0365 13.9347C7.7947 13.5517 7.1544 12.5165 7.1544 12.5165V13.872C7.1544 13.936 7.1027 13.988 7.0389 13.988H5.8437A.1157.1157 90 015.7285 13.872V10.0499C5.7285 9.9859 5.78 9.9339 5.8437 9.9339H7.0389C7.1029 9.9339 7.1544 9.9859 7.1544 10.0499V11.4053S7.7944 10.3699 8.0365 9.9872C8.0579 9.9536 8.0941 9.9339 8.1336 9.9339H9.4472A.0893.0893 90 019.5219 10.072ZM18.0776 9.9339C18.1413 9.9339 18.1928 9.9859 18.1928 10.0499V13.872C18.1928 13.936 18.1411 13.988 18.0776 13.988H16.8824A.1157.1157 90 0116.7669 13.872V12.5165S16.1269 13.5517 15.8848 13.9347A.1144.1144 90 0115.7877 13.988H14.4741A.0893.0893 90 0114.3992 13.8499L15.5085 12.064C15.5096 12.0624 15.5107 12.0611 15.5115 12.0592L15.5131 12.0568A.192.192 90 0015.5392 11.9608.192.192 90 0015.5131 11.8648L15.5115 11.8624 15.5088 11.8576 14.3992 10.072A.0896.0896 90 0114.4741 9.9339H15.7877C15.8272 9.9339 15.8635 9.9536 15.8848 9.9872 16.1267 10.3699 16.7669 11.4053 16.7669 11.4053V10.0499C16.7669 9.9859 16.8187 9.9339 16.8824 9.9339H18.0776ZM13.7085 9.9397C13.7723 9.9397 13.824 9.9917 13.824 10.0557V13.9731C13.824 14.2749 13.7493 14.564 13.5947 14.7981L12.8787 15.8741A.1149.1149 90 0112.6848 15.8709L11.9664 14.7144A.1165.1165 90 0111.9683 14.5885L12.2653 14.1413C12.3248 14.0525 12.3565 13.9477 12.3565 13.8405V10.0557C12.3565 9.9917 12.4083 9.9397 12.472 9.9397H13.7085Z"},{name:"max",path:"M 3.7443 8 C 3.0949 8 2.4381 8.2932 1.5957 8.9574 L 1.5957 8.167 L 0 8.167 L 0 14.4756 L 1.6959 14.4756 L 1.6959 10.5531 C 2.4381 9.9557 2.7758 9.7664 3.0541 9.7664 C 3.3844 9.7664 3.5996 9.9742 3.5996 10.5012 L 3.5996 14.4756 L 5.2955 14.4756 L 5.2955 10.542 C 6.0377 9.9557 6.368 9.7664 6.6537 9.7664 C 6.984 9.7664 7.1992 9.9742 7.1992 10.5012 L 7.1992 14.4756 L 8.8951 14.4756 L 8.8951 9.8926 C 8.8951 8.4713 8.1047 8 7.3439 8 C 6.6945 8 6.0377 8.2746 5.173 8.9463 C 4.8947 8.2412 4.2898 8 3.7443 8 Z M 12.3426 8 C 10.6578 8 9.2588 9.4807 9.2588 11.3213 C 9.2588 13.1619 10.6578 14.6426 12.3426 14.6426 C 13.1775 14.6426 13.8975 14.3271 14.4504 13.6443 L 14.4504 14.4756 L 16.0684 14.4756 L 16.0684 8.167 L 14.4504 8.167 L 14.4504 8.9982 C 13.8975 8.3154 13.1775 8 12.3426 8 Z M 16.3652 8.167 C 17.0629 9.284 17.857 10.2822 18.7811 11.2805 C 17.857 12.3195 17.0629 13.4031 16.3652 14.4756 L 18.41 14.4756 C 18.8961 13.674 19.4416 12.9504 20.0687 12.2676 C 20.6848 12.9504 21.2006 13.674 21.683 14.4756 L 23.75 14.4756 C 23.0412 13.3697 22.2693 12.3195 21.3416 11.2805 C 22.2582 10.2822 23.0412 9.2506 23.75 8.167 L 21.7238 8.167 C 21.2191 8.9686 20.6736 9.6402 20.0687 10.3008 C 19.449 9.6402 18.9072 8.9686 18.41 8.167 Z M 12.5986 9.4621 C 13.608 9.4621 14.4207 10.2896 14.4207 11.3213 C 14.4207 12.3529 13.608 13.1805 12.5986 13.1805 C 11.593 13.1805 10.7803 12.3529 10.7803 11.3213 C 10.7803 10.2896 11.593 9.4621 12.5986 9.4621 Z M 12.5986 9.8814 C 11.8268 9.8814 11.1996 10.5234 11.1996 11.3213 C 11.1996 12.1191 11.8268 12.7611 12.5986 12.7611 C 13.3705 12.7611 13.9977 12.1191 13.9977 11.3213 C 13.9977 10.5234 13.3705 9.8814 12.5986 9.8814 Z M 12.5986 9.8814 Z"},{name:"mlbtv",path:"M 23.2539 7.0039 C 23.2656 6.293 22.6953 5.7109 21.9883 5.7031 C 21.9805 5.7031 21.9727 5.7031 21.9648 5.7031 L 16.3828 5.7031 L 19.5859 11.0625 L 19.8789 11.1016 L 20.0664 11.3438 L 20.0664 11.5742 L 20.2695 11.6172 L 20.457 11.8711 L 20.457 12.0898 L 20.6641 12.1289 L 20.875 12.3594 L 20.875 12.8672 C 21.1289 13.0977 21.4102 13.2852 21.7188 13.4297 C 22 13.5391 22.0313 13.9922 22.2031 14.2344 C 22.4141 14.5859 22.707 14.7266 22.6445 14.9258 C 22.5039 15.4492 21.9648 16.3398 21.4648 16.3789 L 19.4805 16.3789 L 19.4805 17.2305 L 21.9648 17.2305 C 22.6836 17.2266 23.2617 16.6445 23.2578 15.9258 L 23.2578 7.0039 M 9.6016 16.3945 L 8.6445 16.3945 C 8.6445 13.9922 9.4531 12.6641 10.4258 12.3984 C 10.5586 12.375 10.4922 11.7188 10.3242 11.5195 L 9.7656 11.5195 C 9.6758 11.5195 9.7266 11.3477 9.7266 11.3477 L 10.1797 10.3789 L 10.1211 10.1094 L 8.4414 10.1094 L 9.8203 9.1445 C 9.8828 6.5938 12.4961 6.3945 14.0664 7.457 C 15.0039 8.0781 15.0742 9.3086 15.0039 10.1563 C 14.9922 10.2109 14.7578 10.1758 14.7578 10.1758 C 14.7578 10.1758 14.6016 11.1133 15.0156 11.1133 L 16.8516 11.1133 C 17.5977 11.082 18.3203 11.5898 18.3203 11.5898 L 18.4961 10.9453 L 14.4766 5.7031 L 1.9961 5.7031 C 1.6523 5.6992 1.3203 5.8359 1.0742 6.0781 C 0.832 6.3242 0.6953 6.6563 0.6992 7.0039 L 0.6992 15.9297 C 0.6953 16.2734 0.8281 16.6094 1.0742 16.8516 C 1.3203 17.0977 1.6523 17.2344 1.9961 17.2344 L 10.0977 17.2344 C 9.9023 16.8945 9.6758 16.5078 9.6055 16.3945 M 2.5 14.5 C 2.5 14.0078 2.8945 13.6094 3.3867 13.6094 C 3.875 13.6094 4.2734 14.0078 4.2734 14.5 C 4.2734 14.9883 3.875 15.3867 3.3867 15.3867 L 3.3789 15.3867 C 2.8945 15.3867 2.5 14.9961 2.5 14.5117 C 2.5 14.5078 2.5 14.5039 2.5 14.5 Z"},{name:"nba",path:"M 7.8555 21.1602 C 7.5547 20.8906 7.7539 20.7734 7.7383 20.6563 C 7.5391 19.8203 6.8672 19.3203 7.2188 19.0547 C 7.1484 18.8438 7.0664 18.6367 6.9688 18.4336 C 5.9336 17.8477 5.0625 16.8789 4.9141 16.7461 C 4.7617 16.6133 4.4297 16.3438 4.3633 16.1953 C 4.2969 16.043 2.9063 14.2383 2.625 13.6211 L 2.1406 13.5547 C 1.9219 12.6367 1.1719 11.8672 1.1523 10.9648 C 1.1758 10.543 1.25 10.1289 1.3711 9.7266 C 1.4688 9.5781 1.5859 9.4414 1.7227 9.3242 L 1.7227 9.0742 C 0.6523 9.1094 0.9531 8.9922 0.7695 8.5742 C 0.5859 8.1563 0.7344 8.2227 0.7852 8.0234 C 0.9375 7.4375 1.4023 6.5195 1.6055 6.1016 C 1.8047 5.6836 1.8711 5.3828 1.8711 5.3828 C 2.6758 3.7617 2.9766 3.8789 3.9258 3.7773 L 3.9766 3.7109 C 4.9297 3.6758 4.7813 3.5938 4.9141 2.6758 C 4.7813 2.7422 4.7305 2.3906 4.7305 2.3906 C 4.6445 1.8711 4.8789 1.9727 4.9805 1.957 C 4.9961 1.1016 5.0977 0.8203 5.7148 0.5859 L 2.4922 0.5859 C 1.4375 0.5859 0.5859 1.4375 0.5859 2.4883 L 0.5859 21.5078 C 0.5859 22.5625 1.4375 23.4141 2.4922 23.4141 L 8.1055 23.4141 C 7.4531 23.0625 7.8398 22.4141 7.8555 21.1602 M 21.5078 0.5859 L 6.2852 0.5859 C 6.5156 0.6484 6.7148 0.7969 6.8359 1.0039 C 7.0703 1.0195 7.3555 1.5547 6.918 2.3242 C 7.1211 2.457 6.9688 2.6406 6.8203 2.8594 C 6.668 3.0742 6.7344 3.0586 6.6172 3.043 C 6.4531 3.3945 6.25 3.7266 6.1016 3.7422 C 6.0352 3.8203 6.0273 3.9297 6.082 4.0117 C 6.3086 4.1016 6.5156 4.2266 6.7031 4.3789 L 6.7031 4.4609 C 6.8672 4.5625 6.9531 4.6445 7.1367 4.7461 C 7.5859 5.0313 8.1563 5.5469 8.0898 7.3203 C 8.2227 7.7031 8.2734 8.457 8.3906 8.707 C 8.5078 8.957 8.793 9.4922 8.8594 9.9258 C 8.8594 9.9258 8.9258 10.5781 9.0078 10.6641 L 9.0586 10.6641 C 9.4414 10.7461 9.375 10.7969 9.4102 10.8633 L 9.5078 10.9453 C 9.6094 10.9961 9.7773 11.0469 9.7773 11.2305 L 9.8594 11.3633 C 9.9102 11.4453 9.957 11.5273 9.9961 11.6172 C 10.1289 11.9922 10.1289 12.4063 9.9961 12.7852 L 9.9961 12.8359 C 9.8477 13.2031 9.5742 13.5039 9.2266 13.6875 L 9.1914 13.6875 L 9.1406 13.7227 C 8.918 13.8281 8.6719 13.8867 8.4219 13.8867 C 7.4883 13.7656 6.832 12.9063 6.957 11.9727 C 7.0391 11.3594 7.4453 10.8398 8.0234 10.6133 C 7.8203 10.1289 7.4219 9.3438 7.3047 9.0938 C 7.1875 8.8398 6.9023 7.2188 6.8516 6.9023 C 6.8008 6.5859 6.1172 7.3203 6.1172 7.3555 C 6.1172 7.3867 5.582 8.6914 5.5664 8.7578 C 5.5547 8.8281 5.5469 8.9023 5.5469 8.9766 C 5.5469 8.9766 5.8008 9.0078 5.9336 9.4258 C 6.0664 9.8438 6.5 11.3984 6.5 11.3984 L 6.3828 11.5156 C 6.918 13.3047 6.7344 14.0742 6.9688 14.6055 C 7.2031 15.1406 7.3555 15.2422 7.6055 15.8789 C 7.8555 16.5117 7.9883 18.1172 8.0742 18.1836 C 8.3555 18.5508 8.5234 18.8359 8.5234 19.0352 C 8.5234 19.2383 8.2734 19.8555 8.375 20.2227 C 8.4727 20.5898 8.457 20.9063 8.5586 20.9922 C 8.6563 21.0742 8.6406 21.1758 8.6055 21.2422 C 8.5898 21.2734 8.5781 21.3086 8.5742 21.3438 C 8.7227 21.9102 9.2422 22.8633 8.4219 23.3633 L 8.375 23.3984 L 21.543 23.3984 C 22.582 23.3906 23.4219 22.5508 23.4336 21.5117 L 23.4336 2.4922 C 23.4219 1.4336 22.5664 0.5859 21.5078 0.5859 Z M 21.5078 0.5859 M 15.793 5.1133 L 19.2383 5.1133 L 18.5352 16.6289 L 17.7813 5.1133 L 21.1406 5.1133 L 19.6563 18.9023 L 17.2461 18.9023 Z M 15.3438 6.8359 L 13.8867 6.8359 L 13.8867 18.8867 L 12.0352 18.8867 L 12.0352 6.8359 L 10.6133 6.8359 L 10.6133 5.0977 L 15.3438 5.0977 Z M 3.543 22.2266 L 3.543 18.7852 L 4.2109 18.7852 C 4.5977 18.7852 4.8281 18.9844 4.8281 19.4727 L 4.8281 19.9883 C 4.8281 20.3047 4.7305 20.457 4.5977 20.5391 C 4.7539 20.6563 4.8438 20.8438 4.8281 21.043 L 4.8281 21.543 C 4.8281 22.0117 4.5781 22.2266 4.2109 22.2266 Z M 4.0117 20.7227 L 4.0117 21.793 L 4.1953 21.793 C 4.3438 21.793 4.3945 21.7109 4.3945 21.543 L 4.3945 20.957 C 4.3945 20.793 4.3438 20.7227 4.1953 20.7227 Z M 4.0117 19.2188 L 4.0117 20.3555 L 4.1797 20.3555 C 4.3438 20.3555 4.3789 20.3047 4.3789 20.1055 L 4.3789 19.4375 C 4.3789 19.2695 4.3281 19.2031 4.1797 19.2031 L 4.0117 19.2031 Z M 5.9336 21.5273 L 5.5156 21.5273 L 5.4648 22.2266 L 4.9961 22.2266 L 5.4141 18.7852 L 6.0664 18.7852 L 6.4688 22.2266 L 5.9844 22.2266 Z M 5.7148 19.168 L 5.6992 19.168 C 5.6641 19.5859 5.6172 20.3047 5.5977 20.5391 L 5.5469 21.1406 L 5.8984 21.1406 L 5.8477 20.5391 C 5.832 20.3047 5.7656 19.5859 5.7148 19.168 M 2.1875 22.2266 L 1.7891 22.2266 L 1.7891 18.7852 L 2.4219 18.7852 L 2.9414 21.6094 C 2.8906 20.9414 2.8398 20.1211 2.8398 19.4219 L 2.8398 18.7852 L 3.2422 18.7852 L 3.2422 22.2266 L 2.6563 22.2266 L 2.1406 19.4727 C 2.1719 20.1055 2.1875 20.625 2.1875 21.1406 Z M 2.1875 22.2266 Z"},{name:"npo",path:"M23.4519 10.6902C24.1664 11.4046 24.1664 12.5775 23.4519 13.2964L13.2964 23.4519C12.582 24.1664 11.4092 24.1664 10.6902 23.4519L.5347 13.2964C-.1798 12.582-.1798 11.4092.5347 10.6902L10.6902.5347C11.4046-.1798 12.5775-.1798 13.2964.5347L23.4519 10.6902ZM10.9239 2.3771 9.9263 3.3747C9.3511 3.9498 9.3511 4.8935 9.9263 5.4731L10.9239 6.4707C11.499 7.0459 12.4427 7.0459 13.0224 6.4707L14.02 5.4731C14.5951 4.898 14.5951 3.9543 14.02 3.3747L13.0224 2.3771C12.4427 1.8019 11.499 1.8019 10.9239 2.3771ZM13.1616 4.0398C13.3728 4.2509 13.3728 4.5924 13.1616 4.8037L12.3528 5.6124C12.1416 5.8237 11.8001 5.8237 11.5889 5.6124L10.7801 4.8037C10.5688 4.5924 10.5688 4.2509 10.7801 4.0398L11.5889 3.2309C11.8001 3.0197 12.1416 3.0197 12.3528 3.2309L13.1616 4.0398ZM7.2167 6.0843 6.2191 7.0818C5.6439 7.657 5.6439 8.6006 6.2191 9.1803L7.0369 9.9981 7.2167 10.1779 8.749 11.7102C8.9602 11.9215 9.3016 11.9215 9.5084 11.7102 9.7196 11.499 9.7151 11.1576 9.5084 10.9508L8.9871 10.4206C9.1039 10.3532 9.2163 10.2723 9.3152 10.1734L10.3127 9.1758C10.8879 8.6006 10.8879 7.657 10.3127 7.0773L9.3152 6.0798C8.7354 5.5091 7.7919 5.5091 7.2167 6.0843ZM9.4545 7.7469C9.6656 7.9581 9.6656 8.2997 9.4545 8.5108L8.6456 9.3197C8.4344 9.5309 8.0929 9.5309 7.8817 9.3197L7.7964 9.2342 7.0728 8.5108C6.8617 8.2997 6.8617 7.9581 7.0728 7.7469L7.8817 6.938C8.0929 6.7269 8.4344 6.7269 8.6456 6.938L9.4545 7.7469ZM3.451 9.8499 2.4535 10.8475C1.8784 11.4227 1.8784 12.3663 2.4535 12.946L2.467 12.9594 2.9522 13.4448 4.179 14.667C4.3902 14.8782 4.7317 14.8782 4.9385 14.667 5.1496 14.4557 5.1451 14.1143 4.9385 13.9076L3.7116 12.6809 3.3073 12.2764C3.0961 12.0652 3.0961 11.7237 3.3073 11.5125L4.1161 10.7036C4.3273 10.4925 4.6688 10.4925 4.88 10.7036L5.2844 11.1081 6.5111 12.3348C6.7224 12.546 7.0639 12.546 7.2705 12.3348 7.4818 12.1237 7.4773 11.7821 7.2705 11.5754L6.0438 10.3487 5.5585 9.8634 5.545 9.8499C4.9699 9.2747 4.0262 9.2747 3.451 9.8499Z"},{name:"nrktv",path:"M21.6896 6.8901C21.5139 6.5927 21.5038 6.4097 21.6732 6.1225L24 2.3139H20.772C20.772 2.3139 18.8327 5.4829 18.5675 5.9232 18.3049 6.3628 18.3163 6.6368 18.5783 7.0885 18.8434 7.5399 20.772 10.6862 20.772 10.6862H24C24 10.6862 21.715 6.937 21.6896 6.8901M15.066 10.6862H18.0016V2.3139H15.066M13.2146 2.1535C12.2962 2.1535 11.5528 2.9039 11.5528 3.83 11.5528 4.7559 12.2962 5.5084 13.2146 5.5084 14.1345 5.5084 14.881 4.7559 14.881 3.83 14.881 2.9039 14.1345 2.1535 13.2146 2.1535M8.4165 10.6862H11.3505V2.3139H8.4165M0 10.6862H2.9285V2.3139H-.0414M6.6341 3.659C6.4838 2.8918 5.8128 2.3139 5.0084 2.3139H3.1222L5.0175 10.6862H8.2057ZM0 13.3139V14.2914H2.5989V21.6861H3.6779V14.2914H6.2793V13.3139M12.1731 13.3139 9.9187 20.4641 7.7101 13.3139H6.5931L9.2756 21.6861H10.5456L13.2595 13.3139 Z"},{name:"paramount",path:"M7.6519 3.4867 7.2368 3.0901 7.4931 2.5755 6.9777 2.8346 6.5777 2.4416 6.671 2.988 6.1597 3.2496 6.7367 3.3405 6.8285 3.9031 7.0833 3.3984ZM9.1307 2.3332 9.4803 1.8825 8.9266 2.0371 8.61 1.5778 8.595 2.1318 8.0415 2.2902 8.5896 2.4891 8.569 3.0602 8.9199 2.6118 9.461 2.8049ZM5.9611 4.3735 5.4774 4.0588 5.6269 3.5086 5.1745 3.8586 4.7045 3.548 4.9004 4.0688 4.4496 4.4163 5.0362 4.4015 5.2362 4.9358 5.3869 4.393ZM11.1977 2.0426 11.6265 1.6605 11.0523 1.7122 10.8345 1.2 10.707 1.7429 10.1357 1.7969 10.6344 2.0929 10.5029 2.6481 10.9344 2.2734 11.4278 2.5645ZM2.678 7.4355 3.2043 7.2059 2.633 7.0928 2.5602 6.5278 2.2739 7.0178 1.723 6.9012 2.1053 7.3114 1.819 7.8003 2.3561 7.5695 2.7426 7.9931ZM1.8391 9.3077 2.3132 8.9847 1.7283 8.9785 1.5474 8.4395 1.3624 8.975.7963 8.9615 1.2526 9.2931 1.0677 9.826 1.5474 9.5018 2.0145 9.8445ZM4.4963 5.6934 3.9591 5.4749 3.9975 4.9072 3.6206 5.336 3.1013 5.1173 3.3959 5.5914 3.0219 6.0164 3.5919 5.8924 3.892 6.3787 3.9344 5.821ZM1.2618 11.2663 1.6605 10.861 1.0891 10.9641.8042 10.4692.7288 11.0255.1697 11.1201.6809 11.362.6041 11.9199 1.0138 11.5095 1.5372 11.76ZM1.099 13.3023 1.4128 12.8294.87 13.0383.4961 12.6036.5263 13.1673 0 13.3637.5495 13.5036.5824 14.064.9043 13.586 1.4677 13.7362ZM1.1904 16.8054 1.4368 17.3153 1.0218 17.6924 1.5836 17.6222 1.8302 18.1283 1.9453 17.5683 2.5236 17.5006 2.018 17.2315 2.1261 16.6799 1.7054 17.0708ZM1.0876 15.0527.634 14.6951.7751 15.2441.2941 15.5353.8629 15.5711 1.0012 16.1148 1.2246 15.5856 1.8084 15.625 1.3629 15.27 1.5795 14.748ZM16.507 2.5754 17.0223 2.8346 17.4223 2.4416 17.3291 2.988 17.8404 3.2496 17.2633 3.3405 17.1715 3.9031 16.9167 3.3984 16.3481 3.4867 16.7632 3.0901ZM15.0734 2.0371 15.39 1.5778 15.4051 2.1318 15.9586 2.2902 15.4105 2.4891 15.4309 3.0602 15.0802 2.6118 14.5389 2.8049 14.8693 2.3332 14.5197 1.8825ZM18.3732 3.5086 18.8256 3.8586 19.2955 3.548 19.0996 4.0688 19.5505 4.4163 18.9638 4.4015 18.7638 4.9358 18.6131 4.393 18.0388 4.3735 18.5227 4.0588ZM12.9477 1.7121 13.1656 1.2 13.2931 1.7429 13.8645 1.7969 13.3658 2.0929 13.4972 2.6481 13.0657 2.2734 12.5724 2.5645 12.8024 2.0426 12.3737 1.6605ZM21.3671 7.0928 21.4398 6.5278 21.7261 7.0178 22.2768 6.9012 21.8948 7.3114 22.1811 7.8003 21.644 7.5695 21.2574 7.9931 21.3219 7.4355 20.7956 7.2059ZM22.2717 8.9785 22.4526 8.4395 22.6377 8.975 23.2037 8.9615 22.7474 9.2931 22.9323 9.826 22.4526 9.5018 21.9855 9.8445 22.1608 9.3077 21.6868 8.9847ZM20.0025 4.9073 20.3794 5.336 20.8987 5.1173 20.604 5.5914 20.9781 6.0164 20.4082 5.8924 20.108 6.3787 20.0655 5.821 19.5037 5.6934 20.0409 5.4749ZM22.9109 10.9641 23.1958 10.4692 23.2712 11.0255 23.8303 11.1201 23.3192 11.362 23.396 11.9199 22.9863 11.5095 22.4627 11.76 22.7382 11.2663 22.3395 10.861ZM23.1299 13.0383 23.5039 12.6036 23.4737 13.1673 24 13.3637 23.4506 13.5036 23.4176 14.064 23.0957 13.586 22.5324 13.7362 22.9011 13.3023 22.5873 12.8294ZM22.9782 17.6923 22.4164 17.6222 22.1698 18.1283 22.0547 17.5683 21.4765 17.5006 21.982 17.2315 21.8739 16.6799 22.2946 17.0708 22.8096 16.8054 22.5632 17.3153ZM23.2249 15.244 23.7059 15.5353 23.1371 15.5711 22.9988 16.1148 22.7753 15.5856 22.1916 15.625 22.637 15.27 22.4205 14.748 22.9125 15.0527 23.366 14.6952ZM5.0813 16.6138 5.0473 16.5614 6.0387 14.9258 6.6053 14.0437 7.248 13.368 6.5461 14.7817 6.1656 15.0785ZM8.138 15.2082 8.3748 14.8688 8.5947 14.8123 9.2655 13.5343 9.3444 12.703 9.711 11.8831 9.6828 11.7755 9.1133 12.4937 8.9723 12.5447 7.9407 14.1111 8.0872 14.2638 7.0217 16.6389 7.7377 15.8982ZM9.5418 15.4514 9.4347 15.2704 8.5213 16.9217 8.3071 17.8491H8.4846L9.0682 17.1535 9.305 16.0678ZM13.1276 8.2619 12.3946 7.5418V9.9132L11.7857 11.5757 12.6126 12.1036 11.2031 15.9 11.4737 16.1337 10.7407 17.7887 11.6579 18.7841H13.041L12.8042 18.1809 14.8941 18.95H17.2656L16.7658 18.0866 16.5064 17.4081 16.4049 16.8952 17.6377 18.426H19.1562L18.7089 17.5022 18.0249 16.8086 16.3035 13.0347 15.5368 12.8011 15.315 13.0498H15.1801L14.7953 12.0357 14.4106 11.3534 13.8792 10.4975ZM11.9381 3.5225C6.6995 3.5225 2.4529 7.7821 2.4529 13.0366 2.4529 14.4803 2.7734 15.8488 3.3472 17.0746L6.9689 12.907 7.2818 12.8053 8.6771 10.8374 9.2859 10.3115 10.1992 8.878 10.7489 8.3521 11.6368 7.1052 12.195 6.6811 13.2351 7.4275 13.7509 8.386 14.4106 10.3539 15.1802 11.7195 16.7952 12.4406 18.2582 15.4347 18.6134 16.6308 18.9601 16.8851 19.2645 17.2414 19.8297 18.3169C20.8363 16.8061 21.4233 14.9901 21.4233 13.0366 21.4233 7.7821 17.1767 3.5225 11.9381 3.5225ZM18.849 19.502H18.3886L18.2825 19.7472 18.1032 20.162H17.887L17.8228 20.3027H18.0444L17.7774 20.9087C17.5868 21.3348 17.2843 21.7549 17.1114 21.7549 17.0748 21.7549 17.052 21.7375 17.052 21.6986 17.052 21.6621 17.0619 21.6224 17.1069 21.5161 17.1616 21.3855 17.2498 21.2004 17.3155 21.0633 17.4108 20.8656 17.5645 20.5551 17.5645 20.4006 17.5645 20.2452 17.468 20.1269 17.2797 20.1269 17.067 20.1269 16.8762 20.2582 16.7 20.4453L16.8144 20.162H16.379L16.0247 20.9814C15.884 21.2726 15.594 21.7543 15.4146 21.7543 15.3773 21.7543 15.3616 21.7309 15.3616 21.6932 15.3616 21.6728 15.3715 21.6302 15.3874 21.5931 15.4034 21.5558 15.6151 21.0552 15.6151 21.0552L15.9985 20.1596H15.5321L15.1595 21.0307C15.0426 21.3004 14.7512 21.7562 14.5644 21.7562 14.5264 21.7562 14.5016 21.7366 14.5016 21.6886 14.5016 21.6407 14.5363 21.5553 14.5631 21.4913L14.7583 21.055 14.759 21.0552 15.1625 20.1597H14.696L14.605 20.3614H14.6046C14.5377 20.497 14.4195 20.6588 14.2372 20.6588 14.1485 20.6588 14.1082 20.623 14.0864 20.588 14.0592 20.2863 13.873 20.1254 13.5947 20.1254 13.2098 20.1254 12.9356 20.358 12.7555 20.638 12.6354 20.8252 12.5536 21.0283 12.4811 21.2622 12.316 21.5382 12.1416 21.7543 12.0064 21.7543 11.9718 21.7543 11.9504 21.7332 11.9504 21.6869 11.9504 21.6351 11.9952 21.5333 12.0125 21.4952L12.3145 20.8389C12.3986 20.6356 12.4572 20.5014 12.4572 20.3699 12.4572 20.2282 12.3603 20.127 12.2026 20.127 11.984 20.127 11.745 20.2544 11.5575 20.4678 11.5638 20.438 11.5669 20.4035 11.5669 20.3649 11.5669 20.2094 11.4919 20.1269 11.3304 20.1269 11.1301 20.1269 10.9245 20.2474 10.7362 20.4689L10.8611 20.162H10.4356L10.079 20.9814C9.9088 21.3675 9.6372 21.7543 9.4823 21.7543 9.4462 21.7543 9.4256 21.7354 9.4256 21.6883 9.4256 21.6125 9.5051 21.4312 9.5371 21.3565L10.0089 20.2633C10.0441 20.1817 9.8173 20.1312 9.5291 20.1312 9.2331 20.1312 8.9307 20.2814 8.7068 20.4698 8.5505 20.6013 8.4347 20.6684 8.3748 20.6684 8.3458 20.6684 8.3327 20.6521 8.3327 20.6331 8.3327 20.5657 8.4899 20.3779 8.4899 20.2354 8.4899 20.1705 8.4555 20.1269 8.3678 20.1269 8.1983 20.1269 7.9996 20.2928 7.8517 20.4641L7.9765 20.1618H7.5636L7.2078 20.9814C7.0375 21.3675 6.7583 21.771 6.6036 21.771 6.5676 21.771 6.5468 21.7519 6.5468 21.7049 6.5468 21.632 6.6231 21.4518 6.6662 21.3565L7.138 20.2633C7.1732 20.1817 6.9466 20.1312 6.6584 20.1312 6.233 20.1312 5.8184 20.4239 5.596 20.7236 5.3535 21.0497 5.1892 21.3945 5.1855 21.6758 5.1824 21.9013 5.2971 22.0435 5.5284 22.0435 5.7859 22.0435 5.9916 21.8349 6.1146 21.6791 6.1117 21.6954 6.1001 21.7528 6.1001 21.7724 6.1001 21.9297 6.1616 22.0435 6.3483 22.0435 6.5135 22.0435 6.7342 21.9024 6.9117 21.6777L6.7682 22.0106H7.2187L7.6601 20.99C7.8041 20.6578 7.9714 20.4855 8.0163 20.4855 8.0308 20.4855 8.0371 20.492 8.0371 20.5047 8.0371 20.5402 7.9696 20.6333 7.9696 20.7206 7.9696 20.8099 8.0172 20.8709 8.138 20.8709 8.2344 20.8709 8.3428 20.823 8.4382 20.7628 8.2116 21.0774 8.0597 21.406 8.0562 21.6759 8.0532 21.9012 8.1682 22.0436 8.3994 22.0436 8.6436 22.0436 8.8674 21.8102 8.9904 21.6543A.8034.8034 90 008.9815 21.7623C8.9815 21.9155 9.0664 22.0435 9.2398 22.0435 9.4301 22.0435 9.5873 21.9214 9.7785 21.6832L9.6372 22.0106H10.0986L10.5195 21.0351C10.7036 20.6105 10.9533 20.3868 11.0766 20.3868 11.1131 20.3868 11.1376 20.4068 11.1376 20.4503 11.1376 20.4765 11.1265 20.5247 11.0997 20.5885L10.4825 22.0106 10.9549 22.0094 11.386 21.0169C11.5714 20.5918 11.7765 20.3815 11.9288 20.3815 11.9749 20.3815 11.9946 20.4058 11.9946 20.4572 11.9946 20.4857 11.9858 20.5332 11.9501 20.613L11.5371 21.5121C11.5027 21.589 11.4691 21.6995 11.4691 21.7849 11.4691 21.9211 11.5432 22.0435 11.7491 22.0435 12.0169 22.0435 12.2229 21.8371 12.4527 21.5259L12.4538 21.5925C12.4709 21.8396 12.6074 22.053 12.9638 22.053 13.3861 22.053 13.7281 21.7543 13.9358 21.2823 14.029 21.0705 14.074 20.8898 14.0864 20.753 14.1258 20.7731 14.1751 20.7857 14.2372 20.7857 14.2955 20.7857 14.3644 20.7739 14.436 20.7363L14.3626 20.899C14.2781 21.0794 14.1839 21.2799 14.114 21.4471 14.0625 21.5704 14.0315 21.686 14.0315 21.7633 14.0315 21.9323 14.122 22.0514 14.3101 22.0514 14.4986 22.0514 14.7576 21.8708 14.9397 21.6177H14.9454C14.9349 21.6681 14.9246 21.7397 14.9246 21.7776 14.9246 21.9168 14.9664 22.0504 15.1589 22.0504 15.3819 22.0504 15.5539 21.8856 15.7233 21.68L15.5804 22.0106H16.0469L16.4186 21.1508C16.6291 20.6655 16.8415 20.3737 17.0382 20.3737 17.0802 20.3737 17.1019 20.4021 17.1019 20.4446 17.1019 20.5255 16.9887 20.7483 16.8816 20.974 16.7848 21.1774 16.713 21.3329 16.6626 21.4553 16.6182 21.5637 16.5817 21.6944 16.5817 21.7797 16.5817 21.9292 16.6632 22.0435 16.8424 22.0435 17.1108 22.0435 17.3857 21.7793 17.5296 21.5757 17.4966 21.6698 17.4758 21.7839 17.4758 21.8738 17.4758 22.1477 17.639 22.2853 17.8644 22.2853 18.0234 22.2853 18.1609 22.2289 18.2825 22.1428 18.4588 22.018 18.6007 21.8302 18.7211 21.6559L18.6418 21.578C18.5304 21.7383 18.4082 21.8922 18.2825 21.9869 18.2038 22.0465 18.1238 22.0828 18.0445 22.0828 17.9487 22.0828 17.8872 22.0325 17.8872 21.9048 17.8872 21.779 17.9439 21.6098 18.0322 21.3849 18.0369 21.3739 18.1623 21.0868 18.2825 20.8101 18.3844 20.5759 18.4826 20.3489 18.5015 20.3028H18.8041L18.8653 20.162H18.5642ZM5.7447 21.7561C5.6781 21.7561 5.6335 21.7334 5.6318 21.6452 5.6351 21.4124 5.8227 21.0031 6.0596 20.6754 6.2237 20.4484 6.4398 20.2808 6.67 20.2808L6.3768 20.9467C6.1596 21.4501 5.9204 21.7561 5.7448 21.7561ZM8.6157 21.7561C8.5491 21.7561 8.5042 21.7334 8.5027 21.6452 8.5059 21.4124 8.6935 21.0031 8.9304 20.6754 9.0944 20.4484 9.3105 20.2808 9.5407 20.2808L9.2475 20.9467H9.2482C9.0275 21.4574 8.7994 21.7561 8.6157 21.7561ZM13.2333 21.6984C13.1293 21.8473 13.0401 21.8903 12.9629 21.8903 12.8568 21.8903 12.8253 21.7998 12.8383 21.6673 12.8615 21.4348 13.0485 20.8979 13.3111 20.5263 13.4305 20.3571 13.513 20.2867 13.6021 20.2867 13.69 20.2867 13.7212 20.364 13.718 20.4608 13.7097 20.7129 13.4903 21.3297 13.2333 21.6984ZM4.5481 20.6415C4.7102 20.6225 4.9754 20.5695 5.0763 20.5329 5.6999 20.3591 6.4062 19.9418 6.4062 19.201 6.4062 18.3477 5.5018 17.9385 4.4239 17.9385 3.2736 17.9385 2.2186 18.4483 1.8272 19.236 1.7238 19.4445 1.6661 19.672 1.6661 19.9152 1.6661 20.1349 1.7196 20.3324 1.8272 20.4917 1.9932 20.7375 2.2891 20.8919 2.7261 20.8919 3.2589 20.8919 3.6835 20.5994 3.6835 20.0908 3.6835 20.0908 3.6913 19.9479 3.5254 19.9479 3.3892 19.9479 3.3542 20.0415 3.3574 20.0908 3.3768 20.4906 3.141 20.808 2.7176 20.808 2.2447 20.808 2.0459 20.4061 2.0459 19.9751 2.0459 19.0943 2.7106 18.5106 3.4021 18.2606 3.7566 18.1312 4.0418 18.0847 4.4137 18.0847 5.1959 18.0847 5.8357 18.3855 5.8357 19.1879 5.8357 19.8602 5.2714 20.4321 4.5929 20.4799L4.6197 20.3875C4.7588 19.8949 4.9265 19.3562 5.2033 18.9554 5.2196 18.9303 5.2485 18.8927 5.2801 18.8528L5.2422 18.8055C5.1928 18.834 5.1045 18.8984 5.0693 18.9259 3.7711 19.9368 3.7319 22.774 2.0033 22.774 1.9406 22.774 1.8821 22.7691 1.8272 22.7603 1.4665 22.7023 1.2778 22.4601 1.279 22.1235 1.2793 22.0574 1.3018 21.9662 1.3018 21.9144 1.3018 21.8271 1.2426 21.7366 1.1129 21.7366.9586 21.7366.8954 21.8565.8925 22.0333.8843 22.5389 1.2556 22.8313 1.8272 22.884 1.8896 22.8898 1.955 22.967 2.0217 22.8927 3.3701 22.8927 4.1989 21.8763 4.5481 20.6415M21.3734 19.2275 20.7897 20.4889H19.5284L19.1581 21.2891H20.4194L19.8357 22.5505H20.636L21.2197 21.2891H22.4811L22.8514 20.4888H21.59L22.1737 19.2275Z"},{name:"primevideo",path:"M10.5404 24C8.6114 23.8847 6.7246 23.3486 4.9953 22.4245 4.0043 21.9206 3.1033 21.2346 2.3328 20.3973 1.7161 19.7304 1.4078 19.2945 1.3491 18.9899 1.3174 18.8334 1.3432 18.7144 1.4211 18.6499 1.5195 18.6415 1.6179 18.6332 1.7163 18.6249 1.8497 18.6796 2.0389 18.8139 2.3132 19.0424 3.9381 20.3973 6.1992 21.3794 8.7148 21.8153 11.8436 22.3549 15.0469 22.0922 18.0628 21.0485 18.6011 20.8542 18.9437 20.7019 19.4968 20.4131 19.859 20.2188 19.9715 20.1715 20.089 20.1663 20.2309 20.1505 20.2358 20.1558 20.3141 20.245 20.4267 20.3763 20.4218 20.5496 20.2994 20.7492 20.1869 20.933 19.9862 21.1483 19.6877 21.4057 18.1558 22.7291 15.6646 23.6797 12.9924 23.958 12.5127 24.0105 10.9613 24.0315 10.5404 24ZM20.5637 22.435C20.4071 22.2932 20.4365 22.1356 20.6861 21.6893 20.9996 21.1528 21.2309 20.5659 21.3713 19.9509 21.4251 19.5833 21.337 19.4625 20.9602 19.389 20.6078 19.326 19.7807 19.3733 19.257 19.4888 19.1591 19.5098 18.9878 19.5256 18.8752 19.5256 18.6795 19.5256 18.655 19.5256 18.606 19.4625 18.5678 19.4127 18.5425 19.3529 18.5326 19.2892 18.5228 19.1947 18.5326 19.1684 18.606 19.0792 19.2394 18.5242 20.0349 18.2266 20.8525 18.2389 21.6209 18.2389 22.2424 18.4385 22.448 18.7536 22.5214 18.8691 22.5263 18.8796 22.5361 19.263 22.541 19.5466 22.5361 19.7199 22.5018 19.8984 22.3886 20.516 22.146 21.0979 21.7922 21.6 21.5444 21.9179 21.258 22.1988 20.9406 22.435 20.7448 22.54 20.6714 22.54 20.5637 22.435ZM11.6139 7.4537C11.5755 7.4363 11.5447 7.4055 11.5274 7.3669 11.5101 7.3206 11.5043 6.3482 11.5043 4.7158 11.5043 2.5336 11.5043 2.1342 11.5389 2.0879 11.5735 2.0416 11.6139 2.0358 12.0692 2.0301 12.4035 2.0243 12.5879 2.0301 12.634 2.0532 12.709 2.0821 12.7205 2.1111 12.8069 2.5742L12.8703 2.8173C12.8819 2.8231 12.928 2.7536 12.9799 2.6552 13.1412 2.331 13.4064 2.0879 13.7291 1.9722 13.8502 1.9259 13.9424 1.9143 14.1787 1.9143 14.4957 1.9143 14.6225 1.9374 14.8876 2.0706 15.1187 2.2161 15.3123 2.4144 15.4525 2.6494 15.5101 2.7478 15.5562 2.8231 15.5678 2.8231 15.5735 2.8231 15.6196 2.771 15.6657 2.7073 15.8837 2.3676 16.2052 2.1077 16.5822 1.9664 16.884 1.8834 17.2025 1.8834 17.5044 1.9664 18.0346 2.1516 18.3459 2.5452 18.5418 3.2803 18.5879 3.4829 18.5937 3.5408 18.5994 5.422 18.611 7.1006 18.5994 7.3727 18.5706 7.419 18.536 7.4653 18.5015 7.4711 17.9482 7.4769 17.3833 7.4827 17.3545 7.4827 17.2911 7.4306L17.2219 7.3727 17.2104 5.6246C17.2046 3.8997 17.2046 3.8707 17.147 3.7029 17.0317 3.3556 16.8415 3.2051 16.5245 3.2051 16.2018 3.2051 15.9712 3.3787 15.8502 3.7203 15.7637 3.9634 15.7522 4.2759 15.7522 5.8446 15.7522 7.3438 15.7522 7.3785 15.6945 7.4306 15.6484 7.4769 15.6139 7.4827 15.0778 7.4827 14.5015 7.4827 14.4381 7.4711 14.3862 7.3785 14.3539 6.8196 14.3443 6.2596 14.3574 5.6999 14.3574 4.0791 14.3516 3.8823 14.2652 3.6161 14.1499 3.2456 13.6888 3.0835 13.3257 3.2861 13.0894 3.4135 12.9626 3.6797 12.9222 4.1486 12.9049 4.2817 12.8934 5.0632 12.8934 5.8851V7.3785L12.8358 7.4306C12.7781 7.4769 12.7493 7.4827 12.2248 7.4827 11.9193 7.4827 11.6484 7.4653 11.6139 7.4537ZM.3458 9.1671C.31 9.1565.2767 9.1388.2479 9.115.2018 9.0861.2018 8.8835.2018 5.613.2018 3.7087.2133 2.14.219 2.1227.2709 2.0474.3631 2.0301.8127 2.0301 1.0721 2.0301 1.2969 2.0416 1.3199 2.0474 1.3833 2.0706 1.4064 2.14 1.4755 2.4758 1.5101 2.6494 1.5505 2.7999 1.562 2.8115 1.5735 2.8231 1.6139 2.7652 1.6542 2.6841 1.7464 2.5105 2.0173 2.2211 2.196 2.1227 2.4922 1.9451 2.8403 1.8756 3.1816 1.9259 3.9655 2.0474 4.5072 2.7189 4.7493 3.8534 4.8069 4.1428 4.8242 5.1037 4.7724 5.4741 4.7135 6.0632 4.4852 6.6223 4.1153 7.0833 3.7868 7.4306 3.4813 7.5869 3.0605 7.6042 2.7551 7.6274 2.5533 7.5927 2.3228 7.4769 2.0818 7.3418 1.8778 7.1489 1.7291 6.9154 1.6984 6.8598 1.6596 6.809 1.6139 6.7649 1.6023 6.7649 1.5908 7.2685 1.5908 7.8879 1.5908 8.513 1.5793 9.0398 1.5678 9.0745 1.5274 9.1729 1.4237 9.1903.8876 9.1903.6167 9.1903.3689 9.1845.3458 9.1729ZM2.709 6.3771C2.8992 6.3192 3.0778 6.1224 3.1816 5.8793 3.2969 5.6015 3.343 5.3294 3.3603 4.8953 3.3891 4.1428 3.2162 3.5061 2.928 3.2572 2.8358 3.1761 2.5937 3.0835 2.4842 3.0835 1.9251 3.0835 1.562 3.726 1.562 4.7216 1.562 5.4336 1.7061 5.9372 1.977 6.215 2.1729 6.406 2.4438 6.4697 2.7147 6.3771ZM21.1528 7.5869C20.2331 7.3991 19.5127 6.6801 19.3199 5.7578 18.9914 4.4496 19.3487 3.072 20.196 2.3831 20.9772 1.733 22.1092 1.7354 22.8876 2.3889 23.2104 2.6783 23.4006 2.9446 23.5793 3.3845 23.7234 3.7434 23.781 4.056 23.7983 4.5538 23.8098 4.7853 23.8041 4.9995 23.7983 5.0342 23.7579 5.1905 23.8386 5.1789 22.196 5.1789 21.3718 5.1789 20.6917 5.1905 20.6801 5.2021 20.6513 5.2484 20.7493 5.7114 20.8242 5.914 20.928 6.1861 21.1239 6.3945 21.3257 6.4523 21.758 6.5739 22.1729 6.3771 22.3113 5.9777 22.4092 5.7056 22.4208 5.6883 22.5303 5.6767 22.611 5.6709 23.1989 5.7925 23.5562 5.8793 23.7061 5.9198 23.7234 5.9951 23.6254 6.2382 23.5216 6.516 23.3833 6.7418 23.1931 6.9444 22.7967 7.3835 22.2266 7.6232 21.6369 7.5984 21.4352 7.6042 21.2162 7.5984 21.147 7.5869ZM22.3631 4.1717C22.3631 3.9113 22.2018 3.4308 22.0461 3.2456 21.9213 3.114 21.7487 3.0388 21.5677 3.0372 21.2969 3.0372 21.0894 3.1646 20.9337 3.425 20.8415 3.5929 20.732 3.9171 20.7032 4.1197L20.6859 4.2528H22.3631ZM5.5505 7.4306 5.4813 7.3727V4.7448C5.4813 2.3253 5.4813 2.1053 5.5216 2.0764 5.5793 2.0301 6.4784 2.0069 6.5879 2.0532 6.6744 2.0879 6.7032 2.1516 6.7666 2.5047 6.7954 2.661 6.8242 2.7941 6.8415 2.8057 6.8473 2.8173 6.8992 2.7478 6.9453 2.6552 7.0605 2.441 7.3199 2.1632 7.4986 2.0764 7.8352 1.918 8.2159 1.8812 8.5764 1.9722 8.7896 2.0301 8.8761 2.1053 8.8761 2.2269 8.8761 2.3137 8.7032 3.0372 8.6283 3.2746 8.5706 3.4482 8.536 3.4656 8.2824 3.3672 8.0933 3.2813 7.8902 3.2303 7.683 3.2167 7.2969 3.2167 7.049 3.4193 6.9337 3.8534 6.8876 3.9865 6.8819 4.2007 6.8703 5.7057 6.8929 6.283 6.8775 6.8611 6.8242 7.4364 6.7954 7.4595 6.6398 7.4711 6.2017 7.4769 5.6369 7.4827 5.6138 7.4769 5.5504 7.4306ZM9.3545 7.4537C9.3233 7.4443 9.2966 7.4237 9.2796 7.3959 9.268 7.3669 9.2507 2.6552 9.2623 2.1748 9.2623 2.0416 9.343 2.0243 9.9885 2.0243 10.6283 2.0243 10.6398 2.0301 10.6513 2.1979V4.8258C10.6513 7.3438 10.6513 7.3785 10.5994 7.4306 10.5533 7.4769 10.5188 7.4827 9.977 7.4827 9.66 7.4827 9.3775 7.4711 9.3487 7.4537ZM9.7234 1.6191C9.4958 1.5469 9.3081 1.3835 9.2046 1.1676 9.1222.9415 9.1222.6933 9.2046.4672 9.2796.2993 9.4409.1373 9.6081.062 9.8353-.0202 10.084-.0202 10.3113.062 10.4957.1488 10.6801.3514 10.7435.5482 10.8012.745 10.7839 1.0229 10.6974 1.2139 10.6167 1.3875 10.4265 1.5496 10.2363 1.6075 10.098 1.648 9.8329 1.6538 9.7234 1.6191ZM9.7194 16.2724C9.0674 16.1565 8.5202 15.533 8.2989 14.6612 8.1484 13.9852 8.1405 13.2877 8.2757 12.6087 8.4561 11.8197 8.8578 11.2404 9.4109 10.9976 10.0703 10.6771 10.8789 10.8909 11.268 11.4887 11.3379 11.588 11.4077 11.6652 11.4194 11.6542 11.4369 11.6487 11.4485 11.2073 11.4485 10.5341 11.4485 9.4472 11.4485 9.4251 11.5009 9.3755 11.5533 9.3258 11.5766 9.3203 12.1587 9.3313 12.3731 9.3168 12.5885 9.3298 12.7991 9.3699 12.8574 9.4251 12.869 9.9327 12.8574 13.0115L12.8457 16.0682 12.7875 16.1234C12.7409 16.1786 12.7235 16.1786 12.2519 16.1786 12.0751 16.1836 11.8982 16.1781 11.7221 16.162 11.6523 16.1344 11.6057 16.0296 11.5475 15.7151 11.5317 15.612 11.5064 15.5105 11.4718 15.4116L11.3845 15.5551C11.268 15.7648 10.9595 16.0462 10.715 16.162 10.6102 16.2117 10.4588 16.2613 10.3831 16.2724 10.2143 16.3055 9.8941 16.3055 9.7194 16.2724ZM10.8605 15.1027C11.2855 14.9095 11.5067 14.2695 11.4601 13.3922 11.4194 12.6032 11.1691 12.1397 10.7324 12.0239 10.6333 11.9898 10.5254 11.986 10.4239 12.0128 9.9989 12.1011 9.766 12.4598 9.6787 13.1439 9.6257 13.5718 9.6533 14.0052 9.7602 14.424 9.8592 14.7771 10.0338 15.0089 10.2783 15.1192 10.4239 15.1854 10.7033 15.1744 10.8605 15.1027ZM20.6817 16.2613C19.9915 16.0852 19.4172 15.6316 19.1099 15.0199 18.9718 14.7334 18.8739 14.4311 18.8188 14.1205 18.6616 13.0722 18.976 12.057 19.6397 11.4556 19.932 11.1704 20.3102 10.9777 20.7225 10.9038 22.1896 10.6224 23.4587 11.759 23.5286 13.4308 23.5723 14.0903 23.3972 14.7463 23.0279 15.3068 22.7241 15.7386 22.2777 16.0627 21.7588 16.2282 21.405 16.3027 21.0398 16.3139 20.6817 16.2613ZM21.4677 15.1468C21.7064 15.0364 21.8868 14.7606 21.9858 14.3743 22.0324 14.1757 22.044 14.0709 22.044 13.5908 22.044 13.1439 22.0324 13.0005 21.9974 12.8515 21.8635 12.3163 21.6365 12.0349 21.2872 11.9632 20.8215 11.8749 20.4605 12.2004 20.3266 12.8184 20.1636 13.5633 20.2626 14.4902 20.5478 14.8985 20.6293 15.0144 20.8156 15.1578 20.9321 15.1965 21.0485 15.2296 21.3571 15.2075 21.4677 15.1468ZM15.5004 16.2613C15.2693 16.2249 15.0478 16.1462 14.8484 16.0296 14.1848 15.6345 13.7426 14.9786 13.6433 14.2419 13.5851 13.9164 13.5851 13.3095 13.6433 12.9894 13.7519 12.2614 14.1706 11.6073 14.8018 11.1797 15.154 10.9783 15.555 10.8662 15.9661 10.8542 16.1874 10.8542 16.5483 10.9204 16.7579 10.9976 17.3241 11.2351 17.7679 11.6755 17.9921 12.2225 18.1668 12.6142 18.2366 12.9784 18.2424 13.4915 18.2424 13.8391 18.2424 13.8833 18.1959 13.9329 18.1493 13.9881 18.1376 13.9881 16.6182 13.9881H15.0871V14.0709C15.0871 14.2198 15.1569 14.5178 15.2442 14.7054 15.3432 14.9316 15.4655 15.0751 15.6401 15.1578 15.8264 15.2516 16.1233 15.2516 16.3271 15.1689 16.4901 15.1026 16.6764 14.9151 16.7346 14.7661L16.8103 14.5619C16.8394 14.4737 16.8569 14.4626 16.9384 14.4571 17.0548 14.4461 17.9863 14.6392 18.0736 14.6888 18.1609 14.744 18.1376 14.8544 17.9921 15.1468 17.8477 15.4372 17.6345 15.6921 17.3692 15.8917 16.9617 16.1786 16.6356 16.2779 16.0593 16.2889 15.7973 16.2944 15.6168 16.2889 15.5004 16.2668ZM16.7754 13.0722C16.7987 13.0556 16.7987 13.017 16.7637 12.8349 16.6764 12.3991 16.4959 12.1066 16.2398 11.9963 15.8613 11.8308 15.4247 12.0515 15.2384 12.5039 15.1569 12.7246 15.0871 13.0391 15.122 13.0722 15.1569 13.1053 16.7171 13.1053 16.7754 13.0722ZM1.9707 16.1289C1.9183 16.0737 1.8951 16.0075 1.7379 15.4503 1.5252 14.7115 1.3078 13.974 1.0858 13.2377L.591 11.5494C.527 11.3342.4746 11.1411.4746 11.108.4746 10.9976.5444 10.9811 1.2023 10.9811 1.7553 10.9811 1.8252 10.9866 1.8776 11.0252 1.9242 11.0638 1.9649 11.2073 2.1396 11.9466L2.5005 13.4971C2.6344 14.0488 2.7916 14.733 2.7916 14.7661 2.7916 14.8488 2.8324 14.7661 2.8615 14.6281L3.2923 12.7798C3.6416 11.29 3.6882 11.0804 3.7347 11.0362 3.7697 11.0031 3.8628 10.9921 4.3926 10.9866 5.0563 10.9866 5.1319 10.9921 5.1494 11.0969 5.1552 11.1521 5.0679 11.4666 4.672 12.8074L4.1073 14.7275C4.02 15.042 3.9501 15.2682 3.7464 15.9413 3.7173 16.0351 3.6765 16.1234 3.6532 16.1455 3.6241 16.1786 3.5019 16.1841 2.8149 16.1841 2.0581 16.1841 2.0115 16.1841 1.9707 16.1344ZM6.0285 16.1289 5.9586 16.0737 5.9644 13.5743C5.9703 11.2183 5.9761 11.0749 6.0227 11.0362 6.0634 10.9976 6.1274 10.9921 6.6456 10.9811 7.1404 10.9811 7.2452 10.9811 7.3093 11.0142L7.3908 11.0528V13.5357C7.3908 15.3234 7.3791 16.0462 7.3617 16.0903 7.3432 16.1239 7.312 16.1495 7.2743 16.162 7.2452 16.1731 6.9658 16.1786 6.6572 16.1786 6.1333 16.1786 6.0925 16.1786 6.0285 16.1234ZM6.436 10.5838C6.2031 10.5286 5.9703 10.3245 5.9004 10.1093 5.8422 9.9603 5.8422 9.7231 5.9004 9.5575 5.9412 9.403 6.1275 9.1989 6.2846 9.1216 6.4418 9.0444 6.8435 9.0334 7.0124 9.0996 7.2045 9.1823 7.3267 9.2872 7.4199 9.4527 7.4839 9.5906 7.4956 9.6293 7.4956 9.8279 7.4956 10.0927 7.4432 10.2141 7.2918 10.3686 7.1346 10.5231 6.9716 10.5893 6.7271 10.6003 6.6107 10.6003 6.4826 10.6003 6.436 10.5838Z"},{name:"pia",path:"M 24 12 C 24 18.628906 18.628906 24 12 24 C 5.371094 24 0 18.628906 0 12 C 0 5.371094 5.371094 0 12 0 C 18.628906 0 24 5.371094 24 12 Z M 24 12 M 11.40625 8.695312 C 11.40625 8.332031 10.96875 8.152344 10.710938 8.40625 C 10.457031 8.664062 10.636719 9.101562 11 9.101562 C 11.222656 9.101562 11.40625 8.917969 11.402344 8.695312 M 13.003906 8.289062 C 12.640625 8.289062 12.457031 8.726562 12.714844 8.984375 C 12.972656 9.238281 13.40625 9.058594 13.40625 8.695312 C 13.40625 8.472656 13.226562 8.289062 13.003906 8.289062 M 12.566406 9.363281 C 12.242188 9.652344 11.757812 9.652344 11.4375 9.363281 C 11.332031 9.277344 11.199219 9.425781 11.292969 9.519531 C 11.691406 9.894531 12.3125 9.894531 12.707031 9.519531 C 12.75 9.480469 12.75 9.414062 12.710938 9.375 C 12.671875 9.332031 12.609375 9.328125 12.566406 9.363281 M 16.304688 10.933594 L 16.304688 10.929688 C 16.304688 10.550781 16.054688 10.21875 15.691406 10.117188 L 15.691406 9.390625 C 15.691406 7.414062 14.089844 5.8125 12.113281 5.8125 L 11.976562 5.8125 C 10 5.8125 8.394531 7.414062 8.394531 9.390625 L 8.394531 10.097656 C 7.996094 10.171875 7.707031 10.515625 7.703125 10.921875 C 7.59375 11.105469 7.535156 11.316406 7.535156 11.53125 L 7.535156 16.121094 C 7.535156 16.667969 7.902344 17.144531 8.429688 17.289062 C 8.570312 17.605469 8.886719 17.8125 9.234375 17.8125 L 10.238281 17.8125 C 10.570312 17.8125 10.875 17.625 11.027344 17.328125 L 12.871094 17.328125 C 13.019531 17.625 13.324219 17.8125 13.65625 17.8125 L 14.660156 17.8125 C 15 17.8125 15.308594 17.617188 15.457031 17.3125 C 16.039062 17.214844 16.464844 16.710938 16.464844 16.121094 L 16.464844 11.53125 C 16.464844 11.324219 16.410156 11.117188 16.304688 10.933594 Z M 13.113281 15.382812 C 13.136719 15.539062 13.089844 15.695312 12.988281 15.816406 C 12.886719 15.933594 12.738281 16.003906 12.578125 16.003906 L 11.421875 16.003906 C 11.265625 16.003906 11.113281 15.933594 11.011719 15.816406 C 10.910156 15.695312 10.863281 15.539062 10.886719 15.382812 L 11.109375 13.871094 C 10.691406 13.515625 10.527344 12.949219 10.6875 12.421875 C 10.847656 11.898438 11.300781 11.519531 11.84375 11.460938 C 12.445312 11.390625 13.019531 11.722656 13.261719 12.277344 C 13.5 12.832031 13.351562 13.480469 12.890625 13.871094 Z M 13.246094 10.324219 L 10.761719 10.324219 C 10.605469 10.167969 10.390625 10.082031 10.171875 10.082031 L 9.75 10.082031 L 9.75 9.332031 C 9.75 8.09375 10.753906 7.089844 11.992188 7.089844 L 12.101562 7.089844 C 13.339844 7.089844 14.339844 8.09375 14.339844 9.332031 L 14.339844 10.082031 L 13.835938 10.082031 C 13.613281 10.082031 13.402344 10.167969 13.246094 10.324219 Z M 12.730469 15.457031 C 12.742188 15.496094 12.734375 15.535156 12.707031 15.570312 C 12.683594 15.601562 12.644531 15.617188 12.605469 15.617188 L 11.402344 15.617188 C 11.363281 15.617188 11.324219 15.601562 11.300781 15.566406 C 11.273438 15.535156 11.265625 15.496094 11.277344 15.457031 L 11.507812 13.785156 C 11.507812 13.761719 11.503906 13.738281 11.496094 13.714844 C 11.476562 13.683594 11.453125 13.660156 11.421875 13.636719 C 11.417969 13.632812 11.417969 13.632812 11.414062 13.628906 C 11.070312 13.375 10.925781 12.933594 11.058594 12.527344 C 11.191406 12.121094 11.566406 11.84375 11.992188 11.839844 C 12.421875 11.839844 12.800781 12.109375 12.9375 12.515625 C 13.074219 12.917969 12.9375 13.367188 12.59375 13.621094 C 12.59375 13.625 12.59375 13.628906 12.582031 13.636719 C 12.550781 13.660156 12.527344 13.683594 12.507812 13.714844 C 12.503906 13.722656 12.5 13.734375 12.5 13.746094 Z M 12.730469 15.457031 Z"},{name:"rakutentv",path:"M6.886 1.2781V1.4302C6.6426 1.2781 6.4448 1.1868 6.1405 1.1868 5.2429 1.1868 4.5734 1.9931 4.5734 2.9973 4.5734 4.0015 5.258 4.8079 6.1405 4.8079 6.4296 4.8079 6.6426 4.7166 6.886 4.5644V4.7166H7.662V1.2781H6.886ZM6.1405 3.9863C5.6993 3.9863 5.3797 3.5603 5.3797 3.0125 5.3797 2.4648 5.6993 2.0388 6.1405 2.0388 6.5817 2.0388 6.886 2.4648 6.886 3.0125 6.9013 3.545 6.5817 3.9863 6.1405 3.9863ZM13.1545 1.2781V3.3016C13.1545 3.682 12.8958 4.0015 12.5155 4.0015 12.1351 4.0015 11.8764 3.682 11.8764 3.3016V1.2781H11.0853V3.3016C11.0853 4.1384 11.6483 4.8079 12.4851 4.8079 12.8654 4.8079 13.1545 4.5949 13.1545 4.5949V4.7166H13.9305V1.2781H13.1545ZM20.4576 4.7318V2.693C20.4576 2.3126 20.7163 1.9931 21.0966 1.9931 21.477 1.9931 21.7357 2.3126 21.7357 2.693V4.7166H22.5268V2.693C22.5268 1.8562 21.9638 1.1868 21.127 1.1868 20.7467 1.1868 20.4576 1.3998 20.4576 1.3998V1.2781H19.6816V4.7318H20.4576ZM2.3216 4.7318V3.3929H2.8998L3.9039 4.7318H4.9233L3.7061 3.119C4.0865 2.8452 4.3299 2.4039 4.3299 1.9018 4.3299 1.0803 3.6605.4108 2.8389.4108H1.5V4.7166H2.3216ZM2.3216 1.2324H2.8541C3.2192 1.2324 3.5235 1.5367 3.5235 1.9018 3.5235 2.267 3.2192 2.5713 2.8541 2.5713H2.3216V1.2324ZM16.0606 3.9102C15.9844 3.9559 15.9084 4.0015 15.8019 4.0015 15.6802 4.0015 15.4367 3.9102 15.4367 3.5755V2.0996H16.1061V1.2781H15.4367L15.4367.4108H14.6608L14.6608 1.2781H14.2499V2.0996H14.6608V3.5907C14.6608 4.3666 15.2389 4.8231 15.8323 4.8231 16.0453 4.8231 16.3496 4.747 16.593 4.61L16.0606 3.9102ZM9.6095 2.8908 10.9636 1.2781 9.8682 1.2781 8.9248 2.48 8.9248.137 8.1184.137 8.1184 4.7318 8.9248 4.7318 8.9248 3.3168 10.0812 4.7318 11.1766 4.7318M17.8711 1.1868C16.9582 1.1868 16.3191 1.9779 16.3191 2.9973 16.3191 4.0623 17.1408 4.8079 17.9472 4.8079 18.3579 4.8079 18.8905 4.6709 19.3317 4.0319L18.6471 3.6363C18.1145 4.4275 17.2168 4.0319 17.1104 3.2408L19.3622 3.2408C19.5599 2.0084 18.7535 1.1868 17.8711 1.1868ZM18.5558 2.5561H17.1408C17.3081 1.7497 18.4036 1.7041 18.5558 2.5561ZM5.8822 5.221 6.858 6.2007 18.1252 5.221 5.8822 5.221ZM10.0372 12.0377C9.9862 11.5775 9.9862 11.373 10.3439 11.1686 10.5996 11.0152 11.8776 10.2484 14.2803 9.5327 14.587 9.4305 14.8427 9.4816 14.9959 9.6861 15.1493 9.8905 15.2005 10.1973 15.0982 10.4529 14.8937 10.9641 14.8427 11.373 15.0471 11.5775 15.2516 11.7309 15.4561 11.782 16.0695 11.4753 16.8875 11.0664 17.8077 9.9928 17.7565 8.2547 17.7565 7.6412 17.5009 7.1812 17.092 6.8744 16.683 6.6188 16.1206 6.5165 15.5583 6.5165 14.0246 6.5165 13.2578 6.8744 11.2641 7.6412 8.4524 8.6637 4.9251 9.7883 2.9825 10.2995 2.1646 10.504 1.5 11.0664 1.5 11.8843 1.5 13.1623 3.0336 13.5202 4.1072 13.1623 4.3117 13.1112 6.5099 12.2932 7.2767 12.191 7.379 12.191 7.4301 12.2421 7.4301 12.2932 7.4301 12.3955 7.4812 13.5202 7.5322 13.9802 7.6346 16.0762 7.7879 20.1659 7.7879 20.4215 7.839 20.9839 7.839 22.6709 8.7592 22.6709 9.6283 22.6709 10.0372 21.7507 10.2417 20.4215M21.5906 8.6637C20.4149 8.6637 19.3413 10.8107 18.5233 12.7022 17.5009 15.1049 16.9386 17.252 16.6318 17.9677 16.3763 17.252 15.6605 15.2072 15.3027 14.4915 14.6893 13.2134 14.0758 12.2421 13.2578 12.2421 12.7978 12.2421 12.2866 12.4977 12.2866 13.3157 12.2866 13.878 12.5421 14.5937 12.7978 15.2583 12.9 15.4628 14.4336 19.2457 14.6382 19.9614 14.6382 19.9614 15.405 22.2619 15.4561 22.4664 15.9161 23.8466 16.3252 24 16.6318 24 17.092 24 17.7565 23.7955 18.0633 22.4152 18.2677 21.5462 18.5745 20.5237 18.8301 19.6547 19.2901 18.1722 20.4149 15.3094 21.1817 13.5713 21.7951 12.191 22.5108 10.5551 22.5108 9.5327 22.5108 9.1748 22.3063 8.6637 21.5906 8.6637Z"},{name:"rakutenviki",path:"M7.5496 3.24 7.5496 8.2824 8.47 8.2824 8.47 6.7261 9.7889 8.2824 11.0422 8.2824 9.2623 6.2699 10.7968 4.4964 9.5435 4.4964 8.47 5.8152 8.47 3.24 7.5496 3.24zM.0007 3.5526.0007 8.2824C0 8.2832.9349 8.2824.9349 8.2824L.9349 6.8167 1.5961 6.8167 2.7414 8.2824 3.9133 8.2824 2.529 6.5136C2.9602 6.216 3.2447 5.7319 3.2447 5.1839 3.2447 4.2838 2.4838 3.5526 1.5461 3.5526L.0007 3.5526zM14.9986 3.5526 14.9986 4.4948 14.5252 4.4948 14.5252 5.3933 14.9986 5.3933 14.9986 7.0278C14.9986 7.8734 15.6612 8.3778 16.3284 8.3778 16.5772 8.3778 16.9228 8.2987 17.2033 8.1385L16.6127 7.3872C16.5326 7.4393 16.4311 7.4795 16.3144 7.4795 16.168 7.4795 15.8924 7.3722 15.8924 7.0153L15.8924 5.395 16.658 5.395 16.658 4.4964 15.8924 4.4964 15.8924 3.5526 14.9986 3.5526zM18.6786 4.3994C17.6434 4.3994 16.902 5.2726 16.902 6.3886 16.902 7.5614 17.8339 8.3792 18.7675 8.3792 19.2396 8.3792 19.844 8.2238 20.3521 7.531L19.5614 7.0933C18.9509 7.9582 17.9335 7.5202 17.8158 6.6542L20.3911 6.6542C20.6105 5.2943 19.6972 4.3994 18.6786 4.3994zM5.3027 4.4026C4.2848 4.4026 3.5134 5.295 3.5134 6.3902 3.5134 7.4848 4.2857 8.3762 5.3027 8.3762 5.633 8.3762 5.8751 8.2793 6.1448 8.1138L6.1448 8.2824 7.0402 8.2824 7.0402 4.4948C7.0402 4.4964 6.1448 4.4964 6.1448 4.4964L6.1448 4.6651C5.8751 4.5004 5.6339 4.4026 5.3027 4.4026zM22.4006 4.4026C21.9607 4.4026 21.6413 4.6354 21.6413 4.6354L21.6413 4.4964 20.7458 4.4964 20.7458 8.2824C20.7458 8.2832 21.6413 8.2824 21.6413 8.2824L21.6413 6.0574C21.6413 5.6406 21.9396 5.2885 22.3741 5.2885 22.8078 5.2885 23.107 5.6406 23.107 6.0574L23.107 8.2824 24.0008 8.2824 24.0008 6.0574C24.0008 5.1445 23.3503 4.4026 22.4006 4.4026zM.9349 4.451 1.5444 4.451C1.9645 4.451 2.3086 4.7797 2.3086 5.1839 2.3086 5.5895 1.9645 5.9184 1.5444 5.9184L.9349 5.9184.9349 4.451zM10.9483 4.4964 10.9483 6.7214C10.9483 7.6345 11.5987 8.3778 12.5484 8.3778 12.9883 8.3778 13.3079 8.1433 13.3079 8.1433L13.3079 8.2841 14.2031 8.2841 14.2031 4.4964 13.3079 4.4964 13.3079 6.7214C13.3079 7.1384 13.0093 7.4921 12.575 7.4921 12.1414 7.4921 11.842 7.1384 11.842 6.7214L11.842 4.4964 10.9483 4.4964zM18.6596 5.2166C19.0172 5.2103 19.3727 5.4323 19.4599 5.9011L17.8488 5.9011C17.9428 5.458 18.3022 5.2231 18.6596 5.2166zM5.3027 5.3152C5.8042 5.3152 6.159 5.7901 6.159 6.3902 6.1582 6.9894 5.8042 7.4639 5.3027 7.4639 4.801 7.4639 4.4338 6.9901 4.4338 6.3902 4.4338 5.791 4.801 5.3152 5.3027 5.3152zM4.9933 9.3108 6.1559 10.478 19.5787 9.3108 4.9933 9.3108zM-.001 12.4141 3.2604 20.8412 5.262 20.8412 8.4857 12.4141 5.9543 12.4141 4.2604 17.9332 2.5432 12.4141-.001 12.4141zM9.2935 12.4141 9.2935 20.8412 11.703 20.8412 11.703 12.4141 9.2935 12.4141zM13.0687 12.4141 13.0687 20.8412 15.4783 20.8412 15.4783 18.4082 16.1441 17.7426 18.3176 20.8412 21.085 20.8412 17.677 16.1878 20.8631 12.4141 18.1458 12.4141 15.4783 15.619 15.4783 12.4141 13.0687 12.4141zM21.5912 12.4141 21.5912 20.8412 24.0008 20.8412 24.0008 12.4141 21.5912 12.4141z"},{name:"showtime",path:"M12 0C8.3317 0 5.0504 1.6476 2.8492 4.2412 3.1847 4.2547 3.4606 4.3319 3.4606 4.3319 6.2608 5.0435 6.2609 7.956 6.2609 8.8696L3.6522 8.8696C3.6522 8.8696 3.6522 6.7826 2.3478 6.7826 2.0551 6.7826 1.8376 6.892 1.6712 7.0282 1.5982 7.0882 1.4345 7.2822 1.3594 7.5754 1.2096 8.1639 1.2172 9.169 2.3478 10.1739 3.8337 11.4944 6.7826 12.7174 6.7826 15.8478 6.7826 18.277 5.0607 19.5718 3.5717 19.7894 3.5717 19.7894 3.3445 19.8327 2.9266 19.8536 5.1273 22.3934 8.376 24 12 24 15.6464 24 18.9094 22.3696 21.1101 19.8026 18.6485 19.558 16.6957 16.1635 16.6957 12 16.6957 7.8365 18.6485 4.442 21.1101 4.1974 18.9094 1.6304 15.6464 0 12 0zM7.8261 4.6957 10.4348 4.6957 10.4348 10.6957 13.0435 10.6957 13.0435 4.6957 15.6522 4.6957 15.6522 19.8261 13.0435 19.8261 13.0435 13.3043 10.4348 13.3043 10.4348 19.8261 7.8261 19.8261 7.8261 4.6957zM21.6522 6.7826A5.2174 2.3478 90 0019.3043 12 5.2174 2.3478 90 0021.6522 17.2174 5.2174 2.3478 90 0024 12 5.2174 2.3478 90 0021.6522 6.7826zM.0061 11.2174C.0061 11.2174-.0288 13.6831.373 14.8696.9693 16.6304 1.6394 17.2174 2.7575 17.2174 3.5771 17.2174 4.1739 16.6957 4.1739 15.587 4.1739 14.3463 2.6362 13.6105 1.5734 12.8071.5701 12.049.0061 11.2174.0061 11.2174z"},{name:"starplus",path:"m10.9 8.58l-.79 2.399H7.601l2.002 1.472s.989-.637 2.199-.879c-1.76 1.298-2.729 2.596-2.729 2.596l-.219.682l2.045-1.473l2.026 1.473l-.772-2.399l2.047-1.472h-2.53zm-8.14.748c-.902 0-1.563.593-1.563 1.385c0 .55.265.969.881 1.299l.703.351c.396.176.573.331.573.617c0 .309-.243.528-.573.528c-.352 0-.658-.199-.812-.639L1 13.156c.22.814.901 1.3 1.781 1.3c.946 0 1.674-.617 1.674-1.476c0-.682-.374-1.121-1.078-1.43l-.66-.33c-.33-.131-.442-.31-.442-.507c0-.242.2-.44.53-.44c.286 0 .506.156.66.53l.924-.418c-.264-.66-.793-1.057-1.63-1.057zm11.728.067v4.972h1.078v-1.98l1.342 1.98h1.233l-1.409-1.98c.682-.088 1.254-.705 1.254-1.453c0-.99-.66-1.54-1.76-1.54zm-9.75.007v.979h1.098v3.994h1.098v-3.994h1.08v-.979zm15.586.534v1.537H18.73v1.02h1.594v1.525h1.07v-1.526H23v-1.02h-1.605V9.937zm-4.758.404h.66c.419 0 .682.22.682.572c0 .396-.263.66-.681.66h-.66z"},{name:"stremio",path:"M12.6527.2686 12.6527.2686 23.7314 11.3473C23.9035 11.5209 24 11.7556 24 12 24 12.2445 23.9035 12.479 23.7314 12.6527L12.6527 23.7314C12.479 23.9035 12.2445 24 12 24 11.7556 24 11.5209 23.9035 11.3473 23.7314L.2686 12.6527C.0965 12.479 0 12.2445 0 12 0 11.7556.0965 11.5209.2686 11.3473L11.3473.2686C11.5209.0965 11.7556 0 12 0 12.2445 0 12.479.0965 12.6527.2686M16.1357 12.543C16.2199 12.4849 16.2888 12.4072 16.3363 12.3167 16.3838 12.2261 16.4087 12.1254 16.4087 12.0231 16.4087 11.9208 16.3838 11.8201 16.3363 11.7295 16.2888 11.6389 16.2199 11.5613 16.1357 11.5033L11.2549 8.0895C11.1597 8.0228 11.0482 7.9835 10.9322 7.9758 10.8163 7.9681 10.7005 7.9924 10.5974 8.046 10.4943 8.0997 10.4079 8.1806 10.3477 8.2799 10.2874 8.3792 10.2555 8.4932 10.2556 8.6094V15.4368C10.2555 15.553 10.2874 15.6669 10.3477 15.7663 10.4079 15.8657 10.4943 15.9465 10.5974 16.0001 10.7005 16.0538 10.8163 16.0781 10.9322 16.0704 11.0482 16.0627 11.1597 16.0234 11.2549 15.9567L16.1357 12.543Z"},{name:"surfshark",path:"M 24 12 C 24 18.628906 18.628906 24 12 24 C 5.371094 24 0 18.628906 0 12 C 0 5.371094 5.371094 0 12 0 C 18.628906 0 24 5.371094 24 12 Z M 24 12M 16.546875 8.351562 L 16.546875 8.34375 C 16.539062 8.242188 16.53125 8.125 16.527344 8 C 16.511719 7.765625 16.496094 7.515625 16.480469 7.320312 C 16.457031 7.1875 16.425781 7.070312 16.386719 6.960938 C 16.148438 6.429688 15.683594 6.175781 15.191406 6.054688 C 14.964844 6.015625 14.691406 6.007812 14.398438 6 L 11.570312 6 C 9.75 6.097656 8.984375 7.152344 8.78125 7.714844 C 7.984375 10.097656 7.484375 13.1875 7.128906 15.414062 C 7.121094 15.460938 7.113281 15.5 7.105469 15.542969 L 6.988281 16.601562 C 6.980469 16.769531 7 16.953125 7.042969 17.128906 C 7.265625 17.773438 7.941406 18.320312 9.425781 17.777344 C 10.832031 17.167969 12.488281 16.410156 14.199219 15.558594 C 15.175781 14.996094 16.605469 13.703125 16.679688 12.066406 C 16.667969 10.859375 16.628906 9.589844 16.546875 8.351562 Z M 14.289062 9.246094 C 14.289062 9.386719 14.175781 9.5 14.035156 9.5 C 13.183594 9.5 12.496094 10.191406 12.496094 11.039062 L 12.496094 11.980469 C 12.496094 13.5625 11.214844 14.84375 9.636719 14.84375 C 9.496094 14.84375 9.386719 14.730469 9.386719 14.59375 L 9.386719 13.8125 C 9.386719 13.671875 9.5 13.558594 9.640625 13.558594 C 10.492188 13.558594 11.179688 12.871094 11.179688 12.019531 L 11.179688 11.078125 C 11.179688 9.5 12.460938 8.21875 14.042969 8.21875 C 14.179688 8.21875 14.289062 8.328125 14.289062 8.464844 Z M 14.289062 9.246094 Z"},{name:"tv2play",path:"M 2.26,9.74 C 2.26,8.33 2.48,7.12 3.04,5.81 3.42,4.92 3.95,4.09 4.58,3.36 7.90,-0.52 13.66,-1.11 17.76,1.86 19.66,3.24 21.11,5.51 21.53,7.82 21.78,9.18 21.70,10.58 21.70,11.95 21.70,11.95 16.75,11.95 16.75,11.95 16.75,11.09 16.80,9.74 16.69,8.93 16.53,7.78 15.86,6.48 14.98,5.73 14.49,5.33 13.99,5.01 13.39,4.80 12.95,4.65 12.37,4.55 11.90,4.56 9.18,4.59 7.20,7.15 7.20,9.74 7.20,9.74 2.26,9.74 2.26,9.74 Z M 2.26,24.00 C 2.26,24.00 2.26,19.73 2.26,19.73 2.26,19.63 2.25,19.49 2.28,19.39 2.33,19.26 2.48,19.12 2.57,19.01 2.57,19.01 3.28,18.19 3.28,18.19 3.28,18.19 6.42,14.59 6.42,14.59 6.42,14.59 8.14,12.62 8.14,12.62 8.29,12.45 8.64,12.00 8.83,11.93 8.92,11.90 9.07,11.90 9.17,11.90 9.17,11.90 15.17,11.90 15.17,11.90 15.17,11.90 14.27,12.96 14.27,12.96 14.27,12.96 12.30,15.22 12.30,15.22 12.30,15.22 10.00,17.86 10.00,17.86 10.00,17.86 8.64,19.39 8.64,19.39 8.64,19.39 21.70,19.39 21.70,19.39 21.70,19.39 21.70,24.00 21.70,24.00 21.70,24.00 2.26,24.00 2.26,24.00 Z"},{name:"viaplay",path:"M1.2766 6.6383C.4742 8.2432 0 10.0669 0 11.9999 0 13.9331.4742 15.7568 1.2766 17.3617L11.9999 11.9999ZM11.9999 0C9.0456 0 6.3465 1.0577 4.231 2.845L16.7781 9.5927V14.4073L4.231 21.155C6.31 22.9422 9.0456 24 11.9999 24 18.6383 24 24 18.6383 24 11.9999 24 5.3617 18.6383 0 11.9999 0Z"},{name:"videoland",path:"M12 23.7692 24 3 17.0433 3 12 12.6586 6.9567 3 0 3ZM12 23.7692 Z"},{name:"vudu",path:"M 6.0971 6.9926 L 5.0469 6.9926 C 4.8725 6.9963 4.7129 7.1039 4.6535 7.2709 C 4.6535 7.282 4.6535 7.2895 4.6535 7.3006 C 4.2602 8.4324 3.915 9.4047 3.518 10.5365 C 3.4141 10.8371 3.3102 11.134 3.1914 11.4346 C 3.184 11.4605 3.1654 11.4828 3.1395 11.4939 C 3.0949 11.4939 3.0949 11.4605 3.0838 11.4309 C 2.8389 10.7221 2.5939 10.017 2.3416 9.3119 L 1.6217 7.2561 C 1.6254 7.2486 1.6254 7.2412 1.6217 7.2338 C 1.5475 7.0854 1.399 6.9926 1.2357 6.9926 L 0.1707 6.9926 C 0.0854 6.9852 0.0111 7.0482 0 7.1336 C -0.0037 7.1633 0.0037 7.193 0.0148 7.2189 C 0.6271 8.9297 1.2357 10.6404 1.8443 12.3475 L 1.9705 12.7 C 2.1486 13.2195 2.6348 13.5646 3.1803 13.5609 L 3.3213 13.5609 C 3.5551 13.5498 3.7889 13.5201 4.0227 13.4682 L 4.4531 12.2287 L 6.2566 7.2301 C 6.2641 7.2078 6.2678 7.1893 6.2752 7.1707 C 6.2863 7.0854 6.227 7.0037 6.1416 6.9926 C 6.1268 6.9926 6.1156 6.9926 6.1008 6.9926 M 11.9418 7.4416 C 11.9418 7.2152 11.7674 7.0297 11.5447 7.0111 L 10.4574 7.0111 L 10.4574 7.6123 C 10.4574 8.7441 10.4574 9.7498 10.4574 10.8854 C 10.4611 11.0004 10.45 11.1154 10.424 11.2268 C 10.3424 11.635 10.0455 11.9578 9.6484 12.0729 C 9.0436 12.2695 8.3904 11.9393 8.1937 11.3307 C 8.1566 11.2119 8.1381 11.0895 8.1381 10.967 C 8.1381 10.184 8.1381 8.5104 8.1381 7.6049 L 8.1381 7 C 8.1381 7 7.0545 7 7.0471 7 C 6.8244 7.0148 6.65 7.2041 6.65 7.4268 L 6.65 7.6457 C 6.65 8.8221 6.65 9.8314 6.65 11.0301 C 6.6574 12.4773 7.8301 13.6426 9.2699 13.6314 C 9.4406 13.6314 9.6076 13.6129 9.7746 13.5795 C 10.4203 13.4719 11.0029 13.1193 11.4037 12.5998 C 11.7451 12.1693 11.9344 11.6387 11.9418 11.0857 C 11.9418 10.4586 11.9418 9.8314 11.9418 9.2006 Z M 11.9418 7.4416 M 23.75 7.4416 C 23.75 7.2189 23.5793 7.0297 23.3566 7.0111 L 22.2656 7.0111 L 22.2656 7.6123 C 22.2656 8.7441 22.2656 9.7498 22.2656 10.8854 C 22.2656 11.0004 22.2545 11.1154 22.2285 11.2268 C 22.1506 11.6312 21.85 11.9578 21.4529 12.0729 C 20.8518 12.2732 20.2023 11.943 20.002 11.3381 C 19.9611 11.2193 19.9426 11.0932 19.9426 10.967 C 19.9426 10.184 19.9426 8.5104 19.9426 7.6049 L 19.9426 7 C 19.9426 7 18.8627 7 18.8479 7 C 18.6289 7.0186 18.4582 7.2041 18.4545 7.4268 L 18.4545 7.6457 C 18.4545 8.8221 18.4545 9.8314 18.4545 11.0301 C 18.4656 12.4773 19.6383 13.6426 21.0744 13.6314 C 21.2451 13.6314 21.4158 13.6129 21.5828 13.5795 C 22.2285 13.4719 22.8074 13.1193 23.2082 12.5998 C 23.5533 12.1693 23.7426 11.6387 23.7463 11.0857 C 23.7463 10.4586 23.7463 9.8314 23.7463 9.2006 L 23.7463 7.4416 Z M 23.75 7.4416 M 16.1352 11.5385 C 15.8457 11.8873 15.4338 12.1062 14.9885 12.1471 C 14.8994 12.1508 14.8104 12.1508 14.7213 12.1471 L 13.9531 12.1471 C 13.8604 12.1471 13.8566 12.1471 13.8566 12.0506 L 13.8566 8.4584 C 13.8566 8.373 13.8566 8.373 13.942 8.373 C 14.2686 8.373 14.5691 8.373 14.8809 8.373 C 15.4375 8.3916 15.9496 8.6811 16.2539 9.1486 C 16.4506 9.4381 16.5656 9.7795 16.5805 10.132 C 16.6213 10.6404 16.4617 11.1451 16.1352 11.5385 M 16.5693 7.4898 C 16.1018 7.1893 15.56 7.0223 15.0033 7.0074 C 14.7436 7.0074 14.4875 7.0074 14.224 7.0074 L 12.8473 7.0074 C 12.6098 7.0074 12.4205 7.2004 12.4205 7.4379 L 12.4205 13.1156 C 12.4205 13.3531 12.6098 13.5461 12.8473 13.5461 L 14.9143 13.5461 C 15.0701 13.5461 15.226 13.5313 15.3818 13.5016 C 16.0053 13.4088 16.5842 13.1305 17.0443 12.7037 C 17.9016 11.9541 18.2912 10.8 18.0686 9.6793 C 17.9127 8.7701 17.3672 7.976 16.5805 7.5047 M 19.0334 14.4293 C 18.4656 14.4553 18.024 14.9451 18.0463 15.5166 C 18.0686 16.0881 18.5473 16.5297 19.115 16.5074 C 19.6717 16.4852 20.1096 16.025 20.1021 15.4646 C 20.1133 14.9117 19.6791 14.4479 19.1262 14.4293 L 19.0334 14.4293 M 19.616 15.5092 C 19.6049 15.6354 19.5492 15.7578 19.4639 15.8506 L 19.4342 15.8803 C 19.1967 16.1029 18.8256 16.0918 18.6029 15.8543 C 18.3803 15.6205 18.3914 15.2457 18.6289 15.023 C 18.8627 14.8004 19.2338 14.8115 19.4564 15.049 C 19.4564 15.049 19.4564 15.049 19.4602 15.049 C 19.5529 15.1492 19.6086 15.2791 19.616 15.4164 Z M 19.616 15.5092 M 16.818 15.3199 L 16.818 15.7727 L 17.2633 15.7727 L 17.2633 15.9285 C 17.1557 16.0102 17.0295 16.051 16.8959 16.051 C 16.6027 16.0621 16.3541 15.832 16.343 15.5352 C 16.3393 15.5129 16.3393 15.4906 16.343 15.4721 C 16.3207 15.1752 16.5396 14.9154 16.8365 14.8932 L 16.8959 14.8932 C 17.0703 14.8969 17.2299 14.9934 17.3152 15.1455 L 17.7457 14.9229 C 17.575 14.6111 17.2484 14.4256 16.8959 14.4367 C 16.3281 14.4219 15.8568 14.8746 15.842 15.4424 C 15.8271 15.9953 16.2428 16.4629 16.792 16.5037 L 16.8959 16.5037 C 17.1965 16.5037 17.4859 16.3887 17.7012 16.1734 C 17.7346 16.14 17.7568 16.0881 17.7605 16.0361 L 17.7605 15.3199 Z M 16.818 15.3199 M 15.3187 14.485 L 15.2779 14.485 C 15.1666 14.4924 15.0812 14.5852 15.0775 14.6965 L 15.0775 15.5797 L 14.276 14.485 L 13.7416 14.485 L 13.7416 16.4777 L 14.2537 16.4777 L 14.2537 15.3311 L 15.0924 16.4777 L 15.5822 16.4777 L 15.5822 14.485 Z M 15.3187 14.485 M 12.8139 14.485 L 12.1607 14.485 L 11.4111 16.4814 L 11.9937 16.4814 L 12.0939 16.192 L 12.8732 16.192 L 12.9252 16.3404 C 12.9586 16.4221 13.0328 16.474 13.1182 16.4777 L 13.5561 16.4777 Z M 12.2387 15.743 L 12.491 14.9896 L 12.7396 15.743 Z M 12.2387 15.743 M 10.3943 14.485 L 9.5557 14.485 L 9.5557 16.2699 C 9.5631 16.385 9.6559 16.4777 9.7709 16.4814 L 10.3943 16.4814 C 10.9398 16.5111 11.4111 16.0918 11.4408 15.5389 C 11.4742 14.9896 11.0549 14.5184 10.5057 14.485 C 10.4686 14.485 10.4314 14.485 10.3943 14.485 M 10.3943 16.0361 L 10.0678 16.0361 L 10.0678 14.9229 L 10.3943 14.9229 C 10.6764 14.908 10.9139 15.1232 10.9324 15.4053 L 10.9324 15.4646 C 10.9324 15.7615 10.6912 16.0361 10.398 16.0361 C 10.3943 16.0361 10.398 16.0324 10.398 16.0324 L 10.4018 16.0287 M 8.9063 14.485 C 8.7949 14.4887 8.7021 14.5777 8.6984 14.6891 L 8.6984 15.5797 L 7.8783 14.485 L 7.3439 14.485 L 7.3439 16.4777 L 7.8523 16.4777 L 7.8523 15.3311 L 8.6947 16.4852 L 9.1883 16.4852 L 9.1883 14.485 Z M 8.9063 14.485 M 6.4311 14.485 L 5.7779 14.485 L 5.032 16.4777 L 5.6258 16.4777 L 5.726 16.1883 L 6.5127 16.1883 L 6.5646 16.3404 C 6.598 16.4184 6.6723 16.4703 6.7576 16.4777 L 7.1918 16.4777 Z M 5.8559 15.743 L 6.1119 14.9896 L 6.3605 15.743 Z M 5.8559 15.743 M 5.2213 14.908 L 5.2213 14.459 L 3.6961 14.459 L 3.6961 16.448 L 4.2342 16.448 L 4.2342 15.7578 L 4.7686 15.7578 C 4.865 15.7467 4.9355 15.6687 4.943 15.5723 L 4.943 15.3051 L 4.2416 15.3051 L 4.2416 14.908 Z M 5.2213 14.908 M 0.3971 15.3941 L 3.2471 15.3941 L 3.2471 15.55 L 0.3971 15.55 Z M 0.3971 15.3941 M 20.5549 15.3941 L 23.4049 15.3941 L 23.4049 15.55 L 20.5549 15.55 Z M 20.5549 15.3941 Z"},{name:"waiputv",path:"M 10.087,7.672 10.009,7.801 V 7.863 A 3.161,3.161 0 0 0 9.786,9.016 v 4.67 a 3.064,3.064 0 0 0 0.375,1.46 c 0.034,0.061 0.07,0.119 0.107,0.177 a 2.8,2.8 0 0 0 1.33,1.093 l 0.175,0.069 a 2.766,2.766 0 0 0 2.323,-0.247 l 3.841,-2.3 a 2.952,2.952 0 0 0 0.347,-0.242 2.827,2.827 0 0 0 0.772,-0.977 l 0.065,-0.136 v -0.017 a 3.126,3.126 0 0 0 0.236,-1.177 V 6.716 A 3.074,3.074 0 0 0 18.983,5.257 2.833,2.833 0 0 0 17.545,3.976 L 17.372,3.908 a 2.917,2.917 0 0 0 -0.888,-0.149 0.485,0.485 0 0 0 -0.093,0.006 2.865,2.865 0 0 0 -1.344,0.39 l -0.948,0.567 v 0 l -2.891,1.73 a 2.842,2.842 0 0 0 -1.121,1.22 z m 5.3,-2.953 a 2.2,2.2 0 0 1 1.1,-0.3 2.235,2.235 0 0 1 0.683,0.116 0.04,0.04 0 0 0 0.027,0.014 2.193,2.193 0 0 1 1.21,1.026 2.407,2.407 0 0 1 0.293,1.141 v 4.671 a 2.435,2.435 0 0 1 -0.223,1.012 0.054,0.054 0 0 0 -0.014,0.043 2.2,2.2 0 0 1 -0.863,0.939 l -3.842,2.3 a 2.115,2.115 0 0 1 -1.782,0.187 0.042,0.042 0 0 0 -0.027,-0.014 2.182,2.182 0 0 1 -1.21,-1.026 2.4,2.4 0 0 1 -0.293,-1.143 V 9.016 A 2.442,2.442 0 0 1 10.667,8 c 0,-0.015 0.014,-0.015 0.014,-0.043 A 2.2,2.2 0 0 1 11.544,7.018 Z M 9.565,14.933 A 3.05,3.05 0 0 1 9.19,13.473 V 8.8 A 3.119,3.119 0 0 1 9.413,7.652 V 7.593 L 9.491,7.464 A 2.846,2.846 0 0 1 10.61,6.245 L 13.5,4.516 A 2.5,2.5 0 0 0 12.434,3.659 C 12.364,3.629 12.292,3.602 12.219,3.578 A 0.038,0.038 0 0 1 12.188,3.562 H 12.17 A 2.573,2.573 0 0 0 11.392,3.433 2.653,2.653 0 0 0 10.11,3.77 L 5.635,6.322 A 2.486,2.486 0 0 0 4.629,7.365 v 0.016 c 0,0.015 -0.015,0.015 -0.015,0.031 A 2.609,2.609 0 0 0 4.353,8.536 v 5.189 a 2.547,2.547 0 0 0 0.347,1.269 2.518,2.518 0 0 0 1.411,1.14 0.047,0.047 0 0 1 0.031,0.016 h 0.016 a 2.535,2.535 0 0 0 0.777,0.128 2.641,2.641 0 0 0 1.282,-0.336 L 9.677,15.11 A 1.924,1.924 0 0 1 9.565,14.933 Z m 7.5,2.467 -0.047,-0.018 A 0.8,0.8 0 0 0 16.776,17.341 H 16.75 a 0.773,0.773 0 0 0 -0.366,0.106 l -0.258,0.155 v 0 l -0.788,0.471 a 0.785,0.785 0 0 0 -0.3,0.333 l -0.021,0.035 v 0.017 a 0.863,0.863 0 0 0 -0.061,0.313 v 1.272 a 0.833,0.833 0 0 0 0.1,0.4 c 0.01,0.017 0.019,0.033 0.03,0.049 a 0.757,0.757 0 0 0 0.361,0.3 l 0.047,0.019 a 0.8,0.8 0 0 0 0.242,0.04 0.783,0.783 0 0 0 0.392,-0.108 l 1.047,-0.626 a 0.664,0.664 0 0 0 0.094,-0.066 0.781,0.781 0 0 0 0.211,-0.266 l 0.017,-0.038 v -0.006 a 0.855,0.855 0 0 0 0.065,-0.32 v -1.274 a 0.847,0.847 0 0 0 -0.1,-0.4 0.779,0.779 0 0 0 -0.396,-0.347 z m 0.314,2.02 a 0.668,0.668 0 0 1 -0.061,0.275 v 0.012 a 0.6,0.6 0 0 1 -0.235,0.256 l -1.047,0.626 A 0.573,0.573 0 0 1 15.55,20.64 h -0.007 a 0.6,0.6 0 0 1 -0.33,-0.28 0.652,0.652 0 0 1 -0.08,-0.312 V 18.772 A 0.656,0.656 0 0 1 15.2,18.5 v -0.012 a 0.6,0.6 0 0 1 0.235,-0.256 l 1.047,-0.626 a 0.607,0.607 0 0 1 0.3,-0.083 0.621,0.621 0 0 1 0.186,0.032 h 0.007 a 0.6,0.6 0 0 1 0.33,0.279 0.667,0.667 0 0 1 0.08,0.312 z m -2.591,0.569 v -1.273 a 0.841,0.841 0 0 1 0.06,-0.313 v -0.017 l 0.022,-0.035 a 0.77,0.77 0 0 1 0.3,-0.332 l 0.788,-0.472 A 0.694,0.694 0 0 0 15.667,17.313 L 15.609,17.291 H 15.6 a 0.73,0.73 0 0 0 -0.212,-0.035 0.722,0.722 0 0 0 -0.349,0.092 l -1.221,0.7 a 0.67,0.67 0 0 0 -0.274,0.284 v 0 l -0.005,0.009 a 0.722,0.722 0 0 0 -0.071,0.306 v 1.414 a 0.691,0.691 0 0 0 0.478,0.657 h 0.009 a 0.664,0.664 0 0 0 0.212,0.035 0.724,0.724 0 0 0 0.349,-0.091 l 0.4,-0.227 c -0.01,-0.016 -0.02,-0.032 -0.029,-0.048 a 0.837,0.837 0 0 1 -0.098,-0.398 z m 4.768,-0.361 H 19.52 a 0.253,0.253 0 0 1 -0.173,-0.045 0.182,0.182 0 0 1 -0.05,-0.147 V 18.4 h 0.243 a 0.22,0.22 0 0 0 0,-0.44 H 19.3 v -0.284 a 0.24,0.24 0 0 0 -0.48,0 v 0 0.287 h -0.242 a 0.22,0.22 0 0 0 0,0.44 h 0.242 v 1.035 a 0.616,0.616 0 0 0 0.176,0.494 0.76,0.76 0 0 0 0.5,0.149 h 0.063 a 0.226,0.226 0 0 0 0,-0.451 z M 21.979,18.3 A 0.24911945,0.24911945 0 0 0 21.518,18.111 L 21.036,19.37 20.555,18.114 V 18.107 A 0.25,0.25 0 0 0 20.094,18.3 l 0.675,1.591 a 0.3,0.3 0 0 0 0.159,0.16 0.294,0.294 0 0 0 0.382,-0.159 l 0.673,-1.6 z M 18.1,19.58 a 0.25,0.25 0 0 0 0,0.5 v 0 a 0.25,0.25 0 0 0 0,-0.5 z M 6.9,17.959 A 0.238,0.238 0 0 0 6.662,18.196 V 18.31 A 0.744,0.744 0 0 0 5.99,17.957 v 0 a 1.06,1.06 0 0 0 0,2.118 0.744,0.744 0 0 0 0.672,-0.349 v 0.113 A 0.237,0.237 0 0 0 6.88,20.075 H 6.92 A 0.237,0.237 0 0 0 7.137,19.839 V 18.185 A 0.238,0.238 0 0 0 6.9,17.959 Z m -0.311,1.357 a 0.565,0.565 0 0 1 -0.531,0.32 0.6,0.6 0 0 1 -0.607,-0.593 v -0.014 0 a 0.6,0.6 0 0 1 0.577,-0.621 h 0.023 a 0.588,0.588 0 0 1 0.556,0.353 0.628,0.628 0 0 1 0.054,0.28 0.7,0.7 0 0 1 -0.074,0.275 z m -2.016,-1.36 a 0.254,0.254 0 0 0 -0.244,0.185 v 0 L 4,19.316 3.653,18.2 v 0 A 0.25,0.25 0 0 0 3.436,18.025 H 3.4 a 0.251,0.251 0 0 0 -0.225,0.188 v 0 L 2.833,19.313 2.5,18.134 v 0 a 0.25110356,0.25110356 0 1 0 -0.484,0.134 l 0.011,0.035 v 0.009 l 0.5,1.569 v 0 a 0.289,0.289 0 0 0 0.248,0.194 H 2.818 A 0.29,0.29 0 0 0 3.08,19.868 v 0 l 0.33,-1.052 0.333,1.045 v 0 a 0.29,0.29 0 0 0 0.253,0.21 h 0.042 a 0.29,0.29 0 0 0 0.26,-0.194 v 0 l 0.518,-1.6 v 0 A 0.3,0.3 0 0 0 4.826,18.21 0.254,0.254 0 0 0 4.571,17.956 Z m -2.321,0 z m 5.606,0.007 H 7.813 A 0.238,0.238 0 0 0 7.59,18.2 v 1.656 0 a 0.237,0.237 0 0 0 0.473,0 v 0 -1.66 A 0.237,0.237 0 0 0 7.856,17.961 Z M 7.828,17.1 a 0.248,0.248 0 1 0 0.247,0.249 v 0 A 0.248,0.248 0 0 0 7.828,17.1 Z m 1.863,0.855 v 0 a 0.83,0.83 0 0 0 -0.7,0.353 v -0.129 a 0.22305605,0.22305605 0 0 0 -0.446,-0.01 v 0 2.395 a 0.237,0.237 0 0 0 0.218,0.228 H 8.8 a 0.237,0.237 0 0 0 0.216,-0.236 v -0.809 a 0.772,0.772 0 0 0 0.679,0.328 1.062,1.062 0 0 0 0,-2.12 z m 0.518,1.061 A 0.6,0.6 0 0 1 9.624,19.631 H 9.6 A 0.6,0.6 0 0 1 9,19.031 V 19.016 A 0.636,0.636 0 0 1 9.17,18.576 0.6,0.6 0 0 1 9.6,18.4 v 0 a 0.6,0.6 0 0 1 0.611,0.589 v 0.026 z m 2.489,-1 v 0 a 0.232,0.232 0 0 0 -0.136,-0.058 h -0.044 a 0.238,0.238 0 0 0 -0.217,0.235 v 0.923 c 0,0.284 -0.116,0.509 -0.458,0.509 -0.342,0 -0.436,-0.229 -0.436,-0.523 V 18.185 A 0.239,0.239 0 0 0 11.19,17.955 H 11.147 A 0.238,0.238 0 0 0 10.93,18.19 v 1.031 a 0.746,0.746 0 0 0 0.636,0.844 0.673,0.673 0 0 0 0.142,0.006 0.641,0.641 0 0 0 0.621,-0.327 v 0.107 a 0.224,0.224 0 1 0 0.448,0 V 18.2 A 0.236,0.236 0 0 0 12.7,18.026 Z"},{name:"wow",path:"M2.0563 15.263C2.7042 15.263 3.0046 14.8968 3.2582 14.3896L4.4037 12.0985 4.9859 14.1925C5.2112 15 5.5117 15.263 6.0845 15.263S7.0234 15.0752 7.3427 14.2957L8.2065 12.1738C8.2535 14.1549 9.6807 15.4413 11.6244 15.4413S14.892 14.1738 15.1643 12.5587L15.4647 14.2489C15.5962 14.9531 15.9248 15.263 16.4882 15.263S17.3802 15.0375 17.6619 14.5212L18.9765 12.0985 19.4929 14.2676C19.6525 14.9248 19.9436 15.263 20.5258 15.263S21.3896 15.0282 21.6431 14.5305L23.8591 10.2112A1.2019 1.2019 90 0023.9999 9.6385C23.9999 9.1315 23.6056 8.737 23.0234 8.737S22.1596 9.0188 21.9342 9.5165L20.8826 11.7699 20.3192 9.554C20.1971 9.0564 19.9154 8.737 19.3615 8.737 19.0046 8.737 18.6478 8.8404 18.3192 9.4601L17.1173 11.7794 16.7042 9.5727C16.6103 8.9907 16.1971 8.737 15.7089 8.737A.9671.9671 90 0014.7042 9.7324 1.784 1.784 90 0014.7323 10.061L14.7699 10.2489C14.2723 9.3099 13.2488 8.5587 11.8497 8.5587 10.892 8.5587 9.8028 8.9248 9.1267 9.8169A1.8122 1.8122 90 009.1361 9.5915C9.1267 9.1032 8.8075 8.737 8.2253 8.737S7.3802 8.9907 7.1737 9.5165L6.2535 11.9296 5.6431 9.5727C5.5117 9.0846 5.2582 8.737 4.7042 8.737S3.8779 8.9154 3.5962 9.5352L2.5446 11.9483 2.0187 9.5727C1.8873 8.9907 1.4741 8.737.9765 8.737S-.0282 9.1409-.0001 9.7324A.9014.9014 90 00.0375 9.986L.9671 14.1174C1.1079 14.7184 1.3333 15.263 2.0563 15.263ZM10.1784 12.061C10.1784 11.1596 10.8544 10.446 11.6995 10.446S13.2206 11.0846 13.2206 12.0141 12.5915 13.554 11.6995 13.554 10.1784 12.8968 10.1784 12.061Z"}],c=[{type:"button",name:"power",tap_action:{action:"key",key:"POWER"},icon:"mdi:power"},{type:"button",name:"sleep",tap_action:{action:"key",key:"SLEEP"},icon:"mdi:power-sleep"},{type:"button",name:"resume",tap_action:{action:"key",key:"RESUME"},icon:"mdi:power-on"},{type:"button",name:"wakeup",tap_action:{action:"key",key:"RESUME"},icon:"mdi:power-on"},{type:"button",name:"suspend",tap_action:{action:"key",key:"SUSPEND"},icon:"mdi:power-off"},{type:"button",name:"home",tap_action:{action:"key",key:"HOME"},icon:"mdi:home"},{type:"button",name:"move_home",tap_action:{action:"key",key:"MOVE_HOME"},icon:"mdi:home-import-outline"},{type:"button",name:"back",tap_action:{action:"key",key:"BACK"},icon:"mdi:keyboard-backspace"},{type:"button",name:"menu",tap_action:{action:"key",key:"MENU"},icon:"mdi:menu"},{type:"button",name:"settings",tap_action:{action:"key",key:"SETTINGS"},icon:"mdi:cog"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"VOLUME_UP"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"VOLUME_DOWN"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"key",key:"MUTE"},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"UP"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"DOWN"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"LEFT"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"RIGHT"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"CENTER"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"CENTER"},up:{tap_action:{action:"key",key:"UP"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"DOWN"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"LEFT"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"RIGHT"},hold_action:{action:"repeat"}}},{type:"button",name:"fast_forward",tap_action:{action:"key",key:"FAST_FORWARD"},icon:"mdi:fast-forward"},{type:"button",name:"rewind",tap_action:{action:"key",key:"REWIND"},icon:"mdi:rewind"},{type:"button",name:"keyboard",tap_action:{action:"keyboard"},icon:"mdi:keyboard"},{type:"button",name:"textbox",tap_action:{action:"textbox"},icon:"mdi:text-box"},{type:"button",name:"search",tap_action:{action:"search"},icon:"mdi:search-web"},{type:"button",name:"delete",tap_action:{action:"key",key:"input keyevent 67"},hold_action:{action:"repeat"},icon:"mdi:backspace"},{type:"button",name:"enter",tap_action:{action:"key",key:"ENTER"},icon:"mdi:magnify"},{type:"button",name:"red",tap_action:{action:"key",key:"RED"},icon:"mdi:alpha-r-box"},{type:"button",name:"green",tap_action:{action:"key",key:"GREEN"},icon:"mdi:alpha-g-box"},{type:"button",name:"yellow",tap_action:{action:"key",key:"YELLOW"},icon:"mdi:alpha-y-box"},{type:"button",name:"blue",tap_action:{action:"key",key:"BLUE"},icon:"mdi:alpha-b-box"},{type:"button",name:"component_1",tap_action:{action:"key",key:"COMPONENT1"},icon:"mdi:video-input-component"},{type:"button",name:"component_2",tap_action:{action:"key",key:"COMPONENT2"},icon:"mdi:video-input-component"},{type:"button",name:"composite_1",tap_action:{action:"key",key:"COMPOSITE1"},icon:"mdi:video-input-component"},{type:"button",name:"composite_2",tap_action:{action:"key",key:"COMPOSITE2"},icon:"mdi:video-input-component"},{type:"button",name:"hdmi_1",tap_action:{action:"key",key:"HDMI1"},icon:"mdi:video-input-hdmi"},{type:"button",name:"hdmi_2",tap_action:{action:"key",key:"HDMI2"},icon:"mdi:video-input-hdmi"},{type:"button",name:"hdmi_3",tap_action:{action:"key",key:"HDMI3"},icon:"mdi:video-input-hdmi"},{type:"button",name:"hdmi_4",tap_action:{action:"key",key:"HDMI4"},icon:"mdi:video-input-hdmi"},{type:"button",name:"input",tap_action:{action:"key",key:"INPUT"},icon:"mdi:import"},{type:"button",name:"vga",tap_action:{action:"key",key:"VGA"},icon:"mdi:serial-port"},{type:"button",name:"end",tap_action:{action:"key",key:"END"},icon:"mdi:arrow-collapse-right"},{type:"button",name:"escape",tap_action:{action:"key",key:"ESCAPE"},icon:"mdi:exit-to-app"},{type:"button",name:"pairing",tap_action:{action:"key",key:"PAIRING"},icon:"mdi:bluetooth-audio"},{type:"button",name:"home",tap_action:{action:"key",key:"HOME"},icon:"mdi:home"},{type:"button",name:"sys_up",tap_action:{action:"key",key:"SYSUP"},hold_action:{action:"repeat"},icon:"mdi:chevron-up-circle"},{type:"button",name:"sys_down",tap_action:{action:"key",key:"SYSDOWN"},hold_action:{action:"repeat"},icon:"mdi:chevron-down-circle"},{type:"button",name:"sys_left",tap_action:{action:"key",key:"SYSLEFT"},hold_action:{action:"repeat"},icon:"mdi:chevron-left-circle"},{type:"button",name:"sys_right",tap_action:{action:"key",key:"SYSRIGHT"},hold_action:{action:"repeat"},icon:"mdi:chevron-right-circle"},{type:"button",name:"text",tap_action:{action:"key",key:"TEXT"},icon:"mdi:text"},{type:"button",name:"top",tap_action:{action:"key",key:"TOP"},icon:"mdi:arrow-collapse-up"}],l=[{type:"button",name:"appletv",tap_action:{action:"source",source:"com.apple.atve.amazon.appletv"},icon:"appletv"},{type:"button",name:"crunchyroll",tap_action:{action:"source",source:"com.crunchyroll.crunchyroid"},icon:"crunchyroll"},{type:"button",name:"dazn",tap_action:{action:"source",source:"com.dazn"},icon:"dazn"},{type:"button",name:"discoveryplus",tap_action:{action:"source",source:"com.discovery.discoveryplus.firetv"},icon:"discovery"},{type:"button",name:"disney",tap_action:{action:"source",source:"com.disney.disneyplus"},icon:"disney"},{type:"button",name:"emby",tap_action:{action:"source",source:"tv.emby.embyatv"},icon:"mdi:emby"},{type:"button",name:"f1tv",tap_action:{action:"source",source:"com.formulaone.production"},icon:"f1tv"},{type:"button",name:"foxsports",tap_action:{action:"source",source:"com.foxsports.videogo"},icon:"foxsports"},{type:"button",name:"hulu",tap_action:{action:"source",source:"com.hulu.plus"},icon:"mdi:hulu"},{type:"button",name:"jellyfin",tap_action:{action:"source",source:"org.jellyfin.androidtv"},icon:"jellyfin"},{type:"button",name:"kodi",tap_action:{action:"source",source:"org.xbmc.kodi"},icon:"mdi:kodi"},{type:"button",name:"max",tap_action:{action:"source",source:"com.hbo.hbonow"},icon:"max"},{type:"button",name:"mlbtv",tap_action:{action:"source",source:"com.bamnetworks.mobile.android.gameday.atbat"},icon:"mlbtv"},{type:"button",name:"netflix",tap_action:{action:"source",source:"com.netflix.ninja"},icon:"mdi:netflix"},{type:"button",name:"nrktv",tap_action:{action:"source",source:"no.nrk.tv"},icon:"nrktv"},{type:"button",name:"pandora",tap_action:{action:"source",source:"com.pandora.android.gtv"},icon:"mdi:pandora"},{type:"button",name:"paramount",tap_action:{action:"source",source:"com.cbs.ott"},icon:"paramount"},{type:"button",name:"pia",tap_action:{action:"source",source:"com.privateinternetaccess.android"},icon:"pia"},{type:"button",name:"plex",tap_action:{action:"source",source:"com.plexapp.android"},icon:"mdi:plex"},{type:"button",name:"primevideo",tap_action:{action:"source",source:"com.amazon.firebat"},icon:"primevideo"},{type:"button",name:"skyshowtime",tap_action:{action:"source",source:"com.skyshowtime.skyshowtime.google"},icon:"showtime"},{type:"button",name:"spotify",tap_action:{action:"source",source:"com.spotify.tv.android"},icon:"mdi:spotify"},{type:"button",name:"steam",tap_action:{action:"source",source:"com.valvesoftware.steamlink"},icon:"mdi:steam"},{type:"button",name:"stremio",tap_action:{action:"source",source:"com.stremio.tv"},icon:"stremio"},{type:"button",name:"surfshark",tap_action:{action:"source",source:"com.surfshark.vpnclient.android"},icon:"surfshark"},{type:"button",name:"viaplay",tap_action:{action:"source",source:"com.viaplay.android"},icon:"viaplay"},{type:"button",name:"videoland",tap_action:{action:"source",source:"nl.rtl.videoland.v2.firetv"},icon:"videoland"},{type:"button",name:"vlc",tap_action:{action:"source",source:"org.videolan.vlc"},icon:"mdi:vlc"},{type:"button",name:"vudu",tap_action:{action:"source",source:"com.fandango.vudu.firetv"},icon:"vudu"},{type:"button",name:"waiputv",tap_action:{action:"source",source:"de.exaring.waipu.firetv.live"},icon:"waiputv"},{type:"button",name:"wow",tap_action:{action:"source",source:"de.sky.online"},icon:"wow"},{type:"button",name:"youtube",tap_action:{action:"source",source:"com.amazon.firetv.youtube"},icon:"mdi:youtube"},{type:"button",name:"youtubetv",tap_action:{action:"source",source:"com.amazon.firetv.tv"},icon:"mdi:youtube-tv"}],u=[{type:"button",name:"home",tap_action:{action:"key",key:"Input.Home"},icon:"mdi:home"},{type:"button",name:"back",tap_action:{action:"key",key:"Input.Back"},icon:"mdi:keyboard-backspace"},{type:"button",name:"menu",tap_action:{action:"key",key:"Input.ContextMenu"},icon:"mdi:menu"},{type:"button",name:"volume_up",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Application.SetVolume",volume:"increment"}},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Application.SetVolume",volume:"decrement"}},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Application.SetMute",mute:"toggle"}},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"Input.Up"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"Input.Down"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"Input.Left"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"Input.Right"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"Input.Select"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"Input.Select"},up:{tap_action:{action:"key",key:"Input.Up"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"Input.Down"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"Input.Left"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"Input.Right"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Player.PlayPause",playerid:1,play:!0}},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Player.PlayPause",playerid:1,play:!1}},icon:"mdi:pause"},{type:"button",name:"play_pause",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Player.PlayPause",playerid:1}},icon:"mdi:play-pause"},{type:"button",name:"music_play_pause",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Player.PlayPause",playerid:0}},icon:"mdi:music"},{type:"button",name:"picture_play_pause",tap_action:{action:"perform-action",perform_action:"kodi.call_method",data:{method:"Player.PlayPause",playerid:2}},icon:"mdi:image"},{type:"button",name:"keyboard",tap_action:{action:"keyboard"},icon:"mdi:keyboard"},{type:"button",name:"textbox",tap_action:{action:"textbox"},icon:"mdi:text-box"},{type:"button",name:"search",tap_action:{action:"search"},icon:"mdi:kodi"},{type:"button",name:"info",tap_action:{action:"key",key:"Input.Info"},icon:"mdi:information"},{type:"button",name:"codec",tap_action:{action:"key",key:"Input.ShowCodec"},icon:"mdi:information-box"},{type:"button",name:"osd",tap_action:{action:"key",key:"Input.ShowOSD"},icon:"mdi:television-guide"},{type:"button",name:"process_info",tap_action:{action:"key",key:"Input.ShowPlayerProcessInfo"},icon:"mdi:information-variant-circle"}],p=[],h=[{type:"button",name:"power",tap_action:{action:"key",key:"power"},icon:"mdi:power"},{type:"button",name:"home",tap_action:{action:"key",key:"home"},icon:"mdi:home"},{type:"button",name:"back",tap_action:{action:"key",key:"back"},icon:"mdi:keyboard-backspace"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"volume_up"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"volume_down"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"key",key:"volume_mute"},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"up"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"down"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"left"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"right"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"select"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"select"},up:{tap_action:{action:"key",key:"up"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"down"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"left"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"right"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"key",key:"play"},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"key",key:"play"},icon:"mdi:pause"},{type:"button",name:"play_pause",tap_action:{action:"key",key:"play"},icon:"mdi:play-pause"},{type:"button",name:"forward",tap_action:{action:"key",key:"forward"},icon:"mdi:fast-forward"},{type:"button",name:"reverse",tap_action:{action:"key",key:"reverse"},icon:"mdi:rewind"},{type:"button",name:"replay",tap_action:{action:"key",key:"replay"},icon:"mdi:replay"},{type:"button",name:"keyboard",tap_action:{action:"keyboard"},icon:"mdi:keyboard"},{type:"button",name:"textbox",tap_action:{action:"textbox"},icon:"mdi:text-box"},{type:"button",name:"search",tap_action:{action:"search"},icon:"mdi:search-web"},{type:"button",name:"delete",tap_action:{action:"key",key:"backspace"},hold_action:{action:"repeat"},icon:"mdi:backspace"},{type:"button",name:"enter",tap_action:{action:"key",key:"enter"},icon:"mdi:magnify"},{type:"button",name:"channel_up",tap_action:{action:"key",key:"channel_up"},icon:"mdi:arrow-up-circle"},{type:"button",name:"channel_down",tap_action:{action:"key",key:"channel_down"},icon:"mdi:arrow-down-circle"},{type:"button",name:"find_remote",tap_action:{action:"key",key:"find_remote"},icon:"mdi:remote-tv"},{type:"button",name:"info",tap_action:{action:"key",key:"info"},icon:"mdi:asterisk"},{type:"button",name:"input_av1",tap_action:{action:"key",key:"input_av1"},icon:"mdi:import"},{type:"button",name:"input_hdmi1",tap_action:{action:"key",key:"input_hdmi1"},icon:"mdi:video-input-hdmi"},{type:"button",name:"input_hdmi2",tap_action:{action:"key",key:"input_hdmi2"},icon:"mdi:video-input-hdmi"},{type:"button",name:"input_hdmi3",tap_action:{action:"key",key:"input_hdmi3"},icon:"mdi:video-input-hdmi"},{type:"button",name:"input_hdmi4",tap_action:{action:"key",key:"input_hdmi4"},icon:"mdi:video-input-hdmi"},{type:"button",name:"input_tuner",tap_action:{action:"key",key:"input_tuner"},icon:"mdi:video-input-antenna"},{type:"button",name:"literal",tap_action:{action:"key",key:"literal"},icon:"mdi:alphabetical"}],d=[{type:"button",name:"appletv",tap_action:{action:"source",source:"Apple TV"},icon:"appletv"},{type:"button",name:"crunchyroll",tap_action:{action:"source",source:"Crunchyroll"},icon:"crunchyroll"},{type:"button",name:"dazn",tap_action:{action:"source",source:"DAZN Live Sports Streaming"},icon:"dazn"},{type:"button",name:"discoveryplus",tap_action:{action:"source",source:"discovery+ | Stream TV Shows"},icon:"discovery"},{type:"button",name:"disney",tap_action:{action:"source",source:"Disney Plus"},icon:"disney"},{type:"button",name:"emby",tap_action:{action:"source",source:"Emby"},icon:"mdi:emby"},{type:"button",name:"f1tv",tap_action:{action:"source",source:"F1 TV"},icon:"f1tv"},{type:"button",name:"foxsports",tap_action:{action:"source",source:"FOX Sports"},icon:"foxsports"},{type:"button",name:"hulu",tap_action:{action:"source",source:"Hulu"},icon:"mdi:hulu"},{type:"button",name:"jellyfin",tap_action:{action:"source",source:"Jellyfin"},icon:"jellyfin"},{type:"button",name:"max",tap_action:{action:"source",source:"Max"},icon:"max"},{type:"button",name:"mlbtv",tap_action:{action:"source",source:"MLB"},icon:"mlbtv"},{type:"button",name:"nba",tap_action:{action:"source",source:"NBA"},icon:"nba"},{type:"button",name:"netflix",tap_action:{action:"source",source:"Netflix"},icon:"mdi:netflix"},{type:"button",name:"pandora",tap_action:{action:"source",source:"Pandora"},icon:"mdi:pandora"},{type:"button",name:"paramount",tap_action:{action:"source",source:"Paramount Plus"},icon:"paramount"},{type:"button",name:"plex",tap_action:{action:"source",source:"Plex - Free Movies & TV"},icon:"mdi:plex"},{type:"button",name:"primevideo",tap_action:{action:"source",source:"Prime Video"},icon:"primevideo"},{type:"button",name:"spotify",tap_action:{action:"source",source:"Spotify"},icon:"mdi:spotify"},{type:"button",name:"vudu",tap_action:{action:"source",source:"Fandango at Home"},icon:"vudu"},{type:"button",name:"youtube",tap_action:{action:"source",source:"YouTube"},icon:"mdi:youtube"},{type:"button",name:"youtubetv",tap_action:{action:"source",source:"YouTube TV"},icon:"mdi:youtube-tv"}],m=[{type:"button",name:"power",tap_action:{action:"key",key:"KEY_POWER"},icon:"mdi:power"},{type:"button",name:"power_on",tap_action:{action:"key",key:"KEY_POWERON"},icon:"mdi:power-on"},{type:"button",name:"power_off",tap_action:{action:"key",key:"KEY_POWEROFF"},icon:"mdi:power-off"},{type:"button",name:"home",tap_action:{action:"key",key:"KEY_HOME"},icon:"mdi:home"},{type:"button",name:"back",tap_action:{action:"key",key:"KEY_RETURN"},icon:"mdi:keyboard-backspace"},{type:"button",name:"menu",tap_action:{action:"key",key:"KEY_MENU"},icon:"mdi:menu"},{type:"button",name:"top_menu",tap_action:{action:"key",key:"KEY_TOPMENU"},icon:"mdi:backburger"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"KEY_VOLUP"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"KEY_VOLDOWN"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"key",key:"KEY_MUTE"},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"KEY_UP"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"KEY_DOWN"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"KEY_LEFT"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"KEY_RIGHT"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"KEY_ENTER"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"KEY_ENTER"},up:{tap_action:{action:"key",key:"KEY_UP"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"KEY_DOWN"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"KEY_LEFT"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"KEY_RIGHT"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"key",key:"KEY_PLAY"},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"key",key:"KEY_PAUSE"},icon:"mdi:pause"},{type:"button",name:"rewind",tap_action:{action:"key",key:"KEY_REWIND"},icon:"mdi:rewind"},{type:"button",name:"fast_forward",tap_action:{action:"key",key:"KEY_FF"},icon:"mdi:fast-forward"},{type:"button",name:"stop",tap_action:{action:"key",key:"KEY_STOP"},icon:"mdi:stop"},{type:"button",name:"record",tap_action:{action:"key",key:"KEY_REC"},icon:"mdi:record"},{type:"button",name:"channel_up",tap_action:{action:"key",key:"KEY_CHUP"},icon:"mdi:arrow-up-circle"},{type:"button",name:"channel_down",tap_action:{action:"key",key:"KEY_CHDOWN"},icon:"mdi:arrow-down-circle"},{type:"button",name:"channel_previous",tap_action:{action:"key",key:"KEY_PRECH"},icon:"mdi:arrow-left-circle"},{type:"button",name:"channel_favorites",tap_action:{action:"key",key:"KEY_FAVCH"},icon:"mdi:star-circle"},{type:"button",name:"channel_list",tap_action:{action:"key",key:"KEY_CH_LIST"},icon:"mdi:list-box"},{type:"button",name:"red",tap_action:{action:"key",key:"KEY_RED"},icon:"mdi:alpha-r-box"},{type:"button",name:"green",tap_action:{action:"key",key:"KEY_GREEN"},icon:"mdi:alpha-g-box"},{type:"button",name:"yellow",tap_action:{action:"key",key:"KEY_YELLOW"},icon:"mdi:alpha-y-box"},{type:"button",name:"blue",tap_action:{action:"key",key:"KEY_CYAN"},icon:"mdi:alpha-b-box"},{type:"button",name:"n0",tap_action:{action:"key",key:"KEY_0"},icon:"mdi:numeric-0"},{type:"button",name:"n1",tap_action:{action:"key",key:"KEY_1"},icon:"mdi:numeric-1"},{type:"button",name:"n2",tap_action:{action:"key",key:"KEY_2"},icon:"mdi:numeric-2"},{type:"button",name:"n3",tap_action:{action:"key",key:"KEY_3"},icon:"mdi:numeric-3"},{type:"button",name:"n4",tap_action:{action:"key",key:"KEY_4"},icon:"mdi:numeric-4"},{type:"button",name:"n5",tap_action:{action:"key",key:"KEY_5"},icon:"mdi:numeric-5"},{type:"button",name:"n6",tap_action:{action:"key",key:"KEY_6"},icon:"mdi:numeric-6"},{type:"button",name:"n7",tap_action:{action:"key",key:"KEY_7"},icon:"mdi:numeric-7"},{type:"button",name:"n8",tap_action:{action:"key",key:"KEY_8"},icon:"mdi:numeric-8"},{type:"button",name:"n9",tap_action:{action:"key",key:"KEY_9"},icon:"mdi:numeric-9"},{type:"button",name:"numpad",icon:"mdi:dialpad"},{type:"button",name:"info",tap_action:{action:"key",key:"KEY_INFO"},icon:"mdi:information"},{type:"button",name:"guide",tap_action:{action:"key",key:"KEY_GUIDE"},icon:"mdi:television-box"},{type:"button",name:"captions",tap_action:{action:"key",key:"KEY_CAPTION"},icon:"mdi:closed-caption"},{type:"button",name:"tools",tap_action:{action:"key",key:"KEY_TOOLS"},icon:"mdi:hammer-screwdriver"},{type:"button",name:"contents",tap_action:{action:"key",key:"KEY_CONTENTS"},icon:"mdi:table-of-contents"},{type:"button",name:"disc_menu",tap_action:{action:"key",key:"KEY_DISC_MENU"},icon:"mdi:dots-horizontal-circle"},{type:"button",name:"dvr_menu",tap_action:{action:"key",key:"KEY_DVR_MENU"},icon:"mdi:dots-vertical-circle"},{type:"button",name:"help",tap_action:{action:"key",key:"KEY_HELP"},icon:"mdi:help"},{type:"button",name:"live",tap_action:{action:"key",key:"KEY_LIVE"},icon:"mdi:debug-step-over"},{type:"button",name:"quick_replay",tap_action:{action:"key",key:"KEY_QUICK_REPLAY"},icon:"mdi:replay"},{type:"button",name:"still_picture",tap_action:{action:"key",key:"KEY_STILL_PICTURE"},icon:"mdi:image"},{type:"button",name:"instant_replay",tap_action:{action:"key",key:"KEY_INSTANT_REPLAY"},icon:"mdi:replay"},{type:"button",name:"source",tap_action:{action:"key",key:"KEY_SOURCE"},icon:"mdi:import"},{type:"button",name:"auto_program",tap_action:{action:"key",key:"KEY_AUTO_PROGRAM"},icon:"mdi:refresh-auto"},{type:"button",name:"channel_magic",tap_action:{action:"key",key:"KEY_MAGIC_CHANNEL"},icon:"mdi:auto-fix"},{type:"button",name:"component_1",tap_action:{action:"key",key:"KEY_COMPONENT1"},icon:"mdi:video-input-component"},{type:"button",name:"component_2",tap_action:{action:"key",key:"KEY_COMPONENT2"},icon:"mdi:video-input-component"},{type:"button",name:"av_1",tap_action:{action:"key",key:"KEY_AV1"},icon:"mdi:video-input-component"},{type:"button",name:"av_2",tap_action:{action:"key",key:"KEY_AV2"},icon:"mdi:video-input-component"},{type:"button",name:"av_2",tap_action:{action:"key",key:"KEY_AV2"},icon:"mdi:video-input-component"},{type:"button",name:"svideo_1",tap_action:{action:"key",key:"KEY_SVIDEO1"},icon:"mdi:video-input-svideo"},{type:"button",name:"svideo_2",tap_action:{action:"key",key:"KEY_SVIDEO2"},icon:"mdi:video-input-svideo"},{type:"button",name:"svideo_3",tap_action:{action:"key",key:"KEY_SVIDEO3"},icon:"mdi:video-input-svideo"},{type:"button",name:"hdmi",tap_action:{action:"key",key:"KEY_HDMI"},icon:"mdi:video-input-hdmi"},{type:"button",name:"fm_radio",tap_action:{action:"key",key:"KEY_FM_RADIO"},icon:"mdi:radio-fm"},{type:"button",name:"dvi",tap_action:{action:"key",key:"KEY_DVI"},icon:"mdi:serial-port"},{type:"button",name:"dvr",tap_action:{action:"key",key:"KEY_DVR"},icon:"mdi:record-rec"},{type:"button",name:"tv",tap_action:{action:"key",key:"KEY_TV"},icon:"mdi:television"},{type:"button",name:"antenna",tap_action:{action:"key",key:"KEY_ANTENA"},icon:"mdi:video-input-antenna"},{type:"button",name:"dtv",tap_action:{action:"key",key:"KEY_DTV"},icon:"mdi:alpha-d-box"},{type:"button",name:"ambient",tap_action:{action:"key",key:"KEY_AMBIENT"},icon:"mdi:television-ambient-light"},{type:"button",name:"3d",tap_action:{action:"key",key:"KEY_PANNEL_CHDOWN"},icon:"mdi:video-3d"},{type:"button",name:"anynet",tap_action:{action:"key",key:"KEY_ANYNET"},icon:"mdi:hdmi-port"},{type:"button",name:"energy_saving",tap_action:{action:"key",key:"KEY_ESAVING"},icon:"mdi:leaf"},{type:"button",name:"sleep_timer",tap_action:{action:"key",key:"KEY_SLEEP"},icon:"mdi:power-sleep"},{type:"button",name:"dtv_signal",tap_action:{action:"key",key:"KEY_DTV_SIGNAL"},icon:"mdi:alpha-d-circle"},{type:"button",name:"pip_toggle",tap_action:{action:"key",key:"KEY_PIP_ONOFF"},icon:"mdi:picture-in-picture-top-right"},{type:"button",name:"pip_swap",tap_action:{action:"key",key:"KEY_PIP_SWAP"},icon:"mdi:picture-in-picture-bottom-right-outline"},{type:"button",name:"pip_size",tap_action:{action:"key",key:"KEY_PIP_SIZE"},icon:"mdi:picture-in-picture-top-right-outline"},{type:"button",name:"pip_channel_up",tap_action:{action:"key",key:"KEY_PIP_CHUP"},icon:"mdi:arrow-up-circle-outline"},{type:"button",name:"pip_channel_down",tap_action:{action:"key",key:"KEY_PIP_CHDOWN"},icon:"mdi:arrow-down-circle-outline"},{type:"button",name:"pip_small",tap_action:{action:"key",key:"KEY_AUTO_ARC_PIP_SMALL"},icon:"mdi:image"},{type:"button",name:"pip_wide",tap_action:{action:"key",key:"KEY_AUTO_ARC_PIP_WIDE"},icon:"mdi:panorama"},{type:"button",name:"pip_bottom_right",tap_action:{action:"key",key:"KEY_AUTO_ARC_PIP_RIGHT_BOTTOM"},icon:"mdi:picture-in-picture-bottom-right"},{type:"button",name:"pip_scan",tap_action:{action:"key",key:"KEY_PIP_SCAN"},icon:"mdi:picture-in-picture-bottom-right-outline"},{type:"button",name:"vcr",tap_action:{action:"key",key:"KEY_VCR_MODE"},icon:"mdi:vhs"},{type:"button",name:"catv",tap_action:{action:"key",key:"KEY_CATV_MODE"},icon:"mdi:video-input-antenna"},{type:"button",name:"dss",tap_action:{action:"key",key:"KEY_DSS_MODE"},icon:"mdi:alpha-d-box"},{type:"button",name:"tv",tap_action:{action:"key",key:"KEY_TV_MODE"},icon:"mdi:television"},{type:"button",name:"dvd",tap_action:{action:"key",key:"KEY_DVD_MODE"},icon:"mdi:disc"},{type:"button",name:"stb",tap_action:{action:"key",key:"KEY_STB_MODE"},icon:"mdi:audio-video"},{type:"button",name:"pc",tap_action:{action:"key",key:"KEY_PCMODE"},icon:"mdi:desktop-tower"},{type:"button",name:"teletext_mix",tap_action:{action:"key",key:"KEY_TTX_MIX"},icon:"mdi:text"},{type:"button",name:"teletext_subface",tap_action:{action:"key",key:"KEY_"},icon:"mdi:text-box-outline"},{type:"button",name:"aspect_ratio",tap_action:{action:"key",key:"KEY_ASPECT"},icon:"mdi:aspect-ratio"},{type:"button",name:"picture_size",tap_action:{action:"key",key:"KEY_PICTURE_SIZE"},icon:"mdi:image-size-select-large"},{type:"button",name:"aspect_ratio_4_3",tap_action:{action:"key",key:"KEY_4_3"},icon:"mdi:image"},{type:"button",name:"aspect_ratio_16_9",tap_action:{action:"key",key:"KEY_16_9"},icon:"mdi:image-area"},{type:"button",name:"picture_mode",tap_action:{action:"key",key:"KEY_PMODE"},icon:"mdi:image-text"},{type:"button",name:"picture_mode_panorama",tap_action:{action:"key",key:"KEY_PANORAMA"},icon:"mdi:panorama-variant"},{type:"button",name:"picture_mode_dynamic",tap_action:{action:"key",key:"KEY_DYNAMIC"},icon:"mdi:image-auto-adjust"},{type:"button",name:"picture_mode_standard",tap_action:{action:"key",key:"KEY_STANDARD"},icon:"mdi:image"},{type:"button",name:"picture_mode_movie",tap_action:{action:"key",key:"KEY_MOVIE1"},icon:"mdi:movie"},{type:"button",name:"picture_mode_game",tap_action:{action:"key",key:"KEY_GAME"},icon:"mdi:controller"},{type:"button",name:"picture_mode_custom",tap_action:{action:"key",key:"KEY_CUSTOM"},icon:"mdi:image-plus"},{type:"button",name:"clock",tap_action:{action:"key",key:"KEY_CLOCK_DISPLAY"},icon:"mdi:clock"},{type:"button",name:"clock_timer_setup",tap_action:{action:"key",key:"KEY_SETUP_CLOCK_TIMER"},icon:"mdi:clock-alert"},{type:"button",name:"subtitle",tap_action:{action:"key",key:"KEY_SUB_TITLE"},icon:"mdi:subtitles"},{type:"button",name:"zoom_move",tap_action:{action:"key",key:"KEY_ZOOM_MOVE"},icon:"mdi:magnify-plus-cursor"},{type:"button",name:"zoom_in",tap_action:{action:"key",key:"KEY_ZOOM_IN"},icon:"mdi:magnify-plus"},{type:"button",name:"zoom_out",tap_action:{action:"key",key:"KEY_ZOOM_OUT"},icon:"mdi:magnify-minus"},{type:"button",name:"zoom_1",tap_action:{action:"key",key:"KEY_ZOOM1"},icon:"mdi:magnify-plus-outline"},{type:"button",name:"zoom_2",tap_action:{action:"key",key:"KEY_ZOOM2"},icon:"mdi:magnify-minus-outline"}],f=[{type:"button",name:"dazn",tap_action:{action:"source",source:"DAZN"},icon:"dazn"},{type:"button",name:"netflix",tap_action:{action:"source",source:"Netflix"},icon:"mdi:netflix"},{type:"button",name:"primevideo",tap_action:{action:"source",source:"Prime Video"},icon:"primevideo"},{type:"button",name:"youtube",tap_action:{action:"source",source:"YouTube"},icon:"mdi:youtube"}],y=[{type:"button",name:"home",tap_action:{action:"key",key:"HOME"},icon:"mdi:home"},{type:"button",name:"back",tap_action:{action:"key",key:"BACK"},icon:"mdi:keyboard-backspace"},{type:"button",name:"menu",tap_action:{action:"key",key:"MENU"},icon:"mdi:menu"},{type:"button",name:"dash",tap_action:{action:"key",key:"DASH"},icon:"mdi:view-dashboard-variant"},{type:"button",name:"exit",tap_action:{action:"key",key:"EXIT"},icon:"mdi:exit-to-app"},{type:"button",name:"volume_up",tap_action:{action:"key",key:"VOLUMEUP"},hold_action:{action:"repeat"},icon:"mdi:volume-high"},{type:"button",name:"volume_down",tap_action:{action:"key",key:"VOLUMEDOWN"},hold_action:{action:"repeat"},icon:"mdi:volume-medium"},{type:"button",name:"volume_mute",tap_action:{action:"key",key:"MUTE"},icon:"mdi:volume-low"},{type:"button",name:"volume_buttons",icon:"mdi:volume-plus"},{type:"slider",name:"slider",range:[0,1],step:.01,value_attribute:"volume_level",tap_action:{action:"perform-action",perform_action:"media_player.volume_set",data:{volume_level:"{{ value | float }}"}}},{type:"button",name:"up",tap_action:{action:"key",key:"UP"},hold_action:{action:"repeat"},icon:"mdi:chevron-up"},{type:"button",name:"down",tap_action:{action:"key",key:"DOWN"},hold_action:{action:"repeat"},icon:"mdi:chevron-down"},{type:"button",name:"left",tap_action:{action:"key",key:"LEFT"},hold_action:{action:"repeat"},icon:"mdi:chevron-left"},{type:"button",name:"right",tap_action:{action:"key",key:"RIGHT"},hold_action:{action:"repeat"},icon:"mdi:chevron-right"},{type:"button",name:"center",tap_action:{action:"key",key:"ENTER"},icon:"mdi:circle"},{type:"button",name:"navigation_buttons",icon:"mdi:gamepad"},{type:"button",name:"dpad",icon:"mdi:gamepad"},{type:"touchpad",name:"touchpad",tap_action:{action:"key",key:"ENTER"},up:{tap_action:{action:"key",key:"UP"},hold_action:{action:"repeat"}},down:{tap_action:{action:"key",key:"DOWN"},hold_action:{action:"repeat"}},left:{tap_action:{action:"key",key:"LEFT"},hold_action:{action:"repeat"}},right:{tap_action:{action:"key",key:"RIGHT"},hold_action:{action:"repeat"}}},{type:"button",name:"play",tap_action:{action:"key",key:"PLAY"},icon:"mdi:play"},{type:"button",name:"pause",tap_action:{action:"key",key:"PAUSE"},icon:"mdi:pause"},{type:"button",name:"channel_up",tap_action:{action:"key",key:"CHANNELUP"},icon:"mdi:arrow-up-circle"},{type:"button",name:"channel_down",tap_action:{action:"key",key:"CHANNELDOWN"},icon:"mdi:arrow-down-circle"},{type:"button",name:"red",tap_action:{action:"key",key:"RED"},icon:"mdi:alpha-r-box"},{type:"button",name:"green",tap_action:{action:"key",key:"GREEN"},icon:"mdi:alpha-g-box"},{type:"button",name:"yellow",tap_action:{action:"key",key:"YELLOW"},icon:"mdi:alpha-y-box"},{type:"button",name:"blue",tap_action:{action:"key",key:"BLUE"},icon:"mdi:alpha-b-box"},{type:"button",name:"n0",tap_action:{action:"key",key:"0"},icon:"mdi:numeric-0"},{type:"button",name:"n1",tap_action:{action:"key",key:"1"},icon:"mdi:numeric-1"},{type:"button",name:"n2",tap_action:{action:"key",key:"2"},icon:"mdi:numeric-2"},{type:"button",name:"n3",tap_action:{action:"key",key:"3"},icon:"mdi:numeric-3"},{type:"button",name:"n4",tap_action:{action:"key",key:"4"},icon:"mdi:numeric-4"},{type:"button",name:"n5",tap_action:{action:"key",key:"5"},icon:"mdi:numeric-5"},{type:"button",name:"n6",tap_action:{action:"key",key:"6"},icon:"mdi:numeric-6"},{type:"button",name:"n7",tap_action:{action:"key",key:"7"},icon:"mdi:numeric-7"},{type:"button",name:"n8",tap_action:{action:"key",key:"8"},icon:"mdi:numeric-8"},{type:"button",name:"n9",tap_action:{action:"key",key:"9"},icon:"mdi:numeric-9"},{type:"button",name:"numpad",icon:"mdi:dialpad"},{type:"button",name:"asterisk",tap_action:{action:"key",key:"ASTERISK"},icon:"mdi:asterisk"},{type:"button",name:"info",tap_action:{action:"key",key:"INFO"},icon:"mdi:information"},{type:"button",name:"guide",tap_action:{action:"key",key:"GUIDE"},icon:"mdi:television-box"},{type:"button",name:"captions",tap_action:{action:"key",key:"CC"},icon:"mdi:closed-caption"}],_=[{type:"button",name:"disney",tap_action:{action:"source",source:"Disney+"},icon:"disney"},{type:"button",name:"netflix",tap_action:{action:"key",key:"NETFLIX"},icon:"mdi:netflix"},{type:"button",name:"primevideo",tap_action:{action:"key",key:"AMAZON"},icon:"primevideo"},{type:"button",name:"rakutentv",tap_action:{action:"source",source:"Rakuten TV"},icon:"rakutentv"},{type:"button",name:"waiputv",tap_action:{action:"source",source:"waipu.tv"},icon:"waiputv"},{type:"button",name:"wow",tap_action:{action:"source",source:"WOW"},icon:"wow"},{type:"button",name:"youtube",tap_action:{action:"source",source:"YouTube"},icon:"youtube"}]},626:(t,e,i)=>{"use strict";function n(t){let e=[];for(const i in t)if("object"==typeof t[i]){const o=n(t[i]);e=e.concat(o.map((t=>i+"."+t)))}else e.push(i);return e}function o(t,e){const i=e.split(".");if(null!=t)return 1==i.length?t[i[0]]:o(t[i[0]],i.splice(1).join("."))}function a(t,e,i){const n=e.split(".");return 1==n.length?t[n[0]]=i:(n[0]in t&&"object"==typeof t[n[0]]||(/^-?\d+$/.test(n[1])?t[n[0]]=new Array(parseInt(n[1])):t[n[0]]={}),a(t[n[0]],n.splice(1).join("."),i)),t}function r(t,...e){function i(t){return t&&"object"==typeof t&&!Array.isArray(t)}if(!e.length)return t;const n=e.shift();if(i(t)&&i(n))for(const e in n)i(n[e])?(t[e]||Object.assign(t,{[e]:{}}),r(t[e],n[e])):Object.assign(t,{[e]:n[e]});return r(t,...e)}i.d(e,{vz:()=>o,HD:()=>a,b$:()=>n,XO:()=>c,D9:()=>r});var s=i(963);function c(t){let e,i;switch(t){case"LG webOS":e=s.CI,i=s.Mo;break;case"Samsung TV":e=s.ks,i=s.Qz;break;case"Kodi":e=s.np,i=s.rl;break;case"Roku":e=s.j0,i=s.$S;break;case"Apple TV":e=s.qz,i=s._6;break;case"Fire TV":e=s.iu,i=s.ci;break;default:e=s.$i,i=s.tz}return[structuredClone(e),structuredClone(i)]}},1:(t,e,i)=>{"use strict";i.d(e,{mN:()=>x,AH:()=>c,W3:()=>w,Ec:()=>E});const n=globalThis,o=n.ShadowRoot&&(void 0===n.ShadyCSS||n.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),r=new WeakMap;class s{constructor(t,e,i){if(this._$cssResult$=!0,i!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(o&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=r.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&r.set(e,t))}return t}toString(){return this.cssText}}const c=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new s(i,t,a)},l=(t,e)=>{if(o)t.adoptedStyleSheets=e.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of e){const e=document.createElement("style"),o=n.litNonce;void 0!==o&&e.setAttribute("nonce",o),e.textContent=i.cssText,t.appendChild(e)}},u=o?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new s("string"==typeof t?t:t+"",void 0,a))(e)})(t):t,{is:p,defineProperty:h,getOwnPropertyDescriptor:d,getOwnPropertyNames:m,getOwnPropertySymbols:f,getPrototypeOf:y}=Object,_=globalThis,b=_.trustedTypes,v=b?b.emptyScript:"",g=_.reactiveElementPolyfillSupport,k=(t,e)=>t,w={toAttribute(t,e){switch(e){case Boolean:t=t?v:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},E=(t,e)=>!p(t,e),C={attribute:!0,type:String,converter:w,reflect:!1,hasChanged:E};Symbol.metadata??=Symbol("metadata"),_.litPropertyMetadata??=new WeakMap;class x extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=C){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){const i=Symbol(),n=this.getPropertyDescriptor(t,i,e);void 0!==n&&h(this.prototype,t,n)}}static getPropertyDescriptor(t,e,i){const{get:n,set:o}=d(this.prototype,t)??{get(){return this[e]},set(t){this[e]=t}};return{get(){return n?.call(this)},set(e){const a=n?.call(this);o.call(this,e),this.requestUpdate(t,a,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??C}static _$Ei(){if(this.hasOwnProperty(k("elementProperties")))return;const t=y(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(k("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(k("properties"))){const t=this.properties,e=[...m(t),...f(t)];for(const i of e)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const e=litPropertyMetadata.get(t);if(void 0!==e)for(const[t,i]of e)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,e]of this.elementProperties){const i=this._$Eu(t,e);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(u(t))}else void 0!==t&&e.push(u(t));return e}static _$Eu(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$Eg=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$ES(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$E_??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$E_?.delete(t)}_$ES(){const t=new Map,e=this.constructor.elementProperties;for(const i of e.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return l(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$E_?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$E_?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e){const i=this.constructor.elementProperties.get(t),n=this.constructor._$Eu(t,i);if(void 0!==n&&!0===i.reflect){const o=(void 0!==i.converter?.toAttribute?i.converter:w).toAttribute(e,i.type);this._$Em=t,null==o?this.removeAttribute(n):this.setAttribute(n,o),this._$Em=null}}_$AK(t,e){const i=this.constructor,n=i._$Eh.get(t);if(void 0!==n&&this._$Em!==n){const t=i.getPropertyOptions(n),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:w;this._$Em=n,this[n]=o.fromAttribute(e,t.type),this._$Em=null}}requestUpdate(t,e,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??E)(this[t],e))return;this.C(t,e,i)}!1===this.isUpdatePending&&(this._$Eg=this._$EP())}C(t,e,i){this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$Em!==t&&(this._$ET??=new Set).add(t)}async _$EP(){this.isUpdatePending=!0;try{await this._$Eg}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,e]of this._$Ep)this[t]=e;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[e,i]of t)!0!==i.wrapped||this._$AL.has(e)||void 0===this[e]||this.C(e,this[e],i)}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),this._$E_?.forEach((t=>t.hostUpdate?.())),this.update(e)):this._$Ej()}catch(e){throw t=!1,this._$Ej(),e}t&&this._$AE(e)}willUpdate(t){}_$AE(t){this._$E_?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ej(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$Eg}shouldUpdate(t){return!0}update(t){this._$ET&&=this._$ET.forEach((t=>this._$EO(t,this[t]))),this._$Ej()}updated(t){}firstUpdated(t){}}x.elementStyles=[],x.shadowRootOptions={mode:"open"},x[k("elementProperties")]=new Map,x[k("finalized")]=new Map,g?.({ReactiveElement:x}),(_.reactiveElementVersions??=[]).push("2.0.3")},703:(t,e,i)=>{"use strict";i.d(e,{o:()=>Mi,X:()=>Ii});var n=i(894);function o(t,e){try{if(e){if(t.entities[e]){if(t.entities[e].area_id)return t.entities[e].area_id;e=t.entities[e].device_id??e}if(t.devices[e])return t.devices[e].area_id;for(const i in t.areas)if(t.areas[i].name==e)return i}return}catch{return}}function a(t,e){try{if(e){let i=e;if(t.entities[e]&&(i=t.entities[e].area_id??i,e=t.entities[e].device_id??e),t.devices[e]&&(i=t.devices[e].area_id??i),t.areas[i])return t.areas[i].name}return}catch{return}}function r(t,e){try{const i=[];if(e){const n=s(t,e);for(const e of n)for(const n in t.entities)t.entities[n].device_id==e&&i.push(n);i.sort()}return i}catch{return[]}}function s(t,e){try{const i=[];if(e){if(!(e in t.areas))for(const i in t.areas)if(t.areas[i].name==e){e=i;break}for(const n in t.devices)t.devices[n].area_id==e&&i.push(n);i.sort()}return i}catch{return[]}}function c(t,e){return!!Array.isArray(t)&&t?.includes(e)}function l(t,e,i,n){"object"!=typeof i||Array.isArray(i)||(n=i.with_unit??n,i=i.rounded??void 0);try{const o=t.states[e];let a=o?.state;if(n&&null==i&&(i=!0),i&&!isNaN(o?.state)){const i=t.entities[e]?.display_precision??0;a=Number(a).toPrecision(i)}return n&&o?.attributes?.unit_of_measurement&&(a=`${a} ${o?.attributes?.unit_of_measurement}`),a}catch{return}}function u(t,e,i){try{return t.states[e].attributes[i]}catch{return}}function p(t,e){try{const i=l(t,e);return!![!1,0,-0,""].includes(i)||Boolean(i)}catch{return!1}}function h(t){const e={};for(const i in t.states){const[n,o]=i.split(".");e[n]=e[n]??{},e[n][o]=t.states[i]}return e}function d(t,e){try{const i=[];if(e)for(const n in t.entities)t.entities[n].device_id==e&&i.push(n);return i}catch{return[]}}function m(t,e,i){try{return t.devices[e]?.[i]??u(t,e,i)}catch{return}}function f(t,e){try{if(e){if(t.entities[e])return t.entities[e].device_id;for(const i in t.devices){const n=t.devices[i];if(n.name==e||n.name_by_user==e)return i}}return}catch{return}}function y(t,e,i=!1){if(t[0]==e[0]&&t[1]==e[1])return 0;const n=1/298.257223563,o=6356752.314245,a=Math.atan((1-n)*Math.tan(t[0]*Math.PI/180)),r=Math.atan((1-n)*Math.tan(e[0]*Math.PI/180));let s=(e[1]-t[1])*Math.PI/180,c=s;const l=Math.sin(a),u=Math.cos(a),p=Math.sin(r),h=Math.cos(r);let d=0,m=0,f=0,y=0,_=0;for(let t=0;t<200;t++){const e=Math.sin(c),i=Math.cos(c);if(m=Math.sqrt((h*e)**2+(u*p-l*h*i)**2),0==m)return 0;y=l*p+u*h*i,_=Math.atan2(m,y);const o=u*h*e/m;d=1-o**2,f=0!=d?y-2*l*p/d:0;const a=n/16*d*(4+n*(4-3*d)),r=c;if(c=s+(1-a)*n*o*(_+a*m*(f+a*y*(2*f**2-1))),Math.abs(c-r)<1e-12)break;if(199==t)return null}const b=272331606109.84375*d/o**2,v=b/1024*(256+b*(b*(74-47*b)-128));let g=o*(1+b/16384*(4096+b*(b*(320-175*b)-768)))*(_-v*m*(f+v/4*(y*(2*f**2-1)-v/6*f*(4*m**2-3)*(4*f**2-3))))/1e3;return i&&(g*=.621371),g}function _(t,...e){function i(e){if(e.startsWith("zone."))return t.states[e].attributes.persons??[];let i=Object.keys(t.states).filter((t=>t==e||t.split(".")[0]==e));if("zone"==e){let e=[];for(const n of i)e.push(...t.states[n].attributes.persons??[]);i=Array.from(new Set(e))}return i}let n,o;if(1==e.length)n=[t.states["zone.home"].attributes.latitude,t.states["zone.home"].attributes.longitude],o=0;else if("number"==typeof e[0]){if("number"!=typeof e[1]||2==e.length)return null;n=[e[0],e[1]],o=2}else if("object"==typeof e[0]){if(Array.isArray(e[0])||!e[0].attributes)return null;n=[e[0].attributes.latitude,e[0].attributes.longitude],o=1}else{if("string"!=typeof e[0])return null;n=[t.states[e[0]].attributes.latitude,t.states[e[0]].attributes.longitude],o=1}let a=[];for(let t=o;te[t][i].entity_id));else for(const o of i)n.push(...Object.keys(e[t][o]).map((i=>e[t][o][i].entity_id)))}for(const t of n)a.push(...i(t))}else"string"==typeof e[t]&&a.push(...i(e[t]));a=Array.from(new Set(a));let r=null,s=1/0;for(const e of a){let i;i="string"==typeof e?t.states[e]:e;const o=i.attributes.latitude,a=i.attributes.longitude;if(null!=o&&null!=a){const t=y(n,[o,a])??1/0;t<=s&&(r=i,s=t)}}return r}function b(t,e){try{let i=e;if(t.entities[e]&&(i=t.entities[e].area_id??i,e=t.entities[e].device_id??e),e){if(t.devices[e]&&(i=t.devices[e].area_id??i),t.areas[i])return t.areas[i].floor_id;for(const i in t.areas)if(t.areas[i].name==e)return t.areas[i].floor_id}return}catch{return}}function v(t,e){if(t.floors[e])return t.floors[e].name;const i=b(t,e);return i?t.floors[i].name:void 0}function g(t,e){try{const i=[];if(e){let n;if(t.floors[e])n=e;else for(const i in t.floors)if(t.floors[i].name==e){n=i;break}if(!n)return[];for(const e in t.areas)t.areas[e].floor_id==n&&i.push(e)}return i}catch{return[]}}function k(t,...e){const i=[];for(let n of e.flat(1/0))if("string"==typeof n&&(n=t.states[n]),n)if(Array.isArray(n.attributes?.entity_id))i.push(...k(t,...n.attributes?.entity_id));else if(n?.attributes?.persons)i.push(...k(t,...n.attributes.persons));else if(n.entity_id)i.push(n);else{const e=Object.values(n);if(e[0]?.entity_id)i.push(...e);else for(const n of e){const e=Object.values(n);for(const n of e)n?.attributes?.persons?i.push(...k(t,...n.attributes.persons)):i.push(n)}}return i.filter(((t,e,i)=>e==i.findIndex((e=>e.entity_id==t.entity_id)))).sort(((t,e)=>t.entity_id.localeCompare(e.entity_id)))}function w(t,e,i,n,o){if("object"!=typeof i||Array.isArray(i)||(o=i.if_none??o,n=i.if_false??n,i=i.if_true??void 0),o){const i=Ii(t,e);if([void 0,null,"undefined","null","None"].includes(i))return o}return Ii(t,`\n\t\t{% if ${e} %}\n\t\t${i??!0}\n\t\t{% else %}\n\t\t${n??!1}\n\t\t{% endif %}\n\t`)}const E={};function C(t,e){try{return e?t.entities[e]?.labels??t.devices[e]?.labels??t.areas[e]?.labels??[]:Object.keys(E)}catch{return[]}}function x(t){for(const e in E)if(E[e].name==t)return e}function L(t){return E[t]?.name}function T(t,e){try{const i=[];let n;if(e){if(n=E[e]?e:x(e),!n)return[];for(const e in t.areas)(t.areas[e].labels??[]).includes(n)&&i.push(e);i.sort()}return i}catch{return[]}}function A(t,e){try{const i=[];if(e){let n;if(n=E[e]?e:x(e),!n)return[];for(const e in t.devices)(t.devices[e].labels??[]).includes(n)&&i.push(e);i.sort()}return i}catch{return[]}}function S(t,e){try{const i=[];if(e){let n;if(n=E[e]?e:x(e),!n)return[];for(const e in t.entities)(t.entities[e].labels??[]).includes(n)&&i.push(e);i.sort()}return i}catch{return[]}}function O(t){return t.toString()}function M(t){if(t.toString().includes("NaN"))throw Error("Result returned NaN.")}function $(t){return t!=1/0&&!isNaN(t)}function I(t,e){if("number"==typeof t)return 0!=t;if("boolean"==typeof t)return t;if(t=t.toLowerCase(),["true","yes","on","enable","1"].includes(t))return!0;if(["false","no","off","disable","0"].includes(t))return!1;if(e)return e;throw Error("Invalid input")}function D(t,e=Math.E,i){try{const i=Math.log(t)/Math.log(e);return M(i.toString()),i}catch(t){if(i)return i;throw t}}function N(t,e){try{const e=Math.sin(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function P(t,e){try{const e=Math.cos(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function R(t,e){try{const e=Math.tan(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function F(t,e){try{const e=Math.asin(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function j(t,e){try{const e=Math.acos(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function U(t,e){try{const e=Math.atan(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function K(t,e,i){try{const i=Math.atan2(t,e);return M(i.toString()),i}catch(t){if(i)return i;throw t}}function H(t,e){try{const e=Math.sqrt(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}}function B(...t){return Math.max(...t.flat(1/0))}function V(...t){return Math.min(...t.flat(1/0))}function Y(t,e){try{if((t=t.flat(1/0)).some((t=>isNaN(t))))throw Error("Non-numeric values provided");return t.reduce(((t,e)=>t+e))/t.length}catch(t){if(e)return e;throw t}}function Z(t,e){try{if((t=t.flat(1/0)).some((t=>isNaN(t))))throw Error("Non-numeric values provided");if(!t.length)throw Error("Empty array provided");t=t.sort(((t,e)=>t-e));const e=Math.floor(t.length/2);return t.length%2?t[e]:(t[e-1]+t[e])/2}catch(t){if(e)return e;throw t}}function z(t,e){try{if((t=t.flat(1/0)).some((t=>isNaN(t))))throw Error("Non-numeric values provided");if(!t.length)throw Error("Empty array provided");const e={};for(const i of t)e[i]||(e[i]=0),e[i]++;let i=t[0],n=0;for(const t in e)e[t]>n&&(i=Number(t),n=e[t]);return i}catch(t){if(e)return e;throw t}}const q=Math.E,W=Math.PI,G=2*Math.PI;function X(t,e,i){try{return t.formatEntityState(t.states[e],i)}catch{return i??t.states[e]?.state??void 0}}function J(t,e,i){try{return t.formatEntityAttributeName(t.states[e],i)}catch{return i??t.states[e]?.attributes?.[i]??void 0}}function Q(t,e,i,n){try{return t.formatEntityAttributeValue(t.states[e],i,n)}catch{return n??t.states[e]?.attributes?.[i]??void 0}}const tt=new Date,et=new Date;function it(t,e,i,n){function o(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return o.floor=e=>(t(e=new Date(+e)),e),o.ceil=i=>(t(i=new Date(i-1)),e(i,1),t(i),i),o.round=t=>{const e=o(t),i=o.ceil(t);return t-e(e(t=new Date(+t),null==i?1:Math.floor(i)),t),o.range=(i,n,a)=>{const r=[];if(i=o.ceil(i),a=null==a?1:Math.floor(a),!(i0))return r;let s;do{r.push(s=new Date(+i)),e(i,a),t(i)}while(sit((e=>{if(e>=e)for(;t(e),!i(e);)e.setTime(e-1)}),((t,n)=>{if(t>=t)if(n<0)for(;++n<=0;)for(;e(t,-1),!i(t););else for(;--n>=0;)for(;e(t,1),!i(t););})),i&&(o.count=(e,n)=>(tt.setTime(+e),et.setTime(+n),t(tt),t(et),Math.floor(i(tt,et))),o.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?o.filter(n?e=>n(e)%t==0:e=>o.count(0,e)%t==0):o:null)),o}const nt=864e5,ot=6048e5;function at(t){return it((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/ot))}const rt=at(0),st=at(1),ct=at(2),lt=at(3),ut=at(4),pt=at(5),ht=at(6);function dt(t){return it((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/ot))}rt.range,st.range,ct.range,lt.range,ut.range,pt.range,ht.range;const mt=dt(0),ft=dt(1),yt=dt(2),_t=dt(3),bt=dt(4),vt=dt(5),gt=dt(6),kt=(mt.range,ft.range,yt.range,_t.range,bt.range,vt.range,gt.range,it((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-6e4*(e.getTimezoneOffset()-t.getTimezoneOffset()))/nt),(t=>t.getDate()-1))),wt=(kt.range,it((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/nt),(t=>t.getUTCDate()-1))),Et=(wt.range,it((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/nt),(t=>Math.floor(t/nt)))),Ct=(Et.range,it((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));Ct.every=t=>isFinite(t=Math.floor(t))&&t>0?it((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,i)=>{e.setFullYear(e.getFullYear()+i*t)})):null,Ct.range;const xt=it((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));function Lt(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function Tt(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function At(t,e,i){return{y:t,m:e,d:i,H:0,M:0,S:0,L:0}}xt.every=t=>isFinite(t=Math.floor(t))&&t>0?it((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,i)=>{e.setUTCFullYear(e.getUTCFullYear()+i*t)})):null,xt.range;var St,Ot,Mt,$t,It,Dt={"-":"",_:" ",0:"0"},Nt=/^\s*\d+/,Pt=/^%/,Rt=/[\\^$*+?|[\]().{}]/g;function Ft(t,e,i){var n=t<0?"-":"",o=(n?-t:t)+"",a=o.length;return n+(a[t.toLowerCase(),e])))}function Ht(t,e,i){var n=Nt.exec(e.slice(i,i+1));return n?(t.w=+n[0],i+n[0].length):-1}function Bt(t,e,i){var n=Nt.exec(e.slice(i,i+1));return n?(t.u=+n[0],i+n[0].length):-1}function Vt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.U=+n[0],i+n[0].length):-1}function Yt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.V=+n[0],i+n[0].length):-1}function Zt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.W=+n[0],i+n[0].length):-1}function zt(t,e,i){var n=Nt.exec(e.slice(i,i+4));return n?(t.y=+n[0],i+n[0].length):-1}function qt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),i+n[0].length):-1}function Wt(t,e,i){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(i,i+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),i+n[0].length):-1}function Gt(t,e,i){var n=Nt.exec(e.slice(i,i+1));return n?(t.q=3*n[0]-3,i+n[0].length):-1}function Xt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.m=n[0]-1,i+n[0].length):-1}function Jt(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.d=+n[0],i+n[0].length):-1}function Qt(t,e,i){var n=Nt.exec(e.slice(i,i+3));return n?(t.m=0,t.d=+n[0],i+n[0].length):-1}function te(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.H=+n[0],i+n[0].length):-1}function ee(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.M=+n[0],i+n[0].length):-1}function ie(t,e,i){var n=Nt.exec(e.slice(i,i+2));return n?(t.S=+n[0],i+n[0].length):-1}function ne(t,e,i){var n=Nt.exec(e.slice(i,i+3));return n?(t.L=+n[0],i+n[0].length):-1}function oe(t,e,i){var n=Nt.exec(e.slice(i,i+6));return n?(t.L=Math.floor(n[0]/1e3),i+n[0].length):-1}function ae(t,e,i){var n=Pt.exec(e.slice(i,i+1));return n?i+n[0].length:-1}function re(t,e,i){var n=Nt.exec(e.slice(i));return n?(t.Q=+n[0],i+n[0].length):-1}function se(t,e,i){var n=Nt.exec(e.slice(i));return n?(t.s=+n[0],i+n[0].length):-1}function ce(t,e){return Ft(t.getDate(),e,2)}function le(t,e){return Ft(t.getHours(),e,2)}function ue(t,e){return Ft(t.getHours()%12||12,e,2)}function pe(t,e){return Ft(1+kt.count(Ct(t),t),e,3)}function he(t,e){return Ft(t.getMilliseconds(),e,3)}function de(t,e){return he(t,e)+"000"}function me(t,e){return Ft(t.getMonth()+1,e,2)}function fe(t,e){return Ft(t.getMinutes(),e,2)}function ye(t,e){return Ft(t.getSeconds(),e,2)}function _e(t){var e=t.getDay();return 0===e?7:e}function be(t,e){return Ft(rt.count(Ct(t)-1,t),e,2)}function ve(t){var e=t.getDay();return e>=4||0===e?ut(t):ut.ceil(t)}function ge(t,e){return t=ve(t),Ft(ut.count(Ct(t),t)+(4===Ct(t).getDay()),e,2)}function ke(t){return t.getDay()}function we(t,e){return Ft(st.count(Ct(t)-1,t),e,2)}function Ee(t,e){return Ft(t.getFullYear()%100,e,2)}function Ce(t,e){return Ft((t=ve(t)).getFullYear()%100,e,2)}function xe(t,e){return Ft(t.getFullYear()%1e4,e,4)}function Le(t,e){var i=t.getDay();return Ft((t=i>=4||0===i?ut(t):ut.ceil(t)).getFullYear()%1e4,e,4)}function Te(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ft(e/60|0,"0",2)+Ft(e%60,"0",2)}function Ae(t,e){return Ft(t.getUTCDate(),e,2)}function Se(t,e){return Ft(t.getUTCHours(),e,2)}function Oe(t,e){return Ft(t.getUTCHours()%12||12,e,2)}function Me(t,e){return Ft(1+wt.count(xt(t),t),e,3)}function $e(t,e){return Ft(t.getUTCMilliseconds(),e,3)}function Ie(t,e){return $e(t,e)+"000"}function De(t,e){return Ft(t.getUTCMonth()+1,e,2)}function Ne(t,e){return Ft(t.getUTCMinutes(),e,2)}function Pe(t,e){return Ft(t.getUTCSeconds(),e,2)}function Re(t){var e=t.getUTCDay();return 0===e?7:e}function Fe(t,e){return Ft(mt.count(xt(t)-1,t),e,2)}function je(t){var e=t.getUTCDay();return e>=4||0===e?bt(t):bt.ceil(t)}function Ue(t,e){return t=je(t),Ft(bt.count(xt(t),t)+(4===xt(t).getUTCDay()),e,2)}function Ke(t){return t.getUTCDay()}function He(t,e){return Ft(ft.count(xt(t)-1,t),e,2)}function Be(t,e){return Ft(t.getUTCFullYear()%100,e,2)}function Ve(t,e){return Ft((t=je(t)).getUTCFullYear()%100,e,2)}function Ye(t,e){return Ft(t.getUTCFullYear()%1e4,e,4)}function Ze(t,e){var i=t.getUTCDay();return Ft((t=i>=4||0===i?bt(t):bt.ceil(t)).getUTCFullYear()%1e4,e,4)}function ze(){return"+0000"}function qe(){return"%"}function We(t){return+t}function Ge(t){return Math.floor(+t/1e3)}St=function(t){var e=t.dateTime,i=t.date,n=t.time,o=t.periods,a=t.days,r=t.shortDays,s=t.months,c=t.shortMonths,l=Ut(o),u=Kt(o),p=Ut(a),h=Kt(a),d=Ut(r),m=Kt(r),f=Ut(s),y=Kt(s),_=Ut(c),b=Kt(c),v={a:function(t){return r[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:null,d:ce,e:ce,f:de,g:Ce,G:Le,H:le,I:ue,j:pe,L:he,m:me,M:fe,p:function(t){return o[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:We,s:Ge,S:ye,u:_e,U:be,V:ge,w:ke,W:we,x:null,X:null,y:Ee,Y:xe,Z:Te,"%":qe},g={a:function(t){return r[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:Ae,e:Ae,f:Ie,g:Ve,G:Ze,H:Se,I:Oe,j:Me,L:$e,m:De,M:Ne,p:function(t){return o[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:We,s:Ge,S:Pe,u:Re,U:Fe,V:Ue,w:Ke,W:He,x:null,X:null,y:Be,Y:Ye,Z:ze,"%":qe},k={a:function(t,e,i){var n=d.exec(e.slice(i));return n?(t.w=m.get(n[0].toLowerCase()),i+n[0].length):-1},A:function(t,e,i){var n=p.exec(e.slice(i));return n?(t.w=h.get(n[0].toLowerCase()),i+n[0].length):-1},b:function(t,e,i){var n=_.exec(e.slice(i));return n?(t.m=b.get(n[0].toLowerCase()),i+n[0].length):-1},B:function(t,e,i){var n=f.exec(e.slice(i));return n?(t.m=y.get(n[0].toLowerCase()),i+n[0].length):-1},c:function(t,i,n){return C(t,e,i,n)},d:Jt,e:Jt,f:oe,g:qt,G:zt,H:te,I:te,j:Qt,L:ne,m:Xt,M:ee,p:function(t,e,i){var n=l.exec(e.slice(i));return n?(t.p=u.get(n[0].toLowerCase()),i+n[0].length):-1},q:Gt,Q:re,s:se,S:ie,u:Bt,U:Vt,V:Yt,w:Ht,W:Zt,x:function(t,e,n){return C(t,i,e,n)},X:function(t,e,i){return C(t,n,e,i)},y:qt,Y:zt,Z:Wt,"%":ae};function w(t,e){return function(i){var n,o,a,r=[],s=-1,c=0,l=t.length;for(i instanceof Date||(i=new Date(+i));++s53)return null;"w"in a||(a.w=1),"Z"in a?(o=(n=Tt(At(a.y,0,1))).getUTCDay(),n=o>4||0===o?ft.ceil(n):ft(n),n=wt.offset(n,7*(a.V-1)),a.y=n.getUTCFullYear(),a.m=n.getUTCMonth(),a.d=n.getUTCDate()+(a.w+6)%7):(o=(n=Lt(At(a.y,0,1))).getDay(),n=o>4||0===o?st.ceil(n):st(n),n=kt.offset(n,7*(a.V-1)),a.y=n.getFullYear(),a.m=n.getMonth(),a.d=n.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),o="Z"in a?Tt(At(a.y,0,1)).getUTCDay():Lt(At(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(o+5)%7:a.w+7*a.U-(o+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,Tt(a)):Lt(a)}}function C(t,e,i,n){for(var o,a,r=0,s=e.length,c=i.length;r=c)return-1;if(37===(o=e.charCodeAt(r++))){if(o=e.charAt(r++),!(a=k[o in Dt?e.charAt(r++):o])||(n=a(t,i,n))<0)return-1}else if(o!=i.charCodeAt(n++))return-1}return n}return v.x=w(i,v),v.X=w(n,v),v.c=w(e,v),g.x=w(i,g),g.X=w(n,g),g.c=w(e,g),{format:function(t){var e=w(t+="",v);return e.toString=function(){return t},e},parse:function(t){var e=E(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",g);return e.toString=function(){return t},e},utcParse:function(t){var e=E(t+="",!0);return e.toString=function(){return t},e}}}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),Ot=St.format,Mt=St.parse,$t=St.utcFormat,It=St.utcParse;var Xe="%Y-%m-%dT%H:%M:%S.%LZ";Date.prototype.toISOString||$t(Xe);var Je=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:It(Xe);const Qe=Je,ti=["weeks","days","hours","minutes","seconds","milliseconds"],ei={weeks:604800,days:86400,hours:3600,minutes:60,seconds:1,milliseconds:.001};function ii(t){return"object"==typeof t&&!Array.isArray(t)}class ni{constructor(t=0,e=0,i=0,n=0,o=0,a=0){this.days=0,this.seconds=0,this.milliseconds=0;let r={days:t,seconds:e,milliseconds:i,minutes:n,hours:o,weeks:a};ii(t)&&(delete r.days,Object.assign(r,t));let s=0;if(ti.forEach((t=>{s+=(r[t]??0)*ei[t]})),sthis.maxSeconds)throw RangeError("value out of range, must have magnitude less than 999999999 days");if(s.toString().includes(".")){const t=s.toString();this.milliseconds=Math.trunc(parseFloat(`0.${t.split(".")[1]}`)/ei.milliseconds),t.startsWith("-")&&(this.milliseconds*=-1),s=Math.trunc(s)}this.days=Math.trunc(s/ei.days),this.days=this.days||0,this.seconds=s-this.days*ei.days,this.seconds=this.seconds||0}total_seconds(){return this.days*ei.days+this.seconds+this.milliseconds*ei.milliseconds}valueOf(){return this.total_seconds()}toString(){return`${0!=this.days?`${this.days} day${Math.abs(this.days)>1?"s,":","}`:""} ${$t("%-H:%M:%S"+(this.milliseconds?".%f":""))(new Date(1e3*this.valueOf()))}`.trim()}static get min(){return new ni(-1e8)}get minSeconds(){return-864e10}static get max(){return new ni(1e8)}get maxSeconds(){return 864e10}static get resolution(){return new ni({milliseconds:1})}}class oi{constructor(t=0,e=0,i=0,n=0){this.hour=0,this.minute=0,this.second=0,this.millisecond=0;let o={hour:t,minute:e,second:i,millisecond:n};ii(t)&&(delete o.hour,Object.assign(o,t));for(const t in o)if(!Number.isInteger(o[t]))throw TypeError("'float' object cannot be interpreted as an integer");if((o.hour??0)<0||(o.hour??0)>23)throw RangeError("hour must be in 0..23");if((o.minute??0)<0||(o.minute??0)>59)throw RangeError("minute must be in 0..59");if((o.second??0)<0||(o.second??0)>59)throw RangeError("second must be in 0..59");if((o.millisecond??0)<0||(o.millisecond??0)>999)throw RangeError("millisecond must be in 0..999");Object.assign(this,o)}replace(t=this.hour,e=this.minute,i=this.second,n=this.millisecond){let o={hour:t,minute:e,second:i,millisecond:n};return ii(t)&&(delete o.hour,Object.assign(o,t)),new oi(o.hour??this.hour,o.minute??this.minute,o.second??this.second,o.millisecond??this.millisecond)}isoformat(t="auto"){let e;switch(t){case"hours":e="%H";break;case"minutes":e="%H:%M";break;case"seconds":e="%H:%M:%S";break;case"milliseconds":e="%H:%M:%S.%f";break;default:e="%H:%M:%S"+(this.millisecond?".%f":"")}return this.strftime(e)}valueOf(){return this.hour*ei.hours+this.minute*ei.minutes+this.second*ei.seconds+this.millisecond*ei.milliseconds}toString(){return this.isoformat()}strftime(t){return $t(t)(this.jsDate)}get jsDate(){return new Date(1e3*this.valueOf())}static get min(){return new oi(0,0,0,0)}static get max(){return new oi(23,59,59,999)}static get resolution(){return ni.resolution}static fromisoformat(t){const e=Qe(`1970-01-01T${t}`);if(e)return new oi(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());throw SyntaxError("Unable to parse date string")}}const ai=100,ri=9999,si=36160,ci=3652059,li=["year","month","day","hour","minute","second","millisecond"];class ui{constructor(t,e,i,n=0,o=0,a=0,r=0,s=!1){this.year=1970,this.month=1,this.day=1,this.hour=0,this.minute=0,this.second=0,this.millisecond=0,this.utc=!1;const c={year:t,month:e,day:i,hour:n,minute:o,second:a,millisecond:r,utc:s};if(ii(t)&&(delete c.year,Object.assign(c,t)),!c.year||!c.month||!c.day)throw SyntaxError("Missing required argument year, month, or day");for(const t in c)if(li.includes(t)&&!Number.isInteger(c[t]))throw TypeError(`Argument ${t} value ${c[t]} is not an integer`);if(c.yearri)throw RangeError(`year ${c.year} is out of range`);if(c.month<1||c.month>12)throw RangeError(`month ${c.month} is out of range`);if(c.day<1||c.day>new Date(c.year,c.month,0).getDate())throw RangeError(`day ${i} is out of range for month`);if((c.hour??0)<0||(c.hour??0)>23)throw RangeError("hour must be in 0..23");if((c.minute??0)<0||(c.minute??0)>59)throw RangeError("minute must be in 0..59");if((c.second??0)<0||(c.second??0)>59)throw RangeError("second must be in 0..59");if((c.millisecond??0)<0||(c.millisecond??0)>999)throw RangeError("millisecond must be in 0..999");Object.assign(this,c)}date(){return new pi(this.year,this.month,this.day)}time(){return new oi(this.hour,this.minute,this.second,this.millisecond)}replace(t=this.year,e=this.month,i=this.day,n=this.hour,o=this.minute,a=this.second,r=this.millisecond){const s={year:t,month:e,day:i,hour:n,minute:o,second:a,millisecond:r};return ii(t)&&(delete s.year,Object.assign(s,t)),new ui({year:s.year??this.year,month:s.month??this.month,day:s.day??this.day,hour:s.hour??this.hour,minute:s.minute??this.minute,second:s.second??this.second,millisecond:s.millisecond??this.millisecond})}toordinal(){return this.date().toordinal()}timestamp(){let t;return t=this.utc?Date.UTC(this.year,this.month-1,this.day||1,this.hour||0,this.minute||0,this.second||0,this.millisecond||0):this.jsDate.getTime(),t/1e3}weekday(){return this.date().weekday()}isoweekday(){return this.weekday()+1}isocalendar(){const[t,e,i]=$t("%G-%V-%u")(this.jsDate).split("-");return[Number(t),Number(e),Number(i)]}isoformat(t="T",e="auto"){const i={sep:t,timespec:e};let n;switch(ii(t)&&(delete i.sep,Object.assign(i,t),i.sep=i.sep??"T"),i.timespec){case"hours":n=`%Y-%m-%d${i.sep}%H`;break;case"minutes":n=`%Y-%m-%d${i.sep}%H:%M`;break;case"seconds":n=`%Y-%m-%d${i.sep}%H:%M:%S`;break;case"milliseconds":n=`%Y-%m-%d${i.sep}%H:%M:%S.%f`;break;default:n=`%Y-%m-%d${i.sep}%H:%M:%S${this.millisecond?".%f":""}`}return this.strftime(n)}valueOf(){return this.timestamp()}toString(){return this.isoformat(" ")}ctime(){return Ot("%a %b %-e %H:%M:%S %Y")(this.jsDate)}strftime(t){return this.utc?$t(t)(this.jsDate):Ot(t)(this.jsDate)}get jsDate(){return this.utc?new Date(1e3*this.valueOf()):new Date(this.year,this.month-1,this.day||1,this.hour||0,this.minute||0,this.second||0,this.millisecond||0)}static get min(){return new ui(ai,1,1)}static get max(){return new ui(ri,12,31,23,59,59,999)}static get resolution(){return ni.resolution}static today(){return ui.now()}static now(){return ui.fromjsdate(new Date)}static utcnow(){return ui.utcfromjsdate(new Date)}static fromtimestamp(t){const e=new Date(1e3*t);return ui.fromjsdate(e)}static utcfromtimestamp(t){const e=new Date(1e3*t);return ui.utcfromjsdate(e)}static fromjsdate(t){return new ui({year:t.getFullYear(),month:t.getMonth()+1,day:t.getDate(),hour:t.getHours(),minute:t.getMinutes(),second:t.getSeconds(),millisecond:t.getMilliseconds()})}static utcfromjsdate(t){return new ui({year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),hour:t.getUTCHours(),minute:t.getUTCMinutes(),second:t.getUTCSeconds(),millisecond:t.getUTCMilliseconds(),utc:!0})}static fromordinal(t){if(tci)throw RangeError(`ordinal ${t} is out of range`);return ui.fromtimestamp(pi.min.valueOf()+new ni({days:t-si}).valueOf())}static combine(t,e){return new ui({year:t.year,month:t.month,day:t.day,hour:e.hour,minute:e.minute,second:e.second,millisecond:e.millisecond})}static fromisoformat(t){const e=Qe(t);if(e)return ui.fromjsdate(e);throw SyntaxError("Unable to parse date string")}static fromisocalendar(t,e,i){return ui.strptime(`${t}-${e}-${i}`,"%G-%V-%u")}static strptime(t,e,i=!1){const n=(i?It:Mt)(e)(t);if(!n)throw Error(`'${t}' does not match format '${e}'`);return i?ui.utcfromjsdate(n):ui.fromjsdate(n)}}class pi{constructor(t,e,i){if(this.year=1970,this.month=1,this.day=1,!Number.isInteger(t)||tri)throw RangeError(`year ${t} is out of range`);if(!Number.isInteger(e)||e<1||e>12)throw RangeError(`month ${e} is out of range`);if(!Number.isInteger(i)||i<1||i>new Date(t,e,0).getDate())throw RangeError(`day ${i} is out of range for month`);Object.assign(this,{year:t,month:e,day:i})}replace(t=this.year,e=this.month,i=this.day){const n={year:t,month:e,day:i};return ii(t)&&(delete n.year,Object.assign(n,t)),new pi(n.year??this.year,n.month??this.month,n.day??this.day)}toordinal(){return Math.trunc((this.valueOf()+new ni({days:719163}).total_seconds())/ei.days)}weekday(){return(this.jsDate.getDay()+6)%7}isoweekday(){return this.weekday()+1}isocalendar(){const[t,e,i]=$t("%G-%V-%u")(this.jsDate).split("-");return[Number(t),Number(e),Number(i)]}isoformat(){return $t("%Y-%m-%d")(this.jsDate)}valueOf(){return this.jsDate.getTime()/1e3}toString(){return this.isoformat()}ctime(){return Ot("%a %b %-e 00:00:00 %Y")(this.jsDate)}strftime(t){return Ot(t)(this.jsDate)}get jsDate(){return new Date(this.year,this.month-1,this.day)}static get min(){return new pi(ai,1,1)}static get max(){return new pi(ri,12,31)}static get resolution(){return new ni({days:1})}static today(){const t=ui.now();return new pi(t.year,t.month,t.day)}static fromtimestamp(t){const e=ui.fromtimestamp(t);return new pi(e.year,e.month,e.day)}static fromordinal(t){if(tci)throw RangeError(`ordinal ${t} is out of range`);return pi.fromtimestamp(pi.min.valueOf()+new ni({days:t-si}).valueOf())}static fromisoformat(t){const e=Qe(t);if(e)return new pi(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate());throw SyntaxError("Unable to parse date string")}static fromisocalendar(t,e,i){const n=ui.strptime(`${t}-${e}-${i}`,"%G-%V-%u");return new pi(Number(n.year),Number(n.month),Number(n.day))}}const hi=(...t)=>new ni(...t);hi.min=ni.min,hi.max=ni.max,hi.resolution=ni.resolution;const di=(...t)=>new pi(...t);di.min=pi.min,di.max=pi.max,di.resolution=pi.resolution,di.today=pi.today,di.fromtimestamp=pi.fromtimestamp,di.fromordinal=pi.fromordinal,di.fromisoformat=pi.fromisoformat,di.fromisocalendar=pi.fromisocalendar;const mi=(...t)=>new ui(...t);mi.min=ui.min,mi.max=ui.max,mi.resolution=ui.resolution,mi.today=ui.today,mi.now=ui.now,mi.utcnow=ui.utcnow,mi.fromtimestamp=ui.fromtimestamp,mi.utcfromtimestamp=ui.utcfromtimestamp,mi.fromjsdate=ui.fromjsdate,mi.utcfromjsdate=ui.utcfromjsdate,mi.fromordinal=ui.fromordinal,mi.combine=ui.combine,mi.fromisoformat=ui.fromisoformat,mi.fromisocalendar=ui.fromisocalendar,mi.strptime=ui.strptime;const fi=(...t)=>new oi(...t);fi.min=oi.min,fi.max=oi.max,fi.resolution=oi.resolution,fi.fromisoformat=oi.fromisoformat;const yi={MINYEAR:ai,MAXYEAR:ri,MINYEAR_ORDINAL:si,MAXYEAR_ORDINAL:ci,timedelta:hi,date:di,datetime:mi,time:fi};function _i(){return yi.datetime.now()}function bi(t="00:00"){const[e,i,n,o]=t.split(":"),a=yi.datetime.now(),r=yi.datetime(a.year,a.month,a.day,Number(e??0),Number(i??0),Number(n??0),Number(o??0));return M(r.toString()),r}function vi(t,e=void 0,i=!0){"object"!=typeof e||Array.isArray(e)||(i=e.utc??i,e=e.fallback??void 0);try{let e;if("string"==typeof t)if(/[^\d]/g.test(t)){t=t.replace(/T/g," ");const n=["%Y-%m-%d %H:%M:%S.%f%Z","%Y-%m-%d %H:%M:%S.%f","%Y-%m-%d %H:%M:%S%Z","%Y-%m-%d %H:%M:%S"];for(const o of n)try{e=yi.datetime.strptime(t,o,i);break}catch{}e||(t=parseFloat(t))}else t=parseFloat(t);else e="number"==typeof t?i?yi.datetime.utcfromtimestamp(t):yi.datetime.fromtimestamp(t):t instanceof pi?yi.datetime(t.year,t.month,t.day):t;return M((e??"NaN").toString()),e}catch(t){if(e)return e;throw t}}function gi(t,e){try{let e;return"string"==typeof t?(t.includes(" ")||t.includes("T")||(t+=" 00:00:00"),e=Date.parse(t)/1e3):e="number"==typeof t?yi.datetime.utcfromtimestamp(t).jsDate.getTime()/1e3:t.jsDate.getTime()/1e3,M(e.toString()),e}catch(t){if(e)return e;throw t}}function ki(t){return yi.datetime.fromjsdate(yi.datetime(t).jsDate)}function wi(t,e=1,i=!1){if(!(t instanceof ui))return t;let n=_i().valueOf()-ki(t).valueOf();if(i&&(n*=-1),n<=0)return t;(0==e||e>6)&&(e=6);const o={year:31536e3,month:2592e3,day:86400,hour:3600,minute:60,second:1},a=Object.keys(o);let r="",s=!1;for(let t=0;t0)&&(s=!0,r+=` ${i} ${a[t]}${1!=i?"s":""}`,n-=i*o[a[t]])}return r.trim()}function Ei(t,e=1){return wi(t,e)}function Ci(t,e=1){return wi(t,e,!0)}const xi={states:l,state_attr:u,has_value:p,state_translated:X,attr_name_translated:J,attr_value_translated:Q,expand:k,device_entities:d,device_attr:m,device_id:f,floor_id:b,floor_name:v,floor_areas:g,area_id:o,area_name:a,area_entities:r,area_devices:s,labels:C,label_areas:T,label_devices:A,label_entities:S,iif:w,closest:_},Li={label_id:x,label_name:L,today_at:bi,as_datetime:vi,as_timestamp:gi,as_local:ki,time_since:Ei,time_until:Ci,timestamp_local:function(t,e){try{const e=yi.datetime.fromtimestamp(t).strftime("%Y-%m-%dT%H:%M:%S%Z");return M(e),e}catch(t){if(e)return e;throw t}},timestamp_utc:function(t,e){try{const e=yi.datetime.utcfromtimestamp(t).strftime("%Y-%m-%dT%H:%M:%S%Z");return M(e),e}catch(t){if(e)return e;throw t}},timestamp_custom:function(t,e,i=!0,n=void 0){"object"!=typeof i||Array.isArray(i)||(n=i.fallback??n,i=i.local??!0);try{const n=(i?yi.datetime.fromtimestamp(t):yi.datetime.utcfromtimestamp(t)).strftime(e);return M(n),n}catch(t){if(n)return n;throw t}},to_json:function(t,e=!1,i=!1,n=!1){"object"!=typeof e||Array.isArray(e)||(n=e.sort_keys??n,i=e.pretty_print??i,e=e.ensure_ascii??!1),n&&(t=Object.keys(t).sort().reduce(((e,i)=>(e[i]=t[i],e)),{}));let o=JSON.stringify(t,void 0,i?2:void 0);return e&&(o=o.replace(/[\u007F-\uFFFF]/g,(t=>`\\u'${("0000"+t.charCodeAt(0).toString(16)).substring(-4)}`))),o},from_json:function(t){return JSON.parse(t)},closest:_,contains:c,is_number:$,bool:I,log:D,sin:N,cos:P,tan:R,asin:F,acos:j,atan:U,atan2:K,sqrt:H,max:B,min:V,average:Y,median:Z,statistical_mode:z,bitwise_and:function(t,e){return t&e},bitwise_or:function(t,e){return t|e},bitwise_xor:function(t,e){return t^e},bitwise_not:function(t){return~t},ord:function(t){if(1==t.length)return t.codePointAt(0);throw Error("Expected a character, but received a string")},multiply:function(t,e){return Number(t)*Number(e)},add:function(t,e){return Number(t)+Number(e)},regex_replace:function(t,e="",i=""){return t.replace(new RegExp(e,"g"),i)},regex_findall:function(t,e=""){return t.match(new RegExp(e,"g"))??[]},regex_findall_index:function(t,e="",i=0){return(t.match(new RegExp(e,"g"))??[])[i]},str:O},Ti={states:l,is_state:function(t,e,i){try{const n=l(t,e);return Array.isArray(i)?i.includes(n):n==i}catch{return!1}},state_attr:u,is_state_attr:function(t,e,i,n){try{return u(t,e,i)==n}catch{return!1}},has_value:p,state_translated:X,attr_name_translated:J,attr_value_translated:Q,expand:k,is_hidden_entity:function(t,e){try{return t.entities[e].hidden??!1}catch{return!1}},device_entities:d,device_attr:m,is_device_attr:function(t,e,i,n){try{return null!=n&&m(t,e,i)==n}catch{return!1}},device_id:f,floors:function(t){return Object.keys(t.floors)},floor_id:b,floor_name:v,floor_areas:g,areas:function(t){try{return Object.keys(t.areas)}catch{return[]}},area_id:o,area_name:a,area_entities:r,area_devices:s,integration_entities:function(t,e){try{const i=[];if(e){for(const n in t.entities)t.entities[n].platform==e&&i.push(n);i.sort()}return i}catch{return[]}},labels:C,label_areas:T,label_devices:A,label_entities:S,iif:w,distance:function(t,...e){try{let i,n,o,a,r=0;if("string"==typeof e[0])i=t.states[e[0]].attributes.latitude,o=t.states[e[0]].attributes.longitude,r=1;else if("object"!=typeof e[0]||Array.isArray(e[0])){if("number"!=typeof e[0])return null;if("number"!=typeof e[1])throw Error("Latitude provided but not longitude 1");i=e[0],o=e[1],r=2}else i=e[0].attributes.latitude,o=e[0].attributes.longitude,r=1;if("string"==typeof e[r])n=t.states[e[r]].attributes.latitude,a=t.states[e[r]].attributes.longitude;else if("object"!=typeof e[r]||Array.isArray(e[r]))if("number"==typeof e[r]){if("number"!=typeof e[r+1])throw Error("Latitude provided but not longitude 2");n=e[r],a=e[r+1]}else n=t.states["zone.home"].attributes.latitude,a=t.states["zone.home"].attributes.longitude;else n=e[r].attributes.latitude,a=e[r].attributes.longitude;return y([i,o],[n,a],"mi"==t.config.unit_system.length)}catch{return null}},closest:_},Ai={label_id:x,label_name:L,now:_i,utcnow:function(){return yi.datetime.utcnow()},today_at:bi,as_datetime:vi,as_timestamp:gi,as_local:ki,strptime:function(t,e,i=void 0,n=!1){"object"!=typeof i||Array.isArray(i)||i instanceof ui||i instanceof pi||(n=i.utc??n,i=i.fallback??void 0);try{e=e.replace(/%z/g,"%Z");const i=yi.datetime.strptime(t,e,n);return M(i.toString()),i}catch(t){if(i)return i;throw t}},time_since:Ei,time_until:Ci,as_timedelta:function(t){try{let e;if(t.includes(":")||t.includes(" ")||/^\d*\.?\d*$/.test(t)){let i,n;t.includes(" ")?t.includes("days")?[i,n]=t.split(" days "):[i,n]=t.split(" "):(i=0,n=t);const[o,a,r]=n.split(":").reverse();e=yi.timedelta(Number(i),Number(o.replace(",",".")??0),0,Number(a??0),Number(r??0))}else{if(!t.startsWith("P"))return null;{const i=t.replace(/P|T/g,"").match(/(\d*?)[A-Z]/g);if(!i)return null;const n={};for(const t of i){const e=t.match(/^(\d*)/),i=t.match(/[A-Z]$/);e&&i&&(n[i[0]]=parseFloat(e[0]))}e=yi.timedelta(n.D,n.S,0,n.M,n.H,n.W)}}return M(e.toString()),e}catch{return null}},float:function(t,e){try{const e=parseFloat(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}},is_number:$,int:function(t,e){try{const e=parseInt(t);return M(e.toString()),e}catch(t){if(e)return e;throw t}},bool:I,log:D,sin:N,cos:P,tan:R,asin:F,acos:j,atan:U,atan2:K,sqrt:H,max:B,min:V,average:Y,median:Z,statistical_mode:z,set:function(...t){return new Set(t.flat(1/0))},list:function(...t){return t.map((t=>Array.from(t))).flat(1/0)},zip:function(...t){if(t.length>1)return t[0].map(((e,i)=>{const n=[e];for(let e=1;et.name.localeCompare(e.name)));for(const t of e)E[t.label_id]=t}}(t),Mi=t,"string"==typeof e&&(e.includes("{{")&&e.includes("}}")||e.includes("{%")&&e.includes("%}"))?(e=$i.renderString(structuredClone(e),{hass:t,_states:h(t),...i}).trim(),[void 0,null,"undefined","null","None"].includes(e)?"":"true"==e.toLowerCase()||"false"!=e.toLowerCase()&&e):e}},740:(t,e,i)=>{"use strict";i.d(e,{XX:()=>U,c0:()=>C,qy:()=>E});const n=globalThis,o=n.trustedTypes,a=o?o.createPolicy("lit-html",{createHTML:t=>t}):void 0,r="$lit$",s=`lit$${(Math.random()+"").slice(9)}$`,c="?"+s,l=`<${c}>`,u=document,p=()=>u.createComment(""),h=t=>null===t||"object"!=typeof t&&"function"!=typeof t,d=Array.isArray,m="[ \t\n\f\r]",f=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,y=/-->/g,_=/>/g,b=RegExp(`>|${m}(?:([^\\s"'>=/]+)(${m}*=${m}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),v=/'/g,g=/"/g,k=/^(?:script|style|textarea|title)$/i,w=t=>(e,...i)=>({_$litType$:t,strings:e,values:i}),E=w(1),C=(w(2),Symbol.for("lit-noChange")),x=Symbol.for("lit-nothing"),L=new WeakMap,T=u.createTreeWalker(u,129);function A(t,e){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==a?a.createHTML(e):e}const S=(t,e)=>{const i=t.length-1,n=[];let o,a=2===e?"":"",c=f;for(let e=0;e"===p[0]?(c=o??f,h=-1):void 0===p[1]?h=-2:(h=c.lastIndex-p[2].length,u=p[1],c=void 0===p[3]?b:'"'===p[3]?g:v):c===g||c===v?c=b:c===y||c===_?c=f:(c=b,o=void 0);const m=c===b&&t[e+1].startsWith("/>")?" ":"";a+=c===f?i+l:h>=0?(n.push(u),i.slice(0,h)+r+i.slice(h)+s+m):i+s+(-2===h?e:m)}return[A(t,a+(t[i]||"")+(2===e?"":"")),n]};class O{constructor({strings:t,_$litType$:e},i){let n;this.parts=[];let a=0,l=0;const u=t.length-1,h=this.parts,[d,m]=S(t,e);if(this.el=O.createElement(d,i),T.currentNode=this.el.content,2===e){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(n=T.nextNode())&&h.length0){n.textContent=o?o.emptyScript:"";for(let i=0;id(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==x&&h(this._$AH)?this._$AA.nextSibling.data=t:this.$(u.createTextNode(t)),this._$AH=t}g(t){const{values:e,_$litType$:i}=t,n="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=O.createElement(A(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===n)this._$AH.p(e);else{const t=new $(n,this),i=t.u(this.options);t.p(e),this.$(i),this._$AH=t}}_$AC(t){let e=L.get(t.strings);return void 0===e&&L.set(t.strings,e=new O(t)),e}T(t){d(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,n=0;for(const o of t)n===e.length?e.push(i=new I(this.k(p()),this.k(p()),this,this.options)):i=e[n],i._$AI(o),n++;n2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=x}_$AI(t,e=this,i,n){const o=this.strings;let a=!1;if(void 0===o)t=M(this,t,e,0),a=!h(t)||t!==this._$AH&&t!==C,a&&(this._$AH=t);else{const n=t;let r,s;for(t=o[0],r=0;r{const n=i?.renderBefore??e;let o=n._$litPart$;if(void 0===o){const t=i?.renderBefore??null;n._$litPart$=o=new I(e.insertBefore(p(),t),t,void 0,i??{})}return o._$AI(t),o}},385:(t,e,i)=>{"use strict";i.d(e,{EM:()=>n,Ls:()=>l,MZ:()=>s,wk:()=>c});const n=t=>(e,i)=>{void 0!==i?i.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};var o=i(1);const a={attribute:!0,type:String,converter:o.W3,reflect:!1,hasChanged:o.Ec},r=(t=a,e,i)=>{const{kind:n,metadata:o}=i;let r=globalThis.litPropertyMetadata.get(o);if(void 0===r&&globalThis.litPropertyMetadata.set(o,r=new Map),r.set(i.name,t),"accessor"===n){const{name:n}=i;return{set(i){const o=e.get.call(this);e.set.call(this,i),this.requestUpdate(n,o,t)},init(e){return void 0!==e&&this.C(n,void 0,t),e}}}if("setter"===n){const{name:n}=i;return function(i){const o=this[n];e.call(this,i),this.requestUpdate(n,o,t)}}throw Error("Unsupported decorator location: "+n)};function s(t){return(e,i)=>"object"==typeof i?r(t,e,i):((t,e,i)=>{const n=e.hasOwnProperty(i);return e.constructor.createProperty(i,n?{...t,wrapped:!0}:t),n?Object.getOwnPropertyDescriptor(e,i):void 0})(t,e,i)}function c(t){return s({...t,state:!0,attribute:!1})}function l(t){return(e,i)=>{const n="function"==typeof e?e:e[i];Object.assign(n,t)}}},670:(t,e,i)=>{"use strict";i.d(e,{WF:()=>a,AH:()=>n.AH,qy:()=>o.qy});var n=i(1),o=i(740);class a extends n.mN{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=(0,o.XX)(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return o.c0}}a._$litElement$=!0,a.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:a});const r=globalThis.litElementPolyfillSupport;r?.({LitElement:a}),(globalThis.litElementVersions??=[]).push("4.0.3")}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,e)=>{for(var i in e)__webpack_require__.o(e,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},__webpack_require__.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var __webpack_exports__={};(()=>{"use strict";var t=__webpack_require__(670),e=__webpack_require__(385),i=__webpack_require__(703);function n(t){return null==t}var o={isNothing:n,isObject:function(t){return"object"==typeof t&&null!==t},toArray:function(t){return Array.isArray(t)?t:n(t)?[]:[t]},repeat:function(t,e){var i,n="";for(i=0;is&&(e=n-s+(a=" ... ").length),i-n>s&&(i=n+s-(r=" ...").length),{str:a+t.slice(e,i).replace(/\t/g,"→")+r,pos:n-e+a.length}}function l(t,e){return o.repeat(" ",e-t.length)+t}var u=function(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var i,n=/\r?\n|\r|\0/g,a=[0],r=[],s=-1;i=n.exec(t.buffer);)r.push(i.index),a.push(i.index+i[0].length),t.position<=i.index&&s<0&&(s=a.length-2);s<0&&(s=a.length-1);var u,p,h="",d=Math.min(t.line+e.linesAfter,r.length).toString().length,m=e.maxLength-(e.indent+d+3);for(u=1;u<=e.linesBefore&&!(s-u<0);u++)p=c(t.buffer,a[s-u],r[s-u],t.position-(a[s]-a[s-u]),m),h=o.repeat(" ",e.indent)+l((t.line-u+1).toString(),d)+" | "+p.str+"\n"+h;for(p=c(t.buffer,a[s],r[s],t.position,m),h+=o.repeat(" ",e.indent)+l((t.line+1).toString(),d)+" | "+p.str+"\n",h+=o.repeat("-",e.indent+d+3+p.pos)+"^\n",u=1;u<=e.linesAfter&&!(s+u>=r.length);u++)p=c(t.buffer,a[s+u],r[s+u],t.position-(a[s]-a[s+u]),m),h+=o.repeat(" ",e.indent)+l((t.line+u+1).toString(),d)+" | "+p.str+"\n";return h.replace(/\n$/,"")},p=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],h=["scalar","sequence","mapping"],d=function(t,e){if(e=e||{},Object.keys(e).forEach((function(e){if(-1===p.indexOf(e))throw new s('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=function(t){var e={};return null!==t&&Object.keys(t).forEach((function(i){t[i].forEach((function(t){e[String(t)]=i}))})),e}(e.styleAliases||null),-1===h.indexOf(this.kind))throw new s('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')};function m(t,e){var i=[];return t[e].forEach((function(t){var e=i.length;i.forEach((function(i,n){i.tag===t.tag&&i.kind===t.kind&&i.multi===t.multi&&(e=n)})),i[e]=t})),i}function f(t){return this.extend(t)}f.prototype.extend=function(t){var e=[],i=[];if(t instanceof d)i.push(t);else if(Array.isArray(t))i=i.concat(t);else{if(!t||!Array.isArray(t.implicit)&&!Array.isArray(t.explicit))throw new s("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.implicit&&(e=e.concat(t.implicit)),t.explicit&&(i=i.concat(t.explicit))}e.forEach((function(t){if(!(t instanceof d))throw new s("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(t.loadKind&&"scalar"!==t.loadKind)throw new s("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(t.multi)throw new s("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),i.forEach((function(t){if(!(t instanceof d))throw new s("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var n=Object.create(f.prototype);return n.implicit=(this.implicit||[]).concat(e),n.explicit=(this.explicit||[]).concat(i),n.compiledImplicit=m(n,"implicit"),n.compiledExplicit=m(n,"explicit"),n.compiledTypeMap=function(){var t,e,i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function n(t){t.multi?(i.multi[t.kind].push(t),i.multi.fallback.push(t)):i[t.kind][t.tag]=i.fallback[t.tag]=t}for(t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},octal:function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),w=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),E=/^[-+]?[0-9]+e/,C=new d("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(t){return null!==t&&!(!w.test(t)||"_"===t[t.length-1])},construct:function(t){var e,i;return i="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:i*parseFloat(e,10)},predicate:function(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||o.isNegativeZero(t))},represent:function(t,e){var i;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(o.isNegativeZero(t))return"-0.0";return i=t.toString(10),E.test(i)?i.replace("e",".e"):i},defaultStyle:"lowercase"}),x=y.extend({implicit:[_,b,k,C]}),L=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),T=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),A=new d("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(t){return null!==t&&(null!==L.exec(t)||null!==T.exec(t))},construct:function(t){var e,i,n,o,a,r,s,c,l=0,u=null;if(null===(e=L.exec(t))&&(e=T.exec(t)),null===e)throw new Error("Date resolve error");if(i=+e[1],n=+e[2]-1,o=+e[3],!e[4])return new Date(Date.UTC(i,n,o));if(a=+e[4],r=+e[5],s=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(u=-u)),c=new Date(Date.UTC(i,n,o,a,r,s,l)),u&&c.setTime(c.getTime()-u),c},instanceOf:Date,represent:function(t){return t.toISOString()}}),S=new d("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(t){return"<<"===t||null===t}}),O="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",M=new d("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(t){if(null===t)return!1;var e,i,n=0,o=t.length,a=O;for(i=0;i64)){if(e<0)return!1;n+=6}return n%8==0},construct:function(t){var e,i,n=t.replace(/[\r\n=]/g,""),o=n.length,a=O,r=0,s=[];for(e=0;e>16&255),s.push(r>>8&255),s.push(255&r)),r=r<<6|a.indexOf(n.charAt(e));return 0==(i=o%4*6)?(s.push(r>>16&255),s.push(r>>8&255),s.push(255&r)):18===i?(s.push(r>>10&255),s.push(r>>2&255)):12===i&&s.push(r>>4&255),new Uint8Array(s)},predicate:function(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)},represent:function(t){var e,i,n="",o=0,a=t.length,r=O;for(e=0;e>18&63],n+=r[o>>12&63],n+=r[o>>6&63],n+=r[63&o]),o=(o<<8)+t[e];return 0==(i=a%3)?(n+=r[o>>18&63],n+=r[o>>12&63],n+=r[o>>6&63],n+=r[63&o]):2===i?(n+=r[o>>10&63],n+=r[o>>4&63],n+=r[o<<2&63],n+=r[64]):1===i&&(n+=r[o>>2&63],n+=r[o<<4&63],n+=r[64],n+=r[64]),n}}),$=Object.prototype.hasOwnProperty,I=Object.prototype.toString,D=new d("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(t){if(null===t)return!0;var e,i,n,o,a,r=[],s=t;for(e=0,i=s.length;e>10),56320+(t-65536&1023))}for(var st=new Array(256),ct=new Array(256),lt=0;lt<256;lt++)st[lt]=at(lt)?1:0,ct[lt]=at(lt);function ut(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||j,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function pt(t,e){var i={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return i.snippet=u(i),new s(e,i)}function ht(t,e){throw pt(t,e)}function dt(t,e){t.onWarning&&t.onWarning.call(null,pt(t,e))}var mt={YAML:function(t,e,i){var n,o,a;null!==t.version&&ht(t,"duplication of %YAML directive"),1!==i.length&&ht(t,"YAML directive accepts exactly one argument"),null===(n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]))&&ht(t,"ill-formed argument of the YAML directive"),o=parseInt(n[1],10),a=parseInt(n[2],10),1!==o&&ht(t,"unacceptable YAML version of the document"),t.version=i[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&dt(t,"unsupported YAML version of the document")},TAG:function(t,e,i){var n,o;2!==i.length&&ht(t,"TAG directive accepts exactly two arguments"),n=i[0],o=i[1],X.test(n)||ht(t,"ill-formed tag handle (first argument) of the TAG directive"),U.call(t.tagMap,n)&&ht(t,'there is a previously declared suffix for "'+n+'" tag handle'),J.test(o)||ht(t,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(e){ht(t,"tag prefix is malformed: "+o)}t.tagMap[n]=o}};function ft(t,e,i,n){var o,a,r,s;if(e1&&(t.result+=o.repeat("\n",e-1))}function wt(t,e){var i,n,o=t.tag,a=t.anchor,r=[],s=!1;if(-1!==t.firstTabInLine)return!1;for(null!==t.anchor&&(t.anchorMap[t.anchor]=r),n=t.input.charCodeAt(t.position);0!==n&&(-1!==t.firstTabInLine&&(t.position=t.firstTabInLine,ht(t,"tab characters must not be used in indentation")),45===n)&&it(t.input.charCodeAt(t.position+1));)if(s=!0,t.position++,vt(t,!0,-1)&&t.lineIndent<=e)r.push(null),n=t.input.charCodeAt(t.position);else if(i=t.line,xt(t,e,B,!1,!0),r.push(t.result),vt(t,!0,-1),n=t.input.charCodeAt(t.position),(t.line===i||t.lineIndent>e)&&0!==n)ht(t,"bad indentation of a sequence entry");else if(t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndente)&&(_&&(r=t.line,s=t.lineStart,c=t.position),xt(t,e,V,!0,o)&&(_?f=t.result:y=t.result),_||(_t(t,h,d,m,f,y,r,s,c),m=f=y=null),vt(t,!0,-1),l=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==l)ht(t,"bad indentation of a mapping entry");else if(t.lineIndent=0))break;0===a?ht(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):u?ht(t,"repeat of an indentation width identifier"):(p=e+a-1,u=!0)}if(et(r)){do{r=t.input.charCodeAt(++t.position)}while(et(r));if(35===r)do{r=t.input.charCodeAt(++t.position)}while(!tt(r)&&0!==r)}for(;0!==r;){for(bt(t),t.lineIndent=0,r=t.input.charCodeAt(t.position);(!u||t.lineIndentp&&(p=t.lineIndent),tt(r))h++;else{if(t.lineIndent0){for(o=r,a=0;o>0;o--)(r=ot(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+r:ht(t,"expected hexadecimal character");t.result+=rt(a),t.position++}else ht(t,"unknown escape sequence");i=n=t.position}else tt(s)?(ft(t,i,n,!0),kt(t,vt(t,!1,e)),i=n=t.position):t.position===t.lineStart&>(t)?ht(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}ht(t,"unexpected end of the stream within a double quoted scalar")}(t,d)?_=!0:function(t){var e,i,n;if(42!==(n=t.input.charCodeAt(t.position)))return!1;for(n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!it(n)&&!nt(n);)n=t.input.charCodeAt(++t.position);return t.position===e&&ht(t,"name of an alias node must contain at least one character"),i=t.input.slice(e,t.position),U.call(t.anchorMap,i)||ht(t,'unidentified alias "'+i+'"'),t.result=t.anchorMap[i],vt(t,!0,-1),!0}(t)?(_=!0,null===t.tag&&null===t.anchor||ht(t,"alias node should not have any properties")):function(t,e,i){var n,o,a,r,s,c,l,u,p=t.kind,h=t.result;if(it(u=t.input.charCodeAt(t.position))||nt(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(it(n=t.input.charCodeAt(t.position+1))||i&&nt(n)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,r=!1;0!==u;){if(58===u){if(it(n=t.input.charCodeAt(t.position+1))||i&&nt(n))break}else if(35===u){if(it(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&>(t)||i&&nt(u))break;if(tt(u)){if(s=t.line,c=t.lineStart,l=t.lineIndent,vt(t,!1,-1),t.lineIndent>=e){r=!0,u=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=c,t.lineIndent=l;break}}r&&(ft(t,o,a,!1),kt(t,t.line-s),o=a=t.position,r=!1),et(u)||(a=t.position+1),u=t.input.charCodeAt(++t.position)}return ft(t,o,a,!1),!!t.result||(t.kind=p,t.result=h,!1)}(t,d,K===i)&&(_=!0,null===t.tag&&(t.tag="?")),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):0===f&&(_=c&&wt(t,m))),null===t.tag)null!==t.anchor&&(t.anchorMap[t.anchor]=t.result);else if("?"===t.tag){for(null!==t.result&&"scalar"!==t.kind&&ht(t,'unacceptable node kind for ! tag; it should be "scalar", not "'+t.kind+'"'),l=0,u=t.implicitTypes.length;l"),null!==t.result&&h.kind!==t.kind&&ht(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+h.kind+'", not "'+t.kind+'"'),h.resolve(t.result,t.tag)?(t.result=h.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ht(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||_}function Lt(t){var e,i,n,o,a=t.position,r=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(o=t.input.charCodeAt(t.position))&&(vt(t,!0,-1),o=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==o));){for(r=!0,o=t.input.charCodeAt(++t.position),e=t.position;0!==o&&!it(o);)o=t.input.charCodeAt(++t.position);for(n=[],(i=t.input.slice(e,t.position)).length<1&&ht(t,"directive name must not be less than one character in length");0!==o;){for(;et(o);)o=t.input.charCodeAt(++t.position);if(35===o){do{o=t.input.charCodeAt(++t.position)}while(0!==o&&!tt(o));break}if(tt(o))break;for(e=t.position;0!==o&&!it(o);)o=t.input.charCodeAt(++t.position);n.push(t.input.slice(e,t.position))}0!==o&&bt(t),U.call(mt,i)?mt[i](t,i,n):dt(t,'unknown document directive "'+i+'"')}vt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,vt(t,!0,-1)):r&&ht(t,"directives end mark is expected"),xt(t,t.lineIndent-1,V,!1,!0),vt(t,!0,-1),t.checkLineBreaks&&W.test(t.input.slice(a,t.position))&&dt(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&>(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,vt(t,!0,-1)):t.position=55296&&n<=56319&&e+1=56320&&i<=57343?1024*(n-55296)+i-56320+65536:n}function fe(t){return/^\n* /.test(t)}var ye=1,_e=2,be=3,ve=4,ge=5;function ke(t,e,i,n,o){t.dump=function(){if(0===e.length)return t.quotingType===re?'""':"''";if(!t.noCompatMode&&(-1!==ne.indexOf(e)||oe.test(e)))return t.quotingType===re?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,i),r=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=n||t.flowLevel>-1&&i>=t.flowLevel;switch(function(t,e,i,n,o,a,r,s){var c,l,u=0,p=null,h=!1,d=!1,m=-1!==n,f=-1,y=pe(l=me(t,0))&&l!==Mt&&!ue(l)&&l!==Vt&&l!==qt&&l!==Yt&&l!==Bt&&l!==Gt&&l!==Xt&&l!==Qt&&l!==ee&&l!==Ft&&l!==Ut&&l!==Ht&&l!==Pt&&l!==te&&l!==Zt&&l!==zt&&l!==Kt&&l!==Rt&&l!==jt&&l!==Wt&&l!==Jt&&function(t){return!ue(t)&&t!==Yt}(me(t,t.length-1));if(e||r)for(c=0;c=65536?c+=2:c++){if(!pe(u=me(t,c)))return ge;y=y&&de(u,p,s),p=u}else{for(c=0;c=65536?c+=2:c++){if((u=me(t,c))===It)h=!0,m&&(d=d||c-f-1>n&&" "!==t[f+1],f=c);else if(!pe(u))return ge;y=y&&de(u,p,s),p=u}d=d||m&&c-f-1>n&&" "!==t[f+1]}return h||d?i>9&&fe(t)?ge:r?a===re?ge:_e:d?ve:be:!y||r||o(t)?a===re?ge:_e:ye}(e,c,t.indent,r,(function(e){return function(t,e){var i,n;for(i=0,n=t.implicitTypes.length;i"+we(e,t.indent)+Ee(ce(function(t,e){for(var i,n,o,a=/(\n+)([^\n]*)/g,r=(o=-1!==(o=t.indexOf("\n"))?o:t.length,a.lastIndex=o,Ce(t.slice(0,o),e)),s="\n"===t[0]||" "===t[0];n=a.exec(t);){var c=n[1],l=n[2];i=" "===l[0],r+=c+(s||i||""===l?"":"\n")+Ce(l,e),s=i}return r}(e,r),a));case ge:return'"'+function(t){for(var e,i="",n=0,o=0;o=65536?o+=2:o++)n=me(t,o),!(e=ie[n])&&pe(n)?(i+=t[o],n>=65536&&(i+=t[o+1])):i+=e||ae(n);return i}(e)+'"';default:throw new s("impossible error: invalid scalar style")}}()}function we(t,e){var i=fe(t)?String(e):"",n="\n"===t[t.length-1];return i+(!n||"\n"!==t[t.length-2]&&"\n"!==t?n?"":"-":"+")+"\n"}function Ee(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function Ce(t,e){if(""===t||" "===t[0])return t;for(var i,n,o=/ [^ ]/g,a=0,r=0,s=0,c="";i=o.exec(t);)(s=i.index)-a>e&&(n=r>a?r:s,c+="\n"+t.slice(a,n),a=n+1),r=s;return c+="\n",t.length-a>e&&r>a?c+=t.slice(a,r)+"\n"+t.slice(r+1):c+=t.slice(a),c.slice(1)}function xe(t,e,i,n){var o,a,r,s="",c=t.tag;for(o=0,a=i.length;o tag resolver accepts not "'+l+'" style');n=c.represent[l](e,l)}t.dump=n}return!0}return!1}function Te(t,e,i,n,o,a,r){t.tag=null,t.dump=i,Le(t,i,!1)||Le(t,i,!0);var c,l=St.call(t.dump),u=n;n&&(n=t.flowLevel<0||t.flowLevel>e);var p,h,d="[object Object]"===l||"[object Array]"===l;if(d&&(h=-1!==(p=t.duplicates.indexOf(i))),(null!==t.tag&&"?"!==t.tag||h||2!==t.indent&&e>0)&&(o=!1),h&&t.usedDuplicates[p])t.dump="*ref_"+p;else{if(d&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),"[object Object]"===l)n&&0!==Object.keys(t.dump).length?(function(t,e,i,n){var o,a,r,c,l,u,p="",h=t.tag,d=Object.keys(i);if(!0===t.sortKeys)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new s("sortKeys must be a boolean or a function");for(o=0,a=d.length;o1024)&&(t.dump&&It===t.dump.charCodeAt(0)?u+="?":u+="? "),u+=t.dump,l&&(u+=le(t,e)),Te(t,e+1,c,!0,l)&&(t.dump&&It===t.dump.charCodeAt(0)?u+=":":u+=": ",p+=u+=t.dump));t.tag=h,t.dump=p||"{}"}(t,e,t.dump,o),h&&(t.dump="&ref_"+p+t.dump)):(function(t,e,i){var n,o,a,r,s,c="",l=t.tag,u=Object.keys(i);for(n=0,o=u.length;n1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Te(t,e,r,!1,!1)&&(c+=s+=t.dump));t.tag=l,t.dump="{"+c+"}"}(t,e,t.dump),h&&(t.dump="&ref_"+p+" "+t.dump));else if("[object Array]"===l)n&&0!==t.dump.length?(t.noArrayIndent&&!r&&e>0?xe(t,e-1,t.dump,o):xe(t,e,t.dump,o),h&&(t.dump="&ref_"+p+t.dump)):(function(t,e,i){var n,o,a,r="",s=t.tag;for(n=0,o=i.length;n",t.dump=c+" "+t.dump)}return!0}function Ae(t,e){var i,n,o=[],a=[];for(Se(t,o,a),i=0,n=a.length;i=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};class Be extends t.WF{constructor(){super(...arguments),this.baseTabIndex=0,this.entryIndex=-1,this.actionsTabIndex=0,this.touchpadTabIndex=2,this.guiMode=!0,this.yamlStringsCache={},this.people=[],this.BASE_TABS=["general","layout","actions","icons"],this.TOUCHPAD_TABS=["up","down","center","left","right"],this.DEFAULT_KEYS=[],this.DEFAULT_SOURCES=[],this.DEFAULT_ACTIONS=[]}static get properties(){return{hass:{},config:{}}}setConfig(t){this.config=t}configChanged(t){t=this.autofillDefaultFields(t);const e=new Event("config-changed",{bubbles:!0,composed:!0});e.detail={config:t},this.dispatchEvent(e),this.requestUpdate()}entriesChanged(t){let e;e=3===this.baseTabIndex?"custom_icons":"custom_actions",this.configChanged({...this.config,[e]:t})}entryChanged(t){let e,i,n;if(3===this.baseTabIndex)e=structuredClone(this.config.custom_icons??[]),i=e[this.entryIndex],n={...i,...t};else switch(e=structuredClone(this.config.custom_actions??[]),i=e[this.entryIndex],this.renderTemplate(i?.type,this.getEntryContext(i))){case"touchpad":if(2!=this.touchpadTabIndex){n={...i,[this.TOUCHPAD_TABS[this.touchpadTabIndex]]:{...i[this.TOUCHPAD_TABS[this.touchpadTabIndex]],...t}};break}default:n={...i,...t}}e[this.entryIndex]=n,this.entriesChanged(e)}toggleGuiMode(t){this.yamlString=void 0,this.configChanged(this.config),this.guiMode=!this.guiMode}get activeEntry(){if(this.entryIndex<0)return;let t;return 3===this.baseTabIndex?(this.config.custom_icons??[])[this.entryIndex]:(t=(this.config.custom_actions??[])[this.entryIndex],"touchpad"===this.renderTemplate(t?.type,this.getEntryContext(t))&&2!=this.touchpadTabIndex?t[this.TOUCHPAD_TABS[this.touchpadTabIndex]]??{}:t)}get yaml(){if(null==this.yamlString){let t="";switch(this.baseTabIndex){case 3:case 2:t=$e(this.activeEntry);break;case 1:t=$e(this.config.rows)}this.yamlString=["{}","[]"].includes(t.trim())?"":t}return this.yamlString??""}set yaml(t){this.yamlString=t;try{const t=Me(this.yaml);switch(this.baseTabIndex){case 3:{const e=structuredClone(this.config.custom_icons??[]);e[this.entryIndex]=t,this.entriesChanged(e);break}case 2:{const e=structuredClone(this.config.custom_actions??[]);switch(this.renderTemplate(e[this.entryIndex].type,this.getEntryContext(t))){case"touchpad":if(2!=this.touchpadTabIndex){e[this.entryIndex]={...e[this.entryIndex],[this.TOUCHPAD_TABS[this.touchpadTabIndex]]:t};break}default:e[this.entryIndex]=t}this.entriesChanged(e);break}case 1:this.configChanged({...this.config,rows:t})}this.errors=void 0}catch(t){this.errors=[t.message]}}handleYamlCodeChanged(t){t.stopPropagation();const e=t.detail.value;e!=this.yaml&&(this.yaml=e)}handleStyleCodeChanged(t){t.stopPropagation();const e=t.detail.value;this.entryIndex>-1&&this.activeEntry?e!=this.activeEntry?.styles&&this.entryChanged({styles:e}):e!=this.config.styles&&this.configChanged({...this.config,styles:e})}handleActionCodeChanged(t){t.stopPropagation();const e=t.target.id,i=t.detail.value;if(this.yamlStringsCache[e]=i,this.activeEntry)try{const t=Me(i);if(JSON.stringify(t??{}).includes("null"))return;this.entryChanged({[e]:t}),this.errors=void 0}catch(t){this.errors=[t.message]}}handleEvalCodeChanged(t){t.stopPropagation();const e=t.target.id,i=t.detail.value;this.activeEntry&&this.entryChanged({type:this.activeEntry.type,name:this.activeEntry.name,[e]:{...this.activeEntry[e],eval:i}})}handleBaseTabSelected(t){this.yamlStringsCache={},this.yamlString=void 0,this.entryIndex=-1,this.guiMode=!0;const e=t.detail.index;this.baseTabIndex!=e&&(this.baseTabIndex=e)}handleActionsTabSelected(t){this.yamlStringsCache={};const e=t.detail.index;this.actionsTabIndex!=e&&(this.actionsTabIndex=e)}handleTouchpadTabSelected(t){this.yamlString=void 0,this.yamlStringsCache={};const e=t.detail.index;this.touchpadTabIndex!=e&&(this.touchpadTabIndex=e,this.setActionsTab(this.entryIndex))}handleSelectorChange(t){this.yamlStringsCache={};const e=t.target.id;let i=t.detail.value;switch(e.endsWith(".confirmation.exemptions")&&(i=(i??[]).map((t=>({user:t})))),this.baseTabIndex){case 3:case 2:this.entryChanged((0,Ke.HD)(structuredClone(this.activeEntry),e,i));break;default:this.configChanged({...this.config,[e]:i})}null==i&&setTimeout((()=>{this.configChanged(this.config)}),100)}handleLayoutActionListItemDragStart(t){t.stopPropagation(),t.isTrusted&&t.dataTransfer&&t.dataTransfer.setData("text/plain","- "+t.currentTarget.innerText)}addEntry(t){const e=t.detail.index;let i;switch(this.baseTabIndex){case 3:i=structuredClone(this.config.custom_icons)??[],i.push({name:`custom_icon_${(this.config.custom_icons??[]).length}`,path:""});break;default:{const t=Re[e];i=structuredClone(this.config.custom_actions)??[];let n=t;const o=this.config.custom_actions?.filter((e=>e.type==t));o&&o.length&&(n+=`_${(this.config.custom_actions??[]).length}`),i.push({type:Re[e],name:n});break}}this.entriesChanged(i);const n=this.shadowRoot?.querySelector(".features");n&&setTimeout((()=>n.scrollTop=n.scrollHeight),100)}removeEntry(t){const e=t.currentTarget.index;let i;i=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],i=structuredClone(i),i.splice(e,1),this.entriesChanged(i)}moveEntry(t){let e;t.stopPropagation(),e=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],e=structuredClone(e);const{oldIndex:i,newIndex:n}=t.detail;e.splice(n,0,e.splice(i,1)[0]),this.entriesChanged(e)}copyEntry(t){let e;e=3===this.baseTabIndex?this.config.custom_icons??[]:this.config.custom_actions??[],e=structuredClone(e);const i=t.currentTarget.index,n=structuredClone(e[i]);n.name=`${n.name}_copy`,e.splice(i,1,e[i],n),this.entriesChanged(e)}editEntry(t){this.yamlStringsCache={},this.yamlString=void 0;const e=t.currentTarget.index;3===this.baseTabIndex||(this.setActionsTab(e),this.touchpadTabIndex=2),this.entryIndex=e}exitEditEntry(t){this.yamlStringsCache={},this.yamlString=void 0,this.entryIndex=-1}setActionsTab(t){let e=this.config.custom_actions?.[t]??{type:"button",name:""};const i=e.type;"touchpad"==i&&2!=this.touchpadTabIndex&&(e=e[this.TOUCHPAD_TABS[this.touchpadTabIndex]]??{});const n=this.getEntryContext(e);"none"!=this.renderTemplate(e?.momentary_start_action?.action??"none",n)||"none"!=this.renderTemplate(e?.momentary_end_action?.action??"none",n)?"touchpad"==i&&2==this.touchpadTabIndex?this.actionsTabIndex=2:this.actionsTabIndex=1:"touchpad"!=i||"none"==this.renderTemplate(e?.multi_tap_action?.action??"none",n)&&"none"==this.renderTemplate(e?.multi_double_tap_action?.action??"none",n)&&"none"==this.renderTemplate(e?.multi_hold_action?.action??"none",n)?this.actionsTabIndex=0:this.actionsTabIndex=1}buildIconElement(e,i){let n=t.qy``,o=this.renderTemplate(e.icon??e.path??"",i);if(!o.includes(":")){const t=(this.config.custom_icons??[]).filter((t=>t.name==o))[0]??Ue.o$.filter((t=>t.name==o))[0];o=t?.path??o}if(!o.length)switch(this.renderTemplate(e?.type,i)){case"touchpad":o="mdi:gesture-tap-button";break;case"slider":o=this.renderTemplate(e?.vertical??!1,i)?"mdi:tune-vertical-variant":"mdi:tune-variant";break;default:o="mdi:circle-small"}return n=o.includes(":")?t.qy``:t.qy``,n}buildEntryList(){let e,i;return 3===this.baseTabIndex?(e=this.config.custom_icons??[],i="Custom Icons"):(e=this.config.custom_actions??[],i="Custom Actions"),t.qy`
${i}
${e.map(((e,i)=>{const n=this.getEntryContext(e),o=this.buildIconElement(e,n),a=this.renderTemplate(e.label,n),r=this.renderTemplate(e.type,n),s=this.renderTemplate(e.name,n);return t.qy`
${o}
${r} ⸱ ${s} ${a?` ⸱ ${a}`:""} ${n.config.entity?t.qy`${n.config.entity}${n.config.attribute?` ⸱ ${n.config.attribute}`:""}`:""}
`}))}
`}buildAddEntryButton(){return 3===this.baseTabIndex?t.qy``:t.qy`${Re.map((e=>t.qy`${e}`))}`}buildEntryHeader(){let e;return e=3===this.baseTabIndex?"SVG Icon":this.renderTemplate(this.config.custom_actions?.[this.entryIndex]?.type??"button",this.getEntryContext(this.activeEntry??{type:"button",name:""})),t.qy`
${e}
`}buildSelector(e,i,n,o){const a={...this.hass,localize:(t,e)=>({"ui.panel.lovelace.editor.action-editor.actions.repeat":"Repeat","ui.panel.lovelace.editor.action-editor.actions.fire-dom-event":"Fire DOM event","ui.panel.lovelace.editor.action-editor.actions.eval":"Evaluate JS","ui.panel.lovelace.editor.action-editor.actions.key":"Key","ui.panel.lovelace.editor.action-editor.actions.source":"Source","ui.panel.lovelace.editor.action-editor.actions.keyboard":"Keyboard","ui.panel.lovelace.editor.action-editor.actions.textbox":"Textbox","ui.panel.lovelace.editor.action-editor.actions.search":"Search"}[t]??this.hass.localize(t,e))};let r;switch(this.baseTabIndex){case 3:case 2:r=(0,Ke.vz)(this.activeEntry,i);break;case 1:break;default:r=this.config[i]}return i.endsWith(".confirmation.exemptions")&&(r=(r??[]).map((t=>t.user))),t.qy``}buildMainFeatureOptions(e=t.qy``){const i=this.renderTemplate(this.activeEntry.autofill_entity_id??this.config.autofill_entity_id??je.$6,this.getEntryContext(this.activeEntry)),n=(Array.isArray(this.activeEntry?.tap_action?.target?.entity_id)?this.activeEntry?.tap_action?.target?.entity_id?.[0]:this.activeEntry?.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id;return t.qy`${this.buildSelector("Name","name",{text:{}})} ${this.buildSelector("Entity","entity_id",{entity:{}},i?n:void 0)} ${this.hass.states[this.activeEntry?.entity_id??(i?n:"")??""]?this.buildSelector("Attribute","value_attribute",{attribute:{entity_id:this.activeEntry?.entity_id??n}},i?"state":void 0):""}
${e} ${this.buildSelector("Autofill","autofill_entity_id",{boolean:{}},this.config.autofill_entity_id??je.$6)} ${this.buildSelector("Haptics","haptics",{boolean:{}},i?this.config.haptics??je.Xy:je.Xy)}
`}buildAppearancePanel(e=t.qy``){return t.qy`
Appearance
${this.buildAlertBox("Change the feature appearance based on its value using a template like '{{ value | float }}'.")} ${e}${this.buildCodeEditor("jinja2")}
`}buildCommonAppearanceOptions(){const e=this.getEntryContext(this.activeEntry??{type:"button",name:""});let i,n=this.renderTemplate(this.activeEntry?.icon??"",e);if(n&&!n.includes(":")){const e=(this.config.custom_icons??[]).filter((t=>t.name==n))[0]??Ue.o$.filter((t=>t.name==n))[0];n=e?.path??n,i=t.qy``}return t.qy`${this.buildSelector("Label","label",{text:{multiline:!0}})}
${this.buildSelector("Icon","icon",{icon:{}})}${i??""}${this.buildSelector("Units","unit_of_measurement",{text:{}})}
`}buildInteractionsPanel(e){return t.qy`
Interactions
${e}
`}buildActionOption(e,i,n,o=!1){const a=this.getEntryContext(this.activeEntry??{}),r=this.renderTemplate(this.activeEntry.autofill_entity_id??this.config.autofill_entity_id??je.$6,a),s=this.renderTemplate(this.activeEntry?.[i]?.action??"none",a),c=this.renderTemplate(this.activeEntry?.[i]?.platform??this.config.platform??"Android TV",a);return t.qy`
${this.buildSelector(e,i,n)} ${"none"!=s&&"double_tap_action"==i?this.buildSelector("Double tap window","double_tap_action.double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.double_tap_window:void 0)??je.jc):"none"!=s&&"multi_double_tap_action"==i?this.buildSelector("Double tap window","multi_double_tap_action.double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.double_tap_window:void 0)??je.jc):"hold_action"==i&&this.activeEntry.hold_action?t.qy`
${this.buildSelector("Hold time","hold_action.hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.hold_time:void 0)??je.At)} ${"repeat"==this.renderTemplate(this.activeEntry?.hold_action?.action,a)?this.buildSelector("Repeat delay","hold_action.repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.repeat_delay:void 0)??je.a3):""}
`:"multi_hold_action"==i&&this.activeEntry.multi_hold_action?t.qy`
${this.buildSelector("Hold time","multi_hold_action.hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.hold_time:void 0)??je.At)} ${"repeat"==this.renderTemplate(this.activeEntry?.multi_hold_action?.action,a)?this.buildSelector("Repeat delay","multi_hold_action.repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},(r?this.config.repeat_delay:void 0)??je.a3):""}
`:""} ${"key"==s?t.qy`
${["Kodi","LG webOS"].includes(c)?this.buildSelector("Media Player ID",`${i}.media_player_id`,{entity:{filter:{domain:"media_player"}}},r?this.config.media_player_id:void 0):this.buildSelector("Remote ID",`${i}.remote_id`,{entity:{filter:{domain:"remote"}}},r?this.config.remote_id:void 0)} ${this.buildSelector("Platform",`${i}.platform`,{select:{mode:"dropdown",options:De,reorder:!1}},r?this.config.platform??"Android TV":"Android TV")}
${this.buildSelector("Key",`${i}.key`,{text:{}})}`:""} ${"source"==s?t.qy`
${["Android TV"].includes(c)?this.buildSelector("Remote ID",`${i}.remote_id`,{entity:{filter:{domain:"remote"}}},r?this.config.remote_id:void 0):this.buildSelector("Media Player ID",`${i}.media_player_id`,{entity:{filter:{domain:"media_player"}}},r?this.config.media_player_id:void 0)} ${this.buildSelector("Platform",`${i}.platform`,{select:{mode:"dropdown",options:De,reorder:!1}},r?this.config.platform??"Android TV":"Android TV")}
${this.buildSelector("Source",`${i}.source`,{text:{}})}`:""} ${["keyboard","textbox","search"].includes(s)?t.qy`
${this.buildSelector("Keyboard ID",`${i}.keyboard_id`,{entity:{filter:{domain:["remote","media_player"]}}},r?this.config.keyboard_id:void 0)} ${this.buildSelector("Platform",`${i}.platform`,{select:{mode:"dropdown",options:Ie,reorder:!1}},r&&Ie.includes(this.config.platform)?this.config.platform:"Android TV")}
${["Android TV","Roku"].includes(c)?t.qy`
${this.buildSelector("Remote ID",`${i}.remote_id`,{entity:{filter:{domain:"remote"}}},r?this.config.remote_id:void 0)} ${"Roku"==c?this.buildSelector("Media Player ID",`${i}.media_player_id`,{entity:{filter:{domain:"media_player"}}},r?this.config.media_player_id:void 0):""}
`:""} ${this.buildSelector("Prompt",`${i}.keyboard_prompt`,{text:{}})}`:""} ${"more-info"==s?this.buildSelector("Entity",`${i}.target.entity_id`,{entity:{}},r?this.activeEntry?.entity_id??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id:void 0):""} ${"toggle"==s?this.buildSelector("Target",`${i}.target`,{target:{}}):""} ${o||"fire-dom-event"==s?this.buildCodeEditor("action",i):""} ${"eval"==s?t.qy`${this.buildAlertBox("Evaluating raw JavaScript strings in browser is considered extremely unsafe. Do not use unless you know what you're doing!","warning")} ${this.buildCodeEditor("eval",i)}`:""} ${"none"!=s?t.qy`${this.buildSelector("Confirmation",`${i}.confirmation`,{boolean:{}},!1)} ${this.activeEntry?.[i]?.confirmation?t.qy`${this.buildSelector("Text",`${i}.confirmation.text`,{text:{}})} ${this.buildSelector("Exemptions",`${i}.confirmation.exemptions`,{select:{multiple:!0,mode:"list",options:this.people,reorder:!1}})}`:""}`:""}
`}buildTabBar(e,i,n){return t.qy`${n.map((e=>t.qy``))}`}buildButtonGuiEditor(){const e=this.buildTabBar(this.actionsTabIndex,this.handleActionsTabSelected,["default","momentary"]);let i;const n=Ne.concat();n.splice(Ne.indexOf("repeat"),1);const o={ui_action:{actions:n}};return i=1===this.actionsTabIndex?t.qy`${e} ${this.buildActionOption("Start behavior (optional)","momentary_start_action",o)} ${this.buildAlertBox("Set the action below, and then use the code editor to set a data field to the seconds the feature was held down using a template like '{{ hold_secs | float }}'.")} ${this.buildActionOption("End behavior (optional)","momentary_end_action",o,!0)}`:t.qy`${e} ${this.buildActionOption("Tap behavior (optional)","tap_action",o)} ${this.buildActionOption("Double tap behavior (optional)","double_tap_action",o)} ${this.buildActionOption("Hold behavior (optional)","hold_action",{ui_action:{actions:Ne}})}`,t.qy`${this.buildMainFeatureOptions()} ${this.buildAppearancePanel(this.buildCommonAppearanceOptions())} ${this.buildInteractionsPanel(i)}`}buildSliderGuiEditor(){const e=Ne.concat();e.splice(Ne.indexOf("repeat"),1);const i=this.getEntryContext(this.activeEntry??{}),n=Number(this.renderTemplate(this.activeEntry?.range?.[0],i)),o=Number(this.renderTemplate(this.activeEntry?.range?.[0],i)),a=Number(this.renderTemplate(this.activeEntry?.step,i)),r=this.renderTemplate(this.activeEntry?.unit_of_measurement,i);return t.qy`${this.buildMainFeatureOptions(t.qy`${this.buildSelector("Min","range.0",{number:{max:o??void 0,step:a,mode:"box",unit_of_measurement:r},RANGE_MIN:je.HB})} ${this.buildSelector("Max","range.1",{number:{min:n??void 0,step:a,mode:"box",unit_of_measurement:r},RANGE_MAX:je.bQ})} ${this.buildSelector("Step","step",{number:{min:0,step:a??Math.min(1,((o??je.bQ)-(n??je.HB))/je.zM),mode:"box",unit_of_measurement:r},STEP:je.RZ})} ${this.buildSelector("Update after action delay","value_from_hass_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},je.s$)}`)} ${this.buildAppearancePanel(t.qy`${this.buildCommonAppearanceOptions()}${this.buildSelector("Vertical","vertical",{boolean:{}},!1)}`)} ${this.buildInteractionsPanel(t.qy`${this.buildAlertBox()} ${this.buildActionOption("Behavior","tap_action",{ui_action:{actions:e}},!0)}`)}`}buildTouchpadGuiEditor(){const e=["default","multi-touch"];2==this.touchpadTabIndex&&e.push("momentary");const i=this.buildTabBar(this.actionsTabIndex,this.handleActionsTabSelected,e);let n;const o=Ne.concat();o.splice(Ne.indexOf("repeat"),1);const a={ui_action:{actions:o}};switch(this.actionsTabIndex){case 2:n=t.qy`${i} ${this.buildActionOption("Start behavior (optional)","momentary_start_action",a)} ${this.buildAlertBox("Set the action below, and then use the code editor to set a data field to the seconds the feature was held down using a template like '{{ hold_secs | float }}'.")} ${this.buildActionOption("End behavior (optional)","momentary_end_action",a,!0)}`;break;case 1:n=t.qy`${i} ${this.buildActionOption(`Multi-touch ${2==this.touchpadTabIndex?"tap":"swipe"} behavior (optional)`,"multi_tap_action",a)} ${2==this.touchpadTabIndex?this.buildActionOption("Multi-touch double tap behavior (optional)","multi_double_tap_action",a):""} ${this.buildActionOption("Multi-touch hold behavior (optional)","multi_hold_action",{ui_action:{actions:Ne}})}`;break;default:n=t.qy`${i} ${this.buildActionOption((2==this.touchpadTabIndex?"Tap":"Swipe")+" behavior (optional)","tap_action",a)} ${2==this.touchpadTabIndex?this.buildActionOption("Double tap behavior (optional)","double_tap_action",a):""} ${this.buildActionOption("Hold behavior (optional)","hold_action",{ui_action:{actions:Ne}})}`}const r=this.buildTabBar(this.touchpadTabIndex,this.handleTouchpadTabSelected,this.TOUCHPAD_TABS);return t.qy`${r} ${2==this.touchpadTabIndex?this.buildMainFeatureOptions():""} ${this.buildAppearancePanel(this.buildCommonAppearanceOptions())} ${this.buildInteractionsPanel(n)}`}buildIconGuiEditor(){return t.qy`
${this.buildAlertBox("Icons must be resized to 24x24px to display correctly. Use a tool like https://yqnn.github.io/svg-path-editor/ to edit your SVG paths. If correctly sized the icon will perfectly fit in the preview ouline below.","info")} ${this.buildSelector("Name","name",{text:{}})} ${this.buildSelector("SVG Path","path",{text:{multiline:!0}})}
`}buildEntryGuiEditor(){let e;if(3===this.baseTabIndex)e=this.buildIconGuiEditor();else switch(this.config.custom_actions?.[this.entryIndex]?.type){case"slider":e=this.buildSliderGuiEditor();break;case"touchpad":e=this.buildTouchpadGuiEditor();break;default:e=this.buildButtonGuiEditor()}return t.qy`
${e}
`}buildCodeEditor(e,i){let n,o,a,r,s;switch(e){case"jinja2":o=(this.entryIndex>-1?this.activeEntry?.styles:this.config.styles)??"",a=this.handleStyleCodeChanged,n="CSS Styles",r=!0,s=!1;break;case"action":e="yaml",a=this.handleActionCodeChanged,i=i??"tap_action",o=this.yamlStringsCache[i]??$e(this.activeEntry?.[i]??{}),o="{}"==o.trim()?"":o,r=!0,s=!1;break;case"layout":e="yaml",o=this.yaml,a=this.handleYamlCodeChanged,o="[]"==o.trim()?"":o,r=!1,s=!1;break;case"eval":e="jinja2",o=this.yamlStringsCache[`${i}.eval`]??(this.activeEntry?.[i]).eval??"",a=this.handleEvalCodeChanged,r=!1,s=!1;break;default:o=this.yaml,a=this.handleYamlCodeChanged,r=!0,s=!0}return t.qy`
${n?t.qy`
${n}
`:""}
`}buildEntryEditor(){let e;return e=this.guiMode?this.buildEntryGuiEditor():this.buildCodeEditor("yaml"),t.qy`${this.buildEntryHeader()}
${e}
`}buildLayoutEditor(){const e=this.config.custom_actions?.map((t=>t.name))??[],i=this.DEFAULT_KEYS.filter((t=>!e.includes(t.name))),n=this.DEFAULT_SOURCES.filter((t=>!e.includes(t.name)));return t.qy`
${this.buildCodeEditor("layout")}
${this.config.custom_actions?.length?t.qy`
Custom Actions
    ${this.config.custom_actions.map((e=>{const i=this.getEntryContext(e),n=this.buildIconElement(e,i);return t.qy`
  • ${n} ${e.name}
  • `}))}

`:""}
${i.length?t.qy`
Default Keys
    ${i.map((e=>{const i=this.getEntryContext(e),n=this.buildIconElement(e,i);return t.qy`
  • ${n} ${e.name}
  • `}))}
`:""} ${n.length?t.qy`
Default Sources
    ${n.map((e=>{const i=this.getEntryContext(e),n=this.buildIconElement(e,i);return t.qy`
  • ${n} ${e.name}
  • `}))}
`:""}
`}buildGeneralEditor(){return t.qy`
Media Platform and Entity IDs
${this.buildSelector("Platform","platform",{select:{mode:"dropdown",options:De,reorder:!1}},"Android TV")} ${this.buildSelector("Remote ID","remote_id",{entity:{filter:{domain:"remote"}}})} ${this.buildSelector("Keyboard ID","keyboard_id",{entity:{filter:{domain:["remote","media_player"]}}})} ${this.buildSelector("Media Player ID","media_player_id",{entity:{filter:{domain:"media_player"}}})}
Action Timings
${this.buildSelector("Hold time","hold_time",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},je.At)} ${this.buildSelector("Repeat delay","repeat_delay",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},je.a3)} ${this.buildSelector("Double tap window","double_tap_window",{number:{min:0,step:0,mode:"box",unit_of_measurement:"ms"}},je.jc)}
Miscellaneous
${this.buildCodeEditor("jinja2")}
${this.buildSelector("Autofill","autofill_entity_id",{boolean:{}},je.$6)} ${this.buildSelector("Haptics","haptics",{boolean:{}},je.Xy)}
${this.buildSelector("Title","title",{text:{}})}
`}buildErrorPanel(){return t.qy`${this.errors&&this.errors.length>0?t.qy`
${this.hass.localize("ui.errors.config.error_detected")}:
    ${this.errors.map((e=>t.qy`
  • ${e}
  • `))}
`:""}`}buildAlertBox(e="Set the action below, and then use the code editor to set a data field to the feature's new value using a template like '{{ value | float }}'.",i="info"){return t.qy``}buildPeopleList(){this.people=[];const t=Object.keys(this.hass.states).filter((t=>t.startsWith("person.")));for(const e of t)this.people.push({value:this.hass.states[e].attributes.user_id,label:this.hass.states[e].attributes.friendly_name??this.hass.states[e].attributes.id??e})}render(){if(!this.hass||!this.config)return t.qy``;this.buildPeopleList();const e={config:{...this.config,entity:(0,i.X)(this.hass,this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??"")}},n=(0,i.X)(this.hass,this.config.platform??"Android TV",e),[o,a]=(0,Ke.XO)(n);this.DEFAULT_KEYS=o,this.DEFAULT_SOURCES=a,this.DEFAULT_ACTIONS=[...o,...a];const r=this.buildTabBar(this.baseTabIndex,this.handleBaseTabSelected,this.BASE_TABS);let s;switch(this.baseTabIndex){case 3:case 2:s=this.entryIndex>-1&&this.activeEntry?t.qy`${this.buildEntryEditor()}`:t.qy`${this.buildEntryList()}${this.buildAddEntryButton()}`;break;case 1:s=this.buildLayoutEditor();break;default:s=this.buildGeneralEditor()}return t.qy`${r}${s}${this.buildErrorPanel()}`}renderTemplate(t,e){e={render:t=>this.renderTemplate(t,e),...e};const n=(0,i.X)(this.hass,t,e);if(n!=t)return n;if("string"==typeof t)for(const i of["VALUE","HOLD_SECS","UNIT"]){if(t==i)return e[i];t.includes(i)&&(t=t.replace(new RegExp(i,"g"),e[i]??""))}return t}getEntryContext(t){const e={VALUE:0,HOLD_SECS:0,UNIT:"",value:0,hold_secs:0,unit:"",config:{...t,entity:"",attribute:""}};e.config.attribute=this.renderTemplate(t?.value_attribute??"state",e),e.config.entity=this.renderTemplate(t?.entity_id??(Array.isArray(t?.tap_action?.target?.entity_id)?t?.tap_action?.target?.entity_id?.[0]:t?.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id,e);const i=this.renderTemplate(t?.unit_of_measurement,e);e.UNIT=i,e.unit=i;const n=this.getFeatureValue(e.config.entity,e.config.attribute);return e.VALUE=n,e.value=n,e}getFeatureValue(t,e){if(this.hass.states[t]){if("state"!=e&&e){let i;const n=e.match(/\[\d+\]$/);if(n){const o=parseInt(n[0].replace(/\[|\]/g,""));return e=e.replace(n[0],""),i=this.hass.states[t].attributes[e],i&&Array.isArray(i)&&i.length?i[o]:void 0}if(i=this.hass.states[t].attributes[e],null!=i||"elapsed"==e)switch(e){case"brightness":return Math.round(100*parseInt(i??0)/255);case"elapsed":if(t.startsWith("timer.")){const e=this.hass.states[t].attributes.duration.split(":"),i=3600*parseInt(e[0])+60*parseInt(e[1])+parseInt(e[2]);if("idle"==this.hass.states[t].state)return 0;if("active"==this.hass.states[t].state){const e=(Date.parse(this.hass.states[t].attributes.finishes_at)-Date.now())/1e3,n=Math.floor(i-e);return Math.min(n,i)}{const e=this.hass.states[t].attributes.remaining.split(":"),n=3600*parseInt(e[0])+60*parseInt(e[1])+parseInt(e[2]);return Math.floor(i-n)}}default:return i}return i}return this.hass.states[t].state}return""}updatePlatform(t){switch(t){case"KODI":case"Kodi":return"Kodi";case"ROKU":case"Roku":return"Roku";case"FIRE":case"FIRETV":case"FIRE_TV":case"FIRE TV":case"Fire TV":return"Fire TV";case"APPLE TV":case"Apple TV":return"Apple TV";case"SAMSUNG TV":case"Samsung TV":return"Samsung TV";case"WEBOS":case"LG webOS":return"LG webOS";case"ANDROID":case"ANDROIDTV":case"ANDROID_TV":case"ANDROID TV":case"Android TV":return"Android TV";default:return}}autofillDefaultFields(t){const e=structuredClone(t),i=[];for(const t of e.custom_actions??[])i.push(this.autofillDefaultEntryFields(e,t));return e.custom_actions=i,e}autofillDefaultEntryFields(t,e,i,n){const o=this.getEntryContext(e);if(this.renderTemplate(e.autofill_entity_id??t.autofill_entity_id??je.$6,o)){if(i&&n){const t=structuredClone(this.DEFAULT_ACTIONS.filter((t=>t.name==i))[0])??{},o=t[n];e={...o,...e}}else{const t=structuredClone(this.DEFAULT_ACTIONS.filter((t=>t.name==this.renderTemplate(e.name,o)))[0])??{};e={...t,...e,value_attribute:e.value_attribute??t.value_attribute}}for(const t of Pe)if(e[t]){const i=e[t]??{};switch(this.renderTemplate(i.action,o)){case"keyboard":case"textbox":case"search":case"key":case"source":break;case"toggle":case"more-info":case"service":case"perform-action":for(const t of["entity_id","device_id","area_id","label_id"])i.data?.[t]&&(i.target=i.target??{},i.target[t]=i.data?.[t],delete i.data?.[t]);default:delete i.keyboard_id,delete i.keyboard_prompt,delete i.remote_id,delete i.media_player_id,delete i.platform}e[t]=i}if("touchpad"==this.renderTemplate(e.type,o))for(const i of Fe)e[i]&&(e[i]=this.autofillDefaultEntryFields(t,e[i]??{},this.renderTemplate(e.name,o),i))}return e}handleUpdateDeprecatedConfig(){const t=this.updateDeprecatedFields(this.config);this.configChanged(t)}updateDeprecatedFields(t=this.config){const e=structuredClone(t);if("adb_id"in e&&(e.keyboard_id=e.adb_id,delete e.adb_id),"keyboard_mode"in e&&(e.platform=e.keyboard_mode,delete e.keyboard_mode),e.platform=this.updatePlatform(e.platform),"enable_button_feedback"in e&&(e.haptics=e.enable_button_feedback),"button_haptics"in e&&(e.haptics=e.button_haptics),!e.rows){const i=[],n=Object.keys(e).filter((t=>t.includes("_row")));for(const o of n){let n=t[o];"string"==typeof n&&(n=[n]),"volume_row"==o?n=["volume_"+n[0]]:"navigation_row"==o&&(n=["navigation_"+n[0]]),i.push(n),delete e[o]}e.rows=i}const i=JSON.stringify(e.rows??[]).replace(/vol_buttons/g,"volume_buttons").replace(/nav_buttons/g,"navigation_buttons").replace(/d_pad/g,"dpad").replace(/direction_pad/g,"dpad").replace(/num_pad/g,"numpad").replace(/number_pad/g,"numpad").replace(/x_pad/g,"xpad").replace(/gamepad/g,"xpad").replace(/xgamepad/g,"xpad").replace(/x_gamepad/g,"xpad").replace(/n_pad/g,"npad").replace(/ngamepad/g,"npad").replace(/n_gamepad/g,"npad").replace(/volume_slider/g,"slider").replace(/nav_touchpad/g,"touchpad").replace(/navigation_touchpad/g,"touchpad");if(e.rows=JSON.parse(i),!Array.isArray(e.custom_icons)&&"object"==typeof e.custom_icons&&null!=e.custom_icons){const t=[];for(const i of Object.keys(e.custom_icons))t.push({name:i,path:e?.custom_icons?.[i]});e.custom_icons=t}let n=[];if(Array.isArray(e.custom_actions)||"object"!=typeof e.custom_actions||null==e.custom_actions)n=e.custom_actions??[];else for(const t of Object.keys(e.custom_actions))n.push({...e.custom_actions?.[t],name:t});for(const t of["custom_keys","custom_sources"])if(t in e){for(const i of Object.keys(e[t]))n.push({...e[t]?.[i],name:i});delete e[t]}const o=n.findIndex((t=>"slider"==t.name)),a=n[o]??{type:"slider",name:"slider"};let r=!1;if("slider_style"in e){let t=a.styles??"";t+="\n:host {";const i=e.slider_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",a.styles=t.trim(),delete e.slider_style,r=!0}if("tooltip"in a){let t=a.styles??"";t+=`\n.tooltip {\n display: {{ "initial" if render(${a.tooltip}) else "none" }};\n}`,a.styles=t.trim(),r=!0}if("slider_range"in e&&(a.range=e.slider_range,delete e.slider_range,r=!0),"slider_step"in e&&(a.step=e.slider_step,delete e.slider_step,r=!0),"slider_attribute"in e&&(a.value_attribute=e.slider_attribute,delete e.slider_attribute,r=!0),"enable_slider_feedback"in e&&(a.haptics=e.enable_slider_feedback,delete e.enable_slider_feedback,r=!0),"slider_haptics"in e&&(a.haptics=e.slider_haptics,delete e.slider_haptics,r=!0),"slider_id"in e){e.media_player_id||(e.media_player_id=e.slider_id),a.entity_id=a.entity_id??e.slider_id??t.media_player_id??"";const i=a.tap_action??this.DEFAULT_KEYS.filter((t=>"slider"==t.name))[0].tap_action;if(i){const t=i.data??{},n=i.target??{};"entity_id"in n||(n.entity_id=t.entity_id??e.slider_id,delete t.entity_id),i.data=t,i.target=n}a.tap_action=i,delete e.slider_id,r=!0}if(r){const t=this.DEFAULT_KEYS.filter((t=>"slider"==t.name))[0];o>-1?n[o]={...structuredClone(t),...a}:n.push({...structuredClone(t),...a})}const s=n.findIndex((t=>"touchpad"==t.name)),c=n[s]??{type:"touchpad",name:"touchpad"};let l=!1;if("touchpad_style"in e){let t=c.styles??"";t+="\ntoucharea {";const i=e.touchpad_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",c.styles=t.trim(),delete e.touchpad_style,l=!0}if("touchpad_height"in e){let t=c.styles??"";t+=`\ntoucharea {\n height: ${e.touchpad_height};\n}`,c.styles=t.trim(),delete e.touchpad_height,l=!0}"enable_touchpad_feedback"in e&&(c.haptics=e.enable_touchpad_feedback,delete e.enable_touchpad_feedback,l=!0),"touchpad_haptics"in e&&(c.haptics=e.touchpad_haptics,delete e.touchpad_haptics,l=!0),"enable_double_click"in e&&(c.double_tap_action={action:"key",key:e.double_click_keycode??"BACK"},delete e.enable_double_click,delete e.double_click_keycode,l=!0),"long_click_keycode"in e&&(c.hold_action={action:"key",key:e.long_click_keycode??"DPAD_CENTER"},l=!0);const u=this.DEFAULT_KEYS.filter((t=>"touchpad"==t.name))[0];if(e.rows.toString().includes("touchpad")){const t=n.filter((t=>"center"==t.name))[0];if(t){for(const e of Pe)t[e]?c[e]=t[e]:u[e]&&!c[e]&&(c[e]=u[e]);l=!0}for(const t of Fe){const i=n.filter((e=>e.name==t))[0];!c[t]&&i&&e.rows.toString().includes("touchpad")&&(c[t]=i,delete c[t]?.icon,l=!0)}}if(l){for(const t of Fe)c[t]||(c[t]=structuredClone(u[t]??{}),delete c[t]?.type,delete c[t]?.icon);s>-1?n[s]={...structuredClone(u),...c}:n.push({...structuredClone(u),...c})}for(const[t,e]of n.entries()){const i=this.updateDeprecatedActionFields(e,n);for(const t of Fe)i[t]&&(i[t]=this.updateDeprecatedActionFields(i[t],n));n[t]=i}if(e.style){let t=e.styles??"";t+="\n:host {";const i=e.style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",e.styles=t.trim(),delete e.style}if(e.button_style){let t=e.styles??"";t+="\nremote-button {";const i=e.button_style;for(const e in i)t+=`\n ${e}: ${i[e]};`;t+="\n}",e.styles=t.trim(),delete e.button_style}if(e.row_styles){let t=e.styles??"";const i=e.row_styles;for(const e in i){if(e.includes("-"))t+=`\n#${e} {`;else if("rows"==e)t+="\n.row {";else{if("columns"!=e)continue;t+="\n.column {"}for(const n in i[e])t+=`\n ${n}: ${i[e][n]};`;t+="\n}"}e.styles=t.trim(),delete e.row_styles}return e.custom_actions=n,e}updateDeprecatedActionFields(t,e){let i=structuredClone(t);"svg_path"in i&&(i.icon=i.svg_path);const n=["key","source","service","service_data","data","target","navigation_path","navigation_replace","url_path","confirmation","pipeline_id","start_listening"],o=i.tap_action??{};let a=!1;for(const t of n)t in i&&(a=!0,o[t]=i[t],delete i[t]);a&&(i.tap_action=o);for(const t of Pe)if(t in i){const e=i[t];e&&(e.action?"call-service"==e.action&&(e.action="perform-action",e.perform_action=e.service??"",delete e.service):e.key?e.action="key":e.source?e.action="source":e.perform_action?e.action="perform-action":e.service?(e.action="perform-action",e.perform_action=e.service,delete e.service):e.navigation_path?e.action="navigate":e.url_path?e.action="url":e.browser_mod?e.action="fire-dom-event":e.pipeline_id||e.start_listening?e.action="assist":e.action="none",e.service_data&&(e.data={...e.service_data,...e.data},delete e.service_data),i[t]=e)}if(i.type=(i.type??"button").toLowerCase(),i.style){let t=i.styles??"";t+="\n:host {";const e=i.style;for(const i in e)t+=`\n ${i}: ${e[i]};`;t+="\n}",i.styles=t.trim(),delete i.style}if("template"in t){const n=e?.filter((e=>t.template==e.name))[0]??this.DEFAULT_ACTIONS.filter((e=>t.template==e.name))[0]??{};i=(0,Ke.D9)(structuredClone(n),t),delete i.template}return i}static get styles(){return t.AH`:host{display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}.content{padding:12px;display:inline-flex;flex-direction:column;gap:24px;box-sizing:border-box;width:100%}.action-options{display:inline-flex;flex-direction:column;gap:8px;box-sizing:border-box;width:100%}ha-expansion-panel{display:block;border-radius:6px;border:solid 1px var(--outline-color);--ha-card-border-radius:6px;--expansion-panel-content-padding:0}ha-icon{display:flex;color:var(--secondary-text-color)}.add-list-item{margin:0 18px 12px}ha-button{width:fit-content;--mdc-icon-size:100%}ha-list-item{text-transform:capitalize}.features{max-height:480px;overflow:auto;overflow-y:scroll}.feature-list-item{display:flex;align-items:center;pointer-events:none}.handle{display:flex;align-items:center;cursor:move;cursor:grab;padding-right:8px;padding-inline-end:8px;padding-inline-start:initial;direction:var(--direction);pointer-events:all}.feature-list-item-content{height:60px;font-size:16px;display:flex;align-items:center;justify-content:flex-start;flex-grow:1;gap:8px;overflow:hidden}.primary:first-letter{text-transform:capitalize}.feature-list-item-label{display:flex;flex-direction:column}.secondary{font-size:12px;color:var(--secondary-text-color)}.copy-icon,.edit-icon,.remove-icon{color:var(--secondary-text-color);pointer-events:all;--mdc-icon-button-size:36px}.header{display:inline-flex;justify-content:space-between;align-items:center}.text-icon{color:var(--mdc-dialog-content-ink-color,rgba(0,0,0,.6))}.back-title{display:flex;align-items:center;font-size:18px}.wrapper{width:100%}.gui-editor{display:inline-flex;flex-direction:column;gap:24px;padding:8px 0;width:100%}.yaml-editor{display:inline-flex;flex-direction:column;padding:8px 0;width:100%}ha-code-editor{--code-mirror-max-height:calc(100vh - 245px)}.layout-editor{display:flex;flex-direction:column;font-weight:500}.actions-list-container{background:var(--code-editor-background-color,var(--mdc-text-field-fill-color,#f5f5f5));padding:4px;border-radius:4px}.default-action-lists-container{display:flex;flex-direction:row}.action-list-container{max-height:285px;overflow:scroll}.custom-action-list-container{max-height:190px}.action-list{columns:1;-webkit-columns:1;-moz-columns:1;margin-top:4px;padding-left:4px}.custom-action-list{columns:2;-webkit-columns:2;-moz-columns:2}.action-list-item::marker{content:''}.action-list-item{display:flex;flex-direction:row;align-items:center;gap:4px;padding:2px 0}.action-list-item-label{width:100%;background:0 0;border:none;outline:0;font-family:monospace;font-size:14px}.error,.info{word-break:break-word;margin-top:8px}.error{color:var(--error-color)}.error ul{margin:4px 0}.error li,.warning li{white-space:pre-wrap}.title-header{font-size:20px;font-weight:500;padding:12px 4px}.panel-header{display:inline-flex;gap:4px}.style-header{font-size:var(--mdc-typography-body1-font-size,1rem);font-weight:500;padding:8px}.form{display:grid;grid-template-columns:repeat(var(--form-grid-column-count,auto-fit),minmax(var(--form-grid-min-width,200px),1fr));gap:24px 8px}.actions-form{display:grid;grid-template-columns:repeat(var(--form-grid-column-count,auto-fit),minmax(var(--form-grid-min-width,200px),1fr));gap:8px}.custom-icon-picked{position:absolute;padding:16px;pointer-events:none}.custom-icon-preview{align-self:center;outline:1px dashed var(--primary-color);--mdc-icon-size:50%}`}}He([(0,e.MZ)()],Be.prototype,"hass",void 0),He([(0,e.MZ)()],Be.prototype,"config",void 0),He([(0,e.wk)()],Be.prototype,"baseTabIndex",void 0),He([(0,e.wk)()],Be.prototype,"entryIndex",void 0),He([(0,e.wk)()],Be.prototype,"actionsTabIndex",void 0),He([(0,e.wk)()],Be.prototype,"touchpadTabIndex",void 0),He([(0,e.wk)()],Be.prototype,"guiMode",void 0),He([(0,e.wk)()],Be.prototype,"errors",void 0);var Ve=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let Ye=class extends t.WF{constructor(){super(...arguments),this.onKeyDownFired=!1}getRokuId(t){return(this.config?.keyboard_id??"").split(".")[0]!=t?"media_player"===t?this.config?.media_player_id:this.config?.remote_id:this.config?.keyboard_id}forceCursorToEnd(){this.textarea.selectionStart=this.textarea.value.length,this.textarea.selectionEnd=this.textarea.value.length}forceCursorToEndEvent(t){t.preventDefault(),this.forceCursorToEnd()}kodiOnKeyDown(t){if(t.stopImmediatePropagation(),["Backspace","Enter"].includes(t.key)){const t=this.textarea?.value??"";this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:t,done:!1})}}kodiOnInput(t){t.stopImmediatePropagation();const e=this.textarea?.value??"";this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!1})}rokuOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"backspace",Enter:"enter"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:i}),"Enter"==e&&this.closeDialog())}rokuOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.hass.callService("remote","send_command",{entity_id:this.config?.keyboard_id,command:`Lit_${i}`});else if(!this.onKeyDownFired){const t={deleteContentBackward:"backspace",insertLineBreak:"enter"}[e??""];t&&this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:t})}this.onKeyDownFired=!1}fireTvOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"67",Enter:"66"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input keyevent ${i}`}),"Enter"==e&&this.closeDialog())}fireTvOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.androidTvSendText(i);else if(!this.onKeyDownFired){const t={deleteContentBackward:"67",insertLineBreak:"66"}[e??""];t&&this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input keyevent ${t}`})}this.onKeyDownFired=!1}androidTvOnKeyDown(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.key,i={Backspace:"DEL",Enter:"ENTER"}[e??""];i&&(this.onKeyDownFired=!0,this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:i}),"Enter"==e&&this.closeDialog())}androidTvOnInput(t){t.stopImmediatePropagation(),this.forceCursorToEnd();const e=t.inputType??"",i=t.data??"";if(i&&"insertText"==e)this.androidTvSendText(i);else if(!this.onKeyDownFired){const t={deleteContentBackward:"DEL",insertLineBreak:"ENTER"}[e??""];t&&(this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:t}),"insertLineBreak"==e&&this.closeDialog())}this.onKeyDownFired=!1}androidTvEnterAndClose(){this.hass.callService("remote","send_command",{entity_id:this.config?.remote_id,command:"ENTER"}),this.closeDialog()}androidTvSendText(t){this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${t}"`})}keyboardOnPaste(t){t.stopImmediatePropagation(),"Kodi"!=this.config?.platform&&this.forceCursorToEnd();const e=t.clipboardData?.getData("Text");if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:this.textarea?.value??"",done:!1});break;case"Roku":this.hass.callService("remote","send_command",{entity_id:this.config?.keyboard_id,command:`Lit_${e}`});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${e}"`})}}textBox(t){const e=this.textarea?.value;if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!1});break;case"Roku":this.hass.callService("remote","send_command",{entity_id:this.getRokuId("remote"),command:`Lit_${e}`});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`input text "${e}"`})}this.closeDialog()}search(t){const e=this.textarea?.value;if(e)switch(this.config?.platform){case"Kodi":this.hass.callService("kodi","call_method",{entity_id:this.config?.keyboard_id,method:"Input.SendText",text:e,done:!0});break;case"Roku":this.hass.callService("roku","search",{entity_id:this.getRokuId("media_player"),keyword:e});break;default:this.hass.callService(this.domain??"remote",this.service??"send_command",{entity_id:this.config?.keyboard_id,command:`am start -a "android.search.action.GLOBAL_SEARCH" --es query "${e}"`})}this.closeDialog()}showDialog(t){this.config=t.detail,"media_player"===(this.config?.keyboard_id??"").split(".")[0]?(this.domain="androidtv",this.service="adb_command"):(this.domain="remote",this.service="send_command");const e=this.shadowRoot?.querySelector("dialog");if(e){try{e.showModal()}catch{e.close(),e.showModal()}window.addEventListener("popstate",(()=>this.closeDialog()))}this.textarea=this.shadowRoot?.querySelector("textarea");const i=this.textarea;"Kodi"==this.config?.platform&&"search"==this.config?.action&&this.hass.callService("kodi","call_method",{entity_id:this.config.keyboard_id,method:"Addons.ExecuteAddon",addonid:"script.globalsearch"}),setTimeout((()=>{i&&i.focus()}),.4)}cancelDialog(t){t.preventDefault(),this.closeDialog()}closeDialog(t){const e=this.shadowRoot?.querySelector("dialog");if(e){try{e.close()}catch{e.showModal(),e.close()}window.removeEventListener("popstate",(()=>this.closeDialog()))}this.textarea&&(this.textarea.value="",this.textarea.blur()),this.config=void 0,this.domain=void 0,this.service=void 0,this.textarea=void 0}buildDialogButton(e,i){return t.qy`
${e}
`}render(){let e,i,n,o,a=t.qy``,r=this.forceCursorToEndEvent;switch(this.config?.action){case"search":e="Search for something...",a=t.qy`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Search",this.search)}`;break;case"textbox":e="Type something...",a=t.qy`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Send",this.textBox)}`;break;default:switch(this.config?.platform){case"Kodi":i=this.kodiOnInput,n=this.kodiOnKeyDown,r=void 0;break;case"Roku":i=this.rokuOnInput,n=this.rokuOnKeyDown;break;case"Fire TV":i=this.fireTvOnInput,n=this.fireTvOnKeyDown;break;default:i=this.androidTvOnInput,n=this.androidTvOnKeyDown}e="Type something...",o=this.keyboardOnPaste,a=t.qy`${this.buildDialogButton("Close",this.closeDialog)}${this.buildDialogButton("Enter",this.androidTvEnterAndClose)}`}e=this.config?.keyboard_prompt??e;const s=t.qy``;return t.qy`${s}
${a}
`}static get styles(){return t.AH`:host{-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}dialog{height:0;width:0;display:inline-flex;flex-direction:column;position:fixed;border:none;background:var(--ha-card-background,var(--card-background-color,#fff));border-radius:var(--ha-card-border-radius,12px);opacity:0;transition:all .1s ease-in-out;pointer-events:none}dialog[open]{height:fit-content;width:85%;opacity:1;transition:all .1s ease-in-out;pointer-events:all}textarea{position:relative;height:180px;padding:8px;outline:0;background:0 0;border:none;resize:none;font-family:inherit;font-weight:500;font-size:30px}.buttons{height:36px;display:inline-flex;flex-direction:row;justify-content:space-between;margin:0 12px}.button{height:100%;width:min-content;align-content:center;cursor:pointer;border-radius:var(--mdc-shape-small,4px);overflow:hidden}button{height:100%;width:100%;background:0 0;opacity:1;border:none;overflow:hidden;cursor:pointer;padding:0}@media (hover:hover){button:hover{background:var(--ha-ripple-color);opacity:var(--md-ripple-hover-opacity)}}button:active{background:var(--ha-ripple-color);opacity:var(--md-ripple-pressed-opacity)}.button span{font-family:inherit;font-size:var(--paper-font-body1_-_font-size);font-weight:600;text-transform:uppercase;color:var(--mdc-theme-primary,#6200ee);user-select:none;-webkit-user-select:none;-moz-user-select:none;position:relative;top:-32px;padding:0 8px;pointer-events:none}dialog::backdrop{background:#000;opacity:.7}`}};Ve([(0,e.MZ)()],Ye.prototype,"hass",void 0),Ve([(0,e.wk)()],Ye.prototype,"config",void 0),Ye=Ve([(0,e.EM)("keyboard-dialog")],Ye);var Ze=__webpack_require__(44),ze=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let qe=class extends Ze.W{constructor(){super(...arguments),this.clickCount=0,this.hold=!1}onClick(t){if(t.stopImmediatePropagation(),this.clickCount++,"none"!=this.renderTemplate(this.config.double_tap_action?.action??"none")){if(this.clickCount>1)this.fireHapticEvent("success"),this.sendAction("double_tap_action"),this.endAction();else if(!this.clickTimer){const t=this.config.double_tap_action?.double_tap_window?this.renderTemplate(this.config.double_tap_action?.double_tap_window):je.jc;this.clickTimer=setTimeout((()=>{this.fireHapticEvent("light"),this.sendAction("tap_action"),this.endAction()}),t)}}else this.fireHapticEvent("light"),this.sendAction("tap_action"),this.endAction()}onStart(t){if(this.cancelRippleToggle(),this.swiping=!1,"targetTouches"in t?(this.initialX=t.targetTouches[0].clientX,this.initialY=t.targetTouches[0].clientY):(this.initialX=t.clientX,this.initialY=t.clientY),"none"!=this.renderTemplate(this.config.momentary_start_action?.action??"none"))this.fireHapticEvent("light"),this.momentaryStart=performance.now(),this.sendAction("momentary_start_action");else if("none"!=this.renderTemplate(this.config.momentary_end_action?.action??"none"))this.fireHapticEvent("light"),this.momentaryStart=performance.now();else if(!this.holdTimer){const t=this.renderTemplate(this.config.hold_action?.hold_time??je.At);this.holdTimer=setTimeout((()=>{if(!this.swiping)if(this.hold=!0,"repeat"==this.renderTemplate(this.config.hold_action?.action)){const t=this.renderTemplate(this.config.hold_action?.repeat_delay??je.a3);this.holdInterval||(this.holdInterval=setInterval((()=>{this.fireHapticEvent("selection"),this.sendAction("tap_action")}),t))}else this.fireHapticEvent("medium"),this.sendAction("hold_action")}),t)}}onEnd(t){this.swiping||("none"!=this.renderTemplate(this.config.momentary_end_action?.action??"none")?(this.fireHapticEvent("selection"),this.momentaryEnd=performance.now(),this.sendAction("momentary_end_action"),this.endAction()):"none"!=this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.endAction():this.hold?(t.stopImmediatePropagation(),t.preventDefault(),this.endAction()):this.onClick(t)),this.toggleRipple()}onMove(t){let e,i;"targetTouches"in t?(e=t.targetTouches[0].clientX,i=t.targetTouches[0].clientY):(e=t.clientX,i=t.clientY);const n=(this.initialX??e)-e,o=(this.initialY??i)-i;Math.abs(Math.abs(n)-Math.abs(o))>24&&(this.endAction(),this.swiping=!0)}onMouseLeave(t){this.endAction(),this.swiping=!0,this.toggleRipple()}onTouchCancel(t){this.endAction(),this.toggleRipple()}endAction(){clearTimeout(this.clickTimer),this.clickTimer=void 0,this.clickCount=0,clearTimeout(this.holdTimer),clearInterval(this.holdInterval),this.holdTimer=void 0,this.holdInterval=void 0,this.hold=!1,super.endAction()}render(){return this.setValue(),t.qy` ${this.buildStyles(this.config.styles)}`}static get styles(){return[super.styles,t.AH`:host{align-content:center;text-align:center}button{display:flex;height:inherit;width:inherit;border-radius:var(--size,48px);overflow:visible;cursor:pointer;pointer-events:all;position:relative;opacity:1;padding:0;background:rgb(0,0,0,0);border:none;flex-direction:column;align-content:center;text-align:center;justify-content:center;align-items:center;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}`]}};ze([(0,e.MZ)()],qe.prototype,"config",void 0),qe=ze([(0,e.EM)("remote-button")],qe);var We=__webpack_require__(740);class Ge{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}const Xe="important",Je=" !"+Xe,Qe=(ti=class extends Ge{constructor(t){if(super(t),1!==t.type||"style"!==t.name||t.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(t){return Object.keys(t).reduce(((e,i)=>{const n=t[i];return null==n?e:e+`${i=i.includes("-")?i:i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${n};`}),"")}update(t,[e]){const{style:i}=t.element;if(void 0===this.ut)return this.ut=new Set(Object.keys(e)),this.render(e);for(const t of this.ut)null==e[t]&&(this.ut.delete(t),t.includes("-")?i.removeProperty(t):i[t]=null);for(const t in e){const n=e[t];if(null!=n){this.ut.add(t);const e="string"==typeof n&&n.endsWith(Je);t.includes("-")||e?i.setProperty(t,e?n.slice(0,-11):n,e?Xe:""):i[t]=n}}return We.c0}},(...t)=>({_$litDirective$:ti,values:t}));var ti,ei=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let ii=class extends Ze.W{constructor(){super(...arguments),this.showTooltip=!1,this.thumbOffset=0,this.sliderOn=!0,this.currentValue=this.value,this.speed=.02,this.range=[je.HB,je.bQ],this.step=je.RZ,this.sliderWidth=0,this.sliderHeight=0,this.vertical=!1,this.thumbWidth=50,this.resizeObserver=new ResizeObserver((t=>{for(const e of t)this.sliderWidth=this.vertical?e.contentRect.height:e.contentRect.width,this.sliderHeight=this.vertical?e.contentRect.width:e.contentRect.height,this.setThumbOffset()})),this.rtl=!1}onInput(t){const e=t.currentTarget;if(this.swiping)null==this.value&&(this.getValueFromHass=!0),this.setValue(),this.currentValue=this.value??0,this.setThumbOffset(),this.showTooltip=!1;else{clearTimeout(this.getValueFromHassTimer),this.getValueFromHass=!1,this.value=e.value,this.fireHapticEvent("selection");const t=parseFloat(this.oldValue??this.value??"0"),i=parseFloat(e.value??t);this.newValue=i,this.currentValue=t,this.setThumbOffset(),this.showTooltip=!0,i>this.range[0]&&(this.sliderOn=!0),clearInterval(this.intervalId),this.intervalId=void 0;let n=t;t>i?this.intervalId=setInterval((()=>{n-=this.speed,this.currentValue=n,this.setThumbOffset(),i>=n&&(clearInterval(this.intervalId),this.intervalId=void 0,this.currentValue=i,this.setThumbOffset())}),je.hI):t{n+=this.speed,this.currentValue=n,this.setThumbOffset(),i<=n&&(clearInterval(this.intervalId),this.intervalId=void 0,this.currentValue=i,this.setThumbOffset())}),je.hI)):this.currentValue=i,this.oldValue=i}}onStart(t){const e=t.currentTarget;this.swiping||(clearTimeout(this.getValueFromHassTimer),this.getValueFromHass=!1,this.currentValue=e.value,this.value=e.value,this.setThumbOffset(),this.showTooltip=!0,this.sliderOn=!0)}onEnd(t){this.setThumbOffset(),this.showTooltip=!1,this.setValue(),this.swiping?(this.getValueFromHass=!0,this.setValue(),this.currentValue=this.value??0,this.setThumbOffset(),this.setSliderState(this.currentValue)):(this.newValue||0==this.newValue||(this.newValue=Number(this.value)),this.precision||(this.newValue=Math.trunc(this.newValue)),this.value=this.newValue,this.fireHapticEvent("light"),this.sendAction("tap_action")),this.endAction(),this.resetGetValueFromHass()}onMove(t){if(!this.vertical){let e,i;e="clientX"in t?t.clientX:t.touches[0].clientX,i="clientY"in t?t.clientY:t.touches[0].clientY,null==this.initialY&&(this.initialY=i),null==this.initialX?this.initialX=e:Math.abs(e-this.initialX)this.range[0]}endAction(){clearInterval(this.valueUpdateInterval),this.valueUpdateInterval=void 0,super.endAction()}buildBackground(){const e={};return this.vertical&&(e.transform=`rotateZ(${this.rtl?"90":"270"}deg)`,e.width=`${this.sliderWidth}px`,e.height=`var(--background-height, ${this.sliderHeight}px)`),t.qy`
`}buildTooltip(){return t.qy`
`}buildSliderStyles(e){let i,n;const o=this.shadowRoot?.querySelector(".container");if(o){const t=getComputedStyle(o);i=t.getPropertyValue("height"),n=t.getPropertyValue("width")}const a=`'${this.renderTemplate("{{ value }}{{ unit }}",e)}'`;let r,s;this.vertical?(r=`translate(calc(-0.3 * ${n??"var(--height)"} - 0.8em - 18px), calc(-1 * var(--thumb-offset)))`,s="translateY(calc(-1 * var(--thumb-offset)))"):(r=`translate(var(--thumb-offset), calc(-0.5 * ${i??"var(--height)"} - 0.4em - 10px))`,s="translateX(var(--thumb-offset))");const c=`\n\t\t:host {\n\t\t\t--tooltip-label: ${a};\n\t\t\t--tooltip-transform: ${r};\n\t\t\t--icon-transform: ${s};\n\t\t}\n\t\t${this.rtl?"\n\t\t.slider::-webkit-slider-thumb {\n\t\t\tscale: -1;\n\t\t}\n\t\t.slider::-moz-range-thumb {\n\t\t\tscale: -1;\n\t\t}\n\t\t":""}\n\t\t`;return t.qy``}buildSlider(e=this.config,i){const n=i.value;this.setSliderState(n);const o={};return"none"==this.renderTemplate(e.tap_action?.action,i)&&(o["pointer-events"]="none"),this.vertical&&(o.transform=`rotateZ(${this.rtl?"90":"270"}deg)`,o.height=`${this.sliderHeight}px`,o.width=`${this.sliderWidth}px`,o["touch-action"]="none"),t.qy``}render(){this.setValue(),this.getValueFromHass&&(this.currentValue=this.value);const e={VALUE:this.getValueFromHass?this.value:this.currentValue,value:this.getValueFromHass?this.value:this.currentValue};this.config.range&&(this.range[0]=parseFloat(this.renderTemplate(this.config.range[0],e)??je.HB),this.range[1]=parseFloat(this.renderTemplate(this.config.range[1],e)??je.bQ)),this.speed=(this.range[1]-this.range[0])/50,this.config.step?this.step=Number(this.renderTemplate(this.config.step,e)):this.step=(this.range[1]-this.range[0])/je.zM;const i=this.step.toString().split(".");i.length>1?this.precision=i[1].length:this.precision=0,this.vertical=1==this.renderTemplate(this.config.vertical??!1,e),this.resizeObserver.observe(this);const n={},o=this.shadowRoot?.querySelector("input");if(o){const t=getComputedStyle(o),e=t.getPropertyValue("--thumb-width"),i=t.getPropertyValue("--height");this.thumbWidth=e?parseInt(e.replace(/[^0-9]+/g,"")):parseInt(i.replace(/[^0-9]+/g,"")),this.vertical&&(this.style.setProperty("width","fit-content"),this.style.setProperty("align-self","stretch"),n.height=`${this.sliderWidth}px`,n.width="var(--height)")}return this.rtl="rtl"==getComputedStyle(this).direction,this.setThumbOffset(),this.style.setProperty("--thumb-offset",`calc(${this.rtl&&!this.vertical?"-1 * ":""}${this.thumbOffset}px)`),t.qy`
${this.buildBackground()}${this.buildSlider(void 0,e)} ${this.buildIcon(this.config.icon,e)} ${this.buildLabel(this.config.label,e)}
${this.buildTooltip()}${this.buildSliderStyles(e)} ${this.buildStyles(this.config.styles,e)}`}disconnectedCallback(){super.disconnectedCallback(),this.resizeObserver.disconnect()}static get styles(){return[super.styles,t.AH`:host{display:flex;flex-flow:column;flex-grow:0;place-content:center space-evenly;align-items:center;position:relative;height:unset;width:100%;border:none;border-radius:25px;padding:0;box-sizing:border-box;line-height:0;outline:0;overflow:visible;font-size:inherit;color:inherit;pointer-events:none;--color:var(--primary-text-color);--height:48px}.container{all:inherit;overflow:hidden;height:var(--height);align-self:center;color:var(--background,var(--primary-background-color))}.background{position:absolute;width:inherit;height:var(--background-height,100%);background:var( --background, var(--primary-background-color) - )}.off,.slider{position:absolute;appearance:none;-webkit-appearance:none;-moz-appearance:none;pointer-events:all;height:100%;width:inherit;background:0 0;overflow:hidden}.slider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;height:var(--height);width:var(--thumb-width,var(--height));cursor:pointer;background:var(--color);border-color:rgb(0,0,0,0);box-shadow:var(--thumb-box-shadow,calc(-100vw - (var(--thumb-width,var(--height))/ 2)) 0 0 100vw var(--color));border-radius:var(--thumb-border-radius,var(--height))}.slider::-moz-range-thumb{appearance:none;-webkit-appearance:none;height:var(--height);width:var(--thumb-width,var(--height));cursor:pointer;background:var(--color);border-color:rgb(0,0,0,0);box-shadow:var(--thumb-box-shadow,calc(-100vw - (var(--thumb-width,var(--height))/ 2)) 0 0 100vw var(--color));border-radius:var(--thumb-border-radius,var(--height))}.off::-webkit-slider-thumb{visibility:hidden}.off::-moz-range-thumb{visibility:hidden}.tooltip{background:var(--clear-background-color);color:var(--primary-text-color);position:absolute;border-radius:.8em;padding:.2em .4em;height:20px;width:fit-content;line-height:20px;transform:var(--tooltip-transform);display:var(--tooltip-display)}.faded-out{opacity:0;transition:opacity 180ms ease-in-out 0s,left 180ms ease-in-out 0s,bottom 180ms ease-in-out 0s}.faded-in{opacity:1;transition:opacity 540ms ease-in-out 0s}.tooltip::after{content:var(--tooltip-label,0)}.icon{color:var(--icon-color,var(--background,var(--primary-background-color)));--mdc-icon-size:var(--size, 32px)}`]}};Un([ht()],Hn.prototype,"config",void 0),Un([dt()],Hn.prototype,"showTooltip",void 0),Un([dt()],Hn.prototype,"thumbOffset",void 0),Un([dt()],Hn.prototype,"sliderOn",void 0),Un([dt()],Hn.prototype,"currentValue",void 0),Un([dt()],Hn.prototype,"sliderWidth",void 0),Un([dt()],Hn.prototype,"sliderHeight",void 0),Hn=Un([lt("remote-slider")],Hn);var Yn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let Zn=class extends Rn{constructor(){super(...arguments),this.clickCount=0,this.hold=!1,this.holdStart=!1,this.holdMove=!1}onClick(t){t.stopImmediatePropagation(),this.clickCount++;const e=this.targetTouches?.length||1;if("none"!=this.renderTemplate(this.config.double_tap_action?.action??"none")||"none"!=this.renderTemplate(this.config.multi_double_tap_action?.action??"none")){const t=`${this.getMultiPrefix()}double_tap_action`;if(this.clickCount>e)this.fireHapticEvent("success"),this.sendAction(t),this.endAction();else if(!this.clickTimer){const e=this.getMultiPrefix();let i="double_tap_window"in(this.config[t]??{})?this.renderTemplate(this.config[t]?.double_tap_window):en;"multi_"==e&&this.config.multi_double_tap_action&&(i=this.renderTemplate(this.config.multi_double_tap_action?.double_tap_window??on)),this.clickTimer=setTimeout((()=>{this.fireHapticEvent("light"),this.sendAction(`${e}tap_action`),this.endAction()}),i)}}else this.fireHapticEvent("light"),this.sendAction(`${this.getMultiPrefix()}tap_action`),this.endAction()}onStart(t){if(this.cancelRippleToggle(),this.holdStart=!0,this.direction||"none"==this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.direction||"none"==this.renderTemplate(this.config.momentary_end_action?.action??"none")?this.holdTimer||this.setHoldTimer():(this.fireHapticEvent("light"),this.momentaryStart=performance.now()):(this.fireHapticEvent("light"),this.momentaryStart=performance.now(),this.sendAction("momentary_start_action")),"targetTouches"in t){let e=0,i=0;this.targetTouches=t.targetTouches;for(const t of this.targetTouches)e+=t.clientX,i+=t.clientY;this.initialX=e/this.targetTouches.length,this.initialY=i/this.targetTouches.length}else this.initialX=t.clientX,this.initialY=t.clientY}onEnd(t){this.direction||"none"==this.renderTemplate(this.config.momentary_end_action?.action??"none")?this.direction||"none"==this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.hold||this.holdMove?(t.stopImmediatePropagation(),t.preventDefault(),this.endAction(),"targetTouches"in t&&t.targetTouches?.length&&(this.hold=!0)):"targetTouches"in t&&t.targetTouches.length||this.onClick(t):this.endAction():(this.momentaryEnd=performance.now(),this.fireHapticEvent("selection"),this.sendAction("momentary_end_action"),this.endAction()),this.toggleRipple()}onMove(t){if(!this.initialX||!this.initialY||!this.holdStart)return;let e=0,i=0;if("targetTouches"in t){this.targetTouches=t.targetTouches;for(const t of this.targetTouches)e+=t.clientX,i+=t.clientY;e/=this.targetTouches.length,i/=this.targetTouches.length}else e=t.clientX??0,i=t.clientY??0;const n=this.initialX-e,o=this.initialY-i;Math.abs(Math.abs(n)-Math.abs(o))>2&&(Math.abs(n)>Math.abs(o)?this.direction=n>0?"left":"right":this.direction=o>0?"up":"down",this.holdMove||(this.fireHapticEvent("light"),this.sendAction(`${this.getMultiPrefix()}tap_action`,this.getActions()),this.holdMove=!0,this.holdTimer&&(clearTimeout(this.holdTimer),this.holdTimer=void 0,this.setHoldTimer())))}onMouseLeave(t){this.endAction(),this.toggleRipple()}onTouchCancel(t){this.endAction(),this.toggleRipple()}endAction(){clearTimeout(this.holdTimer),clearInterval(this.holdInterval),clearTimeout(this.clickTimer),this.holdTimer=void 0,this.holdInterval=void 0,this.clickTimer=void 0,this.hold=!1,this.holdStart=!1,this.holdMove=!1,this.direction=void 0,this.clickCount=0,this.initialX=void 0,this.initialY=void 0,this.targetTouches=void 0,super.endAction()}getActions(){return this.direction?this.config[this.direction]:this.config}getMultiPrefix(){return this.targetTouches&&this.targetTouches.length>1?"multi_":""}setHoldTimer(){const t=`${this.getMultiPrefix()}hold_action`,e=this.getActions(),i=this.renderTemplate(e[t]?.hold_time??nn);this.holdTimer=setTimeout((()=>{this.hold=!0;const t=this.getActions(),e=this.getMultiPrefix();let i="repeat"==this.renderTemplate(t.hold_action?.action),n=this.renderTemplate(t.hold_action?.repeat_delay??on);"multi_"==e&&t.multi_hold_action&&(i="repeat"==this.renderTemplate(t.multi_hold_action?.action),n=this.renderTemplate(t.multi_hold_action?.repeat_delay??on)),i?this.holdInterval||(this.holdInterval=setInterval((()=>{this.fireHapticEvent("selection"),this.sendAction(`${this.getMultiPrefix()}tap_action`,this.getActions())}),n)):(this.fireHapticEvent("medium"),this.sendAction(`${this.getMultiPrefix()}hold_action`,t))}),i)}render(){return this.setValue(),H`
${this.buildRipple()}
${this.buildStyles(this.config.styles)}`}static get styles(){return[super.styles,r`:host{display:contents;--mdc-ripple-press-opacity:0.04}toucharea{border-radius:32px;flex-grow:1;height:250px;width:-moz-available;width:-webkit-fill-available;width:fill-available;background:var(--primary-background-color,#6f767d);touch-action:none;text-align:center;position:relative;overflow:hidden;display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:space-between}.toucharea-row{min-height:var(--size,48px);display:flex;flex-direction:row;flex-wrap:nowrap;width:-moz-available;width:-webkit-fill-available;width:fill-available;justify-content:space-around;align-items:center}`]}};Yn([ht()],Zn.prototype,"config",void 0),Zn=Yn([lt("remote-touchpad")],Zn);let zn=class extends Rn{render(){return this.setValue(),H`${this.buildIcon(this.config.icon)}${this.buildLabel(this.config.label)}${this.buildStyles(this.config.styles)}`}};zn=Yn([lt("remote-icon-label")],zn);var Wn=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};console.info("%c UNIVERSAL-REMOTE-CARD v4.0.5","color: white; font-weight: bold; background: green");class Gn extends st{constructor(){super(...arguments),this.DEFAULT_ACTIONS=[],this.nRows=0,this.nColumns=0,this.nPads=0,this.editMode=!1,this.rtl=!1}static get properties(){return{hass:{},config:{}}}static getConfigElement(){return document.createElement("universal-remote-card-editor")}static getStubConfig(){return{type:"custom:android-tv-card",rows:[]}}getCardSize(){let t=this.config.rows?.length??0;return this.config.title&&(t+=1),t}async setConfig(t){if(!t)throw new Error("Invalid configuration");this.config=t}updateElementConfig(t){if(!Object.keys(t).length)return t;const e=structuredClone(t),i={config:{...this.config,entity:(0,ft.renderTemplate)(this.hass,e.entity_id??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??""),attribute:(0,ft.renderTemplate)(this.hass,e.value_attribute??"state")}};for(const t of Ji)if(e[t]){const n=e[t]??{};switch((0,ft.renderTemplate)(this.hass,n.action,i)){case"keyboard":case"textbox":case"search":n.keyboard_id=n.keyboard_id??this.config.keyboard_id,n.media_player_id=n.media_player_id??this.config.media_player_id;case"key":case"source":n.remote_id=n.remote_id??this.config.remote_id,n.platform=n.platform??this.config.platform;break;case"perform-action":{const[t,o]=(0,ft.renderTemplate)(this.hass,n.perform_action??"",i).split("."),a=n.target??{};if(!(a.entity_id||a.device_id||a.area_id||a.label_id)){const n=(0,ft.renderTemplate)(this.hass,e.entity_id??"",i);switch(t){case"remote":a.entity_id=n.startsWith("remote")?e.entity_id:this.config.remote_id;break;case"media_player":case"kodi":case"denonavr":case"webostv":a.entity_id=n.startsWith("media_player")?e.entity_id:this.config.media_player_id;break;default:a.entity_id=e.entity_id}}n.target=a;break}}e[t]=n}e.haptics=e.haptics??this.config.haptics??!0,this.config.double_tap_window&&(e.double_tap_action&&(e.double_tap_action.double_tap_window=e.double_tap_action?.double_tap_window??this.config.double_tap_window??en),e.multi_double_tap_action&&(e.multi_double_tap_action.double_tap_window=e.multi_double_tap_action.double_tap_window??this.config.double_tap_window??en)),(this.config.hold_time||e.double_tap_action||e.multi_double_tap_action)&&(e.hold_action=e.hold_action??{},e.hold_action.hold_time=e.hold_action?.hold_time??this.config.hold_time??nn,e.multi_hold_action=e.multi_hold_action??{},e.multi_hold_action.hold_time=e.multi_hold_action?.hold_time??this.config.hold_time??nn),this.config.repeat_delay&&("repeat"==e.hold_action?.action&&(e.hold_action.repeat_delay=e.hold_action.repeat_delay??this.config.repeat_delay??on),e.multi_hold_action&&"repeat"==e.multi_hold_action?.action&&(e.multi_hold_action.repeat_delay=e.multi_hold_action.repeat_delay??this.config.repeat_delay??on));const n=(0,ft.renderTemplate)(this.hass,e.type,i);if("slider"==n&&"slider"==(0,ft.renderTemplate)(this.hass,e.name,i)?e.entity_id=e.entity_id??this.config.media_player_id:e.entity_id=e.entity_id??(Array.isArray(e.tap_action?.target?.entity_id)?e.tap_action?.target?.entity_id?.[0]:e.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id,"touchpad"==n)for(const t of tn)e[t].entity_id=e.entity_id,e[t].value_attribute=e.value_attribute,e[t]=this.updateElementConfig(e[t]??{});return e}getElementConfig(t){let e=this.config.custom_actions;Array.isArray(e)||(e=[]);const i=e.filter((e=>e.name==t))[0];return i?i.autofill_entity_id??this.config.autofill_entity_id??an?this.updateElementConfig(i):i:this.updateElementConfig(this.DEFAULT_ACTIONS.filter((e=>e.name==t))[0]??{})}buildRow(t){this.nRows++;const e=`row-${this.nRows}`;return H`
${t}
`}buildColumn(t){this.nColumns++;const e=`column-${this.nColumns}`;return H`
${t}
`}buildPad(t){this.nPads++;const e=`pad-${this.nPads}`;return H`
${t.map((t=>this.buildButton(t)))}
`}buildButton(t,e){return e||(e=this.getElementConfig(t)),Object.keys(e).length?H``:H`
`}buildSlider(t,e){return H``}buildTouchpad(t,e){return H``}buildVolumeButtons(){return[this.buildButton("volume_down"),this.buildButton("volume_mute"),this.buildButton("volume_up")]}buildNavButtons(){const t=[this.buildButton("left"),this.buildButton("center"),this.buildButton("right")];return this.rtl&&t.reverse(),this.buildColumn([this.buildRow([this.buildButton("up")]),this.buildRow(t),this.buildRow([this.buildButton("down")])])}buildElements(t,e=!1,i={}){"string"==typeof t&&(t=[t]);const n=[];for(let o of t)if(o=(0,ft.renderTemplate)(this.hass,o,i),"string"==typeof o&&o.includes("- ")&&(o=zi(o)),"object"==typeof o&&null!=o)n.push(this.buildElements(o,!e,i));else{let t=[];switch(o){case"volume_buttons":{const t=this.buildVolumeButtons();e&&t.reverse(),n.push(...t);break}case"navigation_buttons":n.push(this.buildNavButtons());break;case"dpad":t=["left","center","right"],this.rtl&&t.reverse(),n.push(this.buildPad(["","up","",...t,"","down",""]));break;case"numpad":n.push(this.buildPad(["n7","n8","n9","n4","n5","n6","n1","n2","n3"]));break;case"xpad":t=["x","","b"],this.rtl&&t.reverse(),n.push(this.buildPad(["","y","",...t,"","a",""]));break;case"npad":t=["y","","a"],this.rtl&&t.reverse(),n.push(this.buildPad(["","x","",...t,"","b",""]));break;default:{const t=this.getElementConfig(o);switch(t.type){case"slider":n.push(this.buildSlider(o,t));break;case"touchpad":n.push(this.buildTouchpad(o,t));break;default:n.push(this.buildButton(o,t))}break}}}return e?this.buildColumn(n):this.buildRow(n)}buildDialog(){return H``}render(){if(!this.config||!this.hass)return H``;this.editMode=Boolean(document.querySelector("home-assistant")?.shadowRoot?.querySelector("hui-dialog-edit-card")?.shadowRoot?.querySelector("ha-dialog")),this.rtl="rtl"==getComputedStyle(this).direction;const t={config:{...this.config,entity:(0,ft.renderTemplate)(this.hass,this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??""),attribute:"state"}},e=(0,ft.renderTemplate)(this.hass,this.config.platform??"Android TV",t),[i,n]=Ln(e);this.DEFAULT_ACTIONS=[...i,...n];const o=[];this.nRows=0,this.nColumns=0,this.nPads=0;for(const e of this.config.rows??[]){const i=this.buildElements(e,!1,t);o.push(i)}const a=this.config.styles?H``:"";return H`${o}${this.buildDialog()}${a}`}static get styles(){return r`ha-card{padding:12px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--md-ripple-hover-opacity:var(--ha-ripple-hover-opacity, 0.08);--md-ripple-pressed-opacity:var( + )}.off,.slider{position:absolute;appearance:none;-webkit-appearance:none;-moz-appearance:none;pointer-events:all;height:100%;width:inherit;background:0 0;overflow:hidden}.slider::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;height:var(--height);width:var(--thumb-width,var(--height));cursor:pointer;background:var(--color);border-color:rgb(0,0,0,0);box-shadow:var(--thumb-box-shadow,calc(-100vw - (var(--thumb-width,var(--height))/ 2)) 0 0 100vw var(--color));border-radius:var(--thumb-border-radius,var(--height))}.slider::-moz-range-thumb{appearance:none;-webkit-appearance:none;height:var(--height);width:var(--thumb-width,var(--height));cursor:pointer;background:var(--color);border-color:rgb(0,0,0,0);box-shadow:var(--thumb-box-shadow,calc(-100vw - (var(--thumb-width,var(--height))/ 2)) 0 0 100vw var(--color));border-radius:var(--thumb-border-radius,var(--height))}.off::-webkit-slider-thumb{visibility:hidden}.off::-moz-range-thumb{visibility:hidden}.tooltip{background:var(--clear-background-color);color:var(--primary-text-color);position:absolute;border-radius:.8em;padding:.2em .4em;height:20px;width:fit-content;line-height:20px;transform:var(--tooltip-transform);display:var(--tooltip-display)}.faded-out{opacity:0;transition:opacity 180ms ease-in-out 0s,left 180ms ease-in-out 0s,bottom 180ms ease-in-out 0s}.faded-in{opacity:1;transition:opacity 540ms ease-in-out 0s}.tooltip::after{content:var(--tooltip-label,0)}.icon{color:var(--icon-color,var(--background,var(--primary-background-color)));--mdc-icon-size:var(--size, 32px)}`]}};ei([(0,e.MZ)()],ii.prototype,"config",void 0),ei([(0,e.wk)()],ii.prototype,"showTooltip",void 0),ei([(0,e.wk)()],ii.prototype,"thumbOffset",void 0),ei([(0,e.wk)()],ii.prototype,"sliderOn",void 0),ei([(0,e.wk)()],ii.prototype,"currentValue",void 0),ei([(0,e.wk)()],ii.prototype,"sliderWidth",void 0),ei([(0,e.wk)()],ii.prototype,"sliderHeight",void 0),ii=ei([(0,e.EM)("remote-slider")],ii);var ni=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};let oi=class extends Ze.W{constructor(){super(...arguments),this.clickCount=0,this.hold=!1,this.holdStart=!1,this.holdMove=!1}onClick(t){t.stopImmediatePropagation(),this.clickCount++;const e=this.targetTouches?.length||1;if("none"!=this.renderTemplate(this.config.double_tap_action?.action??"none")||"none"!=this.renderTemplate(this.config.multi_double_tap_action?.action??"none")){const t=`${this.getMultiPrefix()}double_tap_action`;if(this.clickCount>e)this.fireHapticEvent("success"),this.sendAction(t),this.endAction();else if(!this.clickTimer){const e=this.getMultiPrefix();let i="double_tap_window"in(this.config[t]??{})?this.renderTemplate(this.config[t]?.double_tap_window):je.jc;"multi_"==e&&this.config.multi_double_tap_action&&(i=this.renderTemplate(this.config.multi_double_tap_action?.double_tap_window??je.a3)),this.clickTimer=setTimeout((()=>{this.fireHapticEvent("light"),this.sendAction(`${e}tap_action`),this.endAction()}),i)}}else this.fireHapticEvent("light"),this.sendAction(`${this.getMultiPrefix()}tap_action`),this.endAction()}onStart(t){if(this.cancelRippleToggle(),this.holdStart=!0,this.direction||"none"==this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.direction||"none"==this.renderTemplate(this.config.momentary_end_action?.action??"none")?this.holdTimer||this.setHoldTimer():(this.fireHapticEvent("light"),this.momentaryStart=performance.now()):(this.fireHapticEvent("light"),this.momentaryStart=performance.now(),this.sendAction("momentary_start_action")),"targetTouches"in t){let e=0,i=0;this.targetTouches=t.targetTouches;for(const t of this.targetTouches)e+=t.clientX,i+=t.clientY;this.initialX=e/this.targetTouches.length,this.initialY=i/this.targetTouches.length}else this.initialX=t.clientX,this.initialY=t.clientY}onEnd(t){this.direction||"none"==this.renderTemplate(this.config.momentary_end_action?.action??"none")?this.direction||"none"==this.renderTemplate(this.config.momentary_start_action?.action??"none")?this.hold||this.holdMove?(t.stopImmediatePropagation(),t.preventDefault(),this.endAction(),"targetTouches"in t&&t.targetTouches?.length&&(this.hold=!0)):"targetTouches"in t&&t.targetTouches.length||this.onClick(t):this.endAction():(this.momentaryEnd=performance.now(),this.fireHapticEvent("selection"),this.sendAction("momentary_end_action"),this.endAction()),this.toggleRipple()}onMove(t){if(!this.initialX||!this.initialY||!this.holdStart)return;let e=0,i=0;if("targetTouches"in t){this.targetTouches=t.targetTouches;for(const t of this.targetTouches)e+=t.clientX,i+=t.clientY;e/=this.targetTouches.length,i/=this.targetTouches.length}else e=t.clientX??0,i=t.clientY??0;const n=this.initialX-e,o=this.initialY-i;Math.abs(Math.abs(n)-Math.abs(o))>2&&(Math.abs(n)>Math.abs(o)?this.direction=n>0?"left":"right":this.direction=o>0?"up":"down",this.holdMove||(this.fireHapticEvent("light"),this.sendAction(`${this.getMultiPrefix()}tap_action`,this.getActions()),this.holdMove=!0,this.holdTimer&&(clearTimeout(this.holdTimer),this.holdTimer=void 0,this.setHoldTimer())))}onMouseLeave(t){this.endAction(),this.toggleRipple()}onTouchCancel(t){this.endAction(),this.toggleRipple()}endAction(){clearTimeout(this.holdTimer),clearInterval(this.holdInterval),clearTimeout(this.clickTimer),this.holdTimer=void 0,this.holdInterval=void 0,this.clickTimer=void 0,this.hold=!1,this.holdStart=!1,this.holdMove=!1,this.direction=void 0,this.clickCount=0,this.initialX=void 0,this.initialY=void 0,this.targetTouches=void 0,super.endAction()}getActions(){return this.direction?this.config[this.direction]:this.config}getMultiPrefix(){return this.targetTouches&&this.targetTouches.length>1?"multi_":""}setHoldTimer(){const t=`${this.getMultiPrefix()}hold_action`,e=this.getActions(),i=this.renderTemplate(e[t]?.hold_time??je.At);this.holdTimer=setTimeout((()=>{this.hold=!0;const t=this.getActions(),e=this.getMultiPrefix();let i="repeat"==this.renderTemplate(t.hold_action?.action),n=this.renderTemplate(t.hold_action?.repeat_delay??je.a3);"multi_"==e&&t.multi_hold_action&&(i="repeat"==this.renderTemplate(t.multi_hold_action?.action),n=this.renderTemplate(t.multi_hold_action?.repeat_delay??je.a3)),i?this.holdInterval||(this.holdInterval=setInterval((()=>{this.fireHapticEvent("selection"),this.sendAction(`${this.getMultiPrefix()}tap_action`,this.getActions())}),n)):(this.fireHapticEvent("medium"),this.sendAction(`${this.getMultiPrefix()}hold_action`,t))}),i)}render(){return this.setValue(),t.qy`
${this.buildRipple()}
${this.buildStyles(this.config.styles)}`}static get styles(){return[super.styles,t.AH`:host{display:contents;--mdc-ripple-press-opacity:0.04}toucharea{border-radius:32px;flex-grow:1;height:250px;width:-moz-available;width:-webkit-fill-available;width:fill-available;background:var(--primary-background-color,#6f767d);touch-action:none;text-align:center;position:relative;overflow:hidden;display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:space-between}.toucharea-row{min-height:var(--size,48px);display:flex;flex-direction:row;flex-wrap:nowrap;width:-moz-available;width:-webkit-fill-available;width:fill-available;justify-content:space-around;align-items:center}`]}};ni([(0,e.MZ)()],oi.prototype,"config",void 0),oi=ni([(0,e.EM)("remote-touchpad")],oi);let ai=class extends Ze.W{render(){return this.setValue(),t.qy`${this.buildIcon(this.config.icon)}${this.buildLabel(this.config.label)}${this.buildStyles(this.config.styles)}`}};ai=ni([(0,e.EM)("remote-icon-label")],ai);var ri=function(t,e,i,n){var o,a=arguments.length,r=a<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(t,e,i,n);else for(var s=t.length-1;s>=0;s--)(o=t[s])&&(r=(a<3?o(r):a>3?o(e,i,r):o(e,i))||r);return a>3&&r&&Object.defineProperty(e,i,r),r};console.info("%c UNIVERSAL-REMOTE-CARD v4.1.2","color: white; font-weight: bold; background: green");class si extends t.WF{constructor(){super(...arguments),this.DEFAULT_ACTIONS=[],this.nRows=0,this.nColumns=0,this.nPads=0,this.editMode=!1,this.rtl=!1}static get properties(){return{hass:{},config:{}}}static getConfigElement(){return document.createElement("universal-remote-card-editor")}static getStubConfig(){return{type:"custom:android-tv-card",rows:[]}}getCardSize(){let t=this.config.rows?.length??0;return this.config.title&&(t+=1),t}async setConfig(t){if(!t)throw new Error("Invalid configuration");this.config=t}updateElementConfig(t){if(!Object.keys(t).length)return t;const e=structuredClone(t),n={config:{...this.config,entity:(0,i.X)(this.hass,e.entity_id??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??""),attribute:(0,i.X)(this.hass,e.value_attribute??"state")}};for(const t of Pe)if(e[t]){const o=e[t]??{};switch((0,i.X)(this.hass,o.action,n)){case"keyboard":case"textbox":case"search":o.keyboard_id=o.keyboard_id??this.config.keyboard_id;case"key":case"source":o.remote_id=o.remote_id??this.config.remote_id,o.media_player_id=o.media_player_id??this.config.media_player_id,o.platform=o.platform??this.config.platform;break;case"perform-action":{const[t,a]=(0,i.X)(this.hass,o.perform_action??"",n).split("."),r=o.target??{};if(!(r.entity_id||r.device_id||r.area_id||r.label_id)){const o=(0,i.X)(this.hass,e.entity_id??"",n);switch(t){case"remote":r.entity_id=o.startsWith("remote")?e.entity_id:this.config.remote_id;break;case"media_player":case"kodi":case"denonavr":case"webostv":r.entity_id=o.startsWith("media_player")?e.entity_id:this.config.media_player_id;break;default:r.entity_id=e.entity_id}}o.target=r;break}}e[t]=o}e.haptics=e.haptics??this.config.haptics??!0,this.config.double_tap_window&&(e.double_tap_action&&(e.double_tap_action.double_tap_window=e.double_tap_action?.double_tap_window??this.config.double_tap_window??je.jc),e.multi_double_tap_action&&(e.multi_double_tap_action.double_tap_window=e.multi_double_tap_action.double_tap_window??this.config.double_tap_window??je.jc)),(this.config.hold_time||e.double_tap_action||e.multi_double_tap_action)&&(e.hold_action=e.hold_action??{},e.hold_action.hold_time=e.hold_action?.hold_time??this.config.hold_time??je.At,e.multi_hold_action=e.multi_hold_action??{},e.multi_hold_action.hold_time=e.multi_hold_action?.hold_time??this.config.hold_time??je.At),this.config.repeat_delay&&("repeat"==e.hold_action?.action&&(e.hold_action.repeat_delay=e.hold_action.repeat_delay??this.config.repeat_delay??je.a3),e.multi_hold_action&&"repeat"==e.multi_hold_action?.action&&(e.multi_hold_action.repeat_delay=e.multi_hold_action.repeat_delay??this.config.repeat_delay??je.a3));const o=(0,i.X)(this.hass,e.type,n);if("slider"==o&&"slider"==(0,i.X)(this.hass,e.name,n)?e.entity_id=e.entity_id??this.config.media_player_id:e.entity_id=e.entity_id??(Array.isArray(e.tap_action?.target?.entity_id)?e.tap_action?.target?.entity_id?.[0]:e.tap_action?.target?.entity_id)??this.config.remote_id??this.config.media_player_id??this.config.keyboard_id,"touchpad"==o)for(const t of Fe)e[t].entity_id=e.entity_id,e[t].value_attribute=e.value_attribute,e[t]=this.updateElementConfig(e[t]??{});return e}getElementConfig(t){let e=this.config.custom_actions;Array.isArray(e)||(e=[]);const i=e.filter((e=>e.name==t))[0];return i?i.autofill_entity_id??this.config.autofill_entity_id??je.$6?this.updateElementConfig(i):i:this.updateElementConfig(this.DEFAULT_ACTIONS.filter((e=>e.name==t))[0]??{})}buildRow(e){this.nRows++;const i=`row-${this.nRows}`;return t.qy`
${e}
`}buildColumn(e){this.nColumns++;const i=`column-${this.nColumns}`;return t.qy`
${e}
`}buildPad(e){this.nPads++;const i=`pad-${this.nPads}`;return t.qy`
${e.map((t=>this.buildButton(t)))}
`}buildButton(e,i){return i||(i=this.getElementConfig(e)),Object.keys(i).length?t.qy``:t.qy`
`}buildSlider(e,i){return t.qy``}buildTouchpad(e,i){return t.qy``}buildVolumeButtons(){return[this.buildButton("volume_down"),this.buildButton("volume_mute"),this.buildButton("volume_up")]}buildNavButtons(){const t=[this.buildButton("left"),this.buildButton("center"),this.buildButton("right")];return this.rtl&&t.reverse(),this.buildColumn([this.buildRow([this.buildButton("up")]),this.buildRow(t),this.buildRow([this.buildButton("down")])])}buildElements(t,e=!1,n={}){"string"==typeof t&&(t=[t]);const o=[];for(let a of t)if(a=(0,i.X)(this.hass,a,n),"string"==typeof a&&a.includes("- ")&&(a=Me(a)),"object"==typeof a&&null!=a)o.push(this.buildElements(a,!e,n));else{let t=[];switch(a){case"volume_buttons":{const t=this.buildVolumeButtons();e&&t.reverse(),o.push(...t);break}case"navigation_buttons":o.push(this.buildNavButtons());break;case"dpad":t=["left","center","right"],this.rtl&&t.reverse(),o.push(this.buildPad(["","up","",...t,"","down",""]));break;case"numpad":o.push(this.buildPad(["n7","n8","n9","n4","n5","n6","n1","n2","n3"]));break;case"xpad":t=["x","","b"],this.rtl&&t.reverse(),o.push(this.buildPad(["","y","",...t,"","a",""]));break;case"npad":t=["y","","a"],this.rtl&&t.reverse(),o.push(this.buildPad(["","x","",...t,"","b",""]));break;default:{const t=this.getElementConfig(a);switch(t.type){case"slider":o.push(this.buildSlider(a,t));break;case"touchpad":o.push(this.buildTouchpad(a,t));break;default:o.push(this.buildButton(a,t))}break}}}return e?this.buildColumn(o):this.buildRow(o)}buildDialog(){return t.qy``}render(){if(!this.config||!this.hass)return t.qy``;this.editMode=Boolean(document.querySelector("home-assistant")?.shadowRoot?.querySelector("hui-dialog-edit-card")?.shadowRoot?.querySelector("ha-dialog")),this.rtl="rtl"==getComputedStyle(this).direction;const e={config:{...this.config,entity:(0,i.X)(this.hass,this.config.remote_id??this.config.media_player_id??this.config.keyboard_id??""),attribute:"state"}},n=(0,i.X)(this.hass,this.config.platform??"Android TV",e),[o,a]=(0,Ke.XO)(n);this.DEFAULT_ACTIONS=[...o,...a];const r=[];this.nRows=0,this.nColumns=0,this.nPads=0;for(const t of this.config.rows??[]){const i=this.buildElements(t,!1,e);r.push(i)}const s=this.config.styles?t.qy``:"";return t.qy`${r}${this.buildDialog()}${s}`}static get styles(){return t.AH`ha-card{padding:12px;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;--md-ripple-hover-opacity:var(--ha-ripple-hover-opacity, 0.08);--md-ripple-pressed-opacity:var( --ha-ripple-pressed-opacity, 0.12 );--ha-ripple-color:var(--secondary-text-color);--mdc-ripple-hover-color:var( @@ -11,4 +11,4 @@ );--md-ripple-pressed-color:var( --ha-ripple-pressed-color, var(--ha-ripple-color, var(--secondary-text-color)) - )}.row{display:flex;flex-wrap:nowrap;flex-direction:row;width:-moz-available;width:-webkit-fill-available;width:fill-available;flex:1;padding:4px;gap:8px;justify-content:space-evenly;align-items:center}.column{display:flex;flex-wrap:nowrap;flex-direction:column;width:-moz-available;width:-webkit-fill-available;width:fill-available;flex:1;padding:4px;justify-content:space-evenly;align-items:center}.edit-mode{outline:0}@media (hover:hover){.edit-mode :hover:not(:has(div:hover)){outline:1px dashed var(--red-color)}}.empty-button{width:var(--size,48px);height:var(--size,48px);position:relative}.button-pad{display:grid;grid-template-rows:repeat(3,var(--size,48px));grid-template-columns:repeat(3,var(--size,48px));grid-gap:8px 16px}`}}Wn([ht()],Gn.prototype,"hass",void 0),Wn([ht()],Gn.prototype,"config",void 0),customElements.define("universal-remote-card-editor",An),customElements.define("android-tv-card",Gn),window.customCards=window.customCards||[],window.customCards.push({type:"android-tv-card",name:"Universal Remote Card",description:"Super customizable universal remote card"}),window.structuredClone||(window.structuredClone=t=>JSON.parse(JSON.stringify(t))),window.performance||(window.performance=window.Date)})()})(); \ No newline at end of file + )}.row{display:flex;flex-wrap:nowrap;flex-direction:row;width:-moz-available;width:-webkit-fill-available;width:fill-available;flex:1;padding:4px;gap:8px;justify-content:space-evenly;align-items:center}.column{display:flex;flex-wrap:nowrap;flex-direction:column;width:-moz-available;width:-webkit-fill-available;width:fill-available;flex:1;padding:4px;justify-content:space-evenly;align-items:center}.edit-mode{outline:0}@media (hover:hover){.edit-mode :hover:not(:has(div:hover)){outline:1px dashed var(--red-color)}}.empty-button{width:var(--size,48px);height:var(--size,48px);position:relative}.button-pad{display:grid;grid-template-rows:repeat(3,var(--size,48px));grid-template-columns:repeat(3,var(--size,48px));grid-gap:8px 16px}`}}ri([(0,e.MZ)()],si.prototype,"hass",void 0),ri([(0,e.MZ)()],si.prototype,"config",void 0),customElements.define("universal-remote-card-editor",Be),customElements.define("android-tv-card",si),window.customCards=window.customCards||[],window.customCards.push({type:"android-tv-card",name:"Universal Remote Card",description:"Super customizable universal remote card"}),window.structuredClone||(window.structuredClone=t=>JSON.parse(JSON.stringify(t))),window.performance||(window.performance=window.Date)})()})(); \ No newline at end of file diff --git a/www/community/android-tv-card/universal-remote-card.min.js.LICENSE.txt b/www/community/android-tv-card/universal-remote-card.min.js.LICENSE.txt index ae7300a7..59b58789 100644 --- a/www/community/android-tv-card/universal-remote-card.min.js.LICENSE.txt +++ b/www/community/android-tv-card/universal-remote-card.min.js.LICENSE.txt @@ -13,3 +13,9 @@ * Copyright 2018 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ + +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ diff --git a/www/community/android-tv-card/universal-remote-card.min.js.gz b/www/community/android-tv-card/universal-remote-card.min.js.gz index f19ade4d..7f55b750 100644 Binary files a/www/community/android-tv-card/universal-remote-card.min.js.gz and b/www/community/android-tv-card/universal-remote-card.min.js.gz differ diff --git a/www/community/custom-brand-icons/custom-brand-icons.js b/www/community/custom-brand-icons/custom-brand-icons.js index 80dfdfbb..5493db10 100644 --- a/www/community/custom-brand-icons/custom-brand-icons.js +++ b/www/community/custom-brand-icons/custom-brand-icons.js @@ -1282,9 +1282,25 @@ "twinkly":[0,0,24,24,"m 21.471172,10.065454 c -0.0809,0.342636 -0.211131,0.671684 -0.386665,0.97686 -0.291588,0.498792 -0.640377,0.961854 -1.039274,1.379816 -0.472149,0.497471 -0.952893,0.987712 -1.44224,1.470715 -0.03878,0.03812 -0.05121,0.09578 -0.03112,0.146543 0.442541,0.998056 0.68324,2.073811 0.708228,3.165299 0.01788,0.884353 -0.05521,1.768195 -0.21844,2.637536 -0.201416,0.756089 -0.946602,1.233464 -1.717651,1.100329 -1.249532,-0.252285 -2.437713,-0.746355 -3.497709,-1.454448 -0.573523,-0.356679 -1.105098,-0.776748 -1.584694,-1.252278 l -0.02041,0.015 C 10.968916,19.49423 9.5144868,20.536442 7.9280649,21.341473 6.962613,21.822132 5.790323,21.428333 5.3108741,20.462283 4.9050165,19.051742 4.8201779,17.568239 5.0625942,16.120655 5.1925225,15.391005 5.3623716,14.669035 5.5713776,13.957985 5.4356992,13.837229 4.1969815,12.551029 3.7696046,12.000175 2.243256,10.036955 2.3043104,9.206627 2.3043104,9.206627 2.4002363,8.4773174 2.8690976,7.8506266 3.5416696,7.5527391 4.5906937,7.0264844 5.7634887,6.7966169 6.9335552,6.8879292 7.6671779,6.9327425 8.3883221,7.0987 9.067733,7.3790748 c 0.6474601,0.2629756 1.253067,0.6190316 1.797693,1.0569125 0.519633,0.4152877 0.989075,0.8897377 1.398815,1.4137307 0.05983,0.07439 0.05983,0.180595 0,0.25508 -0.06145,0.07321 -0.166523,0.09198 -0.249634,0.04482 v 0 C 10.978624,9.531376 9.8287591,9.1280825 8.6335688,8.9637964 8.0912471,8.9040381 7.5432257,8.9204237 7.005464,9.0126274 6.6121253,9.0882251 6.2288025,9.2088544 5.8630766,9.372166 c -0.032483,0.0148 -0.046547,0.05326 -0.0312,0.0855 l 0.010856,0.01632 c 0.8238346,0.868655 1.7705019,1.611911 2.8098417,2.206083 0.9008818,0.549481 1.4028827,1.139676 1.1084728,2.035134 -0.3056217,0.77312 -0.5209688,1.578942 -0.6417488,2.401453 0.8291028,-0.506021 1.6179077,-1.075284 2.3593927,-1.702728 0.751682,-0.529834 1.79194,-0.338916 2.306489,0.423307 0.730872,0.992357 1.637187,1.842571 2.674159,2.508641 -0.03524,-1.200301 -0.246857,-2.388893 -0.628178,-3.52756 -0.153825,-0.472029 0.03224,-0.988264 0.451804,-1.253641 1.067575,-0.783523 2.0539,-1.672119 2.944152,-2.652452 C 19.498464,9.53368 19.46048,9.387153 19.014104,9.2338375 17.764767,8.8681332 16.435328,8.8789868 15.19213,9.2649875 14.823856,9.4080715 14.409261,9.2259315 14.265466,8.8579659 v 0 C 14.237207,8.7865855 14.222027,8.7107745 14.22066,8.6340672 14.177292,7.645485 13.97243,6.6706646 13.61421,5.7482503 13.323803,4.9892869 12.895557,4.2905693 12.351068,3.6873397 c -0.02707,-0.02782 -0.07197,-0.02782 -0.099,0 v 0 c -0.37285,0.4199184 -0.699867,0.8783785 -0.975516,1.3676214 -0.348171,0.662456 -0.608164,1.3676231 -0.773341,2.0975432 -0.02183,0.048884 -0.06769,0.082842 -0.12076,0.089551 -0.104707,0.024928 -0.202662,-0.061188 -0.19131,-0.1682447 0.22593,-1.6110834 0.897429,-3.1270179 1.938795,-4.3768897 0.142465,-0.1750218 0.162815,-0.2225076 0.343264,-0.092252 l 0.042,0.024413 c 0.915711,0.6932614 1.655597,1.592097 2.159958,2.6239625 0.354607,0.7000121 0.627741,1.4383901 0.814058,2.2006562 0.01164,0.041957 0.05445,0.066844 0.09638,0.055627 v 0 c 0.735972,-0.217814 1.50113,-0.3207823 2.268492,-0.3052695 0.546626,0.00637 1.091542,0.062309 1.628109,0.166881 0.332298,0.068518 0.652444,0.1865168 0.949722,0.3500422 0.845911,0.4486893 1.274806,1.41805 1.037918,2.3458247"], "twinkly-candies-candles":[0,0,24,24,"M 21.792,9.637 22,9.454 21.751,9.17 21.542,9.353 21,9.832 A 4.514,4.514 0 0 0 20.894,9.187 4.561,4.561 0 0 0 20.616,8.375 L 21.458,7.636 21.666,7.453 21.417,7.169 21.209,7.352 20.441,8.027 A 5.036,5.036 0 0 0 19.616,6.938 L 20.308,6.331 20.517,6.147 20.268,5.864 20.059,6.047 19.341,6.678 A 6.631,6.631 0 0 0 18.086,5.808 L 18.737,5.237 18.946,5.054 18.7,4.77 18.491,4.953 17.725,5.626 C 17.571,5.555 17.45,5.507 17.375,5.479 A 6.728,6.728 0 0 0 16.145,5.15 L 16.771,4.6 16.979,4.417 16.73,4.133 16.522,4.317 15.652,5.081 A 6.683,6.683 0 0 0 14.32,5.068 v 0 L 14.777,4.668 14.985,4.485 14.73,4.2 14.522,4.383 13.61,5.183 A 3.538,3.538 0 0 0 12.521,5.63 L 12.684,5.356 12.826,5.118 12.5,4.926 12.359,5.164 11.682,6.3 l 0.1,0.058 a 2.867,2.867 0 0 0 -0.4,1.788 l -0.185,0.163 0.239,0.272 a 5.577,5.577 0 0 0 0.159,0.667 3.686,3.686 0 0 0 0.351,0.816 l -0.183,0.16 0.249,0.284 0.145,-0.128 a 5.692,5.692 0 0 0 0.77,0.8 c 0.142,0.128 0.28,0.254 0.412,0.388 l -0.153,0.134 0.249,0.284 0.153,-0.134 a 2.664,2.664 0 0 1 0.455,0.861 3.469,3.469 0 0 1 0.138,0.639 l -0.268,0.235 0.249,0.284 0.048,-0.042 a 4.562,4.562 0 0 1 -0.281,1.559 l -0.021,0.057 -0.331,0.29 0.133,0.152 a 3.467,3.467 0 0 1 -0.946,1.163 l 0.257,-0.637 0.1,-0.258 -0.35,-0.14 -0.1,0.257 -0.44,1.1 a 3.027,3.027 0 0 1 -1.647,0.2 l 0.765,-0.672 0.208,-0.183 -0.249,-0.283 -0.209,0.183 -0.955,0.838 A 1.86,1.86 0 0 1 9.508,17.067 1.591,1.591 0 0 1 9.086,16.389 l 0.913,-0.8 0.208,-0.183 L 9.958,15.122 9.75,15.305 8.988,15.974 A 9.431,9.431 0 0 1 8.909,14.8 Q 8.9,14.5 8.892,14.214 L 9.773,13.44 9.981,13.257 9.732,12.973 9.524,13.156 8.879,13.723 C 8.863,13.117 8.851,12.594 8.841,12.142 L 9.7,11.388 9.908,11.205 9.659,10.921 9.451,11.104 8.83,11.649 V 11.418 C 8.821,11.001 8.814,10.661 8.806,10.378 L 9.582,9.696 9.791,9.513 9.542,9.229 9.333,9.412 8.79,9.89 A 3.762,3.762 0 0 0 8.59,8.645 C 8.563,8.567 8.534,8.49 8.503,8.412 L 9.274,7.735 9.483,7.552 9.234,7.268 9.025,7.451 8.345,8.051 A 6.679,6.679 0 0 0 7.545,6.774 L 8.445,5.981 8.654,5.798 8.404,5.515 8.2,5.692 7.3,6.479 A 4.652,4.652 0 0 0 6.036,5.454 L 6.736,4.837 6.944,4.654 6.7,4.37 6.492,4.553 5.657,5.286 A 1.849,1.849 0 0 0 4.657,5.2 1.728,1.728 0 0 0 4.044,5.469 L 4.179,5.122 4.279,4.864 3.927,4.727 3.827,4.985 3.347,6.2 A 3.579,3.579 0 0 0 2.8,7.682 l -0.216,0.19 0.2,0.224 A 3.445,3.445 0 0 0 3.276,9.7 l -0.058,0.051 0.25,0.284 0.01,-0.009 a 10.94,10.94 0 0 0 0.672,0.882 4.576,4.576 0 0 0 0.458,0.49 l -0.116,0.1 0.249,0.283 0.159,-0.139 a 2.741,2.741 0 0 1 0.609,0.637 5.477,5.477 0 0 1 0.532,0.9 l -0.192,0.169 0.249,0.284 0.095,-0.084 a 3.984,3.984 0 0 1 0.229,1.761 l -0.279,0.245 0.211,0.24 a 3.8,3.8 0 0 1 -0.279,0.905 l -0.581,0.51 0.151,0.172 a 2.759,2.759 0 0 1 -0.515,0.47 2.863,2.863 0 0 1 -0.574,0.312 l 0.454,-0.4 0.208,-0.183 -0.249,-0.284 -0.208,0.183 -1,0.875 v 0 A 3.861,3.861 0 0 1 2.4,18.257 l 0.86,-0.756 0.209,-0.183 -0.25,-0.284 -0.208,0.183 -1,0.875 0.054,0.063 L 2.052,18.149 2,18.3 a 4.038,4.038 0 0 0 1.894,0.212 l 0.121,0.137 0.238,-0.21 A 2.96,2.96 0 0 0 5.222,17.992 2.884,2.884 0 0 0 5.797,17.456 L 6.739,16.629 6.947,16.446 6.7,16.16 6.492,16.343 6.343,16.473 A 4.25,4.25 0 0 0 6.53,15.726 L 7.39,14.971 7.598,14.788 7.347,14.5 7.139,14.683 6.592,15.163 A 4.154,4.154 0 0 0 6.321,13.44 L 7.094,12.761 7.302,12.578 7.053,12.3 6.845,12.483 6.166,13.083 A 5.721,5.721 0 0 0 5.638,12.194 2.887,2.887 0 0 0 5.021,11.543 L 5.737,10.915 5.945,10.732 5.7,10.443 5.491,10.626 4.732,11.294 A 4.406,4.406 0 0 1 4.277,10.808 10.533,10.533 0 0 1 3.6,9.92 L 4.464,9.161 4.672,8.978 4.422,8.7 4.214,8.883 3.4,9.594 A 3.262,3.262 0 0 1 2.94,8.061 L 3.829,7.281 4.037,7.1 3.788,6.816 3.58,7 2.986,7.522 A 3.424,3.424 0 0 1 3.486,6.28 L 3.686,6.359 3.917,5.77 A 1.682,1.682 0 0 1 4.68,5.358 1.662,1.662 0 0 1 5.513,5.409 L 5.488,5.431 5.737,5.714 5.905,5.567 A 4.016,4.016 0 0 1 6.836,6.235 6.436,6.436 0 0 1 8.221,8.154 L 8.031,8.322 8.28,8.606 8.38,8.52 c 0.022,0.057 0.043,0.115 0.063,0.173 a 3.956,3.956 0 0 1 0.191,1.328 l -0.3,0.262 0.249,0.283 0.064,-0.056 c 0.006,0.255 0.013,0.553 0.02,0.907 l 0.008,0.365 -0.22,0.193 0.229,0.261 c 0.011,0.463 0.023,1 0.04,1.619 l -0.2,0.172 0.207,0.234 q 0.008,0.261 0.015,0.54 a 8.43,8.43 0 0 0 0.1,1.292 l -0.093,0.082 0.154,0.175 a 1.784,1.784 0 0 0 0.491,0.829 2.066,2.066 0 0 0 0.85,0.474 l 0.1,0.119 0.082,-0.072 a 3.191,3.191 0 0 0 1.818,-0.166 l 0.274,0.11 0.129,-0.32 a 3.418,3.418 0 0 0 1.168,-1.306 v 0 l 0.995,-0.874 0.209,-0.184 -0.249,-0.283 -0.209,0.183 -0.422,0.371 a 4.675,4.675 0 0 0 0.216,-1.54 l 0.791,-0.7 0.209,-0.183 -0.249,-0.283 -0.209,0.183 -0.584,0.513 a 3.537,3.537 0 0 0 -0.13,-0.562 2.851,2.851 0 0 0 -0.486,-0.918 l 0.723,-0.635 0.208,-0.183 -0.249,-0.283 -0.208,0.183 -0.724,0.635 c -0.135,-0.139 -0.278,-0.268 -0.424,-0.4 A 5.507,5.507 0 0 1 12.271,10.272 L 13.001,9.63 13.209,9.447 12.96,9.163 12.752,9.346 12.061,9.953 A 3.537,3.537 0 0 1 11.74,9.2 5.374,5.374 0 0 1 11.574,8.471 L 12.435,7.715 12.643,7.532 12.394,7.248 12.186,7.432 11.53,8.007 a 2.676,2.676 0 0 1 0.376,-1.571 l 0.09,0.053 0.3,-0.505 a 3.067,3.067 0 0 1 1.3,-0.643 l 0.169,0.193 0.329,-0.289 c 0.077,-0.01 0.153,-0.019 0.226,-0.026 a 6.54,6.54 0 0 1 1.227,0 l 0.213,0.244 0.217,-0.19 a 6.757,6.757 0 0 1 1.327,0.342 c 0.062,0.024 0.156,0.061 0.275,0.114 l -0.1,0.087 0.249,0.283 0.217,-0.191 a 6.454,6.454 0 0 1 1.262,0.863 l -0.157,0.138 0.249,0.284 0.184,-0.162 a 4.906,4.906 0 0 1 0.822,1.091 l -0.106,0.093 0.249,0.283 0.029,-0.025 a 4.362,4.362 0 0 1 0.249,0.739 4.421,4.421 0 0 1 0.111,0.739 l -0.3,0.265 0.249,0.284 0.057,-0.05 a 4.986,4.986 0 0 1 -0.211,1.2 l -0.352,0.31 0.174,0.2 a 6.861,6.861 0 0 1 -0.607,1.157 l -0.509,0.447 0.1,0.117 c -0.174,0.219 -0.3,0.348 -0.32,0.37 a 5.094,5.094 0 0 1 -0.461,0.417 l 0.221,-0.828 0.072,-0.268 -0.365,-0.1 -0.071,0.268 -0.34,1.27 a 9.758,9.758 0 0 1 -0.869,0.476 c -0.158,0.08 -0.31,0.157 -0.456,0.238 l 0.187,-0.285 0.153,-0.232 -0.316,-0.208 -0.152,0.232 -0.728,1.108 0.041,0.026 a 2.082,2.082 0 0 0 -0.333,0.581 2.949,2.949 0 0 0 -0.188,1.117 l -0.249,0.218 0.249,0.284 0.047,-0.041 a 2,2 0 0 0 0.613,1.166 l -0.166,0.145 0.249,0.283 0.25,-0.219 a 2.4,2.4 0 0 0 0.981,0.188 3.514,3.514 0 0 0 0.532,-0.042 l 0.064,0.073 0.121,-0.106 a 4.262,4.262 0 0 0 1.3,-0.5 l -0.014,0.052 0.364,0.1 0.13,-0.475 a 4.276,4.276 0 0 0 0.9,-0.948 l 0.28,0.03 0.143,-1.318 0.03,-0.275 -0.376,-0.041 -0.03,0.276 -0.127,1.18 h -0.008 a 4.089,4.089 0 0 1 -0.743,0.838 l 0.148,-0.54 0.073,-0.268 -0.364,-0.1 -0.073,0.268 -0.275,1 a 4.16,4.16 0 0 1 -1.106,0.5 l 0.619,-0.544 0.208,-0.183 -0.249,-0.284 -0.208,0.183 -1,0.875 0.059,0.067 a 2.609,2.609 0 0 1 -1.256,-0.118 l 0.615,-0.54 0.208,-0.183 -0.249,-0.284 -0.208,0.183 -0.71,0.624 a 1.862,1.862 0 0 1 -0.591,-1.185 l 0.807,-0.709 0.208,-0.183 -0.249,-0.283 -0.209,0.183 -0.584,0.513 a 2.743,2.743 0 0 1 0.174,-0.917 1.944,1.944 0 0 1 0.318,-0.55 l 0.142,0.093 0.339,-0.516 a 7.019,7.019 0 0 1 0.729,-0.4 9.221,9.221 0 0 0 0.991,-0.555 l 0.168,0.045 0.053,-0.2 a 5.285,5.285 0 0 0 0.643,-0.558 c 0.02,-0.021 0.142,-0.147 0.313,-0.36 l 0.04,0.046 0.995,-0.875 L 20.8,13 l -0.249,-0.284 -0.209,0.183 -0.095,0.084 a 6.671,6.671 0 0 0 0.383,-0.808 l 0.9,-0.794 0.208,-0.183 -0.249,-0.284 -0.208,0.183 -0.427,0.375 a 5.016,5.016 0 0 0 0.157,-1.157 z M 21.745,9.237 21.933,9.451 21.8,9.57 21.612,9.356 Z m -0.336,-2 0.188,0.214 L 21.461,7.57 21.273,7.356 Z M 20.26,5.937 20.448,6.15 20.312,6.27 20.124,6.056 Z M 18.689,4.837 18.877,5.051 18.741,5.17 18.553,4.956 Z M 16.72,4.2 16.908,4.414 16.772,4.533 16.584,4.32 Z m -2,0.067 0.188,0.214 L 14.772,4.6 14.585,4.386 Z M 11.305,16.5 11.493,16.714 11.357,16.833 11.169,16.62 Z M 9.955,15.187 10.143,15.401 10.007,15.52 9.82,15.3 Z M 9.727,13.039 9.914,13.253 9.779,13.372 9.591,13.158 Z M 9.653,10.987 9.841,11.201 9.705,11.32 9.518,11.1 Z M 9.532,9.292 9.72,9.506 9.584,9.625 9.4,9.411 Z M 9.232,7.331 9.42,7.545 9.284,7.664 9.093,7.45 Z M 8.4,5.575 8.588,5.789 8.452,5.909 8.268,5.7 Z M 6.692,4.437 6.88,4.651 6.744,4.77 6.556,4.556 Z M 4.964,17.372 5.152,17.586 5.016,17.705 4.828,17.491 Z M 3.215,17.1 3.403,17.314 3.267,17.433 3.079,17.219 Z M 6.692,16.226 6.88,16.439 6.744,16.559 6.556,16.345 Z M 7.341,14.57 7.529,14.784 7.393,14.903 7.206,14.689 Z M 7.047,12.364 7.235,12.578 7.1,12.7 6.912,12.486 Z M 5.69,10.51 5.878,10.724 5.742,10.843 5.554,10.629 Z M 4.417,8.761 4.605,8.975 4.469,9.094 4.281,8.881 Z M 3.783,6.881 3.97,7.1 3.835,7.219 3.647,7 Z M 3.951,4.788 4.216,4.888 4.15,5.057 3.885,4.957 Z M 12.8,16.079 13.064,16.185 13,16.353 12.735,16.246 Z m 1.976,-1.332 0.188,0.213 -0.136,0.12 -0.188,-0.214 z m 0.336,-2.149 0.188,0.214 -0.136,0.12 -0.188,-0.214 z m -0.727,-1.885 0.188,0.214 -0.135,0.12 -0.188,-0.214 z M 12.966,9.237 13.153,9.451 13.018,9.57 12.83,9.356 Z M 12.4,7.322 12.588,7.536 12.452,7.655 12.265,7.441 Z M 12.518,4.991 12.762,5.137 12.67,5.292 12.425,5.147 Z m 6.113,8.555 0.275,0.074 -0.047,0.174 -0.275,-0.073 z m 2.388,3.162 0.283,0.031 -0.019,0.179 L 21,16.888 Z m -1.061,1.392 0.275,0.075 -0.048,0.175 -0.275,-0.075 z m -0.914,0.764 0.188,0.214 -0.136,0.119 -0.188,-0.214 z m -1.827,0 0.188,0.214 -0.136,0.119 -0.187,-0.214 z m -0.743,-1.554 0.188,0.214 -0.136,0.12 -0.188,-0.214 z m 0.426,-2.23 0.237,0.157 -0.1,0.151 -0.238,-0.157 z M 20.548,12.786 20.736,13 20.6,13.119 20.412,12.905 Z m 0.942,-1.8 0.188,0.214 -0.136,0.119 -0.187,-0.214 z"], "twinkly-candies-hearts":[0,0,24,24,"m 22,16.934 a 0.428,0.428 0 0 0 -0.422,-0.422 0.481,0.481 0 0 0 -0.359,0.193 0.477,0.477 0 0 0 -0.358,-0.193 0.428,0.428 0 0 0 -0.422,0.422 v 0.017 a 0.606,0.606 0 0 0 0.154,0.433 c 0.022,0.03 0.049,0.062 0.079,0.1 a 4.019,4.019 0 0 1 -0.95,0.922 0.417,0.417 0 0 0 -0.36,-0.207 0.477,0.477 0 0 0 -0.358,0.193 0.478,0.478 0 0 0 -0.359,-0.193 0.427,0.427 0 0 0 -0.421,0.421 v 0.017 a 0.569,0.569 0 0 0 0.115,0.379 q -0.124,0.028 -0.249,0.048 A 2.153,2.153 0 0 1 16.478,18.79 c 0.367,-0.354 0.366,-0.524 0.365,-0.667 V 18.1 a 0.427,0.427 0 0 0 -0.421,-0.422 0.481,0.481 0 0 0 -0.359,0.193 0.6,0.6 0 0 0 -0.154,-0.135 2.871,2.871 0 0 1 -0.04,-0.337 2.719,2.719 0 0 1 0.163,-1.1 c 0.022,-0.057 0.046,-0.11 0.07,-0.161 0.075,0.066 0.162,0.138 0.262,0.217 l 0.039,0.031 0.039,-0.031 c 0.744,-0.585 0.742,-0.809 0.741,-0.989 v -0.017 a 0.412,0.412 0 0 0 -0.045,-0.183 c 0.114,-0.061 0.232,-0.121 0.356,-0.183 a 7.625,7.625 0 0 0 1.167,-0.684 c 0.084,0.077 0.184,0.161 0.3,0.255 L 19,14.585 19.039,14.554 c 0.744,-0.585 0.742,-0.809 0.741,-0.989 V 13.55 a 0.43,0.43 0 0 0 -0.1,-0.27 7.032,7.032 0 0 0 0.757,-1.245 c 0.045,0.037 0.093,0.077 0.145,0.118 l 0.04,0.031 0.039,-0.031 c 0.743,-0.585 0.742,-0.809 0.741,-0.989 v -0.017 a 0.428,0.428 0 0 0 -0.422,-0.422 0.4,0.4 0 0 0 -0.111,0.017 4.569,4.569 0 0 0 0.07,-1.367 c 0.73,-0.578 0.729,-0.8 0.728,-0.979 V 8.379 A 0.427,0.427 0 0 0 21.245,7.957 0.479,0.479 0 0 0 20.887,8.15 0.488,0.488 0 0 0 20.543,7.958 4.749,4.749 0 0 0 19.604,6.641 C 19.956,6.297 19.955,6.13 19.955,5.99 V 5.973 A 0.427,0.427 0 0 0 19.534,5.551 0.481,0.481 0 0 0 19.175,5.744 0.481,0.481 0 0 0 18.817,5.551 0.419,0.419 0 0 0 18.461,5.751 6.143,6.143 0 0 0 17.475,5.262 C 17.35,5.215 17.22,5.172 17.088,5.132 A 0.563,0.563 0 0 0 17.182,4.785 V 4.769 A 0.427,0.427 0 0 0 16.76,4.347 0.479,0.479 0 0 0 16.402,4.54 0.481,0.481 0 0 0 16.043,4.347 0.428,0.428 0 0 0 15.621,4.769 v 0.016 c 0,0.025 0,0.051 0,0.078 a 6.253,6.253 0 0 0 -1.07,0.006 C 14.441,4.88 14.326,4.894 14.208,4.914 A 0.427,0.427 0 0 0 13.789,4.538 0.478,0.478 0 0 0 13.43,4.731 0.476,0.476 0 0 0 13.072,4.538 0.427,0.427 0 0 0 12.65,4.959 v 0.017 a 0.617,0.617 0 0 0 0.163,0.446 2.319,2.319 0 0 0 -0.678,0.672 2.557,2.557 0 0 0 -0.393,1.322 0.407,0.407 0 0 0 -0.2,-0.055 0.427,0.427 0 0 0 -0.421,0.422 V 7.8 c 0,0.18 0,0.4 0.742,0.989 l 0.039,0.031 0.03,-0.024 0.023,0.077 a 3.335,3.335 0 0 0 0.755,1.344 0.42,0.42 0 0 0 -0.058,0.207 v 0.017 c 0,0.18 0,0.4 0.741,0.989 l 0.039,0.031 0.039,-0.031 c 0.1,-0.079 0.189,-0.152 0.264,-0.219 a 2.6,2.6 0 0 1 0.562,0.974 c 0.019,0.061 0.037,0.124 0.053,0.187 h -0.041 a 0.427,0.427 0 0 0 -0.421,0.422 v 0.016 c 0,0.163 0,0.362 0.551,0.833 a 4.432,4.432 0 0 1 -0.25,1.1 l -0.033,0.087 -0.011,0.008 a 0.391,0.391 0 0 0 -0.184,0 0.423,0.423 0 0 0 -0.265,-0.1 0.427,0.427 0 0 0 -0.422,0.422 v 0.017 c 0,0.137 0,0.3 0.329,0.631 a 2.768,2.768 0 0 1 -0.978,0.8 v -0.031 a 0.427,0.427 0 0 0 -0.422,-0.422 0.481,0.481 0 0 0 -0.358,0.193 0.481,0.481 0 0 0 -0.359,-0.193 0.427,0.427 0 0 0 -0.421,0.422 v 0.016 a 0.578,0.578 0 0 0 0.043,0.25 2,2 0 0 1 -1.141,-0.493 c 0.343,-0.338 0.343,-0.5 0.342,-0.643 V 15.69 a 0.428,0.428 0 0 0 -0.422,-0.422 0.445,0.445 0 0 0 -0.31,0.14 c -0.016,0 -0.032,0 -0.049,0 a 0.355,0.355 0 0 0 -0.046,0 7.986,7.986 0 0 1 -0.1,-1.234 v -0.043 c 0.638,-0.523 0.638,-0.734 0.637,-0.9 V 13.215 A 0.428,0.428 0 0 0 9.597,12.793 0.418,0.418 0 0 0 9.348,12.88 c -0.013,-0.5 -0.023,-0.942 -0.031,-1.326 0.7,-0.562 0.7,-0.782 0.7,-0.958 V 10.579 A 0.428,0.428 0 0 0 9.595,10.157 0.444,0.444 0 0 0 9.288,10.294 7.1,7.1 0 0 0 9.131,8.459 c 0.5,-0.437 0.5,-0.628 0.5,-0.786 V 7.653 A 0.427,0.427 0 0 0 9.209,7.231 0.479,0.479 0 0 0 8.851,7.424 0.523,0.523 0 0 0 8.6,7.246 6.3,6.3 0 0 0 7.8,6.171 C 8.123,5.846 8.122,5.684 8.121,5.548 V 5.531 A 0.428,0.428 0 0 0 7.7,5.109 0.481,0.481 0 0 0 7.341,5.302 0.481,0.481 0 0 0 6.983,5.109 0.412,0.412 0 0 0 6.666,5.257 1.988,1.988 0 0 0 5.311,5 1.521,1.521 0 0 0 5,5.1 0.412,0.412 0 0 0 4.767,5.028 0.478,0.478 0 0 0 4.408,5.221 0.478,0.478 0 0 0 4.049,5.028 0.427,0.427 0 0 0 3.628,5.449 v 0.017 c 0,0.139 0,0.3 0.342,0.644 A 3.366,3.366 0 0 0 3.536,7.423 c 0,0.035 -0.006,0.069 -0.008,0.1 A 0.4,0.4 0 0 0 3.328,7.471 0.428,0.428 0 0 0 2.906,7.892 v 0.017 c 0,0.18 0,0.4 0.742,0.989 L 3.687,8.929 3.727,8.9 3.775,8.862 A 4.941,4.941 0 0 0 4.3,9.78 0.437,0.437 0 0 0 4.106,10.133 v 0.017 c 0,0.18 0,0.4 0.741,0.989 l 0.039,0.031 0.04,-0.031 c 0.117,-0.092 0.215,-0.176 0.3,-0.251 0.115,0.109 0.214,0.188 0.306,0.261 a 2.613,2.613 0 0 1 0.592,0.615 0.435,0.435 0 0 0 -0.241,0.38 v 0.017 c 0,0.18 0,0.4 0.741,0.989 l 0.04,0.031 0.039,-0.031 0.106,-0.086 a 3.8,3.8 0 0 1 0.2,1.468 A 0.643,0.643 0 0 0 6.951,14.595 0.481,0.481 0 0 0 6.6,14.4 0.428,0.428 0 0 0 6.178,14.822 v 0.016 c 0,0.169 0,0.376 0.609,0.883 A 2.9,2.9 0 0 1 6.207,16.716 0.415,0.415 0 0 0 5.859,16.527 0.481,0.481 0 0 0 5.5,16.72 0.481,0.481 0 0 0 5.142,16.527 0.427,0.427 0 0 0 4.72,16.949 v 0.016 a 0.637,0.637 0 0 0 0.189,0.478 l 0.042,0.05 a 3.315,3.315 0 0 1 -1.391,0.072 0.966,0.966 0 0 0 0,-0.105 V 17.443 A 0.429,0.429 0 0 0 3.138,17.021 0.477,0.477 0 0 0 2.78,17.214 0.481,0.481 0 0 0 2.421,17.021 0.429,0.429 0 0 0 2,17.445 v 0.017 c 0,0.18 0,0.4 0.741,0.989 l 0.04,0.031 0.039,-0.031 a 2.208,2.208 0 0 0 0.7,-0.737 3.461,3.461 0 0 0 1.549,-0.1 5.038,5.038 0 0 0 0.392,0.338 L 5.5,17.983 5.539,17.952 A 3.53,3.53 0 0 0 6.095,17.436 0.636,0.636 0 0 0 6.281,16.963 V 16.947 A 0.347,0.347 0 0 0 6.273,16.868 3.014,3.014 0 0 0 6.914,15.82 L 6.921,15.826 6.96,15.856 7,15.83 C 7.743,15.244 7.742,15.02 7.741,14.84 V 14.824 A 0.428,0.428 0 0 0 7.319,14.402 0.388,0.388 0 0 0 7.176,14.43 3.989,3.989 0 0 0 6.941,12.959 c 0.512,-0.446 0.511,-0.639 0.51,-0.8 V 12.142 A 0.428,0.428 0 0 0 7.029,11.72 0.477,0.477 0 0 0 6.671,11.913 0.481,0.481 0 0 0 6.312,11.72 H 6.289 L 6.259,11.677 A 2.792,2.792 0 0 0 5.634,11.027 C 5.546,10.957 5.452,10.882 5.343,10.779 5.676,10.447 5.676,10.284 5.675,10.146 V 10.129 A 0.429,0.429 0 0 0 5.253,9.707 0.459,0.459 0 0 0 4.923,9.868 0.362,0.362 0 0 0 4.831,9.834 0.436,0.436 0 0 0 4.536,9.707 0.46,0.46 0 0 0 4.452,9.716 4.818,4.818 0 0 1 3.9,8.761 C 4.472,8.278 4.471,8.076 4.47,7.911 V 7.894 A 0.427,0.427 0 0 0 4.048,7.473 0.476,0.476 0 0 0 3.69,7.666 L 3.674,7.648 c 0,-0.07 0,-0.14 0.012,-0.211 a 3.2,3.2 0 0 1 0.4,-1.221 C 4.166,6.289 4.259,6.367 4.37,6.454 L 4.409,6.485 4.448,6.454 C 5.192,5.869 5.191,5.645 5.189,5.465 V 5.448 A 0.426,0.426 0 0 0 5.116,5.216 1.437,1.437 0 0 1 5.347,5.144 1.837,1.837 0 0 1 6.597,5.384 0.421,0.421 0 0 0 6.569,5.531 v 0.017 c 0,0.18 0,0.4 0.741,0.989 L 7.349,6.568 7.388,6.537 C 7.511,6.437 7.613,6.354 7.698,6.276 A 6.238,6.238 0 0 1 8.416,7.238 0.432,0.432 0 0 0 8.071,7.653 v 0.016 c 0,0.18 0,0.4 0.742,0.99 l 0.039,0.03 0.039,-0.03 0.118,-0.1 A 7.574,7.574 0 0 1 9.14,10.242 0.42,0.42 0 0 0 8.883,10.148 0.427,0.427 0 0 0 8.461,10.57 v 0.017 c 0,0.177 0,0.4 0.707,0.962 0.009,0.4 0.019,0.855 0.032,1.382 A 0.451,0.451 0 0 0 8.883,12.784 0.427,0.427 0 0 0 8.461,13.206 v 0.016 c 0,0.18 0,0.4 0.741,0.989 l 0.034,0.027 A 8.911,8.911 0 0 0 9.305,15.3 0.374,0.374 0 0 0 9.169,15.274 0.427,0.427 0 0 0 8.747,15.696 v 0.017 c 0,0.18 0,0.4 0.741,0.989 l 0.039,0.031 0.039,-0.031 C 9.679,16.613 9.774,16.533 9.855,16.46 A 2.186,2.186 0 0 0 11.2,17 a 2.513,2.513 0 0 0 0.4,0.415 c 0.06,0.051 0.126,0.106 0.2,0.165 l 0.039,0.03 0.039,-0.03 c 0.075,-0.06 0.142,-0.115 0.2,-0.167 a 1.5,1.5 0 0 0 0.517,-0.632 l 0.044,-0.019 a 2.875,2.875 0 0 0 1.068,-0.853 c 0.084,0.076 0.182,0.159 0.3,0.251 l 0.039,0.031 0.039,-0.031 c 0.744,-0.585 0.743,-0.809 0.742,-0.989 v -0.017 a 0.428,0.428 0 0 0 -0.422,-0.422 0.423,0.423 0 0 0 -0.063,0 4.522,4.522 0 0 0 0.229,-0.985 l 0.051,0.041 0.039,0.03 0.039,-0.03 c 0.744,-0.586 0.742,-0.81 0.741,-0.99 v -0.016 a 0.427,0.427 0 0 0 -0.422,-0.422 0.481,0.481 0 0 0 -0.358,0.193 0.589,0.589 0 0 0 -0.148,-0.131 c -0.022,-0.1 -0.048,-0.2 -0.079,-0.293 A 2.744,2.744 0 0 0 13.84,11.097 c 0.367,-0.354 0.367,-0.524 0.366,-0.666 V 10.414 A 0.428,0.428 0 0 0 13.792,10 0.478,0.478 0 0 0 13.433,10.193 0.476,0.476 0 0 0 13.075,10 0.405,0.405 0 0 0 12.81,10.1 3.2,3.2 0 0 1 12.101,8.83 C 12.087,8.784 12.074,8.739 12.062,8.694 12.685,8.18 12.684,7.971 12.683,7.801 V 7.783 A 0.427,0.427 0 0 0 12.261,7.361 0.481,0.481 0 0 0 11.903,7.554 L 11.9,7.548 a 2.489,2.489 0 0 1 0.367,-1.371 2.175,2.175 0 0 1 0.651,-0.639 4.24,4.24 0 0 0 0.478,0.427 L 13.433,6 13.472,5.969 c 0.625,-0.491 0.724,-0.728 0.739,-0.9 0.123,-0.02 0.243,-0.036 0.357,-0.047 a 6.194,6.194 0 0 1 1.09,0 2.1,2.1 0 0 0 0.706,0.757 l 0.039,0.03 0.039,-0.03 A 3.638,3.638 0 0 0 17,5.263 c 0.146,0.042 0.29,0.089 0.428,0.141 a 6.022,6.022 0 0 1 0.982,0.489 0.357,0.357 0 0 0 -0.009,0.08 V 5.99 c 0,0.18 0,0.4 0.741,0.989 L 19.181,7.01 19.22,6.979 c 0.109,-0.085 0.2,-0.163 0.28,-0.234 a 4.59,4.59 0 0 1 0.893,1.238 0.433,0.433 0 0 0 -0.28,0.4 V 8.4 c 0,0.174 0,0.39 0.676,0.937 a 4.457,4.457 0 0 1 -0.089,1.511 0.685,0.685 0 0 0 -0.071,0.074 0.481,0.481 0 0 0 -0.359,-0.193 0.428,0.428 0 0 0 -0.422,0.422 v 0.017 c 0,0.155 0,0.343 0.477,0.769 a 6.848,6.848 0 0 1 -0.753,1.249 0.417,0.417 0 0 0 -0.205,-0.054 0.481,0.481 0 0 0 -0.358,0.193 0.481,0.481 0 0 0 -0.359,-0.193 0.428,0.428 0 0 0 -0.421,0.422 v 0.017 c 0,0.137 0,0.3 0.325,0.627 a 7.581,7.581 0 0 1 -1.123,0.656 c -0.13,0.065 -0.257,0.129 -0.379,0.2 a 0.408,0.408 0 0 0 -0.286,-0.115 0.478,0.478 0 0 0 -0.358,0.192 0.48,0.48 0 0 0 -0.359,-0.192 0.428,0.428 0 0 0 -0.422,0.421 v 0.017 c 0,0.142 0,0.312 0.364,0.665 a 2.1,2.1 0 0 0 -0.1,0.213 2.851,2.851 0 0 0 -0.177,1.157 c 0,0.094 0.015,0.188 0.029,0.28 h -0.039 a 0.427,0.427 0 0 0 -0.421,0.422 v 0.016 c 0,0.18 0,0.4 0.741,0.989 l 0.039,0.031 0.039,-0.031 c 0.1,-0.079 0.188,-0.151 0.263,-0.218 l 0.01,0.008 a 1.969,1.969 0 0 0 1.225,0.352 3.39,3.39 0 0 0 0.513,-0.04 c 0.11,-0.017 0.22,-0.039 0.328,-0.066 a 3.838,3.838 0 0 0 0.524,0.478 l 0.039,0.031 0.039,-0.031 c 0.744,-0.585 0.742,-0.809 0.741,-0.989 v -0.017 a 0.4,0.4 0 0 0 -0.006,-0.069 4.129,4.129 0 0 0 1,-0.956 4.78,4.78 0 0 0 0.4,0.349 l 0.039,0.031 0.04,-0.031 C 22,17.366 21.999,17.142 21.998,16.962 Z M 2.781,18.321 C 2.125,17.797 2.126,17.604 2.127,17.463 v -0.018 a 0.3,0.3 0 0 1 0.3,-0.3 0.411,0.411 0 0 1 0.3,0.207 l 0.055,0.1 0.056,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 v 0.018 C 3.435,17.6 3.436,17.8 2.781,18.321 Z m 2.716,-0.5 C 4.841,17.297 4.842,17.105 4.843,16.963 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.412,0.412 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.295,0.3 v 0.017 C 6.152,17.11 6.153,17.3 5.5,17.826 Z m 1.817,-3.3 a 0.3,0.3 0 0 1 0.295,0.3 v 0.017 c 0,0.142 0,0.335 -0.653,0.858 C 6.3,15.173 6.301,14.98 6.302,14.838 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.3 0.411,0.411 0 0 1 0.3,0.207 l 0.055,0.1 0.056,-0.1 a 0.414,0.414 0 0 1 0.301,-0.2 z M 6.307,11.849 a 0.411,0.411 0 0 1 0.3,0.207 l 0.055,0.1 0.056,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0,0.141 0,0.334 -0.653,0.858 C 6.004,12.496 6.005,12.303 6.006,12.162 V 12.144 A 0.3,0.3 0 0 1 6.307,11.849 Z M 4.531,9.838 a 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.12,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 C 4.226,10.485 4.228,10.292 4.228,10.151 V 10.133 A 0.3,0.3 0 0 1 4.531,9.838 Z M 3.688,7.9 3.743,7.8 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.295 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 C 3.033,8.24 3.034,8.047 3.035,7.906 V 7.894 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 z M 4.405,6.321 C 3.749,5.797 3.75,5.604 3.751,5.463 V 5.448 a 0.3,0.3 0 0 1 0.3,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.295,0.3 V 5.466 C 5.06,5.607 5.061,5.8 4.405,6.324 Z m 2.94,0.083 C 6.689,5.88 6.69,5.687 6.691,5.546 V 5.531 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 A 0.414,0.414 0 0 1 7.701,5.236 0.3,0.3 0 0 1 8,5.531 V 5.549 C 8,5.69 8,5.883 7.345,6.407 Z m 1.5,2.121 C 8.189,8.002 8.19,7.809 8.191,7.667 V 7.653 a 0.3,0.3 0 0 1 0.295,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.409,0.409 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 V 7.67 C 9.5,7.812 9.5,8.005 8.848,8.528 Z M 8.58,10.59 v -0.018 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.12,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 -0.65,-0.521 -0.648,-0.714 -0.648,-0.855 z m 0.654,3.493 C 8.578,13.559 8.58,13.367 8.58,13.225 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.12,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.3 v 0.017 c 0.007,0.145 0.008,0.337 -0.648,0.861 z m 0.29,2.481 C 8.868,16.04 8.87,15.847 8.87,15.705 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.119,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.295 v 0.017 c 0.007,0.145 0.008,0.338 -0.648,0.862 z m 2.318,0.886 c -0.656,-0.523 -0.655,-0.716 -0.654,-0.858 v -0.017 a 0.3,0.3 0 0 1 0.295,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.409,0.409 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 V 16.6 c 0.007,0.137 0.007,0.33 -0.648,0.853 z m 2.568,-2.59 a 0.3,0.3 0 0 1 0.295,0.295 v 0.017 c 0,0.142 0,0.335 -0.654,0.858 -0.656,-0.523 -0.654,-0.716 -0.654,-0.858 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.295 c 0.183,0 0.3,0.205 0.3,0.206 l 0.055,0.1 0.055,-0.1 a 0.414,0.414 0 0 1 0.306,-0.203 z m 0.2,-2.161 0.055,0.1 0.055,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 v 0.017 c 0,0.142 0,0.335 -0.654,0.858 -0.656,-0.523 -0.655,-0.716 -0.654,-0.858 v -0.017 a 0.3,0.3 0 0 1 0.295,-0.3 0.414,0.414 0 0 1 0.307,0.208 z M 12.775,10.42 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.12,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 -0.656,-0.524 -0.654,-0.717 -0.654,-0.858 z M 11.9,7.791 l 0.055,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 V 7.8 c 0,0.142 0,0.334 -0.654,0.858 C 11.245,8.134 11.246,7.942 11.247,7.8 V 7.783 a 0.3,0.3 0 0 1 0.295,-0.3 0.414,0.414 0 0 1 0.3,0.207 z M 13.43,5.835 C 12.774,5.311 12.776,5.118 12.776,4.977 V 4.959 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 c 0,0 0.12,-0.207 0.3,-0.207 a 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0.007,0.141 0.008,0.334 -0.648,0.858 z M 16.4,5.644 C 15.744,5.121 15.745,4.928 15.746,4.786 V 4.769 a 0.3,0.3 0 0 1 0.295,-0.295 c 0.184,0 0.3,0.2 0.3,0.206 l 0.055,0.1 0.055,-0.1 a 0.413,0.413 0 0 1 0.3,-0.206 0.3,0.3 0 0 1 0.3,0.295 v 0.017 c 0.006,0.142 0.008,0.335 -0.651,0.858 z m 2.773,1.205 C 18.517,6.325 18.518,6.132 18.519,5.991 V 5.973 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.412,0.412 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.295,0.295 v 0.018 c 0.007,0.141 0.008,0.334 -0.648,0.858 z M 20.235,8.4 V 8.379 a 0.3,0.3 0 0 1 0.3,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.054,0.1 0.056,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.295 V 8.4 c 0,0.141 0,0.334 -0.654,0.858 C 20.233,8.731 20.234,8.538 20.235,8.4 Z M 19.97,11.167 V 11.15 a 0.3,0.3 0 0 1 0.3,-0.295 0.411,0.411 0 0 1 0.3,0.207 l 0.056,0.1 0.055,-0.1 a 0.406,0.406 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.295 v 0.017 c 0,0.142 0,0.335 -0.654,0.858 C 19.968,11.5 19.969,11.306 19.97,11.164 Z m -1.62,2.4 V 13.55 a 0.3,0.3 0 0 1 0.295,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.409,0.409 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.295 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 C 18.348,13.9 18.349,13.709 18.35,13.568 Z m -2.6,1.8 v -0.018 a 0.3,0.3 0 0 1 0.295,-0.3 c 0.184,0 0.3,0.205 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.414,0.414 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.3 v 0.018 c 0,0.141 0,0.334 -0.654,0.858 C 15.747,15.7 15.748,15.51 15.749,15.369 Z m 0.314,3.609 C 15.408,18.453 15.409,18.26 15.41,18.118 V 18.1 a 0.3,0.3 0 0 1 0.295,-0.3 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.412,0.412 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.295,0.3 v 0.017 c 0.008,0.145 0.009,0.338 -0.647,0.861 z M 19,19.492 c -0.656,-0.524 -0.655,-0.717 -0.654,-0.858 v -0.018 a 0.3,0.3 0 0 1 0.295,-0.295 0.414,0.414 0 0 1 0.3,0.207 l 0.055,0.1 0.055,-0.1 a 0.409,0.409 0 0 1 0.3,-0.207 0.3,0.3 0 0 1 0.3,0.295 v 0.018 c 0.008,0.141 0.009,0.334 -0.651,0.858 z m 2.215,-1.683 C 20.56,17.286 20.561,17.093 20.562,16.951 v -0.017 a 0.3,0.3 0 0 1 0.3,-0.3 c 0.183,0 0.3,0.205 0.3,0.206 l 0.055,0.1 0.056,-0.1 a 0.409,0.409 0 0 1 0.3,-0.206 0.3,0.3 0 0 1 0.3,0.3 v 0.017 c 10e-4,0.142 0.002,0.335 -0.654,0.858 z"], - "twinkly-curtian":[0,0,24,24,"M 5.313,16.181 A 0.236,0.236 0 0 0 5.107,16.325 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,16.181 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,17.211 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,17.068 Z m 0,0.882 A 0.235,0.235 0 0 0 5.105,18.097 H 5.063 v 0.1 0 0.111 h 0.046 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 H 8.82 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.219,0.219 0 0 0 0.408,0 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.219,0.219 0 0 0 0.408,0 H 15.5 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.22,0.22 0 0 0 0.409,0 h 0.046 v -0.108 0 -0.1 h -0.043 a 0.22,0.22 0 0 0 -0.415,0 h -0.31 a 0.221,0.221 0 0 0 -0.416,0 H 17.4 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 h -0.326 a 0.221,0.221 0 0 0 -0.416,0 h -0.326 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 H 12.2 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 H 9.975 a 0.221,0.221 0 0 0 -0.416,0 H 9.233 a 0.221,0.221 0 0 0 -0.416,0 H 8.49 a 0.22,0.22 0 0 0 -0.415,0 H 7.748 a 0.221,0.221 0 0 0 -0.416,0 H 7.006 a 0.221,0.221 0 0 0 -0.416,0 H 6.263 a 0.22,0.22 0 0 0 -0.415,0 H 5.521 A 0.235,0.235 0 0 0 5.313,17.95 Z m 0,0.89 A 0.236,0.236 0 0 0 5.107,18.984 H 5.063 v 0.106 0 0.11 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 A 0.22,0.22 0 0 0 7,19.2 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.329 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,18.84 Z m 0,0.884 A 0.237,0.237 0 0 0 5.106,19.87 H 5.063 v 0.1 0 0.109 h 0.045 a 0.22,0.22 0 0 0 0.41,0 H 5.85 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 H 8.82 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 H 10.3 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 H 15.5 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 h 0.045 v -0.109 0 -0.1 h -0.043 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 17.4 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 h -0.329 a 0.22,0.22 0 0 0 -0.414,0 H 15.17 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 12.2 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 9.974 a 0.22,0.22 0 0 0 -0.414,0 H 9.232 a 0.22,0.22 0 0 0 -0.414,0 H 8.49 a 0.22,0.22 0 0 0 -0.415,0 H 7.747 a 0.22,0.22 0 0 0 -0.414,0 H 7.005 a 0.22,0.22 0 0 0 -0.414,0 H 6.263 a 0.22,0.22 0 0 0 -0.414,0 H 5.52 A 0.235,0.235 0 0 0 5.313,19.724 Z m 0,0.889 A 0.235,0.235 0 0 0 5.107,20.756 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,20.613 Z M 5.326,21.5 A 0.237,0.237 0 0 0 5.119,21.644 H 5.063 v 0.213 h 0.056 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 H 6.6 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 H 17 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.032 V 21.78 c 0,-0.011 0.012,-0.018 0.012,-0.029 0,-0.011 -0.011,-0.019 -0.012,-0.03 v -0.077 h -0.032 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 13.7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 8.5 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 5.532 A 0.236,0.236 0 0 0 5.326,21.5 Z M 5.313,15.3 A 0.235,0.235 0 0 0 5.107,15.443 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,15.3 Z m 0,-0.891 A 0.235,0.235 0 0 0 5.107,14.552 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,14.409 Z m 0,-0.887 A 0.236,0.236 0 0 0 5.107,13.666 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,13.522 Z m 0,-0.886 A 0.236,0.236 0 0 0 5.107,12.78 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.105 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.329 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,12.636 Z M 6.056,2 A 0.233,0.233 0 0 0 5.85,2.143 H 5.519 a 0.22,0.22 0 0 0 -0.412,0 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 A 0.235,0.235 0 0 0 6.056,2.5 0.237,0.237 0 0 0 6.262,2.357 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.237,0.237 0 0 0 8.282,2.5 0.235,0.235 0 0 0 8.488,2.357 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 A 0.235,0.235 0 0 0 11.252,2.5 0.237,0.237 0 0 0 11.458,2.357 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 V 2.25 2.25 2.143 H 18.88 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.258 A 0.235,0.235 0 0 0 6.056,2 Z M 5.313,2.886 A 0.236,0.236 0 0 0 5.107,3.03 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,2.886 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,3.916 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.22,0.22 0 0 0 7,4.13 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.045 v -0.107 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 5.519 A 0.234,0.234 0 0 0 5.313,3.773 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,4.802 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.107 0 V 4.8 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,4.659 Z m 0,0.886 A 0.237,0.237 0 0 0 5.107,5.688 H 5.063 v 0.112 0 0.1 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.22,0.22 0 0 0 7,5.9 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.045 V 5.8 5.8 5.688 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.411,0 H 7.746 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.261 a 0.219,0.219 0 0 0 -0.411,0 H 5.519 A 0.236,0.236 0 0 0 5.313,5.545 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,6.575 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.107 0 -0.107 H 18.88 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 5.519 A 0.233,0.233 0 0 0 5.313,6.432 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,7.461 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.411,0 H 7.746 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.261 a 0.219,0.219 0 0 0 -0.411,0 H 5.519 A 0.234,0.234 0 0 0 5.313,7.318 Z m 0,0.882 A 0.236,0.236 0 0 0 5.107,8.344 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.102 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 5.519 A 0.235,0.235 0 0 0 5.313,8.2 Z m 0,0.891 A 0.235,0.235 0 0 0 5.107,9.234 H 5.063 v 0.107 0 0.108 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.045 v -0.108 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,9.091 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,10.12 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.106 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,9.977 Z m 0,0.886 A 0.236,0.236 0 0 0 5.107,11.007 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,10.863 Z m 0,0.88 a 0.235,0.235 0 0 0 -0.209,0.15 H 5.063 v 0.1 0 0.114 H 5.11 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 H 6.6 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 H 15.5 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.047 v -0.114 0 -0.1 h -0.042 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 17.4 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 h -0.324 a 0.221,0.221 0 0 0 -0.418,0 H 14.43 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 12.2 a 0.221,0.221 0 0 0 -0.418,0 h -0.324 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 9.976 a 0.221,0.221 0 0 0 -0.418,0 H 9.234 a 0.221,0.221 0 0 0 -0.418,0 H 8.491 a 0.22,0.22 0 0 0 -0.417,0 H 7.749 a 0.221,0.221 0 0 0 -0.418,0 H 7.007 a 0.221,0.221 0 0 0 -0.418,0 H 6.264 a 0.22,0.22 0 0 0 -0.417,0 H 5.522 a 0.234,0.234 0 0 0 -0.209,-0.15 z"], + "twinkly-curtain":[0,0,24,24,"M 5.313,16.181 A 0.236,0.236 0 0 0 5.107,16.325 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,16.181 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,17.211 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,17.068 Z m 0,0.882 A 0.235,0.235 0 0 0 5.105,18.097 H 5.063 v 0.1 0 0.111 h 0.046 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 H 8.82 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.219,0.219 0 0 0 0.408,0 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.219,0.219 0 0 0 0.408,0 H 15.5 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.333 a 0.236,0.236 0 0 0 0.205,0.139 0.233,0.233 0 0 0 0.2,-0.139 h 0.334 a 0.233,0.233 0 0 0 0.2,0.139 0.236,0.236 0 0 0 0.205,-0.139 h 0.333 a 0.22,0.22 0 0 0 0.409,0 h 0.046 v -0.108 0 -0.1 h -0.043 a 0.22,0.22 0 0 0 -0.415,0 h -0.31 a 0.221,0.221 0 0 0 -0.416,0 H 17.4 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 h -0.326 a 0.221,0.221 0 0 0 -0.416,0 h -0.326 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 H 12.2 a 0.221,0.221 0 0 0 -0.416,0 h -0.327 a 0.22,0.22 0 0 0 -0.415,0 h -0.327 a 0.221,0.221 0 0 0 -0.416,0 H 9.975 a 0.221,0.221 0 0 0 -0.416,0 H 9.233 a 0.221,0.221 0 0 0 -0.416,0 H 8.49 a 0.22,0.22 0 0 0 -0.415,0 H 7.748 a 0.221,0.221 0 0 0 -0.416,0 H 7.006 a 0.221,0.221 0 0 0 -0.416,0 H 6.263 a 0.22,0.22 0 0 0 -0.415,0 H 5.521 A 0.235,0.235 0 0 0 5.313,17.95 Z m 0,0.89 A 0.236,0.236 0 0 0 5.107,18.984 H 5.063 v 0.106 0 0.11 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 A 0.22,0.22 0 0 0 7,19.2 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.329 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,18.84 Z m 0,0.884 A 0.237,0.237 0 0 0 5.106,19.87 H 5.063 v 0.1 0 0.109 h 0.045 a 0.22,0.22 0 0 0 0.41,0 H 5.85 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 H 8.82 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 H 10.3 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 H 15.5 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.41,0 h 0.332 a 0.22,0.22 0 0 0 0.411,0 h 0.045 v -0.109 0 -0.1 h -0.043 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 17.4 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 h -0.329 a 0.22,0.22 0 0 0 -0.414,0 H 15.17 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 12.2 a 0.22,0.22 0 0 0 -0.414,0 h -0.328 a 0.22,0.22 0 0 0 -0.415,0 h -0.328 a 0.22,0.22 0 0 0 -0.414,0 H 9.974 a 0.22,0.22 0 0 0 -0.414,0 H 9.232 a 0.22,0.22 0 0 0 -0.414,0 H 8.49 a 0.22,0.22 0 0 0 -0.415,0 H 7.747 a 0.22,0.22 0 0 0 -0.414,0 H 7.005 a 0.22,0.22 0 0 0 -0.414,0 H 6.263 a 0.22,0.22 0 0 0 -0.414,0 H 5.52 A 0.235,0.235 0 0 0 5.313,19.724 Z m 0,0.889 A 0.235,0.235 0 0 0 5.107,20.756 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,20.613 Z M 5.326,21.5 A 0.237,0.237 0 0 0 5.119,21.644 H 5.063 v 0.213 h 0.056 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 H 6.6 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 H 17 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.032 V 21.78 c 0,-0.011 0.012,-0.018 0.012,-0.029 0,-0.011 -0.011,-0.019 -0.012,-0.03 v -0.077 h -0.032 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 13.7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 8.5 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 5.532 A 0.236,0.236 0 0 0 5.326,21.5 Z M 5.313,15.3 A 0.235,0.235 0 0 0 5.107,15.443 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,15.3 Z m 0,-0.891 A 0.235,0.235 0 0 0 5.107,14.552 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,14.409 Z m 0,-0.887 A 0.236,0.236 0 0 0 5.107,13.666 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,13.522 Z m 0,-0.886 A 0.236,0.236 0 0 0 5.107,12.78 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.105 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.329 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,12.636 Z M 6.056,2 A 0.233,0.233 0 0 0 5.85,2.143 H 5.519 a 0.22,0.22 0 0 0 -0.412,0 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 A 0.235,0.235 0 0 0 6.056,2.5 0.237,0.237 0 0 0 6.262,2.357 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.237,0.237 0 0 0 8.282,2.5 0.235,0.235 0 0 0 8.488,2.357 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 A 0.235,0.235 0 0 0 11.252,2.5 0.237,0.237 0 0 0 11.458,2.357 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 V 2.25 2.25 2.143 H 18.88 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.258 A 0.235,0.235 0 0 0 6.056,2 Z M 5.313,2.886 A 0.236,0.236 0 0 0 5.107,3.03 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,2.886 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,3.916 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.22,0.22 0 0 0 7,4.13 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.045 v -0.107 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 5.519 A 0.234,0.234 0 0 0 5.313,3.773 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,4.802 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.107 0 V 4.8 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,4.659 Z m 0,0.886 A 0.237,0.237 0 0 0 5.107,5.688 H 5.063 v 0.112 0 0.1 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 A 0.22,0.22 0 0 0 7,5.9 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.221,0.221 0 0 0 0.413,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.045 V 5.8 5.8 5.688 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.411,0 H 7.746 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.261 a 0.219,0.219 0 0 0 -0.411,0 H 5.519 A 0.236,0.236 0 0 0 5.313,5.545 Z m 0,0.887 A 0.235,0.235 0 0 0 5.107,6.575 H 5.063 v 0.107 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.107 0 -0.107 H 18.88 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 5.519 A 0.233,0.233 0 0 0 5.313,6.432 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,7.461 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.411,0 H 7.746 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 H 6.261 a 0.219,0.219 0 0 0 -0.411,0 H 5.519 A 0.234,0.234 0 0 0 5.313,7.318 Z m 0,0.882 A 0.236,0.236 0 0 0 5.107,8.344 H 5.063 v 0.106 0 0.107 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.219,0.219 0 0 0 0.411,0 h 0.045 v -0.102 0 -0.107 H 18.88 a 0.219,0.219 0 0 0 -0.411,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 8.488 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 5.519 A 0.235,0.235 0 0 0 5.313,8.2 Z m 0,0.891 A 0.235,0.235 0 0 0 5.107,9.234 H 5.063 v 0.107 0 0.108 h 0.044 a 0.22,0.22 0 0 0 0.412,0 H 5.85 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.331 a 0.22,0.22 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.412,0 h 0.331 a 0.22,0.22 0 0 0 0.411,0 h 0.045 v -0.108 0 -0.107 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,9.091 Z m 0,0.886 A 0.235,0.235 0 0 0 5.107,10.12 H 5.063 v 0.107 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.107 0 -0.106 h -0.044 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 17.4 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.331 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 12.2 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 h -0.33 a 0.22,0.22 0 0 0 -0.412,0 H 7 a 0.22,0.22 0 0 0 -0.412,0 h -0.33 a 0.221,0.221 0 0 0 -0.413,0 H 5.515 A 0.233,0.233 0 0 0 5.313,9.977 Z m 0,0.886 A 0.236,0.236 0 0 0 5.107,11.007 H 5.063 v 0.106 0 0.106 h 0.044 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.219,0.219 0 0 0 0.412,0 h 0.33 a 0.22,0.22 0 0 0 0.413,0 h 0.044 v -0.106 0 -0.107 h -0.044 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 17.4 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 12.2 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.331 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 h -0.33 a 0.219,0.219 0 0 0 -0.412,0 H 7 a 0.219,0.219 0 0 0 -0.412,0 h -0.33 a 0.22,0.22 0 0 0 -0.413,0 H 5.515 A 0.234,0.234 0 0 0 5.313,10.863 Z m 0,0.88 a 0.235,0.235 0 0 0 -0.209,0.15 H 5.063 v 0.1 0 0.114 H 5.11 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 H 6.6 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 H 15.5 a 0.22,0.22 0 0 0 0.407,0 h 0.335 a 0.22,0.22 0 0 0 0.407,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.219,0.219 0 0 0 0.406,0 h 0.336 a 0.22,0.22 0 0 0 0.407,0 h 0.047 v -0.114 0 -0.1 h -0.042 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 17.4 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 h -0.324 a 0.221,0.221 0 0 0 -0.418,0 H 14.43 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.22,0.22 0 0 0 -0.417,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 12.2 a 0.221,0.221 0 0 0 -0.418,0 h -0.324 a 0.221,0.221 0 0 0 -0.418,0 h -0.325 a 0.221,0.221 0 0 0 -0.418,0 H 9.976 a 0.221,0.221 0 0 0 -0.418,0 H 9.234 a 0.221,0.221 0 0 0 -0.418,0 H 8.491 a 0.22,0.22 0 0 0 -0.417,0 H 7.749 a 0.221,0.221 0 0 0 -0.418,0 H 7.007 a 0.221,0.221 0 0 0 -0.418,0 H 6.264 a 0.22,0.22 0 0 0 -0.417,0 H 5.522 a 0.234,0.234 0 0 0 -0.209,-0.15 z"], "twinkly-festoon":[0,0,24,24,"m 20.9,11.925 h -2.1 a 1.856,1.856 0 1 0 2.91,1.523 1.834,1.834 0 0 0 -0.81,-1.523 z M 18.984,10.15 v 0.521 h -0.046 a 0.166,0.166 0 0 0 -0.166,0.166 V 11.4 a 0.172,0.172 0 0 0 0.166,0.166 h -0.031 l -0.012,0.029 v 0.01 c -0.009,0.02 -0.015,0.042 -0.024,0.062 h 2.006 A 0.527,0.527 0 0 1 20.858,11.611 V 11.6 l -0.017,-0.038 h -0.076 a 0.167,0.167 0 0 0 0.113,-0.051 0.162,0.162 0 0 0 0.046,-0.112 V 10.84 A 0.166,0.166 0 0 0 20.758,10.674 H 20.717 V 9.928 a 2.649,2.649 0 0 0 0.842,-1.2 6.464,6.464 0 0 0 0.359,-3.29 L 21.262,2.005 h -0.2 l 0.67,3.5 A 6.066,6.066 0 0 1 21.4,8.593 2.644,2.644 0 0 1 20.719,9.62 0.372,0.372 0 0 0 20.347,9.247 H 19.353 A 0.372,0.372 0 0 0 18.981,9.62 v 0.268 a 1.46,1.46 0 0 1 -1.044,-0.7 14.74,14.74 0 0 1 -1.008,-3.9 C 16.882,5.024 16.829,4.748 16.78,4.457 A 12.354,12.354 0 0 0 16.094,2.012 H 15.67 c 0.039,0.135 0.089,0.3 0.154,0.514 0.106,0.348 0.237,0.781 0.39,1.321 A 7.768,7.768 0 0 1 15.737,8.12 2.468,2.468 0 0 1 14.784,9.158 V 8.881 A 0.373,0.373 0 0 0 14.412,8.508 H 13.418 A 0.373,0.373 0 0 0 13.046,8.881 V 9.02 A 3.138,3.138 0 0 1 12.211,8.107 C 11.149,6.439 11.491,3.222 11.635,2 h -0.253 c -0.02,0.173 -0.043,0.386 -0.071,0.654 -0.174,1.648 -0.5,4.714 -1.338,5.453 a 2.984,2.984 0 0 1 -0.3,0.238 V 8.182 A 0.373,0.373 0 0 0 9.3,7.809 H 8.31 A 0.373,0.373 0 0 0 7.938,8.182 v 0.09 A 3.025,3.025 0 0 1 7.711,8.032 C 6.624,6.756 6.735,3.891 6.789,2.513 6.8,2.306 6.8,2.142 6.8,2 H 6.526 V 2.452 C 6.534,3.952 6.55,7.061 5.116,8.24 L 5.065,8.281 V 8.052 A 0.372,0.372 0 0 0 4.7,7.679 h -1 A 0.373,0.373 0 0 0 3.327,8.052 V 8.3 C 3.304,8.28 3.281,8.26 3.258,8.238 2.248,7.32 1.784,4.773 2.645,2 h -0.2 a 9.768,9.768 0 0 0 -0.4,3.66 4.416,4.416 0 0 0 1.12,2.8 c 0.059,0.053 0.115,0.1 0.171,0.147 v 0.5 H 3.285 A 0.165,0.165 0 0 0 3.119,9.271 V 9.83 A 0.166,0.166 0 0 0 3.285,10 H 3.254 l -0.007,0.017 -0.009,0.022 c -0.012,0.026 -0.019,0.052 -0.03,0.078 H 5.226 C 5.215,10.091 5.209,10.063 5.198,10.037 L 5.189,10.017 5.181,10 H 5.106 A 0.167,0.167 0 0 0 5.271,9.834 V 9.274 A 0.165,0.165 0 0 0 5.106,9.109 H 5.064 V 8.588 C 5.112,8.552 5.164,8.514 5.21,8.473 a 5.2,5.2 0 0 0 1.4,-3.417 c 0.008,0.11 0.017,0.221 0.028,0.331 a 5.213,5.213 0 0 0 0.953,2.851 3.027,3.027 0 0 0 0.348,0.35 V 9.237 H 7.9 A 0.166,0.166 0 0 0 7.734,9.403 v 0.558 a 0.134,0.134 0 0 0 0.032,0.085 0.186,0.186 0 0 0 0.087,0.059 c 0.008,0 0.012,0.01 0.02,0.011 h 1.871 c 0.006,0 0.01,-0.007 0.017,-0.009 A 0.187,0.187 0 0 0 9.849,10.049 0.131,0.131 0 0 0 9.883,9.961 V 9.4 A 0.166,0.166 0 0 0 9.717,9.234 H 9.676 V 8.643 a 3.721,3.721 0 0 0 0.4,-0.307 c 0.64,-0.564 0.989,-2.22 1.206,-3.783 a 7.328,7.328 0 0 0 0.791,3.735 3.31,3.31 0 0 0 0.976,1.03 v 0.618 h -0.041 a 0.166,0.166 0 0 0 -0.166,0.166 v 0.558 a 0.157,0.157 0 0 0 0.1,0.14 c 0.021,0.009 0.038,0.026 0.063,0.026 h -0.031 l -0.016,0.039 -0.006,0.015 h 1.972 L 14.918,10.864 14.901,10.826 H 14.826 A 0.163,0.163 0 0 0 14.936,10.78 0.159,0.159 0 0 0 15,10.66 V 10.1 A 0.166,0.166 0 0 0 14.834,9.934 H 14.79 v -0.5 A 2.677,2.677 0 0 0 15.89,8.275 6.6,6.6 0 0 0 16.5,5.7 7.271,7.271 0 0 0 16.393,3.741 C 16.239,3.198 16.107,2.763 16.001,2.414 15.96,2.279 15.921,2.15 15.887,2.035 A 11.4,11.4 0 0 1 16.6,4.513 c 0.053,0.291 0.1,0.567 0.149,0.83 a 14.9,14.9 0 0 0 1.037,3.991 1.657,1.657 0 0 0 1.198,0.816 z m -4.111,0.993 h -1.857 a 1.861,1.861 0 1 0 1.857,0 z M 5.15,10.379 H 3.259 a 1.86,1.86 0 1 0 1.891,0 z M 9.736,10.377 H 7.85 a 1.859,1.859 0 1 0 1.886,0 z"], "twinkly-c9":[0,0,24,24,"M 21.561,8.6936224 A 6.459,6.459 0 0 0 21.92,5.4036228 l -0.656,-3.433 h -0.2 l 0.67,3.5 a 6.062,6.062 0 0 1 -0.334,3.0909996 2.64,2.64 0 0 1 -0.681,1.027 v 0 a 0.373,0.373 0 0 0 -0.372,-0.373 h -0.994 a 0.373,0.373 0 0 0 -0.372,0.373 v 0.268 a 1.463,1.463 0 0 1 -1.044,-0.7 14.705,14.705 0 0 1 -1.008,-3.8999996 c -0.047,-0.264 -0.1,-0.54 -0.149,-0.831 a 12.3,12.3 0 0 0 -0.686,-2.445 h -0.422 c 0.039,0.135 0.089,0.3 0.154,0.514 0.106,0.348 0.237,0.781 0.39,1.321 a 7.77,7.77 0 0 1 -0.477,4.2729996 2.475,2.475 0 0 1 -0.953,1.038 v -0.277 a 0.373,0.373 0 0 0 -0.372,-0.373 H 13.42 a 0.373,0.373 0 0 0 -0.372,0.373 v 0.139 a 3.16,3.16 0 0 1 -0.835,-0.913 C 11.151,6.4076228 11.493,3.1906228 11.637,1.9686228 h -0.253 c -0.02,0.173 -0.043,0.386 -0.071,0.654 -0.174,1.648 -0.5,4.7139996 -1.3380003,5.4529996 -0.1,0.09 -0.2,0.169 -0.3,0.238 v -0.163 a 0.373,0.373 0 0 0 -0.372,-0.373 h -0.991 a 0.373,0.373 0 0 0 -0.372,0.373 v 0.09 a 2.949,2.949 0 0 1 -0.227,-0.24 c -1.087,-1.276 -0.976,-4.1409996 -0.922,-5.5189996 0.008,-0.207 0.013,-0.371 0.015,-0.511 h -0.278 c 0,0.12 0,0.26 0,0.452 0.008,1.5 0.024,4.6089996 -1.41,5.7879996 l -0.051,0.041 v -0.231 a 0.373,0.373 0 0 0 -0.372,-0.373 h -0.995 a 0.373,0.373 0 0 0 -0.373,0.373 v 0.247 c -0.023,-0.02 -0.046,-0.04 -0.069,-0.062 -1.008,-0.917 -1.472,-3.4639996 -0.611,-6.2349996 h -0.2 a 9.772,9.772 0 0 0 -0.405,3.66 4.419,4.419 0 0 0 1.12,2.7999996 c 0.059,0.053 0.115,0.1 0.171,0.147 v 0.5 h -0.046 a 0.165,0.165 0 0 0 -0.166,0.165 v 0.559 a 0.166,0.166 0 0 0 0.166,0.166 h -0.031 l -0.016,0.039 a 5.437,5.437 0 0 0 0.368,5.182 c 0.255,0.385 0.552,0.7 0.663,0.7 v 0 c 0.134,0 0.307,-0.221 0.429,-0.407 a 5.878,5.878 0 0 0 0.5,-5.477 l -0.017,-0.037 h -0.075 a 0.166,0.166 0 0 0 0.165,-0.166 v -0.561 a 0.165,0.165 0 0 0 -0.165,-0.165 h -0.042 v -0.519 c 0.048,-0.036 0.1,-0.074 0.146,-0.115 a 5.206,5.206 0 0 0 1.4,-3.4169996 c 0.008,0.11 0.017,0.221 0.028,0.331 a 5.208,5.208 0 0 0 0.953,2.8509996 3.031,3.031 0 0 0 0.348,0.35 v 0.649 h -0.041 a 0.166,0.166 0 0 0 -0.166,0.166 v 0.558 a 0.166,0.166 0 0 0 0.166,0.1659996 h -0.032 l -0.016,0.039 a 5.44,5.44 0 0 0 0.367,5.182 c 0.256,0.385 0.553,0.7 0.663,0.7 v 0 c 0.134,0 0.307,-0.221 0.429,-0.407 a 5.874,5.874 0 0 0 0.5,-5.476 l -0.016,-0.038 h -0.076 a 0.166,0.166 0 0 0 0.166,-0.1659996 v -0.558 a 0.166,0.166 0 0 0 -0.166,-0.166 h -0.041 v -0.594 a 3.782,3.782 0 0 0 0.4000003,-0.307 c 0.64,-0.564 0.989,-2.2199996 1.206,-3.7829996 a 7.335,7.335 0 0 0 0.791,3.7349996 3.305,3.305 0 0 0 0.976,1.03 v 0.618 H 13.01 a 0.166,0.166 0 0 0 -0.166,0.1659996 v 0.558 a 0.166,0.166 0 0 0 0.166,0.166 h -0.031 l -0.016,0.039 a 5.44,5.44 0 0 0 0.367,5.182 c 0.256,0.385 0.553,0.7 0.664,0.7 v 0 c 0.134,0 0.307,-0.221 0.429,-0.407 a 5.876,5.876 0 0 0 0.5,-5.476 l -0.017,-0.038 h -0.075 a 0.166,0.166 0 0 0 0.166,-0.166 v -0.558 A 0.166,0.166 0 0 0 14.831,9.9046224 H 14.79 v -0.5 a 2.669,2.669 0 0 0 1.1,-1.159 6.607,6.607 0 0 0 0.61,-2.5809996 7.246,7.246 0 0 0 -0.107,-1.959 c -0.154,-0.543 -0.286,-0.978 -0.392,-1.327 -0.041,-0.135 -0.08,-0.264 -0.114,-0.379 a 11.444,11.444 0 0 1 0.713,2.482 c 0.053,0.291 0.1,0.567 0.149,0.83 a 14.888,14.888 0 0 0 1.037,3.9909996 1.653,1.653 0 0 0 1.2,0.8159996 v 0.521 H 18.94 a 0.166,0.166 0 0 0 -0.166,0.166 v 0.558 a 0.166,0.166 0 0 0 0.166,0.166 h -0.031 l -0.016,0.039 a 5.436,5.436 0 0 0 0.368,5.182 c 0.255,0.385 0.552,0.7 0.663,0.7 v 0 c 0.134,0 0.307,-0.221 0.429,-0.407 a 5.876,5.876 0 0 0 0.5,-5.476 l -0.017,-0.038 H 20.76 a 0.166,0.166 0 0 0 0.166,-0.166 v -0.558 a 0.166,0.166 0 0 0 -0.166,-0.166 H 20.719 V 9.8936224 a 2.649,2.649 0 0 0 0.842,-1.2 z m -16.4000003,2.0499996 -0.461,0.7 0.047,-0.568 0.457,-0.2 z m 0.1,0.105 -0.151,1.108 -0.375,-0.311 0.405,-0.613 z m -0.57,0.981 0.336,0.231 0.044,0.031 -0.015,0.02 -0.071,0.093 -0.285,0.384 z m -0.063,-1.741 -0.047,0.544 -0.135,-0.188 -0.253,-0.355 h 0.435 z m -1.523,1.291 0.81,-0.249 v 0 l -0.733,0.364 -0.019,-0.02 -0.023,-0.023 -0.057,-0.058 0.031,-0.008 z m 0.625,1.359 0.1,-0.393 0.656,0.452 -0.336,0.131 -0.514,0.2 z m -0.019,-0.68 -0.381,-0.409 0.83,0.07 0.267,0.022 v 0 l -0.635,0.4 z m 0.489,1.956 -0.38,0.411 -0.332,-0.156 z m -0.779,0.145 0.166,-0.8 0.707,0.491 z m 0.986,-0.164 0.021,0.05 0.267,0.649 -0.325,-0.1 -0.408,-0.122 z m -0.029,-0.25 -0.691,-0.5 0.482,-0.189 0.36,-0.141 v 0 l -0.092,0.506 z m -0.478,-1.512 0.644,-0.409 v 0 0.855 z m -0.5,-0.7 1.168,-0.58 -0.015,0.677 v 0 z m 0.962,-0.966 0.117,0.164 -0.8,-0.226 -0.389,-0.11 0.266,-0.088 0.5,-0.166 z m -1.02,-0.479 h 0.458 l -0.513,0.17 h -0.009 c 0.022,-0.05 0.04,-0.108 0.064,-0.17 z m -0.242,0.73 c 0.029,-0.105 0.062,-0.212 0.1,-0.32 l 0.135,0.038 1.092,0.308 -1.378,0.424 z m -0.154,0.742 0.036,-0.077 0.05,0.051 0.025,0.025 0.016,0.016 -0.045,0.049 -0.1,0.11 c -0.003,-0.057 0.004,-0.115 0.013,-0.174 z m -0.043,0.4 0.266,-0.282 0.463,0.5 -0.739,0.009 c -0.003,-0.079 0,-0.153 0.007,-0.229 z m -0.012,0.345 0.5,-0.007 h 0.293 l -0.1,0.409 -0.1,0.4 -0.6,-0.594 c 0.002,-0.075 0.002,-0.143 0.002,-0.21 z m 0.014,0.407 0.268,0.267 -0.256,-0.134 c -0.01,-0.046 -0.017,-0.09 -0.017,-0.135 z m 0.03,0.288 0.343,0.179 h -0.322 c -0.01,-0.061 -0.018,-0.121 -0.026,-0.181 z m 0.048,0.3 h 0.287 l -0.26,0.131 z m 0.248,0.865 a 5.131,5.131 0 0 1 -0.191,-0.605 l 0.391,-0.2 -0.168,0.813 z m 0.133,0.316 c -0.015,-0.035 -0.031,-0.07 -0.047,-0.106 l 0.018,-0.02 0.01,-0.012 0.073,0.035 0.248,0.117 -0.257,0.078 z m 0.1,0.205 0.308,-0.094 0.05,0.377 0.048,0.364 a 4.465,4.465 0 0 1 -0.409,-0.645 z m 0.511,0.28 -0.048,-0.368 0.738,0.239 -0.1,0.084 -0.538,0.467 z m 0.3,0.793 a 0.548,0.548 0 0 1 -0.094,-0.071 l 0.133,0.055 a 0.128,0.128 0 0 1 -0.038,0.015 z m 0.319,-0.349 a 1.99,1.99 0 0 1 -0.178,0.235 l -0.286,-0.117 0.627,-0.594 0.025,0.156 c -0.067,0.126 -0.131,0.234 -0.182,0.319 z m 0.385,-0.722 h -0.019 l 0.06,-0.1 c -0.013,0.041 -0.027,0.071 -0.041,0.1 z m 0.286,-0.762 -0.439,0.707 -0.3,-0.735 v 0 l 0.825,-0.272 c -0.028,0.105 -0.051,0.205 -0.086,0.302 z m 0.119,-0.444 -0.86,0.279 0.058,-0.315 0.094,-0.519 0.021,0.015 v -0.005 l 0.165,0.106 0.542,0.351 c -0.004,0.031 -0.013,0.061 -0.02,0.094 z m 0.048,-0.227 -0.659,-0.426 0.748,-0.218 a 5.844,5.844 0 0 1 -0.089,0.646 z m 0.1,-0.776 -0.566,0.165 -0.165,0.048 0.4,-0.523 0.015,-0.02 0.032,0.009 0.3,0.08 c -0.011,0.083 -0.014,0.164 -0.019,0.243 z m 0.009,-0.369 -0.148,-0.04 0.147,-0.05 c -0.002,0.032 -0.002,0.062 -0.002,0.092 z m -0.006,-0.22 -0.02,0.007 -0.246,0.083 0.137,-1 a 5.152,5.152 0 0 1 0.126,0.908 z m -0.3,-1.437 0.029,0.035 0.01,0.027 h -0.009 l -0.343,0.14 -0.191,0.078 0.013,-0.149 0.043,-0.5 h 0.15 z m 4.547,0.418 -0.462,0.7 0.048,-0.569 0.456,-0.2 z m 0.1,0.1 -0.154,1.117 -0.376,-0.311 0.406,-0.614 z m -0.57,0.981 0.336,0.231 0.044,0.031 -0.016,0.021 -0.07,0.093 -0.294,0.388 z m -0.072,-1.73 -0.047,0.544 v 0 l -0.135,-0.189 -0.253,-0.355 z m -1.523,1.288 0.809,-0.25 v 0 l -0.732,0.364 -0.019,-0.019 -0.023,-0.024 -0.052,-0.058 0.031,-0.007 z m 0.625,1.358 0.1,-0.393 0.656,0.452 -0.336,0.132 -0.514,0.2 z m -0.019,-0.68 -0.381,-0.408 0.83,0.069 0.267,0.023 -0.635,0.4 z m 0.484,1.957 -0.381,0.41 -0.326,-0.156 z m -0.779,0.145 0.165,-0.8 0.708,0.492 z m 0.986,-0.165 0.021,0.051 0.267,0.648 -0.326,-0.1 -0.408,-0.121 z m -0.029,-0.25 -0.691,-0.5 0.481,-0.188 0.361,-0.141 -0.092,0.505 z m -0.476,-1.512 0.644,-0.408 v 0 0.855 z m -0.5,-0.7 1.168,-0.58 -0.016,0.676 v 0 z m 0.962,-0.967 0.117,0.164 -0.8,-0.226 -0.39,-0.109 0.267,-0.089 0.5,-0.166 z m -1.013,-0.474 h 0.455 l -0.513,0.166 h -0.009 c 0.017,-0.05 0.039,-0.108 0.063,-0.166 z m -0.247,0.727 c 0.029,-0.106 0.062,-0.212 0.1,-0.32 l 0.135,0.038 1.091,0.307 -1.378,0.425 z m -0.159,0.739 0.037,-0.077 0.05,0.051 0.025,0.026 0.016,0.016 -0.045,0.049 -0.1,0.111 c 0.002,-0.057 0.009,-0.115 0.017,-0.176 z m -0.042,0.4 0.266,-0.283 0.463,0.5 -0.739,0.009 c 0,-0.076 0.005,-0.15 0.01,-0.226 z m -0.012,0.344 0.5,-0.006 h 0.293 l -0.1,0.409 -0.1,0.4 -0.6,-0.594 c 0.009,-0.073 0.009,-0.14 0.009,-0.208 z m 0.014,0.407 0.268,0.267 -0.256,-0.134 c -0.005,-0.043 -0.009,-0.084 -0.012,-0.132 z m 0.03,0.288 0.343,0.18 h -0.317 c -0.01,-0.058 -0.018,-0.119 -0.026,-0.179 z m 0.048,0.3 h 0.287 l -0.26,0.131 c -0.009,-0.041 -0.017,-0.084 -0.027,-0.129 z m 0.248,0.866 a 5.209,5.209 0 0 1 -0.191,-0.605 l 0.39,-0.2 -0.167,0.813 z m 0.133,0.315 c -0.016,-0.034 -0.031,-0.07 -0.047,-0.106 l 0.018,-0.02 0.01,-0.011 0.073,0.034 0.247,0.117 v 0 l -0.256,0.078 c -0.016,-0.028 -0.03,-0.058 -0.045,-0.09 z m 0.1,0.205 0.308,-0.094 0.05,0.377 0.047,0.364 a 4.468,4.468 0 0 1 -0.403,-0.645 z m 0.511,0.28 -0.048,-0.368 0.738,0.239 -0.1,0.084 -0.538,0.468 z m 0.3,0.793 a 0.458,0.458 0 0 1 -0.1,-0.074 l 0.132,0.055 a 0.115,0.115 0 0 1 -0.026,0.021 z m 0.318,-0.349 a 1.923,1.923 0 0 1 -0.177,0.236 l -0.286,-0.118 0.626,-0.594 0.026,0.156 c -0.062,0.129 -0.127,0.237 -0.183,0.322 z m 0.385,-0.719 -0.02,0.005 0.061,-0.1 c -0.008,0.036 -0.021,0.065 -0.035,0.097 z m 0.286,-0.762 -0.439,0.707 -0.3,-0.735 v 0 l 0.826,-0.271 c -0.023,0.104 -0.052,0.204 -0.081,0.301 z m 0.129,-0.442 -0.86,0.28 0.058,-0.316 0.094,-0.518 0.021,0.014 v 0 l 0.165,0.107 0.5420003,0.35 c -0.011,0.025 -0.02,0.057 -0.02,0.083 z m 0.048,-0.227 -0.6590006,-0.426 0.7480006,-0.218 a 5.844,5.844 0 0 1 -0.093,0.645 z m 0.1,-0.776 -0.5660006,0.165 -0.165,0.049 0.4,-0.524 0.015,-0.019 0.032,0.008 0.3000006,0.081 q -0.016,0.117 -0.023,0.24 z m 0.009,-0.369 -0.1570006,-0.04 0.1470006,-0.049 c 0.003,0.035 0.003,0.059 0.003,0.089 z m -0.007,-0.22 -0.019,0.007 -0.2460006,0.083 0.1360006,-1 a 4.962,4.962 0 0 1 0.122,0.91 z m -0.3000006,-1.437 0.029,0.036 0.009,0.026 h -0.008 l -0.343,0.14 -0.191,0.078 0.013,-0.149 0.043,-0.5 h 0.15 z m 5.0430006,0.987 -0.462,0.7 0.048,-0.569 0.457,-0.195 z m 0.1,0.105 -0.157,1.111 -0.376,-0.311 0.406,-0.614 z m -0.57,0.981 0.336,0.231 0.044,0.031 -0.016,0.021 -0.07,0.093 -0.294,0.388 z m -0.069,-1.737 -0.047,0.544 v 0 l -0.135,-0.188 -0.253,-0.355 h 0.435 z m -1.523,1.288 0.809,-0.25 v 0 l -0.732,0.364 -0.019,-0.019 -0.023,-0.024 -0.057,-0.058 0.031,-0.008 z m 0.625,1.358 0.1,-0.393 0.656,0.452 -0.336,0.132 -0.514,0.2 z m -0.019,-0.68 -0.381,-0.408 0.83,0.069 0.267,0.023 -0.635,0.4 z m 0.484,1.957 -0.381,0.41 -0.34,-0.156 z m -0.779,0.144 0.166,-0.8 0.707,0.492 z m 0.986,-0.164 0.021,0.051 0.267,0.648 -0.326,-0.1 -0.407,-0.121 z m -0.029,-0.25 -0.691,-0.5 0.481,-0.188 0.361,-0.141 -0.092,0.505 z m -0.476,-1.512 0.644,-0.408 v 0 0.855 z m -0.5,-0.7 1.168,-0.579 -0.016,0.676 v 0 z m 0.962,-0.966 0.117,0.164 -0.8,-0.226 -0.402,-0.111 0.266,-0.088 0.5,-0.166 z m -1.013,-0.474 h 0.455 l -0.527,0.166 h -0.009 c 0.025,-0.051 0.047,-0.109 0.071,-0.167 z m -0.247,0.726 c 0.029,-0.105 0.062,-0.211 0.1,-0.319 l 0.135,0.038 1.091,0.307 -1.378,0.424 z m -0.155,0.742 0.037,-0.077 0.05,0.051 0.025,0.025 0.016,0.016 -0.045,0.049 -0.105,0.11 c -0.003,-0.058 0.004,-0.116 0.012,-0.176 z m -0.042,0.4 0.266,-0.283 0.463,0.5 -0.739,0.009 c -0.008,-0.079 -0.005,-0.153 0,-0.228 z m -0.012,0.344 0.505,-0.006 h 0.293 l -0.1,0.409 -0.1,0.4 -0.6,-0.594 c -0.008,-0.076 -0.008,-0.143 -0.008,-0.211 z m 0.014,0.407 0.268,0.267 -0.256,-0.134 c -0.015,-0.046 -0.019,-0.086 -0.022,-0.135 z m 0.03,0.288 0.343,0.18 h -0.317 c -0.02,-0.061 -0.028,-0.121 -0.036,-0.182 z m 0.048,0.3 h 0.287 l -0.26,0.131 z m 0.248,0.865 a 5.131,5.131 0 0 1 -0.191,-0.605 l 0.39,-0.2 -0.167,0.813 z m 0.133,0.316 c -0.016,-0.035 -0.031,-0.07 -0.047,-0.106 l 0.018,-0.02 0.01,-0.012 0.073,0.035 0.247,0.117 -0.256,0.078 c -0.025,-0.031 -0.04,-0.061 -0.055,-0.093 z m 0.1,0.205 0.308,-0.094 0.05,0.377 0.047,0.364 a 4.468,4.468 0 0 1 -0.413,-0.648 z m 0.511,0.28 -0.048,-0.368 0.738,0.239 -0.1,0.084 -0.538,0.468 z m 0.3,0.793 a 0.5,0.5 0 0 1 -0.1,-0.074 l 0.132,0.055 a 0.115,0.115 0 0 1 -0.032,0.019 z m 0.318,-0.349 a 1.923,1.923 0 0 1 -0.177,0.236 l -0.286,-0.118 0.627,-0.594 0.025,0.156 c -0.072,0.126 -0.137,0.234 -0.193,0.319 z m 0.385,-0.719 -0.02,0.005 0.061,-0.1 z m 0.285,-0.762 -0.438,0.707 v 0 l -0.3,-0.735 v 0 l 0.826,-0.272 c -0.033,0.102 -0.062,0.202 -0.092,0.299 z m 0.12,-0.444 -0.86,0.28 0.058,-0.316 0.094,-0.518 0.021,0.014 v -0.006 l 0.165,0.107 0.542,0.35 c -0.011,0.029 -0.017,0.063 -0.028,0.088 z m 0.048,-0.227 -0.659,-0.426 0.748,-0.218 a 5.844,5.844 0 0 1 -0.093,0.645 z m 0.1,-0.776 -0.566,0.165 -0.165,0.048 0.4,-0.523 0.015,-0.019 0.032,0.008 0.3,0.081 q -0.016,0.117 -0.023,0.239 z m 0.009,-0.369 -0.148,-0.04 0.147,-0.049 c -0.006,0.029 -0.006,0.058 -0.006,0.088 z m -0.007,-0.22 -0.019,0.007 -0.246,0.083 0.136,-1 a 4.95,4.95 0 0 1 0.122,0.909 z m -0.3,-1.437 0.029,0.036 0.009,0.026 h -0.008 l -0.343,0.14 -0.191,0.078 0.013,-0.149 0.043,-0.5 h 0.15 z m 5.868,1.023 -0.461,0.7 0.047,-0.569 0.457,-0.2 z m 0.1,0.105 -0.151,1.109 -0.376,-0.312 0.406,-0.613 z m -0.57,1.745 v -0.764 l 0.336,0.231 0.044,0.031 -0.015,0.021 -0.071,0.093 z m -0.069,-2.5 -0.047,0.544 -0.135,-0.188 -0.253,-0.355 h 0.435 z m -1.523,1.287 0.809,-0.249 -0.732,0.364 -0.019,-0.019 -0.023,-0.024 -0.057,-0.058 v 0 l 0.031,-0.008 z m 0.625,1.359 0.1,-0.393 0.656,0.452 -0.336,0.132 -0.514,0.2 z m -0.019,-0.68 -0.381,-0.408 0.83,0.069 0.267,0.023 -0.635,0.4 z m 0.484,1.957 -0.38,0.41 -0.332,-0.156 z m -0.779,0.144 0.166,-0.8 0.707,0.492 z m 0.986,-0.164 0.021,0.051 0.267,0.648 -0.325,-0.1 -0.408,-0.121 z m -0.029,-0.25 -0.691,-0.5 0.482,-0.188 0.36,-0.142 -0.092,0.506 z m -0.476,-1.512 0.644,-0.408 v 0 0.855 z m -0.5,-0.7 1.168,-0.58 -0.015,0.676 v 0 z m 0.962,-0.967 0.117,0.164 -0.8,-0.226 -0.389,-0.109 0.266,-0.089 0.5,-0.166 z M 19,11.656622 h 0.455 l -0.513,0.17 h -0.009 c 0.016,-0.054 0.038,-0.112 0.067,-0.17 z m -0.247,0.726 c 0.029,-0.105 0.062,-0.211 0.1,-0.319 l 0.135,0.038 1.091,0.307 v 0 l -1.377,0.425 z m -0.155,0.742 0.037,-0.077 0.05,0.051 0.025,0.025 0.016,0.016 -0.045,0.049 -0.1,0.11 c -0.003,-0.057 0.004,-0.11 0.012,-0.174 z m -0.042,0.4 0.266,-0.283 0.463,0.5 -0.739,0.009 c -0.003,-0.078 0,-0.152 0.005,-0.227 z m -0.012,0.344 0.5,-0.007 h 0.293 l -0.1,0.409 -0.1,0.4 -0.6,-0.594 c 0.002,-0.074 0.002,-0.141 0.002,-0.209 z m 0.014,0.407 0.268,0.267 -0.256,-0.134 c -0.01,-0.045 -0.013,-0.089 -0.017,-0.134 z m 0.03,0.288 0.343,0.18 h -0.317 c -0.014,-0.055 -0.023,-0.12 -0.031,-0.181 z m 0.048,0.3 h 0.287 l -0.26,0.131 z m 0.248,0.865 a 5.131,5.131 0 0 1 -0.191,-0.6 l 0.391,-0.2 -0.168,0.813 z m 0.133,0.316 c -0.016,-0.035 -0.031,-0.07 -0.047,-0.106 l 0.018,-0.02 0.01,-0.012 0.073,0.035 0.247,0.117 -0.256,0.078 c -0.02,-0.03 -0.035,-0.06 -0.05,-0.092 z m 0.1,0.2 0.308,-0.094 0.05,0.377 0.048,0.364 a 4.465,4.465 0 0 1 -0.409,-0.642 z m 0.511,0.28 -0.048,-0.368 0.738,0.239 -0.1,0.084 -0.538,0.467 z m 0.3,0.793 a 0.5,0.5 0 0 1 -0.095,-0.074 l 0.133,0.055 a 0.128,0.128 0 0 1 -0.037,0.024 z m 0.319,-0.349 a 2.018,2.018 0 0 1 -0.178,0.236 l -0.286,-0.118 0.627,-0.594 0.025,0.156 c -0.067,0.132 -0.135,0.24 -0.187,0.325 z m 0.384,-0.719 -0.02,0.005 0.061,-0.1 c -0.012,0.039 -0.026,0.07 -0.04,0.1 z m 0.286,-0.762 -0.439,0.707 -0.3,-0.735 v 0 l 0.822,-0.271 c -0.024,0.107 -0.053,0.207 -0.082,0.3 z m 0.119,-0.444 -0.86,0.28 0.058,-0.316 0.094,-0.518 0.021,0.014 v -0.005 l 0.165,0.107 0.542,0.35 c -0.006,0.033 -0.012,0.064 -0.019,0.093 z m 0.048,-0.227 -0.659,-0.426 0.748,-0.218 a 5.844,5.844 0 0 1 -0.088,0.649 z m 0.1,-0.776 -0.566,0.165 -0.165,0.048 0.4,-0.523 0.015,-0.019 0.032,0.008 0.3,0.081 q -0.01,0.127 -0.018,0.245 z m 0.009,-0.369 -0.148,-0.04 0.147,-0.049 c -0.001,0.035 -0.001,0.064 -0.001,0.094 z m -0.007,-0.22 -0.019,0.007 -0.246,0.083 0.137,-1 a 5.047,5.047 0 0 1 0.126,0.915 z m -0.3,-1.437 0.029,0.036 0.01,0.026 h -0.009 l -0.343,0.14 -0.191,0.078 0.013,-0.149 0.043,-0.5 h 0.15 z"], + "airfryer":[0,0,24,24,"m 10.577,8.138 a 0.888,0.888 0 0 0 -0.826,0.939 0.889,0.889 0 0 0 0.826,0.94 0.889,0.889 0 0 0 0.825,-0.94 0.888,0.888 0 0 0 -0.825,-0.939 z m 3.79,5.099 -0.518,-0.03 A 0.3,0.3 0 0 1 13.7,13.157 l -0.262,6.14 a 1.5,1.5 0 0 0 0.477,0.1 l 0.686,0.023 0.264,-5.575 0.566,-0.728 0.015,-0.6 -0.479,0.48 a 0.739,0.739 0 0 1 -0.6,0.24 z M 5.514,12.792 5,12.762 A 0.3,0.3 0 0 1 4.852,12.711 L 4.587,18.8 a 2.538,2.538 0 0 0 0.506,0.078 l 0.657,0.033 0.261,-5.511 0.567,-0.728 0.014,-0.6 -0.479,0.479 a 0.738,0.738 0 0 1 -0.599,0.241 z m 8.178,0.03 a 0.142,0.142 0 0 0 -0.048,0.122 l 0.053,0.08 a 0.21,0.21 0 0 0 0.051,0.052 0.191,0.191 0 0 0 0.036,0.007 l 0.42,0.025 a 0.848,0.848 0 0 0 0.726,-0.335 h 0.005 L 15.382,12.344 14.26,12.3 Z M 4.919,12.374 a 0.15,0.15 0 0 0 0.092,0.26 l 0.42,0.025 a 0.846,0.846 0 0 0 0.726,-0.334 l 0.349,-0.4 -0.968,-0.06 z m 5.455,6.486 2.984,0.128 0.252,-5.895 a 0.251,0.251 0 0 1 -0.047,-0.079 0.241,0.241 0 0 1 0.067,-0.262 l 0.5,-0.457 -3.667,-0.129 z m 4.338,0.186 3.426,0.147 a 4.924,4.924 0 0 0 1.974,-0.32 l -0.093,-6.26 a 0.341,0.341 0 0 0 -0.446,-0.32 3.228,3.228 0 0 1 -1.108,0.155 l -2.922,-0.1 -0.019,0.8 -0.567,0.729 z M 5.86,18.56 10.28,18.855 10.346,13.954 10.37,12.161 6.689,11.933 6.67,12.7 6.104,13.429 Z M 2.309,11.455 2.279,11.443 2.129,17.9 a 5.035,5.035 0 0 0 1.979,0.548 l 0.4,0.027 0.257,-6.01 0.013,0.019 a 0.237,0.237 0 0 1 0.08,-0.175 v 0 L 5.401,11.86 3.435,11.739 A 3.376,3.376 0 0 1 2.309,11.455 Z m 15.574,7.957 -3.18,-0.183 -0.013,0.284 -0.778,-0.027 a 1.567,1.567 0 0 1 -0.54,-0.114 l -0.03,-0.013 0.009,-0.208 -7.5,-0.433 -0.014,0.287 -0.751,-0.039 A 2.605,2.605 0 0 1 4.524,18.875 L 4.488,18.866 4.498,18.64 3.924,18.607 A 4.065,4.065 0 0 1 2.4,18.212 l 0.923,0.887 a 1.889,1.889 0 0 0 1.187,0.523 l 12.868,0.828 a 2.661,2.661 0 0 0 1.823,-0.566 l 1.448,-1.138 a 4.012,4.012 0 0 1 -1.739,0.636 5.884,5.884 0 0 1 -1.027,0.03 z M 4.957,10.009 a 0.4,0.4 0 0 0 0.285,0.139 l 10.676,0.573 a 0.414,0.414 0 0 0 0.437,-0.382 L 16.679,6.324 5.179,5.773 4.858,9.707 a 0.406,0.406 0 0 0 0.099,0.302 z m 5.62,0.1 A 0.982,0.982 0 0 1 9.657,9.076 0.983,0.983 0 0 1 10.577,8.043 0.982,0.982 0 0 1 11.5,9.077 0.982,0.982 0 0 1 10.577,10.11 Z M 13.46,7.417 a 0.077,0.077 0 0 1 0.081,-0.074 l 1.328,0.061 a 0.077,0.077 0 0 1 0.073,0.081 L 14.916,8.066 A 0.078,0.078 0 0 1 14.835,8.14 L 13.507,8.079 A 0.077,0.077 0 0 1 13.434,8 Z m 0.046,2.265 1.048,0.048 a 0.24427085,0.24427085 0 1 1 -0.023,0.488 L 13.484,10.17 a 0.24424782,0.24424782 0 1 1 0.022,-0.488 z m -4.214,-2.27 2.783,0.122 a 0.224,0.224 0 0 1 0.214,0.23 v 0 A 0.223,0.223 0 0 1 12.056,7.98 L 9.272,7.858 A 0.2232241,0.2232241 0 0 1 9.292,7.412 Z M 6.658,7.077 A 0.077,0.077 0 0 1 6.738,7 l 1.3,0.06 A 0.077,0.077 0 0 1 8.111,7.14 L 8.084,7.723 a 0.077,0.077 0 0 1 -0.08,0.073 l -1.3,-0.06 A 0.076,0.076 0 0 1 6.631,7.656 Z M 6.715,9.342 7.777,9.39 A 0.245,0.245 0 0 1 7.755,9.879 L 6.693,9.83 A 0.24424782,0.24424782 0 0 1 6.715,9.342 Z M 21.724,6.629 V 6.521 h 0.006 l -0.006,-0.508 -1.15,0.7 a 2.059,2.059 0 0 1 -1.025,0.226 l -2.813,-0.117 -0.285,3.531 a 0.507,0.507 0 0 1 -0.507,0.469 H 15.916 L 5.237,10.242 A 0.5,0.5 0 0 1 4.765,9.7 L 5.042,6.33 3.1,6.249 A 0.411,0.411 0 0 1 2.848,6.149 L 2.788,6.507 A 0.045,0.045 0 0 0 2.795,6.525 L 2.779,6.644 2.145,11.39 2,17.515 a 0.873,0.873 0 0 0 0.038,0.272 l 0.15,-6.468 0.057,0.014 a 0.664,0.664 0 0 1 0.1,0.036 3.24,3.24 0 0 0 1.094,0.269 l 3.244,0.2 0.007,-0.007 v 0.008 l 3.73,0.231 4.82,0.169 0.367,0.012 v 0 l 2.862,0.1 a 3.113,3.113 0 0 0 1.075,-0.15 0.434,0.434 0 0 1 0.568,0.407 l 0.094,6.283 a 3.946,3.946 0 0 0 0.471,-0.28 l 0.572,-0.4 L 22,17.489 Z M 2.963,5.572 19.317,6.357 a 3.245,3.245 0 0 0 1.775,-0.5 l 0.636,-0.39 0.006,-0.395 -1.166,0.587 A 2.058,2.058 0 0 1 19.546,5.883 L 3.1,5.2 A 0.413,0.413 0 0 1 2.865,5.113 v 0.36 A 0.1,0.1 0 0 0 2.963,5.572 Z M 3.089,5.1 3.218,5.106 19.55,5.784 c 0.044,0 0.088,0 0.133,0 A 3.8,3.8 0 0 0 20.735,5.418 L 21.679,4.966 C 21.724,4.944 21.72,4.927 21.719,4.922 21.702,4.842 21.437,4.705 21.24,4.698 L 6.531,4 A 6.437,6.437 0 0 0 4,4.41 L 2.98,4.794 A 0.153,0.153 0 0 0 2.88,4.965 0.206,0.206 0 0 0 2.895,5.011 0.313,0.313 0 0 0 3.089,5.1 Z"], + "arcam":[0,0,24,24,"m 7.068,10.575 v 1.145 h 0.251 c 0.316,0 0.7,-0.093 0.7,-0.556 A 0.589,0.589 0 0 0 7.39,10.571 H 7.068 m 12.609,2.041 c 0.511,-0.853 1.007,-1.774 1.511,-2.688 l 0.755,4.108 h -0.755 l -0.324,-1.841 -1.153,1.865 a 0.048,0.048 0 0 0 -0.031,0.019 l -1.192,-1.86 c -0.137,0.586 -0.242,1.2 -0.363,1.817 h -0.713 l 0.755,-4.084 z m -6.961,-2.4 v 0.8 a 1.908,1.908 0 0 0 -1.148,-0.413 c -2.139,0.052 -1.48,4.1 1.142,2.334 v 0.8 a 2.541,2.541 0 0 1 -1.523,0.336 2.1,2.1 0 1 1 1.529,-3.852 m -4.995,-0.3 a 1.087,1.087 0 0 1 1.1,1.161 1.079,1.079 0 0 1 -0.833,1.11 l 1.079,1.85 H 8.137 L 7.075,12.2 a 0.014,0.014 0 0 0 0,0.015 v 1.817 H 6.257 V 9.911 Z M 5.707,14.032 H 4.894 C 4.768,13.732 4.528,13.151 4.528,13.151 H 3.276 L 2.921,14.032 H 2.057 c 0.325,-0.77 0.572,-1.335 0.847,-1.97 0.3,-0.689 0.577,-1.3 0.956,-2.132 z M 3.531,12.522 H 4.264 L 3.886,11.707 Z m 13.327,1.51 H 16.05 c -0.126,-0.3 -0.366,-0.881 -0.366,-0.881 h -1.251 l -0.356,0.881 h -0.863 c 0.325,-0.77 0.572,-1.335 0.848,-1.97 0.3,-0.689 0.581,-1.3 0.959,-2.132 z m -2.177,-1.51 h 0.733 l -0.377,-0.815 z"], + "corinthians":[0,0,24,24,"M 6.978,11.781 H 6.353 a 0.222,0.222 0 1 0 0,0.441 h 0.691 a 0.321,0.321 0 0 0 0.11,-0.02 0.209,0.209 0 0 0 0,-0.4 0.31,0.31 0 0 0 -0.112,-0.021 z M 7.211,12 c 0,0.079 -0.07,0.13 -0.166,0.13 H 6.354 A 0.184,0.184 0 0 1 6.24,12.095 0.11,0.11 0 0 1 6.194,12.007 0.117,0.117 0 0 1 6.24,11.913 0.179,0.179 0 0 1 6.354,11.877 H 7.045 C 7.141,11.875 7.211,11.927 7.211,12 Z m 4.295,-1.736 v 0 c -0.007,0 -0.026,0.008 -0.026,0 0,-0.008 -0.019,0 -0.021,0 -0.002,0 -0.017,0 -0.017,0 0,0 -0.01,0 -0.013,0 v 0 h -0.011 c 0,-0.005 0,-0.006 -0.012,0 -0.012,0.006 -0.021,0.007 -0.021,0 0,-0.007 -0.038,0.013 -0.045,0.008 l -0.015,0.005 c 0,-0.007 -0.029,0.012 -0.03,0.012 l -0.016,-0.011 v 0 c -0.007,-0.005 -0.022,0 -0.029,0 v 0 h -0.006 -0.028 c 0,-0.014 -0.027,0 -0.034,0.007 v 0 0.007 h -0.005 a 0.069,0.069 0 0 1 -0.036,0.027 c 0,-0.006 -0.012,0 -0.012,0 0,0 0,0 0,0 v 0 H 11.1 v 0 H 11.095 V 10.312 H 11.1 v -0.009 0 l 0.007,-0.007 a 0.221,0.221 0 0 1 0.025,-0.033 0.065,0.065 0 0 1 0,-0.014 c -0.007,0 -0.016,0 -0.024,0 -0.008,0 -0.009,-0.014 -0.009,-0.014 0,0 0,-0.012 0,-0.012 A 0.057,0.057 0 0 0 11.092,10.206 V 10.2 h -0.005 -0.009 v 0.014 l -0.007,0.008 -0.007,0.007 v 0.007 -0.036 0 h -0.006 v 0.005 l -0.015,0.008 v 0.006 L 11,10.239 c -0.01,-0.01 -0.036,0.008 -0.047,0.013 -0.011,0.005 0,0.007 0,0.007 v 0.006 a 0.028,0.028 0 0 1 0,0.013 0.237,0.237 0 0 0 -0.032,0.015 v 0.006 a 0.147,0.147 0 0 1 -0.022,0.01 c -0.005,-0.006 -0.007,-0.007 0,0 0.007,0.007 -0.006,0 0,0 0.006,0 0,0 -0.007,0 V 10.3 l -0.008,-0.007 v -0.022 -0.006 c 0,0 0.012,-0.016 0.016,-0.017 v -0.02 c 0,0 0,0 0,0 0,0 -0.018,-0.007 -0.027,0 v 0 h -0.007 v 0.005 c 0,0 -0.009,0 -0.008,0.012 h -0.007 a 0.078,0.078 0 0 0 0,0.009 l -0.079,0.029 v 0.007 c 0,0 0,0.009 0,0.011 h 0.007 v 0.007 h 0.009 v 0.005 c 0,0 0.006,0 0.011,0 0.005,0 0,0.018 0,0.027 a 0.015,0.015 0 0 0 -0.007,0.01 h -0.007 c -0.006,0.023 -0.065,0.009 -0.077,0.013 -0.013,-0.014 -0.049,0.011 -0.065,0.017 v 0.007 l 0.006,0.009 h 0.008 V 10.4 h -0.008 c 0,0 0,0 0,0.006 h -0.006 v 0.011 0 c 0.006,0 0.008,0 0.01,0.008 h 0.011 v 0 c 0,0.009 0.005,0.02 0,0.025 -0.005,0.005 -0.008,0.049 -0.007,0.064 l -0.034,0.013 -0.006,0.006 c 0,0.009 -0.017,0.016 -0.027,0.019 v 0 c -0.021,0.022 -0.005,0.022 -0.013,0.046 v 0 0.01 0 c 0,0.009 0,0.012 0,0.017 0,0.005 0.006,0.007 0.007,0.015 v 0 c 0,0 0.008,0.009 0.009,0.014 10e-4,0.005 0.005,0 0.005,0 v 0 0 h 0.006 0.01 c 0,0.007 0.013,0 0.018,0 v -0.01 l 0.021,-0.006 v 0.009 0.014 h 0.011 v 0 c 0.007,0 0.03,0 0.034,-0.012 h 0.006 l 0.006,-0.01 v 0 -0.008 a 0.045,0.045 0 0 0 0.014,-0.013 l 0.008,-0.007 c 0,0 0,-0.008 0,-0.012 l 0.031,-0.006 v 0 0.006 l 0.008,0.019 v 0.005 h 0.009 v 0 0 c 0,0.006 0.026,0.013 0.033,0.01 a 0.021,0.021 0 0 0 0.02,0.007 c 0,0.006 0.006,0 0.006,0 0,0 0.008,0 0.011,0 0.003,0 0.038,-0.007 0.048,-0.01 l 0.006,0.034 v 0 0 c 0.009,0 0.018,0 0.029,-0.008 h 0.006 c 0,0 0.006,0.014 0.008,0.011 0,0.022 0.02,0.036 0.024,0.059 0.01,0 0.007,0.047 0.013,0.061 v 0 a 0.2,0.2 0 0 0 0.037,-0.008 c 0,0.005 0,0.008 0.007,0.005 l 0.005,0.009 h 0.007 v 0.023 0 c 0.007,0 0.017,0 0.025,-0.007 v 0.034 c 0,0 0.009,0.008 0.017,0 l 0.008,0.007 v 0.02 c 0,0 0,0.009 -0.012,0.012 a 0.007,0.007 0 0 1 -0.007,0.007 l -0.01,0.016 c -0.012,0 -0.007,0.023 -0.017,0.027 v 0.007 h -0.006 a 0.008,0.008 0 0 1 -0.007,0.007 0.023,0.023 0 0 1 -0.012,0.009 c 0,0.007 -0.016,0.018 -0.015,0.029 0.001,0.011 0.023,0 0.034,0 a 0.008,0.008 0 0 1 0.009,0.007 h 0.017 0.007 l 0.014,0.007 c 0,0 0,0 0,0.005 0,0.005 0.024,0.017 0.015,0.02 V 11.1 h 0.009 c 0,-0.005 0.006,-0.009 0,-0.016 -0.006,-0.007 0,-0.007 0,-0.011 0,-0.004 0.01,-0.023 0.009,-0.031 -10e-4,-0.008 0,0 0,0 v -0.011 c 0,0 0,0 0.007,-0.007 0.007,-0.007 0,0 0,-0.006 L 11.182,11 c 0,0 -0.006,0.007 -0.005,0.013 0.001,0.006 0,0.005 -0.008,0.006 -0.008,10e-4 0,0 0,0.008 v 0 0.015 h 0.006 V 11.04 h 0.007 l 0.007,-0.012 v 0 l 0.01,-0.011 v -0.006 0 c 0,-0.006 0,-0.015 0,0 0,0 0,-0.014 0,-0.015 v -0.007 0 a 0.013,0.013 0 0 1 0.01,-0.012 0.2,0.2 0 0 0 0,-0.074 l 0.006,-0.022 0.009,-0.007 v -0.006 c 0,0 0.006,-0.011 0.01,-0.012 l 0.009,-0.009 c 0,0 0.007,-0.011 0.011,-0.012 0.004,-0.001 0.033,-0.021 0.045,-0.025 0.012,-0.004 0.016,-0.012 0.022,-0.015 0.006,-0.003 0.039,-0.016 0.047,-0.019 0.008,-0.003 0,-0.008 0.008,-0.01 l 0.007,-0.009 v 0 c 0,-0.005 0,-0.011 0,-0.018 0,-0.007 0,0 0.005,0 v -0.005 h 0.006 v 0 0 c 0,-0.007 0,-0.007 0,-0.012 l 0.005,-0.008 v -0.008 l 0.005,-0.005 v -0.006 c 0.007,-0.006 0,-0.028 0.009,-0.039 0.009,-0.011 0.01,-0.032 0.008,-0.046 -0.002,-0.014 0,-0.035 0,-0.043 v -0.047 0 l 0.017,-0.006 c 0,-0.006 0.012,-0.015 0.012,-0.021 h 0.006 v -0.008 a 0.012,0.012 0 0 0 0.009,-0.013 c 0.006,0 0.01,-0.015 0.01,-0.016 h 0.006 v -0.007 -0.007 c 0,0 0,-0.007 0.009,-0.009 v 0 c 0,0 0,-0.009 0,-0.014 v 0 c 0.016,0 0.012,-0.066 0.011,-0.083 A 0.019,0.019 0 0 1 11.494,10.324 H 11.489 A 0.011,0.011 0 0 1 11.478,10.317 Z M 7.872,8.238 7.978,8.317 A 0.868,0.868 0 0 0 7.833,8.589 c 0,0 -0.011,0 -0.106,0.069 A 1.085,1.085 0 0 0 7.573,8.809 1.14,1.14 0 0 0 7.355,9.177 0.694,0.694 0 0 0 7.327,9.288 v 0.017 l -0.05,0.067 a 1.119,1.119 0 0 0 -0.286,0.684 c 0,0 0,-0.007 -0.029,0.036 l -0.039,0.062 a 1.428,1.428 0 0 0 -0.1,0.2 1.348,1.348 0 0 0 -0.066,0.192 0.938,0.938 0 0 0 -0.022,0.108 0.832,0.832 0 0 0 -0.01,0.112 0.726,0.726 0 0 0 0.006,0.114 0.287,0.287 0 0 0 0.021,0.073 L 6.718,11.038 C 6.7,11.083 6.681,11.13 6.664,11.18 L 6.65,11.223 6.639,11.255 c 0,0.015 -0.009,0.031 -0.013,0.046 L 6.618,11.33 H 6.353 a 0.221,0.221 0 1 0 0,0.438 H 7.044 A 0.322,0.322 0 0 0 7.159,11.747 0.206,0.206 0 0 0 7.197,11.37 0.3,0.3 0 0 0 7.044,11.33 H 7.009 c 0,-0.014 -0.005,-0.028 -0.008,-0.041 a 0.874,0.874 0 0 0 -0.03,-0.091 1.44,1.44 0 0 0 0.2,-0.754 c 0,-0.006 0.006,-0.016 0.006,-0.016 A 1.461,1.461 0 0 0 7.486,9.692 c 0,-0.015 0,-0.032 0,-0.047 A 1.376,1.376 0 0 0 7.886,9.01 L 7.895,8.982 A 1.256,1.256 0 0 0 8.422,8.389 c 0,-0.012 0.007,-0.027 0.011,-0.04 A 1.358,1.358 0 0 0 9.013,7.9 0.742,0.742 0 0 0 9.054,7.82 1.434,1.434 0 0 0 9.737,7.441 L 9.752,7.42 a 1.344,1.344 0 0 0 0.744,-0.288 0.184,0.184 0 0 0 0.026,-0.029 1.36,1.36 0 0 0 0.729,-0.166 h 0.005 v 0 l 0.066,0.006 V 6.751 A 1.068,1.068 0 0 1 11.199,6.859 0.561,0.561 0 0 1 11.075,6.924 0.907,0.907 0 0 1 10.93,6.967 1.574,1.574 0 0 1 10.77,6.992 C 10.716,7 10.659,7 10.6,7 a 1.776,1.776 0 0 0 0.126,-0.2 v 0 a 0.539,0.539 0 0 1 0.083,-0.048 0.7,0.7 0 0 1 0.085,-0.036 0.857,0.857 0 0 1 0.168,-0.041 1.53,1.53 0 0 1 0.26,-0.011 V 6.576 A 1.038,1.038 0 0 0 10.658,6.737 H 10.652 L 10.568,6.75 A 1.111,1.111 0 0 0 9.879,7.032 H 9.824 L 9.775,7.038 A 0.263,0.263 0 0 0 9.731,7.047 L 9.667,7.065 A 1.564,1.564 0 0 0 9.429,7.154 C 9.401,7.168 9.372,7.183 9.344,7.2 A 0.867,0.867 0 0 0 9.105,7.41 0.134,0.134 0 0 0 9.087,7.438 L 9.071,7.469 8.984,7.508 A 1.122,1.122 0 0 0 8.395,7.949 L 8.312,8.01 8.277,8.035 8.22,7.975 8.2,7.956 C 8.041,7.451 8.218,6.718 7.889,6.286 L 6.015,3.845 A 9.871,9.871 0 0 0 4.1,5.628 L 6.3,7.734 C 6.71,8.122 7.426,7.9 7.872,8.238 Z M 6.8,11.069 v -0.011 l 0.011,0.02 0.04,0.078 a 0.958,0.958 0 0 1 0.059,0.153 v 0.017 H 6.708 A 2.1,2.1 0 0 1 6.8,11.069 Z m 0.246,0.351 a 0.168,0.168 0 0 1 0.153,0.073 0.1,0.1 0 0 1 0.013,0.049 c 0,0.078 -0.07,0.13 -0.166,0.13 H 6.354 A 0.184,0.184 0 0 1 6.24,11.637 0.11,0.11 0 0 1 6.194,11.549 c 0,-0.077 0.069,-0.129 0.16,-0.129 z m 0.03,-0.761 A 1.123,1.123 0 0 1 7.04,10.8 C 7.032,10.823 7.024,10.847 7.015,10.871 6.989,10.942 6.957,11.013 6.925,11.082 6.912,11.055 6.899,11.027 6.884,11 6.869,10.973 6.855,10.946 6.84,10.92 v 0 a 0.255,0.255 0 0 1 -0.017,-0.056 0.719,0.719 0 0 1 -0.007,-0.1 0.889,0.889 0 0 1 0.09,-0.375 C 6.937,10.323 6.972,10.26 7.006,10.2 l 0.007,-0.012 a 1.3,1.3 0 0 1 0.077,0.266 c 0,0.022 0,0.047 0,0.071 A 0.714,0.714 0 0 1 7.075,10.659 Z M 7.155,10.295 7.145,10.28 A 0.4,0.4 0 0 1 7.121,10.224 0.706,0.706 0 0 1 7.082,10.062 1.008,1.008 0 0 1 7.337,9.444 0.743,0.743 0 0 1 7.37,9.521 L 7.377,9.545 A 0.529,0.529 0 0 1 7.391,9.611 L 7.398,9.656 V 9.688 A 1.239,1.239 0 0 1 7.154,10.3 Z m 0.64,-1.3 A 1.171,1.171 0 0 1 7.475,9.524 0.255,0.255 0 0 1 7.447,9.485 0.387,0.387 0 0 1 7.416,9.26 0.628,0.628 0 0 1 7.474,9.084 0.652,0.652 0 0 1 7.517,9.012 0.865,0.865 0 0 1 7.617,8.889 0.727,0.727 0 0 1 7.674,8.835 L 7.789,8.729 7.8,8.713 c 0,0.017 0,0.034 0,0.05 a 0.432,0.432 0 0 1 0,0.05 A 1.025,1.025 0 0 1 7.794,8.99 Z M 9.852,7.27 9.872,7.222 A 0.559,0.559 0 0 1 9.919,7.134 0.209,0.209 0 0 1 9.944,7.1 0.752,0.752 0 0 1 10.176,6.944 1.189,1.189 0 0 1 10.426,6.869 c 0.055,-0.011 0.108,-0.018 0.159,-0.026 a 0.574,0.574 0 0 1 -0.059,0.1 1.173,1.173 0 0 1 -0.078,0.1 L 10.432,7.06 A 0.747,0.747 0 0 1 10.17,7.219 1.574,1.574 0 0 1 10.006,7.272 C 9.949,7.288 9.89,7.302 9.83,7.315 A 0.461,0.461 0 0 0 9.852,7.27 Z M 9.13,7.606 9.139,7.567 9.154,7.52 A 0.211,0.211 0 0 1 9.178,7.475 0.693,0.693 0 0 1 9.244,7.4 0.794,0.794 0 0 1 9.388,7.287 C 9.414,7.271 9.439,7.258 9.465,7.245 A 1.946,1.946 0 0 1 9.778,7.136 h 0.014 a 1.326,1.326 0 0 1 -0.134,0.242 0.634,0.634 0 0 1 -0.1,0.1 0.984,0.984 0 0 1 -0.133,0.087 L 9.346,7.6 C 9.269,7.637 9.186,7.669 9.101,7.7 A 0.751,0.751 0 0 0 9.13,7.606 Z M 8.474,8 A 0.783,0.783 0 0 1 8.592,7.85 0.823,0.823 0 0 1 8.728,7.741 L 8.8,7.7 A 2.254,2.254 0 0 1 9.02,7.6 l 0.013,0 -0.006,0.025 -0.033,0.1 A 0.829,0.829 0 0 1 8.935,7.855 0.546,0.546 0 0 1 8.896,7.914 C 8.881,7.932 8.865,7.951 8.848,7.968 A 1.232,1.232 0 0 1 8.6,8.15 C 8.553,8.177 8.5,8.203 8.456,8.228 A 0.442,0.442 0 0 1 8.474,8 Z M 8.222,8.2 C 8.264,8.166 8.307,8.135 8.349,8.105 a 0.323,0.323 0 0 1 0.012,0.085 0.264,0.264 0 0 1 0,0.04 0.489,0.489 0 0 1 -0.01,0.066 V 8.32 L 8.344,8.34 V 8.357 A 1.237,1.237 0 0 1 7.929,8.864 0.259,0.259 0 0 1 7.909,8.718 C 7.909,8.694 7.916,8.672 7.919,8.655 7.922,8.638 7.927,8.625 7.928,8.621 A 0.823,0.823 0 0 1 8.171,8.253 Z M 7.177,7.068 C 7.358,7.175 7.377,7.243 7.731,7.117 7.643,7.295 7.565,7.405 7.692,7.574 L 8.1,8.06 8.062,8.1 7.576,7.652 C 7.394,7.536 7.29,7.633 7.108,7.74 7.242,7.426 7.229,7.354 7.079,7.185 A 10.323,10.323 0 0 1 6.165,6.155 C 6.506,6.41 6.846,6.773 7.177,7.068 Z M 4.377,5.639 C 4.433,5.629 4.4,5.592 4.49,5.603 c 0.451,0.466 0.964,0.938 1.415,1.4 0.148,0.114 0.214,0.23 0.363,0.343 0.03,0.042 0.173,0.049 0.2,0.091 C 6.122,7.443 6.012,7.245 5.83,7.088 5.358,6.6 4.848,6.128 4.375,5.639 Z m 12.87,9.853 c 0.219,0.088 0.482,0.175 0.7,0.263 a 4.889,4.889 0 0 1 -0.936,1.558 q -0.609,-0.637 -1.22,-1.274 l 0.041,-0.03 a 1.136,1.136 0 0 0 0.478,-0.568 l 0.1,-0.067 a 1.127,1.127 0 0 0 0.4,-0.633 v -0.017 l 0.051,-0.069 a 1.125,1.125 0 0 0 0.286,-0.682 l 0.07,-0.1 A 1.116,1.116 0 0 0 17.41,13.154 0.338,0.338 0 0 0 17.388,13.081 L 17.428,13 a 2.077,2.077 0 0 0 0.1,-0.283 H 17.8 a 0.23,0.23 0 0 0 0.251,-0.216 v 0 A 0.234,0.234 0 0 0 17.8,12.278 h -0.692 a 0.312,0.312 0 0 0 -0.128,0.027 0.211,0.211 0 0 0 -0.131,0.187 v 0 a 0.208,0.208 0 0 1 0.131,-0.189 c 0,-0.022 0,-0.044 0,-0.066 v 0 a 0.313,0.313 0 0 0 0.125,0.026 H 17.8 a 0.249,0.249 0 0 0 0.232,-0.132 0.2,0.2 0 0 0 0.019,-0.085 0.231,0.231 0 0 0 -0.251,-0.222 h -0.692 a 0.313,0.313 0 0 0 -0.125,0.026 0.208,0.208 0 0 0 -0.134,0.188 v 0 a 0.206,0.206 0 0 1 0.134,-0.189 c 0,-0.023 0,-0.046 0,-0.069 a 0.3,0.3 0 0 0 0.127,0.027 h 0.69 a 0.23,0.23 0 0 0 0.251,-0.216 v 0 A 0.231,0.231 0 0 0 17.8,11.369 h -0.282 v -0.017 a 1.368,1.368 0 0 0 -0.172,-0.728 l -0.013,-0.015 -0.017,-0.1 A 1.136,1.136 0 0 0 17.029,9.827 v 0 L 17,9.707 A 1.249,1.249 0 0 0 16.7,9.135 0.877,0.877 0 0 0 16.615,9.062 C 16.596,9.047 16.583,9.037 16.56,9.017 L 16.534,8.971 16.506,8.921 A 1.341,1.341 0 0 0 16.229,8.47 0.871,0.871 0 0 0 16.065,8.342 L 16.045,8.31 16.126,8.232 c 0.454,-0.338 1.17,-0.119 1.58,-0.5 L 19.9,5.628 A 9.72,9.72 0 0 0 17.984,3.844 l -1.87,2.442 c -0.323,0.425 -0.1,1.155 -0.264,1.668 L 15.822,7.984 15.8,8 A 0.933,0.933 0 0 0 15.439,7.767 L 15.36,7.68 A 1.143,1.143 0 0 0 14.724,7.28 H 14.712 L 14.621,7.204 A 1.152,1.152 0 0 0 13.939,6.92 l -0.1,-0.069 A 1.136,1.136 0 0 0 13.114,6.656 0.3,0.3 0 0 0 13.041,6.677 L 12.959,6.644 A 2.289,2.289 0 0 0 12.686,6.551 V 6.32 A 3.1,3.1 0 0 0 13.973,5.634 V 4.815 A 4.116,4.116 0 0 0 12.642,4.325 1.223,1.223 0 0 0 13.256,3.258 1.255,1.255 0 0 0 12.019,2 a 1.268,1.268 0 0 0 -1.258,1.258 1.235,1.235 0 0 0 0.614,1.06 4.156,4.156 0 0 0 -1.359,0.5 v 0.819 a 3.083,3.083 0 0 0 1.307,0.694 V 6.285 A 0.233,0.233 0 0 1 11.546,6.032 0.2,0.2 0 0 1 11.705,6.12 0.193,0.193 0 0 0 11.57,6.057 0.231,0.231 0 0 0 11.348,6.308 V 7 a 0.285,0.285 0 0 0 0.066,0.189 4.912,4.912 0 0 0 -4.173,4.182 0.2,0.2 0 0 1 -0.037,0.375 v 0.058 a 0.215,0.215 0 0 1 0.148,0.2 0.213,0.213 0 0 1 -0.15,0.2 v 0.055 a 0.215,0.215 0 0 1 0.148,0.2 0.207,0.207 0 0 1 -0.115,0.181 4.91,4.91 0 0 0 4.173,4.243 c -0.007,0.009 -0.018,0.014 -0.024,0.025 a 0.3,0.3 0 0 0 -0.037,0.148 v 0.039 h -0.015 c -0.032,0.009 -0.068,0.022 -0.106,0.037 A 1.45,1.45 0 0 0 10.461,16.925 0.042,0.042 0 0 1 10.446,16.918 1.457,1.457 0 0 0 9.709,16.609 H 9.685 A 1.446,1.446 0 0 0 9.025,16.19 H 9.01 A 1.459,1.459 0 0 0 8.404,15.68 L 8.364,15.67 A 1.341,1.341 0 0 0 7.914,15.087 C 7.891,15.073 7.842,15.039 7.842,15.039 A 1.449,1.449 0 0 0 7.449,14.346 v 0 0 a 1.454,1.454 0 0 0 -0.3,-0.741 L 7.122,13.58 A 1.434,1.434 0 0 0 6.955,12.826 v -0.006 0 c 0,-0.046 0.009,-0.092 0.013,-0.139 h 0.081 a 0.3,0.3 0 0 0 0.145,-0.034 0.207,0.207 0 0 0 0.115,-0.182 0.217,0.217 0 0 0 -0.148,-0.2 0.333,0.333 0 0 0 -0.112,-0.02 H 6.353 a 0.231,0.231 0 0 0 -0.252,0.217 0.235,0.235 0 0 0 0.252,0.223 H 6.6 v 0.008 a 1.11,1.11 0 0 0 0.159,0.73 l 0.017,0.116 a 1.134,1.134 0 0 0 0.271,0.674 l 0.023,0.115 a 1.106,1.106 0 0 0 0.371,0.647 l 0.051,0.039 0.045,0.1 a 1.125,1.125 0 0 0 0.44,0.591 L 8.04,15.79 a 2.186,2.186 0 0 0 0.187,0.232 q -0.621,0.652 -1.244,1.3 A 5.087,5.087 0 0 1 6.047,15.756 c 0.219,-0.088 0.468,-0.175 0.687,-0.263 a 5.665,5.665 0 0 1 -2.222,-2 5.525,5.525 0 0 0 0.278,3.523 l 0.394,-0.7 a 12.4,12.4 0 0 0 1.134,1.71 q -0.549,0.582 -1.1,1.163 a 0.27586228,0.27586228 0 1 0 0.4,0.38 L 6.671,18.435 A 7.323,7.323 0 0 0 10.129,20.527 2.808,2.808 0 0 1 12,22 a 2.757,2.757 0 0 1 1.858,-1.477 7.269,7.269 0 0 0 3.473,-2.092 q 0.532,0.57 1.068,1.14 c 0.278,0.294 0.643,-0.123 0.393,-0.386 q -0.553,-0.582 -1.11,-1.163 a 11.711,11.711 0 0 0 1.132,-1.71 c 0.118,0.232 0.25,0.467 0.382,0.7 a 5.524,5.524 0 0 0 0.277,-3.523 5.665,5.665 0 0 1 -2.226,2.003 z m -0.261,-3.546 a 0.2,0.2 0 0 1 0.12,-0.035 H 17.8 c 0.089,0 0.158,0.052 0.158,0.122 a 0.142,0.142 0 0 1 -0.158,0.13 h -0.692 a 0.2,0.2 0 0 1 -0.12,-0.035 0.126,0.126 0 0 1 -0.034,-0.039 0.106,0.106 0 0 1 -0.013,-0.05 0.117,0.117 0 0 1 0.045,-0.093 z M 12.674,2.877 a 0.6,0.6 0 0 1 0.088,0.833 0.1,0.1 0 0 1 -0.1,-0.014 0.637,0.637 0 0 0 0.012,-0.819 z M 11.06,3.765 a 1.053,1.053 0 0 1 0.079,-1.21 c 0.037,0.029 0.038,0.041 0.081,0.078 a 1.154,1.154 0 0 0 -0.16,1.132 z m 5.711,13.8 c 0,0 -0.043,0.043 -0.06,0.06 l -1.2,-1.3 a 0.877,0.877 0 0 0 0.068,-0.056 z m -1.654,-1.134 h -0.008 c 0,-0.008 0.005,-0.018 0.008,-0.025 l 0.034,-0.107 a 0.928,0.928 0 0 1 0.056,-0.121 1.157,1.157 0 0 1 0.481,-0.38 0.326,0.326 0 0 1 -0.019,0.222 1.022,1.022 0 0 1 -0.552,0.411 z m 1.107,-1.02 a 0.733,0.733 0 0 1 -0.035,0.09 0.8,0.8 0 0 1 -0.148,0.218 1.738,1.738 0 0 1 -0.247,0.207 0.437,0.437 0 0 1 0.011,-0.236 v -0.018 a 1.219,1.219 0 0 1 0.415,-0.506 v 0.064 c 0,0.037 0.006,0.074 0.006,0.109 a 0.229,0.229 0 0 1 -0.002,0.072 z m 0.351,-0.342 a 1.5,1.5 0 0 1 -0.168,0.185 l -0.057,0.055 -0.008,0.008 c 0,-0.034 -0.008,-0.068 -0.008,-0.1 a 1.025,1.025 0 0 1 0.014,-0.177 0.946,0.946 0 0 1 0.209,-0.4 c 0.035,-0.044 0.073,-0.088 0.111,-0.13 l 0.01,0.019 a 0.417,0.417 0 0 1 0.036,0.113 0.384,0.384 0 0 1 0.008,0.065 v 0.029 a 0.8,0.8 0 0 1 -0.147,0.333 z m 0.365,-0.68 a 1.946,1.946 0 0 1 -0.135,0.2 1.1,1.1 0 0 1 -0.06,-0.214 v -0.03 a 1.244,1.244 0 0 1 0.245,-0.609 l 0.008,0.022 0.013,0.04 a 0.51,0.51 0 0 1 0.052,0.172 0.815,0.815 0 0 1 -0.123,0.419 z m 0.2,-0.559 -0.008,0.014 a 1.438,1.438 0 0 1 -0.076,-0.265 0.552,0.552 0 0 1 -0.005,-0.071 1.406,1.406 0 0 1 0.165,-0.558 c 0.013,0.027 0.026,0.054 0.04,0.08 l 0.045,0.079 v 0 a 0.3,0.3 0 0 1 0.017,0.059 0.685,0.685 0 0 1 0.008,0.1 1.137,1.137 0 0 1 -0.183,0.562 z m 0.2,-0.867 v 0.009 l -0.009,-0.016 -0.055,-0.109 a 0.8,0.8 0 0 1 -0.045,-0.124 v -0.011 h 0.206 a 2.174,2.174 0 0 1 -0.094,0.251 z m -0.237,-0.6 H 17.8 a 0.13,0.13 0 1 1 0,0.254 h -0.692 a 0.2,0.2 0 0 1 -0.12,-0.035 0.12,0.12 0 0 1 -0.044,-0.063 0.1,0.1 0 0 1 0,-0.025 c -0.005,-0.075 0.067,-0.129 0.162,-0.129 z m -0.163,0.3 v 0 a 0.291,0.291 0 0 0 0.162,0.046 h 0.027 c 0,0.011 0,0.023 0.006,0.034 a 0.874,0.874 0 0 0 0.03,0.091 1.437,1.437 0 0 0 -0.2,0.754 c 0,0.005 -0.008,0.014 -0.008,0.014 a 1.479,1.479 0 0 0 -0.308,0.737 0.4,0.4 0 0 0 0,0.047 1.38,1.38 0 0 0 -0.4,0.635 c 0,0.007 -0.481,0.306 -0.536,0.621 0,0.012 -0.007,0.027 -0.01,0.041 a 1.065,1.065 0 0 0 -0.583,0.449 0.686,0.686 0 0 0 -0.04,0.077 1.436,1.436 0 0 0 -0.677,0.389 l -0.014,0.02 -0.013,-0.02 a 1.463,1.463 0 0 0 -0.739,0.3 c -0.009,0.008 -0.017,0.02 -0.026,0.029 a 1.388,1.388 0 0 0 -0.729,0.166 l -0.006,0.005 v 0 C 12.813,17.091 12.75,17.086 12.688,17.082 v -0.028 a 0.3,0.3 0 0 0 -0.032,-0.137 0.206,0.206 0 0 0 -0.185,-0.123 0.208,0.208 0 0 0 -0.122,0.041 0.2,0.2 0 0 1 0.143,-0.065 0.206,0.206 0 0 1 0.184,0.122 4.909,4.909 0 0 0 4.267,-4.227 z m -1.9,3.662 a 1.039,1.039 0 0 1 -0.053,0.182 0.279,0.279 0 0 1 -0.026,0.046 1.03,1.03 0 0 1 -0.6,0.339 h -0.013 c 0.021,-0.047 0.043,-0.093 0.066,-0.134 a 0.684,0.684 0 0 1 0.068,-0.107 0.4,0.4 0 0 1 0.048,-0.054 1.4,1.4 0 0 1 0.513,-0.27 z m -0.731,0.384 c -0.014,0.027 -0.028,0.058 -0.028,0.058 a 0.528,0.528 0 0 1 -0.085,0.158 0.988,0.988 0 0 1 -0.616,0.255 c 0.008,-0.012 0.019,-0.06 0.05,-0.116 l 0.02,-0.034 a 0.446,0.446 0 0 1 0.058,-0.068 0.722,0.722 0 0 1 0.188,-0.124 1.282,1.282 0 0 1 0.155,-0.061 2.494,2.494 0 0 1 0.261,-0.066 z m -0.9,0.516 a 1.04,1.04 0 0 1 -0.657,0.134 h -0.015 c 0.014,-0.015 0.027,-0.03 0.04,-0.046 a 1.184,1.184 0 0 1 0.16,-0.145 1.178,1.178 0 0 1 0.6,-0.144 0.4,0.4 0 0 1 -0.127,0.2 z m -0.677,0 v 0 c -0.014,0.014 -0.028,0.03 -0.041,0.045 v -0.1 l 0.084,0.007 z M 11.87,9.88 11.75,9.848 11.669,9.942 v -0.12 l -0.11,-0.042 0.113,-0.035 0.009,-0.122 0.078,0.094 0.112,-0.035 -0.068,0.1 z m 1.29,2.852 c -0.015,-0.1 -0.028,-0.2 -0.039,-0.292 v -0.01 a 5.324,5.324 0 0 1 1.75,-0.808 v 0 c 0.033,0.1 0.057,0.2 0.1,0.308 a 5.122,5.122 0 0 0 -1.805,0.804 z m 0.043,0.364 h -0.024 0.022 z M 13.08,11.678 a 4.953,4.953 0 0 1 1.642,-0.715 v 0 c 0.017,0.114 0.043,0.25 0.059,0.313 a 4.642,4.642 0 0 0 -1.693,0.741 c 0,-0.106 -0.008,-0.21 -0.008,-0.313 z m -0.9,-0.984 c -0.014,-0.1 -0.032,-0.22 -0.046,-0.32 a 1.424,1.424 0 0 1 1.021,-0.039 v 0 c -0.018,0.12 -0.035,0.24 -0.05,0.36 A 1.952,1.952 0 0 0 12.184,10.7 Z m 2.9,1.527 a 1.456,1.456 0 0 0 0.083,0.2 8.972,8.972 0 0 0 -1.879,0.953 c -0.009,-0.1 -0.019,-0.192 -0.028,-0.288 a 6.619,6.619 0 0 1 1.828,-0.863 z m -0.43,-2.68 a 3.559,3.559 0 0 1 0.865,3.511 6.435,6.435 0 0 1 -0.861,-3.509 z m 0,0.863 c 0.012,0.078 0.013,0.151 0.034,0.292 a 4.6,4.6 0 0 0 -1.594,0.657 c 0.006,-0.1 0.013,-0.205 0.022,-0.308 a 6.53,6.53 0 0 1 1.543,-0.639 z m -1.5,0.283 c 0.016,-0.126 0.035,-0.251 0.054,-0.378 a 14.21,14.21 0 0 1 1.41,-0.627 c 0,0.106 0.007,0.212 0.01,0.317 a 6.21,6.21 0 0 0 -1.469,0.69 z m -1.064,-0.615 c 0,0 -0.039,-0.284 -0.039,-0.284 a 1.149,1.149 0 0 1 1.157,0.174 c 0,0 -0.025,0.159 -0.031,0.2 a 1.106,1.106 0 0 0 -1.082,-0.088 z m 0.007,0.649 -0.069,0.1 0.071,0.1 -0.121,-0.033 -0.081,0.1 v -0.119 l -0.11,-0.044 0.113,-0.034 0.009,-0.124 0.077,0.1 z m -0.365,-0.134 c 0.018,0.829 -1.306,0.829 -1.324,0 -0.018,-0.829 1.313,-0.826 1.329,0.002 z m -1.245,0.815 0.01,-0.122 0.077,0.1 0.112,-0.035 -0.069,0.1 0.07,0.1 -0.12,-0.032 -0.08,0.094 v -0.12 l -0.11,-0.042 z m 0.14,0.244 c 0.191,-0.1 0.38,-0.192 0.572,-0.28 a 4.492,4.492 0 0 1 0.81,-0.293 c 0.071,-0.017 0.142,-0.034 0.215,-0.046 v 0 a 1.737,1.737 0 0 1 0.3,-0.028 1.359,1.359 0 0 1 0.552,0.053 c -0.009,0.1 -0.016,0.2 -0.021,0.308 -0.824,-0.29 -1.8,0.306 -2.579,0.674 -0.025,-0.085 -0.052,-0.171 -0.078,-0.257 0.006,0.001 0.089,-0.051 0.234,-0.129 z m 2.415,0.04 v 0.02 c 0,0.107 0,0.215 0.008,0.324 a 4.151,4.151 0 0 0 -2.386,0.627 c -0.028,-0.091 -0.056,-0.181 -0.083,-0.271 0.005,0.002 1.645,-0.961 2.466,-0.698 z m 0.028,0.628 c 0,0.043 0.008,0.087 0.013,0.131 0.005,0.044 0.013,0.093 0.019,0.139 a 3.758,3.758 0 0 0 -2.265,0.715 c -0.024,-0.1 -0.048,-0.194 -0.072,-0.291 a 4.516,4.516 0 0 1 2.31,-0.692 z m 0.07,0.526 c 0.013,0.084 0.027,0.168 0.044,0.253 a 4.021,4.021 0 0 0 -2.208,0.816 l -0.063,-0.293 a 4.04,4.04 0 0 1 2.232,-0.774 z m -0.056,0.478 c 0.078,0 0.094,0.036 0.05,0.122 a 4.694,4.694 0 0 1 -1.03,0.564 1.237,1.237 0 0 1 0.013,-0.278 6.414,6.414 0 0 1 0.972,-0.406 z m 2.254,-0.545 c 0.044,0.087 0.075,0.154 0.132,0.248 -1.1,0.413 -2.2,1.314 -3.021,1.572 -0.11,0.014 -0.171,-0.008 -0.3,-0.216 1.005,-0.277 1.849,-1.066 3.194,-1.602 z m -2.7,-5.606 A 0.285,0.285 0 0 0 12.692,7 V 6.937 h 0.025 l 0.089,-0.029 a 1.458,1.458 0 0 0 0.754,0.2 l 0.009,0.006 a 1.486,1.486 0 0 0 0.742,0.308 h 0.038 a 1.465,1.465 0 0 0 0.669,0.421 v 0 a 1.487,1.487 0 0 0 0.615,0.511 l 0.026,0.007 a 1.324,1.324 0 0 0 0.462,0.586 l 0.086,0.049 a 1.484,1.484 0 0 0 0.406,0.693 l 0.014,0.01 a 1.464,1.464 0 0 0 0.31,0.731 l 0.026,0.024 a 1.468,1.468 0 0 0 0.192,0.758 v 0 a 0.651,0.651 0 0 0 -0.022,0.152 h -0.031 a 0.3,0.3 0 0 0 -0.162,0.045 4.909,4.909 0 0 0 -4.302,-4.24 z m 4.975,4.287 H 17.8 c 0.089,0 0.158,0.052 0.158,0.122 A 0.142,0.142 0 0 1 17.8,11.705 h -0.692 a 0.2,0.2 0 0 1 -0.035,0 0.221,0.221 0 0 1 -0.06,-0.017 0.117,0.117 0 0 1 -0.072,-0.1 c 0,-0.077 0.07,-0.128 0.167,-0.128 h 0.507 z M 17.225,11.36 v -0.044 l 0.046,0.043 h -0.05 z m 0.043,-0.694 a 0.813,0.813 0 0 1 0.111,0.22 1.18,1.18 0 0 1 0.046,0.362 c 0,0.031 0,0.062 0,0.093 v 0.014 a 1.318,1.318 0 0 1 -0.194,-0.2 0.856,0.856 0 0 1 -0.125,-0.3 C 17.1,10.827 17.094,10.799 17.09,10.772 17.08,10.716 17.073,10.661 17.068,10.607 l -0.006,-0.08 a 1.952,1.952 0 0 0 0.194,0.124 z M 16.955,9.873 a 0.667,0.667 0 0 1 0.067,0.075 1.15,1.15 0 0 1 0.2,0.564 v 0 l -0.057,-0.033 -0.127,-0.085 v 0 L 17,10.363 a 1.247,1.247 0 0 1 -0.264,-0.6 1.606,1.606 0 0 0 0.2,0.095 z m -0.431,-0.76 a 0.277,0.277 0 0 1 0.034,0.02 1.056,1.056 0 0 1 0.348,0.6 V 9.74 C 16.881,9.728 16.853,9.717 16.826,9.705 l -0.064,-0.03 a 1.03,1.03 0 0 1 -0.1,-0.06 1.115,1.115 0 0 1 -0.308,-0.479 l -0.033,-0.085 0.061,0.02 a 0.862,0.862 0 0 1 0.146,0.044 z m 0.093,-3.256 c 0.432,-0.526 0.843,-1.089 1.274,-1.615 0.017,0.054 0.049,0.016 0.05,0.108 -0.411,0.5 -0.82,1.067 -1.231,1.568 -0.095,0.161 -0.2,0.24 -0.3,0.4 C 16.372,6.353 16.383,6.495 16.344,6.529 16.3,6.19 16.487,6.057 16.621,5.859 Z m -0.2,1.733 c 0.127,-0.171 0.048,-0.282 -0.039,-0.463 0.361,0.128 0.377,0.059 0.562,-0.05 0.334,-0.3 0.679,-0.666 1.024,-0.926 A 10.457,10.457 0 0 1 17.045,7.2 C 16.894,7.371 16.881,7.443 17.016,7.763 16.832,7.654 16.727,7.556 16.543,7.674 L 16.05,8.127 C 16.037,8.114 16.024,8.101 16.009,8.088 16.148,7.92 16.285,7.756 16.424,7.592 Z m -0.419,0.82 a 1.027,1.027 0 0 1 0.418,0.546 v 0 0.007 a 1.647,1.647 0 0 1 -0.2,-0.076 C 16.196,8.878 16.179,8.869 16.163,8.86 A 1.136,1.136 0 0 1 15.772,8.379 H 15.8 c 0.03,0.005 0.061,0.008 0.092,0.011 0.031,0.003 0.063,0.006 0.1,0.007 a 0.108,0.108 0 0 1 0.013,0.015 z M 15.371,7.844 h 0.017 a 0.791,0.791 0 0 1 0.253,0.134 0.967,0.967 0 0 1 0.127,0.12 2.231,2.231 0 0 1 0.155,0.194 v 0 c -0.026,0 -0.052,0 -0.08,0 h -0.018 c -0.035,0 -0.068,-0.009 -0.1,-0.014 C 15.693,8.273 15.671,8.266 15.651,8.26 A 0.56,0.56 0 0 1 15.583,8.234 1.123,1.123 0 0 1 15.26,7.982 C 15.219,7.939 15.178,7.894 15.139,7.848 A 1.733,1.733 0 0 0 15.378,7.846 Z M 14.622,7.373 a 0.342,0.342 0 0 1 0.045,0 0.125,0.125 0 0 1 0.039,0 0.762,0.762 0 0 1 0.186,0.057 1.316,1.316 0 0 1 0.4,0.316 h 0.005 c -0.033,0 -0.066,0 -0.1,0.006 H 15.123 A 0.847,0.847 0 0 1 15.023,7.743 0.609,0.609 0 0 1 14.952,7.726 0.828,0.828 0 0 1 14.81,7.664 L 14.74,7.621 C 14.693,7.59 14.646,7.555 14.599,7.521 L 14.53,7.463 14.461,7.402 C 14.523,7.4 14.576,7.388 14.629,7.375 Z m -0.7,-0.363 a 0.8,0.8 0 0 1 0.358,0.087 1.82,1.82 0 0 1 0.28,0.181 l 0.014,0.009 a 1.34,1.34 0 0 1 -0.272,0.04 1.113,1.113 0 0 1 -0.535,-0.2 C 13.741,7.112 13.715,7.095 13.689,7.079 l 0.06,-0.021 a 0.539,0.539 0 0 1 0.183,-0.046 z m -0.939,-0.2 0.068,-0.04 0.017,-0.01 a 0.176,0.176 0 0 1 0.054,-0.017 1.045,1.045 0 0 1 0.669,0.184 l 0.011,0.006 A 1.329,1.329 0 0 1 13.539,7.01 0.762,0.762 0 0 1 13.23,6.976 2.39,2.39 0 0 1 12.909,6.851 c 0.03,-0.004 0.057,-0.019 0.084,-0.035 z M 12.921,6.725 h 0.008 L 12.91,6.736 12.8,6.792 a 0.748,0.748 0 0 1 -0.117,0.044 v 0 -0.2 a 2.475,2.475 0 0 1 0.248,0.095 z M 11.437,3.2 a 0.551,0.551 0 0 1 0.024,-0.114 0.585,0.585 0 0 1 0.558,-0.411 0.583,0.583 0 0 1 0.278,0.071 l 0.048,0.029 a 0.594,0.594 0 0 1 0.087,0.072 0.585,0.585 0 0 1 0,0.827 0.756,0.756 0 0 1 -0.087,0.072 L 12.297,3.775 A 0.582,0.582 0 0 1 11.647,3.712 0.592,0.592 0 0 1 11.461,3.434 0.551,0.551 0 0 1 11.437,3.32 q 0,-0.03 0,-0.06 0,-0.03 0,-0.06 z m -1.211,1.665 h 3.523 v 0.089 h -3 c -0.35,0 -0.365,0.127 -0.41,0.295 h -0.116 z m 0,0.813 v -0.09 h 3.523 v 0.09 z m 2.251,0.379 a 0.23,0.23 0 0 0 -0.221,0.251 v 0.114 0 0.132 0 V 7 a 0.3,0.3 0 0 0 0.036,0.147 c -0.029,0 -0.059,0 -0.088,0 A 0.3,0.3 0 0 0 12.239,7 v -0.448 0 -0.129 0 -0.115 c 0,0 0,-0.007 0,-0.013 v -0.01 a 0.232,0.232 0 0 1 0.222,-0.253 0.2,0.2 0 0 1 0.16,0.09 0.2,0.2 0 0 0 -0.144,-0.065 z m 0.122,0.251 V 7 c 0,0.1 -0.051,0.166 -0.122,0.166 -0.071,0 -0.128,-0.07 -0.128,-0.166 V 6.308 c 0,-0.09 0.052,-0.158 0.122,-0.158 0.07,0 0.129,0.068 0.129,0.158 z M 12.024,6.057 A 0.231,0.231 0 0 0 11.801,6.308 V 7 a 0.306,0.306 0 0 0 0.037,0.148 c -0.032,0 -0.063,0 -0.094,0.007 A 0.3,0.3 0 0 0 11.786,7 V 6.308 c 0,-0.008 -0.007,-0.013 -0.008,-0.022 v 0 A 0.233,0.233 0 0 1 12,6.032 0.2,0.2 0 0 1 12.16,6.121 0.193,0.193 0 0 0 12.024,6.057 Z m 0.122,0.251 V 7 c 0,0.1 -0.052,0.167 -0.122,0.167 C 11.954,7.167 11.9,7.092 11.9,7 V 6.308 c 0,-0.09 0.052,-0.158 0.122,-0.158 a 0.141,0.141 0 0 1 0.124,0.158 z m -0.7,0.409 V 6.308 c 0,-0.09 0.053,-0.158 0.122,-0.158 a 0.141,0.141 0 0 1 0.13,0.158 V 7 c 0,0.1 -0.052,0.166 -0.123,0.166 -0.071,0 -0.129,-0.07 -0.129,-0.166 z m -2.93,5.316 a 3.565,3.565 0 0 1 0.73,-2.161 l -0.02,0.645 0.2,-0.091 c 0.37,1.173 1.567,4.934 1.594,5.021 A 3.59,3.59 0 0 1 8.511,12.033 Z m 1.084,-1.125 0.286,0.108 0.178,0.543 -0.3,-0.115 z m 0.586,1.847 0.315,0.115 0.178,0.543 -0.324,-0.126 z m 0.748,2.375 -0.174,-0.549 0.347,0.13 0.18,0.551 z M 9.689,10.3 9.924,10.193 9.394,9.681 a 3.568,3.568 0 0 1 5.15,-0.251 8.7,8.7 0 0 0 -1.337,0.6 C 13.228,9.765 13.235,9.415 12.634,9.365 A 5.436,5.436 0 0 0 9.746,10.38 13.074,13.074 0 0 1 11,14.227 4.019,4.019 0 0 1 12.1,13.592 c -0.043,0.415 -0.165,1.4 0.907,1.065 0.793,-0.246 1.544,-0.97 2.394,-1.283 a 3.589,3.589 0 0 1 -3.317,2.239 3.536,3.536 0 0 1 -0.672,-0.065 C 11.268,15.094 10.1,11.534 9.689,10.3 Z m 0.6,0.295 -0.12,-0.032 -0.081,0.1 v -0.12 L 9.979,10.5 l 0.113,-0.035 0.009,-0.122 0.078,0.095 0.112,-0.035 -0.068,0.1 z m 1.525,7.248 h -0.052 a 0.3,0.3 0 0 0 0.018,-0.1 V 17.59 h 0.01 c 0,-0.019 -0.006,-0.039 -0.01,-0.06 v -0.477 a 0.321,0.321 0 0 0 -0.02,-0.11 0.211,0.211 0 0 0 -0.2,-0.15 0.2,0.2 0 0 0 -0.106,0.03 0.2,0.2 0 0 1 0.131,-0.054 0.211,0.211 0 0 1 0.2,0.15 h 0.048 c -0.005,0.01 -0.014,0.015 -0.018,0.025 a 0.327,0.327 0 0 0 -0.017,0.106 v 0.691 a 0.3,0.3 0 0 0 0.02,0.106 z M 11.686,17.05 v 0.691 c 0,0.091 -0.052,0.159 -0.121,0.159 a 0.141,0.141 0 0 1 -0.13,-0.159 V 17.05 c 0,-0.1 0.051,-0.166 0.122,-0.166 0.071,0 0.133,0.073 0.133,0.17 z M 11.561,18 c 0.011,0 0.021,0 0.032,0 a 1.5,1.5 0 0 1 -1.367,0.976 5.521,5.521 0 0 1 -2.873,-1.278 l 1.29,-1.382 0.035,0.036 a 1.116,1.116 0 0 0 0.623,0.4 l 0.156,0.128 a 0.908,0.908 0 0 0 0.618,0.234 l 0.1,0.069 a 1.112,1.112 0 0 0 0.722,0.193 0.277,0.277 0 0 0 0.085,-0.026 l 0.1,0.039 a 2.256,2.256 0 0 0 0.268,0.1 v 0.267 A 0.232,0.232 0 0 0 11.561,18 Z m -0.216,-0.812 v 0.2 C 11.316,17.38 11.287,17.371 11.259,17.361 l -0.075,-0.028 -0.072,-0.029 -0.015,-0.006 a 1.344,1.344 0 0 1 0.248,-0.112 z m -0.874,-0.171 a 0.6,0.6 0 0 1 0.075,0 1.258,1.258 0 0 1 0.48,0.131 c 0.027,0.011 0.053,0.024 0.079,0.036 l -0.057,0.029 a 0.52,0.52 0 0 1 -0.166,0.075 1.025,1.025 0 0 1 -0.665,-0.183 l -0.012,-0.008 a 1.268,1.268 0 0 1 0.266,-0.082 z M 9.707,16.7 a 1.225,1.225 0 0 1 0.608,0.245 l -0.059,0.02 A 0.514,0.514 0 0 1 10.08,17.019 1.024,1.024 0 0 1 9.445,16.749 L 9.436,16.743 C 9.465,16.738 9.495,16.732 9.524,16.725 L 9.65,16.7 Z m -0.7,-0.42 a 1.249,1.249 0 0 1 0.552,0.341 0.442,0.442 0 0 1 -0.24,0.037 0.607,0.607 0 0 1 -0.1,-0.017 0.631,0.631 0 0 1 -0.168,-0.072 C 9.026,16.554 9.002,16.537 8.979,16.52 A 1.635,1.635 0 0 1 8.794,16.344 L 8.739,16.285 v 0 c 0.03,0 0.06,0 0.089,-0.006 h 0.075 a 1.023,1.023 0 0 1 0.107,0 z M 6.529,12.584 H 6.354 c -0.091,0 -0.16,-0.053 -0.16,-0.123 a 0.142,0.142 0 0 1 0.16,-0.13 h 0.691 c 0.1,0 0.166,0.051 0.166,0.122 0,0.071 -0.07,0.131 -0.166,0.131 z m 0.34,0.093 v 0.035 L 6.832,12.677 Z M 6.831,13.362 A 0.884,0.884 0 0 1 6.685,12.825 c 0,-0.047 0,-0.092 0,-0.137 v -0.011 0 l 0.03,0.028 A 1.371,1.371 0 0 1 6.873,12.874 1.232,1.232 0 0 1 7.02,13.499 1.732,1.732 0 0 0 6.849,13.388 0.145,0.145 0 0 1 6.831,13.362 Z m 0.29,0.794 A 0.774,0.774 0 0 1 6.962,13.923 1.24,1.24 0 0 1 6.876,13.597 L 6.864,13.518 v -0.007 l 0.063,0.041 0.118,0.084 H 7.05 l 0.035,0.032 A 0.96,0.96 0 0 1 7.3,14.1 c 0.015,0.056 0.029,0.113 0.041,0.17 L 7.3,14.252 A 1.443,1.443 0 0 0 7.147,14.178 0.2,0.2 0 0 1 7.121,14.156 Z m 0.373,0.739 A 0.759,0.759 0 0 1 7.264,14.609 C 7.251,14.583 7.24,14.557 7.23,14.531 7.209,14.478 7.192,14.425 7.177,14.373 L 7.155,14.3 v -0.012 c 0.025,0.013 0.051,0.024 0.077,0.035 a 1.016,1.016 0 0 1 0.163,0.1 1.228,1.228 0 0 1 0.332,0.563 L 7.687,14.974 7.668,14.968 A 0.513,0.513 0 0 1 7.494,14.9 Z m 0.53,0.73 A 0.825,0.825 0 0 1 7.943,15.569 1,1 0 0 1 7.65,15.148 L 7.619,15.075 v -0.006 -0.007 a 1.213,1.213 0 0 1 0.255,0.1 1.139,1.139 0 0 1 0.38,0.479 l -0.031,0.011 a 0.182,0.182 0 0 1 -0.128,0 z m 0.1,0.125 a 0.687,0.687 0 0 1 0.253,0.016 0.656,0.656 0 0 1 0.2,0.108 l 0.064,0.052 a 2.378,2.378 0 0 1 0.239,0.251 0.4,0.4 0 0 1 -0.244,0 A 0.765,0.765 0 0 1 8.465,16.1 0.855,0.855 0 0 1 8.33,16 1.691,1.691 0 0 1 8.123,15.75 Z m 0.381,0.474 c 0.027,0.012 0.056,0.024 0.086,0.034 v 0 l -1.3,1.391 C 7.273,17.632 7.227,17.593 7.23,17.589 Z m -3.04,3.351 C 5.435,19.606 5.401,19.532 5.431,19.501 L 6.55,18.308 a 0.192,0.192 0 0 0 0.057,0.073 z m 6.545,1.592 C 11.944,20.859 11.491,20.151 11.081,20.115 A 6.725,6.725 0 0 1 7.249,18.462 7.68,7.68 0 0 1 5.385,15.931 C 5.203,15.558 4.961,16.084 4.873,16.312 A 5.416,5.416 0 0 0 5.064,15.441 5.355,5.355 0 0 0 4.771,14.352 c 0.132,0.293 0.475,0.937 0.658,0.965 l 0.775,0.11 C 5.97,15.463 5.378,15.47 5.531,15.815 a 7.2,7.2 0 0 0 1.836,2.529 6.236,6.236 0 0 0 3.733,1.595 c 0.4,0.022 0.8,-0.841 0.907,-1.111 z m 0.136,-3.837 v 0.415 c 0,0.091 -0.053,0.159 -0.121,0.159 a 0.141,0.141 0 0 1 -0.131,-0.159 v -0.691 c 0,-0.1 0.052,-0.166 0.123,-0.166 0.071,0 0.129,0.069 0.129,0.166 z m 0.127,-0.381 a 0.321,0.321 0 0 0 -0.017,0.1 v 0.691 a 0.3,0.3 0 0 0 0.017,0.1 h -0.051 a 0.28,0.28 0 0 0 0.018,-0.1 v -0.154 h 0.006 c 0,-0.013 0,-0.025 -0.006,-0.039 v -0.5 a 0.309,0.309 0 0 0 -0.017,-0.1 0.214,0.214 0 0 0 -0.2,-0.157 0.2,0.2 0 0 0 -0.119,0.04 0.2,0.2 0 0 1 0.142,-0.064 0.214,0.214 0 0 1 0.2,0.156 h 0.046 c -0.006,0.012 -0.015,0.017 -0.019,0.027 z m 0.076,0.8 v -0.691 c 0,-0.1 0.052,-0.166 0.122,-0.166 0.07,0 0.131,0.069 0.131,0.166 v 0.691 c 0,0.091 -0.053,0.159 -0.123,0.159 a 0.141,0.141 0 0 1 -0.13,-0.163 z m 0.122,0.253 a 0.233,0.233 0 0 0 0.224,-0.253 v -0.154 0 -0.018 -0.127 0 h 0.058 a 1.225,1.225 0 0 0 0.634,-0.1 0.863,0.863 0 0 0 0.1,-0.058 h 0.006 L 13.575,17.28 A 1.6,1.6 0 0 0 14,17.168 0.851,0.851 0 0 0 14.259,16.992 c 0,0 0.018,0.008 0.124,-0.011 a 1.31,1.31 0 0 0 0.343,-0.125 0.941,0.941 0 0 0 0.307,-0.247 0.268,0.268 0 0 0 0.034,-0.06 l 0.081,-0.034 c 0.049,-0.02 0.1,-0.042 0.153,-0.067 l 0.02,-0.01 0.059,-0.03 0.039,-0.023 1.216,1.3 a 5.559,5.559 0 0 1 -2.888,1.286 1.494,1.494 0 0 1 -1.358,-0.99 0.185,0.185 0 0 0 0.082,0.019 z m 6.016,1.4 c 0.03,0.031 0,0.1 -0.033,0.074 l -1.066,-1.111 a 0.166,0.166 0 0 0 0.056,-0.074 z m 0.466,-3.963 a 5.55,5.55 0 0 0 0.191,0.871 c -0.087,-0.227 -0.33,-0.754 -0.512,-0.381 a 7.051,7.051 0 0 1 -6.112,4.2 c -0.008,-0.11 0.015,-0.058 0.007,-0.161 a 6.714,6.714 0 0 0 5.96,-4.162 c 0.16,-0.356 -0.44,-0.348 -0.674,-0.386 l 0.775,-0.11 c 0.183,-0.028 0.528,-0.672 0.658,-0.964 a 5.386,5.386 0 0 0 -0.293,1.087 z"], + "ikea-felsisk":[0,0,24,24,"m 15.126,11.912 0.37,0.015 V 11.879 L 15.411,11.815 V 11.799 L 15.352,6.503 h -0.145 l 0.033,5.306 -0.114,0.067 z m -6.591,-0.443 0.37,0.015 V 11.435 L 8.82,11.37 V 11.354 L 8.761,6.004 H 8.616 l 0.034,5.36 -0.115,0.067 z M 8.551,6.19 8.549,5.937 H 8.827 L 8.83,6.21 15.141,6.676 15.14,6.436 h 0.278 v 0.033 l 0.003,0.228 0.275,0.02 L 16.383,6.042 8.246,5.499 7.563,6.117 Z M 16.527,5.907 V 5.425 l -8.16,-0.53 v 0.467 l 1.858,0.125 z M 8.2,5.384 V 4.941 L 7.516,5.586 V 6.003 L 7.773,5.77 Z m 11.241,10.087 a 1.274,1.206 0 0 1 -1.274,1.206 1.274,1.206 0 0 1 -1.274,-1.206 1.274,1.206 0 0 1 1.274,-1.206 1.274,1.206 0 0 1 1.274,1.206 z m -5.405,0.906 a 1.208,1.208 0 1 0 -1.274,-1.207 1.244,1.244 0 0 0 1.274,1.207 z M 9.94,16.155 A 1.208,1.208 0 1 0 8.666,14.949 1.243,1.243 0 0 0 9.94,16.155 Z M 4.488,14.7 a 1.243,1.243 0 0 0 1.274,1.2 1.208,1.208 0 1 0 0,-2.413 1.244,1.244 0 0 0 -1.274,1.213 z m 13.612,-1.666 -0.007,0.143 -0.376,0.027 -0.107,1.044 a 1.4,1.4 0 0 1 1.114,0.016 v -1.036 l -0.444,-0.047 0.008,-0.139 z m -4.11,-0.288 -0.007,0.143 -0.375,0.027 -0.108,1.055 a 1.386,1.386 0 0 1 1.116,0.019 v -1.049 l -0.445,-0.048 0.008,-0.138 z M 9.875,12.472 9.868,12.614 9.493,12.642 9.381,13.728 A 1.392,1.392 0 0 1 10.5,13.743 V 12.666 L 10.055,12.619 10.064,12.48 Z M 5.7,12.179 5.693,12.322 5.318,12.349 5.2,13.478 a 1.391,1.391 0 0 1 1.123,0.013 V 12.373 L 5.878,12.326 5.887,12.187 Z M 3.391,16.249 22,17.467 21.965,17.08 3.442,15.837 Z m 17.08,-3.255 1.094,3.992 0.386,0.026 -1.147,-4.222 h -0.192 z m 0.907,4.5 -0.97,0.921 0.006,0.416 0.196,-0.005 1.295,-1.288 -0.334,-0.032 z M 3.316,16.311 3.317,16.304 H 3.314 L 3.347,16.009 2.042,17.193 2,17.535 2.19,17.57 3.619,16.331 Z M 2.283,17.578 20.33,18.824 V 18.428 L 2.623,17.283 Z M 20.725,12.367 15.107,11.978 15.059,11.976 V 11.975 L 8.972,11.553 v 10e-4 L 8.468,11.533 v -0.015 l -4.337,-0.3 -0.012,0.338 16.656,1.105 z M 3.521,12.47 H 3.229 l -1.175,4.622 0.383,-0.347 z m 0.461,-0.499 0.069,-0.387 0.012,-0.317 -0.827,0.84 v 0.242 H 3.552 Z M 3.73,15.79 4.363,11.639 4.114,11.623 C 4.085,11.969 3.75,13.997 3.451,15.771 Z m 16.726,1.643 -0.324,-0.021 0.116,0.944 0.103,0.006 0.209,-0.208 z m -0.81,-3.999 0.422,3.451 0.312,0.021 -0.494,-3.425 z m 0.898,-0.662 -0.254,-0.039 -0.64,0.629 0.001,10e-4 0.255,0.053 0.504,-0.45 z m -16.181,-0.725 1.276,0.089 0.006,-0.122 0.32,0.014 -0.008,0.13 3.858,0.268 0.006,-0.119 0.319,0.013 -0.007,0.128 3.796,0.264 0.007,-0.131 0.319,0.014 -0.008,0.139 3.792,0.263 0.006,-0.128 0.32,0.014 -0.008,0.136 1.362,0.095 0.231,-0.228 -15.553,-1.064 z m 15.207,1.312 -0.005,-0.007 0.013,-0.014 -0.79,-0.055 0.001,0.149 0.796,0.056 z m -15.913,-1.003 0.284,0.02 0.02,-0.13 -0.141,-0.01 z m 0.657,0.046 0.923,0.066 0.014,-0.132 -0.917,-0.064 z m 5.113,0.226 -3.039,-0.212 v 0.134 l 3.025,0.215 z m 4.113,0.288 -2.976,-0.208 v 0.139 l 2.962,0.21 z m 4.11,0.287 -2.971,-0.207 v 0.144 l 2.956,0.21 z m 3.058,-0.438 -0.06,-0.004 0.023,0.003 v 0.001 z M 3.991,12.052 3.855,12.171 3.972,12.18 Z"], + "mediaset-infinity":[0,0,24,24,"m 10.966,6.143 a 0.648,0.648 0 0 0 -0.655,-0.72 h -0.2 L 9.936,6.939 h 0.385 c 0.457,0 0.645,-0.401 0.645,-0.796 z m 2.338,-0.654 h -0.007 l -0.338,1.01 h 0.447 z M 19.3,2.054 H 4.7 A 2.657,2.657 0 0 0 2.054,4.7 V 19.3 A 2.657,2.657 0 0 0 4.7,21.946 H 19.3 A 2.657,2.657 0 0 0 21.946,19.3 V 4.7 A 2.657,2.657 0 0 0 19.3,2.054 Z m -3.395,2.988 h 1.211 L 17.07,5.423 h -0.8 l -0.065,0.536 h 0.7 l -0.046,0.382 h -0.7 l -0.073,0.6 h 1.007 l -0.046,0.382 h -1.418 z m -1.759,1.69 a 0.948,0.948 0 0 0 0.549,0.234 0.251,0.251 0 0 0 0.28,-0.25 c 0,-0.378 -0.714,-0.421 -0.714,-1.02 a 0.665,0.665 0 0 1 0.681,-0.687 0.965,0.965 0 0 1 0.552,0.181 l -0.059,0.4 a 0.873,0.873 0 0 0 -0.48,-0.2 0.254,0.254 0 0 0 -0.273,0.25 c 0,0.329 0.714,0.372 0.714,1.01 A 0.643,0.643 0 0 1 14.741,7.35 1.014,1.014 0 0 1 14.083,7.133 Z M 13.583,5.009 13.926,7.318 H 13.5 l -0.059,-0.5 h -0.6 l -0.187,0.5 H 12.2 l 0.947,-2.309 z m -1.729,0.033 h 0.411 l -0.273,2.276 h -0.411 z m -2.1,0 h 0.644 a 0.988,0.988 0 0 1 1,1.108 c 0,0.678 -0.4,1.168 -0.914,1.168 h -1 z m -1.631,0 h 1.21 L 9.287,5.423 h -0.8 L 8.421,5.959 h 0.7 L 9.075,6.341 h -0.7 l -0.072,0.6 H 9.308 L 9.262,7.323 H 7.845 Z M 5,7.318 5.631,5.042 H 6.082 L 6.394,6.476 7.046,5.042 h 0.437 l 0.092,2.276 h -0.4 L 7.116,5.778 H 7.111 L 6.394,7.318 H 6.2 L 5.858,5.736 H 5.852 L 5.414,7.318 Z m 2.247,1.566 v 1.825 H 5.423 V 8.884 Z M 18.423,19.841 H 16.6 v -3.879 a 1.825,1.825 0 0 0 -1.824,-1.824 c -0.4,0 -1.725,0.16 -1.944,2.153 a 4.154,4.154 0 0 1 -1.615,3.081 3.748,3.748 0 0 1 -2.144,0.7 3.65,3.65 0 0 1 -3.648,-3.649 v -3.88 h 1.822 v 3.878 a 1.825,1.825 0 0 0 1.824,1.824 c 0.4,0 1.725,-0.159 1.945,-2.153 a 4.146,4.146 0 0 1 1.615,-3.08 3.777,3.777 0 0 1 2.143,-0.7 3.65,3.65 0 0 1 3.649,3.648 z M 18.957,5.423 h -0.631 l -0.227,1.9 h -0.411 l 0.227,-1.9 H 17.3 L 17.346,5.042 H 19 Z"], + "pathe":[0,0,24,24,"m 8.691,8.915 c -0.136,0.664 0.678,0.3 0.721,0.183 A 1.291,1.291 0 0 0 9.1,8.262 C 8.836,7.938 8.735,8.712 8.691,8.915 Z M 5.974,7.96 C 5.874,8.138 5.741,8.333 6.118,8.916 6.208,9.053 6.706,8.78 6.718,8.528 A 0.761,0.761 0 0 0 6.496,7.944 C 6.317,7.8 6.073,7.779 5.974,7.96 Z M 21.832,7.716 a 1.686,1.686 0 0 0 -0.786,-0.929 1.709,1.709 0 0 0 -1.9,0.334 13.19,13.19 0 0 0 -1.32,1.957 2.3,2.3 0 0 1 -0.265,0.389 l -1.073,0.006 c 0,0 -0.111,-0.651 -0.294,-1.365 A 1.078,1.078 0 0 0 15.842,8.044 0.384,0.384 0 0 0 15.427,8.422 c -0.064,0.569 -0.163,0.687 0.214,0.834 0.324,0.126 0.637,0.314 0.549,0.534 a 0.322,0.322 0 0 1 -0.078,0.112 1.339,1.339 0 0 1 -0.705,0.312 c -0.133,0.048 -0.328,0.181 -0.291,0.787 a 2.805,2.805 0 0 0 0.033,0.317 0.484,0.484 0 0 0 0.294,0.415 c 0.134,0.09 0.361,0.154 0.346,0.369 a 0.432,0.432 0 0 1 -0.006,0.047 8.611,8.611 0 0 0 0.721,-2.6 9.67,9.67 0 0 1 1.078,0.518 c 0.185,0.14 0.382,-0.009 0.441,0.989 0.059,0.998 0.063,1.964 0.415,2.229 a 1.223,1.223 0 0 0 1.775,-0.33 7.443,7.443 0 0 0 1.053,-1.625 12.239,12.239 0 0 0 0.569,-1.376 3.845,3.845 0 0 0 -0.003,-2.238 z m -2.251,5.306 a 0.377,0.377 0 0 1 -0.524,0.173 c -0.278,-0.133 -0.482,-0.309 -0.251,-0.716 a 0.5,0.5 0 0 1 0.9,0.075 0.6,0.6 0 0 1 -0.125,0.468 z m 1.573,-4.585 a 10.383,10.383 0 0 1 -0.7,1.769 11.5,11.5 0 0 1 -0.816,1.575 c -0.412,0.558 -0.4,-0.54 -0.4,-0.54 0,0 0.041,-1.74 0.086,-2.063 A 5.6,5.6 0 0 1 19.85,7.451 c 0.235,-0.257 0.472,-0.318 0.988,-0.12 0.516,0.198 0.339,0.753 0.316,1.106 z M 15.429,6.329 v 0 c 0.011,0.011 0.025,0.02 0.035,0.031 z M 15.1,13.145 c -0.122,0.011 -0.457,-0.335 -0.508,-0.814 -0.034,-0.325 0.124,-3.819 0.1,-4.038 A 1.145,1.145 0 0 1 14.84,7.778 0.989,0.989 0 0 1 15.208,7.332 1.392,1.392 0 0 1 15.896,7.145 3.755,3.755 0 0 0 15.716,6.732 l -0.005,-0.008 0.006,0.011 v 0 A 3.429,3.429 0 0 1 15.144,6.72 v 0 L 15.087,6.712 H 15.08 L 15.016,6.7 H 14.993 L 14.964,6.694 A 0.817,0.817 0 0 1 14.745,6.615 C 14.62,6.545 14.57,6.491 14.562,6.446 14.546,6.38 14.624,6.333 14.697,6.282 14.819,6.198 15.07,6.257 15.428,6.332 a 7.845,7.845 0 0 0 -5.055,-1.808 9.922,9.922 0 0 0 -2.631,0.315 4.459,4.459 0 0 0 -2.583,1.6 3.834,3.834 0 0 0 -0.524,3.34 9.151,9.151 0 0 0 1.614,2.947 c 0.452,0.626 1.136,1.139 0.657,1.7 C 6.427,14.987 6,15.389 6,15.389 l 1.656,-0.71 a 9.13,9.13 0 0 0 1.28,1.008 3.953,3.953 0 0 0 1.774,0.488 5.824,5.824 0 0 0 3.648,-1.993 11.051,11.051 0 0 0 0.881,-1.107 c -0.061,0.086 -0.057,0.063 -0.139,0.07 z M 6.5,9.763 c 0,0 0.106,0.732 0.231,1.381 0.19,0.985 0.393,2.58 -0.267,1.424 a 22.381,22.381 0 0 1 -1.65,-4.077 0.943,0.943 0 0 1 0,-0.615 C 4.848,7.8 5.761,6.5 6.977,7 A 1.693,1.693 0 0 1 7.723,7.979 1.157,1.157 0 0 1 7.341,9.229 7.657,7.657 0 0 1 6.5,9.763 Z m 3.364,3.068 A 12.8,12.8 0 0 1 9.5,11.2 C 9.428,10.825 9.474,9.962 8.99,10.057 8.741,10.106 8.606,10.631 8.441,11.457 8.276,12.283 8.222,12.463 8.195,12.777 8.168,13.091 8.126,13.446 7.88,13.369 7.634,13.292 7.627,12.422 7.668,11.469 7.706,10.54 7.752,10.486 7.925,9.022 8.098,7.558 8.465,7.341 8.565,7.216 9.032,6.644 9.807,7.159 10.054,8.657 a 33.279,33.279 0 0 1 0.438,3.849 c -0.02,0.431 -0.165,1.423 -0.628,0.325 z m 1.722,-5.045 c 0.02,0.738 -0.018,2.235 0.009,3.146 a 17.755,17.755 0 0 1 -0.067,2.977 c -0.124,0.354 -0.346,0.32 -0.472,-0.254 A 10.694,10.694 0 0 1 10.933,12.406 C 10.904,11.73 10.782,8.763 10.633,7.864 10.511,7.111 10.321,6.792 9.903,6.677 A 3.77,3.77 0 0 0 9.155,6.552 0.352,0.352 0 0 1 8.819,6.046 C 8.889,5.872 9.242,5.73 9.635,5.677 a 9.845,9.845 0 0 1 2.969,0.084 c 0.615,0.117 0.6,0.351 0.454,0.5 -0.2,0.2 -0.654,0.077 -0.992,0.285 -0.338,0.208 -0.496,0.61 -0.48,1.24 z m 2.852,-0.192 c -0.025,0.456 -0.265,4.338 -0.278,4.7 -0.013,0.362 -0.088,1.514 -0.138,1.744 -0.05,0.23 -0.16,0.737 -0.5,0.346 a 4.158,4.158 0 0 1 -0.173,-1.451 c -0.008,-0.337 0.173,-1.455 0.126,-1.747 -0.084,-0.518 -0.351,-0.172 -0.448,0.156 a 8.524,8.524 0 0 0 -0.161,1.186 6.351,6.351 0 0 1 -0.257,1.539 c -0.387,0.81 -0.473,-0.06 -0.459,-0.472 0.014,-0.412 0.077,-1.842 0.077,-2.327 0,-0.485 0.065,-1.792 0.006,-2.776 a 3.605,3.605 0 0 1 0.136,-1.523 0.468,0.468 0 0 1 0.377,-0.318 c 0.5,-0.016 0.179,1.668 0.165,2.488 -0.013,0.847 -0.063,1.039 0.287,1.064 0.35,0.025 0.355,-0.459 0.319,-0.944 a 9.79,9.79 0 0 1 0.137,-1.89 c 0.075,-0.338 0.2,-0.619 0.547,-0.508 0.347,0.111 0.249,0.5 0.237,0.733 z M 5.6,15.4 v -0.009 c 0.009,-0.011 0,-0.013 0,-0.031 0,-0.018 0,-0.023 0,-0.023 A 0.016,0.016 0 0 1 5.584,15.32 c 0,-0.018 0.011,-0.025 0.007,-0.037 -0.004,-0.012 -0.016,0 -0.02,-0.016 -0.004,-0.016 -0.017,-0.02 -0.017,-0.02 H 5.541 A 0.055,0.055 0 0 0 5.502,15.231 L 5.48,15.215 c -0.016,-0.042 -0.018,-0.092 -0.028,-0.09 -0.01,0.002 0,0.02 -0.008,0.039 C 5.436,15.183 5.43,15.173 5.43,15.173 5.399,15.098 5.371,15.107 5.362,15.094 5.353,15.081 5.349,15.089 5.331,15.074 c -0.018,-0.015 -0.03,0 -0.006,0.016 0.024,0.016 0.024,0.045 0.031,0.056 0.007,0.011 0,0.018 -0.016,0.011 -0.016,-0.007 0,-0.025 -0.02,-0.049 -0.02,-0.024 -0.073,-0.082 -0.077,-0.064 -0.004,0.018 0.016,0.025 0.033,0.072 0.017,0.047 0,0.045 0,0.048 0,0.003 -0.013,-0.005 -0.036,-0.036 C 5.217,15.097 5.204,15.094 5.204,15.094 5.195,15.076 5.179,15.069 5.162,15.055 5.145,15.041 5.139,15.026 5.13,15.035 c -0.009,0.009 0,0.027 0.025,0.052 a 0.1,0.1 0 0 1 0.031,0.05 c 0.012,0.025 0.007,0.03 -0.008,0.032 -0.015,0.002 -0.05,-0.041 -0.066,-0.059 -0.016,-0.018 -0.034,-0.03 -0.05,-0.045 -0.016,-0.015 -0.02,0 -0.011,0.02 a 0.549,0.549 0 0 0 0.052,0.077 c 0.018,0.023 0,0.032 -0.016,0.03 A 0.058,0.058 0 0 1 5.057,15.178 C 5.021,15.158 5.016,15.158 5.001,15.148 4.986,15.138 4.965,15.117 4.96,15.121 c -0.005,0.004 -0.014,0.011 0.006,0.043 0.02,0.032 0,0.031 0,0.031 C 4.934,15.184 4.902,15.2 4.909,15.226 a 0.139,0.139 0 0 0 0.025,0.046 c 0,0 0,0 0,0.016 0,0.016 0.013,0.025 0.013,0.025 0,0 0.009,0.041 0.034,0.042 0.043,0 0.006,0.009 0.041,0.018 a 0.358,0.358 0 0 0 0.088,0.011 c 0,0.009 -0.006,0.016 -0.006,0.016 a 0.837,0.837 0 0 0 -0.287,0.237 c -0.006,0.007 -0.016,0.034 -0.023,0.043 -0.024,0.031 -0.047,0.061 -0.072,0.1 -0.011,0.016 -0.03,0.039 -0.039,0.054 a 1.56,1.56 0 0 0 -0.085,0.145 c -0.007,0.013 -0.017,0.042 -0.025,0.054 a 1.431,1.431 0 0 1 -0.1,0.136 0.556,0.556 0 0 1 -0.223,0.135 0.777,0.777 0 0 1 -0.115,0.037 C 4.071,16.354 4.017,16.37 3.961,16.386 a 1.783,1.783 0 0 0 -0.2,0.07 C 3.702,16.48 3.616,16.533 3.535,16.569 A 0.17,0.17 0 0 0 3.521,16.533 L 3.512,16.513 3.501,16.499 c 0,0 0,-0.011 -0.009,-0.018 C 3.483,16.474 3.479,16.468 3.472,16.459 A 0.136,0.136 0 0 0 3.388,16.403 l -0.02,-0.007 c 0,0 -0.011,-0.005 -0.013,-0.005 A 0.335,0.335 0 0 1 3.321,16.369 0.316,0.316 0 0 1 3.23,16.3 0.6,0.6 0 0 0 3.042,16 C 3.036,16 3.02,16 3.013,15.991 3.006,15.982 2.993,15.961 2.983,15.957 H 2.963 V 15.951 L 2.943,15.924 2.932,15.935 A 0.5,0.5 0 0 0 2.785,15.883 l -0.077,0.006 c -0.03,0 -0.059,0.005 -0.086,0.009 -0.027,0.004 -0.041,0.011 -0.061,0.018 A 0.561,0.561 0 0 0 2.391,15.999 0.656,0.656 0 0 0 2.255,16.139 0.9,0.9 0 0 0 2.088,16.494 0.356,0.356 0 0 0 2.052,16.609 0.652,0.652 0 0 0 2.017,17 0.334,0.334 0 0 0 2.135,17.181 V 17.167 L 2.085,17.058 A 0.707,0.707 0 0 1 2.069,16.914 0.529,0.529 0 0 1 2.091,16.746 0.072,0.072 0 0 1 2.107,16.713 c 0.012,0.022 0.039,0.063 0.039,0.063 -0.006,-0.031 -0.025,-0.1 -0.025,-0.1 a 0.483,0.483 0 0 1 0.1,-0.154 v 0 L 2.21,16.513 a 0.038,0.038 0 0 0 0.02,0 c 0.025,-0.03 0.045,-0.05 0.045,-0.05 a 0.038,0.038 0 0 0 0.016,0.02 L 2.296,16.47 h 0.007 l 0.011,-0.014 a 0.017,0.017 0 0 1 0.013,0 h 0.012 a 0.059,0.059 0 0 0 -0.032,0.031 l 0.007,0.016 0.027,0.023 v 0 a 0.328,0.328 0 0 0 -0.047,0.095 0.169,0.169 0 0 1 -0.007,0.036 0.191,0.191 0 0 0 -0.011,0.1 0.091,0.091 0 0 0 0.02,0.041 c 0,0 0.011,-0.045 0.018,-0.067 a 0.547,0.547 0 0 1 0.022,-0.053 0.084,0.084 0 0 1 0.023,-0.036 v -0.005 a 0.216,0.216 0 0 0 0,0.089 c 0.016,0.027 0.02,0.045 0.025,0.045 A 0.112,0.112 0 0 0 2.4,16.746 0.039,0.039 0 0 1 2.407,16.76 c 0,0.006 0,0.016 0,0.016 -0.036,0.02 -0.036,0.027 -0.036,0.027 h 0.011 c 0.031,0 0,0.009 0,0.009 -0.02,0.006 -0.017,0.013 -0.017,0.013 h 0.013 v 0.007 h 0.011 v 0 l -0.02,0.014 c 0,0.042 0.028,0.041 0.066,0.03 0.038,-0.011 0.07,-0.021 0.07,-0.021 v 0.007 l 0.108,-0.025 a 0.047,0.047 0 0 1 0.043,0.014 c -0.009,0.006 -0.006,0.02 -0.006,0.02 a 0.028,0.028 0 0 0 -0.018,0.025 c 0,0 -0.009,0 0,0.027 a 0.2,0.2 0 0 0 0.032,0.056 c 0.022,0 0.03,0.016 0.022,0.039 -0.008,0.023 0.007,0.045 0.045,0.052 0.038,0.007 0.041,0.023 0.041,0.023 a 0.045,0.045 0 0 1 0.005,0.045 c -0.022,0.027 0.025,0.052 0.025,0.052 a 0.041,0.041 0 0 1 0.007,0.05 L 2.802,17.231 v 0.011 L 2.8,17.24 v 0.013 L 2.784,17.247 a 0.114,0.114 0 0 0 0.027,0.031 v 0.011 h 0.005 v 0.009 a 0.012,0.012 0 0 1 0,0.016 0.023,0.023 0 0 1 0.005,0.034 0.168,0.168 0 0 1 0.045,0.038 v 0.012 H 2.89 l 0.018,0.014 0.014,-0.009 0.009,0.011 v 0.011 0.005 0.012 a 0.015,0.015 0 0 1 0,0.016 c 0.022,0.006 0.011,0.031 0.011,0.031 a 0.205,0.205 0 0 1 0.011,0.034 l 0.03,0.017 0.02,0.009 h 0.009 l -0.007,0.029 0.012,-0.011 0.022,0.027 a 0.277,0.277 0 0 0 0.079,0.1 c 0.02,0.014 0.006,0.025 0.006,0.025 a 0.16,0.16 0 0 1 0.045,0.039 v 0.011 h 0.025 l 0.017,0.013 0.014,-0.009 0.014,0.016 H 3.252 V 17.8 L 3.28,17.83 H 3.296 L 3.289,17.844 H 3.31 v 0.014 l 0.025,-0.007 0.009,0.014 0.022,0.016 0.02,0.009 h 0.009 l 0.018,0.023 0.011,-0.012 0.023,0.028 0.013,0.011 -0.013,0.009 c 0.006,0.005 0.052,0.03 0.052,0.03 v 0.017 l 0.011,0.009 v 0.025 l 0.027,-0.005 a 0.051,0.051 0 0 1 0.042,0.014 c -0.012,0.081 0.008,0.072 0.008,0.072 l 0.02,-0.009 c 0.03,0 0.037,-0.017 0.037,-0.017 0,0.016 0.031,0.022 0.033,0.034 0.002,0.012 -0.017,0.022 -0.017,0.022 l 0.017,0.006 h 0.009 v 0.011 l 0.018,-0.007 c 0.009,0.048 0.022,0.037 0.022,0.037 0,0 0.023,-0.009 0.028,-0.018 0.005,-0.009 0.025,0.02 0.025,0.02 l 0.005,0.02 a 0.3,0.3 0 0 0 -0.012,0.109 0.271,0.271 0 0 0 0.054,0.1 0.492,0.492 0 0 0 0.031,0.133 2.456,2.456 0 0 1 0.1,0.285 c 0.011,0.036 0.027,0.083 0.027,0.083 0,0 -0.006,0.014 0,0.016 0.006,0.002 0.005,0.009 0.005,0.009 0,0 0,0.011 0,0.018 0,0.007 0,0.047 -0.014,0.047 a 0.02,0.02 0 0 0 -0.016,0.02 c -0.023,0.012 -0.018,0.016 -0.018,0.02 0,0.004 -0.016,0.014 -0.016,0.014 v 0.007 L 3.909,19.087 C 3.904,19.093 3.882,19.112 3.882,19.112 L 3.87,19.118 3.859,19.127 3.85,19.132 H 3.841 3.833 3.826 v 0 a 0.079,0.079 0 0 0 -0.061,0.05 c -0.011,0.025 0,0.052 0.014,0.027 a 0.042,0.042 0 0 1 0.034,-0.022 c 0,0 0,0.022 0.031,0.025 A 0.064,0.064 0 0 0 3.898,19.196 0.084,0.084 0 0 0 3.9,19.2 c 0,0 0.016,-0.006 0.016,-0.006 A 0.333,0.333 0 0 1 3.95,19.162 c 0.014,-0.009 0.016,-0.006 0.016,-0.006 a 0.083,0.083 0 0 1 0,0.036 0.157,0.157 0 0 1 -0.036,0.041 0.221,0.221 0 0 0 -0.056,0.025 0.166,0.166 0 0 0 -0.023,0.022 v 0.005 A 0.161,0.161 0 0 0 3.79,19.36 c 0,0.027 0.018,0.009 0.03,0 l 0.022,-0.022 h 0.007 c 0.006,0.013 0.047,0.017 0.066,0 A 0.052,0.052 0 0 1 3.96,19.318 0.055,0.055 0 0 0 4,19.277 0.084,0.084 0 0 1 4.066,19.236 0.063,0.063 0 0 1 4.105,19.247 v 0 a 0.086,0.086 0 0 0 -0.064,0.066 c 0,0.022 0.007,0.031 0.014,0.016 a 0.06,0.06 0 0 1 0.031,-0.027 c 0.005,0 0.005,0 0.005,0 0,0.02 0.034,0.028 0.057,0.02 A 0.055,0.055 0 0 0 4.184,19.295 L 4.19,19.3 a 0.19,0.19 0 0 1 0,0.028 0.113,0.113 0 0 1 -0.022,0.027 c -0.02,0.009 -0.02,0.016 -0.02,0.016 -0.039,0 -0.042,0.011 -0.046,0.016 L 4.094,19.394 A 0.135,0.135 0 0 0 4.03,19.443 c -0.011,0.014 -0.025,0.05 -0.011,0.041 l 0.047,-0.033 c 0.012,-0.009 0.007,0.006 0.02,0.013 a 0.119,0.119 0 0 0 0.057,0 0.026,0.026 0 0 1 0.016,-0.013 0.069,0.069 0 0 0 0.056,-0.02 H 4.24 l 0.02,-0.014 c 0.041,-0.011 0.03,-0.025 0.03,-0.025 0,0 0.117,0 0.133,0 l 0.057,0.014 h 0.065 a 0.262,0.262 0 0 0 0.075,0 0.072,0.072 0 0 1 0.068,0 c 0.017,0.009 0.07,0.009 0.075,0 a 0.041,0.041 0 0 1 0.016,-0.018 c 0.027,0 0.042,0.032 0.067,0.03 0.025,-0.002 0,-0.03 -0.034,-0.056 a 0.164,0.164 0 0 0 -0.074,-0.03 v 0 c 0.014,-0.005 0.005,0 0.045,0 0.04,0 0.034,-0.023 0.034,-0.023 0.016,-0.014 0.041,-0.011 0.07,0 0.029,0.011 0.027,0 -0.007,-0.034 A 0.1,0.1 0 0 0 4.792,19.261 L 4.783,19.255 H 4.753 L 4.74,19.25 A 0.32,0.32 0 0 1 4.604,19.261 0.088,0.088 0 0 0 4.547,19.256 L 4.52,19.24 a 0.022,0.022 0 0 0 0.023,-0.013 0.049,0.049 0 0 0 0.052,0 c 0,0 0,0.007 0.036,0.007 a 0.043,0.043 0 0 0 0.041,-0.034 0.077,0.077 0 0 1 0.036,0 c 0.05,0.024 0.032,0 0.032,0 A 0.084,0.084 0 0 0 4.64,19.166 C 4.612,19.15 4.61,19.161 4.61,19.161 a 0.138,0.138 0 0 0 -0.07,0.007 0.544,0.544 0 0 0 -0.09,0 A 0.31,0.31 0 0 1 4.366,19.162 1.883,1.883 0 0 1 4.303,18.936 C 4.292,18.906 4.253,18.719 4.253,18.719 L 4.235,18.601 c 0.014,-0.013 0.014,-0.022 0.016,-0.067 0.002,-0.045 0.028,-0.05 0.039,-0.111 0.011,-0.061 0.095,-0.14 0.117,-0.17 a 0.994,0.994 0 0 0 0.059,-0.1 c 0.014,0.02 0.023,0.011 0.036,0 0.013,-0.011 0.009,-0.041 0.014,-0.049 a 0.086,0.086 0 0 0 0.006,-0.028 v -0.034 a 0.341,0.341 0 0 1 0.023,-0.061 l 0.006,-0.017 v -0.012 c 0,0 0,0 0.022,-0.042 A 0.522,0.522 0 0 1 4.668,17.821 L 4.646,17.849 A 0.424,0.424 0 0 1 4.699,17.824 L 4.713,17.812 4.707,17.83 c 0.054,-0.061 0.066,-0.041 0.066,-0.041 v -0.022 c 0,-0.012 0.014,0.008 0.014,0.008 a 0.346,0.346 0 0 0 0.038,-0.041 v 0.023 h 0.009 a 0.042,0.042 0 0 1 0.016,-0.027 0.069,0.069 0 0 1 0,0.034 l 0.009,-0.016 v 0 a 0.109,0.109 0 0 0 0.017,-0.03 H 4.9 c 0,0 0.022,-0.03 0.018,-0.05 a 0.077,0.077 0 0 1 0.011,-0.043 0.033,0.033 0 0 0 0.016,0.025 v -0.036 h 0.009 a 0.306,0.306 0 0 1 0,-0.075 c 0.047,-0.045 0.178,-0.151 0.178,-0.151 0.036,-0.027 0.064,-0.067 0.113,-0.111 0.049,-0.044 0.089,-0.07 0.089,-0.07 v -0.011 l 0.012,-0.005 a 0.806,0.806 0 0 0 0.1,-0.185 C 5.464,16.95 5.493,16.85 5.493,16.85 v -0.011 c 0.022,0 0,-0.031 0.016,-0.041 0.016,-0.01 0.011,-0.045 0.011,-0.045 A 0.123,0.123 0 0 0 5.536,16.692 0.172,0.172 0 0 0 5.547,16.633 1.318,1.318 0 0 1 5.572,16.491 0.869,0.869 0 0 0 5.52,16.176 1.355,1.355 0 0 0 5.414,15.976 c -0.016,-0.027 0,-0.034 0,-0.034 l 0.058,-0.014 0.093,-0.029 a 0.151,0.151 0 0 0 0.031,-0.03 c 0.009,-0.014 0.016,-0.016 0.016,-0.016 a 0.029,0.029 0 0 0 0.028,-0.032 0.131,0.131 0 0 0 0.022,-0.1 c 0,0 0.014,-0.023 -0.006,-0.093 -0.02,-0.07 -0.05,-0.074 -0.05,-0.074 0,0 0,0 -0.007,-0.017 a 0.02,0.02 0 0 0 -0.017,-0.013 0.043,0.043 0 0 1 0.02,-0.02 0.013,0.013 0 0 1 0.016,0 0.262,0.262 0 0 0 0.041,0 0.081,0.081 0 0 0 0.036,-0.006 c 0,0 0.017,0.018 0.007,-0.011 A 0.117,0.117 0 0 0 5.653,15.421 0.087,0.087 0 0 0 5.6,15.4 Z M 4.146,18.973 C 4.135,18.934 4.124,18.925 4.105,18.862 4.086,18.799 4.022,18.536 4.022,18.536 l 0.011,-0.009 a 0.448,0.448 0 0 0 0.047,0.086 2.2,2.2 0 0 1 0.073,0.271 L 4.18,19.009 A 0.091,0.091 0 0 0 4.146,18.973 Z"], + "rai-play":[0,0,24,24,"m 18.021048,11.805233 a 0.926,0.926 0 0 0 -0.8,-0.364 1.272,1.272 0 0 0 -1.28,1.346 1.272,1.272 0 0 0 1.28,1.347 0.907,0.907 0 0 0 0.764,-0.325 v 0.289 h 1.035 v -0.689 h -0.284 v -1.244 h 0.284 v -0.682 h -1 z m -0.662,1.636 a 0.654,0.654 0 1 1 0.627,-0.654 0.619,0.619 0 0 1 -0.627,0.654 z m -2.946,-2.039999 h 0.316 v 2.008 h -0.325 v 0.689 h 1.391 v -0.689 h -0.329 v -2.692 h -1.053 z m -0.657,-0.498001 a 1.405,1.405 0 0 0 -0.858,-0.186 h -1.453 v 0.693 h 0.331 v 1.986 h -0.329 v 0.7 h 1.469 v -0.693 h -0.311 v -0.391 h 0.235 a 1.366,1.366 0 0 0 1,-0.272 1.145,1.145 0 0 0 0.377,-0.884 1.1,1.1 0 0 0 -0.461,-0.953 z m -0.991,1.373 h -0.151 v -0.8 h 0.217 c 0.365,0 0.542,0.106 0.542,0.391 0.003,0.303 -0.197,0.409 -0.608,0.409 z m -5.8259999,1.16 a 0.487,0.487 0 0 0 0.52,-0.511 0.52,0.52 0 0 0 -1.04,0 0.488,0.488 0 0 0 0.52,0.511 z m -2.43,-1.631 c 0,-0.364 -0.32,-0.417 -0.605,-0.417 h -0.084 v 0.831 h 0.084 c 0.285,0 0.605,-0.054 0.605,-0.414 z m -2.533,4.839 H 10.499048 V 8.1222335 H 1.9760481 Z m 7.527,-2.581 h -0.8 v -2.271 h 0.8 z m -0.4,-3.595 a 0.453,0.453 0 1 1 -0.453,0.453 0.458,0.458 0 0 1 0.453,-0.453 z m -2.373,1.248 a 0.929,0.929 0 0 1 0.7,0.3 v -0.222 h 0.8 v 2.269 h -0.8 v -0.254 h -0.006 a 0.788,0.788 0 0 1 -0.685,0.329 1.213,1.213 0 0 1 -0.009,-2.422 z m -3.776,-0.99 h 1.3 c 0.658,0 1.16,0.315 1.16,1.026 a 0.9,0.9 0 0 1 -0.733,0.942 l 1.045,1.369 h -1.079 l -0.818,-1.28 h -0.009 v 1.28 h -0.866 z m 18.0359999,1.444001 -0.343,1.022 -0.333,-1.022 h 0.205 v -0.685 h -1.209 v 0.685 h 0.227 l 0.728,1.942 -0.049,0.124 h -0.244 v 0.689 h 1.218 v -0.689 h -0.232 l 0.791,-2.066 h 0.227 v -0.685 h -1.191 v 0.685 z"], + "resmed":[0,0,24,24,"m 17.571,16.885 a 1.225,1.225 0 0 0 -0.956,-0.411 1.5,1.5 0 0 0 -0.777,0.208 1.587,1.587 0 0 0 -0.663,0.956 1.507,1.507 0 0 0 -0.039,0.354 1.194,1.194 0 0 0 0.707,1.152 1.467,1.467 0 0 0 0.56,0.1 1.312,1.312 0 0 0 1.117,-0.5 c 0.046,-0.061 0.088,-0.122 0.129,-0.188 l -0.606,-0.3 a 1.073,1.073 0 0 1 -0.13,0.184 0.676,0.676 0 0 1 -0.488,0.2 0.537,0.537 0 0 1 -0.536,-0.636 h 1.905 c 0,-0.113 0.019,-0.227 0.019,-0.345 a 1.442,1.442 0 0 0 -0.051,-0.4 0.978,0.978 0 0 0 -0.191,-0.374 z M 16,17.516 a 0.893,0.893 0 0 1 0.237,-0.35 0.567,0.567 0 0 1 0.384,-0.147 0.49,0.49 0 0 1 0.281,0.076 0.482,0.482 0 0 1 0.188,0.223 0.732,0.732 0 0 1 0.025,0.2 z M 7.264,18.44 a 0.667,0.667 0 0 1 -0.223,0.151 0.678,0.678 0 0 1 -0.266,0.052 0.511,0.511 0 0 1 -0.531,-0.4 0.5,0.5 0 0 1 0,-0.238 h 1.898 c 0,-0.113 0.022,-0.227 0.022,-0.345 a 1.443,1.443 0 0 0 -0.052,-0.4 1.027,1.027 0 0 0 -0.19,-0.374 1.225,1.225 0 0 0 -0.956,-0.411 1.505,1.505 0 0 0 -0.78,0.208 1.585,1.585 0 0 0 -0.66,0.956 1.411,1.411 0 0 0 -0.042,0.354 1.194,1.194 0 0 0 0.707,1.152 1.481,1.481 0 0 0 0.562,0.1 1.32,1.32 0 0 0 1.13,-0.5 C 7.927,18.684 7.968,18.623 8.01,18.557 l -0.616,-0.3 A 1.131,1.131 0 0 1 7.264,18.44 Z M 6.585,17.166 a 0.577,0.577 0 0 1 0.386,-0.147 0.49,0.49 0 0 1 0.281,0.076 0.482,0.482 0 0 1 0.188,0.223 0.773,0.773 0 0 1 0.025,0.2 H 6.347 a 0.885,0.885 0 0 1 0.238,-0.352 z m 13.504,-0.34 a 0.931,0.931 0 0 0 -0.168,-0.181 0.984,0.984 0 0 0 -0.565,-0.171 1.283,1.283 0 0 0 -1.093,0.641 1.981,1.981 0 0 0 -0.293,1.021 1.081,1.081 0 0 0 0.369,0.9 0.84,0.84 0 0 0 0.562,0.2 1.028,1.028 0 0 0 0.575,-0.166 l 0.122,-0.086 -0.037,0.181 h 0.79 l 0.8,-3.559 h -0.785 z m -0.4,1.526 a 0.6,0.6 0 0 1 -0.217,0.215 0.6,0.6 0 0 1 -0.294,0.08 0.361,0.361 0 0 1 -0.2,-0.037 0.356,0.356 0 0 1 -0.146,-0.134 0.587,0.587 0 0 1 -0.088,-0.349 1.16,1.16 0 0 1 0.415,-0.939 0.485,0.485 0 0 1 0.274,-0.095 0.415,0.415 0 0 1 0.267,0.073 0.426,0.426 0 0 1 0.161,0.225 0.6,0.6 0 0 1 0.032,0.227 1.53,1.53 0 0 1 -0.207,0.734 z m -5.609,-2.751 -1.105,2.34 -0.061,-2.342 h -1.318 l -0.799,3.569 h 0.833 l 0.612,-2.799 0.1,2.799 h 0.748 l 1.335,-2.76 -0.638,2.76 h 0.828 l 0.805,-3.567 z m -3.692,2.168 A 0.893,0.893 0 0 0 10.027,17.594 C 9.919,17.555 9.814,17.525 9.702,17.494 9.474,17.435 9.293,17.362 9.293,17.249 c 0,-0.113 0.115,-0.2 0.333,-0.2 a 0.755,0.755 0 0 1 0.489,0.166 1.113,1.113 0 0 1 0.144,0.184 l 0.587,-0.284 A 1.591,1.591 0 0 0 10.7,16.9 1.3,1.3 0 0 0 9.629,16.482 1.155,1.155 0 0 0 8.588,16.931 0.687,0.687 0 0 0 8.47,17.305 a 0.671,0.671 0 0 0 0.1,0.343 c 0.159,0.244 0.379,0.327 0.892,0.489 0.184,0.056 0.294,0.085 0.355,0.171 a 0.169,0.169 0 0 1 0.029,0.09 0.2,0.2 0 0 1 -0.029,0.1 0.258,0.258 0 0 1 -0.142,0.095 0.918,0.918 0 0 1 -0.244,0.042 0.725,0.725 0 0 1 -0.316,-0.058 0.734,0.734 0 0 1 -0.261,-0.186 0.97,0.97 0 0 1 -0.1,-0.152 l -0.652,0.325 a 1.07,1.07 0 0 0 0.161,0.245 1.419,1.419 0 0 0 1.107,0.457 1.473,1.473 0 0 0 1.02,-0.34 0.839,0.839 0 0 0 0.276,-0.592 0.721,0.721 0 0 0 -0.034,-0.244 0.9,0.9 0 0 0 -0.244,-0.321 z m -4.95,-0.534 a 1.233,1.233 0 0 0 0.139,-0.6 0.952,0.952 0 0 0 -0.089,-0.47 0.964,0.964 0 0 0 -0.3,-0.369 1.131,1.131 0 0 0 -0.565,-0.19 H 2.825 l -0.81,3.562 H 2.9 l 0.294,-1.274 h 0.621 l 0.464,1.274 H 5.257 L 4.68,17.768 A 1.759,1.759 0 0 0 5.194,17.524 1,1 0 0 0 5.438,17.235 Z M 4.617,16.963 a 0.478,0.478 0 0 1 -0.138,0.161 0.485,0.485 0 0 1 -0.2,0.084 1.391,1.391 0 0 1 -0.193,0.022 H 3.345 l 0.223,-0.978 h 0.611 c 0.252,0 0.357,0.041 0.45,0.159 h -0.01 a 0.371,0.371 0 0 1 0.086,0.247 0.607,0.607 0 0 1 -0.088,0.305 z M 11.922,8.455 A 0.257,0.257 0 1 0 12.166,8.186 0.257,0.257 0 0 0 11.922,8.455 Z M 11.467,7.674 a 0.281,0.281 0 0 0 0.189,0.252 0.278,0.278 0 0 0 0.164,0.008 0.285,0.285 0 0 0 0.187,-0.4 0.285,0.285 0 0 0 -0.271,-0.162 0.291,0.291 0 0 0 -0.108,0.027 0.3,0.3 0 0 0 -0.089,0.066 0.282,0.282 0 0 0 -0.056,0.1 0.272,0.272 0 0 0 -0.016,0.109 z M 11.216,7.2 a 0.315,0.315 0 1 0 -0.33,-0.3 0.315,0.315 0 0 0 0.33,0.3 z M 10.518,6.489 A 0.352,0.352 0 1 0 10.15,6.154 0.353,0.353 0 0 0 10.518,6.489 Z M 9.616,5.91 A 0.391,0.391 0 1 0 9.207,5.538 0.391,0.391 0 0 0 9.616,5.91 Z M 8.5,5.6 A 0.432,0.432 0 1 0 8.047,5.189 0.433,0.433 0 0 0 8.5,5.6 Z M 7.24,5.736 A 0.482,0.482 0 1 0 6.74,5.278 0.48,0.48 0 0 0 7.24,5.736 Z M 5.972,6.294 a 0.536,0.536 0 1 0 -0.56,-0.51 0.536,0.536 0 0 0 0.56,0.51 z M 4.789,7.241 A 0.594,0.594 0 1 0 4.167,6.676 0.594,0.594 0 0 0 4.789,7.241 Z M 3.725,8.513 A 0.66,0.66 0 1 0 3.035,7.885 0.658,0.658 0 0 0 3.725,8.513 Z M 2.759,10.081 A 0.743,0.743 0 1 0 2.015,9.338 0.743,0.743 0 0 0 2.759,10.081 Z m 9.505,-0.86 a 0.245,0.245 0 1 0 0.244,-0.245 0.245,0.245 0 0 0 -0.244,0.245 z m 0.384,0.599 a 0.265,0.265 0 0 0 -0.052,0.087 0.274,0.274 0 0 0 -0.015,0.1 0.267,0.267 0 0 0 0.084,0.178 0.271,0.271 0 0 0 0.086,0.052 0.282,0.282 0 0 0 0.1,0.015 0.256,0.256 0 0 0 0.16,-0.447 0.257,0.257 0 0 0 -0.185,-0.067 0.235,0.235 0 0 0 -0.1,0.024 0.249,0.249 0 0 0 -0.078,0.058 z m 0.34,0.916 a 0.287,0.287 0 0 0 0.024,0.163 0.282,0.282 0 0 0 0.11,0.122 0.279,0.279 0 0 0 0.159,0.041 0.283,0.283 0 0 0 0.2,-0.093 0.282,0.282 0 0 0 0.018,-0.36 0.286,0.286 0 0 0 -0.132,-0.1 0.284,0.284 0 0 0 -0.377,0.225 z m 0.545,0.956 a 0.316,0.316 0 0 0 0.3,0.181 0.33,0.33 0 0 0 0.12,-0.029 0.339,0.339 0 0 0 0.1,-0.073 0.32,0.32 0 0 0 0.064,-0.106 0.317,0.317 0 0 0 -0.043,-0.294 0.333,0.333 0 0 0 -0.147,-0.11 0.318,0.318 0 0 0 -0.183,-0.009 0.317,0.317 0 0 0 -0.236,0.259 0.321,0.321 0 0 0 0.025,0.181 z m 1,0.96 a 0.352,0.352 0 1 0 -0.368,-0.334 0.352,0.352 0 0 0 0.368,0.334 z m 0.683,0.601 a 0.391,0.391 0 0 0 0.592,-0.353 0.385,0.385 0 0 0 -0.075,-0.214 0.389,0.389 0 0 0 -0.182,-0.136 0.383,0.383 0 0 0 -0.227,-0.012 0.4,0.4 0 0 0 -0.2,0.116 0.391,0.391 0 0 0 -0.1,0.206 0.385,0.385 0 0 0 0.033,0.224 0.4,0.4 0 0 0 0.159,0.169 z m 1.098,0.385 a 0.443,0.443 0 0 0 0.41,0.021 0.424,0.424 0 0 0 0.136,-0.1 0.441,0.441 0 0 0 0.088,-0.145 0.446,0.446 0 0 0 -0.06,-0.407 0.437,0.437 0 0 0 -0.456,-0.164 0.435,0.435 0 0 0 -0.325,0.359 0.434,0.434 0 0 0 0.207,0.437 z m 1.967,-0.476 a 0.482,0.482 0 1 0 -0.458,0.5 0.481,0.481 0 0 0 0.458,-0.5 z m 0.526,-0.025 a 0.535,0.535 0 0 0 0.706,-0.777 0.541,0.541 0 0 0 -0.249,-0.186 0.539,0.539 0 0 0 -0.578,0.144 0.541,0.541 0 0 0 -0.133,0.281 0.533,0.533 0 0 0 0.254,0.538 z M 19.951,12.3 a 0.594,0.594 0 1 0 0.508,-1.067 0.6,0.6 0 0 0 -0.64,0.159 0.595,0.595 0 0 0 0.132,0.908 z m 1.342,-2.375 a 0.66,0.66 0 1 0 0.691,0.628 0.661,0.661 0 0 0 -0.691,-0.628 z"], + "rotary-mop":[0,0,24,24,"M 10.049,6.711 A 0.432,0.432 0 1 0 9.617,6.279 0.433,0.433 0 0 0 10.049,6.711 Z M 5.9219998,6.9949999 a 0.43200001,0.43200001 0 0 1 -0.432,0.432 0.43200001,0.43200001 0 0 1 -0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,0.432 z M 2.935,11.2 A 0.432,0.432 0 1 0 2.503,10.768 0.433,0.433 0 0 0 2.935,11.2 Z m 0.973,3.562 A 0.432,0.432 0 1 0 4.34,15.194 0.432,0.432 0 0 0 3.908,14.762 Z M 7.6,17.355 A 0.432,0.432 0 1 0 8.033,17.787 0.433,0.433 0 0 0 7.6,17.355 Z m 4.429,-0.85 a 0.432,0.432 0 1 0 0.432,0.432 0.433,0.433 0 0 0 -0.432,-0.432 z m 2.38,-3.666 a 0.433,0.433 0 1 0 0.432,0.432 0.433,0.433 0 0 0 -0.432,-0.432 z M 13.73,9.3 A 0.432,0.432 0 1 0 13.298,8.868 0.433,0.433 0 0 0 13.73,9.3 Z M 7.271,9.412 v 0 A 0.432,0.432 0 1 0 7.248,8.802 0.433,0.433 0 0 0 7.271,9.412 Z M 6.792,8.191 v 0 A 0.432,0.432 0 1 0 6.768,7.58 0.432,0.432 0 0 0 6.792,8.191 Z M 6.3,6.88 A 0.432,0.432 0 0 0 6.91,6.856 0.432,0.432 0 1 0 6.3,6.88 Z m 4.624,10.211 a 0.433,0.433 0 1 0 0.3,0.127 0.432,0.432 0 0 0 -0.3,-0.127 z M 10.8,16.59 a 0.432,0.432 0 1 0 -0.611,0 0.432,0.432 0 0 0 0.611,0 z m -0.445,-1.329 a 0.432,0.432 0 1 0 -0.611,0 0.433,0.433 0 0 0 0.611,0 z M 3.592,13.84 a 0.433,0.433 0 1 0 0,0.611 0.433,0.433 0 0 0 0,-0.611 z m 1.239,0.179 a 0.432,0.432 0 1 0 -0.612,0 0.433,0.433 0 0 0 0.612,0 z M 6.16,13.577 a 0.432,0.432 0 1 0 -0.611,0 0.432,0.432 0 0 0 0.611,0 z m 5.521,-3.161 a 0.432,0.432 0 1 0 0.305,0.126 0.431,0.431 0 0 0 -0.305,-0.126 z m 1.239,0.432 a 0.432,0.432 0 1 0 -0.306,-0.126 0.43,0.43 0 0 0 0.306,0.126 z m 1.023,-0.569 a 0.432,0.432 0 1 0 0,-0.611 0.433,0.433 0 0 0 0,0.611 z m -2.3,3.421 a 0.433,0.433 0 1 0 -0.432,-0.433 0.433,0.433 0 0 0 0.432,0.433 z m 1.613,0.142 a 0.432,0.432 0 1 0 -0.432,0.432 0.432,0.432 0 0 0 0.432,-0.432 z m 0.821,0.195 a 0.433,0.433 0 1 0 0.432,0.433 0.433,0.433 0 0 0 -0.432,-0.433 z M 3.389,10.1 A 0.432,0.432 0 1 0 2.957,9.668 0.433,0.433 0 0 0 3.389,10.1 Z m 0.749,0.142 A 0.432,0.432 0 1 0 4.57,9.81 0.432,0.432 0 0 0 4.138,10.242 Z m 1.685,0.196 A 0.432,0.432 0 1 0 6.255,10.87 0.432,0.432 0 0 0 5.823,10.438 Z m 1.744,5.016 A 0.432,0.432 0 1 0 7.135,15.022 0.433,0.433 0 0 0 7.567,15.454 Z M 7,15.771 A 0.433,0.433 0 1 0 7.432,16.204 0.433,0.433 0 0 0 7,15.771 Z M 6.369,17.024 A 0.433,0.433 0 1 0 6.801,17.456 0.433,0.433 0 0 0 6.369,17.024 Z M 11.248,7.23 A 0.432,0.432 0 1 0 10.815,6.798 0.432,0.432 0 0 0 11.248,7.23 Z M 10.677,7.548 A 0.432,0.432 0 1 0 11.109,7.98 0.432,0.432 0 0 0 10.677,7.548 Z M 10.049,9.665 A 0.433,0.433 0 1 0 9.617,9.232 0.433,0.433 0 0 0 10.049,9.665 Z M 4.912,8.134 a 0.432,0.432 0 1 0 -0.612,0 0.433,0.433 0 0 0 0.612,0 z m 0.324,0.325 a 0.432,0.432 0 1 0 0.611,0 0.433,0.433 0 0 0 -0.611,0 z M 6.172,9.4 a 0.432,0.432 0 1 0 0.611,0 0.432,0.432 0 0 0 -0.611,0 z m 1.547,0.93 a 0.433,0.433 0 1 0 0,0.612 0.435,0.435 0 0 0 0,-0.612 z m 2.744,3.408 a 0.432,0.432 0 1 0 -0.611,0 0.432,0.432 0 0 0 0.611,0 z m 0.937,0.935 a 0.431,0.431 0 0 0 0,-0.611 0.433,0.433 0 0 0 -0.738,0.306 0.427,0.427 0 0 0 0.127,0.3 0.432,0.432 0 0 0 0.611,0.005 z m 0.324,0.936 a 0.432,0.432 0 1 0 0,-0.611 0.432,0.432 0 0 0 0,0.611 z m 1.547,0.325 a 0.43239594,0.43239594 0 1 0 -0.612,0.611 0.43239594,0.43239594 0 0 0 0.612,-0.611 z M 13.016,8.312 a 0.432,0.432 0 1 0 0,-0.864 0.432,0.432 0 1 0 0,0.864 z m -1.241,0.809 a 0.431,0.431 0 1 0 -0.127,-0.3 0.429,0.429 0 0 0 0.127,0.3 z m -0.936,0.936 a 0.433,0.433 0 1 0 -0.126,-0.3 0.429,0.429 0 0 0 0.126,0.3 z M 9.9,10.382 a 0.432,0.432 0 0 0 0.3,0.737 0.432,0.432 0 1 0 0,-0.864 0.427,0.427 0 0 0 -0.3,0.127 z m -2.741,2.796 a 0.432,0.432 0 1 0 0.611,0 0.432,0.432 0 0 0 -0.611,0 z m -0.63,0.809 a 0.429,0.429 0 0 0 -0.306,0.127 0.432,0.432 0 1 0 0.611,0 0.427,0.427 0 0 0 -0.305,-0.127 z M 5.9,15.049 a 0.433,0.433 0 1 0 0,0.612 0.434,0.434 0 0 0 0,-0.612 z m -1.243,0.809 a 0.427,0.427 0 0 0 -0.3,0.127 0.431,0.431 0 1 0 0.3,-0.127 z M 6.814,12.492 A 0.432,0.432 0 1 0 6.381,12.06 0.433,0.433 0 0 0 6.814,12.492 Z M 5.9219998,12.06 a 0.43200001,0.43200001 0 0 1 -0.432,0.432 0.43200001,0.43200001 0 0 1 -0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,0.432 z M 4.167,12.492 A 0.432,0.432 0 1 0 3.735,12.06 0.433,0.433 0 0 0 4.167,12.492 Z M 3.276,12.06 A 0.432,0.432 0 1 0 2.844,12.492 0.432,0.432 0 0 0 3.276,12.06 Z m 10.866,0 a 0.432,0.432 0 1 0 0.432,-0.432 0.433,0.433 0 0 0 -0.432,0.432 z m -0.459,0 a 0.43200001,0.43200001 0 0 1 -0.432,0.432 0.43200001,0.43200001 0 0 1 -0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,0.432 z m -2.183,0 A 0.432,0.432 0 1 0 11.932,11.628 0.432,0.432 0 0 0 11.5,12.06 Z M 10.6,11.628 A 0.432,0.432 0 1 0 11.033,12.06 0.432,0.432 0 0 0 10.6,11.628 Z M 9.209,10.249 A 0.433,0.433 0 1 0 8.776,10.681 0.433,0.433 0 0 0 9.209,10.249 Z M 8.776,9.358 A 0.433,0.433 0 1 0 8.344,8.926 0.433,0.433 0 0 0 8.776,9.358 Z m 0,-1.323 A 0.433,0.433 0 1 0 8.344,7.6 0.433,0.433 0 0 0 8.776,8.035 Z m 0,-1.324 A 0.432,0.432 0 1 0 8.344,6.279 0.433,0.433 0 0 0 8.776,6.711 Z m 0,10.697 A 0.433,0.433 0 1 0 9.209,17.84 0.433,0.433 0 0 0 8.776,17.408 Z m 0,-1.323 a 0.432,0.432 0 1 0 0.433,0.432 0.433,0.433 0 0 0 -0.433,-0.432 z m 0,-1.323 a 0.432,0.432 0 1 0 0.433,0.432 0.432,0.432 0 0 0 -0.433,-0.432 z m 0,-1.324 A 0.433,0.433 0 1 0 9.209,13.871 0.433,0.433 0 0 0 8.776,13.438 Z M 9.7,12.06 A 0.92,0.92 0 1 0 8.78,12.979 0.921,0.921 0 0 0 9.7,12.06 Z m 5.853,0 a 6.777,6.777 0 1 0 -6.777,6.776 6.784,6.784 0 0 0 6.777,-6.776 z m -1.476,3.016 a 0.607,0.607 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.606,0.606 z m -7.12,-0.228 a 0.606,0.606 0 1 1 0.131,-0.2 0.605,0.605 0 1 1 -0.127,0.37 0.592,0.592 0 0 1 0.046,-0.231 0.658,0.658 0 0 1 -0.05,0.061 z M 6.814,11.454 A 0.606,0.606 0 1 1 6.207,12.06 0.606,0.606 0 0 1 6.814,11.454 Z M 5.823,11.476 A 0.606,0.606 0 1 1 6.429,10.87 0.607,0.607 0 0 1 5.823,11.476 Z m 1.59,-0.234 A 0.606,0.606 0 1 1 7.842,11.065 0.607,0.607 0 0 1 7.413,11.242 Z M 6.906,10.129 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 0,0.857 z M 5.97,9.193 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 0,0.857 z M 5.176,10.242 A 0.606,0.606 0 1 1 4.57,9.636 0.606,0.606 0 0 1 5.176,10.242 Z M 4.167,11.454 A 0.606,0.606 0 1 1 3.561,12.06 0.606,0.606 0 0 1 4.167,11.454 Z M 4.1,13.285 a 0.606,0.606 0 1 1 0,0.857 0.6,0.6 0 0 1 0,-0.857 z M 4.888,12.06 a 0.606,0.606 0 1 1 0.606,0.606 0.606,0.606 0 0 1 -0.61,-0.606 z m 0.542,0.783 a 0.606,0.606 0 1 1 0,0.857 0.607,0.607 0 0 1 -0.004,-0.857 z m 2.467,1.069 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 -0.004,0.857 z M 7.687,12.06 A 1.094,1.094 0 1 1 8.78,13.153 1.095,1.095 0 0 1 7.683,12.06 Z M 8.174,10.249 A 0.606,0.606 0 1 1 8.78,10.855 0.607,0.607 0 0 1 8.17,10.249 Z M 10.72,9.323 A 0.607,0.607 0 1 1 10.543,9.752 0.6,0.6 0 0 1 10.716,9.323 Z M 10.681,8.586 a 0.606,0.606 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.61,0.606 z m 1.857,3.474 a 0.606,0.606 0 1 1 -0.606,-0.606 0.607,0.607 0 0 1 0.602,0.606 z M 12.495,9.987 a 0.606,0.606 0 1 1 0,0.858 0.607,0.607 0 0 1 -0.004,-0.858 z m -0.382,1.29 a 0.606,0.606 0 1 1 0,-0.858 0.6,0.6 0 0 1 -0.004,0.858 z m -1.471,-1.018 a 0.6,0.6 0 1 1 -0.429,-0.178 0.6,0.6 0 0 1 0.425,0.178 z M 9.729,13 a 0.606,0.606 0 1 1 0,0.857 0.605,0.605 0 0 1 0,-0.857 z m 0.875,-0.338 a 0.606,0.606 0 1 1 0.607,-0.606 0.607,0.607 0 0 1 -0.611,0.61 z m 1.039,0 a 0.607,0.607 0 1 1 -0.606,0.606 0.607,0.607 0 0 1 0.606,-0.603 z m 0.815,2.21 a 0.606,0.606 0 1 1 -0.857,0 0.607,0.607 0 0 1 0.857,0.003 z m -0.24,-1.033 a 0.606,0.606 0 1 1 0.606,0.606 0.607,0.607 0 0 1 -0.606,-0.603 z m 1.033,-1.176 a 0.606,0.606 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.606,0.609 z m 1.158,1.212 a 0.607,0.607 0 1 1 0.606,-0.607 0.607,0.607 0 0 1 -0.606,0.61 z m 0.771,-1.818 a 0.606,0.606 0 1 1 -0.606,-0.606 0.606,0.606 0 0 1 0.606,0.609 z m -0.5,-1.658 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 -0.002,0.858 z M 14.338,8.864 a 0.606,0.606 0 1 1 -0.606,-0.606 0.607,0.607 0 0 1 0.604,0.609 z m -1.75,-1.412 a 0.606,0.606 0 0 1 1.034,0.428 0.606,0.606 0 0 1 -1.212,0 0.6,0.6 0 0 1 0.178,-0.428 z M 12.509,8.387 A 0.607,0.607 0 1 1 12.081,8.21 0.6,0.6 0 0 1 12.509,8.387 Z m -1.261,-2.2 a 0.606,0.606 0 1 1 -0.607,0.606 0.607,0.607 0 0 1 0.607,-0.601 z m -1.2,-0.519 A 0.606,0.606 0 1 1 9.442,6.274 0.607,0.607 0 0 1 10.049,5.673 Z m 0,2.953 A 0.607,0.607 0 1 1 9.442,9.227 0.607,0.607 0 0 1 10.049,8.626 Z M 8.776,5.673 A 0.606,0.606 0 1 1 8.17,6.279 0.606,0.606 0 0 1 8.776,5.673 Z M 8.776,7 A 0.607,0.607 0 1 1 8.17,7.6 0.606,0.606 0 0 1 8.776,7 Z m 0,1.323 A 0.607,0.607 0 1 1 8.17,8.93 0.606,0.606 0 0 1 8.776,8.319 Z M 8.01,9.507 A 0.608,0.608 0 0 1 7.153,9.54 v 0 A 0.606,0.606 0 1 1 8.01,9.507 Z M 7.53,8.286 A 0.608,0.608 0 0 1 6.673,8.319 v 0 A 0.606,0.606 0 1 1 7.53,8.286 Z M 5.49,6.386 A 0.607,0.607 0 0 1 5.99,6.655 0.566,0.566 0 0 1 5.982,6.583 0.606,0.606 0 1 1 6.611,7.165 H 6.591 A 0.6,0.6 0 0 1 6.18,7.003 v 0 A 0.6,0.6 0 0 1 6.088,6.9 0.624,0.624 0 0 1 6.1,7 0.606,0.606 0 1 1 5.494,6.394 Z M 4.177,7.4 a 0.607,0.607 0 1 1 0,0.857 0.608,0.608 0 0 1 0,-0.857 z m -1.242,2.762 a 0.593,0.593 0 0 1 0.113,0.011 0.606,0.606 0 1 1 0.341,0.105 0.593,0.593 0 0 1 -0.113,-0.011 0.606,0.606 0 1 1 -0.341,-0.1 z m -0.7,1.9 A 0.606,0.606 0 1 1 2.841,12.668 0.606,0.606 0 0 1 2.238,12.06 Z m 0.62,2.514 a 0.605,0.605 0 0 1 0,-0.857 0.6,0.6 0 0 1 0.857,0 0.607,0.607 0 0 1 -0.429,1.035 0.6,0.6 0 0 1 -0.425,-0.18 z M 3.908,15.8 A 0.606,0.606 0 1 1 4.514,15.194 0.607,0.607 0 0 1 3.908,15.8 Z m 1.178,0.919 a 0.607,0.607 0 1 1 0,-0.857 0.6,0.6 0 0 1 0,0.857 z m 0.078,-0.935 a 0.608,0.608 0 1 1 0.429,0.177 0.608,0.608 0 0 1 -0.429,-0.177 z m 1.205,2.279 A 0.607,0.607 0 1 1 6.975,17.456 0.607,0.607 0 0 1 6.369,18.063 Z M 6.39,16.2 A 0.607,0.607 0 1 1 7,16.81 0.607,0.607 0 0 1 6.39,16.2 Z m 2.386,2.243 a 0.609,0.609 0 0 1 -0.593,-0.481 0.606,0.606 0 1 1 0.014,-0.3 0.606,0.606 0 1 1 0.579,0.786 z m 0,-1.324 a 0.606,0.606 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.606,0.61 z m 0,-1.323 A 0.606,0.606 0 1 1 9.382,15.19 0.607,0.607 0 0 1 8.776,15.8 Z m 0,-1.323 a 0.607,0.607 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.606,0.61 z m 0.845,0.049 a 0.607,0.607 0 0 1 0.857,0 0.633,0.633 0 0 1 0.049,0.056 0.594,0.594 0 0 1 -0.04,-0.214 0.608,0.608 0 1 1 0.178,0.428 0.437,0.437 0 0 1 -0.049,-0.056 0.606,0.606 0 1 1 -0.995,-0.214 z m 0.442,1.33 a 0.607,0.607 0 1 1 0,0.857 0.607,0.607 0 0 1 0,-0.853 z m 1.289,2.1 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 0,0.857 z m 1.613,-1.107 a 0.608,0.608 0 0 1 -0.371,-0.127 0.613,0.613 0 0 1 0.041,0.219 0.606,0.606 0 1 1 -0.606,-0.606 0.6,0.6 0 0 1 0.371,0.128 0.607,0.607 0 1 1 0.565,0.386 z M 16.5,6.592 A 0.433,0.433 0 1 0 16.068,6.16 0.433,0.433 0 0 0 16.5,6.592 Z m -2.448,10.644 a 0.432,0.432 0 1 0 0.432,0.432 0.431,0.431 0 0 0 -0.432,-0.432 z m 4.425,-0.85 a 0.432,0.432 0 1 0 0.432,0.432 0.432,0.432 0 0 0 -0.432,-0.432 z m 2.379,-3.679 a 0.432,0.432 0 1 0 0.433,0.432 0.432,0.432 0 0 0 -0.433,-0.432 z M 20.177,9.18 A 0.432,0.432 0 1 0 19.745,8.748 0.432,0.432 0 0 0 20.177,9.18 Z M 13.333,6.126 A 0.432,0.432 0 0 0 12.722,6.15 0.409,0.409 0 0 0 12.638,6.284 6.913,6.913 0 0 1 13.3,6.784 0.547,0.547 0 0 0 13.357,6.733 0.434,0.434 0 0 0 13.333,6.126 Z m 4.038,10.846 a 0.432,0.432 0 1 0 0.3,0.126 0.431,0.431 0 0 0 -0.3,-0.126 z m -0.127,-0.501 a 0.432,0.432 0 1 0 -0.611,0 0.432,0.432 0 0 0 0.611,0 z M 16.8,15.141 a 0.432,0.432 0 1 0 -0.611,0 0.432,0.432 0 0 0 0.611,0 z M 18.128,10.3 a 0.432,0.432 0 1 0 0.306,0.126 0.433,0.433 0 0 0 -0.306,-0.126 z m 1.239,0.429 a 0.427,0.427 0 0 0 0.3,-0.127 0.431,0.431 0 1 0 -0.3,0.127 z m 1.024,-0.559 a 0.432,0.432 0 1 0 0,-0.611 0.432,0.432 0 0 0 0,0.611 z m -2.301,3.414 a 0.432,0.432 0 1 0 -0.432,-0.432 0.433,0.433 0 0 0 0.432,0.432 z m 1.61,0.139 a 0.433,0.433 0 1 0 -0.432,0.432 0.433,0.433 0 0 0 0.432,-0.432 z m 0.824,0.195 a 0.432,0.432 0 1 0 0.432,0.432 0.433,0.433 0 0 0 -0.432,-0.432 z m -7.278,3.459 q -0.242,0.2 -0.5,0.386 a 0.437,0.437 0 0 0 0.072,0.006 0.432,0.432 0 0 0 0.428,-0.392 z M 17.7,7.111 A 0.432,0.432 0 1 0 17.268,6.679 0.433,0.433 0 0 0 17.7,7.111 Z M 17.124,7.428 A 0.432,0.432 0 1 0 17.556,7.86 0.433,0.433 0 0 0 17.124,7.428 Z M 16.5,9.545 A 0.432,0.432 0 1 0 16.068,9.113 0.433,0.433 0 0 0 16.5,9.545 Z m 0.411,4.073 a 0.432,0.432 0 1 0 -0.611,0 0.433,0.433 0 0 0 0.611,0 z m 0.935,0.936 a 0.432,0.432 0 1 0 -0.611,0 0.429,0.429 0 0 0 0.611,0 z m 0.325,0.936 a 0.43204224,0.43204224 0 1 0 0.611,-0.611 0.43204224,0.43204224 0 0 0 -0.611,0.611 z m 1.241,0.198 a 0.432,0.432 0 1 0 0.306,0.126 0.431,0.431 0 0 0 -0.306,-0.126 z m 0.052,-7.495 a 0.432,0.432 0 1 0 0,-0.864 0.432,0.432 0 0 0 -0.433,0.432 0.434,0.434 0 0 0 0.433,0.432 z M 18.222,9 A 0.433,0.433 0 1 0 18.1,8.7 0.429,0.429 0 0 0 18.222,9 Z M 17.287,9.938 A 0.431,0.431 0 1 0 17.16,9.632 0.43,0.43 0 0 0 17.287,9.938 Z m -0.325,0.935 a 0.431,0.431 0 0 0 0,-0.611 0.433,0.433 0 0 0 -0.738,0.306 0.432,0.432 0 0 0 0.738,0.3 z m 3.627,1.067 a 0.433,0.433 0 1 0 0.433,-0.432 0.433,0.433 0 0 0 -0.433,0.432 z m -0.459,0 a 0.43200001,0.43200001 0 0 1 -0.432,0.432 0.43200001,0.43200001 0 0 1 -0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,-0.432 0.43200001,0.43200001 0 0 1 0.432,0.432 z m -2.187,0 a 0.432,0.432 0 1 0 0.432,-0.432 0.433,0.433 0 0 0 -0.432,0.432 z m -1.323,0 A 0.432,0.432 0 1 0 17.052,11.508 0.432,0.432 0 0 0 16.62,11.94 Z M 15.317,9.708 A 6.751,6.751 0 0 1 15.533,10.43 0.431,0.431 0 0 0 15.317,9.708 Z M 15.656,8.806 A 0.432,0.432 0 0 0 14.825,8.64 q 0.162,0.285 0.3,0.586 a 0.433,0.433 0 0 0 0.534,-0.42 z M 15.224,7.051 a 0.432,0.432 0 1 0 0.432,0.432 0.433,0.433 0 0 0 -0.432,-0.432 z m 0,-1.324 A 0.433,0.433 0 1 0 15.656,6.16 0.433,0.433 0 0 0 15.224,5.727 Z m 0,11.562 a 0.432,0.432 0 1 0 0.432,0.432 0.433,0.433 0 0 0 -0.432,-0.432 z m 0,-1.323 a 0.432,0.432 0 1 0 0.432,0.432 0.432,0.432 0 0 0 -0.432,-0.432 z m 0,-0.459 a 0.433,0.433 0 0 0 0,-0.865 6.9,6.9 0 0 1 -0.334,0.712 0.431,0.431 0 0 0 0.334,0.153 z m 0.432,-1.756 a 0.427,0.427 0 0 0 -0.08,-0.249 q -0.069,0.325 -0.168,0.639 a 0.432,0.432 0 0 0 0.248,-0.39 z m 0.487,-1.811 a 0.919,0.919 0 0 0 -0.478,-0.806 7.071,7.071 0 0 1 0.062,0.926 c 0,0.225 -0.012,0.449 -0.033,0.669 A 0.919,0.919 0 0 0 16.143,11.94 Z M 15.224,5.164 a 6.744,6.744 0 0 0 -3.151,0.778 q 0.213,0.115 0.417,0.245 A 0.616,0.616 0 0 1 12.59,6.031 0.608,0.608 0 0 1 13.451,6 0.606,0.606 0 0 1 13.484,6.857 0.479,0.479 0 0 1 13.432,6.906 c 0.1,0.089 0.194,0.18 0.287,0.275 a 0.6,0.6 0 0 1 0.405,0.446 6.994,6.994 0 0 1 0.6,0.84 0.606,0.606 0 1 1 0.5,0.947 H 15.2 l 0.046,0.114 a 0.6,0.6 0 0 1 0.329,1.1 c 0.021,0.1 0.04,0.2 0.057,0.306 a 1.093,1.093 0 0 1 0.037,2.01 q -0.022,0.178 -0.054,0.354 a 0.605,0.605 0 0 1 -0.277,1.055 c -0.015,0.042 -0.03,0.085 -0.046,0.127 a 0.606,0.606 0 1 1 -0.488,1.04 7,7 0 0 1 -1.393,1.72 0.592,0.592 0 0 1 0.009,0.1 0.6,0.6 0 0 1 -0.861,0.549 c -0.087,0.057 -0.175,0.112 -0.265,0.165 a 6.776,6.776 0 1 0 2.93,-12.89 z m 0,13.163 a 0.607,0.607 0 0 1 -0.593,-0.48 0.606,0.606 0 1 1 0.014,-0.3 0.606,0.606 0 1 1 0.579,0.785 z m 0,-1.323 A 0.606,0.606 0 1 1 15.83,16.398 0.607,0.607 0 0 1 15.224,17 Z m 6.4,-5.064 a 0.607,0.607 0 1 1 -0.606,-0.606 0.607,0.607 0 0 1 0.61,0.606 z m -0.5,-1.657 a 0.606,0.606 0 1 1 0,-0.857 0.6,0.6 0 0 1 0.001,0.857 z M 17.164,9.2 a 0.606,0.606 0 0 1 1.034,0.428 0.606,0.606 0 0 1 -1.212,0 0.6,0.6 0 0 1 0.178,-0.428 z m -0.04,-0.738 a 0.606,0.606 0 1 1 0.606,-0.606 0.606,0.606 0 0 1 -0.606,0.61 z m 1.857,3.474 a 0.606,0.606 0 1 1 -0.606,-0.606 0.607,0.607 0 0 1 0.606,0.61 z M 18.938,9.864 a 0.606,0.606 0 1 1 0.857,0.857 0.6,0.6 0 0 1 -0.857,0 0.607,0.607 0 0 1 0,-0.853 z m -0.381,1.289 a 0.606,0.606 0 1 1 0,-0.857 0.606,0.606 0 0 1 0,0.861 z m -0.9,0.783 a 0.606,0.606 0 1 1 -0.606,-0.606 0.607,0.607 0 0 1 0.607,0.61 z m 0.432,0.606 a 0.606,0.606 0 1 1 -0.606,0.606 0.607,0.607 0 0 1 0.607,-0.602 z m 0.815,2.21 a 0.606,0.606 0 1 1 -0.857,0 0.607,0.607 0 0 1 0.858,0.004 z m -0.24,-1.033 a 0.607,0.607 0 1 1 0.607,0.606 0.607,0.607 0 0 1 -0.606,-0.602 z M 19.7,12.547 A 0.607,0.607 0 1 1 20.307,11.94 0.607,0.607 0 0 1 19.7,12.547 Z m 1.085,-3.8 A 0.606,0.606 0 1 1 20.179,8.141 0.607,0.607 0 0 1 20.783,8.748 Z M 19.035,7.332 A 0.6,0.6 0 1 1 18.857,7.761 0.6,0.6 0 0 1 19.035,7.332 Z M 18.956,8.268 A 0.6,0.6 0 1 1 18.528,8.09 0.6,0.6 0 0 1 18.956,8.268 Z M 17.7,6.073 A 0.606,0.606 0 1 1 17.094,6.679 0.607,0.607 0 0 1 17.7,6.073 Z M 16.5,5.553 A 0.607,0.607 0 1 1 15.894,6.16 0.607,0.607 0 0 1 16.5,5.553 Z M 15.224,8.089 A 0.606,0.606 0 1 1 15.83,7.483 0.607,0.607 0 0 1 15.224,8.089 Z m 0,-1.323 A 0.607,0.607 0 1 1 15.83,6.16 0.607,0.607 0 0 1 15.224,6.766 Z m 0.667,2.347 A 0.606,0.606 0 1 1 16.497,9.719 0.607,0.607 0 0 1 15.891,9.113 Z M 16.228,11 A 0.6,0.6 0 1 1 16.656,11.178 0.6,0.6 0 0 1 16.228,11 Z m -0.052,1.888 a 0.607,0.607 0 1 1 0,0.857 0.608,0.608 0 0 1 0,-0.861 z m -0.108,1.523 a 0.607,0.607 0 0 1 0.857,0 0.633,0.633 0 0 1 0.049,0.056 0.621,0.621 0 0 1 -0.039,-0.215 0.6,0.6 0 1 1 0.177,0.429 0.633,0.633 0 0 1 -0.049,-0.056 0.606,0.606 0 1 1 -0.995,-0.214 z m 0.442,1.33 a 0.606,0.606 0 1 1 0,0.857 0.605,0.605 0 0 1 0,-0.861 z m 1.289,2.1 a 0.606,0.606 0 1 1 0,-0.858 0.6,0.6 0 0 1 0.001,0.85 z m 2.042,-1.285 a 0.6,0.6 0 0 1 -0.8,0.05 0.6,0.6 0 0 1 0.042,0.22 0.608,0.608 0 1 1 -0.235,-0.478 0.606,0.606 0 1 1 0.993,0.208 z m 0.683,-1.592 a 0.606,0.606 0 1 1 0.606,-0.606 0.607,0.607 0 0 1 -0.606,0.598 z m 0.332,-1.2 a 0.606,0.606 0 1 1 0.607,-0.606 0.607,0.607 0 0 1 -0.607,0.6 z"], + "sleep-timer":[0,0,24,24,"M 18.248,5.428 C 18.142,5.553 18.042,5.67 17.934,5.803 L 16.45,7.736 v 0.318 h 2.632 V 7.62 h -1.961 l 0.15,-0.175 c 0.117,-0.138 0.216,-0.261 0.31,-0.388 v 0 L 19.048,5.15 19.054,4.804 h -2.468 v 0.441 h 1.821 z M 20.435,5.666 20.59,5.49 c 0.081,-0.093 0.149,-0.176 0.216,-0.263 l 1.167,-1.458 0.005,-0.258 h -1.956 v 0.327 h 1.455 L 21.32,4.015 C 21.245,4.1 21.171,4.184 21.094,4.276 l -1.18,1.475 V 5.988 H 22 V 5.666 Z m -4.778,4.692 h -2.589 l 0.155,-0.176 C 13.394,9.988 13.536,9.815 13.67,9.639 v 0 L 15.611,7.173 15.62,6.718 H 12.339 V 7.3 h 2.4 l -0.2,0.229 C 14.398,7.69 14.265,7.843 14.124,8.013 l -1.967,2.5 v 0.42 h 3.5 z M 5.253,15.781 a 7.186,7.186 0 0 0 10.172,1.7 8.088,8.088 0 0 1 -7.71,-3.539 8.579,8.579 0 0 1 -0.468,-8.031 7.179,7.179 0 0 0 -1.994,9.87 z M 15.425,11.949 A 0.189,0.189 0 0 0 15.237,11.76 H 11.786 A 0.841,0.841 0 0 0 11.22,11.194 V 5.957 A 0.232,0.232 0 0 0 10.988,5.725 0.246,0.246 0 0 0 10.741,5.972 v 5.222 a 0.841,0.841 0 1 0 1.045,1.046 h 3.44 a 0.2,0.2 0 0 0 0.2,-0.2 z M 17.579,7.408 H 18.7 A 9.035,9.035 0 0 0 18.181,6.632 L 17.757,7.184 C 17.7,7.259 17.639,7.332 17.579,7.408 Z m 0.382,0.859 A 7.948,7.948 0 1 1 16.921,6.773 L 17.58,5.916 C 17.433,5.757 17.28,5.603 17.124,5.456 H 16.373 V 4.823 a 8.968,8.968 0 1 0 2.775,3.444 z"], + "snapcast":[0,0,24,24,"m 17.247,8.526 a 0.278,0.278 0 1 0 -0.481,0.277 6.2,6.2 0 0 1 0,6.17 0.278,0.278 0 0 0 0.482,0.277 6.756,6.756 0 0 0 -0.001,-6.724 z M 11.351,18.1 a 6.211,6.211 0 0 1 -5.343,-3.084 0.27802967,0.27802967 0 1 0 -0.481,0.279 6.75,6.75 0 0 0 5.823,3.361 v 0 a 0.278,0.278 0 0 0 0,-0.556 z M 11.629,5.4 A 0.278,0.278 0 0 0 11.351,5.122 v 0 a 6.748,6.748 0 0 0 -5.824,3.363 0.278,0.278 0 0 0 0.1,0.38 0.283,0.283 0 0 0 0.14,0.038 0.277,0.277 0 0 0 0.24,-0.139 6.213,6.213 0 0 1 5.345,-3.085 0.278,0.278 0 0 0 0.277,-0.279 z m 6.906,2.308 a 0.278,0.278 0 0 0 -0.481,0.278 7.83,7.83 0 0 1 0,7.8 0.277,0.277 0 0 0 0.1,0.379 0.265,0.265 0 0 0 0.138,0.037 0.276,0.276 0 0 0 0.241,-0.139 8.358,8.358 0 0 0 0,-8.357 z m -13.894,8.08 a 0.278,0.278 0 1 0 -0.48,0.279 8.381,8.381 0 0 0 7.231,4.173 v 0 a 0.278,0.278 0 0 0 0,-0.555 7.854,7.854 0 0 1 -6.751,-3.897 z M 11.394,3.533 v 0 a 8.386,8.386 0 0 0 -7.234,4.175 0.278,0.278 0 0 0 0.1,0.38 0.272,0.272 0 0 0 0.139,0.038 0.279,0.279 0 0 0 0.241,-0.139 7.853,7.853 0 0 1 6.753,-3.9 0.278,0.278 0 0 0 0,-0.556 z m 8.533,3.41 a 0.278,0.278 0 1 0 -0.481,0.278 9.37,9.37 0 0 1 0,9.334 0.278,0.278 0 0 0 0.1,0.379 0.279,0.279 0 0 0 0.38,-0.1 9.9,9.9 0 0 0 0,-9.889 z M 11.5,21.444 A 9.4,9.4 0 0 1 3.42,16.778 0.27802967,0.27802967 0 0 0 2.939,17.057 9.926,9.926 0 0 0 11.5,22 v 0 a 0.278,0.278 0 0 0 0,-0.556 z M 3.268,7.222 A 9.4,9.4 0 0 1 11.351,2.556 0.278,0.278 0 1 0 11.351,2 V 2 A 9.923,9.923 0 0 0 2.787,6.943 0.277,0.277 0 0 0 2.887,7.322 0.272,0.272 0 0 0 3.026,7.36 0.28,0.28 0 0 0 3.268,7.222 Z M 14.509,7.168 A 0.7,0.7 0 0 0 14.217,7.104 v 0 A 0.7,0.7 0 0 0 13.774,7.263 L 10.945,9.6 H 8.486 a 0.7,0.7 0 0 0 -0.694,0.7 v 3.179 a 0.7,0.7 0 0 0 0.694,0.693 H 8.5 l 2.642,-0.047 2.609,2.369 a 0.7,0.7 0 0 0 0.465,0.179 v 0 a 0.694,0.694 0 0 0 0.694,-0.7 V 7.8 A 0.7,0.7 0 0 0 14.509,7.168 Z m -0.153,8.81 a 0.14,0.14 0 0 1 -0.08,0.126 0.152,0.152 0 0 1 -0.059,0.012 v 0 a 0.14,0.14 0 0 1 -0.092,-0.035 l -2.69,-2.442 a 0.277,0.277 0 0 0 -0.187,-0.072 v 0 L 8.499,13.616 H 8.488 A 0.143,0.143 0 0 1 8.347,13.477 V 10.3 a 0.139,0.139 0 0 1 0.139,-0.139 h 2.559 a 0.281,0.281 0 0 0 0.177,-0.064 l 2.9,-2.4 a 0.149,0.149 0 0 1 0.09,-0.033 0.16,0.16 0 0 1 0.06,0.013 0.139,0.139 0 0 1 0.08,0.126 z"], + "sonos":[0,0,24,24,"m 7.392,10.018 a 1.965,1.965 0 1 0 1.964,1.965 1.967,1.967 0 0 0 -1.964,-1.965 z m 1.244,1.965 a 1.246,1.246 0 1 1 -1.248,-1.261 1.255,1.255 0 0 1 1.248,1.261 z m 4.198,0.278 -2.369,-2.209 v 3.744 h 0.701 v -2.091 l 2.369,2.205 v -3.753 h -0.701 z m 8.746,-0.244 a 2.6,2.6 0 0 0 -0.8,-0.372 c -0.711,-0.228 -0.711,-0.4 -0.711,-0.493 0,-0.2 0.224,-0.411 0.6,-0.411 a 1.123,1.123 0 0 1 0.656,0.228 l 0.051,0.037 0.566,-0.382 -0.064,-0.072 a 1.656,1.656 0 0 0 -1.209,-0.528 1.433,1.433 0 0 0 -0.942,0.328 1.079,1.079 0 0 0 -0.382,0.806 0.989,0.989 0 0 0 0.42,0.806 v 0 a 2.588,2.588 0 0 0 0.8,0.373 c 0.711,0.228 0.711,0.4 0.711,0.493 0,0.2 -0.225,0.411 -0.6,0.411 a 1.121,1.121 0 0 1 -0.657,-0.228 l -0.051,-0.037 -0.565,0.382 0.063,0.072 a 1.657,1.657 0 0 0 1.21,0.528 1.425,1.425 0 0 0 0.941,-0.329 1.07,1.07 0 0 0 0.382,-0.8 0.981,0.981 0 0 0 -0.419,-0.812 z M 3.434,11.641 c -0.711,-0.227 -0.711,-0.4 -0.711,-0.492 0,-0.2 0.225,-0.411 0.6,-0.411 a 1.135,1.135 0 0 1 0.658,0.227 l 0.05,0.038 0.565,-0.382 -0.063,-0.073 A 1.659,1.659 0 0 0 3.32,10.018 1.43,1.43 0 0 0 2.379,10.346 1.074,1.074 0 0 0 2,11.152 a 0.978,0.978 0 0 0 0.42,0.805 2.623,2.623 0 0 0 0.8,0.373 c 0.711,0.224 0.711,0.4 0.711,0.493 0,0.2 -0.224,0.411 -0.6,0.411 A 1.123,1.123 0 0 1 2.675,13.006 l -0.051,-0.038 -0.566,0.383 0.064,0.072 a 1.66,1.66 0 0 0 1.209,0.528 1.428,1.428 0 0 0 0.942,-0.329 1.077,1.077 0 0 0 0.382,-0.8 0.979,0.979 0 0 0 -0.417,-0.8 2.611,2.611 0 0 0 -0.804,-0.381 z M 16.615,10.033 A 1.965,1.965 0 1 0 18.579,12 1.967,1.967 0 0 0 16.615,10.033 Z m 0,3.226 A 1.255,1.255 0 0 1 15.367,12 v 0 a 1.245,1.245 0 1 1 1.245,1.261 z"], + "starlink":[0,0,24,24,"M 4.915,11.91 C 5.31,11.644 5.766,11.358 6.189,11.11 L 4.513,9.91 H 2.191 Z m 5.926,4.780383 h 0.231 l -0.368,-0.634 0.341,-0.422 h -0.239 l -0.367,0.491 v -0.491 h -0.198 v 1.056 h 0.198 v -0.293 l 0.143,-0.177 z M 7.864,12.407 c -0.388,0.266 -0.79,0.565 -1.171,0.865 l 2.063,1.5 h 2.323 z M 22,7.1 C 9.435,7.864 3.622,13.244 2.3,14.518 l -0.266,0.259 h 2.35 C 10.581,8.553 19.445,7.337 22,7.108 Z M 9.076,15.641383 H 8.879 v 1.056 H 9.09 v -0.661 l 0.388,0.661 h 0.184 v -1.056 H 9.465 v 0.661 z m 0.5999996,1.055999 h -0.014 M 8.1090002,15.641383 h 0.198 v 1.056 h -0.198 z m 0.198,0.184617 v 0.007 M 7.585,16.697383 v -0.177 H 7.122 v -0.879 H 6.924 v 1.056 z M 7.1220002,15.833 V 15.826 M 6.332,16.131383 a 0.34,0.34 0 0 0 -0.048,-0.408 0.352,0.352 0 0 0 -0.245,-0.082 h -0.4 v 1.056 h 0.2 v -0.423 H 6 l 0.2,0.429 h 0.232 l -0.232,-0.463 a 0.352,0.352 0 0 0 0.132,-0.109 z m -0.2,-0.075 a 0.14,0.14 0 0 1 -0.109,0.041 v -0.007 h -0.19 v -0.282 h 0.19 a 0.144,0.144 0 0 1 0.109,0.041 0.14,0.14 0 0 1 0.041,0.1 0.144,0.144 0 0 1 -0.039,0.107 z m -1.251,0.429 0.061,0.205 h 0.211 l -0.374,-1.056 H 4.615 l -0.374,1.056 h 0.211 l 0.061,-0.205 z m -0.181,-0.572 0.13,0.409 H 4.568 Z m -0.766,-0.102 v -0.177 H 3.192 v 0.177 h 0.272 v 0.886 h 0.205 v -0.886 z m -1.682,0.014 a 0.176,0.176 0 0 1 0.116,-0.034 0.2,0.2 0 0 1 0.116,0.034 0.127,0.127 0 0 1 0.047,0.109 h 0.191 a 0.336,0.336 0 0 0 -0.1,-0.232 0.359,0.359 0 0 0 -0.245,-0.082 0.4,0.4 0 0 0 -0.259,0.089 0.3,0.3 0 0 0 -0.1,0.232 c 0,0.163 0.1,0.258 0.286,0.292 l 0.1,0.014 a 0.278,0.278 0 0 1 0.109,0.048 0.135,0.135 0 0 1 0.034,0.1 c 0,0.089 -0.055,0.136 -0.171,0.136 a 0.188,0.188 0 0 1 -0.136,-0.034 0.172,0.172 0 0 1 -0.054,-0.122 H 2 a 0.448,0.448 0 0 0 0.1,0.259 0.392,0.392 0 0 0 0.266,0.081 0.42,0.42 0 0 0 0.272,-0.081 0.3,0.3 0 0 0 0.1,-0.246 c 0,-0.17 -0.089,-0.265 -0.273,-0.3 l -0.109,-0.021 a 0.272,0.272 0 0 1 -0.109,-0.047 0.134,0.134 0 0 1 -0.034,-0.089 0.119,0.119 0 0 1 0.039,-0.106 z M 2,16.562 v 0"], + "std-floodlight":[0,0,24,24,"M 19.781,12.531 17.422,3.781 A 1.83,1.83 0 0 0 16.428,2.6 L 15.555,2.191 A 1.964,1.964 0 0 0 14.715,2 1.105,1.105 0 0 0 14.561,2.007 l -0.885,0.071 a 2.07,2.07 0 0 0 -0.645,0.16 L 4.487,5.987 A 0.523,0.523 0 0 0 4.194,6.574 L 6.608,16.9 a 0.656,0.656 0 0 0 0.639,0.513 0.57,0.57 0 0 0 0.187,-0.028 l 3.4,-1.026 1.536,-0.017 -0.082,0.124 a 1.5,1.5 0 0 0 0.4,2.093 l 0.059,0.04 -0.034,0.062 a 1.16,1.16 0 0 0 -0.14,0.56 V 22 h 3.514 V 21.78 L 16.056,19.226 A 1.263,1.263 0 0 0 15.64,18.307 l -0.064,-0.06 0.067,-0.057 a 0.708,0.708 0 0 0 0.272,-0.459 v 0 -0.015 a 3.194,3.194 0 0 0 0.022,-0.386 2.191,2.191 0 0 0 -0.653,-1.555 1.343,1.343 0 0 0 -0.16,-0.153 l -0.112,-0.094 1.522,-0.458 v -0.44 l 2.493,-0.756 a 1.106,1.106 0 0 0 0.754,-1.343 z m -0.774,1.211 -2.594,0.785 v 0.441 L 14.959,15.4 v 0.259 a 2.4,2.4 0 0 1 0.236,0.216 2.126,2.126 0 0 1 0.613,1.462 2.424,2.424 0 0 1 -0.025,0.375 0.738,0.738 0 0 1 -0.466,0.526 1.212,1.212 0 0 1 0.593,1 l 0.033,2.633 h -3.232 v -2.638 a 1.094,1.094 0 0 1 0.239,-0.676 1.369,1.369 0 0 1 0.106,-2.525 v -0.067 l -0.824,0.241 -1.428,0.016 -3.404,1.026 a 0.408,0.408 0 0 1 -0.148,0.019 0.531,0.531 0 0 1 -0.509,-0.4 L 4.324,6.538 A 0.372,0.372 0 0 1 4.544,6.11 l 8.544,-3.742 a 1.909,1.909 0 0 1 0.6,-0.148 l 0.88,-0.07 a 0.807,0.807 0 0 1 0.148,-0.009 1.873,1.873 0 0 1 0.788,0.173 l 0.873,0.409 a 1.708,1.708 0 0 1 0.923,1.1 l 2.359,8.75 a 0.964,0.964 0 0 1 -0.652,1.169 z M 15.187,18.354 15.159,18.326 15.1,18.3 15,18.251 15.076,18.175 a 0.089,0.089 0 0 1 0.064,-0.03 1.966,1.966 0 0 0 -0.822,-0.176 1.82,1.82 0 0 0 -1.259,0.47 l 0.04,0.016 0.111,0.041 -0.08,0.086 a 0.962,0.962 0 0 0 -0.27,0.655 v 2.476 h 2.915 l -0.03,-2.475 A 1.069,1.069 0 0 0 15.186,18.35 Z m -0.916,3.2 a 0.3,0.3 0 1 1 0.3,-0.3 0.3,0.3 0 0 1 -0.3,0.303 z M 14.715,2.3 A 0.755,0.755 0 0 0 14.587,2.307 L 13.7,2.378 A 1.735,1.735 0 0 0 13.151,2.513 L 4.605,6.254 A 0.213,0.213 0 0 0 4.478,6.503 l 2.413,10.33 a 0.372,0.372 0 0 0 0.356,0.277 0.289,0.289 0 0 0 0.1,-0.01 l 3.437,-1.035 h 0.011 l 1.428,-0.015 1,-0.294 v 0.391 l -0.055,0.017 a 1.116,1.116 0 0 0 -0.139,0.055 2.662,2.662 0 0 0 0.3,1.91 2.03,2.03 0 0 1 1.008,-0.258 2.084,2.084 0 0 1 0.524,0.066 2.612,2.612 0 0 1 -0.052,-2.361 v 0 -0.085 c -0.024,-0.007 -0.056,-0.017 -0.1,-0.026 L 14.419,15.398 16.26,14.85 V 14.41 L 17.952,13.898 14.843,2.3 c -0.043,0 -0.085,0 -0.128,0 z M 15.977,9.789 15.891,9.821 6.779,13.24 6.679,13.279 6.655,13.169 5.168,7.226 5.144,7.147 5.215,7.116 14.075,3 l 0.11,-0.047 0.039,0.11 1.73,6.637 z M 17.147,3.86 A 1.552,1.552 0 0 0 16.309,2.865 L 15.437,2.456 a 1.7,1.7 0 0 0 -0.485,-0.14 l 3.094,11.552 0.915,-0.277 a 0.806,0.806 0 0 0 0.545,-0.981 z m -3.924,14.326 a 2.138,2.138 0 0 1 -0.3,-0.717 3.07,3.07 0 0 1 -0.031,-1.187 1.212,1.212 0 0 0 0.078,2.111 1.573,1.573 0 0 1 0.253,-0.207 z m 1.609,-2.419 a 2.4,2.4 0 0 0 0.195,2.223 1.8,1.8 0 0 1 0.233,0.1 0.586,0.586 0 0 0 0.368,-0.4 2.5,2.5 0 0 0 0.023,-0.349 1.972,1.972 0 0 0 -0.567,-1.352 1.607,1.607 0 0 0 -0.234,-0.211 z"], + "synology-dsm":[0,0,24,24,"M 5.068,21.969 A 3.379,3.379 0 0 1 2.189,19.362 C 2.117,19.083 2.112,18.59 2.112,11.997 V 4.931 l 0.1,-0.365 A 3.373,3.373 0 0 1 4.678,2.1 L 5.043,2 H 12 c 6.387,0 6.98,0.006 7.243,0.074 a 3.388,3.388 0 0 1 2.368,1.965 c 0.3,0.705 0.277,0.138 0.277,7.958 v 7.066 l -0.1,0.365 A 3.383,3.383 0 0 1 19.35,21.9 L 19,22 H 12.175 C 8.421,22 5.223,21.99 5.068,21.97 Z m 7.157,-6.824 a 1.987,1.987 0 0 0 1.592,-1.52 1.713,1.713 0 0 0 -0.942,-1.895 11.749,11.749 0 0 0 -1.2,-0.371 c -1.253,-0.331 -1.487,-0.456 -1.557,-0.832 a 0.739,0.739 0 0 1 0.549,-0.843 2.864,2.864 0 0 1 1.044,-0.009 0.971,0.971 0 0 1 0.645,0.5 1.159,1.159 0 0 1 0.106,0.321 c 0,0.194 0.1,0.233 0.607,0.233 0.628,0 0.654,-0.019 0.58,-0.421 a 2.207,2.207 0 0 0 -2.39,-1.679 2.314,2.314 0 0 0 -2.196,1.122 1.354,1.354 0 0 0 -0.14,0.67 1.394,1.394 0 0 0 0.37,1.136 3.1,3.1 0 0 0 1.656,0.747 c 1.3,0.34 1.429,0.395 1.61,0.655 a 1.135,1.135 0 0 1 0.011,0.785 q -0.264,0.512 -1.227,0.5 a 1.594,1.594 0 0 1 -1.1,-0.338 1.245,1.245 0 0 1 -0.361,-0.7 c 0,-0.274 -0.039,-0.292 -0.609,-0.292 -0.641,0 -0.643,0 -0.574,0.446 0.192,1.239 1.3,1.972 2.845,1.883 a 4.388,4.388 0 0 0 0.685,-0.1 z m -6.14,-0.113 a 2.575,2.575 0 0 0 1.563,-1.068 4.3,4.3 0 0 0 0.141,-3.8 2.562,2.562 0 0 0 -1.1,-1.118 C 6.163,8.789 5.88,8.756 4.237,8.756 c -1.378,0 -1.441,0 -1.484,0.084 -0.063,0.117 -0.063,6.058 0,6.175 0.043,0.081 0.107,0.085 1.534,0.085 a 9.583,9.583 0 0 0 1.8,-0.071 z m -2.157,-3.1 V 9.766 H 4.62 a 2.9,2.9 0 0 1 1.449,0.219 c 0.649,0.329 0.887,0.852 0.887,1.947 A 2.155,2.155 0 0 1 6.465,13.616 C 6.086,13.995 5.708,14.097 4.684,14.097 H 3.928 Z m 11.873,3.1 c 0.015,-0.038 0.028,-1.057 0.03,-2.264 a 19.132,19.132 0 0 1 0.044,-2.107 c 0.023,0.048 0.392,1.062 0.82,2.253 l 0.778,2.166 0.466,0.012 c 0.444,0.012 0.469,0.008 0.53,-0.087 0.035,-0.055 0.4,-1.045 0.816,-2.2 0.416,-1.155 0.769,-2.13 0.79,-2.166 0.021,-0.036 0.038,0.88 0.04,2.144 0,1.215 0.018,2.234 0.037,2.265 0.019,0.031 0.17,0.053 0.557,0.044 L 21.231,15.08 V 8.78 L 20.487,8.769 a 4.934,4.934 0 0 0 -0.8,0.026 c -0.031,0.021 -0.415,1.079 -0.853,2.352 -0.438,1.273 -0.814,2.316 -0.834,2.316 -0.02,0 -0.4,-1.034 -0.847,-2.3 C 16.706,9.897 16.324,8.841 16.299,8.811 16.274,8.781 16.066,8.758 15.484,8.767 L 14.713,8.779 14.7,11.888 c -0.006,1.708 0,3.131 0.009,3.161 0.009,0.03 0.166,0.055 0.543,0.055 0.435,0 0.526,-0.012 0.548,-0.07 z"], + "tube lights":[0,0,24,24,"m 22,5.99 -0.171,-0.258 -0.8,0.532 -0.418,-0.622 0.8,-0.534 -0.171,-0.257 -0.8,0.534 -0.262,-0.391 -1.2,0.787 1.289,1.924 1.2,-0.787 -0.266,-0.4 z M 20.363,7.24 19.448,5.875 20.081,5.459 21,6.824 Z m -17.878,9.5 0.266,0.4 -0.752,0.5 0.171,0.258 0.753,-0.5 0.417,0.622 -0.755,0.5 0.171,0.258 0.756,-0.5 0.262,0.391 1.2,-0.787 -1.29,-1.924 z M 3.869,18.2 2.954,16.835 3.587,16.419 4.5,17.783 Z M 3.9399556,15.777396 18.752283,5.935364 20.034006,7.8643649 5.2216777,17.706397 Z"], //"":[0,0,24,24,""], } diff --git a/www/community/custom-brand-icons/custom-brand-icons.js.gz b/www/community/custom-brand-icons/custom-brand-icons.js.gz index 49ce8d47..dfa95ff8 100644 Binary files a/www/community/custom-brand-icons/custom-brand-icons.js.gz and b/www/community/custom-brand-icons/custom-brand-icons.js.gz differ diff --git a/www/community/custom-sidebar/custom-sidebar-json.js b/www/community/custom-sidebar/custom-sidebar-json.js index 383ad669..a2e9430c 100644 --- a/www/community/custom-sidebar/custom-sidebar-json.js +++ b/www/community/custom-sidebar/custom-sidebar-json.js @@ -1 +1 @@ -!function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=0;r--){var o=e[r];t.includes(o.item)||(n.unshift(o),t.push(o.item))}return n.sort((function(e,t){return!!e.bottom!=!!t.bottom?e.bottom?1:-1:typeof e.order===Se||typeof t.order===Se?e.order===t.order?0:typeof e.order===Se?1:-1:e.order-t.order}))},Ce=function(e,t){return new Promise((function(n){var r=0,o=function(){var i=e();i&&t(i)?n(i):++r<100?setTimeout(o,50):n(i)};o()}))},xe="Invalid configuration",Be=function(e){return typeof e===Se||(typeof e===Ne||Array.isArray(e)&&e.some((function(e){return typeof e===Ne})))},Ge=function(e){if(typeof e.order!==Se&&!Array.isArray(e.order))throw new SyntaxError("".concat(xe,', exceptions "order" property should be an array'));if(typeof e.title!==Se&&typeof e.title!==Ne)throw new SyntaxError("".concat(xe,', exceptions "title" property should be a string'));if(typeof e.sidebar_editable!==Se&&"boolean"!=typeof e.sidebar_editable&&typeof e.sidebar_editable!==Ne)throw new SyntaxError("".concat(xe,', exceptions "sidebar_editable" property should be a boolean or a template string'));if(typeof e.styles!==Se&&typeof e.styles!==Ne)throw new SyntaxError("".concat(xe,', exceptions "styles" property should be a string'));if(!Be(e.user))throw new SyntaxError("".concat(xe,', exceptions "user" property should be a string or an array of strings'));if(!Be(e.not_user))throw new SyntaxError("".concat(xe,', exceptions "not_user" property should be a string or an array of strings'));if(!Be(e.device))throw new SyntaxError("".concat(xe,', exceptions "device" property should be a string or an array of strings'));if(!Be(e.not_device))throw new SyntaxError("".concat(xe,', exceptions "not_device" property should be a string or an array of strings'));if(e.user&&e.not_user)throw new SyntaxError("".concat(xe,', exceptions "user" and "not_user" properties cannot be used together'));if(e.device&&e.not_device)throw new SyntaxError("".concat(xe,', exceptions "device" and "not_device" properties cannot be used together'));e.order&&e.order.forEach(Fe)},Fe=function(e){if(!e.item)throw new SyntaxError("".concat(xe,', every item in an "order" array should have an "item" property'));if(typeof e.item!==Ne)throw new SyntaxError("".concat(xe," in ").concat(e.item,", item property should be an string"));if(e.new_item){if(!e.href)throw new SyntaxError("".concat(xe," in ").concat(e.item,', if you set "new_item" as "true", "href" property is necessary'));if(typeof e.href!==Ne)throw new SyntaxError("".concat(xe," in ").concat(e.item,', "href" property should be a string'));if(!e.icon)throw new SyntaxError("".concat(xe," in ").concat(e.item,', if you set "new_item" as "true", "icon" property is necessary'));if(typeof e.icon!==Ne)throw new SyntaxError("".concat(xe," in ").concat(e.item,', "icon" property should be a string'))}},We=function(e){if(typeof e.order===Se)throw new SyntaxError("".concat(xe,', "order" parameter is required'));if(!Array.isArray(e.order))throw new SyntaxError("".concat(xe,', "order" parameter should be an array'));e.order.forEach(Fe),function(e){if(typeof e!==Se){if(!Array.isArray(e))throw new SyntaxError("".concat(xe,", exceptions should be an array"));e.forEach(Ge)}}(e.exceptions)},je=function(){return t(void 0,void 0,void 0,(function(){var e,t;return n(this,(function(n){return e="".concat(ye,": JSON config file not found."),t="Make sure you have valid config in /config/www/".concat(be,".json file."),[2,new Promise((function(n){fetch("".concat(Te,".json?hash=").concat(Math.random().toString(16).slice(2))).then((function(r){if(!r.ok)throw Error("".concat(e,"\n").concat(t));r.json().then((function(e){var r;(null===(r=e.id)||void 0===r?void 0:r.startsWith("example_json"))&&console.warn("".concat(ye,": You seem to be using the example configuration.\n").concat(t)),We(e),n(e)})).catch((function(e){throw Error("".concat(ye,": ").concat(e.message))}))})).catch((function(){throw Error("".concat(e,"\n").concat(t))}))}))]}))}))},ke=function(){function o(){var e=this,t=new ae;t.addEventListener(x.ON_LISTEN,(function(t){e._homeAssistant=t.detail.HOME_ASSISTANT,e._main=t.detail.HOME_ASSISTANT_MAIN,e._sidebar=t.detail.HA_SIDEBAR,e._partialPanelResolver=t.detail.PARTIAL_PANEL_RESOLVER}),{once:!0}),t.addEventListener(x.ON_PANEL_LOAD,this._panelLoaded.bind(this)),t.listen(),this._items=[],this._sidebarScroll=0,this._isSidebarEditable=void 0,this._itemTouchedBinded=this._itemTouched.bind(this),this._mouseEnterBinded=this._mouseEnter.bind(this),this._mouseLeaveBinded=this._mouseLeave.bind(this),this._configPromise=je(),this._process()}return o.prototype._getConfigWithExceptions=function(){return t(this,void 0,void 0,(function(){var t,o,i=this;return n(this,(function(n){switch(n.label){case 0:return t=this._getCurrentDevice(),o=this,[4,this._configPromise.then((function(n){return function(t,n,o){var i,a,s;if(o.exceptions){var c=o.exceptions.filter((function(e){return e.user&&He(e.user).includes(t)||e.not_user&&!He(e.not_user).includes(t)||e.device&&He(e.device).some((function(e){return n.includes(e)}))||e.not_device&&He(e.not_device).every((function(e){return!n.includes(e)}))})),u=c.length?c[c.length-1]:null,l=c.flatMap((function(e){return e.order||[]})),_=c.every((function(e){return!!e.extend_from_base})),d={},h=_?null!==(i=null==u?void 0:u.title)&&void 0!==i?i:o.title:u.title,f=_?null!==(a=null==u?void 0:u.sidebar_editable)&&void 0!==a?a:o.sidebar_editable:u.sidebar_editable,p=_?null!==(s=null==u?void 0:u.styles)&&void 0!==s?s:o.styles:u.styles;return h&&(d.title=h),typeof f!==Se&&(d.sidebar_editable=f),p&&(d.styles=p),e(e({},d),_?{order:Me(r(r([],o.order,!0),l,!0))}:{order:Me(l)})}return e(e({},o),{order:Me(o.order)})}(i._ha.hass.user.name.toLocaleLowerCase(),t,n)}))];case 1:return o._configWithExceptions=n.sent(),[2]}}))}))},o.prototype._getElements=function(){return t(this,void 0,void 0,(function(){var e,t,r;return n(this,(function(n){switch(n.label){case 0:return[4,this._sidebar.selector.$.query(pe.PAPER_LISTBOX).element];case 1:return e=n.sent(),[4,Ce((function(){return e.querySelector(":scope > ".concat(Ee.SPACER))}),(function(e){return!!e}))];case 2:return t=n.sent(),[4,Ce((function(){return e.querySelectorAll(":scope > ".concat(Ee.ITEM))}),(function(e){return Array.from(e).every((function(e){return e.querySelector(Ee.ITEM_TEXT).innerText.trim().length>0}))}))];case 3:return r=n.sent(),[2,[e,r,t]]}}))}))},o.prototype._getCurrentDevice=function(){return navigator.userAgent.toLowerCase()},o.prototype._buildNewItem=function(e){var t=document.createElement("a");return t.href=e.href,t.target=e.target||"",t.tabIndex=-1,t.setAttribute(ve.ROLE,"option"),t.setAttribute(ve.PANEL,e.item.toLowerCase().replace(/\s+/,"-")),t.setAttribute(ve.ARIA_SELECTED,"false"),t.innerHTML='\n \n \n \n \n \n ').concat(e.item,'\n \n \n \n ').trim(),t},o.prototype._updateIcon=function(e,t){var n=e.querySelector([pe.HA_SVG_ICON,pe.HA_ICON].join(","));if(n){var r=document.createElement(pe.HA_ICON);r.setAttribute("icon",t),r.setAttribute("slot","item-icon"),n.replaceWith(r)}},o.prototype._subscribeTitle=function(){var e=this;this._sidebar.selector.$.query(Ee.TITLE).element.then((function(t){e._configWithExceptions.title&&e._subscribeTemplate(t,e._configWithExceptions.title,(function(e){t.innerHTML=e}))}))},o.prototype._subscribeSideBarEdition=function(){var e=this,t=function(e){e.preventDefault(),e.stopImmediatePropagation()},n=function(e,n){e.removeEventListener(Oe.HASS_EDIT_SIDEBAR,t,!0),n.removeAttribute(Le)},r=function(e,n){e.removeEventListener(Oe.HASS_EDIT_SIDEBAR,t,!0),e.addEventListener(Oe.HASS_EDIT_SIDEBAR,t,!0),n.setAttribute(Le,"")};Promise.all([this._main.element,this._sidebar.selector.$.query(Ee.MENU).element]).then((function(t){var o=t[0],i=t[1];"boolean"==typeof e._configWithExceptions.sidebar_editable&&(e._isSidebarEditable=e._configWithExceptions.sidebar_editable,e._isSidebarEditable||r(o,i)),"string"==typeof e._configWithExceptions.sidebar_editable&&e._subscribeTemplate(document.createElement("div"),e._configWithExceptions.sidebar_editable,(function(t){"true"===t||"false"===t?(e._isSidebarEditable=!("false"===t),e._isSidebarEditable?n(o,i):r(o,i)):(e._isSidebarEditable=void 0,n(o,i)),e._checkProfileEditableButton()}))}))},o.prototype._subscribeName=function(e,t){this._subscribeTemplate(e.querySelector(Ee.ITEM_TEXT),t)},o.prototype._subscribeNotification=function(e,t){var n=e.querySelector("".concat(Ee.NOTIFICATION_BADGE,":not(").concat(Ee.NOTIFICATIONS_BADGE_COLLAPSED,")")),r=e.querySelector(Ee.NOTIFICATIONS_BADGE_COLLAPSED);n||((n=document.createElement("span")).classList.add(Ae.NOTIFICATIONS_BADGE),e.querySelector(pe.PAPER_ICON_ITEM).appendChild(n)),r||((r=document.createElement("span")).classList.add(Ae.NOTIFICATIONS_BADGE,Ae.NOTIFICATIONS_BADGE_COLLAPSED),e.querySelector("".concat(pe.HA_SVG_ICON,", ").concat(pe.HA_ICON)).after(r));this._subscribeTemplate(n,t,(function(t){t.length?(n.innerHTML=t,r.innerHTML=t,e.setAttribute(ve.WITH_NOTIFICATION,"true")):(n.innerHTML="",r.innerHTML="",e.removeAttribute(ve.WITH_NOTIFICATION))}))},o.prototype._subscribeTemplate=function(e,t,n){e.innerHTML="",Re.test(t)?this._createJsTemplateSubscription(e,t.replace(Re,"$1"),n):De.test(t)?this._createJinjaTemplateSubscription(e,t,n):n?n(t):e.innerHTML=t},o.prototype._createJsTemplateSubscription=function(e,t,n){this._renderer.trackTemplate(t,(function(t){var r="";("string"==typeof t||"number"==typeof t&&!Number.isNaN(t)||"boolean"==typeof t||"object"==typeof t)&&(r="string"==typeof t?t.trim():"number"==typeof t||"boolean"==typeof t?t.toString():JSON.stringify(t)),n?n(r):e.innerHTML=r}))},o.prototype._createJinjaTemplateSubscription=function(e,t,n){var r=this;window.hassConnection.then((function(o){o.conn.subscribeMessage((function(t){n?n("".concat(t.result)):e.innerHTML="".concat(t.result)}),{type:Oe.RENDER_TEMPLATE,template:t,variables:{user_name:r._ha.hass.user.name,user_is_admin:r._ha.hass.user.is_admin,user_is_owner:r._ha.hass.user.is_owner,user_agent:window.navigator.userAgent}})}))},o.prototype._focusItemByKeyboard=function(e,t){for(var n,r=this._items.length-1,o=e.querySelector("\n ".concat(Ee.SCOPE," > ").concat(Ee.ITEM,":not(.").concat(Ae.IRON_SELECTED,"):focus,\n ").concat(Ee.SCOPE," > ").concat(Ee.ITEM,":focus,\n ").concat(Ee.SCOPE," > ").concat(Ee.ITEM,":has(> ").concat(pe.PAPER_ICON_ITEM,":focus)\n ").trim()),i=0,a=0,s=Object.entries(this._items);a0?i-1:r,this._items[n].element.focus(),this._items[n].element.tabIndex=0},o.prototype._focusItemByTab=function(e,t,n){var r=this._items.length-1;if(t.nodeName===Ie.A){var o=t,i=this._items.findIndex((function(e){return e.element===o})),a=NaN;if(n&&i0&&(a=i-1),Number.isNaN(a))if(n)e.querySelector(Ee.SIDEBAR_NOTIFICATIONS).focus();else e.querySelector(pe.HA_ICON_BUTTON).focus();else this._items[a].element.querySelector(pe.PAPER_ICON_ITEM).focus()}else{if(n)e.querySelector("".concat(Ee.PROFILE," > ").concat(pe.PAPER_ICON_ITEM)).focus();else this._items[r].element.querySelector(pe.PAPER_ICON_ITEM).focus()}},o.prototype._getActivePaperIconElement=function(e){void 0===e&&(e=document);var t=e.activeElement;return t?t instanceof HTMLElement&&(t.nodeName===Ie.PAPER_ICON_ITEM||t.nodeName===Ie.A&&"option"===t.getAttribute("role"))?t:t.shadowRoot&&we.includes(t.nodeName)?this._getActivePaperIconElement(t.shadowRoot):null:null},o.prototype._processSidebar=function(){var e=this;this._sidebar.selector.$.element.then((function(t){var n,r,o,i,a=t.querySelector(pe.PAPER_LISTBOX);a.addEventListener(Oe.KEYDOWN,(function(t){t.key!==me.ARROW_DOWN&&t.key!==me.ARROW_UP||(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByKeyboard(a,t.key===me.ARROW_DOWN))}),!0),window.addEventListener(Oe.KEYDOWN,(function(n){if(n.key===me.TAB){var r=e._getActivePaperIconElement();if(r)if(r.nodeName===Ie.PAPER_ICON_ITEM){var o=r.parentElement;o.getAttribute(ve.HREF)!==ge&&(n.preventDefault(),n.stopImmediatePropagation(),e._focusItemByTab(t,o,!n.shiftKey))}else r.getAttribute(ve.HREF)!==ge&&(n.preventDefault(),n.stopImmediatePropagation(),e._focusItemByTab(t,r,!n.shiftKey))}}),!0),n="\n ".concat(pe.PAPER_LISTBOX," > ").concat(Ee.ITEM," > ").concat(pe.PAPER_ICON_ITEM," > ").concat(Ee.NOTIFICATION_BADGE,":not(").concat(Ee.NOTIFICATIONS_BADGE_COLLAPSED,") {\n border-radius: 20px;\n left: calc(var(--app-drawer-width, 248px) - 22px);\n max-width: 80px;\n overflow: hidden;\n padding: 0px 5px;\n transform: translateX(-100%);\n text-overflow: ellipsis;\n text-wrap: nowrap; \n }\n ").concat(pe.PAPER_LISTBOX," > ").concat(Ee.ITEM," > ").concat(pe.PAPER_ICON_ITEM," > ").concat(Ee.NOTIFICATIONS_BADGE_COLLAPSED," {\n bottom: 14px;\n font-size: 0.65em;\n left: 26px;\n position: absolute; \n }\n :host([expanded]) ").concat(pe.PAPER_LISTBOX," > ").concat(Ee.ITEM," > ").concat(pe.PAPER_ICON_ITEM," > ").concat(Ee.NOTIFICATIONS_BADGE_COLLAPSED," {\n opacity: 0;\n }\n ").concat(pe.PAPER_LISTBOX," > ").concat(Ee.ITEM,"[").concat(ve.WITH_NOTIFICATION,"] > ").concat(pe.PAPER_ICON_ITEM," > ").concat(Ee.ITEM_TEXT," {\n max-width: calc(100% - 86px);\n }\n ").concat(Ee.MENU,"[").concat(Le,"] {\n pointer-events: none;\n }\n ").concat(Ee.MENU,"[").concat(Le,"] > ").concat(Ee.HA_ICON_BUTTON," {\n pointer-events: all;\n }\n ").concat(e._configWithExceptions.styles||"","\n ").trim(),o=function(e){return e.host.localName}(r=t),(i=document.createElement("style")).setAttribute("id","".concat(ye,"_").concat(o)),r.appendChild(i),i.innerHTML=n.replace(Pe,"$2")}))},o.prototype._rearrange=function(){var t=this;this._getElements().then((function(n){var r=t._configWithExceptions.order,o=n[0],i=n[1],a=n[2],s=0,c=!1,u=Array.from(i),l=new Set,_=r.reduce((function(t,n){var r=n.item,o=n.match,i=n.exact,a=n.new_item,s=r.toLocaleLowerCase(),c=a?void 0:u.find((function(e){var t=o===de.DATA_PANEL?e.getAttribute(ve.PANEL):o===de.HREF?e.getAttribute(ve.HREF):e.querySelector(Ee.ITEM_TEXT).innerText.trim();return!((!i||r!==t)&&(i||!(null==t?void 0:t.toLowerCase().includes(s))))&&(!l.has(e)&&(l.add(e),!0))}));return c&&c.setAttribute(ve.PROCESSED,"true"),(a||c)&&t.push(e(e({},n),{element:c})),a||c||console.warn("".concat(ye,": you have an order item in your configuration that didn't match any sidebar item: \"").concat(r,'"')),t}),[]),d=function(){c||(u.forEach((function(e){e.hasAttribute(ve.PROCESSED)||(e.style.order="".concat(s))})),s++,a.style.order="".concat(s),s++,c=!0)};_.forEach((function(e){if(e.bottom&&d(),e.new_item&&!e.hide){var n=t._buildNewItem(e);n.style.order="".concat(s),o.appendChild(n),e.element=n}else if(e.element){var r=e.element;r.style.order="".concat(s),e.hide&&(r.style.display="none"),e.icon&&t._updateIcon(r,e.icon),e.href&&(r.href=e.href),e.target&&(r.target=e.target)}e.name&&t._subscribeName(e.element,e.name),e.notification&&t._subscribeNotification(e.element,e.notification),e.hide||(e.new_item&&(e.element.addEventListener(Oe.MOUSEENTER,t._mouseEnterBinded),e.element.addEventListener(Oe.MOUSELEAVE,t._mouseLeaveBinded)),e.element.addEventListener(Oe.MOUSEDOWN,t._itemTouchedBinded),e.element.addEventListener(Oe.KEYDOWN,(function(e){e.key===me.ENTER&&t._itemTouchedBinded()})),t._items.push(e)),s++})),d(),t._panelLoaded()}))},o.prototype._itemTouched=function(){return t(this,void 0,void 0,(function(){var e=this;return n(this,(function(t){return this._sidebar.selector.$.query(pe.PAPER_LISTBOX).element.then((function(t){e._sidebarScroll=t.scrollTop})),[2]}))}))},o.prototype._mouseEnter=function(e){this._sidebar.element.then((function(t){t.alwaysExpand||(t._mouseLeaveTimeout&&(clearTimeout(t._mouseLeaveTimeout),t._mouseLeaveTimeout=void 0),t._showTooltip(e.currentTarget))}))},o.prototype._mouseLeave=function(){return t(this,void 0,void 0,(function(){return n(this,(function(e){return this._sidebar.element.then((function(e){e._mouseLeaveTimeout&&clearTimeout(e._mouseLeaveTimeout),e._mouseLeaveTimeout=window.setTimeout((function(){e._hideTooltip()}),500)})),[2]}))}))},o.prototype._checkProfileEditableButton=function(){return t(this,void 0,void 0,(function(){var e,t;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),"/profile/general"!==e.__route.path?[3,3]:[4,this._partialPanelResolver.selector.query(Ee.EDIT_SIDEBAR_BUTTON).element];case 2:(t=n.sent())&&(!1===this._isSidebarEditable?t.setAttribute(ve.DISABLED,""):t.removeAttribute(ve.DISABLED)),n.label=3;case 3:return[2]}}))}))},o.prototype._panelLoaded=function(){return t(this,void 0,void 0,(function(){var e,t,r,o,i;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),t=e.__route.path,[4,this._sidebar.selector.$.query(pe.PAPER_LISTBOX).element];case 2:return r=n.sent(),o=r.querySelector(["".concat(Ee.SCOPE," > ").concat(Ee.ITEM,'[href="').concat(t,'"]'),"".concat(Ee.SCOPE," > ").concat(Ee.ITEM,'[href="').concat(t,'/dashboard"]')].join(",")),i=o?null:this._items.reduce((function(e,n){var r=n.element,o=r.getAttribute(ve.HREF);return t.startsWith(o)&&(!e||o.length>e.getAttribute(ve.HREF).length)&&(e=r),e}),null),this._items.forEach((function(e){var t=e.element,n=o&&o===t||!o&&i===t;t.classList.toggle(Ae.IRON_SELECTED,n),t.setAttribute(ve.ARIA_SELECTED,"".concat(n))})),r.scrollTop!==this._sidebarScroll&&(r.scrollTop=this._sidebarScroll),this._checkProfileEditableButton(),[2]}}))}))},o.prototype._process=function(){var e=this;this._homeAssistant.element.then((function(t){e._ha=t,new fe(e._ha).getRenderer().then((function(t){e._renderer=t,e._getConfigWithExceptions().then((function(){e._processSidebar(),e._subscribeTitle(),e._subscribeSideBarEdition(),e._rearrange()}))}))}))},o}();window.CustomSidebar||(console.info("%c≡ ".concat(ye.toUpperCase()," (JSON)%cv").concat("5.1.0"),"font-weight: bold; background: #EEEEEE; color: #666666; padding: 2px 5px;","font-weight: normal; background: #E87A24; color: #FFFFFF; padding: 2px 5px"),window.CustomSidebar=new ke)}(); +!function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,o=arguments.length;n0&&r[r.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]0&&r[r.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1] ha-menu-button",e.EDIT_SIDEBAR_BUTTON="ha-panel-profile ha-profile-section-general$ ha-settings-row mwc-button",e.SIDEBAR_NOTIFICATIONS=".notifications",e.PROFILE=".profile",e.MENU=".menu",e.DIVIDER=".divider",e.HA_ICON_BUTTON="ha-icon-button"}(Ie||(Ie={})),function(e){e.SIDEBAR_ICON_COLOR="--sidebar-icon-color",e.SIDEBAR_SELECTED_ICON_COLOR="--sidebar-selected-icon-color",e.SIDEBAR_TEXT_COLOR="--sidebar-text-color",e.SIDEBAR_SELECTED_TEXT_COLOR="--sidebar-selected-text-color",e.SIDEBAR_BACKGROUND_COLOR="--sidebar-background-color",e.SIDEBAR_TITLE_COLOR="--sidebar-menu-button-text-color",e.SIDEBAR_BUTTON_COLOR="--sidebar-icon-color",e.SIDEBAR_MENU_BUTTON_BACKGROUND_COLOR="--sidebar-menu-button-background-color",e.TEXT_ACCENT_COLOR="--text-accent-color",e.TEXT_PRIMARY_COLOR="--text-primary-color",e.PRIMARY_BACKGROUND_COLOR="--primary-background-color",e.PRIMARY_TEXT_COLOR="--primary-text-color",e.DIVIDER_COLOR="--divider-color",e.CUSTOM_SIDEBAR_BACKGROUND="--custom-sidebar-background",e.CUSTOM_SIDEBAR_MENU_BACKGROUND="--custom-sidebar-menu-background",e.CUSTOM_SIDEBAR_TITLE_COLOR="--custom-sidebar-title-color",e.CUSTOM_SIDEBAR_BUTTON_COLOR="--custom-sidebar-button-color",e.CUSTOM_SIDEBAR_TEXT_COLOR="--custom-sidebar-text-color",e.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR="--custom-sidebar-selected-text-color",e.CUSTOM_SIDEBAR_ICON_COLOR="--custom-sidebar-icon-color",e.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR="--custom-sidebar-selected-icon-color",e.CUSTOM_SIDEBAR_SELECTION_COLOR="--custom-sidebar-selection-color",e.CUSTOM_SIDEBAR_INFO_COLOR="--custom-sidebar-info-color",e.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR="--custom-sidebar-selected-info-color",e.CUSTOM_SIDEBAR_NOTIFICATION_COLOR="--custom-sidebar-notification-color",e.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR="--custom-sidebar-notification-text-color",e.CUSTOM_SIDEBAR_SELECTION_OPACITY="--custom-sidebar-selection-opacity",e.CUSTOM_SIDEBAR_DIVIDER_COLOR="--custom-sidebar-divider-color"}(Te||(Te={})),function(e){e.NOTIFICATIONS_BADGE="notification-badge",e.NOTIFICATIONS_BADGE_COLLAPSED="notification-badge-collapsed",e.IRON_SELECTED="iron-selected"}(ve||(ve={})),function(e){e.PANEL="data-panel",e.ROLE="role",e.PROCESSED="data-processed",e.WITH_NOTIFICATION="data-notification",e.ARIA_SELECTED="aria-selected",e.ARIA_DISABLED="aria-disabled",e.DISABLED="disabled",e.HREF="href",e.STYLE="style"}(Se||(Se={})),function(e){e.MOUSEDOWN="mousedown",e.MOUSEENTER="mouseenter",e.MOUSELEAVE="mouseleave",e.KEYDOWN="keydown",e.HASS_EDIT_SIDEBAR="hass-edit-sidebar",e.RENDER_TEMPLATE="render_template"}(Re||(Re={})),function(e){e.ARROW_DOWN="ArrowDown",e.ARROW_UP="ArrowUp",e.ENTER="Enter",e.TAB="Tab"}(me||(me={})),function(e){e.PAPER_ICON_ITEM="PAPER-ICON-ITEM",e.A="A"}(Ne||(Ne={}));var Pe=["HOME-ASSISTANT","HOME-ASSISTANT-MAIN","HA-SIDEBAR"],Be=((fe={})[de.HIDDEN]=Ee.ALWAYS_HIDDEN,fe[de.NARROW]=Ee.AUTO,fe[de.EXTENDED]=Ee.DOCKED,fe),He="/profile",xe=/^\s*\[\[\[([\s\S]+)\]\]\]\s*$/,Ue=/\{\{[\s\S]*\}\}|\{%[\s\S]*%\}/,Ge=/(\s*)([\w-]+\s*:\s*[^;]+;?|\})(\s*)/g,Fe=["title","sidebar_editable","sidebar_mode","sidebar_background","title_color","sidebar_button_color","menu_background","styles","icon_color","icon_color_selected","text_color","text_color_selected","selection_color","info_color","info_color_selected","notification_color","notification_text_color","selection_opacity","divider_color"],Xe=function(e){return Array.isArray(e)?e.map((function(e){return e.toLocaleLowerCase()})):e.toLowerCase().split(/\s*,\s*/)},ke=function(e){var t=new Map;return e.forEach((function(e){t.set(e.item,e)})),Array.from(t.values()).sort((function(e,t){return!!e.bottom!=!!t.bottom?e.bottom?1:-1:typeof e.order===ge||typeof t.order===ge?e.order===t.order?0:typeof e.order===ge?1:-1:e.order-t.order}))},We=function(e,t){return new Promise((function(n){var o=0,r=function(){var i=e();i&&t(i)?n(i):++o<100?setTimeout(r,50):n(i)};r()}))},je=function(t,n,r){if(r.exceptions){var i=r.exceptions.filter((function(e){return e.user&&Xe(e.user).includes(t)||e.not_user&&!Xe(e.not_user).includes(t)||e.device&&Xe(e.device).some((function(e){return n.includes(e)}))||e.not_device&&!Xe(e.not_device).some((function(e){return n.includes(e)}))})),c=i.length?i[i.length-1]:null,a=i.flatMap((function(e){return e.order||[]})),s=!i.some((function(e){return!e.extend_from_base})),_=function(e,t,n){var o={};return Fe.forEach((function(r){var i=null==t?void 0:t[r],c=n?null!=i?i:e[r]:i;typeof c!==ge&&(o[r]=c)})),o}(r,c,s);return e(e({},_),s?{order:ke(o(o([],r.order||[],!0),a,!0))}:{order:ke(a)})}return e(e({},r),{order:ke(r.order||[])})},Ve=function(){return new Promise((function(e){setTimeout(e,1)}))},qe="Invalid configuration",Ke=function(e,t,n){t.forEach((function(t){if(typeof e[t]!==ge&&typeof e[t]!==Ce)throw new SyntaxError("".concat(n,' "').concat(String(t),'" property should be a string'))}))},Ye=function(e){return typeof e===ge||(typeof e===Ce||Array.isArray(e)&&e.some((function(e){return typeof e===Ce})))},$e=function(e){var t,n,o;if(Ke(e,["title","icon_color","icon_color_selected","text_color","text_color_selected","selection_color","info_color","info_color_selected","notification_color","notification_text_color","sidebar_background","title_color","sidebar_button_color","menu_background","divider_color","styles"],"".concat(qe,", exceptions")),n=[["user",e.user],["not_user",e.not_user],["device",e.device],["not_device",e.not_device]],o="".concat(qe,", exceptions"),n.forEach((function(e){var t=e[0],n=e[1];if(!Ye(n))throw new SyntaxError("".concat(o,' "').concat(t,'" property should be a string or an array of strings'))})),typeof e.order!==ge&&!Array.isArray(e.order))throw new SyntaxError("".concat(qe,', exceptions "order" property should be an array'));if(typeof e.sidebar_editable!==ge&&typeof e.sidebar_editable!==De&&typeof e.sidebar_editable!==Ce)throw new SyntaxError("".concat(qe,', exceptions "sidebar_editable" property should be a boolean or a template string'));if(typeof e.sidebar_mode!==ge&&!(e.sidebar_mode in Be))throw new SyntaxError("".concat(qe,', exceptions "sidebar_mode" property should be ').concat(de.HIDDEN,", ").concat(de.NARROW," or ").concat(de.EXTENDED));if(typeof e.selection_opacity!==ge&&typeof e.selection_opacity!==we&&typeof e.selection_opacity!==Ce)throw new SyntaxError("".concat(qe,', exceptions "selection_opacity" property should be a number or a template string'));if(e.user&&e.not_user)throw new SyntaxError("".concat(qe,', exceptions "user" and "not_user" properties cannot be used together'));if(e.device&&e.not_device)throw new SyntaxError("".concat(qe,', exceptions "device" and "not_device" properties cannot be used together'));null===(t=e.order)||void 0===t||t.forEach(Je)},Je=function(e){if(!e.item)throw new SyntaxError("".concat(qe,', every item in an "order" array should have an "item" property'));if(Ke(e,["item","info","icon_color","icon_color_selected","text_color","text_color_selected","selection_color","info_color","info_color_selected","notification_color","notification_text_color"],"".concat(qe," in ").concat(e.item,",")),typeof e.selection_opacity!==ge&&typeof e.selection_opacity!==we&&typeof e.selection_opacity!==Ce)throw new SyntaxError("".concat(qe," in ").concat(e.item,', "selection_opacity" property should be a number or a template string'));if(e.new_item){if(Ke(e,["href","icon"],"".concat(qe," in ").concat(e.item,",")),!e.href)throw new SyntaxError("".concat(qe," in ").concat(e.item,', if you set "new_item" as "true", "href" property is necessary'));if(!e.icon)throw new SyntaxError("".concat(qe," in ").concat(e.item,', if you set "new_item" as "true", "icon" property is necessary'))}},ze=function(e){var t;if(Ke(e,["title","icon_color","icon_color_selected","text_color","text_color_selected","selection_color","info_color","info_color_selected","notification_color","notification_text_color","sidebar_background","title_color","sidebar_button_color","menu_background","divider_color","styles"],"".concat(qe,",")),typeof e.selection_opacity!==ge&&typeof e.selection_opacity!==we&&typeof e.selection_opacity!==Ce)throw new SyntaxError("".concat(qe,', "selection_opacity" property should be a number or a template string'));if(typeof e.sidebar_editable!==ge&&typeof e.sidebar_editable!==De&&typeof e.sidebar_editable!==Ce)throw new SyntaxError("".concat(qe,', "sidebar_editable" property should be a boolean or a template string'));if(typeof e.sidebar_mode!==ge&&!(e.sidebar_mode in Be))throw new SyntaxError("".concat(qe,', "sidebar_mode" property should be ').concat(de.HIDDEN,", ").concat(de.NARROW," or ").concat(de.EXTENDED));if(typeof e.order!==ge&&!Array.isArray(e.order))throw new SyntaxError("".concat(qe,', "order" property should be an array'));null===(t=e.order)||void 0===t||t.forEach(Je),function(e){if(typeof e!==ge){if(!Array.isArray(e))throw new SyntaxError("".concat(qe,", exceptions should be an array"));e.forEach($e)}}(e.exceptions)},Qe=function(){return t(void 0,void 0,void 0,(function(){var e,t;return n(this,(function(n){return e="".concat(be,": JSON config file not found."),t="Make sure you have valid config in /config/www/".concat(ye,".json file."),[2,new Promise((function(n){fetch("".concat(Le,".json?hash=").concat(Math.random().toString(16).slice(2))).then((function(o){if(!o.ok)throw Error("".concat(e,"\n").concat(t));o.json().then((function(e){var o;(null===(o=e.id)||void 0===o?void 0:o.startsWith("example_json"))&&console.warn("".concat(be,": You seem to be using the example configuration.\n").concat(t)),ze(e),n(e)})).catch((function(e){throw Error("".concat(be,": ").concat(e.message))}))})).catch((function(){throw Error("".concat(e,"\n").concat(t))}))}))]}))}))},Ze=function(){function o(){var e=this,t=new ce;t.addEventListener(H.ON_LISTEN,(function(t){e._homeAssistant=t.detail.HOME_ASSISTANT,e._main=t.detail.HOME_ASSISTANT_MAIN,e._sidebar=t.detail.HA_SIDEBAR,e._partialPanelResolver=t.detail.PARTIAL_PANEL_RESOLVER}),{once:!0}),t.addEventListener(H.ON_PANEL_LOAD,this._panelLoaded.bind(this)),t.listen(),this._items=[],this._sidebarScroll=0,this._isSidebarEditable=void 0,this._itemTouchedBinded=this._itemTouched.bind(this),this._mouseEnterBinded=this._mouseEnter.bind(this),this._mouseLeaveBinded=this._mouseLeave.bind(this),this._configPromise=Qe(),this._process()}return o.prototype._getConfigWithExceptions=function(){return t(this,void 0,void 0,(function(){var e,t,o=this;return n(this,(function(n){switch(n.label){case 0:return e=this._getCurrentDevice(),t=this,[4,this._configPromise.then((function(t){return je(o._ha.hass.user.name.toLocaleLowerCase(),e,t)}))];case 1:return t._configWithExceptions=n.sent(),[2]}}))}))},o.prototype._getElements=function(){return t(this,void 0,void 0,(function(){var e,t,o;return n(this,(function(n){switch(n.label){case 0:return[4,this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element];case 1:return e=n.sent(),[4,We((function(){return e.querySelector(":scope > ".concat(Ie.SPACER))}),(function(e){return!!e}))];case 2:return t=n.sent(),[4,We((function(){return e.querySelectorAll(":scope > ".concat(Ie.ITEM))}),(function(e){return Array.from(e).every((function(e){return e.querySelector(Ie.ITEM_TEXT).innerText.trim().length>0}))}))];case 3:return o=n.sent(),[2,[e,o,t]]}}))}))},o.prototype._getCurrentDevice=function(){return navigator.userAgent.toLowerCase()},o.prototype._getIcon=function(e){return e.querySelector([Ae.HA_SVG_ICON,Ae.HA_ICON].join(","))},o.prototype._buildNewItem=function(e){var t=document.createElement("a");return t.href=e.href,t.target=e.target||"",t.tabIndex=-1,t.setAttribute(Se.ROLE,"option"),t.setAttribute(Se.PANEL,e.item.toLowerCase().replace(/\s+/,"-")),t.setAttribute(Se.ARIA_SELECTED,"false"),t.innerHTML='\n \n \n \n \n \n ').concat(e.item,'\n \n \n \n ').trim(),t},o.prototype._getTemplateString=function(e){var t="";return("string"==typeof e||"number"==typeof e&&!Number.isNaN(e)||"boolean"==typeof e||"object"==typeof e)&&(t="string"==typeof e?e.trim():"number"==typeof e||"boolean"==typeof e?e.toString():JSON.stringify(e)),t},o.prototype._updateIcon=function(e,t){var n=this._getIcon(e);if(n){var o=document.createElement(Ae.HA_ICON);o.setAttribute("icon",t),o.setAttribute("slot","item-icon"),n.replaceWith(o)}},o.prototype._subscribeTitle=function(){var e=this;this._sidebar.selector.$.query(Ie.TITLE).element.then((function(t){e._configWithExceptions.title&&e._subscribeTemplate(e._configWithExceptions.title,(function(e){t.innerHTML=e}))}))},o.prototype._subscribeSideBarEdition=function(){var e=this,t=function(e){e.preventDefault(),e.stopImmediatePropagation()},n=function(e,n){e.removeEventListener(Re.HASS_EDIT_SIDEBAR,t,!0),n.removeAttribute(Me)},o=function(e,n){e.removeEventListener(Re.HASS_EDIT_SIDEBAR,t,!0),e.addEventListener(Re.HASS_EDIT_SIDEBAR,t,!0),n.setAttribute(Me,"")};Promise.all([this._main.element,this._sidebar.selector.$.query(Ie.MENU).element]).then((function(t){var r=t[0],i=t[1];"boolean"==typeof e._configWithExceptions.sidebar_editable&&(e._isSidebarEditable=e._configWithExceptions.sidebar_editable,e._isSidebarEditable||o(r,i)),"string"==typeof e._configWithExceptions.sidebar_editable&&e._subscribeTemplate(e._configWithExceptions.sidebar_editable,(function(t){"true"===t||"false"===t?(e._isSidebarEditable=!("false"===t),e._isSidebarEditable?n(r,i):o(r,i)):(e._isSidebarEditable=void 0,n(r,i)),e._checkProfileEditableButton()}))}))},o.prototype._subscribeName=function(e,t){var n=e.querySelector(Ie.ITEM_TEXT);this._subscribeTemplate(t,(function(e){n.innerHTML=e}))},o.prototype._subscribeInfo=function(e,t){var n=e.querySelector(Ie.ITEM_TEXT);this._subscribeTemplate(t,(function(e){n.dataset.info=e}))},o.prototype._subscribeNotification=function(e,t){var n=e.querySelector("".concat(Ie.NOTIFICATION_BADGE,":not(").concat(Ie.NOTIFICATIONS_BADGE_COLLAPSED,")")),o=e.querySelector(Ie.NOTIFICATIONS_BADGE_COLLAPSED);n||((n=document.createElement("span")).classList.add(ve.NOTIFICATIONS_BADGE),e.querySelector(Ae.PAPER_ICON_ITEM).appendChild(n)),o||((o=document.createElement("span")).classList.add(ve.NOTIFICATIONS_BADGE,ve.NOTIFICATIONS_BADGE_COLLAPSED),e.querySelector("".concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON)).after(o));this._subscribeTemplate(t,(function(t){t.length?(n.innerHTML=t,o.innerHTML=t,e.setAttribute(Se.WITH_NOTIFICATION,"true")):(n.innerHTML="",o.innerHTML="",e.removeAttribute(Se.WITH_NOTIFICATION))}))},o.prototype._subscribeTemplateColorChanges=function(e,t,n){var o=this;n.forEach((function(n){var r=n[0],i=n[1];e[r]&&o._subscribeTemplate(e[r],(function(e){t.style.setProperty(i,e)}))}))},o.prototype._subscribeTemplate=function(e,t){xe.test(e)?this._createJsTemplateSubscription(e.replace(xe,"$1"),t):Ue.test(e)?this._createJinjaTemplateSubscription(e,t):t(this._getTemplateString(e))},o.prototype._createJsTemplateSubscription=function(e,t){var n=this;this._renderer.trackTemplate(e,(function(e){t(n._getTemplateString(e))}))},o.prototype._createJinjaTemplateSubscription=function(e,t){var n=this;window.hassConnection.then((function(o){o.conn.subscribeMessage((function(e){t("".concat(e.result))}),{type:Re.RENDER_TEMPLATE,template:e,variables:{user_name:n._ha.hass.user.name,user_is_admin:n._ha.hass.user.is_admin,user_is_owner:n._ha.hass.user.is_owner,user_agent:window.navigator.userAgent}})}))},o.prototype._focusItemByKeyboard=function(e,t){for(var n,o=this._items.length-1,r=e.querySelector("\n ".concat(Ie.SCOPE," > ").concat(Ie.ITEM,":not(.").concat(ve.IRON_SELECTED,"):focus,\n ").concat(Ie.SCOPE," > ").concat(Ie.ITEM,":focus,\n ").concat(Ie.SCOPE," > ").concat(Ie.ITEM,":has(> ").concat(Ae.PAPER_ICON_ITEM,":focus)\n ").trim()),i=0,c=0,a=Object.entries(this._items);c0?i-1:o,this._items[n].element.focus(),this._items[n].element.tabIndex=0},o.prototype._focusItemByTab=function(e,t,n){var o=this._items.length-1;if(t.nodeName===Ne.A){var r=t,i=this._items.findIndex((function(e){return e.element===r})),c=NaN;if(n&&i0&&(c=i-1),Number.isNaN(c))if(n)e.querySelector(Ie.SIDEBAR_NOTIFICATIONS).focus();else e.querySelector(Ae.HA_ICON_BUTTON).focus();else this._items[c].element.querySelector(Ae.PAPER_ICON_ITEM).focus()}else{if(n)e.querySelector("".concat(Ie.PROFILE," > ").concat(Ae.PAPER_ICON_ITEM)).focus();else this._items[o].element.querySelector(Ae.PAPER_ICON_ITEM).focus()}},o.prototype._getActivePaperIconElement=function(e){void 0===e&&(e=document);var t=e.activeElement;return t?t instanceof HTMLElement&&(t.nodeName===Ne.PAPER_ICON_ITEM||t.nodeName===Ne.A&&"option"===t.getAttribute("role"))?t:t.shadowRoot&&Pe.includes(t.nodeName)?this._getActivePaperIconElement(t.shadowRoot):null:null},o.prototype._processSidebar=function(){var e=this;Promise.all([this._main.element,this._partialPanelResolver.element]).then((function(o){var r=o[0],i=o[1],c=e._configWithExceptions.sidebar_mode,a=matchMedia("(max-width: 870px)");if(c){r.hass.dockedSidebar=Be[c];var s=function(o){return t(e,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return c===de.HIDDEN?[3,5]:[4,Ve()];case 1:return e.sent(),r.narrow=!1,[4,Ve()];case 2:return e.sent(),i.narrow=o,[4,Ve()];case 3:return e.sent(),o?[4,this._partialPanelResolver.selector.query(Ie.HA_MENU_BUTTON).element]:[3,5];case 4:e.sent().narrow=!1,e.label=5;case 5:return[2]}}))}))};a.addEventListener("change",(function(e){s(e.matches)})),s(a.matches)}})),Promise.all([this._sidebar.element,this._sidebar.selector.$.element,this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element]).then((function(t){var n=t[0],o=t[1],r=t[2];e._subscribeTemplateColorChanges(e._configWithExceptions,n,[["title_color",Te.CUSTOM_SIDEBAR_TITLE_COLOR],["sidebar_button_color",Te.CUSTOM_SIDEBAR_BUTTON_COLOR],["sidebar_background",Te.CUSTOM_SIDEBAR_BACKGROUND],["menu_background",Te.CUSTOM_SIDEBAR_MENU_BACKGROUND],["icon_color",Te.CUSTOM_SIDEBAR_ICON_COLOR],["icon_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR],["text_color",Te.CUSTOM_SIDEBAR_TEXT_COLOR],["text_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR],["selection_color",Te.CUSTOM_SIDEBAR_SELECTION_COLOR],["info_color",Te.CUSTOM_SIDEBAR_INFO_COLOR],["info_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR],["notification_color",Te.CUSTOM_SIDEBAR_NOTIFICATION_COLOR],["notification_text_color",Te.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR],["selection_opacity",Te.CUSTOM_SIDEBAR_SELECTION_OPACITY],["divider_color",Te.CUSTOM_SIDEBAR_DIVIDER_COLOR]]),r.addEventListener(Re.KEYDOWN,(function(t){t.key!==me.ARROW_DOWN&&t.key!==me.ARROW_UP||(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByKeyboard(r,t.key===me.ARROW_DOWN))}),!0),window.addEventListener(Re.KEYDOWN,(function(t){if(t.key===me.TAB){var n=e._getActivePaperIconElement();if(n)if(n.nodeName===Ne.PAPER_ICON_ITEM){var r=n.parentElement;r.getAttribute(Se.HREF)!==He&&(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByTab(o,r,!t.shiftKey))}else n.getAttribute(Se.HREF)!==He&&(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByTab(o,n,!t.shiftKey))}}),!0);var i,c,a,s,_="\n background-color: var(".concat(Te.CUSTOM_SIDEBAR_NOTIFICATION_COLOR,", var(--accent-color));\n border-radius: 20px;\n color: var(").concat(Te.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR,", var(").concat(Te.TEXT_ACCENT_COLOR,", var(").concat(Te.TEXT_PRIMARY_COLOR,")));\n font-size: 0.65em;\n overflow: hidden;\n padding: 0px 5px;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n ");i="\n ".concat(Ie.HOST," {\n background: var(").concat(Te.CUSTOM_SIDEBAR_BACKGROUND,", var(").concat(Te.SIDEBAR_BACKGROUND_COLOR,")) !important;\n }\n ").concat(Ie.HOST," ").concat(Ie.MENU," {\n background: var(").concat(Te.CUSTOM_SIDEBAR_MENU_BACKGROUND,", var(").concat(Te.CUSTOM_SIDEBAR_BACKGROUND,", var(").concat(Te.SIDEBAR_MENU_BUTTON_BACKGROUND_COLOR,", ").concat(Te.PRIMARY_BACKGROUND_COLOR,")));\n border-bottom: 1px solid var(").concat(Te.CUSTOM_SIDEBAR_DIVIDER_COLOR,", var(").concat(Te.DIVIDER_COLOR,"));\n }\n ").concat(Ie.MENU,"[").concat(Me,"] {\n pointer-events: none;\n }\n ").concat(Ie.HOST," ").concat(Ie.MENU," > ").concat(Ie.HA_ICON_BUTTON," {\n color: var(").concat(Te.CUSTOM_SIDEBAR_BUTTON_COLOR,", var(").concat(Te.SIDEBAR_ICON_COLOR,"));\n }\n ").concat(Ie.HOST," ").concat(Ie.MENU," > ").concat(Ie.TITLE," {\n color: var(").concat(Te.CUSTOM_SIDEBAR_TITLE_COLOR,", var(").concat(Te.SIDEBAR_TITLE_COLOR,", var(").concat(Te.PRIMARY_TEXT_COLOR,")));\n } \n ").concat(Ie.MENU,"[").concat(Me,"] > ").concat(Ie.HA_ICON_BUTTON," {\n pointer-events: all;\n }\n ").concat(Ie.HOST," ").concat(Ie.ITEM," > ").concat(Ae.PAPER_ICON_ITEM,"::before {\n background-color: var(").concat(Te.CUSTOM_SIDEBAR_SELECTION_COLOR,", var(").concat(Te.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR,", var(").concat(Te.SIDEBAR_SELECTED_ICON_COLOR,")));\n opacity: var(").concat(Te.CUSTOM_SIDEBAR_SELECTION_OPACITY,", 0.12);\n }\n ").concat(Ie.HOST," ").concat(Ie.ITEM,"[").concat(Se.WITH_NOTIFICATION,"] > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT," {\n max-width: calc(100% - 100px);\n }\n ").concat(Ie.HOST," ").concat(Ie.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > :is(").concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON,") {\n color: var(").concat(Te.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR,", var(").concat(Te.SIDEBAR_SELECTED_ICON_COLOR,"));\n }\n ").concat(Ie.HOST," ").concat(Ie.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT," {\n color: var(").concat(Te.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR,", var(").concat(Te.SIDEBAR_SELECTED_TEXT_COLOR,"));\n }\n ").concat(Ie.HOST," ").concat(Ae.PAPER_ICON_ITEM," > :is(").concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON,") {\n color: var(").concat(Te.CUSTOM_SIDEBAR_ICON_COLOR,", var(").concat(Te.SIDEBAR_ICON_COLOR,"));\n }\n ").concat(Ie.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT," {\n color: var(").concat(Te.CUSTOM_SIDEBAR_TEXT_COLOR,", var(").concat(Te.SIDEBAR_TEXT_COLOR,"));\n }\n ").concat(Ie.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.NOTIFICATION_BADGE,":not(").concat(Ie.NOTIFICATIONS_BADGE_COLLAPSED,") {\n left: calc(var(--app-drawer-width, 248px) - 22px);\n max-width: 80px;\n transform: translateX(-100%);\n ").concat(_,"\n }\n ").concat(Ie.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.NOTIFICATIONS_BADGE_COLLAPSED," {\n bottom: 14px;\n left: 26px;\n max-width: 20px;\n ").concat(_,"\n }\n ").concat(Ie.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.CONFIGURATION_BADGE," {\n background-color: var(").concat(Te.CUSTOM_SIDEBAR_NOTIFICATION_COLOR,", var(--accent-color));\n color: var(").concat(Te.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR,", var(").concat(Te.TEXT_ACCENT_COLOR,", var(").concat(Te.TEXT_PRIMARY_COLOR,")));\n }\n ").concat(Ie.HOST," ").concat(Ie.DIVIDER,"::before {\n background-color: var(").concat(Te.CUSTOM_SIDEBAR_DIVIDER_COLOR,", var(").concat(Te.DIVIDER_COLOR,"));\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.NOTIFICATIONS_BADGE_COLLAPSED," {\n opacity: 0;\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT," {\n display: flex;\n flex-direction: column;\n gap: 5px;\n line-height: 1;\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT,"::after {\n content: attr(data-info);\n display: none;\n font-size: 11px;\n line-height: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT,"[data-info]::after {\n color: var(").concat(Te.CUSTOM_SIDEBAR_INFO_COLOR,", var(").concat(Te.SIDEBAR_TEXT_COLOR,"));\n display: block;\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM).concat(Ie.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT," {\n z-index: 1;\n }\n ").concat(Ie.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(Ie.ITEM).concat(Ie.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(Ie.ITEM_TEXT,"[data-info]::after {\n color: var(").concat(Te.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR,", var(").concat(Te.SIDEBAR_SELECTED_TEXT_COLOR,"));\n }\n ").concat(e._configWithExceptions.styles||"","\n ").trim(),a=function(e){return e.host.localName}(c=o),(s=document.createElement("style")).setAttribute("id","".concat(be,"_").concat(a)),c.appendChild(s),s.innerHTML=i.replace(Ge,"$2")}))},o.prototype._rearrange=function(){var t=this;this._getElements().then((function(n){var o=t._configWithExceptions.order,r=n[0],i=n[1],c=n[2],a=0,s=!1,_=Array.from(i),u=new Set,l=o.reduce((function(t,n){var o=n.item,r=n.match,i=n.exact,c=n.new_item,a=o.toLocaleLowerCase(),s=c?void 0:_.find((function(e){var t=r===Oe.DATA_PANEL?e.getAttribute(Se.PANEL):r===Oe.HREF?e.getAttribute(Se.HREF):e.querySelector(Ie.ITEM_TEXT).innerText.trim();return!((!i||o!==t)&&(i||!(null==t?void 0:t.toLowerCase().includes(a))))&&(!u.has(e)&&(u.add(e),!0))}));return s&&s.setAttribute(Se.PROCESSED,"true"),(c||s)&&t.push(e(e({},n),{element:s})),c||s||console.warn("".concat(be,": you have an order item in your configuration that didn't match any sidebar item: \"").concat(o,'"')),t}),[]),d=function(){s||(_.forEach((function(e){e.hasAttribute(Se.PROCESSED)||(e.style.order="".concat(a))})),a++,c.style.order="".concat(a),a++,s=!0)};l.forEach((function(e){if(e.bottom&&d(),e.new_item&&!e.hide){var n=t._buildNewItem(e);n.style.order="".concat(a),r.appendChild(n),e.element=n}else if(e.element){var o=e.element;o.style.order="".concat(a),e.hide&&(o.style.display="none"),e.icon&&t._updateIcon(o,e.icon),e.href&&(o.href=e.href),e.target&&(o.target=e.target)}e.hide||(e.name&&t._subscribeName(e.element,e.name),e.info&&t._subscribeInfo(e.element,e.info),e.notification&&t._subscribeNotification(e.element,e.notification),t._subscribeTemplateColorChanges(e,e.element,[["icon_color",Te.CUSTOM_SIDEBAR_ICON_COLOR],["icon_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR],["text_color",Te.CUSTOM_SIDEBAR_TEXT_COLOR],["text_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR],["selection_color",Te.CUSTOM_SIDEBAR_SELECTION_COLOR],["selection_opacity",Te.CUSTOM_SIDEBAR_SELECTION_OPACITY],["info_color",Te.CUSTOM_SIDEBAR_INFO_COLOR],["info_color_selected",Te.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR],["notification_color",Te.CUSTOM_SIDEBAR_NOTIFICATION_COLOR],["notification_text_color",Te.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR]]),e.new_item&&(e.element.addEventListener(Re.MOUSEENTER,t._mouseEnterBinded),e.element.addEventListener(Re.MOUSELEAVE,t._mouseLeaveBinded)),e.element.addEventListener(Re.MOUSEDOWN,t._itemTouchedBinded),e.element.addEventListener(Re.KEYDOWN,(function(e){e.key===me.ENTER&&t._itemTouchedBinded()})),t._items.push(e)),a++})),l.length&&d(),t._panelLoaded()}))},o.prototype._itemTouched=function(){return t(this,void 0,void 0,(function(){var e=this;return n(this,(function(t){return this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element.then((function(t){e._sidebarScroll=t.scrollTop})),[2]}))}))},o.prototype._mouseEnter=function(e){this._sidebar.element.then((function(t){t.alwaysExpand||(t._mouseLeaveTimeout&&(clearTimeout(t._mouseLeaveTimeout),t._mouseLeaveTimeout=void 0),t._showTooltip(e.currentTarget))}))},o.prototype._mouseLeave=function(){return t(this,void 0,void 0,(function(){return n(this,(function(e){return this._sidebar.element.then((function(e){e._mouseLeaveTimeout&&clearTimeout(e._mouseLeaveTimeout),e._mouseLeaveTimeout=window.setTimeout((function(){e._hideTooltip()}),500)})),[2]}))}))},o.prototype._checkProfileEditableButton=function(){return t(this,void 0,void 0,(function(){var e,t;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),"/profile/general"!==e.__route.path?[3,3]:[4,this._partialPanelResolver.selector.query(Ie.EDIT_SIDEBAR_BUTTON).element];case 2:(t=n.sent())&&(!1===this._isSidebarEditable?t.setAttribute(Se.DISABLED,""):t.removeAttribute(Se.DISABLED)),n.label=3;case 3:return[2]}}))}))},o.prototype._panelLoaded=function(){return t(this,void 0,void 0,(function(){var e,t,o,r,i;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),t=e.__route.path,[4,this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element];case 2:return o=n.sent(),r=o.querySelector(["".concat(Ie.SCOPE," > ").concat(Ie.ITEM,'[href="').concat(t,'"]'),"".concat(Ie.SCOPE," > ").concat(Ie.ITEM,'[href="').concat(t,'/dashboard"]')].join(",")),i=r?null:this._items.reduce((function(e,n){var o=n.element,r=o.getAttribute(Se.HREF);return t.startsWith(r)&&(!e||r.length>e.getAttribute(Se.HREF).length)&&(e=o),e}),null),this._items.forEach((function(e){var t=e.element,n=r&&r===t||!r&&i===t;t.classList.toggle(ve.IRON_SELECTED,n),t.setAttribute(Se.ARIA_SELECTED,"".concat(n))})),o.scrollTop!==this._sidebarScroll&&(o.scrollTop=this._sidebarScroll),this._checkProfileEditableButton(),[2]}}))}))},o.prototype._process=function(){var e=this;this._homeAssistant.element.then((function(t){e._ha=t,new pe(e._ha).getRenderer().then((function(t){e._renderer=t,e._getConfigWithExceptions().then((function(){e._processSidebar(),e._subscribeTitle(),e._subscribeSideBarEdition(),e._rearrange()}))}))}))},o}();window.CustomSidebar||(console.info("%c≡ ".concat(be.toUpperCase()," (JSON)%cv").concat("6.1.4"),"font-weight: bold; background: #EEEEEE; color: #666666; padding: 2px 5px;","font-weight: normal; background: #E87A24; color: #FFFFFF; padding: 2px 5px"),window.CustomSidebar=new Ze)}(); diff --git a/www/community/custom-sidebar/custom-sidebar-json.js.gz b/www/community/custom-sidebar/custom-sidebar-json.js.gz index b62913de..581f7325 100644 Binary files a/www/community/custom-sidebar/custom-sidebar-json.js.gz and b/www/community/custom-sidebar/custom-sidebar-json.js.gz differ diff --git a/www/community/custom-sidebar/custom-sidebar-yaml.js b/www/community/custom-sidebar/custom-sidebar-yaml.js index fc269ce4..e991aa31 100644 --- a/www/community/custom-sidebar/custom-sidebar-yaml.js +++ b/www/community/custom-sidebar/custom-sidebar-yaml.js @@ -1 +1 @@ -!function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){o=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=0;r--){var i=e[r];t.includes(i.item)||(n.unshift(i),t.push(i.item))}return n.sort((function(e,t){return!!e.bottom!=!!t.bottom?e.bottom?1:-1:typeof e.order===Te||typeof t.order===Te?e.order===t.order?0:typeof e.order===Te?1:-1:e.order-t.order}))},Me=function(e,t){return new Promise((function(n){var r=0,i=function(){var o=e();o&&t(o)?n(o):++r<100?setTimeout(i,50):n(o)};i()}))};function ke(e){return null==e}var He={isNothing:ke,isObject:function(e){return"object"==typeof e&&null!==e},toArray:function(e){return Array.isArray(e)?e:ke(e)?[]:[e]},repeat:function(e,t){var n,r="";for(n=0;ns&&(t=r-s+(o=" ... ").length),n-r>s&&(n=r+s-(a=" ...").length),{str:o+e.slice(t,n).replace(/\t/g,"→")+a,pos:r-t+o.length}}function We(e,t){return He.repeat(" ",t-e.length)+e}var qe=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,r=/\r?\n|\r|\0/g,i=[0],o=[],a=-1;n=r.exec(e.buffer);)o.push(n.index),i.push(n.index+n[0].length),e.position<=n.index&&a<0&&(a=i.length-2);a<0&&(a=i.length-1);var s,c,u="",l=Math.min(e.line+t.linesAfter,o.length).toString().length,p=t.maxLength-(t.indent+l+3);for(s=1;s<=t.linesBefore&&!(a-s<0);s++)c=Ge(e.buffer,i[a-s],o[a-s],e.position-(i[a]-i[a-s]),p),u=He.repeat(" ",t.indent)+We((e.line-s+1).toString(),l)+" | "+c.str+"\n"+u;for(c=Ge(e.buffer,i[a],o[a],e.position,p),u+=He.repeat(" ",t.indent)+We((e.line+1).toString(),l)+" | "+c.str+"\n",u+=He.repeat("-",t.indent+l+3+c.pos)+"^\n",s=1;s<=t.linesAfter&&!(a+s>=o.length);s++)c=Ge(e.buffer,i[a+s],o[a+s],e.position-(i[a]-i[a+s]),p),u+=He.repeat(" ",t.indent)+We((e.line+s+1).toString(),l)+" | "+c.str+"\n";return u.replace(/\n$/,"")},Ue=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Ye=["scalar","sequence","mapping"];var Ve=function(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===Ue.indexOf(t))throw new Be('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[String(e)]=n}))})),t}(t.styleAliases||null),-1===Ye.indexOf(this.kind))throw new Be('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function Ke(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,r){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=r)})),n[t]=e})),n}function $e(e){return this.extend(e)}$e.prototype.extend=function(e){var t=[],n=[];if(e instanceof Ve)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new Be("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof Ve))throw new Be("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new Be("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new Be("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof Ve))throw new Be("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create($e.prototype);return r.implicit=(this.implicit||[]).concat(t),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=Ke(r,"implicit"),r.compiledExplicit=Ke(r,"explicit"),r.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),at=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var st=/^[-+]?[0-9]+e/;var ct=new Ve("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!at.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||He.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(He.isNegativeZero(e))return"-0.0";return n=e.toString(10),st.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),ut=Ze.extend({implicit:[et,tt,ot,ct]}),lt=ut,pt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),ft=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var dt=new Ve("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==pt.exec(e)||null!==ft.exec(e))},construct:function(e){var t,n,r,i,o,a,s,c,u=0,l=null;if(null===(t=pt.exec(e))&&(t=ft.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(n,r,i));if(o=+t[4],a=+t[5],s=+t[6],t[7]){for(u=t[7].slice(0,3);u.length<3;)u+="0";u=+u}return t[9]&&(l=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(l=-l)),c=new Date(Date.UTC(n,r,i,o,a,s,u)),l&&c.setTime(c.getTime()-l),c},instanceOf:Date,represent:function(e){return e.toISOString()}});var ht=new Ve("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),_t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var mt=new Ve("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=0,i=e.length,o=_t;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,r=e.replace(/[\r\n=]/g,""),i=r.length,o=_t,a=0,s=[];for(t=0;t>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(r.charAt(t));return 0===(n=i%4*6)?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),new Uint8Array(s)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,r="",i=0,o=e.length,a=_t;for(t=0;t>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]),i=(i<<8)+e[t];return 0===(n=o%3)?(r+=a[i>>18&63],r+=a[i>>12&63],r+=a[i>>6&63],r+=a[63&i]):2===n?(r+=a[i>>10&63],r+=a[i>>4&63],r+=a[i<<2&63],r+=a[64]):1===n&&(r+=a[i>>2&63],r+=a[i<<4&63],r+=a[64],r+=a[64]),r}}),At=Object.prototype.hasOwnProperty,vt=Object.prototype.toString;var Et=new Ve("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,i,o,a=[],s=e;for(t=0,n=s.length;t>10),56320+(e-65536&1023))}for(var $t=new Array(256),Xt=new Array(256),Qt=0;Qt<256;Qt++)$t[Qt]=Vt(Qt)?1:0,Xt[Qt]=Vt(Qt);function Jt(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||It,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function zt(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=qe(n),new Be(t,n)}function Zt(e,t){throw zt(e,t)}function en(e,t){e.onWarning&&e.onWarning.call(null,zt(e,t))}var tn={YAML:function(e,t,n){var r,i,o;null!==e.version&&Zt(e,"duplication of %YAML directive"),1!==n.length&&Zt(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&Zt(e,"ill-formed argument of the YAML directive"),i=parseInt(r[1],10),o=parseInt(r[2],10),1!==i&&Zt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&en(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,i;2!==n.length&&Zt(e,"TAG directive accepts exactly two arguments"),r=n[0],i=n[1],kt.test(r)||Zt(e,"ill-formed tag handle (first argument) of the TAG directive"),wt.call(e.tagMap,r)&&Zt(e,'there is a previously declared suffix for "'+r+'" tag handle'),Ht.test(i)||Zt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{i=decodeURIComponent(i)}catch(t){Zt(e,"tag prefix is malformed: "+i)}e.tagMap[r]=i}};function nn(e,t,n,r){var i,o,a,s;if(t1&&(e.result+=He.repeat("\n",t-1))}function ln(e,t){var n,r,i=e.tag,o=e.anchor,a=[],s=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),r=e.input.charCodeAt(e.position);0!==r&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,Zt(e,"tab characters must not be used in indentation")),45===r)&&Gt(e.input.charCodeAt(e.position+1));)if(s=!0,e.position++,sn(e,!0,-1)&&e.lineIndent<=t)a.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,dn(e,t,Nt,!1,!0),a.push(e.result),sn(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)Zt(e,"bad indentation of a sequence entry");else if(e.lineIndentt?h=1:e.lineIndent===t?h=0:e.lineIndentt?h=1:e.lineIndent===t?h=0:e.lineIndentt)&&(A&&(a=e.line,s=e.lineStart,c=e.position),dn(e,t,Lt,!0,i)&&(A?_=e.result:m=e.result),A||(on(e,f,d,h,_,m,a,s,c),h=_=m=null),sn(e,!0,-1),u=e.input.charCodeAt(e.position)),(e.line===o||e.lineIndent>t)&&0!==u)Zt(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===i?Zt(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?Zt(e,"repeat of an indentation width identifier"):(u=t+i-1,c=!0)}if(Bt(o)){do{o=e.input.charCodeAt(++e.position)}while(Bt(o));if(35===o)do{o=e.input.charCodeAt(++e.position)}while(!jt(o)&&0!==o)}for(;0!==o;){for(an(e),e.lineIndent=0,o=e.input.charCodeAt(e.position);(!c||e.lineIndentu&&(u=e.lineIndent),jt(o))l++;else{if(e.lineIndent0){for(i=a,o=0;i>0;i--)(a=qt(s=e.input.charCodeAt(++e.position)))>=0?o=(o<<4)+a:Zt(e,"expected hexadecimal character");e.result+=Kt(o),e.position++}else Zt(e,"unknown escape sequence");n=r=e.position}else jt(s)?(nn(e,n,r,!0),un(e,sn(e,!1,t)),n=r=e.position):e.position===e.lineStart&&cn(e)?Zt(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}Zt(e,"unexpected end of the stream within a double quoted scalar")}(e,f)?m=!0:!function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!Gt(r)&&!Wt(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&Zt(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),wt.call(e.anchorMap,n)||Zt(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],sn(e,!0,-1),!0}(e)?function(e,t,n){var r,i,o,a,s,c,u,l,p=e.kind,f=e.result;if(Gt(l=e.input.charCodeAt(e.position))||Wt(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(Gt(r=e.input.charCodeAt(e.position+1))||n&&Wt(r)))return!1;for(e.kind="scalar",e.result="",i=o=e.position,a=!1;0!==l;){if(58===l){if(Gt(r=e.input.charCodeAt(e.position+1))||n&&Wt(r))break}else if(35===l){if(Gt(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&cn(e)||n&&Wt(l))break;if(jt(l)){if(s=e.line,c=e.lineStart,u=e.lineIndent,sn(e,!1,-1),e.lineIndent>=t){a=!0,l=e.input.charCodeAt(e.position);continue}e.position=o,e.line=s,e.lineStart=c,e.lineIndent=u;break}}a&&(nn(e,i,o,!1),un(e,e.line-s),i=o=e.position,a=!1),Bt(l)||(o=e.position+1),l=e.input.charCodeAt(++e.position)}return nn(e,i,o,!1),!!e.result||(e.kind=p,e.result=f,!1)}(e,f,Tt===n)&&(m=!0,null===e.tag&&(e.tag="?")):(m=!0,null===e.tag&&null===e.anchor||Zt(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===h&&(m=s&&ln(e,d))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&Zt(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),c=0,u=e.implicitTypes.length;c"),null!==e.result&&p.kind!==e.kind&&Zt(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result,e.tag)?(e.result=p.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):Zt(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||m}function hn(e){var t,n,r,i,o=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(i=e.input.charCodeAt(e.position))&&(sn(e,!0,-1),i=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==i));){for(a=!0,i=e.input.charCodeAt(++e.position),t=e.position;0!==i&&!Gt(i);)i=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&Zt(e,"directive name must not be less than one character in length");0!==i;){for(;Bt(i);)i=e.input.charCodeAt(++e.position);if(35===i){do{i=e.input.charCodeAt(++e.position)}while(0!==i&&!jt(i));break}if(jt(i))break;for(t=e.position;0!==i&&!Gt(i);)i=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==i&&an(e),wt.call(tn,n)?tn[n](e,n,r):en(e,'unknown document directive "'+n+'"')}sn(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,sn(e,!0,-1)):a&&Zt(e,"directives end mark is expected"),dn(e,e.lineIndent-1,Lt,!1,!0),sn(e,!0,-1),e.checkLineBreaks&&Pt.test(e.input.slice(o,e.position))&&en(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&cn(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,sn(e,!0,-1)):e.position=55296&&r<=56319&&t+1=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function ir(e){return/^\n* /.test(e)}var or=1,ar=2,sr=3,cr=4,ur=5;function lr(e,t,n,r,i,o,a,s){var c,u=0,l=null,p=!1,f=!1,d=-1!==r,h=-1,_=function(e){return er(e)&&e!==En&&!Zn(e)&&e!==Dn&&e!==kn&&e!==xn&&e!==Cn&&e!==Fn&&e!==jn&&e!==Gn&&e!==qn&&e!==Tn&&e!==Nn&&e!==Rn&&e!==In&&e!==Wn&&e!==Pn&&e!==Mn&&e!==Ln&&e!==wn&&e!==Sn&&e!==Hn&&e!==Bn}(rr(e,0))&&function(e){return!Zn(e)&&e!==xn}(rr(e,e.length-1));if(t||a)for(c=0;c=65536?c+=2:c++){if(!er(u=rr(e,c)))return ur;_=_&&nr(u,l,s),l=u}else{for(c=0;c=65536?c+=2:c++){if((u=rr(e,c))===gn)p=!0,d&&(f=f||c-h-1>r&&" "!==e[h+1],h=c);else if(!er(u))return ur;_=_&&nr(u,l,s),l=u}f=f||d&&c-h-1>r&&" "!==e[h+1]}return p||f?n>9&&ir(e)?ur:a?o===Xn?ur:ar:f?cr:sr:!_||a||i(e)?o===Xn?ur:ar:or}function pr(e,t,n,r,i){e.dump=function(){if(0===t.length)return e.quotingType===Xn?'""':"''";if(!e.noCompatMode&&(-1!==Yn.indexOf(t)||Vn.test(t)))return e.quotingType===Xn?'"'+t+'"':"'"+t+"'";var o=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),s=r||e.flowLevel>-1&&n>=e.flowLevel;switch(lr(t,s,e.indent,a,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+fr(t,e.indent)+dr(Jn(function(e,t){var n,r,i=/(\n+)([^\n]*)/g,o=(s=e.indexOf("\n"),s=-1!==s?s:e.length,i.lastIndex=s,hr(e.slice(0,s),t)),a="\n"===e[0]||" "===e[0];var s;for(;r=i.exec(e);){var c=r[1],u=r[2];n=" "===u[0],o+=c+(a||n||""===u?"":"\n")+hr(u,t),a=n}return o}(t,a),o));case ur:return'"'+function(e){for(var t,n="",r=0,i=0;i=65536?i+=2:i++)r=rr(e,i),!(t=Un[r])&&er(r)?(n+=e[i],r>=65536&&(n+=e[i+1])):n+=t||Kn(r);return n}(t)+'"';default:throw new Be("impossible error: invalid scalar style")}}()}function fr(e,t){var n=ir(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function dr(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function hr(e,t){if(""===e||" "===e[0])return e;for(var n,r,i=/ [^ ]/g,o=0,a=0,s=0,c="";n=i.exec(e);)(s=n.index)-o>t&&(r=a>o?a:s,c+="\n"+e.slice(o,r),o=r+1),a=s;return c+="\n",e.length-o>t&&a>o?c+=e.slice(o,a)+"\n"+e.slice(a+1):c+=e.slice(o),c.slice(1)}function _r(e,t,n,r){var i,o,a,s="",c=e.tag;for(i=0,o=n.length;i tag resolver accepts not "'+c+'" style');r=s.represent[c](t,c)}e.dump=r}return!0}return!1}function Ar(e,t,n,r,i,o,a){e.tag=null,e.dump=n,mr(e,n,!1)||mr(e,n,!0);var s,c=An.call(e.dump),u=r;r&&(r=e.flowLevel<0||e.flowLevel>t);var l,p,f="[object Object]"===c||"[object Array]"===c;if(f&&(p=-1!==(l=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||p||2!==e.indent&&t>0)&&(i=!1),p&&e.usedDuplicates[l])e.dump="*ref_"+l;else{if(f&&p&&!e.usedDuplicates[l]&&(e.usedDuplicates[l]=!0),"[object Object]"===c)r&&0!==Object.keys(e.dump).length?(!function(e,t,n,r){var i,o,a,s,c,u,l="",p=e.tag,f=Object.keys(n);if(!0===e.sortKeys)f.sort();else if("function"==typeof e.sortKeys)f.sort(e.sortKeys);else if(e.sortKeys)throw new Be("sortKeys must be a boolean or a function");for(i=0,o=f.length;i1024)&&(e.dump&&gn===e.dump.charCodeAt(0)?u+="?":u+="? "),u+=e.dump,c&&(u+=zn(e,t)),Ar(e,t+1,s,!0,c)&&(e.dump&&gn===e.dump.charCodeAt(0)?u+=":":u+=": ",l+=u+=e.dump));e.tag=p,e.dump=l||"{}"}(e,t,e.dump,i),p&&(e.dump="&ref_"+l+e.dump)):(!function(e,t,n){var r,i,o,a,s,c="",u=e.tag,l=Object.keys(n);for(r=0,i=l.length;r1024&&(s+="? "),s+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ar(e,t,a,!1,!1)&&(c+=s+=e.dump));e.tag=u,e.dump="{"+c+"}"}(e,t,e.dump),p&&(e.dump="&ref_"+l+" "+e.dump));else if("[object Array]"===c)r&&0!==e.dump.length?(e.noArrayIndent&&!a&&t>0?_r(e,t-1,e.dump,i):_r(e,t,e.dump,i),p&&(e.dump="&ref_"+l+e.dump)):(!function(e,t,n){var r,i,o,a="",s=e.tag;for(r=0,i=n.length;r",e.dump=s+" "+e.dump)}return!0}function vr(e,t){var n,r,i=[],o=[];for(Er(e,i,o),n=0,r=o.length;n ".concat(me.SPACER))}),(function(e){return!!e}))];case 2:return t=n.sent(),[4,Me((function(){return e.querySelectorAll(":scope > ".concat(me.ITEM))}),(function(e){return Array.from(e).every((function(e){return e.querySelector(me.ITEM_TEXT).innerText.trim().length>0}))}))];case 3:return r=n.sent(),[2,[e,r,t]]}}))}))},i.prototype._getCurrentDevice=function(){return navigator.userAgent.toLowerCase()},i.prototype._buildNewItem=function(e){var t=document.createElement("a");return t.href=e.href,t.target=e.target||"",t.tabIndex=-1,t.setAttribute(ve.ROLE,"option"),t.setAttribute(ve.PANEL,e.item.toLowerCase().replace(/\s+/,"-")),t.setAttribute(ve.ARIA_SELECTED,"false"),t.innerHTML='\n \n \n \n \n \n ').concat(e.item,'\n \n \n \n ').trim(),t},i.prototype._updateIcon=function(e,t){var n=e.querySelector([_e.HA_SVG_ICON,_e.HA_ICON].join(","));if(n){var r=document.createElement(_e.HA_ICON);r.setAttribute("icon",t),r.setAttribute("slot","item-icon"),n.replaceWith(r)}},i.prototype._subscribeTitle=function(){var e=this;this._sidebar.selector.$.query(me.TITLE).element.then((function(t){e._configWithExceptions.title&&e._subscribeTemplate(t,e._configWithExceptions.title,(function(e){t.innerHTML=e}))}))},i.prototype._subscribeSideBarEdition=function(){var e=this,t=function(e){e.preventDefault(),e.stopImmediatePropagation()},n=function(e,n){e.removeEventListener(Ee.HASS_EDIT_SIDEBAR,t,!0),n.removeAttribute(Se)},r=function(e,n){e.removeEventListener(Ee.HASS_EDIT_SIDEBAR,t,!0),e.addEventListener(Ee.HASS_EDIT_SIDEBAR,t,!0),n.setAttribute(Se,"")};Promise.all([this._main.element,this._sidebar.selector.$.query(me.MENU).element]).then((function(t){var i=t[0],o=t[1];"boolean"==typeof e._configWithExceptions.sidebar_editable&&(e._isSidebarEditable=e._configWithExceptions.sidebar_editable,e._isSidebarEditable||r(i,o)),"string"==typeof e._configWithExceptions.sidebar_editable&&e._subscribeTemplate(document.createElement("div"),e._configWithExceptions.sidebar_editable,(function(t){"true"===t||"false"===t?(e._isSidebarEditable=!("false"===t),e._isSidebarEditable?n(i,o):r(i,o)):(e._isSidebarEditable=void 0,n(i,o)),e._checkProfileEditableButton()}))}))},i.prototype._subscribeName=function(e,t){this._subscribeTemplate(e.querySelector(me.ITEM_TEXT),t)},i.prototype._subscribeNotification=function(e,t){var n=e.querySelector("".concat(me.NOTIFICATION_BADGE,":not(").concat(me.NOTIFICATIONS_BADGE_COLLAPSED,")")),r=e.querySelector(me.NOTIFICATIONS_BADGE_COLLAPSED);n||((n=document.createElement("span")).classList.add(Ae.NOTIFICATIONS_BADGE),e.querySelector(_e.PAPER_ICON_ITEM).appendChild(n)),r||((r=document.createElement("span")).classList.add(Ae.NOTIFICATIONS_BADGE,Ae.NOTIFICATIONS_BADGE_COLLAPSED),e.querySelector("".concat(_e.HA_SVG_ICON,", ").concat(_e.HA_ICON)).after(r));this._subscribeTemplate(n,t,(function(t){t.length?(n.innerHTML=t,r.innerHTML=t,e.setAttribute(ve.WITH_NOTIFICATION,"true")):(n.innerHTML="",r.innerHTML="",e.removeAttribute(ve.WITH_NOTIFICATION))}))},i.prototype._subscribeTemplate=function(e,t,n){e.innerHTML="",Re.test(t)?this._createJsTemplateSubscription(e,t.replace(Re,"$1"),n):Ce.test(t)?this._createJinjaTemplateSubscription(e,t,n):n?n(t):e.innerHTML=t},i.prototype._createJsTemplateSubscription=function(e,t,n){this._renderer.trackTemplate(t,(function(t){var r="";("string"==typeof t||"number"==typeof t&&!Number.isNaN(t)||"boolean"==typeof t||"object"==typeof t)&&(r="string"==typeof t?t.trim():"number"==typeof t||"boolean"==typeof t?t.toString():JSON.stringify(t)),n?n(r):e.innerHTML=r}))},i.prototype._createJinjaTemplateSubscription=function(e,t,n){var r=this;window.hassConnection.then((function(i){i.conn.subscribeMessage((function(t){n?n("".concat(t.result)):e.innerHTML="".concat(t.result)}),{type:Ee.RENDER_TEMPLATE,template:t,variables:{user_name:r._ha.hass.user.name,user_is_admin:r._ha.hass.user.is_admin,user_is_owner:r._ha.hass.user.is_owner,user_agent:window.navigator.userAgent}})}))},i.prototype._focusItemByKeyboard=function(e,t){for(var n,r=this._items.length-1,i=e.querySelector("\n ".concat(me.SCOPE," > ").concat(me.ITEM,":not(.").concat(Ae.IRON_SELECTED,"):focus,\n ").concat(me.SCOPE," > ").concat(me.ITEM,":focus,\n ").concat(me.SCOPE," > ").concat(me.ITEM,":has(> ").concat(_e.PAPER_ICON_ITEM,":focus)\n ").trim()),o=0,a=0,s=Object.entries(this._items);a0?o-1:r,this._items[n].element.focus(),this._items[n].element.tabIndex=0},i.prototype._focusItemByTab=function(e,t,n){var r=this._items.length-1;if(t.nodeName===ge.A){var i=t,o=this._items.findIndex((function(e){return e.element===i})),a=NaN;if(n&&o0&&(a=o-1),Number.isNaN(a))if(n)e.querySelector(me.SIDEBAR_NOTIFICATIONS).focus();else e.querySelector(_e.HA_ICON_BUTTON).focus();else this._items[a].element.querySelector(_e.PAPER_ICON_ITEM).focus()}else{if(n)e.querySelector("".concat(me.PROFILE," > ").concat(_e.PAPER_ICON_ITEM)).focus();else this._items[r].element.querySelector(_e.PAPER_ICON_ITEM).focus()}},i.prototype._getActivePaperIconElement=function(e){void 0===e&&(e=document);var t=e.activeElement;return t?t instanceof HTMLElement&&(t.nodeName===ge.PAPER_ICON_ITEM||t.nodeName===ge.A&&"option"===t.getAttribute("role"))?t:t.shadowRoot&&Ne.includes(t.nodeName)?this._getActivePaperIconElement(t.shadowRoot):null:null},i.prototype._processSidebar=function(){var e=this;this._sidebar.selector.$.element.then((function(t){var n,r,i,o,a=t.querySelector(_e.PAPER_LISTBOX);a.addEventListener(Ee.KEYDOWN,(function(t){t.key!==ye.ARROW_DOWN&&t.key!==ye.ARROW_UP||(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByKeyboard(a,t.key===ye.ARROW_DOWN))}),!0),window.addEventListener(Ee.KEYDOWN,(function(n){if(n.key===ye.TAB){var r=e._getActivePaperIconElement();if(r)if(r.nodeName===ge.PAPER_ICON_ITEM){var i=r.parentElement;i.getAttribute(ve.HREF)!==Le&&(n.preventDefault(),n.stopImmediatePropagation(),e._focusItemByTab(t,i,!n.shiftKey))}else r.getAttribute(ve.HREF)!==Le&&(n.preventDefault(),n.stopImmediatePropagation(),e._focusItemByTab(t,r,!n.shiftKey))}}),!0),n="\n ".concat(_e.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(_e.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATION_BADGE,":not(").concat(me.NOTIFICATIONS_BADGE_COLLAPSED,") {\n border-radius: 20px;\n left: calc(var(--app-drawer-width, 248px) - 22px);\n max-width: 80px;\n overflow: hidden;\n padding: 0px 5px;\n transform: translateX(-100%);\n text-overflow: ellipsis;\n text-wrap: nowrap; \n }\n ").concat(_e.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(_e.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATIONS_BADGE_COLLAPSED," {\n bottom: 14px;\n font-size: 0.65em;\n left: 26px;\n position: absolute; \n }\n :host([expanded]) ").concat(_e.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(_e.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATIONS_BADGE_COLLAPSED," {\n opacity: 0;\n }\n ").concat(_e.PAPER_LISTBOX," > ").concat(me.ITEM,"[").concat(ve.WITH_NOTIFICATION,"] > ").concat(_e.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n max-width: calc(100% - 86px);\n }\n ").concat(me.MENU,"[").concat(Se,"] {\n pointer-events: none;\n }\n ").concat(me.MENU,"[").concat(Se,"] > ").concat(me.HA_ICON_BUTTON," {\n pointer-events: all;\n }\n ").concat(e._configWithExceptions.styles||"","\n ").trim(),i=function(e){return e.host.localName}(r=t),(o=document.createElement("style")).setAttribute("id","".concat(Oe,"_").concat(i)),r.appendChild(o),o.innerHTML=n.replace(De,"$2")}))},i.prototype._rearrange=function(){var t=this;this._getElements().then((function(n){var r=t._configWithExceptions.order,i=n[0],o=n[1],a=n[2],s=0,c=!1,u=Array.from(o),l=new Set,p=r.reduce((function(t,n){var r=n.item,i=n.match,o=n.exact,a=n.new_item,s=r.toLocaleLowerCase(),c=a?void 0:u.find((function(e){var t=i===fe.DATA_PANEL?e.getAttribute(ve.PANEL):i===fe.HREF?e.getAttribute(ve.HREF):e.querySelector(me.ITEM_TEXT).innerText.trim();return!((!o||r!==t)&&(o||!(null==t?void 0:t.toLowerCase().includes(s))))&&(!l.has(e)&&(l.add(e),!0))}));return c&&c.setAttribute(ve.PROCESSED,"true"),(a||c)&&t.push(e(e({},n),{element:c})),a||c||console.warn("".concat(Oe,": you have an order item in your configuration that didn't match any sidebar item: \"").concat(r,'"')),t}),[]),f=function(){c||(u.forEach((function(e){e.hasAttribute(ve.PROCESSED)||(e.style.order="".concat(s))})),s++,a.style.order="".concat(s),s++,c=!0)};p.forEach((function(e){if(e.bottom&&f(),e.new_item&&!e.hide){var n=t._buildNewItem(e);n.style.order="".concat(s),i.appendChild(n),e.element=n}else if(e.element){var r=e.element;r.style.order="".concat(s),e.hide&&(r.style.display="none"),e.icon&&t._updateIcon(r,e.icon),e.href&&(r.href=e.href),e.target&&(r.target=e.target)}e.name&&t._subscribeName(e.element,e.name),e.notification&&t._subscribeNotification(e.element,e.notification),e.hide||(e.new_item&&(e.element.addEventListener(Ee.MOUSEENTER,t._mouseEnterBinded),e.element.addEventListener(Ee.MOUSELEAVE,t._mouseLeaveBinded)),e.element.addEventListener(Ee.MOUSEDOWN,t._itemTouchedBinded),e.element.addEventListener(Ee.KEYDOWN,(function(e){e.key===ye.ENTER&&t._itemTouchedBinded()})),t._items.push(e)),s++})),f(),t._panelLoaded()}))},i.prototype._itemTouched=function(){return t(this,void 0,void 0,(function(){var e=this;return n(this,(function(t){return this._sidebar.selector.$.query(_e.PAPER_LISTBOX).element.then((function(t){e._sidebarScroll=t.scrollTop})),[2]}))}))},i.prototype._mouseEnter=function(e){this._sidebar.element.then((function(t){t.alwaysExpand||(t._mouseLeaveTimeout&&(clearTimeout(t._mouseLeaveTimeout),t._mouseLeaveTimeout=void 0),t._showTooltip(e.currentTarget))}))},i.prototype._mouseLeave=function(){return t(this,void 0,void 0,(function(){return n(this,(function(e){return this._sidebar.element.then((function(e){e._mouseLeaveTimeout&&clearTimeout(e._mouseLeaveTimeout),e._mouseLeaveTimeout=window.setTimeout((function(){e._hideTooltip()}),500)})),[2]}))}))},i.prototype._checkProfileEditableButton=function(){return t(this,void 0,void 0,(function(){var e,t;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),"/profile/general"!==e.__route.path?[3,3]:[4,this._partialPanelResolver.selector.query(me.EDIT_SIDEBAR_BUTTON).element];case 2:(t=n.sent())&&(!1===this._isSidebarEditable?t.setAttribute(ve.DISABLED,""):t.removeAttribute(ve.DISABLED)),n.label=3;case 3:return[2]}}))}))},i.prototype._panelLoaded=function(){return t(this,void 0,void 0,(function(){var e,t,r,i,o;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),t=e.__route.path,[4,this._sidebar.selector.$.query(_e.PAPER_LISTBOX).element];case 2:return r=n.sent(),i=r.querySelector(["".concat(me.SCOPE," > ").concat(me.ITEM,'[href="').concat(t,'"]'),"".concat(me.SCOPE," > ").concat(me.ITEM,'[href="').concat(t,'/dashboard"]')].join(",")),o=i?null:this._items.reduce((function(e,n){var r=n.element,i=r.getAttribute(ve.HREF);return t.startsWith(i)&&(!e||i.length>e.getAttribute(ve.HREF).length)&&(e=r),e}),null),this._items.forEach((function(e){var t=e.element,n=i&&i===t||!i&&o===t;t.classList.toggle(Ae.IRON_SELECTED,n),t.setAttribute(ve.ARIA_SELECTED,"".concat(n))})),r.scrollTop!==this._sidebarScroll&&(r.scrollTop=this._sidebarScroll),this._checkProfileEditableButton(),[2]}}))}))},i.prototype._process=function(){var e=this;this._homeAssistant.element.then((function(t){e._ha=t,new he(e._ha).getRenderer().then((function(t){e._renderer=t,e._getConfigWithExceptions().then((function(){e._processSidebar(),e._subscribeTitle(),e._subscribeSideBarEdition(),e._rearrange()}))}))}))},i}();window.CustomSidebar||(console.info("%c≡ ".concat(Oe.toUpperCase()," (YAML)%cv").concat("5.1.0"),"font-weight: bold; background: #EEEEEE; color: #666666; padding: 2px 5px;","font-weight: normal; background: #E87A24; color: #FFFFFF; padding: 2px 5px"),window.CustomSidebar=new Nr)}(); +!function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,o=arguments.length;n0&&r[r.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!r||c[1]>r[0]&&c[1]0&&r[r.length-1])||6!==c[0]&&2!==c[0])){a=0;continue}if(3===c[0]&&(!r||c[1]>r[0]&&c[1] ha-menu-button",e.EDIT_SIDEBAR_BUTTON="ha-panel-profile ha-profile-section-general$ ha-settings-row mwc-button",e.SIDEBAR_NOTIFICATIONS=".notifications",e.PROFILE=".profile",e.MENU=".menu",e.DIVIDER=".divider",e.HA_ICON_BUTTON="ha-icon-button"}(me||(me={})),function(e){e.SIDEBAR_ICON_COLOR="--sidebar-icon-color",e.SIDEBAR_SELECTED_ICON_COLOR="--sidebar-selected-icon-color",e.SIDEBAR_TEXT_COLOR="--sidebar-text-color",e.SIDEBAR_SELECTED_TEXT_COLOR="--sidebar-selected-text-color",e.SIDEBAR_BACKGROUND_COLOR="--sidebar-background-color",e.SIDEBAR_TITLE_COLOR="--sidebar-menu-button-text-color",e.SIDEBAR_BUTTON_COLOR="--sidebar-icon-color",e.SIDEBAR_MENU_BUTTON_BACKGROUND_COLOR="--sidebar-menu-button-background-color",e.TEXT_ACCENT_COLOR="--text-accent-color",e.TEXT_PRIMARY_COLOR="--text-primary-color",e.PRIMARY_BACKGROUND_COLOR="--primary-background-color",e.PRIMARY_TEXT_COLOR="--primary-text-color",e.DIVIDER_COLOR="--divider-color",e.CUSTOM_SIDEBAR_BACKGROUND="--custom-sidebar-background",e.CUSTOM_SIDEBAR_MENU_BACKGROUND="--custom-sidebar-menu-background",e.CUSTOM_SIDEBAR_TITLE_COLOR="--custom-sidebar-title-color",e.CUSTOM_SIDEBAR_BUTTON_COLOR="--custom-sidebar-button-color",e.CUSTOM_SIDEBAR_TEXT_COLOR="--custom-sidebar-text-color",e.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR="--custom-sidebar-selected-text-color",e.CUSTOM_SIDEBAR_ICON_COLOR="--custom-sidebar-icon-color",e.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR="--custom-sidebar-selected-icon-color",e.CUSTOM_SIDEBAR_SELECTION_COLOR="--custom-sidebar-selection-color",e.CUSTOM_SIDEBAR_INFO_COLOR="--custom-sidebar-info-color",e.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR="--custom-sidebar-selected-info-color",e.CUSTOM_SIDEBAR_NOTIFICATION_COLOR="--custom-sidebar-notification-color",e.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR="--custom-sidebar-notification-text-color",e.CUSTOM_SIDEBAR_SELECTION_OPACITY="--custom-sidebar-selection-opacity",e.CUSTOM_SIDEBAR_DIVIDER_COLOR="--custom-sidebar-divider-color"}(Ie||(Ie={})),function(e){e.NOTIFICATIONS_BADGE="notification-badge",e.NOTIFICATIONS_BADGE_COLLAPSED="notification-badge-collapsed",e.IRON_SELECTED="iron-selected"}(ve||(ve={})),function(e){e.PANEL="data-panel",e.ROLE="role",e.PROCESSED="data-processed",e.WITH_NOTIFICATION="data-notification",e.ARIA_SELECTED="aria-selected",e.ARIA_DISABLED="aria-disabled",e.DISABLED="disabled",e.HREF="href",e.STYLE="style"}(Te||(Te={})),function(e){e.MOUSEDOWN="mousedown",e.MOUSEENTER="mouseenter",e.MOUSELEAVE="mouseleave",e.KEYDOWN="keydown",e.HASS_EDIT_SIDEBAR="hass-edit-sidebar",e.RENDER_TEMPLATE="render_template"}(be||(be={})),function(e){e.ARROW_DOWN="ArrowDown",e.ARROW_UP="ArrowUp",e.ENTER="Enter",e.TAB="Tab"}(ye||(ye={})),function(e){e.PAPER_ICON_ITEM="PAPER-ICON-ITEM",e.A="A"}(ge||(ge={}));var xe=["HOME-ASSISTANT","HOME-ASSISTANT-MAIN","HA-SIDEBAR"],Pe=((he={})[pe.HIDDEN]=fe.ALWAYS_HIDDEN,he[pe.NARROW]=fe.AUTO,he[pe.EXTENDED]=fe.DOCKED,he),Be="/profile",He=/^\s*\[\[\[([\s\S]+)\]\]\]\s*$/,ke=/\{\{[\s\S]*\}\}|\{%[\s\S]*%\}/,Fe=/(\s*)([\w-]+\s*:\s*[^;]+;?|\})(\s*)/g,Ue=["title","sidebar_editable","sidebar_mode","sidebar_background","title_color","sidebar_button_color","menu_background","styles","icon_color","icon_color_selected","text_color","text_color_selected","selection_color","info_color","info_color_selected","notification_color","notification_text_color","selection_opacity","divider_color"],Ge=function(e){return Array.isArray(e)?e.map((function(e){return e.toLocaleLowerCase()})):e.toLowerCase().split(/\s*,\s*/)},je=function(e){var t=new Map;return e.forEach((function(e){t.set(e.item,e)})),Array.from(t.values()).sort((function(e,t){return!!e.bottom!=!!t.bottom?e.bottom?1:-1:typeof e.order===De||typeof t.order===De?e.order===t.order?0:typeof e.order===De?1:-1:e.order-t.order}))},We=function(e,t){return new Promise((function(n){var o=0,r=function(){var i=e();i&&t(i)?n(i):++o<100?setTimeout(r,50):n(i)};r()}))},Xe=function(t,n,r){if(r.exceptions){var i=r.exceptions.filter((function(e){return e.user&&Ge(e.user).includes(t)||e.not_user&&!Ge(e.not_user).includes(t)||e.device&&Ge(e.device).some((function(e){return n.includes(e)}))||e.not_device&&!Ge(e.not_device).some((function(e){return n.includes(e)}))})),a=i.length?i[i.length-1]:null,c=i.flatMap((function(e){return e.order||[]})),s=!i.some((function(e){return!e.extend_from_base})),l=function(e,t,n){var o={};return Ue.forEach((function(r){var i=null==t?void 0:t[r],a=n?null!=i?i:e[r]:i;typeof a!==De&&(o[r]=a)})),o}(r,a,s);return e(e({},l),s?{order:je(o(o([],r.order||[],!0),c,!0))}:{order:je(c)})}return e(e({},r),{order:je(r.order||[])})},qe=function(){return new Promise((function(e){setTimeout(e,1)}))};function Ye(e){return null==e}var Ke={isNothing:Ye,isObject:function(e){return"object"==typeof e&&null!==e},toArray:function(e){return Array.isArray(e)?e:Ye(e)?[]:[e]},repeat:function(e,t){var n,o="";for(n=0;nc&&(t=o-c+(i=" ... ").length),n-o>c&&(n=o+c-(a=" ...").length),{str:i+e.slice(t,n).replace(/\t/g,"→")+a,pos:o-t+i.length}}function Je(e,t){return Ke.repeat(" ",t-e.length)+e}var Ze=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,o=/\r?\n|\r|\0/g,r=[0],i=[],a=-1;n=o.exec(e.buffer);)i.push(n.index),r.push(n.index+n[0].length),e.position<=n.index&&a<0&&(a=r.length-2);a<0&&(a=r.length-1);var c,s,l="",u=Math.min(e.line+t.linesAfter,i.length).toString().length,d=t.maxLength-(t.indent+u+3);for(c=1;c<=t.linesBefore&&!(a-c<0);c++)s=Qe(e.buffer,r[a-c],i[a-c],e.position-(r[a]-r[a-c]),d),l=Ke.repeat(" ",t.indent)+Je((e.line-c+1).toString(),u)+" | "+s.str+"\n"+l;for(s=Qe(e.buffer,r[a],i[a],e.position,d),l+=Ke.repeat(" ",t.indent)+Je((e.line+1).toString(),u)+" | "+s.str+"\n",l+=Ke.repeat("-",t.indent+u+3+s.pos)+"^\n",c=1;c<=t.linesAfter&&!(a+c>=i.length);c++)s=Qe(e.buffer,r[a+c],i[a+c],e.position-(r[a]-r[a+c]),d),l+=Ke.repeat(" ",t.indent)+Je((e.line+c+1).toString(),u)+" | "+s.str+"\n";return l.replace(/\n$/,"")},et=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],tt=["scalar","sequence","mapping"];var nt=function(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===et.indexOf(t))throw new ze('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[String(e)]=n}))})),t}(t.styleAliases||null),-1===tt.indexOf(this.kind))throw new ze('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function ot(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,o){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=o)})),n[t]=e})),n}function rt(e){return this.extend(e)}rt.prototype.extend=function(e){var t=[],n=[];if(e instanceof nt)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new ze("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof nt))throw new ze("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new ze("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new ze("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof nt))throw new ze("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var o=Object.create(rt.prototype);return o.implicit=(this.implicit||[]).concat(t),o.explicit=(this.explicit||[]).concat(n),o.compiledImplicit=ot(o,"implicit"),o.compiledExplicit=ot(o,"explicit"),o.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function o(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Et=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var Ot=/^[-+]?[0-9]+e/;var At=new nt("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!Et.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||Ke.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ke.isNegativeZero(e))return"-0.0";return n=e.toString(10),Ot.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),mt=lt.extend({implicit:[ut,dt,ht,At]}),It=mt,vt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Tt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var bt=new nt("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==vt.exec(e)||null!==Tt.exec(e))},construct:function(e){var t,n,o,r,i,a,c,s,l=0,u=null;if(null===(t=vt.exec(e))&&(t=Tt.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],o=+t[2]-1,r=+t[3],!t[4])return new Date(Date.UTC(n,o,r));if(i=+t[4],a=+t[5],c=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(u=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(u=-u)),s=new Date(Date.UTC(n,o,r,i,a,c,l)),u&&s.setTime(s.getTime()-u),s},instanceOf:Date,represent:function(e){return e.toISOString()}});var yt=new nt("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),gt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var St=new nt("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,o=0,r=e.length,i=gt;for(n=0;n64)){if(t<0)return!1;o+=6}return o%8==0},construct:function(e){var t,n,o=e.replace(/[\r\n=]/g,""),r=o.length,i=gt,a=0,c=[];for(t=0;t>16&255),c.push(a>>8&255),c.push(255&a)),a=a<<6|i.indexOf(o.charAt(t));return 0===(n=r%4*6)?(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)):18===n?(c.push(a>>10&255),c.push(a>>2&255)):12===n&&c.push(a>>4&255),new Uint8Array(c)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,o="",r=0,i=e.length,a=gt;for(t=0;t>18&63],o+=a[r>>12&63],o+=a[r>>6&63],o+=a[63&r]),r=(r<<8)+e[t];return 0===(n=i%3)?(o+=a[r>>18&63],o+=a[r>>12&63],o+=a[r>>6&63],o+=a[63&r]):2===n?(o+=a[r>>10&63],o+=a[r>>4&63],o+=a[r<<2&63],o+=a[64]):1===n&&(o+=a[r>>2&63],o+=a[r<<4&63],o+=a[64],o+=a[64]),o}}),Nt=Object.prototype.hasOwnProperty,Ct=Object.prototype.toString;var Rt=new nt("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,o,r,i,a=[],c=e;for(t=0,n=c.length;t>10),56320+(e-65536&1023))}for(var rn=new Array(256),an=new Array(256),cn=0;cn<256;cn++)rn[cn]=nn(cn)?1:0,an[cn]=nn(cn);function sn(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||xt,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function ln(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=Ze(n),new ze(t,n)}function un(e,t){throw ln(e,t)}function dn(e,t){e.onWarning&&e.onWarning.call(null,ln(e,t))}var pn={YAML:function(e,t,n){var o,r,i;null!==e.version&&un(e,"duplication of %YAML directive"),1!==n.length&&un(e,"YAML directive accepts exactly one argument"),null===(o=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&un(e,"ill-formed argument of the YAML directive"),r=parseInt(o[1],10),i=parseInt(o[2],10),1!==r&&un(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=i<2,1!==i&&2!==i&&dn(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var o,r;2!==n.length&&un(e,"TAG directive accepts exactly two arguments"),o=n[0],r=n[1],Yt.test(o)||un(e,"ill-formed tag handle (first argument) of the TAG directive"),Pt.call(e.tagMap,o)&&un(e,'there is a previously declared suffix for "'+o+'" tag handle'),Kt.test(r)||un(e,"ill-formed tag prefix (second argument) of the TAG directive");try{r=decodeURIComponent(r)}catch(t){un(e,"tag prefix is malformed: "+r)}e.tagMap[o]=r}};function fn(e,t,n,o){var r,i,a,c;if(t1&&(e.result+=Ke.repeat("\n",t-1))}function In(e,t){var n,o,r=e.tag,i=e.anchor,a=[],c=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=a),o=e.input.charCodeAt(e.position);0!==o&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,un(e,"tab characters must not be used in indentation")),45===o)&&Qt(e.input.charCodeAt(e.position+1));)if(c=!0,e.position++,On(e,!0,-1)&&e.lineIndent<=t)a.push(null),o=e.input.charCodeAt(e.position);else if(n=e.line,bn(e,t,kt,!1,!0),a.push(e.result),On(e,!0,-1),o=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==o)un(e,"bad indentation of a sequence entry");else if(e.lineIndentt?_=1:e.lineIndent===t?_=0:e.lineIndentt?_=1:e.lineIndent===t?_=0:e.lineIndentt)&&(O&&(a=e.line,c=e.lineStart,s=e.position),bn(e,t,Ft,!0,r)&&(O?h=e.result:E=e.result),O||(hn(e,p,f,_,h,E,a,c,s),_=h=E=null),On(e,!0,-1),l=e.input.charCodeAt(e.position)),(e.line===i||e.lineIndent>t)&&0!==l)un(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===r?un(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?un(e,"repeat of an indentation width identifier"):(l=t+r-1,s=!0)}if(zt(i)){do{i=e.input.charCodeAt(++e.position)}while(zt(i));if(35===i)do{i=e.input.charCodeAt(++e.position)}while(!$t(i)&&0!==i)}for(;0!==i;){for(En(e),e.lineIndent=0,i=e.input.charCodeAt(e.position);(!s||e.lineIndentl&&(l=e.lineIndent),$t(i))u++;else{if(e.lineIndent0){for(r=a,i=0;r>0;r--)(a=Zt(c=e.input.charCodeAt(++e.position)))>=0?i=(i<<4)+a:un(e,"expected hexadecimal character");e.result+=on(i),e.position++}else un(e,"unknown escape sequence");n=o=e.position}else $t(c)?(fn(e,n,o,!0),mn(e,On(e,!1,t)),n=o=e.position):e.position===e.lineStart&&An(e)?un(e,"unexpected end of the document within a double quoted scalar"):(e.position++,o=e.position)}un(e,"unexpected end of the stream within a double quoted scalar")}(e,p)?E=!0:!function(e){var t,n,o;if(42!==(o=e.input.charCodeAt(e.position)))return!1;for(o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!Qt(o)&&!Jt(o);)o=e.input.charCodeAt(++e.position);return e.position===t&&un(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),Pt.call(e.anchorMap,n)||un(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],On(e,!0,-1),!0}(e)?function(e,t,n){var o,r,i,a,c,s,l,u,d=e.kind,p=e.result;if(Qt(u=e.input.charCodeAt(e.position))||Jt(u)||35===u||38===u||42===u||33===u||124===u||62===u||39===u||34===u||37===u||64===u||96===u)return!1;if((63===u||45===u)&&(Qt(o=e.input.charCodeAt(e.position+1))||n&&Jt(o)))return!1;for(e.kind="scalar",e.result="",r=i=e.position,a=!1;0!==u;){if(58===u){if(Qt(o=e.input.charCodeAt(e.position+1))||n&&Jt(o))break}else if(35===u){if(Qt(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&An(e)||n&&Jt(u))break;if($t(u)){if(c=e.line,s=e.lineStart,l=e.lineIndent,On(e,!1,-1),e.lineIndent>=t){a=!0,u=e.input.charCodeAt(e.position);continue}e.position=i,e.line=c,e.lineStart=s,e.lineIndent=l;break}}a&&(fn(e,r,i,!1),mn(e,e.line-c),r=i=e.position,a=!1),zt(u)||(i=e.position+1),u=e.input.charCodeAt(++e.position)}return fn(e,r,i,!1),!!e.result||(e.kind=d,e.result=p,!1)}(e,p,Bt===n)&&(E=!0,null===e.tag&&(e.tag="?")):(E=!0,null===e.tag&&null===e.anchor||un(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===_&&(E=c&&In(e,f))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&un(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),s=0,l=e.implicitTypes.length;s"),null!==e.result&&d.kind!==e.kind&&un(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+d.kind+'", not "'+e.kind+'"'),d.resolve(e.result,e.tag)?(e.result=d.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):un(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||E}function yn(e){var t,n,o,r,i=e.position,a=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(r=e.input.charCodeAt(e.position))&&(On(e,!0,-1),r=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==r));){for(a=!0,r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!Qt(r);)r=e.input.charCodeAt(++e.position);for(o=[],(n=e.input.slice(t,e.position)).length<1&&un(e,"directive name must not be less than one character in length");0!==r;){for(;zt(r);)r=e.input.charCodeAt(++e.position);if(35===r){do{r=e.input.charCodeAt(++e.position)}while(0!==r&&!$t(r));break}if($t(r))break;for(t=e.position;0!==r&&!Qt(r);)r=e.input.charCodeAt(++e.position);o.push(e.input.slice(t,e.position))}0!==r&&En(e),Pt.call(pn,n)?pn[n](e,n,o):dn(e,'unknown document directive "'+n+'"')}On(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,On(e,!0,-1)):a&&un(e,"directives end mark is expected"),bn(e,e.lineIndent-1,Ft,!1,!0),On(e,!0,-1),e.checkLineBreaks&&Xt.test(e.input.slice(i,e.position))&&dn(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&An(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,On(e,!0,-1)):e.position=55296&&o<=56319&&t+1=56320&&n<=57343?1024*(o-55296)+n-56320+65536:o}function ho(e){return/^\n* /.test(e)}var Eo=1,Oo=2,Ao=3,mo=4,Io=5;function vo(e,t,n,o,r,i,a,c){var s,l=0,u=null,d=!1,p=!1,f=-1!==o,_=-1,h=function(e){return uo(e)&&e!==Rn&&!lo(e)&&e!==jn&&e!==Yn&&e!==Wn&&e!==Gn&&e!==Vn&&e!==$n&&e!==Qn&&e!==Zn&&e!==Bn&&e!==kn&&e!==Un&&e!==xn&&e!==Jn&&e!==Xn&&e!==qn&&e!==Fn&&e!==Pn&&e!==Hn&&e!==Kn&&e!==zn}(_o(e,0))&&function(e){return!lo(e)&&e!==Wn}(_o(e,e.length-1));if(t||a)for(s=0;s=65536?s+=2:s++){if(!uo(l=_o(e,s)))return Io;h=h&&fo(l,u,c),u=l}else{for(s=0;s=65536?s+=2:s++){if((l=_o(e,s))===Dn)d=!0,f&&(p=p||s-_-1>o&&" "!==e[_+1],_=s);else if(!uo(l))return Io;h=h&&fo(l,u,c),u=l}p=p||f&&s-_-1>o&&" "!==e[_+1]}return d||p?n>9&&ho(e)?Io:a?i===io?Io:Oo:p?mo:Ao:!h||a||r(e)?i===io?Io:Oo:Eo}function To(e,t,n,o,r){e.dump=function(){if(0===t.length)return e.quotingType===io?'""':"''";if(!e.noCompatMode&&(-1!==to.indexOf(t)||no.test(t)))return e.quotingType===io?'"'+t+'"':"'"+t+"'";var i=e.indent*Math.max(1,n),a=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-i),c=o||e.flowLevel>-1&&n>=e.flowLevel;switch(vo(t,c,e.indent,a,(function(t){return function(e,t){var n,o;for(n=0,o=e.implicitTypes.length;n"+bo(t,e.indent)+yo(co(function(e,t){var n,o,r=/(\n+)([^\n]*)/g,i=(c=e.indexOf("\n"),c=-1!==c?c:e.length,r.lastIndex=c,go(e.slice(0,c),t)),a="\n"===e[0]||" "===e[0];var c;for(;o=r.exec(e);){var s=o[1],l=o[2];n=" "===l[0],i+=s+(a||n||""===l?"":"\n")+go(l,t),a=n}return i}(t,a),i));case Io:return'"'+function(e){for(var t,n="",o=0,r=0;r=65536?r+=2:r++)o=_o(e,r),!(t=eo[o])&&uo(o)?(n+=e[r],o>=65536&&(n+=e[r+1])):n+=t||oo(o);return n}(t)+'"';default:throw new ze("impossible error: invalid scalar style")}}()}function bo(e,t){var n=ho(e)?String(t):"",o="\n"===e[e.length-1];return n+(o&&("\n"===e[e.length-2]||"\n"===e)?"+":o?"":"-")+"\n"}function yo(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function go(e,t){if(""===e||" "===e[0])return e;for(var n,o,r=/ [^ ]/g,i=0,a=0,c=0,s="";n=r.exec(e);)(c=n.index)-i>t&&(o=a>i?a:c,s+="\n"+e.slice(i,o),i=o+1),a=c;return s+="\n",e.length-i>t&&a>i?s+=e.slice(i,a)+"\n"+e.slice(a+1):s+=e.slice(i),s.slice(1)}function So(e,t,n,o){var r,i,a,c="",s=e.tag;for(r=0,i=n.length;r tag resolver accepts not "'+s+'" style');o=c.represent[s](t,s)}e.dump=o}return!0}return!1}function Co(e,t,n,o,r,i,a){e.tag=null,e.dump=n,No(e,n,!1)||No(e,n,!0);var c,s=Nn.call(e.dump),l=o;o&&(o=e.flowLevel<0||e.flowLevel>t);var u,d,p="[object Object]"===s||"[object Array]"===s;if(p&&(d=-1!==(u=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||d||2!==e.indent&&t>0)&&(r=!1),d&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(p&&d&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),"[object Object]"===s)o&&0!==Object.keys(e.dump).length?(!function(e,t,n,o){var r,i,a,c,s,l,u="",d=e.tag,p=Object.keys(n);if(!0===e.sortKeys)p.sort();else if("function"==typeof e.sortKeys)p.sort(e.sortKeys);else if(e.sortKeys)throw new ze("sortKeys must be a boolean or a function");for(r=0,i=p.length;r1024)&&(e.dump&&Dn===e.dump.charCodeAt(0)?l+="?":l+="? "),l+=e.dump,s&&(l+=so(e,t)),Co(e,t+1,c,!0,s)&&(e.dump&&Dn===e.dump.charCodeAt(0)?l+=":":l+=": ",u+=l+=e.dump));e.tag=d,e.dump=u||"{}"}(e,t,e.dump,r),d&&(e.dump="&ref_"+u+e.dump)):(!function(e,t,n){var o,r,i,a,c,s="",l=e.tag,u=Object.keys(n);for(o=0,r=u.length;o1024&&(c+="? "),c+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Co(e,t,a,!1,!1)&&(s+=c+=e.dump));e.tag=l,e.dump="{"+s+"}"}(e,t,e.dump),d&&(e.dump="&ref_"+u+" "+e.dump));else if("[object Array]"===s)o&&0!==e.dump.length?(e.noArrayIndent&&!a&&t>0?So(e,t-1,e.dump,r):So(e,t,e.dump,r),d&&(e.dump="&ref_"+u+e.dump)):(!function(e,t,n){var o,r,i,a="",c=e.tag;for(o=0,r=n.length;o",e.dump=c+" "+e.dump)}return!0}function Ro(e,t){var n,o,r=[],i=[];for(Lo(e,r,i),n=0,o=i.length;n ".concat(me.SPACER))}),(function(e){return!!e}))];case 2:return t=n.sent(),[4,We((function(){return e.querySelectorAll(":scope > ".concat(me.ITEM))}),(function(e){return Array.from(e).every((function(e){return e.querySelector(me.ITEM_TEXT).innerText.trim().length>0}))}))];case 3:return o=n.sent(),[2,[e,o,t]]}}))}))},o.prototype._getCurrentDevice=function(){return navigator.userAgent.toLowerCase()},o.prototype._getIcon=function(e){return e.querySelector([Ae.HA_SVG_ICON,Ae.HA_ICON].join(","))},o.prototype._buildNewItem=function(e){var t=document.createElement("a");return t.href=e.href,t.target=e.target||"",t.tabIndex=-1,t.setAttribute(Te.ROLE,"option"),t.setAttribute(Te.PANEL,e.item.toLowerCase().replace(/\s+/,"-")),t.setAttribute(Te.ARIA_SELECTED,"false"),t.innerHTML='\n \n \n \n \n \n ').concat(e.item,'\n \n \n \n ').trim(),t},o.prototype._getTemplateString=function(e){var t="";return("string"==typeof e||"number"==typeof e&&!Number.isNaN(e)||"boolean"==typeof e||"object"==typeof e)&&(t="string"==typeof e?e.trim():"number"==typeof e||"boolean"==typeof e?e.toString():JSON.stringify(e)),t},o.prototype._updateIcon=function(e,t){var n=this._getIcon(e);if(n){var o=document.createElement(Ae.HA_ICON);o.setAttribute("icon",t),o.setAttribute("slot","item-icon"),n.replaceWith(o)}},o.prototype._subscribeTitle=function(){var e=this;this._sidebar.selector.$.query(me.TITLE).element.then((function(t){e._configWithExceptions.title&&e._subscribeTemplate(e._configWithExceptions.title,(function(e){t.innerHTML=e}))}))},o.prototype._subscribeSideBarEdition=function(){var e=this,t=function(e){e.preventDefault(),e.stopImmediatePropagation()},n=function(e,n){e.removeEventListener(be.HASS_EDIT_SIDEBAR,t,!0),n.removeAttribute(Me)},o=function(e,n){e.removeEventListener(be.HASS_EDIT_SIDEBAR,t,!0),e.addEventListener(be.HASS_EDIT_SIDEBAR,t,!0),n.setAttribute(Me,"")};Promise.all([this._main.element,this._sidebar.selector.$.query(me.MENU).element]).then((function(t){var r=t[0],i=t[1];"boolean"==typeof e._configWithExceptions.sidebar_editable&&(e._isSidebarEditable=e._configWithExceptions.sidebar_editable,e._isSidebarEditable||o(r,i)),"string"==typeof e._configWithExceptions.sidebar_editable&&e._subscribeTemplate(e._configWithExceptions.sidebar_editable,(function(t){"true"===t||"false"===t?(e._isSidebarEditable=!("false"===t),e._isSidebarEditable?n(r,i):o(r,i)):(e._isSidebarEditable=void 0,n(r,i)),e._checkProfileEditableButton()}))}))},o.prototype._subscribeName=function(e,t){var n=e.querySelector(me.ITEM_TEXT);this._subscribeTemplate(t,(function(e){n.innerHTML=e}))},o.prototype._subscribeInfo=function(e,t){var n=e.querySelector(me.ITEM_TEXT);this._subscribeTemplate(t,(function(e){n.dataset.info=e}))},o.prototype._subscribeNotification=function(e,t){var n=e.querySelector("".concat(me.NOTIFICATION_BADGE,":not(").concat(me.NOTIFICATIONS_BADGE_COLLAPSED,")")),o=e.querySelector(me.NOTIFICATIONS_BADGE_COLLAPSED);n||((n=document.createElement("span")).classList.add(ve.NOTIFICATIONS_BADGE),e.querySelector(Ae.PAPER_ICON_ITEM).appendChild(n)),o||((o=document.createElement("span")).classList.add(ve.NOTIFICATIONS_BADGE,ve.NOTIFICATIONS_BADGE_COLLAPSED),e.querySelector("".concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON)).after(o));this._subscribeTemplate(t,(function(t){t.length?(n.innerHTML=t,o.innerHTML=t,e.setAttribute(Te.WITH_NOTIFICATION,"true")):(n.innerHTML="",o.innerHTML="",e.removeAttribute(Te.WITH_NOTIFICATION))}))},o.prototype._subscribeTemplateColorChanges=function(e,t,n){var o=this;n.forEach((function(n){var r=n[0],i=n[1];e[r]&&o._subscribeTemplate(e[r],(function(e){t.style.setProperty(i,e)}))}))},o.prototype._subscribeTemplate=function(e,t){He.test(e)?this._createJsTemplateSubscription(e.replace(He,"$1"),t):ke.test(e)?this._createJinjaTemplateSubscription(e,t):t(this._getTemplateString(e))},o.prototype._createJsTemplateSubscription=function(e,t){var n=this;this._renderer.trackTemplate(e,(function(e){t(n._getTemplateString(e))}))},o.prototype._createJinjaTemplateSubscription=function(e,t){var n=this;window.hassConnection.then((function(o){o.conn.subscribeMessage((function(e){t("".concat(e.result))}),{type:be.RENDER_TEMPLATE,template:e,variables:{user_name:n._ha.hass.user.name,user_is_admin:n._ha.hass.user.is_admin,user_is_owner:n._ha.hass.user.is_owner,user_agent:window.navigator.userAgent}})}))},o.prototype._focusItemByKeyboard=function(e,t){for(var n,o=this._items.length-1,r=e.querySelector("\n ".concat(me.SCOPE," > ").concat(me.ITEM,":not(.").concat(ve.IRON_SELECTED,"):focus,\n ").concat(me.SCOPE," > ").concat(me.ITEM,":focus,\n ").concat(me.SCOPE," > ").concat(me.ITEM,":has(> ").concat(Ae.PAPER_ICON_ITEM,":focus)\n ").trim()),i=0,a=0,c=Object.entries(this._items);a0?i-1:o,this._items[n].element.focus(),this._items[n].element.tabIndex=0},o.prototype._focusItemByTab=function(e,t,n){var o=this._items.length-1;if(t.nodeName===ge.A){var r=t,i=this._items.findIndex((function(e){return e.element===r})),a=NaN;if(n&&i0&&(a=i-1),Number.isNaN(a))if(n)e.querySelector(me.SIDEBAR_NOTIFICATIONS).focus();else e.querySelector(Ae.HA_ICON_BUTTON).focus();else this._items[a].element.querySelector(Ae.PAPER_ICON_ITEM).focus()}else{if(n)e.querySelector("".concat(me.PROFILE," > ").concat(Ae.PAPER_ICON_ITEM)).focus();else this._items[o].element.querySelector(Ae.PAPER_ICON_ITEM).focus()}},o.prototype._getActivePaperIconElement=function(e){void 0===e&&(e=document);var t=e.activeElement;return t?t instanceof HTMLElement&&(t.nodeName===ge.PAPER_ICON_ITEM||t.nodeName===ge.A&&"option"===t.getAttribute("role"))?t:t.shadowRoot&&xe.includes(t.nodeName)?this._getActivePaperIconElement(t.shadowRoot):null:null},o.prototype._processSidebar=function(){var e=this;Promise.all([this._main.element,this._partialPanelResolver.element]).then((function(o){var r=o[0],i=o[1],a=e._configWithExceptions.sidebar_mode,c=matchMedia("(max-width: 870px)");if(a){r.hass.dockedSidebar=Pe[a];var s=function(o){return t(e,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return a===pe.HIDDEN?[3,5]:[4,qe()];case 1:return e.sent(),r.narrow=!1,[4,qe()];case 2:return e.sent(),i.narrow=o,[4,qe()];case 3:return e.sent(),o?[4,this._partialPanelResolver.selector.query(me.HA_MENU_BUTTON).element]:[3,5];case 4:e.sent().narrow=!1,e.label=5;case 5:return[2]}}))}))};c.addEventListener("change",(function(e){s(e.matches)})),s(c.matches)}})),Promise.all([this._sidebar.element,this._sidebar.selector.$.element,this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element]).then((function(t){var n=t[0],o=t[1],r=t[2];e._subscribeTemplateColorChanges(e._configWithExceptions,n,[["title_color",Ie.CUSTOM_SIDEBAR_TITLE_COLOR],["sidebar_button_color",Ie.CUSTOM_SIDEBAR_BUTTON_COLOR],["sidebar_background",Ie.CUSTOM_SIDEBAR_BACKGROUND],["menu_background",Ie.CUSTOM_SIDEBAR_MENU_BACKGROUND],["icon_color",Ie.CUSTOM_SIDEBAR_ICON_COLOR],["icon_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR],["text_color",Ie.CUSTOM_SIDEBAR_TEXT_COLOR],["text_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR],["selection_color",Ie.CUSTOM_SIDEBAR_SELECTION_COLOR],["info_color",Ie.CUSTOM_SIDEBAR_INFO_COLOR],["info_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR],["notification_color",Ie.CUSTOM_SIDEBAR_NOTIFICATION_COLOR],["notification_text_color",Ie.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR],["selection_opacity",Ie.CUSTOM_SIDEBAR_SELECTION_OPACITY],["divider_color",Ie.CUSTOM_SIDEBAR_DIVIDER_COLOR]]),r.addEventListener(be.KEYDOWN,(function(t){t.key!==ye.ARROW_DOWN&&t.key!==ye.ARROW_UP||(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByKeyboard(r,t.key===ye.ARROW_DOWN))}),!0),window.addEventListener(be.KEYDOWN,(function(t){if(t.key===ye.TAB){var n=e._getActivePaperIconElement();if(n)if(n.nodeName===ge.PAPER_ICON_ITEM){var r=n.parentElement;r.getAttribute(Te.HREF)!==Be&&(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByTab(o,r,!t.shiftKey))}else n.getAttribute(Te.HREF)!==Be&&(t.preventDefault(),t.stopImmediatePropagation(),e._focusItemByTab(o,n,!t.shiftKey))}}),!0);var i,a,c,s,l="\n background-color: var(".concat(Ie.CUSTOM_SIDEBAR_NOTIFICATION_COLOR,", var(--accent-color));\n border-radius: 20px;\n color: var(").concat(Ie.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR,", var(").concat(Ie.TEXT_ACCENT_COLOR,", var(").concat(Ie.TEXT_PRIMARY_COLOR,")));\n font-size: 0.65em;\n overflow: hidden;\n padding: 0px 5px;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n ");i="\n ".concat(me.HOST," {\n background: var(").concat(Ie.CUSTOM_SIDEBAR_BACKGROUND,", var(").concat(Ie.SIDEBAR_BACKGROUND_COLOR,")) !important;\n }\n ").concat(me.HOST," ").concat(me.MENU," {\n background: var(").concat(Ie.CUSTOM_SIDEBAR_MENU_BACKGROUND,", var(").concat(Ie.CUSTOM_SIDEBAR_BACKGROUND,", var(").concat(Ie.SIDEBAR_MENU_BUTTON_BACKGROUND_COLOR,", ").concat(Ie.PRIMARY_BACKGROUND_COLOR,")));\n border-bottom: 1px solid var(").concat(Ie.CUSTOM_SIDEBAR_DIVIDER_COLOR,", var(").concat(Ie.DIVIDER_COLOR,"));\n }\n ").concat(me.MENU,"[").concat(Me,"] {\n pointer-events: none;\n }\n ").concat(me.HOST," ").concat(me.MENU," > ").concat(me.HA_ICON_BUTTON," {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_BUTTON_COLOR,", var(").concat(Ie.SIDEBAR_ICON_COLOR,"));\n }\n ").concat(me.HOST," ").concat(me.MENU," > ").concat(me.TITLE," {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_TITLE_COLOR,", var(").concat(Ie.SIDEBAR_TITLE_COLOR,", var(").concat(Ie.PRIMARY_TEXT_COLOR,")));\n } \n ").concat(me.MENU,"[").concat(Me,"] > ").concat(me.HA_ICON_BUTTON," {\n pointer-events: all;\n }\n ").concat(me.HOST," ").concat(me.ITEM," > ").concat(Ae.PAPER_ICON_ITEM,"::before {\n background-color: var(").concat(Ie.CUSTOM_SIDEBAR_SELECTION_COLOR,", var(").concat(Ie.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR,", var(").concat(Ie.SIDEBAR_SELECTED_ICON_COLOR,")));\n opacity: var(").concat(Ie.CUSTOM_SIDEBAR_SELECTION_OPACITY,", 0.12);\n }\n ").concat(me.HOST," ").concat(me.ITEM,"[").concat(Te.WITH_NOTIFICATION,"] > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n max-width: calc(100% - 100px);\n }\n ").concat(me.HOST," ").concat(me.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > :is(").concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON,") {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR,", var(").concat(Ie.SIDEBAR_SELECTED_ICON_COLOR,"));\n }\n ").concat(me.HOST," ").concat(me.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR,", var(").concat(Ie.SIDEBAR_SELECTED_TEXT_COLOR,"));\n }\n ").concat(me.HOST," ").concat(Ae.PAPER_ICON_ITEM," > :is(").concat(Ae.HA_SVG_ICON,", ").concat(Ae.HA_ICON,") {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_ICON_COLOR,", var(").concat(Ie.SIDEBAR_ICON_COLOR,"));\n }\n ").concat(me.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_TEXT_COLOR,", var(").concat(Ie.SIDEBAR_TEXT_COLOR,"));\n }\n ").concat(me.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATION_BADGE,":not(").concat(me.NOTIFICATIONS_BADGE_COLLAPSED,") {\n left: calc(var(--app-drawer-width, 248px) - 22px);\n max-width: 80px;\n transform: translateX(-100%);\n ").concat(l,"\n }\n ").concat(me.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATIONS_BADGE_COLLAPSED," {\n bottom: 14px;\n left: 26px;\n max-width: 20px;\n ").concat(l,"\n }\n ").concat(me.HOST," ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.CONFIGURATION_BADGE," {\n background-color: var(").concat(Ie.CUSTOM_SIDEBAR_NOTIFICATION_COLOR,", var(--accent-color));\n color: var(").concat(Ie.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR,", var(").concat(Ie.TEXT_ACCENT_COLOR,", var(").concat(Ie.TEXT_PRIMARY_COLOR,")));\n }\n ").concat(me.HOST," ").concat(me.DIVIDER,"::before {\n background-color: var(").concat(Ie.CUSTOM_SIDEBAR_DIVIDER_COLOR,", var(").concat(Ie.DIVIDER_COLOR,"));\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.NOTIFICATIONS_BADGE_COLLAPSED," {\n opacity: 0;\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n display: flex;\n flex-direction: column;\n gap: 5px;\n line-height: 1;\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT,"::after {\n content: attr(data-info);\n display: none;\n font-size: 11px;\n line-height: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT,"[data-info]::after {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_INFO_COLOR,", var(").concat(Ie.SIDEBAR_TEXT_COLOR,"));\n display: block;\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM).concat(me.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT," {\n z-index: 1;\n }\n ").concat(me.HOST_EXPANDED," ").concat(Ae.PAPER_LISTBOX," > ").concat(me.ITEM).concat(me.ITEM_SELECTED," > ").concat(Ae.PAPER_ICON_ITEM," > ").concat(me.ITEM_TEXT,"[data-info]::after {\n color: var(").concat(Ie.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR,", var(").concat(Ie.SIDEBAR_SELECTED_TEXT_COLOR,"));\n }\n ").concat(e._configWithExceptions.styles||"","\n ").trim(),c=function(e){return e.host.localName}(a=o),(s=document.createElement("style")).setAttribute("id","".concat(Se,"_").concat(c)),a.appendChild(s),s.innerHTML=i.replace(Fe,"$2")}))},o.prototype._rearrange=function(){var t=this;this._getElements().then((function(n){var o=t._configWithExceptions.order,r=n[0],i=n[1],a=n[2],c=0,s=!1,l=Array.from(i),u=new Set,d=o.reduce((function(t,n){var o=n.item,r=n.match,i=n.exact,a=n.new_item,c=o.toLocaleLowerCase(),s=a?void 0:l.find((function(e){var t=r===_e.DATA_PANEL?e.getAttribute(Te.PANEL):r===_e.HREF?e.getAttribute(Te.HREF):e.querySelector(me.ITEM_TEXT).innerText.trim();return!((!i||o!==t)&&(i||!(null==t?void 0:t.toLowerCase().includes(c))))&&(!u.has(e)&&(u.add(e),!0))}));return s&&s.setAttribute(Te.PROCESSED,"true"),(a||s)&&t.push(e(e({},n),{element:s})),a||s||console.warn("".concat(Se,": you have an order item in your configuration that didn't match any sidebar item: \"").concat(o,'"')),t}),[]),p=function(){s||(l.forEach((function(e){e.hasAttribute(Te.PROCESSED)||(e.style.order="".concat(c))})),c++,a.style.order="".concat(c),c++,s=!0)};d.forEach((function(e){if(e.bottom&&p(),e.new_item&&!e.hide){var n=t._buildNewItem(e);n.style.order="".concat(c),r.appendChild(n),e.element=n}else if(e.element){var o=e.element;o.style.order="".concat(c),e.hide&&(o.style.display="none"),e.icon&&t._updateIcon(o,e.icon),e.href&&(o.href=e.href),e.target&&(o.target=e.target)}e.hide||(e.name&&t._subscribeName(e.element,e.name),e.info&&t._subscribeInfo(e.element,e.info),e.notification&&t._subscribeNotification(e.element,e.notification),t._subscribeTemplateColorChanges(e,e.element,[["icon_color",Ie.CUSTOM_SIDEBAR_ICON_COLOR],["icon_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR],["text_color",Ie.CUSTOM_SIDEBAR_TEXT_COLOR],["text_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR],["selection_color",Ie.CUSTOM_SIDEBAR_SELECTION_COLOR],["selection_opacity",Ie.CUSTOM_SIDEBAR_SELECTION_OPACITY],["info_color",Ie.CUSTOM_SIDEBAR_INFO_COLOR],["info_color_selected",Ie.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR],["notification_color",Ie.CUSTOM_SIDEBAR_NOTIFICATION_COLOR],["notification_text_color",Ie.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR]]),e.new_item&&(e.element.addEventListener(be.MOUSEENTER,t._mouseEnterBinded),e.element.addEventListener(be.MOUSELEAVE,t._mouseLeaveBinded)),e.element.addEventListener(be.MOUSEDOWN,t._itemTouchedBinded),e.element.addEventListener(be.KEYDOWN,(function(e){e.key===ye.ENTER&&t._itemTouchedBinded()})),t._items.push(e)),c++})),d.length&&p(),t._panelLoaded()}))},o.prototype._itemTouched=function(){return t(this,void 0,void 0,(function(){var e=this;return n(this,(function(t){return this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element.then((function(t){e._sidebarScroll=t.scrollTop})),[2]}))}))},o.prototype._mouseEnter=function(e){this._sidebar.element.then((function(t){t.alwaysExpand||(t._mouseLeaveTimeout&&(clearTimeout(t._mouseLeaveTimeout),t._mouseLeaveTimeout=void 0),t._showTooltip(e.currentTarget))}))},o.prototype._mouseLeave=function(){return t(this,void 0,void 0,(function(){return n(this,(function(e){return this._sidebar.element.then((function(e){e._mouseLeaveTimeout&&clearTimeout(e._mouseLeaveTimeout),e._mouseLeaveTimeout=window.setTimeout((function(){e._hideTooltip()}),500)})),[2]}))}))},o.prototype._checkProfileEditableButton=function(){return t(this,void 0,void 0,(function(){var e,t;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),"/profile/general"!==e.__route.path?[3,3]:[4,this._partialPanelResolver.selector.query(me.EDIT_SIDEBAR_BUTTON).element];case 2:(t=n.sent())&&(!1===this._isSidebarEditable?t.setAttribute(Te.DISABLED,""):t.removeAttribute(Te.DISABLED)),n.label=3;case 3:return[2]}}))}))},o.prototype._panelLoaded=function(){return t(this,void 0,void 0,(function(){var e,t,o,r,i;return n(this,(function(n){switch(n.label){case 0:return[4,this._partialPanelResolver.element];case 1:return e=n.sent(),t=e.__route.path,[4,this._sidebar.selector.$.query(Ae.PAPER_LISTBOX).element];case 2:return o=n.sent(),r=o.querySelector(["".concat(me.SCOPE," > ").concat(me.ITEM,'[href="').concat(t,'"]'),"".concat(me.SCOPE," > ").concat(me.ITEM,'[href="').concat(t,'/dashboard"]')].join(",")),i=r?null:this._items.reduce((function(e,n){var o=n.element,r=o.getAttribute(Te.HREF);return t.startsWith(r)&&(!e||r.length>e.getAttribute(Te.HREF).length)&&(e=o),e}),null),this._items.forEach((function(e){var t=e.element,n=r&&r===t||!r&&i===t;t.classList.toggle(ve.IRON_SELECTED,n),t.setAttribute(Te.ARIA_SELECTED,"".concat(n))})),o.scrollTop!==this._sidebarScroll&&(o.scrollTop=this._sidebarScroll),this._checkProfileEditableButton(),[2]}}))}))},o.prototype._process=function(){var e=this;this._homeAssistant.element.then((function(t){e._ha=t,new Oe(e._ha).getRenderer().then((function(t){e._renderer=t,e._getConfigWithExceptions().then((function(){e._processSidebar(),e._subscribeTitle(),e._subscribeSideBarEdition(),e._rearrange()}))}))}))},o}();window.CustomSidebar||(console.info("%c≡ ".concat(Se.toUpperCase()," (YAML)%cv").concat("6.1.4"),"font-weight: bold; background: #EEEEEE; color: #666666; padding: 2px 5px;","font-weight: normal; background: #E87A24; color: #FFFFFF; padding: 2px 5px"),window.CustomSidebar=new Uo)}(); diff --git a/www/community/custom-sidebar/custom-sidebar-yaml.js.gz b/www/community/custom-sidebar/custom-sidebar-yaml.js.gz index 6d9d1bc1..bb0dff98 100644 Binary files a/www/community/custom-sidebar/custom-sidebar-yaml.js.gz and b/www/community/custom-sidebar/custom-sidebar-yaml.js.gz differ diff --git a/www/community/custom-sidebar/custom-sidebar.js b/www/community/custom-sidebar/custom-sidebar.js index 6d9de8e7..407fb14b 100644 --- a/www/community/custom-sidebar/custom-sidebar.js +++ b/www/community/custom-sidebar/custom-sidebar.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n,o,i,a,E;!function(e){e.SIDEBAR="ha-sidebar",e.PAPER_LISTBOX="paper-listbox",e.PAPER_ICON_ITEM="paper-icon-item",e.HA_SVG_ICON="ha-svg-icon",e.HA_ICON="ha-icon",e.HA_ICON_BUTTON="ha-icon-button"}(e||(e={})),function(e){e.SCOPE=":scope",e.TITLE=".title",e.ITEM='a[role="option"]',e.SPACER=".spacer",e.ITEM_TEXT=".item-text",e.NOTIFICATION_BADGE=".notification-badge",e.NOTIFICATIONS_BADGE_COLLAPSED=".notification-badge-collapsed",e.EDIT_SIDEBAR_BUTTON_LEGACY="ha-panel-profile$ ha-settings-row mwc-button",e.EDIT_SIDEBAR_BUTTON="ha-panel-profile ha-profile-section-general$ ha-settings-row mwc-button",e.SIDEBAR_NOTIFICATIONS=".notifications",e.PROFILE=".profile",e.MENU=".menu",e.HA_ICON_BUTTON="ha-icon-button"}(t||(t={})),function(e){e.NOTIFICATIONS_BADGE="notification-badge",e.NOTIFICATIONS_BADGE_COLLAPSED="notification-badge-collapsed",e.IRON_SELECTED="iron-selected"}(n||(n={})),function(e){e.PANEL="data-panel",e.ROLE="role",e.PROCESSED="data-processed",e.WITH_NOTIFICATION="data-notification",e.ARIA_SELECTED="aria-selected",e.ARIA_DISABLED="aria-disabled",e.DISABLED="disabled",e.HREF="href",e.STYLE="style"}(o||(o={})),function(e){e.MOUSEDOWN="mousedown",e.MOUSEENTER="mouseenter",e.MOUSELEAVE="mouseleave",e.KEYDOWN="keydown",e.HASS_EDIT_SIDEBAR="hass-edit-sidebar",e.RENDER_TEMPLATE="render_template"}(i||(i={})),function(e){e.ARROW_DOWN="ArrowDown",e.ARROW_UP="ArrowUp",e.ENTER="Enter",e.TAB="Tab"}(a||(a={})),function(e){e.PAPER_ICON_ITEM="PAPER-ICON-ITEM",e.A="A"}(E||(E={})),"function"==typeof SuppressedError&&SuppressedError;var r,I;(r=function(){return window.CustomSidebar},I=function(e){return!!e},new Promise((function(e){var t=0,n=function(){var o=r();o&&I(o)?e(o):++t<100?setTimeout(n,50):e(o)};n()}))).then((function(e){if(!e)throw Error("".concat("custom-sidebar",": you need to add the plugin as a frontend > extra_module_url module.\nCheck the documentation: https://github.com/elchininet/custom-sidebar#installation"))}))}(); +!function(){"use strict";var o,e,t,E;!function(o){o.HIDDEN="hidden",o.NARROW="narrow",o.EXTENDED="extended"}(o||(o={})),function(o){o.DOCKED="docked",o.AUTO="auto",o.ALWAYS_HIDDEN="always_hidden"}(e||(e={})),function(o){o.TEXT="text",o.DATA_PANEL="data-panel",o.HREF="href"}(t||(t={}));var O,i,n,r,_,c,a,T;!function(o){o.SIDEBAR="ha-sidebar",o.PAPER_LISTBOX="paper-listbox",o.PAPER_ICON_ITEM="paper-icon-item",o.HA_SVG_ICON="ha-svg-icon",o.HA_ICON="ha-icon",o.HA_ICON_BUTTON="ha-icon-button"}(O||(O={})),function(o){o.HOST=":host",o.HOST_EXPANDED=":host([expanded])",o.SCOPE=":scope",o.TITLE=".title",o.ITEM='a[role="option"]',o.ITEM_SELECTED=".iron-selected",o.SPACER=".spacer",o.ITEM_TEXT=".item-text",o.NOTIFICATION_BADGE=".notification-badge",o.NOTIFICATIONS_BADGE_COLLAPSED=".notification-badge-collapsed",o.CONFIGURATION_BADGE=".configuration-badge",o.HA_MENU_BUTTON="ha-panel-lovelace$ hui-root$ .toolbar > ha-menu-button",o.EDIT_SIDEBAR_BUTTON="ha-panel-profile ha-profile-section-general$ ha-settings-row mwc-button",o.SIDEBAR_NOTIFICATIONS=".notifications",o.PROFILE=".profile",o.MENU=".menu",o.DIVIDER=".divider",o.HA_ICON_BUTTON="ha-icon-button"}(i||(i={})),function(o){o.SIDEBAR_ICON_COLOR="--sidebar-icon-color",o.SIDEBAR_SELECTED_ICON_COLOR="--sidebar-selected-icon-color",o.SIDEBAR_TEXT_COLOR="--sidebar-text-color",o.SIDEBAR_SELECTED_TEXT_COLOR="--sidebar-selected-text-color",o.SIDEBAR_BACKGROUND_COLOR="--sidebar-background-color",o.SIDEBAR_TITLE_COLOR="--sidebar-menu-button-text-color",o.SIDEBAR_BUTTON_COLOR="--sidebar-icon-color",o.SIDEBAR_MENU_BUTTON_BACKGROUND_COLOR="--sidebar-menu-button-background-color",o.TEXT_ACCENT_COLOR="--text-accent-color",o.TEXT_PRIMARY_COLOR="--text-primary-color",o.PRIMARY_BACKGROUND_COLOR="--primary-background-color",o.PRIMARY_TEXT_COLOR="--primary-text-color",o.DIVIDER_COLOR="--divider-color",o.CUSTOM_SIDEBAR_BACKGROUND="--custom-sidebar-background",o.CUSTOM_SIDEBAR_MENU_BACKGROUND="--custom-sidebar-menu-background",o.CUSTOM_SIDEBAR_TITLE_COLOR="--custom-sidebar-title-color",o.CUSTOM_SIDEBAR_BUTTON_COLOR="--custom-sidebar-button-color",o.CUSTOM_SIDEBAR_TEXT_COLOR="--custom-sidebar-text-color",o.CUSTOM_SIDEBAR_SELECTED_TEXT_COLOR="--custom-sidebar-selected-text-color",o.CUSTOM_SIDEBAR_ICON_COLOR="--custom-sidebar-icon-color",o.CUSTOM_SIDEBAR_SELECTED_ICON_COLOR="--custom-sidebar-selected-icon-color",o.CUSTOM_SIDEBAR_SELECTION_COLOR="--custom-sidebar-selection-color",o.CUSTOM_SIDEBAR_INFO_COLOR="--custom-sidebar-info-color",o.CUSTOM_SIDEBAR_SELECTED_INFO_COLOR="--custom-sidebar-selected-info-color",o.CUSTOM_SIDEBAR_NOTIFICATION_COLOR="--custom-sidebar-notification-color",o.CUSTOM_SIDEBAR_NOTIFICATION_TEXT_COLOR="--custom-sidebar-notification-text-color",o.CUSTOM_SIDEBAR_SELECTION_OPACITY="--custom-sidebar-selection-opacity",o.CUSTOM_SIDEBAR_DIVIDER_COLOR="--custom-sidebar-divider-color"}(n||(n={})),function(o){o.NOTIFICATIONS_BADGE="notification-badge",o.NOTIFICATIONS_BADGE_COLLAPSED="notification-badge-collapsed",o.IRON_SELECTED="iron-selected"}(r||(r={})),function(o){o.PANEL="data-panel",o.ROLE="role",o.PROCESSED="data-processed",o.WITH_NOTIFICATION="data-notification",o.ARIA_SELECTED="aria-selected",o.ARIA_DISABLED="aria-disabled",o.DISABLED="disabled",o.HREF="href",o.STYLE="style"}(_||(_={})),function(o){o.MOUSEDOWN="mousedown",o.MOUSEENTER="mouseenter",o.MOUSELEAVE="mouseleave",o.KEYDOWN="keydown",o.HASS_EDIT_SIDEBAR="hass-edit-sidebar",o.RENDER_TEMPLATE="render_template"}(c||(c={})),function(o){o.ARROW_DOWN="ArrowDown",o.ARROW_UP="ArrowUp",o.ENTER="Enter",o.TAB="Tab"}(a||(a={})),function(o){o.PAPER_ICON_ITEM="PAPER-ICON-ITEM",o.A="A"}(T||(T={})),(E={})[o.HIDDEN]=e.ALWAYS_HIDDEN,E[o.NARROW]=e.AUTO,E[o.EXTENDED]=e.DOCKED,"function"==typeof SuppressedError&&SuppressedError;var I,A;(I=function(){return window.CustomSidebar},A=function(o){return!!o},new Promise((function(o){var e=0,t=function(){var E=I();E&&A(E)?o(E):++e<100?setTimeout(t,50):o(E)};t()}))).then((function(o){if(!o)throw Error("".concat("custom-sidebar",": you need to add the plugin as a frontend > extra_module_url module.\nCheck the documentation: https://github.com/elchininet/custom-sidebar#installation"))}))}(); diff --git a/www/community/custom-sidebar/custom-sidebar.js.gz b/www/community/custom-sidebar/custom-sidebar.js.gz index 5734b3e2..f7cde43d 100644 Binary files a/www/community/custom-sidebar/custom-sidebar.js.gz and b/www/community/custom-sidebar/custom-sidebar.js.gz differ diff --git a/www/community/ha-tsmoon-card/tsmoon-card.js b/www/community/ha-tsmoon-card/tsmoon-card.js index a5b2c96b..af794f06 100644 --- a/www/community/ha-tsmoon-card/tsmoon-card.js +++ b/www/community/ha-tsmoon-card/tsmoon-card.js @@ -35,32 +35,32 @@ var TSMoonCard = (function (exports) { * Copyright 2019 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ - const t=globalThis,e$1=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s=Symbol(),o$2=new WeakMap;let n$3 = class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e;}get styleSheet(){let t=this.o;const s=this.t;if(e$1&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o$2.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o$2.set(s,t));}return t}toString(){return this.cssText}};const r$3=t=>new n$3("string"==typeof t?t:t+"",void 0,s),i$1=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[o+1]),t[0]);return new n$3(o,t,s)},S$1=(s,o)=>{if(e$1)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement("style"),n=t.litNonce;void 0!==n&&o.setAttribute("nonce",n),o.textContent=e.cssText,s.appendChild(o);}},c$2=e$1?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return r$3(e)})(t):t; + const t$1=globalThis,e$2=t$1.ShadowRoot&&(void 0===t$1.ShadyCSS||t$1.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s$1=Symbol(),o$3=new WeakMap;let n$3 = class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s$1)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e;}get styleSheet(){let t=this.o;const s=this.t;if(e$2&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o$3.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o$3.set(s,t));}return t}toString(){return this.cssText}};const r$5=t=>new n$3("string"==typeof t?t:t+"",void 0,s$1),i$3=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+t[o+1]),t[0]);return new n$3(o,t,s$1)},S$1=(s,o)=>{if(e$2)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement("style"),n=t$1.litNonce;void 0!==n&&o.setAttribute("nonce",n),o.textContent=e.cssText,s.appendChild(o);}},c$2=e$2?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const s of t.cssRules)e+=s.cssText;return r$5(e)})(t):t; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r$2,getOwnPropertyNames:h$2,getOwnPropertySymbols:o$1,getPrototypeOf:n$2}=Object,a=globalThis,c$1=a.trustedTypes,l=c$1?c$1.emptyScript:"",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t);}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t);}catch(t){i=null;}}return i}},f$2=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f$2};Symbol.metadata??=Symbol("metadata"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t);}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r);}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r$2(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t;}};return {get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i);},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d("elementProperties")))return;const t=n$2(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties);}static finalize(){if(this.hasOwnProperty(d("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d("properties"))){const t=this.properties,s=[...h$2(t),...o$1(t)];for(const i of s)this.createProperty(i,t[i]);}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i);}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t);}this.elementStyles=this.finalizeStyles(this.styles);}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(c$2(s));}else void 0!==s&&i.push(c$2(s));return i}static _$Eu(t,s){const i=s.attribute;return !1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev();}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)));}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.();}removeController(t){this._$EO?.delete(t);}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t);}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return S$1(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()));}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()));}attributeChangedCallback(t,s,i){this._$AK(t,i);}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null;}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null;}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f$2)(this[t],s))return;this.P(t,s,i);}!1===this.isUpdatePending&&(this._$ES=this._$ET());}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t);}async _$ET(){this.isUpdatePending=!0;try{await this._$ES;}catch(t){Promise.reject(t);}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0;}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i);}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU();}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s);}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t);}_$EU(){this._$AL=new Map,this.isUpdatePending=!1;}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return !0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU();}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:"open"},b[d("elementProperties")]=new Map,b[d("finalized")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push("2.0.4"); + */const{is:i$2,defineProperty:e$1,getOwnPropertyDescriptor:r$4,getOwnPropertyNames:h$1,getOwnPropertySymbols:o$2,getPrototypeOf:n$2}=Object,a$1=globalThis,c$1=a$1.trustedTypes,l$1=c$1?c$1.emptyScript:"",p$1=a$1.reactiveElementPolyfillSupport,d$1=(t,s)=>t,u$1={toAttribute(t,s){switch(s){case Boolean:t=t?l$1:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t);}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t);}catch(t){i=null;}}return i}},f$1=(t,s)=>!i$2(t,s),y$1={attribute:!0,type:String,converter:u$1,reflect:!1,hasChanged:f$1};Symbol.metadata??=Symbol("metadata"),a$1.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t);}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y$1){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e$1(this.prototype,t,r);}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r$4(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t;}};return {get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i);},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y$1}static _$Ei(){if(this.hasOwnProperty(d$1("elementProperties")))return;const t=n$2(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties);}static finalize(){if(this.hasOwnProperty(d$1("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d$1("properties"))){const t=this.properties,s=[...h$1(t),...o$2(t)];for(const i of s)this.createProperty(i,t[i]);}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i);}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t);}this.elementStyles=this.finalizeStyles(this.styles);}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(c$2(s));}else void 0!==s&&i.push(c$2(s));return i}static _$Eu(t,s){const i=s.attribute;return !1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev();}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)));}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.();}removeController(t){this._$EO?.delete(t);}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t);}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return S$1(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()));}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()));}attributeChangedCallback(t,s,i){this._$AK(t,i);}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u$1).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null;}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u$1;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null;}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f$1)(this[t],s))return;this.P(t,s,i);}!1===this.isUpdatePending&&(this._$ES=this._$ET());}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t);}async _$ET(){this.isUpdatePending=!0;try{await this._$ES;}catch(t){Promise.reject(t);}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0;}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i);}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU();}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s);}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t);}_$EU(){this._$AL=new Map,this.isUpdatePending=!1;}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return !0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU();}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:"open"},b[d$1("elementProperties")]=new Map,b[d$1("finalized")]=new Map,p$1?.({ReactiveElement:b}),(a$1.reactiveElementVersions??=[]).push("2.0.4"); /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause */ - const n$1=globalThis,c=n$1.trustedTypes,h$1=c?c.createPolicy("lit-html",{createHTML:t=>t}):void 0,f$1="$lit$",v=`lit$${Math.random().toFixed(9).slice(2)}$`,m="?"+v,_=`<${m}>`,w=document,lt=()=>w.createComment(""),st=t=>null===t||"object"!=typeof t&&"function"!=typeof t,g=Array.isArray,$=t=>g(t)||"function"==typeof t?.[Symbol.iterator],x="[ \t\n\f\r]",T=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,E=/-->/g,k=/>/g,O=RegExp(`>|${x}(?:([^\\s"'>=/]+)(${x}*=${x}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),S=/'/g,j=/"/g,M=/^(?:script|style|textarea|title)$/i,P=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),ke=P(1),R=Symbol.for("lit-noChange"),D=Symbol.for("lit-nothing"),V=new WeakMap,I=w.createTreeWalker(w,129);function N(t,i){if(!g(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==h$1?h$1.createHTML(i):i}const U=(t,i)=>{const s=t.length-1,e=[];let h,o=2===i?"":3===i?"":"",n=T;for(let i=0;i"===l[0]?(n=h??T,c=-1):void 0===l[1]?c=-2:(c=n.lastIndex-l[2].length,r=l[1],n=void 0===l[3]?O:'"'===l[3]?j:S):n===j||n===S?n=O:n===E||n===k?n=T:(n=O,h=void 0);const u=n===O&&t[i+1].startsWith("/>")?" ":"";o+=n===T?s+_:c>=0?(e.push(r),s.slice(0,c)+f$1+s.slice(c)+v+u):s+v+(-2===c?i:u);}return [N(t,o+(t[s]||"")+(2===i?"":3===i?"":"")),e]};class B{constructor({strings:t,_$litType$:i},s){let e;this.parts=[];let h=0,o=0;const n=t.length-1,r=this.parts,[l,a]=U(t,i);if(this.el=B.createElement(l,s),I.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes);}for(;null!==(e=I.nextNode())&&r.length0){e.textContent=c?c.emptyScript:"";for(let s=0;s2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=D;}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=z(this,t,i,0),o=!st(t)||t!==this._$AH&&t!==R,o&&(this._$AH=t);else {const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new et(i.insertBefore(lt(),t),t,void 0,s??{});}return h._$AI(t),h}; + const t=globalThis,i$1=t.trustedTypes,s=i$1?i$1.createPolicy("lit-html",{createHTML:t=>t}):void 0,e="$lit$",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o$1="?"+h,n$1=`<${o$1}>`,r$3=document,l=()=>r$3.createComment(""),c=t=>null===t||"object"!=typeof t&&"function"!=typeof t,a=Array.isArray,u=t=>a(t)||"function"==typeof t?.[Symbol.iterator],d="[ \t\n\f\r]",f=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\s"'>=/]+)(${d}*=${d}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),p=/'/g,g=/"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),T=Symbol.for("lit-noChange"),E=Symbol.for("lit-nothing"),A=new WeakMap,C=r$3.createTreeWalker(r$3,129);function P(t,i){if(!a(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?"":3===i?"":"",c=f;for(let i=0;i"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith("/>")?" ":"";l+=c===f?s+n$1:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x);}return [P(t,l+(t[s]||"")+(2===i?"":3===i?"":"")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes);}for(;null!==(r=C.nextNode())&&d.length0){r.textContent=i$1?i$1.emptyScript:"";for(let i=0;i2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E;}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else {const e=t;let n,r;for(t=h[0],n=0;n{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{});}return h._$AI(t),h}; /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */class h extends b{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0;}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=Q(e,this.renderRoot,this.renderOptions);}connectedCallback(){super.connectedCallback(),this.o?.setConnected(!0);}disconnectedCallback(){super.disconnectedCallback(),this.o?.setConnected(!1);}render(){return R}}h._$litElement$=!0,h["finalized"]=!0,globalThis.litElementHydrateSupport?.({LitElement:h});const f=globalThis.litElementPolyfillSupport;f?.({LitElement:h});(globalThis.litElementVersions??=[]).push("4.1.0"); + */let r$2 = class r extends b{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0;}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=B(s,this.renderRoot,this.renderOptions);}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0);}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1);}render(){return T}};r$2._$litElement$=!0,r$2["finalized"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r$2});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r$2});(globalThis.litElementVersions??=[]).push("4.1.1"); /** * @license * Copyright 2017 Google LLC * SPDX-License-Identifier: BSD-3-Clause - */const o={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f$2},r$1=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),"accessor"===n){const{name:o}=r;return {set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t);},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if("setter"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t);}}throw Error("Unsupported decorator location: "+n)};function n(t){return (e,o)=>"object"==typeof o?r$1(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)} + */const o={attribute:!0,type:String,converter:u$1,reflect:!1,hasChanged:f$1},r$1=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),"accessor"===n){const{name:o}=r;return {set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t);},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if("setter"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t);}}throw Error("Unsupported decorator location: "+n)};function n(t){return (e,o)=>"object"==typeof o?r$1(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)} /** * @license @@ -68,7 +68,7 @@ var TSMoonCard = (function (exports) { * SPDX-License-Identifier: BSD-3-Clause */function r(r){return n({...r,state:!0,attribute:!1})} - var styles = i$1 ` + var styles = i$3 ` .truncate { white-space: nowrap; @@ -224,26 +224,26 @@ var TSMoonCard = (function (exports) { } }; - var common$7 = { + var common$b = { version: "Versió", title: "Sol i Lluna Mínim", title_card: "Targeta Sol amb Lluna", description: "Targeta per mostrar l'estat del sol i la lluna.", invalid_configuration: "Configuració no vàlida" }; - var editor$7 = { + var editor$b = { moon_entity: "Entitat de la Lluna (Opcional)" }; - var errors$7 = { + var errors$b = { missing_moon_entity: "Falta moon_entity a la configuració", invalid_icon_type: "Els colors següents de la configuració no són vàlids:" }; - var card$7 = { + var card$b = { moon_phase: "Fase de Lluna", moon_rise: "Sortida de Lluna", moon_set: "Posta de Lluna" }; - var moon$7 = { + var moon$b = { new_moon: "Lluna Nova", waxing_crescent: "Lluna Nova Visible", first_quarter: "Quart Creixent", @@ -254,43 +254,90 @@ var TSMoonCard = (function (exports) { waning_crescent: "Lluna Minvant" }; var ca = { - common: common$7, - editor: editor$7, - errors: errors$7, - card: card$7, - moon: moon$7 + common: common$b, + editor: editor$b, + errors: errors$b, + card: card$b, + moon: moon$b }; var ca$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$7, - common: common$7, + card: card$b, + common: common$b, default: ca, - editor: editor$7, - errors: errors$7, - moon: moon$7 + editor: editor$b, + errors: errors$b, + moon: moon$b }); - var common$6 = { + var common$a = { + version: "Verze", + title: "Minimal Sun Moon", + title_card: "Karta Minimal Sun Moon", + description: "Minimální karta na vykreslení stavu slunce a měsíce.", + invalid_configuration: "Neplatná konfigurace" + }; + var editor$a = { + moon_entity: "Entita měsíce (volitelné)" + }; + var errors$a = { + missing_moon_entity: "moon_entity chybí v konfiguraci", + invalid_icon_type: "Následující barvy ve vaší konfiguraci jsou neplatné:" + }; + var card$a = { + moon_phase: "Fáze měsíce", + moon_rise: "Východ měsíce", + moon_set: "Západ měsíce" + }; + var moon$a = { + new_moon: "Nov", + waxing_crescent: "Dorůstající srpek", + first_quarter: "První čtvrt", + waxing_gibbous: "Dorůstající měsíc", + full_moon: "Úplněk", + waning_gibbous: "Couvající měsíc", + last_quarter: "Poslední čtvrt", + waning_crescent: "Ubývající srpek" + }; + var cz = { + common: common$a, + editor: editor$a, + errors: errors$a, + card: card$a, + moon: moon$a + }; + + var cz$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + card: card$a, + common: common$a, + default: cz, + editor: editor$a, + errors: errors$a, + moon: moon$a + }); + + var common$9 = { version: "Version", title: "Sonne | Mond Karte", title_card: "Minimal Sonne | Mond Karte", description: "Eine minimalistische Karte, um den Stand der Sonne und des Mondes darzustellen.", invalid_configuration: "Ungültige Konfiguration" }; - var editor$6 = { + var editor$9 = { moon_entity: "Mondentität (Optional)" }; - var errors$6 = { + var errors$9 = { missing_moon_entity: "Die Mondentität (moon_entity) fehlt in der Konfiguration!", invalid_icon_type: "Die folgenden Farben in der Konfiguration sind ungültig:" }; - var card$6 = { + var card$9 = { moon_phase: "Mondphase", moon_rise: "Mondaufgang", moon_set: "Monduntergang" }; - var moon$6 = { + var moon$9 = { new_moon: "Neumond", waxing_crescent: "Zunehmende Mondsichel", first_quarter: "Erstes Viertel", @@ -301,43 +348,43 @@ var TSMoonCard = (function (exports) { waning_crescent: "Abnehmende Mondsichel" }; var de = { - common: common$6, - editor: editor$6, - errors: errors$6, - card: card$6, - moon: moon$6 + common: common$9, + editor: editor$9, + errors: errors$9, + card: card$9, + moon: moon$9 }; var de$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$6, - common: common$6, + card: card$9, + common: common$9, default: de, - editor: editor$6, - errors: errors$6, - moon: moon$6 + editor: editor$9, + errors: errors$9, + moon: moon$9 }); - var common$5 = { + var common$8 = { version: "Version", title: "Minimal Sun Moon", title_card: "Minimal Sun Moon Card", description: "A minimal card to render the state of the sun and moon.", invalid_configuration: "Invalid configuration" }; - var editor$5 = { + var editor$8 = { moon_entity: "Moon entity (Optional)" }; - var errors$5 = { + var errors$8 = { missing_moon_entity: "moon_entity is missing in configuration", invalid_icon_type: "The following colors in your configuration are invalid:" }; - var card$5 = { + var card$8 = { moon_phase: "Moon Phase", moon_rise: "Moon Rise", moon_set: "Moon Set" }; - var moon$5 = { + var moon$8 = { new_moon: "New Moon", waxing_crescent: "Waxing Crescent", first_quarter: "First Quarter", @@ -348,43 +395,43 @@ var TSMoonCard = (function (exports) { waning_crescent: "Waning Crescent" }; var en = { - common: common$5, - editor: editor$5, - errors: errors$5, - card: card$5, - moon: moon$5 + common: common$8, + editor: editor$8, + errors: errors$8, + card: card$8, + moon: moon$8 }; var en$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$5, - common: common$5, + card: card$8, + common: common$8, default: en, - editor: editor$5, - errors: errors$5, - moon: moon$5 + editor: editor$8, + errors: errors$8, + moon: moon$8 }); - var common$4 = { + var common$7 = { version: "Versión", title: "Sol y Luna Mínimo", title_card: "Tarjeta Sol con Luna", description: "Tarjeta para mostrar el estado del sol y la luna.", invalid_configuration: "Configuración inválida" }; - var editor$4 = { + var editor$7 = { moon_entity: "Entidad de la Luna (Opcional)" }; - var errors$4 = { + var errors$7 = { missing_moon_entity: "Falta moon_entity en la configuración", invalid_icon_type: "Configuración no válida:" }; - var card$4 = { + var card$7 = { moon_phase: "Fase Lunar", moon_rise: "Salida de la Luna", moon_set: "Puesta de la Luna" }; - var moon$4 = { + var moon$7 = { new_moon: "Luna Nueva", waxing_crescent: "Cuarto Creciente", first_quarter: "Cuarto Creciente", @@ -395,43 +442,43 @@ var TSMoonCard = (function (exports) { waning_crescent: "Cuarto Menguante" }; var es = { - common: common$4, - editor: editor$4, - errors: errors$4, - card: card$4, - moon: moon$4 + common: common$7, + editor: editor$7, + errors: errors$7, + card: card$7, + moon: moon$7 }; var es$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$4, - common: common$4, + card: card$7, + common: common$7, default: es, - editor: editor$4, - errors: errors$4, - moon: moon$4 + editor: editor$7, + errors: errors$7, + moon: moon$7 }); - var common$3 = { + var common$6 = { version: "Version", title: "Phases de la lune", title_card: "Simple carte des phases de la lune", description: "Une simple carte pour afficher la phase de la lune", invalid_configuration: "Invalid configuration" }; - var editor$3 = { + var editor$6 = { moon_entity: "Entité de la lune" }; - var errors$3 = { + var errors$6 = { missing_moon_entity: "Sensor de la lune manquant", invalid_icon_type: "Type d'icone incorect" }; - var card$3 = { + var card$6 = { moon_phase: "Phase lunaire", moon_rise: "Coucher", moon_set: "Lever" }; - var moon$3 = { + var moon$6 = { new_moon: "Nouvelle lune", waxing_crescent: "Premier croissant", first_quarter: "Premier quartier", @@ -442,21 +489,68 @@ var TSMoonCard = (function (exports) { waning_crescent: "Dernier croissant" }; var fr = { - common: common$3, - editor: editor$3, - errors: errors$3, - card: card$3, - moon: moon$3 + common: common$6, + editor: editor$6, + errors: errors$6, + card: card$6, + moon: moon$6 }; var fr$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$3, - common: common$3, + card: card$6, + common: common$6, default: fr, - editor: editor$3, - errors: errors$3, - moon: moon$3 + editor: editor$6, + errors: errors$6, + moon: moon$6 + }); + + var common$5 = { + version: "Verzió", + title: "Minimális Nap Hold", + title_card: "Minimális Nap Hold kártya", + description: "Egy minimális kártya a nap és a hold állapotának megjelenítéséhez.", + invalid_configuration: "Érvénytelen konfiguráció" + }; + var editor$5 = { + moon_entity: "Hold entitás (opcionális)" + }; + var errors$5 = { + missing_moon_entity: "A moon_entity hiányzik a konfigurációból", + invalid_icon_type: "A konfigurációban szereplő következő színek érvénytelenek:" + }; + var card$5 = { + moon_phase: "Holdfázis", + moon_rise: "Holdkelte", + moon_set: "Holdnyugta" + }; + var moon$5 = { + new_moon: "Újhold", + waxing_crescent: "Növekvő holdsarló", + first_quarter: "Első negyed", + waxing_gibbous: "Növőhold fázis", + full_moon: "Telihold", + waning_gibbous: "Fogyóhold fázis", + last_quarter: "Utolsó negyed", + waning_crescent: "Csökkenő holdsarló" + }; + var hu = { + common: common$5, + editor: editor$5, + errors: errors$5, + card: card$5, + moon: moon$5 + }; + + var hu$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + card: card$5, + common: common$5, + default: hu, + editor: editor$5, + errors: errors$5, + moon: moon$5 }); var it = { @@ -477,26 +571,26 @@ var TSMoonCard = (function (exports) { default: nb }); - var common$2 = { + var common$4 = { version: "Versie", title: "Minimale zon-maan", title_card: "Minimale Sun Moon-kaart", description: "Een minimale kaart om de toestand van de zon en de maan weer te geven.", invalid_configuration: "Ongeldige configuratie" }; - var editor$2 = { + var editor$4 = { moon_entity: "Maanentiteit (optioneel)" }; - var errors$2 = { + var errors$4 = { missing_moon_entity: "maanentiteit ontbreekt in de configuratie", invalid_icon_type: "De volgende kleuren in uw configuratie zijn ongeldig:" }; - var card$2 = { + var card$4 = { moon_phase: "Maanfase", moon_rise: "Maanopkomst", moon_set: "Maanondergang" }; - var moon$2 = { + var moon$4 = { new_moon: "Nieuwemaan", waxing_crescent: "Jonge maansikkel", first_quarter: "Eerste kwartier", @@ -507,21 +601,21 @@ var TSMoonCard = (function (exports) { waning_crescent: "Asgrauwe maan" }; var nl = { - common: common$2, - editor: editor$2, - errors: errors$2, - card: card$2, - moon: moon$2 + common: common$4, + editor: editor$4, + errors: errors$4, + card: card$4, + moon: moon$4 }; var nl$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - card: card$2, - common: common$2, + card: card$4, + common: common$4, default: nl, - editor: editor$2, - errors: errors$2, - moon: moon$2 + editor: editor$4, + errors: errors$4, + moon: moon$4 }); var pl = { @@ -533,82 +627,73 @@ var TSMoonCard = (function (exports) { default: pl }); - var common$1 = { - version: "Verzió", - title: "Minimális Nap Hold", - title_card: "Minimális Nap Hold kártya", - description: "Egy minimális kártya a nap és a hold állapotának megjelenítéséhez.", - invalid_configuration: "Érvénytelen konfiguráció" - }; - var editor$1 = { - moon_entity: "Hold entitás (opcionális)" + var common$3 = { + version: "Versão", + title: "Fases da Lua", + title_card: "Cartão das fases da lua", + description: "Um cartão minimalista para exibir as fases da lua e do sol.", + invalid_configuration: "Configuração Inválida" }; - var errors$1 = { - missing_moon_entity: "A moon_entity hiányzik a konfigurációból", - invalid_icon_type: "A konfigurációban szereplő következő színek érvénytelenek:" + var editor$3 = { + moon_entity: "Entidade Lua (Opcional)" }; - var card$1 = { - moon_phase: "Holdfázis", - moon_rise: "Holdkelte", - moon_set: "Holdnyugta" + var errors$3 = { + missing_moon_entity: "A entidade moon_entity está em falta na configuração", + invalid_icon_type: "As seguintes cores na configuração são inválidas:" }; - var moon$1 = { - new_moon: "Újhold", - waxing_crescent: "Növekvő holdsarló", - first_quarter: "Első negyed", - waxing_gibbous: "Növőhold fázis", - full_moon: "Telihold", - waning_gibbous: "Fogyóhold fázis", - last_quarter: "Utolsó negyed", - waning_crescent: "Csökkenő holdsarló" + var card$3 = { + moon_phase: "Fase da Lua", + moon_rise: "Nascer da Lua", + moon_set: "Pôr da Lua" }; - var hu = { - common: common$1, - editor: editor$1, - errors: errors$1, - card: card$1, - moon: moon$1 + var moon$3 = { + new_moon: "Lua Nova", + waxing_crescent: "Lua Crescente", + first_quarter: "Quarto Crescente", + waxing_gibbous: "Crescente Gibosa", + full_moon: "Lua Cheia", + waning_gibbous: "Minguante Gibosa", + last_quarter: "Quarto Minguante", + waning_crescent: "Lua Minguante" }; - - var hu$1 = /*#__PURE__*/Object.freeze({ - __proto__: null, - card: card$1, - common: common$1, - default: hu, - editor: editor$1, - errors: errors$1, - moon: moon$1 - }); - var pt = { - + common: common$3, + editor: editor$3, + errors: errors$3, + card: card$3, + moon: moon$3 }; var pt$1 = /*#__PURE__*/Object.freeze({ __proto__: null, - default: pt + card: card$3, + common: common$3, + default: pt, + editor: editor$3, + errors: errors$3, + moon: moon$3 }); - var common = { + var common$2 = { version: "Versão", title: "Fases da Lua", title_card: "Card das fases da lua", description: "Um cartão minimalista para exibir as fases da lua e do sol.", invalid_configuration: "Configuração Inválida" }; - var editor = { + var editor$2 = { moon_entity: "Entidade Lua (Opcional)" }; - var errors = { + var errors$2 = { missing_moon_entity: "moon_entity está em falta na configuração", invalid_icon_type: "As seguintes cores na configuração são inválidas:" }; - var card = { + var card$2 = { moon_phase: "Fase da Lua", moon_rise: "Nascer da Lua", moon_set: "Pôr da Lua" }; - var moon = { + var moon$2 = { new_moon: "Lua Nova", waxing_crescent: "Lua Crescente", first_quarter: "Quarto Crescente", @@ -619,6 +704,100 @@ var TSMoonCard = (function (exports) { waning_crescent: "Lua Minguante" }; var ptBR = { + common: common$2, + editor: editor$2, + errors: errors$2, + card: card$2, + moon: moon$2 + }; + + var pt_BR = /*#__PURE__*/Object.freeze({ + __proto__: null, + card: card$2, + common: common$2, + default: ptBR, + editor: editor$2, + errors: errors$2, + moon: moon$2 + }); + + var common$1 = { + version: "Версия", + title: "Фазы луны", + title_card: "Минималистическая карточка лунных фаз", + description: "Минималистичная карточка для отображения состояния луны.", + invalid_configuration: "Ошибка в конфигурации" + }; + var editor$1 = { + moon_entity: "Сенсор лунных фаз (Опционально)" + }; + var errors$1 = { + missing_moon_entity: "Отсутствует датчик (сенсор) лунных фаз в конфигурации", + invalid_icon_type: "В конфигурации указан некорретный тип иконки" + }; + var card$1 = { + moon_phase: "Лунная фаза", + moon_rise: "Восход луны", + moon_set: "Заход луны" + }; + var moon$1 = { + new_moon: "Новолуние", + waxing_crescent: "Растущий серп", + first_quarter: "Первая четверть", + waxing_gibbous: "Растущая луна", + full_moon: "Полнолуние", + waning_gibbous: "Убывающая луна", + last_quarter: "Последняя четверть", + waning_crescent: "Убывающий серп" + }; + var ru = { + common: common$1, + editor: editor$1, + errors: errors$1, + card: card$1, + moon: moon$1 + }; + + var ru$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + card: card$1, + common: common$1, + default: ru, + editor: editor$1, + errors: errors$1, + moon: moon$1 + }); + + var common = { + version: "Verzia", + title: "Minimal Sun Moon", + title_card: "Karta Minimal Sun Moon", + description: "Minimálna karta na vykreslenie stavu slnka a mesiaca.", + invalid_configuration: "Neplatná konfigurácia" + }; + var editor = { + moon_entity: "Entita Mesiaca (voliteľné)" + }; + var errors = { + missing_moon_entity: "moon_entity v konfigurácii chýba", + invalid_icon_type: "Nasledujúce farby vo vašej konfigurácii sú neplatné:" + }; + var card = { + moon_phase: "Fáza Mesiaca", + moon_rise: "Mesiac východ", + moon_set: "Mesiac západ" + }; + var moon = { + new_moon: "Nový Mesiac", + waxing_crescent: "Rastúci polmesiac", + first_quarter: "Prvá štvrtina", + waxing_gibbous: "Rastúci mesiac", + full_moon: "Plný mesiac", + waning_gibbous: "Ubúdajúci mesiac", + last_quarter: "Posledná štvrtina", + waning_crescent: "Ubúdajúci polmesiac" + }; + var sk = { common: common, editor: editor, errors: errors, @@ -626,11 +805,11 @@ var TSMoonCard = (function (exports) { moon: moon }; - var pt_BR = /*#__PURE__*/Object.freeze({ + var sk$1 = /*#__PURE__*/Object.freeze({ __proto__: null, card: card, common: common, - default: ptBR, + default: sk, editor: editor, errors: errors, moon: moon @@ -639,17 +818,20 @@ var TSMoonCard = (function (exports) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const languages = { ca: ca$1, + cz: cz$1, de: de$1, en: en$1, es: es$1, fr: fr$1, + hu: hu$1, it: it$1, nb: nb$1, nl: nl$1, pl: pl$1, - hu: hu$1, pt: pt$1, pt_BR, + ru: ru$1, + sk: sk$1, }; function localize(key, locale) { let translated; @@ -669,1261 +851,1275 @@ var TSMoonCard = (function (exports) { return translated; } - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : "object" !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - function getDefaultExportFromCjs (x) { return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; } - var dayjs_min = {exports: {}}; + var dayjs_min$1 = {exports: {}}; - (function (module, exports) { - !function(t,e){module.exports=e();}(commonjsGlobal,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return "["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0;}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return b},m.isValid=function(){return !(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0;}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return b},m.isValid=function(){return !(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) converted to rad: - return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)); - } - // general sun calculations - /** - * get solar mean anomaly - * @param {number} d - * @returns {number} - */ - function solarMeanAnomaly(d) { - return rad * (357.5291 + 0.98560028 * d); - } - - /** - * ecliptic longitude - * @param {number} M - * @returns {number} - */ - function eclipticLongitude(M) { - const C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)); - // equation of center - const P = rad * 102.9372; // perihelion of the Earth - return M + C + P + Math.PI; - } - - /** - * sun coordinates - * @param {number} d days in Julian calendar - * @returns {ISunCoordinates} - */ - function sunCoords(d) { - const M = solarMeanAnomaly(d); - const L = eclipticLongitude(M); - - return { - dec: declination(L, 0), - ra: rightAscension(L, 0) - }; - } - - const SunCalc = {}; - - /** - * calculates sun position for a given date and latitude/longitude - * @param {number|Date} dateValue Date object or timestamp for calculating sun-position - * @param {number} lat latitude for calculating sun-position - * @param {number} lng longitude for calculating sun-position - * @return {ISunPosition} result object of sun-position - */ - SunCalc.getPosition = function (dateValue, lat, lng) { - // console.log(`getPosition dateValue=${dateValue} lat=${lat}, lng=${lng}`); - if (isNaN(lat)) { - throw new Error('latitude missing'); - } - if (isNaN(lng)) { - throw new Error('longitude missing'); - } - if (dateValue instanceof Date) { - dateValue = dateValue.valueOf(); - } - const lw = rad * -lng; - const phi = rad * lat; - const d = toDays(dateValue); - const c = sunCoords(d); - const H = siderealTime(d, lw) - c.ra; - const azimuth = azimuthCalc(H, phi, c.dec); - const altitude = altitudeCalc(H, phi, c.dec); - // console.log(`getPosition date=${date}, M=${H}, L=${H}, c=${JSON.stringify(c)}, d=${d}, lw=${lw}, phi=${phi}`); - - return { - azimuth, - altitude, - zenith: (90*Math.PI/180) - altitude, - azimuthDegrees: degr * azimuth, - altitudeDegrees: degr * altitude, - zenithDegrees: 90 - (degr * altitude), - declination: c.dec - }; - }; - - /** sun times configuration - * @type {Array.} - */ - const sunTimes = SunCalc.times = [ - { angle: 6, riseName: 'goldenHourDawnEnd', setName: 'goldenHourDuskStart'}, // GOLDEN_HOUR_2 - { angle: -0.3, riseName: 'sunriseEnd', setName: 'sunsetStart'}, // SUNRISE_END - { angle: -0.833, riseName: 'sunriseStart', setName: 'sunsetEnd'}, // SUNRISE - { angle: -1, riseName: 'goldenHourDawnStart', setName: 'goldenHourDuskEnd'}, // GOLDEN_HOUR_1 - { angle: -4, riseName: 'blueHourDawnEnd', setName: 'blueHourDuskStart'}, // BLUE_HOUR - { angle: -6, riseName: 'civilDawn', setName: 'civilDusk'}, // DAWN - { angle: -8, riseName: 'blueHourDawnStart', setName: 'blueHourDuskEnd'}, // BLUE_HOUR - { angle: -12, riseName: 'nauticalDawn', setName: 'nauticalDusk'}, // NAUTIC_DAWN - { angle: -15, riseName: 'amateurDawn', setName: 'amateurDusk'}, - { angle: -18, riseName: 'astronomicalDawn', setName: 'astronomicalDusk'} // ASTRO_DAWN - ]; - - /** alternate time names for backward compatibility - * @type {Array.<[string, string]>} - */ - const suntimesDeprecated = SunCalc.timesDeprecated = [ - ['dawn', 'civilDawn'], - ['dusk', 'civilDusk'], - ['nightEnd', 'astronomicalDawn'], - ['night', 'astronomicalDusk'], - ['nightStart', 'astronomicalDusk'], - ['goldenHour', 'goldenHourDuskStart'], - ['sunrise', 'sunriseStart'], - ['sunset', 'sunsetEnd'], - ['goldenHourEnd', 'goldenHourDawnEnd'], - ['goldenHourStart', 'goldenHourDuskStart'] - ]; - - /** adds a custom time to the times config - * @param {number} angleAltitude - angle of Altitude/elevation above the horizont of the sun in degrees - * @param {string} riseName - name of sun rise (morning name) - * @param {string} setName - name of sun set (evening name) - * @param {number} [risePos] - (optional) position at rise (morning) - * @param {number} [setPos] - (optional) position at set (evening) - * @param {boolean} [degree=true] defines if the elevationAngle is in degree not in radians - * @return {Boolean} true if new time could be added, false if not (parameter missing; riseName or setName already existing) - */ - SunCalc.addTime = function (angleAltitude, riseName, setName, risePos, setPos, degree) { - let isValid = (typeof riseName === 'string') && (riseName.length > 0) && - (typeof setName === 'string') && (setName.length > 0) && - (typeof angleAltitude === 'number'); - if (isValid) { - const EXP = /^(?![0-9])[a-zA-Z0-9$_]+$/; - // check for invalid names - for (let i=0; i= 0; i--) { - if (suntimesDeprecated[i][0] === riseName || suntimesDeprecated[i][0] === setName) { - suntimesDeprecated.splice(i, 1); - } - } - return true; - } - } - return false; - }; - - /** - * add an alternate name for a sun time - * @param {string} alternameName - alternate or deprecated time name - * @param {string} originalName - original time name from SunCalc.times array - * @return {Boolean} true if could be added, false if not (parameter missing; originalName does not exists; alternameName already existis) - */ - SunCalc.addDeprecatedTimeName = function (alternameName, originalName) { - let isValid = (typeof alternameName === 'string') && (alternameName.length > 0) && - (typeof originalName === 'string') && (originalName.length > 0); - if (isValid) { - let hasOrg = false; - const EXP = /^(?![0-9])[a-zA-Z0-9$_]+$/; - // check for invalid names - for (let i=0; i 200) { - // let nazi = this.getPosition(dateVal, lat, lng).azimuth; - const d = toDays(dateVal); - const c = sunCoords(d); - const H = siderealTime(d, lw) - c.ra; - const nazim = azimuthCalc(H, phi, c.dec); - - addval /= 2; - if (nazim < nazimuth) { - dateVal += addval; - } else { - dateVal -= addval; - } - } - return new Date(Math.floor(dateVal)); - }; - - // calculation for solar time based on https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-time - - /** - * Calculaes the solar time of the given date in the given latitude and UTC offset. - * @param {number|Date} dateValue Date object or timestamp for calculating solar time - * @param {number} lng longitude for calculating sun-time - * @param {number} utcOffset offset to the utc time - * @returns {Date} Returns the solar time of the given date in the given latitude and UTC offset. - */ - SunCalc.getSolarTime = function (dateValue, lng, utcOffset) { - // @ts-ignore - const date = new Date(dateValue); - // calculate the day of year - const start = new Date(date.getFullYear(), 0, 0); - const diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000); - const dayOfYear = Math.floor(diff / dayMs); - - const b = 360 / 365 * (dayOfYear - 81) * rad; - const equationOfTime = 9.87 * sin(2 * b) - 7.53 * cos(b) - 1.5 * sin(b); - const localSolarTimeMeridian = 15 * utcOffset; - const timeCorrection = equationOfTime + 4 * (lng - localSolarTimeMeridian); - const localSolarTime = date.getHours() + timeCorrection / 60 + date.getMinutes() / 60; - - const solarDate = new Date(0, 0); - solarDate.setMinutes(+localSolarTime * 60); - return solarDate; - }; - - // moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas - - /** - * calculate the geocentric ecliptic coordinates of the moon - * @param {number} d number of days - */ - function moonCoords(d) { - const L = rad * (218.316 + 13.176396 * d); // ecliptic longitude - const M = rad * (134.963 + 13.064993 * d); // mean anomaly - const F = rad * (93.272 + 13.229350 * d); // mean distance - const l = L + rad * 6.289 * sin(M); // longitude - const b = rad * 5.128 * sin(F); // latitude - const dt = 385001 - 20905 * cos(M); // distance to the moon in km - - return { - ra: rightAscension(l, b), - dec: declination(l, b), - dist: dt - }; - } - - /** - * calculates moon position for a given date and latitude/longitude - * @param {number|Date} dateValue Date object or timestamp for calculating moon-position - * @param {number} lat latitude for calculating moon-position - * @param {number} lng longitude for calculating moon-position - * @return {IMoonPosition} result object of moon-position - */ - SunCalc.getMoonPosition = function (dateValue, lat, lng) { - // console.log(`getMoonPosition dateValue=${dateValue} lat=${lat}, lng=${lng}`); - if (isNaN(lat)) { - throw new Error('latitude missing'); - } - if (isNaN(lng)) { - throw new Error('longitude missing'); - } - if (dateValue instanceof Date) { - dateValue = dateValue.valueOf(); - } - const lw = rad * -lng; - const phi = rad * lat; - const d = toDays(dateValue); - const c = moonCoords(d); - const H = siderealTime(d, lw) - c.ra; - let altitude = altitudeCalc(H, phi, c.dec); - altitude += astroRefraction(altitude); // altitude correction for refraction - - // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. - const pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H)); - - const azimuth = azimuthCalc(H, phi, c.dec); - - return { - azimuth, - altitude, - azimuthDegrees: degr * azimuth, - altitudeDegrees: degr * altitude, - distance: c.dist, - parallacticAngle: pa, - parallacticAngleDegrees: degr * pa - }; - }; - - const fractionOfTheMoonCycle = SunCalc.moonCycles = [{ - from: 0, - to: 0.033863193308711, - id: 'newMoon', - emoji: '🌚', - code: ':new_moon_with_face:', - name: 'New Moon', - weight: 1, - css: 'wi-moon-new' - }, - { - from: 0.033863193308711, - to: 0.216136806691289, - id: 'waxingCrescentMoon', - emoji: '🌒', - code: ':waxing_crescent_moon:', - name: 'Waxing Crescent', - weight: 6.3825, - css: 'wi-moon-wax-cres' - }, - { - from: 0.216136806691289, - to: 0.283863193308711, - id: 'firstQuarterMoon', - emoji: '🌓', - code: ':first_quarter_moon:', - name: 'First Quarter', - weight: 1, - css: 'wi-moon-first-quart' - }, - { - from: 0.283863193308711, - to: 0.466136806691289, - id: 'waxingGibbousMoon', - emoji: '🌔', - code: ':waxing_gibbous_moon:', - name: 'Waxing Gibbous', - weight: 6.3825, - css: 'wi-moon-wax-gibb' - }, - { - from: 0.466136806691289, - to: 0.533863193308711, - id: 'fullMoon', - emoji: '🌝', - code: ':full_moon_with_face:', - name: 'Full Moon', - weight: 1, - css: 'wi-moon-full' - }, - { - from: 0.533863193308711, - to: 0.716136806691289, - id: 'waningGibbousMoon', - emoji: '🌖', - code: ':waning_gibbous_moon:', - name: 'Waning Gibbous', - weight: 6.3825, - css: 'wi-moon-wan-gibb' - }, - { - from: 0.716136806691289, - to: 0.783863193308711, - id: 'thirdQuarterMoon', - emoji: '🌗', - code: ':last_quarter_moon:', - name: 'third Quarter', - weight: 1, - css: 'wi-moon-third-quart' - }, - { - from: 0.783863193308711, - to: 0.966136806691289, - id: 'waningCrescentMoon', - emoji: '🌘', - code: ':waning_crescent_moon:', - name: 'Waning Crescent', - weight: 6.3825, - css: 'wi-moon-wan-cres' - }, - { - from: 0.966136806691289, - to: 1, - id: 'newMoon', - emoji: '🌚', - code: ':new_moon_with_face:', - name: 'New Moon', - weight: 1, - css: 'wi-moon-new' - }]; - - /** - * calculations for illumination parameters of the moon, - * based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and - * Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. - * @param {number|Date} dateValue Date object or timestamp for calculating moon-illumination - * @return {IMoonIllumination} result object of moon-illumination - */ - SunCalc.getMoonIllumination = function (dateValue) { - // console.log(`getMoonIllumination dateValue=${dateValue}`); - if (dateValue instanceof Date) { - dateValue = dateValue.valueOf(); - } - const d = toDays(dateValue); - const s = sunCoords(d); - const m = moonCoords(d); - const sdist = 149598000; // distance from Earth to Sun in km - const phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)); - const inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)); - const angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) - - cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)); - const phaseValue = 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI; - - // calculates the difference in ms between the sirst fullMoon 2000 and given Date - const diffBase = dateValue - firstNewMoon2000; - // Calculate modulus to drop completed cycles - let cycleModMs = diffBase % lunarDaysMs; - // If negative number (date before new moon 2000) add lunarDaysMs - if ( cycleModMs < 0 ) { cycleModMs += lunarDaysMs; } - const nextNewMoon = (lunarDaysMs - cycleModMs) + dateValue; - let nextFullMoon = ((lunarDaysMs/2) - cycleModMs) + dateValue; - if (nextFullMoon < dateValue) { nextFullMoon += lunarDaysMs; } - const quater = (lunarDaysMs/4); - let nextFirstQuarter = (quater - cycleModMs) + dateValue; - if (nextFirstQuarter < dateValue) { nextFirstQuarter += lunarDaysMs; } - let nextThirdQuarter = (lunarDaysMs - quater - cycleModMs) + dateValue; - if (nextThirdQuarter < dateValue) { nextThirdQuarter += lunarDaysMs; } - // Calculate the fraction of the moon cycle - // const currentfrac = cycleModMs / lunarDaysMs; - const next = Math.min(nextNewMoon, nextFirstQuarter, nextFullMoon, nextThirdQuarter); - let phase; - - for (let index = 0; index < fractionOfTheMoonCycle.length; index++) { - const element = fractionOfTheMoonCycle[index]; - if ( (phaseValue >= element.from) && (phaseValue <= element.to) ) { - phase = element; - break; - } - } - - return { - fraction: (1 + cos(inc)) / 2, - // fraction2: cycleModMs / lunarDaysMs, - // @ts-ignore - phase, - phaseValue, - angle, - next : { - value: next, - date: (new Date(next)).toISOString(), - type: (next === nextNewMoon) ? 'newMoon' : ((next === nextFirstQuarter) ? 'firstQuarter' : ((next === nextFullMoon) ? 'fullMoon' : 'thirdQuarter')), - newMoon: { - value: nextNewMoon, - date: (new Date(nextNewMoon)).toISOString() - }, - fullMoon: { - value: nextFullMoon, - date: (new Date(nextFullMoon)).toISOString() - }, - firstQuarter: { - value: nextFirstQuarter, - date: (new Date(nextFirstQuarter)).toISOString() - }, - thirdQuarter: { - value: nextThirdQuarter, - date: (new Date(nextThirdQuarter)).toISOString() - } - } - }; - }; - - /** - * calculations moon position and illumination for a given date and latitude/longitude of the moon, - * @param {number|Date} dateValue Date object or timestamp for calculating moon-illumination - * @param {number} lat latitude for calculating moon-position - * @param {number} lng longitude for calculating moon-position - * @return {IMoonData} result object of moon-illumination - */ - SunCalc.getMoonData = function (dateValue, lat, lng) { - const pos = SunCalc.getMoonPosition(dateValue, lat, lng); - const illum = SunCalc.getMoonIllumination(dateValue); - return Object.assign({ - illumination : illum, - zenithAngle : illum.angle - pos.parallacticAngle - }, pos); - }; - - /** - * add hours to a date - * @param {number} dateValue timestamp to add hours - * @param {number} h - hours to add - * @returns {number} new timestamp with added hours - */ - function hoursLater(dateValue, h) { - return dateValue + h * dayMs / 24; - } - - /** - * calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article - * @param {number|Date} dateValue Date object or timestamp for calculating moon-times - * @param {number} lat latitude for calculating moon-times - * @param {number} lng longitude for calculating moon-times - * @param {boolean} [inUTC] defines if the calculation should be in utc or local time (default is local) - * @return {IMoonTimes} result object of sunTime - */ - SunCalc.getMoonTimes = function (dateValue, lat, lng, inUTC) { - if (isNaN(lat)) { - throw new Error('latitude missing'); - } - if (isNaN(lng)) { - throw new Error('longitude missing'); - } - const t = new Date(dateValue); - if (inUTC) { - t.setUTCHours(0, 0, 0, 0); - } else { - t.setHours(0, 0, 0, 0); - } - dateValue = t.valueOf(); - // console.log(`getMoonTimes lat=${lat} lng=${lng} dateValue=${dateValue} t=${t}`); - - const hc = 0.133 * rad; - let h0 = SunCalc.getMoonPosition(dateValue, lat, lng).altitude - hc; - let rise; let set; let ye; let d; let roots; let x1; let x2; let dx; - - // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set) - for (let i = 1; i <= 26; i += 2) { - const h1 = SunCalc.getMoonPosition(hoursLater(dateValue, i), lat, lng).altitude - hc; - const h2 = SunCalc.getMoonPosition(hoursLater(dateValue, i + 1), lat, lng).altitude - hc; - - const a = (h0 + h2) / 2 - h1; - const b = (h2 - h0) / 2; - const xe = -b / (2 * a); - ye = (a * xe + b) * xe + h1; - d = b * b - 4 * a * h1; - roots = 0; - - if (d >= 0) { - dx = Math.sqrt(d) / (Math.abs(a) * 2); - x1 = xe - dx; - x2 = xe + dx; - if (Math.abs(x1) <= 1) { - roots++; - } - - if (Math.abs(x2) <= 1) { - roots++; - } - - if (x1 < -1) { - x1 = x2; - } - } - - if (roots === 1) { - if (h0 < 0) { - rise = i + x1; - } else { - set = i + x1; - } - } else if (roots === 2) { - rise = i + (ye < 0 ? x2 : x1); - set = i + (ye < 0 ? x1 : x2); - } - - if (rise && set) { - break; - } - - h0 = h2; - } - - const result = {}; - if (rise) { - result.rise = new Date(hoursLater(dateValue, rise)); - } else { - result.rise = NaN; - } - - if (set) { - result.set = new Date(hoursLater(dateValue, set)); - } else { - result.set = NaN; - } - - if (!rise && !set) { - if (ye > 0) { - result.alwaysUp = true; - result.alwaysDown = false; - } else { - result.alwaysUp = false; - result.alwaysDown = true; - } - } else if (rise && set) { - result.alwaysUp = false; - result.alwaysDown = false; - result.highest = new Date(hoursLater(dateValue, Math.min(rise, set) + (Math.abs(set - rise) / 2))); - } else { - result.alwaysUp = false; - result.alwaysDown = false; - } - return result; - }; - - /** - * calc moon transit - * @param {number} rize timestamp for rise - * @param {number} set timestamp for set time - * @returns {Date} new moon transit - */ - function calcMoonTransit(rize, set) { - if (rize > set) { - return new Date(set + (rize - set) / 2); - } - return new Date(rize + (set - rize) / 2); - } - - /** - * calculated the moon transit - * @param {number|Date} rise rise time as Date object or timestamp for calculating moon-transit - * @param {number|Date} set set time as Date object or timestamp for calculating moon-transit - * @param {number} lat latitude for calculating moon-times - * @param {number} lng longitude for calculating moon-times - * @returns {{main: (Date|null), invert: (Date|null)}} - */ - SunCalc.moonTransit = function (rise, set, lat, lng) { - /** @type {Date|null} */ let main = null; - /** @type {Date|null} */ let invert = null; - const riseDate = new Date(rise); - const setDate = new Date(set); - const riseValue = riseDate.getTime(); - const setValue = setDate.getTime(); - const day = setDate.getDate(); - let tempTransitBefore; - let tempTransitAfter; - - if (rise && set) { - if (rise < set) { - main = calcMoonTransit(riseValue, setValue); - } else { - invert = calcMoonTransit(riseValue, setValue); - } - } - - if (rise) { - tempTransitAfter = calcMoonTransit(riseValue, SunCalc.getMoonTimes(new Date(riseDate).setDate(day + 1), lat, lng).set.valueOf()); - if (tempTransitAfter.getDate() === day) { - if (main) { - invert = tempTransitAfter; - } else { - main = tempTransitAfter; - } - } - } - - if (set) { - tempTransitBefore = calcMoonTransit(setValue, SunCalc.getMoonTimes(new Date(setDate).setDate(day - 1), lat, lng).rise.valueOf()); - if (tempTransitBefore.getDate() === day) { - main = tempTransitBefore; - } - } - return { - main, - invert - }; - }; - - // export as Node module / AMD module / browser variable - { - module.exports = SunCalc; - // @ts-ignore - } - - })(); - } (suncalc)); - - var suncalcExports = suncalc.exports; + var hasRequiredSuncalc; + + function requireSuncalc () { + if (hasRequiredSuncalc) return suncalc.exports; + hasRequiredSuncalc = 1; + (function (module, exports) { + // @ts-check + /* + (c) 2011-2015, Vladimir Agafonkin + SunCalc is a JavaScript library for calculating sun/moon position and light phases. + https://github.com/mourner/suncalc + + Reworked and enhanced by Robert Gester + Additional Copyright (c) 2022 Robert Gester + https://github.com/hypnos3/suncalc3 + */ + + /** + * @typedef {Object} ISunTimeDef + * @property {string} name - The Name of the time + * @property {Date} value - Date object with the calculated sun-time + * @property {number} ts - The time as timestamp + * @property {number} pos - The position of the sun on the time + * @property {number} [elevation] - Angle of the sun on the time (except for solarNoon / nadir) + * @property {number} julian - The time as Julian calendar + * @property {boolean} valid - indicates if the time is valid or not + * @property {boolean} [deprecated] - indicates if the time is a deprecated time name + * @property {string} [nameOrg] - if it is a deprecated name, the original property name + * @property {number} [posOrg] - if it is a deprecated name, the original position + */ + + /** + * @typedef {Object} ISunTimeSingle + * @property {ISunTimeDef} rise - sun-time for sun rise + * @property {ISunTimeDef} set - sun-time for sun set + * @property {string} [error] - string of an error message if an error occurs + */ + + /** + * @typedef {Object} ISunTimeList + * @property {ISunTimeDef} solarNoon - The sun-time for the solar noon (sun is in the highest position) + * @property {ISunTimeDef} nadir - The sun-time for nadir (darkest moment of the night, sun is in the lowest position) + * @property {ISunTimeDef} goldenHourDawnStart - The sun-time for morning golden hour (soft light, best time for photography) + * @property {ISunTimeDef} goldenHourDawnEnd - The sun-time for morning golden hour (soft light, best time for photography) + * @property {ISunTimeDef} goldenHourDuskStart - The sun-time for evening golden hour starts + * @property {ISunTimeDef} goldenHourDuskEnd - The sun-time for evening golden hour starts + * @property {ISunTimeDef} sunriseStart - The sun-time for sunrise starts (top edge of the sun appears on the horizon) + * @property {ISunTimeDef} sunriseEnd - The sun-time for sunrise ends (bottom edge of the sun touches the horizon) + * @property {ISunTimeDef} sunsetStart - The sun-time for sunset starts (bottom edge of the sun touches the horizon) + * @property {ISunTimeDef} sunsetEnd - The sun-time for sunset ends (sun disappears below the horizon, evening civil twilight starts) + * @property {ISunTimeDef} blueHourDawnStart - The sun-time for blue Hour start (time for special photography photos starts) + * @property {ISunTimeDef} blueHourDawnEnd - The sun-time for blue Hour end (time for special photography photos end) + * @property {ISunTimeDef} blueHourDuskStart - The sun-time for blue Hour start (time for special photography photos starts) + * @property {ISunTimeDef} blueHourDuskEnd - The sun-time for blue Hour end (time for special photography photos end) + * @property {ISunTimeDef} civilDawn - The sun-time for dawn (morning nautical twilight ends, morning civil twilight starts) + * @property {ISunTimeDef} civilDusk - The sun-time for dusk (evening nautical twilight starts) + * @property {ISunTimeDef} nauticalDawn - The sun-time for nautical dawn (morning nautical twilight starts) + * @property {ISunTimeDef} nauticalDusk - The sun-time for nautical dusk end (evening astronomical twilight starts) + * @property {ISunTimeDef} amateurDawn - The sun-time for amateur astronomical dawn (sun at 12° before sunrise) + * @property {ISunTimeDef} amateurDusk - The sun-time for amateur astronomical dusk (sun at 12° after sunrise) + * @property {ISunTimeDef} astronomicalDawn - The sun-time for night ends (morning astronomical twilight starts) + * @property {ISunTimeDef} astronomicalDusk - The sun-time for night starts (dark enough for astronomical observations) + * @property {ISunTimeDef} [dawn] - Deprecated: alternate for civilDawn + * @property {ISunTimeDef} [dusk] - Deprecated: alternate for civilDusk + * @property {ISunTimeDef} [nightEnd] - Deprecated: alternate for astronomicalDawn + * @property {ISunTimeDef} [night] - Deprecated: alternate for astronomicalDusk + * @property {ISunTimeDef} [nightStart] - Deprecated: alternate for astronomicalDusk + * @property {ISunTimeDef} [goldenHour] - Deprecated: alternate for goldenHourDuskStart + * @property {ISunTimeDef} [sunset] - Deprecated: alternate for sunsetEnd + * @property {ISunTimeDef} [sunrise] - Deprecated: alternate for sunriseStart + * @property {ISunTimeDef} [goldenHourEnd] - Deprecated: alternate for goldenHourDawnEnd + * @property {ISunTimeDef} [goldenHourStart] - Deprecated: alternate for goldenHourDuskStart + */ + + /** + * @typedef ISunTimeNames + * @type {Object} + * @property {number} angle - angle of the sun position in degrees + * @property {string} riseName - name of sun rise (morning name) + * @property {string} setName - name of sun set (evening name) + * @property {number} [risePos] - (optional) position at rise + * @property {number} [setPos] - (optional) position at set + */ + + + /** + * @typedef {Object} ISunCoordinates + * @property {number} dec - The declination of the sun + * @property {number} ra - The right ascension of the sun + */ + + /** + * @typedef {Object} ISunPosition + * @property {number} azimuth - The azimuth above the horizon of the sun in radians + * @property {number} altitude - The altitude of the sun in radians + * @property {number} zenith - The zenith of the sun in radians + * @property {number} azimuthDegrees - The azimuth of the sun in decimal degree + * @property {number} altitudeDegrees - The altitude of the sun in decimal degree + * @property {number} zenithDegrees - The zenith of the sun in decimal degree + * @property {number} declination - The declination of the sun + */ + + /** + * @typedef {Object} IMoonPosition + * @property {number} azimuth - The moon azimuth in radians + * @property {number} altitude - The moon altitude above the horizon in radians + * @property {number} azimuthDegrees - The moon azimuth in degree + * @property {number} altitudeDegrees - The moon altitude above the horizon in degree + * @property {number} distance - The distance of the moon to the earth in kilometers + * @property {number} parallacticAngle - The parallactic angle of the moon + * @property {number} parallacticAngleDegrees - The parallactic angle of the moon in degree + */ + + + /** + * @typedef {Object} IDateObj + * @property {string} date - The Date as a ISO String YYYY-MM-TTTHH:MM:SS.mmmmZ + * @property {number} value - The Date as the milliseconds since 1.1.1970 0:00 UTC + */ + + /** + * @typedef {Object} IPhaseObj + * @property {number} from - The phase start + * @property {number} to - The phase end + * @property {('newMoon'|'waxingCrescentMoon'|'firstQuarterMoon'|'waxingGibbousMoon'|'fullMoon'|'waningGibbousMoon'|'thirdQuarterMoon'|'waningCrescentMoon')} id - id of the phase + * @property {string} emoji - unicode symbol of the phase + * @property {string} name - name of the phase + * @property {string} id - phase name + * @property {number} weight - weight of the phase + * @property {string} css - a css value of the phase + * @property {string} [nameAlt] - an alernate name (not used by this library) + * @property {string} [tag] - additional tag (not used by this library) + */ + + /** + * @typedef {Object} IMoonIlluminationNext + * @property {string} date - The Date as a ISO String YYYY-MM-TTTHH:MM:SS.mmmmZ of the next phase + * @property {number} value - The Date as the milliseconds since 1.1.1970 0:00 UTC of the next phase + * @property {string} type - The name of the next phase [newMoon, fullMoon, firstQuarter, thirdQuarter] + * @property {IDateObj} newMoon - Date of the next new moon + * @property {IDateObj} fullMoon - Date of the next full moon + * @property {IDateObj} firstQuarter - Date of the next first quater of the moon + * @property {IDateObj} thirdQuarter - Date of the next third/last quater of the moon + */ + + /** + * @typedef {Object} IMoonIllumination + * @property {number} fraction - illuminated fraction of the moon; varies from `0.0` (new moon) to `1.0` (full moon) + * @property {IPhaseObj} phase - moon phase as object + * @property {number} phaseValue - The phase of the moon in the current cycle; varies from `0.0` to `1.0` + * @property {number} angle - The midpoint angle in radians of the illuminated limb of the moon reckoned eastward from the north point of the disk; + * @property {IMoonIlluminationNext} next - object containing information about the next phases of the moon + * @remarks the moon is waxing if the angle is negative, and waning if positive + */ + + /** + * @typedef {Object} IMoonDataInst + * @property {number} zenithAngle - The zenith angle of the moon + * @property {IMoonIllumination} illumination - object containing information about the next phases of the moon + * + * @typedef {IMoonPosition & IMoonDataInst} IMoonData + */ + + /** + * @typedef {Object} IMoonTimes + * @property {Date|NaN} rise - a Date object if the moon is rising on the given Date, otherwise NaN + * @property {Date|NaN} set - a Date object if the moon is setting on the given Date, otherwise NaN + * @property {boolean} alwaysUp - is true if the moon never rises/sets and is always _above_ the horizon during the day + * @property {boolean} alwaysDown - is true if the moon is always _below_ the horizon + * @property {Date} [highest] - Date of the highest position, only avalílable if set and rise is not NaN + */ + + (function () { + // sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas + + // shortcuts for easier to read formulas + const sin = Math.sin; + const cos = Math.cos; + const tan = Math.tan; + const asin = Math.asin; + const atan = Math.atan2; + const acos = Math.acos; + const rad = Math.PI / 180; + const degr = 180 / Math.PI; + + // date/time constants and conversions + const dayMs = 86400000; // 1000 * 60 * 60 * 24; + const J1970 = 2440587.5; + const J2000 = 2451545; + + const lunarDaysMs = 2551442778; // The duration in days of a lunar cycle is 29.53058770576 + const firstNewMoon2000 = 947178840000; // first newMoon in the year 2000 2000-01-06 18:14 + + /** + * convert date from Julian calendar + * @param {number} j - day number in Julian calendar to convert + * @return {number} result date as timestamp + */ + function fromJulianDay(j) { + return (j - J1970) * dayMs; + } + + /** + * get number of days for a dateValue since 2000 + * @param {number} dateValue date as timestamp to get days + * @return {number} count of days + */ + function toDays(dateValue) { + return ((dateValue / dayMs) + J1970) - J2000; + } + + // general calculations for position + + const e = rad * 23.4397; // obliquity of the Earth + + /** + * get right ascension + * @param {number} l + * @param {number} b + * @returns {number} + */ + function rightAscension(l, b) { + return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); + } + + /** + * get declination + * @param {number} l + * @param {number} b + * @returns {number} + */ + function declination(l, b) { + return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); + } + + /** + * get azimuth + * @param {number} H - siderealTime + * @param {number} phi - PI constant + * @param {number} dec - The declination of the sun + * @returns {number} azimuth in rad + */ + function azimuthCalc(H, phi, dec) { + return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)) + Math.PI; + } + + /** + * get altitude + * @param {number} H - siderealTime + * @param {number} phi - PI constant + * @param {number} dec - The declination of the sun + * @returns {number} + */ + function altitudeCalc(H, phi, dec) { + return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); + } + + /** + * side real time + * @param {number} d + * @param {number} lw + * @returns {number} + */ + function siderealTime(d, lw) { + return rad * (280.16 + 360.9856235 * d) - lw; + } + + /** + * get astro refraction + * @param {number} h + * @returns {number} + */ + function astroRefraction(h) { + if (h < 0) { // the following formula works for positive altitudes only. + h = 0; + } // if h = -0.08901179 a div/0 would occur. + + // formula 16.4 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad: + return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179)); + } + // general sun calculations + /** + * get solar mean anomaly + * @param {number} d + * @returns {number} + */ + function solarMeanAnomaly(d) { + return rad * (357.5291 + 0.98560028 * d); + } + + /** + * ecliptic longitude + * @param {number} M + * @returns {number} + */ + function eclipticLongitude(M) { + const C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)); + // equation of center + const P = rad * 102.9372; // perihelion of the Earth + return M + C + P + Math.PI; + } + + /** + * sun coordinates + * @param {number} d days in Julian calendar + * @returns {ISunCoordinates} + */ + function sunCoords(d) { + const M = solarMeanAnomaly(d); + const L = eclipticLongitude(M); + + return { + dec: declination(L, 0), + ra: rightAscension(L, 0) + }; + } + + const SunCalc = {}; + + /** + * calculates sun position for a given date and latitude/longitude + * @param {number|Date} dateValue Date object or timestamp for calculating sun-position + * @param {number} lat latitude for calculating sun-position + * @param {number} lng longitude for calculating sun-position + * @return {ISunPosition} result object of sun-position + */ + SunCalc.getPosition = function (dateValue, lat, lng) { + // console.log(`getPosition dateValue=${dateValue} lat=${lat}, lng=${lng}`); + if (isNaN(lat)) { + throw new Error('latitude missing'); + } + if (isNaN(lng)) { + throw new Error('longitude missing'); + } + if (dateValue instanceof Date) { + dateValue = dateValue.valueOf(); + } + const lw = rad * -lng; + const phi = rad * lat; + const d = toDays(dateValue); + const c = sunCoords(d); + const H = siderealTime(d, lw) - c.ra; + const azimuth = azimuthCalc(H, phi, c.dec); + const altitude = altitudeCalc(H, phi, c.dec); + // console.log(`getPosition date=${date}, M=${H}, L=${H}, c=${JSON.stringify(c)}, d=${d}, lw=${lw}, phi=${phi}`); + + return { + azimuth, + altitude, + zenith: (90*Math.PI/180) - altitude, + azimuthDegrees: degr * azimuth, + altitudeDegrees: degr * altitude, + zenithDegrees: 90 - (degr * altitude), + declination: c.dec + }; + }; + + /** sun times configuration + * @type {Array.} + */ + const sunTimes = SunCalc.times = [ + { angle: 6, riseName: 'goldenHourDawnEnd', setName: 'goldenHourDuskStart'}, // GOLDEN_HOUR_2 + { angle: -0.3, riseName: 'sunriseEnd', setName: 'sunsetStart'}, // SUNRISE_END + { angle: -0.833, riseName: 'sunriseStart', setName: 'sunsetEnd'}, // SUNRISE + { angle: -1, riseName: 'goldenHourDawnStart', setName: 'goldenHourDuskEnd'}, // GOLDEN_HOUR_1 + { angle: -4, riseName: 'blueHourDawnEnd', setName: 'blueHourDuskStart'}, // BLUE_HOUR + { angle: -6, riseName: 'civilDawn', setName: 'civilDusk'}, // DAWN + { angle: -8, riseName: 'blueHourDawnStart', setName: 'blueHourDuskEnd'}, // BLUE_HOUR + { angle: -12, riseName: 'nauticalDawn', setName: 'nauticalDusk'}, // NAUTIC_DAWN + { angle: -15, riseName: 'amateurDawn', setName: 'amateurDusk'}, + { angle: -18, riseName: 'astronomicalDawn', setName: 'astronomicalDusk'} // ASTRO_DAWN + ]; + + /** alternate time names for backward compatibility + * @type {Array.<[string, string]>} + */ + const suntimesDeprecated = SunCalc.timesDeprecated = [ + ['dawn', 'civilDawn'], + ['dusk', 'civilDusk'], + ['nightEnd', 'astronomicalDawn'], + ['night', 'astronomicalDusk'], + ['nightStart', 'astronomicalDusk'], + ['goldenHour', 'goldenHourDuskStart'], + ['sunrise', 'sunriseStart'], + ['sunset', 'sunsetEnd'], + ['goldenHourEnd', 'goldenHourDawnEnd'], + ['goldenHourStart', 'goldenHourDuskStart'] + ]; + + /** adds a custom time to the times config + * @param {number} angleAltitude - angle of Altitude/elevation above the horizont of the sun in degrees + * @param {string} riseName - name of sun rise (morning name) + * @param {string} setName - name of sun set (evening name) + * @param {number} [risePos] - (optional) position at rise (morning) + * @param {number} [setPos] - (optional) position at set (evening) + * @param {boolean} [degree=true] defines if the elevationAngle is in degree not in radians + * @return {Boolean} true if new time could be added, false if not (parameter missing; riseName or setName already existing) + */ + SunCalc.addTime = function (angleAltitude, riseName, setName, risePos, setPos, degree) { + let isValid = (typeof riseName === 'string') && (riseName.length > 0) && + (typeof setName === 'string') && (setName.length > 0) && + (typeof angleAltitude === 'number'); + if (isValid) { + const EXP = /^(?![0-9])[a-zA-Z0-9$_]+$/; + // check for invalid names + for (let i=0; i= 0; i--) { + if (suntimesDeprecated[i][0] === riseName || suntimesDeprecated[i][0] === setName) { + suntimesDeprecated.splice(i, 1); + } + } + return true; + } + } + return false; + }; + + /** + * add an alternate name for a sun time + * @param {string} alternameName - alternate or deprecated time name + * @param {string} originalName - original time name from SunCalc.times array + * @return {Boolean} true if could be added, false if not (parameter missing; originalName does not exists; alternameName already existis) + */ + SunCalc.addDeprecatedTimeName = function (alternameName, originalName) { + let isValid = (typeof alternameName === 'string') && (alternameName.length > 0) && + (typeof originalName === 'string') && (originalName.length > 0); + if (isValid) { + let hasOrg = false; + const EXP = /^(?![0-9])[a-zA-Z0-9$_]+$/; + // check for invalid names + for (let i=0; i 200) { + // let nazi = this.getPosition(dateVal, lat, lng).azimuth; + const d = toDays(dateVal); + const c = sunCoords(d); + const H = siderealTime(d, lw) - c.ra; + const nazim = azimuthCalc(H, phi, c.dec); + + addval /= 2; + if (nazim < nazimuth) { + dateVal += addval; + } else { + dateVal -= addval; + } + } + return new Date(Math.floor(dateVal)); + }; + + // calculation for solar time based on https://www.pveducation.org/pvcdrom/properties-of-sunlight/solar-time + + /** + * Calculaes the solar time of the given date in the given latitude and UTC offset. + * @param {number|Date} dateValue Date object or timestamp for calculating solar time + * @param {number} lng longitude for calculating sun-time + * @param {number} utcOffset offset to the utc time + * @returns {Date} Returns the solar time of the given date in the given latitude and UTC offset. + */ + SunCalc.getSolarTime = function (dateValue, lng, utcOffset) { + // @ts-ignore + const date = new Date(dateValue); + // calculate the day of year + const start = new Date(date.getFullYear(), 0, 0); + const diff = (date.getTime() - start.getTime()) + ((start.getTimezoneOffset() - date.getTimezoneOffset()) * 60 * 1000); + const dayOfYear = Math.floor(diff / dayMs); + + const b = 360 / 365 * (dayOfYear - 81) * rad; + const equationOfTime = 9.87 * sin(2 * b) - 7.53 * cos(b) - 1.5 * sin(b); + const localSolarTimeMeridian = 15 * utcOffset; + const timeCorrection = equationOfTime + 4 * (lng - localSolarTimeMeridian); + const localSolarTime = date.getHours() + timeCorrection / 60 + date.getMinutes() / 60; + + const solarDate = new Date(0, 0); + solarDate.setMinutes(+localSolarTime * 60); + return solarDate; + }; + + // moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas + + /** + * calculate the geocentric ecliptic coordinates of the moon + * @param {number} d number of days + */ + function moonCoords(d) { + const L = rad * (218.316 + 13.176396 * d); // ecliptic longitude + const M = rad * (134.963 + 13.064993 * d); // mean anomaly + const F = rad * (93.272 + 13.229350 * d); // mean distance + const l = L + rad * 6.289 * sin(M); // longitude + const b = rad * 5.128 * sin(F); // latitude + const dt = 385001 - 20905 * cos(M); // distance to the moon in km + + return { + ra: rightAscension(l, b), + dec: declination(l, b), + dist: dt + }; + } + + /** + * calculates moon position for a given date and latitude/longitude + * @param {number|Date} dateValue Date object or timestamp for calculating moon-position + * @param {number} lat latitude for calculating moon-position + * @param {number} lng longitude for calculating moon-position + * @return {IMoonPosition} result object of moon-position + */ + SunCalc.getMoonPosition = function (dateValue, lat, lng) { + // console.log(`getMoonPosition dateValue=${dateValue} lat=${lat}, lng=${lng}`); + if (isNaN(lat)) { + throw new Error('latitude missing'); + } + if (isNaN(lng)) { + throw new Error('longitude missing'); + } + if (dateValue instanceof Date) { + dateValue = dateValue.valueOf(); + } + const lw = rad * -lng; + const phi = rad * lat; + const d = toDays(dateValue); + const c = moonCoords(d); + const H = siderealTime(d, lw) - c.ra; + let altitude = altitudeCalc(H, phi, c.dec); + altitude += astroRefraction(altitude); // altitude correction for refraction + + // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + const pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H)); + + const azimuth = azimuthCalc(H, phi, c.dec); + + return { + azimuth, + altitude, + azimuthDegrees: degr * azimuth, + altitudeDegrees: degr * altitude, + distance: c.dist, + parallacticAngle: pa, + parallacticAngleDegrees: degr * pa + }; + }; + + const fractionOfTheMoonCycle = SunCalc.moonCycles = [{ + from: 0, + to: 0.033863193308711, + id: 'newMoon', + emoji: '🌚', + code: ':new_moon_with_face:', + name: 'New Moon', + weight: 1, + css: 'wi-moon-new' + }, + { + from: 0.033863193308711, + to: 0.216136806691289, + id: 'waxingCrescentMoon', + emoji: '🌒', + code: ':waxing_crescent_moon:', + name: 'Waxing Crescent', + weight: 6.3825, + css: 'wi-moon-wax-cres' + }, + { + from: 0.216136806691289, + to: 0.283863193308711, + id: 'firstQuarterMoon', + emoji: '🌓', + code: ':first_quarter_moon:', + name: 'First Quarter', + weight: 1, + css: 'wi-moon-first-quart' + }, + { + from: 0.283863193308711, + to: 0.466136806691289, + id: 'waxingGibbousMoon', + emoji: '🌔', + code: ':waxing_gibbous_moon:', + name: 'Waxing Gibbous', + weight: 6.3825, + css: 'wi-moon-wax-gibb' + }, + { + from: 0.466136806691289, + to: 0.533863193308711, + id: 'fullMoon', + emoji: '🌝', + code: ':full_moon_with_face:', + name: 'Full Moon', + weight: 1, + css: 'wi-moon-full' + }, + { + from: 0.533863193308711, + to: 0.716136806691289, + id: 'waningGibbousMoon', + emoji: '🌖', + code: ':waning_gibbous_moon:', + name: 'Waning Gibbous', + weight: 6.3825, + css: 'wi-moon-wan-gibb' + }, + { + from: 0.716136806691289, + to: 0.783863193308711, + id: 'thirdQuarterMoon', + emoji: '🌗', + code: ':last_quarter_moon:', + name: 'third Quarter', + weight: 1, + css: 'wi-moon-third-quart' + }, + { + from: 0.783863193308711, + to: 0.966136806691289, + id: 'waningCrescentMoon', + emoji: '🌘', + code: ':waning_crescent_moon:', + name: 'Waning Crescent', + weight: 6.3825, + css: 'wi-moon-wan-cres' + }, + { + from: 0.966136806691289, + to: 1, + id: 'newMoon', + emoji: '🌚', + code: ':new_moon_with_face:', + name: 'New Moon', + weight: 1, + css: 'wi-moon-new' + }]; + + /** + * calculations for illumination parameters of the moon, + * based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and + * Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998. + * @param {number|Date} dateValue Date object or timestamp for calculating moon-illumination + * @return {IMoonIllumination} result object of moon-illumination + */ + SunCalc.getMoonIllumination = function (dateValue) { + // console.log(`getMoonIllumination dateValue=${dateValue}`); + if (dateValue instanceof Date) { + dateValue = dateValue.valueOf(); + } + const d = toDays(dateValue); + const s = sunCoords(d); + const m = moonCoords(d); + const sdist = 149598000; // distance from Earth to Sun in km + const phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)); + const inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)); + const angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) - + cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra)); + const phaseValue = 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI; + + // calculates the difference in ms between the sirst fullMoon 2000 and given Date + const diffBase = dateValue - firstNewMoon2000; + // Calculate modulus to drop completed cycles + let cycleModMs = diffBase % lunarDaysMs; + // If negative number (date before new moon 2000) add lunarDaysMs + if ( cycleModMs < 0 ) { cycleModMs += lunarDaysMs; } + const nextNewMoon = (lunarDaysMs - cycleModMs) + dateValue; + let nextFullMoon = ((lunarDaysMs/2) - cycleModMs) + dateValue; + if (nextFullMoon < dateValue) { nextFullMoon += lunarDaysMs; } + const quater = (lunarDaysMs/4); + let nextFirstQuarter = (quater - cycleModMs) + dateValue; + if (nextFirstQuarter < dateValue) { nextFirstQuarter += lunarDaysMs; } + let nextThirdQuarter = (lunarDaysMs - quater - cycleModMs) + dateValue; + if (nextThirdQuarter < dateValue) { nextThirdQuarter += lunarDaysMs; } + // Calculate the fraction of the moon cycle + // const currentfrac = cycleModMs / lunarDaysMs; + const next = Math.min(nextNewMoon, nextFirstQuarter, nextFullMoon, nextThirdQuarter); + let phase; + + for (let index = 0; index < fractionOfTheMoonCycle.length; index++) { + const element = fractionOfTheMoonCycle[index]; + if ( (phaseValue >= element.from) && (phaseValue <= element.to) ) { + phase = element; + break; + } + } + + return { + fraction: (1 + cos(inc)) / 2, + // fraction2: cycleModMs / lunarDaysMs, + // @ts-ignore + phase, + phaseValue, + angle, + next : { + value: next, + date: (new Date(next)).toISOString(), + type: (next === nextNewMoon) ? 'newMoon' : ((next === nextFirstQuarter) ? 'firstQuarter' : ((next === nextFullMoon) ? 'fullMoon' : 'thirdQuarter')), + newMoon: { + value: nextNewMoon, + date: (new Date(nextNewMoon)).toISOString() + }, + fullMoon: { + value: nextFullMoon, + date: (new Date(nextFullMoon)).toISOString() + }, + firstQuarter: { + value: nextFirstQuarter, + date: (new Date(nextFirstQuarter)).toISOString() + }, + thirdQuarter: { + value: nextThirdQuarter, + date: (new Date(nextThirdQuarter)).toISOString() + } + } + }; + }; + + /** + * calculations moon position and illumination for a given date and latitude/longitude of the moon, + * @param {number|Date} dateValue Date object or timestamp for calculating moon-illumination + * @param {number} lat latitude for calculating moon-position + * @param {number} lng longitude for calculating moon-position + * @return {IMoonData} result object of moon-illumination + */ + SunCalc.getMoonData = function (dateValue, lat, lng) { + const pos = SunCalc.getMoonPosition(dateValue, lat, lng); + const illum = SunCalc.getMoonIllumination(dateValue); + return Object.assign({ + illumination : illum, + zenithAngle : illum.angle - pos.parallacticAngle + }, pos); + }; + + /** + * add hours to a date + * @param {number} dateValue timestamp to add hours + * @param {number} h - hours to add + * @returns {number} new timestamp with added hours + */ + function hoursLater(dateValue, h) { + return dateValue + h * dayMs / 24; + } + + /** + * calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article + * @param {number|Date} dateValue Date object or timestamp for calculating moon-times + * @param {number} lat latitude for calculating moon-times + * @param {number} lng longitude for calculating moon-times + * @param {boolean} [inUTC] defines if the calculation should be in utc or local time (default is local) + * @return {IMoonTimes} result object of sunTime + */ + SunCalc.getMoonTimes = function (dateValue, lat, lng, inUTC) { + if (isNaN(lat)) { + throw new Error('latitude missing'); + } + if (isNaN(lng)) { + throw new Error('longitude missing'); + } + const t = new Date(dateValue); + if (inUTC) { + t.setUTCHours(0, 0, 0, 0); + } else { + t.setHours(0, 0, 0, 0); + } + dateValue = t.valueOf(); + // console.log(`getMoonTimes lat=${lat} lng=${lng} dateValue=${dateValue} t=${t}`); + + const hc = 0.133 * rad; + let h0 = SunCalc.getMoonPosition(dateValue, lat, lng).altitude - hc; + let rise; let set; let ye; let d; let roots; let x1; let x2; let dx; + + // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set) + for (let i = 1; i <= 26; i += 2) { + const h1 = SunCalc.getMoonPosition(hoursLater(dateValue, i), lat, lng).altitude - hc; + const h2 = SunCalc.getMoonPosition(hoursLater(dateValue, i + 1), lat, lng).altitude - hc; + + const a = (h0 + h2) / 2 - h1; + const b = (h2 - h0) / 2; + const xe = -b / (2 * a); + ye = (a * xe + b) * xe + h1; + d = b * b - 4 * a * h1; + roots = 0; + + if (d >= 0) { + dx = Math.sqrt(d) / (Math.abs(a) * 2); + x1 = xe - dx; + x2 = xe + dx; + if (Math.abs(x1) <= 1) { + roots++; + } + + if (Math.abs(x2) <= 1) { + roots++; + } + + if (x1 < -1) { + x1 = x2; + } + } + + if (roots === 1) { + if (h0 < 0) { + rise = i + x1; + } else { + set = i + x1; + } + } else if (roots === 2) { + rise = i + (ye < 0 ? x2 : x1); + set = i + (ye < 0 ? x1 : x2); + } + + if (rise && set) { + break; + } + + h0 = h2; + } + + const result = {}; + if (rise) { + result.rise = new Date(hoursLater(dateValue, rise)); + } else { + result.rise = NaN; + } + + if (set) { + result.set = new Date(hoursLater(dateValue, set)); + } else { + result.set = NaN; + } + + if (!rise && !set) { + if (ye > 0) { + result.alwaysUp = true; + result.alwaysDown = false; + } else { + result.alwaysUp = false; + result.alwaysDown = true; + } + } else if (rise && set) { + result.alwaysUp = false; + result.alwaysDown = false; + result.highest = new Date(hoursLater(dateValue, Math.min(rise, set) + (Math.abs(set - rise) / 2))); + } else { + result.alwaysUp = false; + result.alwaysDown = false; + } + return result; + }; + + /** + * calc moon transit + * @param {number} rize timestamp for rise + * @param {number} set timestamp for set time + * @returns {Date} new moon transit + */ + function calcMoonTransit(rize, set) { + if (rize > set) { + return new Date(set + (rize - set) / 2); + } + return new Date(rize + (set - rize) / 2); + } + + /** + * calculated the moon transit + * @param {number|Date} rise rise time as Date object or timestamp for calculating moon-transit + * @param {number|Date} set set time as Date object or timestamp for calculating moon-transit + * @param {number} lat latitude for calculating moon-times + * @param {number} lng longitude for calculating moon-times + * @returns {{main: (Date|null), invert: (Date|null)}} + */ + SunCalc.moonTransit = function (rise, set, lat, lng) { + /** @type {Date|null} */ let main = null; + /** @type {Date|null} */ let invert = null; + const riseDate = new Date(rise); + const setDate = new Date(set); + const riseValue = riseDate.getTime(); + const setValue = setDate.getTime(); + const day = setDate.getDate(); + let tempTransitBefore; + let tempTransitAfter; + + if (rise && set) { + if (rise < set) { + main = calcMoonTransit(riseValue, setValue); + } else { + invert = calcMoonTransit(riseValue, setValue); + } + } + + if (rise) { + tempTransitAfter = calcMoonTransit(riseValue, SunCalc.getMoonTimes(new Date(riseDate).setDate(day + 1), lat, lng).set.valueOf()); + if (tempTransitAfter.getDate() === day) { + if (main) { + invert = tempTransitAfter; + } else { + main = tempTransitAfter; + } + } + } + + if (set) { + tempTransitBefore = calcMoonTransit(setValue, SunCalc.getMoonTimes(new Date(setDate).setDate(day - 1), lat, lng).rise.valueOf()); + if (tempTransitBefore.getDate() === day) { + main = tempTransitBefore; + } + } + return { + main, + invert + }; + }; + + // export as Node module / AMD module / browser variable + { + module.exports = SunCalc; + // @ts-ignore + } + + })(); + } (suncalc)); + return suncalc.exports; + } + + var suncalcExports = requireSuncalc(); var SunCalc = /*@__PURE__*/getDefaultExportFromCjs(suncalcExports); const TSMOON_PHASES = { @@ -1939,7 +2135,7 @@ var TSMoonCard = (function (exports) { /** * Main card class definition */ - class TSMoonCard extends h { + class TSMoonCard extends r$2 { constructor() { super(...arguments); this.cardTitle = ""; @@ -1952,7 +2148,7 @@ var TSMoonCard = (function (exports) { this.home_longitude = 0; } renderIcon(svg_icon_code) { - return ke ` + return x `
@@ -2054,7 +2250,7 @@ var TSMoonCard = (function (exports) { //const lc_moonsetFormated = dayjs(lc_times.set).format('HH:mm'); const lc_moonriseFormated = dayjs(lc_times.rise).format(this.getTimeFormat(this.time_format)); const lc_moonsetFormated = dayjs(lc_times.set).format(this.getTimeFormat(this.time_format)); - return ke ` + return x `
@@ -2110,7 +2306,7 @@ var TSMoonCard = (function (exports) { ], TSMoonCard.prototype, "_config", void 0); var name = "ha-tsmoon-card"; - var version = "0.9.5"; + var version = "v0.9.9"; const printVersionToConsole = () => console.info(`%c ${name.toUpperCase()} %c Version ${version} `, 'color: white; font-weight: bold; background: crimson', 'color: #000; font-weight: bold; background: #ddd'); // This puts your card into the UI card picker dialog diff --git a/www/community/ha-tsmoon-card/tsmoon-card.js.gz b/www/community/ha-tsmoon-card/tsmoon-card.js.gz index 323ab891..0779898b 100644 Binary files a/www/community/ha-tsmoon-card/tsmoon-card.js.gz and b/www/community/ha-tsmoon-card/tsmoon-card.js.gz differ diff --git a/www/community/kiosk-mode/kiosk-mode.js b/www/community/kiosk-mode/kiosk-mode.js index b430146f..48f02b22 100644 --- a/www/community/kiosk-mode/kiosk-mode.js +++ b/www/community/kiosk-mode/kiosk-mode.js @@ -1 +1 @@ -!function(){"use strict";var t=function(){return t=Object.assign||function(t){for(var e,n=1,o=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){r=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){_=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1] ha-sidebar":{display:"none"},".header":{width:"100% !important"}}),ASIDE:bt(".mdc-drawer"),OVERFLOW_MENU:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU)),BLOCK_OVERFLOW:gt((Lt={},Lt["".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU)]={"pointer-events":"none !important"},Lt)),SEARCH:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.SEARCH,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.SEARCH,'"]')),ASSISTANT:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.ASSIST,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.ASSIST,'"]')),REFRESH:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.REFRESH,'"]')),UNUSED_ENTITIES:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.UNUSED_ENTITIES,'"]')),RELOAD_RESOURCES:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.RELOAD_RESOURCES,'"]')),EDIT_DASHBOARD:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.EDIT_DASHBOARD,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.EDIT_DASHBOARD,'"]')),DIALOG_HEADER_HISTORY:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM,'[data-selector="').concat(It.DIALOG_HISTORY,'"]')),DIALOG_HEADER_SETTINGS:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM,'[data-selector="').concat(It.DIALOG_SETTINGS,'"]')),DIALOG_HEADER_OVERFLOW:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.BUTTON_MENU)),DIALOG_HISTORY:bt(ht.HA_DIALOG_HISTORY),DIALOG_LOGBOOK:bt(ht.HA_DIALOG_LOGBOOK),DIALOG_ATTRIBUTES:bt(ht.HA_DIALOG_ATTRIBUTES),DIALOG_MEDIA_ACTIONS:bt(".controls"),DIALOG_TIMER_ACTIONS:bt(".actions"),DIALOG_UPDATE_ACTIONS:bt(".actions","hr:has(+ .actions)"),DIALOG_CLIMATE_CONTROL_SELECT:bt(ht.HA_DIALOG_CLIMATE_CONTROL_SELECT),DIALOG_CLIMATE_TEMPERATURE_BUTTONS:bt(ht.HA_DIALOG_CLIMATE_TEMPERATURE_BUTTONS),DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION:bt(ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_SLIDER,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_TARGET_BORDER,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_TARGET),DIALOG_LIGHT_CONTROL_ACTIONS:bt(".controls > ".concat(ht.HA_DIALOG_LIGHT_BRIGHTNESS," + ").concat(ht.HA_DIALOG_LIGHT_CONTROLS)),DIALOG_LIGHT_COLOR_ACTIONS:bt(".controls > ".concat(ht.HA_DIALOG_LIGHT_COLORS)),DIALOG_LIGHT_SETTINGS_ACTIONS:bt(".controls:has(> ".concat(ht.HA_DIALOG_LIGHT_BRIGHTNESS,") + div > ").concat(ht.HA_DIALOG_LIGHT_SETTINGS)),DIALOG_SHOW_MORE:bt(".header a")},xt=function(){function e(){this.lines=[{content:"%c≡ kiosk-mode",color:"white",background:"#03a9f4"},{content:"%cversion ".concat("6.2.0")}]}return e.prototype.log=function(){var e=[],n=[],o=this.lines.length-1,i={"border-color":"#424242","border-style":"solid",display:"inline-block","font-family":"monospace","font-size":"12px"};this.lines.forEach((function(r,_){e.push(r.content.padEnd(27)),e.push("%c⋮"),_!==o&&e.push("%c\n");var s="0 0 0 1px",a="0 1px 0 1px";0===o?(s="1px 0 1px 1px",a="1px 1px 1px 0"):0===_?(s="1px 0 0 1px",a="1px 1px 0 0"):_===o&&(s="0 0 1px 1px",a="0 1px 1px 0"),n.push(wt(t(t({},i),{background:r.background||"white",color:r.color||"#424242",padding:0===_?"1px 0px 1px 5px":"1px 0px 1px 10px","border-width":s}))),n.push(wt(t(t({},i),{background:r.background||"white",color:r.color||"white",padding:0===_?"1px 5px":"1px 5px 1px 0px","border-width":a}))),_!==o&&n.push("")})),console.info.apply(console,function(t,e,n){if(n||2===arguments.length)for(var o,i=0,r=e.length;i hass > user"))];case 7:return u.user=n.sent(),this.version=function(t){var e=t?t.match(/^(\d+)\.(\d+)\.(\w+)(?:\.(\w+))?$/):null;return e?[+e[1],+e[2],e[3]]:null}(null===(h=null===(T=this.ha.hass)||void 0===T?void 0:T.config)||void 0===h?void 0:h.version),this.run(),[2]}}))}))})),o.addEventListener(b.ON_MORE_INFO_DIALOG_OPEN,(function(e){t.HAMoreInfoDialogElements=e.detail,t.insertMoreInfoDialogStyles()})),o.addEventListener(b.ON_HISTORY_AND_LOGBOOK_DIALOG_OPEN,(function(e){t.HAMoreInfoDialogElements=e.detail,t.insertMoreInfoDialogStyles()})),o.listen(),this.entityWatch(),this.resizeWindowBinded=this.resizeWindow.bind(this)}return t.prototype.run=function(){return e(this,void 0,void 0,(function(){var t,e=this;return n(this,(function(n){return(t=this.main.querySelector(ht.HA_PANEL_LOVELACE))?[2,Bt((function(){var e;return null===(e=null==t?void 0:t.lovelace)||void 0===e?void 0:e.config}),(function(t){return!!t}),"Lovelace config").then((function(t){return e.processConfig(t.kiosk_mode||{})}))]:[2]}))}))},t.prototype.runDialogs=function(t){var e,n;void 0===t&&(t=null===(n=null===(e=this.ha)||void 0===e?void 0:e.shadowRoot)||void 0===n?void 0:n.querySelector(ht.HA_MORE_INFO_DIALOG)),t&&this.insertMoreInfoDialogStyles()},t.prototype.processConfig=function(t){return e(this,void 0,void 0,(function(){var o,i,r,_,s,a=this;return n(this,(function(c){var I;return o=this.ha.hass.panelUrl,window.kioskModeEntities[o]||(window.kioskModeEntities[o]=[]),Object.values(X).forEach((function(t){a.options[t]=!1})),Object.values(J).forEach((function(t){a.options[t]=!1})),(I=this.ha,e(void 0,void 0,void 0,(function(){var t,e,o,i,r;return n(this,(function(n){switch(n.label){case 0:return[4,Ut(I)];case 1:return t=n.sent(),e=I.hass.language,o=t[e],i=Object.entries(Dt),r=i.map((function(t){var e=t[0],n=t[1];return[o[n],e]})),[2,Object.fromEntries(r)]}}))}))).then((function(t){a.menuTranslations=t,a.updateMenuItemsLabels()})).catch((function(){console.warn("".concat(at,": ").concat("[ Non critial warning ]"," Cannot get resources translations"))})),yt(Object.values(X))||mt(Object.values(X))?Object.values(X).forEach((function(t){a.options[t]=yt(t)||mt(t)})):this.setOptions(t,!1),(i=this.user.is_admin?t.admin_settings:t.non_admin_settings)&&this.setOptions(i,!0),t.user_settings&&ft(t.user_settings).forEach((function(t){ft(t.users).some((function(t){return t.toLowerCase()===a.user.name.toLowerCase()}))&&a.setOptions(t,!0)})),(r=this.options[J.IGNORE_MOBILE_SETTINGS]?null:t.mobile_settings)&&(_=r.custom_width?r.custom_width:812,window.innerWidth<=_&&this.setOptions(r,!0)),(s=this.options[J.IGNORE_ENTITY_SETTINGS]?null:t.entity_settings)&&s.forEach((function(t){var e=Object.keys(t.entity)[0];window.kioskModeEntities[o].includes(e)||window.kioskModeEntities[o].push(e),a.ha.hass.states[e].state==t.entity[e]&&a.setOptions(t,!1)})),mt(Z.DISABLE_KIOSK_MODE)&&!this.options[J.IGNORE_DISABLE_KM]||this.insertStyles(),[2]}))}))},t.prototype.insertStyles=function(){var t,e,n,o=this;if(this.options[X.KIOSK]||this.options[X.HIDE_HEADER]?(Gt(Ft.HEADER,this.huiRoot),mt(Z.CACHE)&&Mt(X.HIDE_HEADER,dt)):Ct(this.huiRoot),null===(e=null===(t=this.main)||void 0===t?void 0:t.host)||void 0===e||e.removeEventListener(St,this.blockEventHandler,!0),this.options[X.KIOSK]||this.options[X.HIDE_SIDEBAR]){var i=function(){var t,e;null===(e=null===(t=o.main)||void 0===t?void 0:t.host)||void 0===e||e.addEventListener(St,o.blockEventHandler,!0),Gt(Ft.SIDEBAR,o.drawerLayout),Gt(Ft.ASIDE,o.drawerLayout.shadowRoot),mt(Z.CACHE)&&Mt(X.HIDE_SIDEBAR,dt),o.drawerLayout.removeEventListener(Rt,i)};"modal"===this.drawerLayout.type&&(null===(n=this.drawerLayout.appContent)||void 0===n?void 0:n.inert)?this.drawerLayout.addEventListener(Rt,i):i()}else Ct(this.drawerLayout),Ct(this.drawerLayout.shadowRoot);if(this.options[X.HIDE_ACCOUNT]||this.options[X.HIDE_NOTIFICATIONS]||this.options[X.HIDE_MENU_BUTTON]){var r=[this.options[X.HIDE_ACCOUNT]?Ft.ACCOUNT:"",this.options[X.HIDE_NOTIFICATIONS]?Ft.NOTIFICATIONS:"",this.options[X.HIDE_ACCOUNT]&&this.options[X.HIDE_NOTIFICATIONS]?Ft.DIVIDER:"",this.options[X.HIDE_ACCOUNT]||this.options[X.HIDE_NOTIFICATIONS]?Ft.PAPER_LISTBOX(this.options[X.HIDE_ACCOUNT],this.options[X.HIDE_NOTIFICATIONS]):"",this.options[X.HIDE_MENU_BUTTON]?Ft.MENU_BUTTON:""];Gt(r.join(""),this.sideBarRoot),mt(Z.CACHE)&&(this.options[X.HIDE_ACCOUNT]&&Mt(X.HIDE_ACCOUNT,dt),this.options[X.HIDE_NOTIFICATIONS]&&Mt(X.HIDE_NOTIFICATIONS,dt))}else Ct(this.sideBarRoot);if(this.options[X.HIDE_SEARCH]||this.options[X.HIDE_ASSISTANT]||this.options[X.HIDE_REFRESH]||this.options[X.HIDE_UNUSED_ENTITIES]||this.options[X.HIDE_RELOAD_RESOURCES]||this.options[X.HIDE_EDIT_DASHBOARD]||this.options[X.HIDE_OVERFLOW]||this.options[X.BLOCK_OVERFLOW]||this.options[X.HIDE_SIDEBAR]||this.options[X.HIDE_MENU_BUTTON]){r=[this.options[X.HIDE_SEARCH]?Ft.SEARCH:"",this.options[X.HIDE_ASSISTANT]?Ft.ASSISTANT:"",this.options[X.HIDE_REFRESH]?Ft.REFRESH:"",this.options[X.HIDE_UNUSED_ENTITIES]?Ft.UNUSED_ENTITIES:"",this.options[X.HIDE_RELOAD_RESOURCES]?Ft.RELOAD_RESOURCES:"",this.options[X.HIDE_EDIT_DASHBOARD]?Ft.EDIT_DASHBOARD:"",this.options[X.HIDE_OVERFLOW]?Ft.OVERFLOW_MENU:"",this.options[X.BLOCK_OVERFLOW]?Ft.BLOCK_OVERFLOW:"",this.options[X.HIDE_MENU_BUTTON]||this.options[X.HIDE_SIDEBAR]?Ft.MENU_BUTTON_BURGER:""];Gt(r.join(""),this.appToolbar),mt(Z.CACHE)&&(this.options[X.HIDE_SEARCH]&&Mt(X.HIDE_SEARCH,dt),this.options[X.HIDE_ASSISTANT]&&Mt(X.HIDE_ASSISTANT,dt),this.options[X.HIDE_REFRESH]&&Mt(X.HIDE_REFRESH,dt),this.options[X.HIDE_UNUSED_ENTITIES]&&Mt(X.HIDE_UNUSED_ENTITIES,dt),this.options[X.HIDE_RELOAD_RESOURCES]&&Mt(X.HIDE_RELOAD_RESOURCES,dt),this.options[X.HIDE_EDIT_DASHBOARD]&&Mt(X.HIDE_EDIT_DASHBOARD,dt),this.options[X.HIDE_OVERFLOW]&&Mt(X.HIDE_OVERFLOW,dt),this.options[X.BLOCK_OVERFLOW]&&Mt(X.BLOCK_OVERFLOW,dt),this.options[X.HIDE_MENU_BUTTON]&&Mt(X.HIDE_MENU_BUTTON,dt))}else Ct(this.appToolbar);this.options[X.BLOCK_MOUSE]?(Gt(Ft.MOUSE,document.body),mt(Z.CACHE)&&Mt(X.BLOCK_MOUSE,dt)):Ct(document.body),window.removeEventListener("contextmenu",this.blockEventHandler,!0),this.options[X.BLOCK_CONTEXT_MENU]&&(window.addEventListener("contextmenu",this.blockEventHandler,!0),mt(Z.CACHE)&&Mt(X.BLOCK_CONTEXT_MENU,dt)),window.removeEventListener("resize",this.resizeWindowBinded),window.addEventListener("resize",this.resizeWindowBinded),window.dispatchEvent(new Event("resize"))},t.prototype.insertMoreInfoDialogStyles=function(){return e(this,void 0,void 0,(function(){var t,e,o,i,r,_,s,a,c=this;return n(this,(function(n){switch(n.label){case 0:return this.HAMoreInfoDialogElements.HA_DIALOG.selector.query("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM)).all.then((function(t){Pt(t,c.menuTranslations)})),[4,this.HAMoreInfoDialogElements.HA_DIALOG.element];case 1:return t=n.sent(),e=this.HAMoreInfoDialogElements.HA_DIALOG_CONTENT,[4,(o=e.selector.query("".concat(ht.HA_DIALOG_MORE_INFO,", ").concat(ht.HA_DIALOG_MORE_INFO_HISTORY_AND_LOGBOOK)).$).element];case 2:return i=n.sent(),this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_HISTORY]||this.options[X.HIDE_DIALOG_HEADER_SETTINGS]||this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]?(a=[this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_HISTORY]?Ft.DIALOG_HEADER_HISTORY:"",this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_SETTINGS]?Ft.DIALOG_HEADER_SETTINGS:"",this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]?Ft.DIALOG_HEADER_OVERFLOW:""],Gt(a.join(""),t),mt(Z.CACHE)&&(this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]&&Mt(X.HIDE_DIALOG_HEADER_ACTION_ITEMS,dt),this.options[X.HIDE_DIALOG_HEADER_HISTORY]&&Mt(X.HIDE_DIALOG_HEADER_HISTORY,dt),this.options[X.HIDE_DIALOG_HEADER_SETTINGS]&&Mt(X.HIDE_DIALOG_HEADER_SETTINGS,dt),this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]&&Mt(X.HIDE_DIALOG_HEADER_OVERFLOW,dt))):Ct(t),r=o.query(ht.HA_DIALOG_MORE_INFO_CONTENT).$.query(ht.HA_DIALOG_CLIMATE).$,_=r.query(ht.HA_STATE_CONTROL_CLIMATE_TEMPERATURE).$,s=_.query(ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER).$,r.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS]?(Gt(Ft.DIALOG_CLIMATE_CONTROL_SELECT,t),mt(Z.CACHE)&&(c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_ACTIONS,dt),c.options[X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS,dt))):Ct(t)})),_.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]?(Gt(Ft.DIALOG_CLIMATE_TEMPERATURE_BUTTONS,t),mt(Z.CACHE)&&c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS,dt)):Ct(t)})),s.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]?Gt(Ft.DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION,t):Ct(t)})),o.query(ht.HA_DIALOG_MORE_INFO_CONTENT).$.query([ht.HA_DIALOG_DEFAULT,ht.HA_DIALOG_VACUUM,ht.HA_DIALOG_TIMER,ht.HA_DIALOG_LIGHT,ht.HA_DIALOG_SIREN,ht.HA_DIALOG_LOCK,ht.HA_DIALOG_MEDIA_PLAYER,ht.HA_DIALOG_UPDATE].join(",")).$.element.then((function(t){if(c.options[X.HIDE_DIALOG_ATTRIBUTES]||c.options[X.HIDE_DIALOG_TIMER_ACTIONS]||c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]||c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]){var e=[c.options[X.HIDE_DIALOG_ATTRIBUTES]?Ft.DIALOG_ATTRIBUTES:"",c.options[X.HIDE_DIALOG_TIMER_ACTIONS]&&t.host.localName===ht.HA_DIALOG_TIMER?Ft.DIALOG_TIMER_ACTIONS:"",c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]&&t.host.localName===ht.HA_DIALOG_MEDIA_PLAYER?Ft.DIALOG_MEDIA_ACTIONS:"",c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]&&t.host.localName===ht.HA_DIALOG_UPDATE?Ft.DIALOG_UPDATE_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]?Ft.DIALOG_LIGHT_CONTROL_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]?Ft.DIALOG_LIGHT_COLOR_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]?Ft.DIALOG_LIGHT_SETTINGS_ACTIONS:""];Gt(e.join(""),t),mt(Z.CACHE)&&(c.options[X.HIDE_DIALOG_ATTRIBUTES]&&Mt(X.HIDE_DIALOG_ATTRIBUTES,dt),c.options[X.HIDE_DIALOG_TIMER_ACTIONS]&&Mt(X.HIDE_DIALOG_TIMER_ACTIONS,dt),c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]&&Mt(X.HIDE_DIALOG_MEDIA_ACTIONS,dt),c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]&&Mt(X.HIDE_DIALOG_UPDATE_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS,dt))}else Ct(t)})),this.options[X.HIDE_DIALOG_HISTORY]||this.options[X.HIDE_DIALOG_LOGBOOK]?(a=[this.options[X.HIDE_DIALOG_HISTORY]?Ft.DIALOG_HISTORY:"",this.options[X.HIDE_DIALOG_LOGBOOK]?Ft.DIALOG_LOGBOOK:""],Gt(a.join(""),i),mt(Z.CACHE)&&(this.options[X.HIDE_DIALOG_HISTORY]&&Mt(X.HIDE_DIALOG_HISTORY,dt),this.options[X.HIDE_DIALOG_LOGBOOK]&&Mt(X.HIDE_DIALOG_LOGBOOK,dt))):Ct(i),o.query(ht.HA_DIALOG_HISTORY).$.element.then((function(t){c.options[X.HIDE_DIALOG_HISTORY_SHOW_MORE]?(Gt(Ft.DIALOG_SHOW_MORE,t),mt(Z.CACHE)&&Mt(X.HIDE_DIALOG_HISTORY_SHOW_MORE,dt)):Ct(t)})),o.query(ht.HA_DIALOG_LOGBOOK).$.element.then((function(t){c.options[X.HIDE_DIALOG_LOGBOOK_SHOW_MORE]?(Gt(Ft.DIALOG_SHOW_MORE,t),mt(Z.CACHE)&&Mt(X.HIDE_DIALOG_LOGBOOK_SHOW_MORE,dt)):Ct(t)})),[2]}}))}))},t.prototype.resizeWindow=function(){var t=this;window.clearTimeout(this.resizeDelay),this.resizeDelay=window.setTimeout((function(){t.updateMenuItemsLabels()}),250)},t.prototype.updateMenuItemsLabels=function(){var t=this;this.menuTranslations&&(this.HAElements.HEADER.selector.query("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.MENU_ITEM)).all.then((function(e){Pt(e,t.menuTranslations)})),this.user.is_admin&&this.HAElements.HEADER.selector.query("".concat(ht.TOOLBAR," ").concat(ht.OVERLAY_MENU_ITEM)).all.then((function(e){e.forEach((function(e){if(e&&e.dataset&&!e.dataset.selector){var n=e.textContent.trim();e.dataset.selector=t.menuTranslations[n]}}))})))},t.prototype.entityWatch=function(){return e(this,void 0,void 0,(function(){var t=this;return n(this,(function(e){switch(e.label){case 0:return[4,window.hassConnection];case 1:return e.sent().conn.subscribeMessage((function(e){return t.entityWatchCallback(e)}),{type:"subscribe_events",event_type:Ht}),[2]}}))}))},t.prototype.entityWatchCallback=function(t){return e(this,void 0,void 0,(function(){var e,o,i;return n(this,(function(n){switch(n.label){case 0:return!(e=window.kioskModeEntities[null===(i=null===(o=this.ha)||void 0===o?void 0:o.hass)||void 0===i?void 0:i.panelUrl]||[]).length||t.event_type!==Ht||!e.includes(t.data.entity_id)||t.data.old_state&&t.data.new_state.state===t.data.old_state.state?[3,2]:[4,this.run()];case 1:n.sent(),this.runDialogs(),n.label=2;case 2:return[2]}}))}))},t.prototype.blockEventHandler=function(t){t.preventDefault(),t.stopImmediatePropagation()},t.prototype.setOptions=function(t,e){var n=this;Object.values(X).forEach((function(e){e in t&&(n.options[e]=t[e])})),e&&Object.values(J).forEach((function(e){e in t&&(n.options[e]=t[e])}))},t}();(new xt).log(),Promise.resolve(customElements.whenDefined(ht.HUI_VIEW)).then((function(){window.KioskMode=new kt}))}(); +!function(){"use strict";var t=function(){return t=Object.assign||function(t){for(var e,n=1,o=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){r=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0&&i[i.length-1])||6!==s[0]&&2!==s[0])){_=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1] ha-sidebar":{display:"none"},".header":{width:"100% !important"}}),ASIDE:bt(".mdc-drawer"),OVERFLOW_MENU:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU)),BLOCK_OVERFLOW:gt((Lt={},Lt["".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU)]={"pointer-events":"none !important"},Lt)),SEARCH:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.SEARCH,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.SEARCH,'"]')),ASSISTANT:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.ASSIST,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.ASSIST,'"]')),REFRESH:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.REFRESH,'"]')),UNUSED_ENTITIES:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.UNUSED_ENTITIES,'"]')),RELOAD_RESOURCES:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.RELOAD_RESOURCES,'"]')),EDIT_DASHBOARD:bt("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS,' > ha-icon-button[data-selector="').concat(It.EDIT_DASHBOARD,'"]'),"".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.BUTTON_MENU," > ").concat(ht.OVERLAY_MENU_ITEM,'[data-selector="').concat(It.EDIT_DASHBOARD,'"]')),DIALOG_HEADER_HISTORY:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM,'[data-selector="').concat(It.DIALOG_HISTORY,'"]')),DIALOG_HEADER_SETTINGS:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM,'[data-selector="').concat(It.DIALOG_SETTINGS,'"]')),DIALOG_HEADER_OVERFLOW:bt("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.BUTTON_MENU)),DIALOG_HISTORY:bt(ht.HA_DIALOG_HISTORY),DIALOG_LOGBOOK:bt(ht.HA_DIALOG_LOGBOOK),DIALOG_ATTRIBUTES:bt(ht.HA_DIALOG_ATTRIBUTES),DIALOG_MEDIA_ACTIONS:bt(".controls"),DIALOG_TIMER_ACTIONS:bt(".actions"),DIALOG_UPDATE_ACTIONS:bt(".actions","hr:has(+ .actions)"),DIALOG_CLIMATE_CONTROL_SELECT:bt(ht.HA_DIALOG_CLIMATE_CONTROL_SELECT),DIALOG_CLIMATE_TEMPERATURE_BUTTONS:bt(ht.HA_DIALOG_CLIMATE_TEMPERATURE_BUTTONS),DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION:bt(ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_SLIDER,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_TARGET_BORDER,ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION_TARGET),DIALOG_LIGHT_CONTROL_ACTIONS:bt(".controls > ".concat(ht.HA_DIALOG_LIGHT_BRIGHTNESS," + ").concat(ht.HA_DIALOG_LIGHT_CONTROLS)),DIALOG_LIGHT_COLOR_ACTIONS:bt(".controls > ".concat(ht.HA_DIALOG_LIGHT_COLORS)),DIALOG_LIGHT_SETTINGS_ACTIONS:bt(".controls:has(> ".concat(ht.HA_DIALOG_LIGHT_BRIGHTNESS,") + div > ").concat(ht.HA_DIALOG_LIGHT_SETTINGS)),DIALOG_SHOW_MORE:bt(".header a")},xt=function(){function e(){this.lines=[{content:"%c≡ kiosk-mode",color:"white",background:"#03a9f4"},{content:"%cversion ".concat("6.3.1")}]}return e.prototype.log=function(){var e=[],n=[],o=this.lines.length-1,i={"border-color":"#424242","border-style":"solid",display:"inline-block","font-family":"monospace","font-size":"12px"};this.lines.forEach((function(r,_){e.push(r.content.padEnd(27)),e.push("%c⋮"),_!==o&&e.push("%c\n");var s="0 0 0 1px",a="0 1px 0 1px";0===o?(s="1px 0 1px 1px",a="1px 1px 1px 0"):0===_?(s="1px 0 0 1px",a="1px 1px 0 0"):_===o&&(s="0 0 1px 1px",a="0 1px 1px 0"),n.push(wt(t(t({},i),{background:r.background||"white",color:r.color||"#424242",padding:0===_?"1px 0px 1px 5px":"1px 0px 1px 10px","border-width":s}))),n.push(wt(t(t({},i),{background:r.background||"white",color:r.color||"white",padding:0===_?"1px 5px":"1px 5px 1px 0px","border-width":a}))),_!==o&&n.push("")})),console.info.apply(console,function(t,e,n){if(n||2===arguments.length)for(var o,i=0,r=e.length;i hass > user"))];case 7:return u.user=n.sent(),this.version=function(t){var e=t?t.match(/^(\d+)\.(\d+)\.(\w+)(?:\.(\w+))?$/):null;return e?[+e[1],+e[2],e[3]]:null}(null===(h=null===(T=this.ha.hass)||void 0===T?void 0:T.config)||void 0===h?void 0:h.version),this.run(),[2]}}))}))})),o.addEventListener(b.ON_MORE_INFO_DIALOG_OPEN,(function(e){t.HAMoreInfoDialogElements=e.detail,t.insertMoreInfoDialogStyles()})),o.addEventListener(b.ON_HISTORY_AND_LOGBOOK_DIALOG_OPEN,(function(e){t.HAMoreInfoDialogElements=e.detail,t.insertMoreInfoDialogStyles()})),o.listen(),this.entityWatch(),this.resizeWindowBinded=this.resizeWindow.bind(this)}return t.prototype.run=function(){return e(this,void 0,void 0,(function(){var t,e=this;return n(this,(function(n){return(t=this.main.querySelector(ht.HA_PANEL_LOVELACE))?[2,Bt((function(){var e;return null===(e=null==t?void 0:t.lovelace)||void 0===e?void 0:e.config}),(function(t){return!!t}),"Lovelace config").then((function(t){return e.processConfig(t.kiosk_mode||{})}))]:[2]}))}))},t.prototype.runDialogs=function(t){var e,n;void 0===t&&(t=null===(n=null===(e=this.ha)||void 0===e?void 0:e.shadowRoot)||void 0===n?void 0:n.querySelector(ht.HA_MORE_INFO_DIALOG)),t&&this.insertMoreInfoDialogStyles()},t.prototype.processConfig=function(t){return e(this,void 0,void 0,(function(){var o,i,r,_,s,a=this;return n(this,(function(c){var I;return o=this.ha.hass.panelUrl,window.kioskModeEntities[o]||(window.kioskModeEntities[o]=[]),Object.values(X).forEach((function(t){a.options[t]=!1})),Object.values(J).forEach((function(t){a.options[t]=!1})),(I=this.ha,e(void 0,void 0,void 0,(function(){var t,e,o,i,r;return n(this,(function(n){switch(n.label){case 0:return[4,Ut(I)];case 1:return t=n.sent(),e=I.hass.language,o=t[e],i=Object.entries(Dt),r=i.map((function(t){var e=t[0],n=t[1];return[o[n],e]})),[2,Object.fromEntries(r)]}}))}))).then((function(t){a.menuTranslations=t,a.updateMenuItemsLabels()})).catch((function(){console.warn("".concat(at,": ").concat("[ Non critial warning ]"," Cannot get resources translations"))})),yt(Object.values(X))||mt(Object.values(X))?Object.values(X).forEach((function(t){a.options[t]=yt(t)||mt(t)})):this.setOptions(t,!1),(i=this.user.is_admin?t.admin_settings:t.non_admin_settings)&&this.setOptions(i,!0),t.user_settings&&Nt(t.user_settings).forEach((function(t){Nt(t.users).some((function(t){return t.toLowerCase()===a.user.name.toLowerCase()}))&&a.setOptions(t,!0)})),(r=this.options[J.IGNORE_MOBILE_SETTINGS]?null:t.mobile_settings)&&(_=r.custom_width?r.custom_width:812,window.innerWidth<=_&&this.setOptions(r,!0)),(s=this.options[J.IGNORE_ENTITY_SETTINGS]?null:t.entity_settings)&&s.forEach((function(t){var e=Object.keys(t.entity)[0];window.kioskModeEntities[o].includes(e)||window.kioskModeEntities[o].push(e),a.ha.hass.states[e].state==t.entity[e]&&a.setOptions(t,!1)})),mt(Z.DISABLE_KIOSK_MODE)&&!this.options[J.IGNORE_DISABLE_KM]||this.insertStyles(),[2]}))}))},t.prototype.insertStyles=function(){var t,e,n,o=this;if(this.options[X.KIOSK]||this.options[X.HIDE_HEADER]?(Gt(Ft.HEADER,this.huiRoot),mt(Z.CACHE)&&Mt(X.HIDE_HEADER,dt)):Ct(this.huiRoot),null===(e=null===(t=this.main)||void 0===t?void 0:t.host)||void 0===e||e.removeEventListener(St,this.blockEventHandler,!0),this.options[X.KIOSK]||this.options[X.HIDE_SIDEBAR]){var i=function(){var t,e;null===(e=null===(t=o.main)||void 0===t?void 0:t.host)||void 0===e||e.addEventListener(St,o.blockEventHandler,!0),Gt(Ft.SIDEBAR,o.drawerLayout),Gt(Ft.ASIDE,o.drawerLayout.shadowRoot),mt(Z.CACHE)&&Mt(X.HIDE_SIDEBAR,dt),o.drawerLayout.removeEventListener(Rt,i)};"modal"===this.drawerLayout.type&&(null===(n=this.drawerLayout.appContent)||void 0===n?void 0:n.inert)?this.drawerLayout.addEventListener(Rt,i):i()}else Ct(this.drawerLayout),Ct(this.drawerLayout.shadowRoot);if(this.options[X.HIDE_ACCOUNT]||this.options[X.HIDE_NOTIFICATIONS]||this.options[X.HIDE_MENU_BUTTON]){var r=[this.options[X.HIDE_ACCOUNT]?Ft.ACCOUNT:"",this.options[X.HIDE_NOTIFICATIONS]?Ft.NOTIFICATIONS:"",this.options[X.HIDE_ACCOUNT]&&this.options[X.HIDE_NOTIFICATIONS]?Ft.DIVIDER:"",this.options[X.HIDE_MENU_BUTTON]||this.options[X.HIDE_NOTIFICATIONS]||this.options[X.HIDE_ACCOUNT]?Ft.PAPER_LISTBOX(this.options[X.HIDE_MENU_BUTTON],this.options[X.HIDE_NOTIFICATIONS],this.options[X.HIDE_ACCOUNT]):"",this.options[X.HIDE_MENU_BUTTON]?Ft.MENU_BUTTON:""];Gt(r.join(""),this.sideBarRoot),mt(Z.CACHE)&&(this.options[X.HIDE_ACCOUNT]&&Mt(X.HIDE_ACCOUNT,dt),this.options[X.HIDE_NOTIFICATIONS]&&Mt(X.HIDE_NOTIFICATIONS,dt))}else Ct(this.sideBarRoot);if(this.options[X.HIDE_SEARCH]||this.options[X.HIDE_ASSISTANT]||this.options[X.HIDE_REFRESH]||this.options[X.HIDE_UNUSED_ENTITIES]||this.options[X.HIDE_RELOAD_RESOURCES]||this.options[X.HIDE_EDIT_DASHBOARD]||this.options[X.HIDE_OVERFLOW]||this.options[X.BLOCK_OVERFLOW]||this.options[X.HIDE_SIDEBAR]||this.options[X.HIDE_MENU_BUTTON]){r=[this.options[X.HIDE_SEARCH]?Ft.SEARCH:"",this.options[X.HIDE_ASSISTANT]?Ft.ASSISTANT:"",this.options[X.HIDE_REFRESH]?Ft.REFRESH:"",this.options[X.HIDE_UNUSED_ENTITIES]?Ft.UNUSED_ENTITIES:"",this.options[X.HIDE_RELOAD_RESOURCES]?Ft.RELOAD_RESOURCES:"",this.options[X.HIDE_EDIT_DASHBOARD]?Ft.EDIT_DASHBOARD:"",this.options[X.HIDE_OVERFLOW]?Ft.OVERFLOW_MENU:"",this.options[X.BLOCK_OVERFLOW]?Ft.BLOCK_OVERFLOW:"",this.options[X.HIDE_MENU_BUTTON]||this.options[X.HIDE_SIDEBAR]?Ft.MENU_BUTTON_BURGER:""];Gt(r.join(""),this.appToolbar),mt(Z.CACHE)&&(this.options[X.HIDE_SEARCH]&&Mt(X.HIDE_SEARCH,dt),this.options[X.HIDE_ASSISTANT]&&Mt(X.HIDE_ASSISTANT,dt),this.options[X.HIDE_REFRESH]&&Mt(X.HIDE_REFRESH,dt),this.options[X.HIDE_UNUSED_ENTITIES]&&Mt(X.HIDE_UNUSED_ENTITIES,dt),this.options[X.HIDE_RELOAD_RESOURCES]&&Mt(X.HIDE_RELOAD_RESOURCES,dt),this.options[X.HIDE_EDIT_DASHBOARD]&&Mt(X.HIDE_EDIT_DASHBOARD,dt),this.options[X.HIDE_OVERFLOW]&&Mt(X.HIDE_OVERFLOW,dt),this.options[X.BLOCK_OVERFLOW]&&Mt(X.BLOCK_OVERFLOW,dt),this.options[X.HIDE_MENU_BUTTON]&&Mt(X.HIDE_MENU_BUTTON,dt))}else Ct(this.appToolbar);this.options[X.BLOCK_MOUSE]?(Gt(Ft.MOUSE,document.body),mt(Z.CACHE)&&Mt(X.BLOCK_MOUSE,dt)):Ct(document.body),window.removeEventListener("contextmenu",this.blockEventHandler,!0),this.options[X.BLOCK_CONTEXT_MENU]&&(window.addEventListener("contextmenu",this.blockEventHandler,!0),mt(Z.CACHE)&&Mt(X.BLOCK_CONTEXT_MENU,dt)),window.removeEventListener("resize",this.resizeWindowBinded),window.addEventListener("resize",this.resizeWindowBinded),window.dispatchEvent(new Event("resize"))},t.prototype.insertMoreInfoDialogStyles=function(){return e(this,void 0,void 0,(function(){var t,e,o,i,r,_,s,a,c=this;return n(this,(function(n){switch(n.label){case 0:return this.HAMoreInfoDialogElements.HA_DIALOG.selector.query("".concat(ht.HA_DIALOG_HEADER," > ").concat(ht.MENU_ITEM)).all.then((function(t){Pt(t,c.menuTranslations)})),[4,this.HAMoreInfoDialogElements.HA_DIALOG.element];case 1:return t=n.sent(),e=this.HAMoreInfoDialogElements.HA_DIALOG_CONTENT,[4,(o=e.selector.query("".concat(ht.HA_DIALOG_MORE_INFO,", ").concat(ht.HA_DIALOG_MORE_INFO_HISTORY_AND_LOGBOOK)).$).element];case 2:return i=n.sent(),this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_HISTORY]||this.options[X.HIDE_DIALOG_HEADER_SETTINGS]||this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]?(a=[this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_HISTORY]?Ft.DIALOG_HEADER_HISTORY:"",this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_SETTINGS]?Ft.DIALOG_HEADER_SETTINGS:"",this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]||this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]?Ft.DIALOG_HEADER_OVERFLOW:""],Gt(a.join(""),t),mt(Z.CACHE)&&(this.options[X.HIDE_DIALOG_HEADER_ACTION_ITEMS]&&Mt(X.HIDE_DIALOG_HEADER_ACTION_ITEMS,dt),this.options[X.HIDE_DIALOG_HEADER_HISTORY]&&Mt(X.HIDE_DIALOG_HEADER_HISTORY,dt),this.options[X.HIDE_DIALOG_HEADER_SETTINGS]&&Mt(X.HIDE_DIALOG_HEADER_SETTINGS,dt),this.options[X.HIDE_DIALOG_HEADER_OVERFLOW]&&Mt(X.HIDE_DIALOG_HEADER_OVERFLOW,dt))):Ct(t),r=o.query(ht.HA_DIALOG_MORE_INFO_CONTENT).$.query(ht.HA_DIALOG_CLIMATE).$,_=r.query(ht.HA_STATE_CONTROL_CLIMATE_TEMPERATURE).$,s=_.query(ht.HA_DIALOG_CLIMATE_CIRCULAR_SLIDER).$,r.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS]?(Gt(Ft.DIALOG_CLIMATE_CONTROL_SELECT,t),mt(Z.CACHE)&&(c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_ACTIONS,dt),c.options[X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_SETTINGS_ACTIONS,dt))):Ct(t)})),_.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]?(Gt(Ft.DIALOG_CLIMATE_TEMPERATURE_BUTTONS,t),mt(Z.CACHE)&&c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]&&Mt(X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS,dt)):Ct(t)})),s.element.then((function(t){c.options[X.HIDE_DIALOG_CLIMATE_ACTIONS]||c.options[X.HIDE_DIALOG_CLIMATE_TEMPERATURE_ACTIONS]?Gt(Ft.DIALOG_CLIMATE_CIRCULAR_SLIDER_INTERACTION,t):Ct(t)})),o.query(ht.HA_DIALOG_MORE_INFO_CONTENT).$.query([ht.HA_DIALOG_DEFAULT,ht.HA_DIALOG_VACUUM,ht.HA_DIALOG_TIMER,ht.HA_DIALOG_LIGHT,ht.HA_DIALOG_SIREN,ht.HA_DIALOG_LOCK,ht.HA_DIALOG_MEDIA_PLAYER,ht.HA_DIALOG_UPDATE].join(",")).$.element.then((function(t){if(c.options[X.HIDE_DIALOG_ATTRIBUTES]||c.options[X.HIDE_DIALOG_TIMER_ACTIONS]||c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]||c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]){var e=[c.options[X.HIDE_DIALOG_ATTRIBUTES]?Ft.DIALOG_ATTRIBUTES:"",c.options[X.HIDE_DIALOG_TIMER_ACTIONS]&&t.host.localName===ht.HA_DIALOG_TIMER?Ft.DIALOG_TIMER_ACTIONS:"",c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]&&t.host.localName===ht.HA_DIALOG_MEDIA_PLAYER?Ft.DIALOG_MEDIA_ACTIONS:"",c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]&&t.host.localName===ht.HA_DIALOG_UPDATE?Ft.DIALOG_UPDATE_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]?Ft.DIALOG_LIGHT_CONTROL_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]?Ft.DIALOG_LIGHT_COLOR_ACTIONS:"",c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]||c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]?Ft.DIALOG_LIGHT_SETTINGS_ACTIONS:""];Gt(e.join(""),t),mt(Z.CACHE)&&(c.options[X.HIDE_DIALOG_ATTRIBUTES]&&Mt(X.HIDE_DIALOG_ATTRIBUTES,dt),c.options[X.HIDE_DIALOG_TIMER_ACTIONS]&&Mt(X.HIDE_DIALOG_TIMER_ACTIONS,dt),c.options[X.HIDE_DIALOG_MEDIA_ACTIONS]&&Mt(X.HIDE_DIALOG_MEDIA_ACTIONS,dt),c.options[X.HIDE_DIALOG_UPDATE_ACTIONS]&&Mt(X.HIDE_DIALOG_UPDATE_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_CONTROL_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_COLOR_ACTIONS,dt),c.options[X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS]&&Mt(X.HIDE_DIALOG_LIGHT_SETTINGS_ACTIONS,dt))}else Ct(t)})),this.options[X.HIDE_DIALOG_HISTORY]||this.options[X.HIDE_DIALOG_LOGBOOK]?(a=[this.options[X.HIDE_DIALOG_HISTORY]?Ft.DIALOG_HISTORY:"",this.options[X.HIDE_DIALOG_LOGBOOK]?Ft.DIALOG_LOGBOOK:""],Gt(a.join(""),i),mt(Z.CACHE)&&(this.options[X.HIDE_DIALOG_HISTORY]&&Mt(X.HIDE_DIALOG_HISTORY,dt),this.options[X.HIDE_DIALOG_LOGBOOK]&&Mt(X.HIDE_DIALOG_LOGBOOK,dt))):Ct(i),o.query(ht.HA_DIALOG_HISTORY).$.element.then((function(t){c.options[X.HIDE_DIALOG_HISTORY_SHOW_MORE]?(Gt(Ft.DIALOG_SHOW_MORE,t),mt(Z.CACHE)&&Mt(X.HIDE_DIALOG_HISTORY_SHOW_MORE,dt)):Ct(t)})),o.query(ht.HA_DIALOG_LOGBOOK).$.element.then((function(t){c.options[X.HIDE_DIALOG_LOGBOOK_SHOW_MORE]?(Gt(Ft.DIALOG_SHOW_MORE,t),mt(Z.CACHE)&&Mt(X.HIDE_DIALOG_LOGBOOK_SHOW_MORE,dt)):Ct(t)})),[2]}}))}))},t.prototype.resizeWindow=function(){var t=this;window.clearTimeout(this.resizeDelay),this.resizeDelay=window.setTimeout((function(){t.updateMenuItemsLabels()}),250)},t.prototype.updateMenuItemsLabels=function(){var t=this;this.menuTranslations&&(this.HAElements.HEADER.selector.query("".concat(ht.TOOLBAR," > ").concat(ht.ACTION_ITEMS," > ").concat(ht.MENU_ITEM)).all.then((function(e){Pt(e,t.menuTranslations)})),this.user.is_admin&&this.HAElements.HEADER.selector.query("".concat(ht.TOOLBAR," ").concat(ht.OVERLAY_MENU_ITEM)).all.then((function(e){e.forEach((function(e){if(e&&e.dataset&&!e.dataset.selector){var n=e.textContent.trim();e.dataset.selector=t.menuTranslations[n]}}))})))},t.prototype.entityWatch=function(){return e(this,void 0,void 0,(function(){var t=this;return n(this,(function(e){switch(e.label){case 0:return[4,window.hassConnection];case 1:return e.sent().conn.subscribeMessage((function(e){return t.entityWatchCallback(e)}),{type:"subscribe_events",event_type:Ht}),[2]}}))}))},t.prototype.entityWatchCallback=function(t){return e(this,void 0,void 0,(function(){var e,o,i;return n(this,(function(n){switch(n.label){case 0:return!(e=window.kioskModeEntities[null===(i=null===(o=this.ha)||void 0===o?void 0:o.hass)||void 0===i?void 0:i.panelUrl]||[]).length||t.event_type!==Ht||!e.includes(t.data.entity_id)||t.data.old_state&&t.data.new_state.state===t.data.old_state.state?[3,2]:[4,this.run()];case 1:n.sent(),this.runDialogs(),n.label=2;case 2:return[2]}}))}))},t.prototype.blockEventHandler=function(t){t.preventDefault(),t.stopImmediatePropagation()},t.prototype.setOptions=function(t,e){var n=this;Object.values(X).forEach((function(e){e in t&&(n.options[e]=t[e])})),e&&Object.values(J).forEach((function(e){e in t&&(n.options[e]=t[e])}))},t}();(new xt).log(),Promise.resolve(customElements.whenDefined(ht.HUI_VIEW)).then((function(){window.KioskMode=new kt}))}(); diff --git a/www/community/kiosk-mode/kiosk-mode.js.gz b/www/community/kiosk-mode/kiosk-mode.js.gz index fa2b6a12..024b74b6 100644 Binary files a/www/community/kiosk-mode/kiosk-mode.js.gz and b/www/community/kiosk-mode/kiosk-mode.js.gz differ diff --git a/www/community/lovelace-horizon-card/lovelace-horizon-card.js b/www/community/lovelace-horizon-card/lovelace-horizon-card.js index 93b09140..7dc35432 100644 --- a/www/community/lovelace-horizon-card/lovelace-horizon-card.js +++ b/www/community/lovelace-horizon-card/lovelace-horizon-card.js @@ -1850,16 +1850,37 @@ var SunCalc = suncalcExports; var _templateObject$7; var cardStyles = i$2(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteral(["\n :host {\n --hc-primary: var(--primary-text-color);\n --hc-secondary: var(--secondary-text-color);\n\n --hc-field-name-color: var(--hc-secondary);\n --hc-field-value-color: var(--hc-primary);\n\n --hc-day-color: #8ebeeb;\n --hc-night-color: #393b78;\n\n --hc-accent: #d7d7d7;\n --hc-lines: var(--hc-accent);\n\n --hc-sun-hue: 44;\n --hc-sun-saturation: 93%;\n --hc-sun-lightness: 67%;\n --hc-sun-hue-reduce: 0;\n --hc-sun-saturation-reduce: 0%;\n --hc-sun-lightness-reduce: 0%;\n --hc-sun-color: hsl(\n calc(var(--hc-sun-hue) - var(--hc-sun-hue-reduce)),\n calc(var(--hc-sun-saturation) - var(--hc-sun-saturation-reduce)),\n calc(var(--hc-sun-lightness) - var(--hc-sun-lightness-reduce))\n );\n\n --hc-moon-hue: 52;\n --hc-moon-saturation: 77%;\n --hc-moon-lightness: 57%;\n --hc-moon-saturation-reduce: 0%;\n --hc-moon-lightness-reduce: 0%;\n --hc-moon-color: hsl(\n var(--hc-moon-hue),\n calc(var(--hc-moon-saturation) - var(--hc-moon-saturation-reduce)),\n calc(var(--hc-moon-lightness) - var(--hc-moon-lightness-reduce))\n );\n --hc-moon-shadow-color: #eeeeee;\n --hc-moon-spot-color: rgba(170, 170, 170, 0.1);\n }\n\n :host(.horizon-card-dark) {\n --hc-accent: #464646;\n --hc-moon-saturation: 80%;\n --hc-moon-lightness: 74%;\n --hc-moon-shadow-color: #272727;\n }\n\n .horizon-card {\n padding: 0.5em;\n font-family: var(--primary-font-family);\n }\n\n .horizon-card-field-row {\n display: flex;\n justify-content: space-around;\n margin-top: 1em;\n margin-bottom: -0.3em;\n }\n\n .horizon-card-text-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n .horizon-card-field-name {\n color: var(--hc-field-name-color);\n }\n\n .horizon-card-field-value {\n color: var(--hc-field-value-color);\n font-size: 1.2em;\n line-height: 1.1em;\n text-align: center;\n }\n\n .horizon-card-field-value-moon-phase {\n font-size: inherit;\n }\n\n .horizon-card-field-moon-phase {\n --mdc-icon-size: 2em;\n color: var(--primary-color);\n }\n\n .horizon-card-field-value-secondary {\n font-size: 0.7em;\n }\n\n .horizon-card-sun-value:before {\n content: \"\u2609\";\n padding-right: 0.5em;\n }\n\n .horizon-card-moon-value:before {\n content: \"\u263D\";\n padding-right: 0.5em;\n }\n\n .horizon-card-header {\n display: flex;\n justify-content: space-around;\n margin-top: 1em;\n margin-bottom: -0.3em;\n }\n\n .horizon-card-header .horizon-card-text-container {\n font-size: 1.2em;\n }\n\n .horizon-card-footer {\n margin-bottom: 1em;\n }\n\n .horizon-card-title {\n margin: 1em 1em 1em 1em;\n font-size: 1.5em;\n color: var(--hc-primary);\n }\n\n .horizon-card-graph {\n margin: 1em 0.5em 1em 0.5em;\n }\n\n .horizon-card-graph .dawn {\n fill: var(--hc-night-color);\n stroke: var(--hc-night-color);\n }\n\n .horizon-card-graph .day {\n fill: var(--hc-day-color);\n stroke: var(--hc-day-color);\n }\n"]))); -var azimuth$z = "Азимут"; -var dawn$z = "Зора"; -var dusk$z = "Здрач"; -var elevation$z = "Височина"; -var moonrise$z = "Лунен изгрев"; -var moonset$z = "Лунен залез"; -var noon$z = "Пладне"; -var sunrise$z = "Изгрев"; -var sunset$z = "Залез"; +var azimuth$A = "Азимут"; +var dawn$A = "Зора"; +var dusk$A = "Здрач"; +var elevation$A = "Височина"; +var moonrise$A = "Лунен изгрев"; +var moonset$A = "Лунен залез"; +var noon$A = "Пладне"; +var sunrise$A = "Изгрев"; +var sunset$A = "Залез"; var bg = { + azimuth: azimuth$A, + dawn: dawn$A, + dusk: dusk$A, + elevation: elevation$A, + moonrise: moonrise$A, + moonset: moonset$A, + noon: noon$A, + sunrise: sunrise$A, + sunset: sunset$A +}; + +var azimuth$z = "Azimut"; +var dawn$z = "Alba"; +var dusk$z = "Capvespre"; +var elevation$z = "Elevació"; +var moonrise$z = "Sortida de la lluna"; +var moonset$z = "Posta de lluna"; +var noon$z = "Migdia solar"; +var sunrise$z = "Sortida del sol"; +var sunset$z = "Posta del sol"; +var ca = { azimuth: azimuth$z, dawn: dawn$z, dusk: dusk$z, @@ -1872,15 +1893,15 @@ var bg = { }; var azimuth$y = "Azimut"; -var dawn$y = "Alba"; -var dusk$y = "Capvespre"; -var elevation$y = "Elevació"; -var moonrise$y = "Sortida de la lluna"; -var moonset$y = "Posta de lluna"; -var noon$y = "Migdia solar"; -var sunrise$y = "Sortida del sol"; -var sunset$y = "Posta del sol"; -var ca = { +var dawn$y = "Svítání"; +var dusk$y = "Soumrak"; +var elevation$y = "Výška"; +var moonrise$y = "Východ měsíce"; +var moonset$y = "Západ měsíce"; +var noon$y = "Sluneční poledne"; +var sunrise$y = "Východ slunce"; +var sunset$y = "Západ slunce"; +var cs = { azimuth: azimuth$y, dawn: dawn$y, dusk: dusk$y, @@ -1893,15 +1914,15 @@ var ca = { }; var azimuth$x = "Azimut"; -var dawn$x = "Svítání"; -var dusk$x = "Soumrak"; -var elevation$x = "Výška"; -var moonrise$x = "Východ měsíce"; -var moonset$x = "Západ měsíce"; -var noon$x = "Sluneční poledne"; -var sunrise$x = "Východ slunce"; -var sunset$x = "Západ slunce"; -var cs = { +var dawn$x = "Daggry"; +var dusk$x = "Skumring"; +var elevation$x = "Højde"; +var moonrise$x = "Måneopgang"; +var moonset$x = "Månenedgang"; +var noon$x = "Middag"; +var sunrise$x = "Solopgang"; +var sunset$x = "Solnedgang"; +var da = { azimuth: azimuth$x, dawn: dawn$x, dusk: dusk$x, @@ -1914,15 +1935,15 @@ var cs = { }; var azimuth$w = "Azimut"; -var dawn$w = "Daggry"; -var dusk$w = "Skumring"; -var elevation$w = "Højde"; -var moonrise$w = "Måneopgang"; -var moonset$w = "Månenedgang"; -var noon$w = "Middag"; -var sunrise$w = "Solopgang"; -var sunset$w = "Solnedgang"; -var da = { +var dawn$w = "Morgendämmerung"; +var dusk$w = "Abenddämmerung"; +var elevation$w = "Höhenwinkel"; +var moonrise$w = "Mondaufgang"; +var moonset$w = "Monduntergang"; +var noon$w = "Mittag"; +var sunrise$w = "Sonnenaufgang"; +var sunset$w = "Sonnenuntergang"; +var de = { azimuth: azimuth$w, dawn: dawn$w, dusk: dusk$w, @@ -1934,16 +1955,16 @@ var da = { sunset: sunset$w }; -var azimuth$v = "Azimut"; -var dawn$v = "Morgendämmerung"; -var dusk$v = "Abenddämmerung"; -var elevation$v = "Höhenwinkel"; -var moonrise$v = "Mondaufgang"; -var moonset$v = "Monduntergang"; -var noon$v = "Mittag"; -var sunrise$v = "Sonnenaufgang"; -var sunset$v = "Sonnenuntergang"; -var de = { +var azimuth$v = "Αζιμούθιο"; +var dawn$v = "Αυγή"; +var dusk$v = "Σούρουπο"; +var elevation$v = "Υψόμετρο"; +var moonrise$v = "Aνατολή σελήνης"; +var moonset$v = "Δύση σελήνης"; +var noon$v = "Μεσημέρι"; +var sunrise$v = "Ανατολή"; +var sunset$v = "Δύση"; +var el = { azimuth: azimuth$v, dawn: dawn$v, dusk: dusk$v, @@ -1955,16 +1976,16 @@ var de = { sunset: sunset$v }; -var azimuth$u = "Αζιμούθιο"; -var dawn$u = "Αυγή"; -var dusk$u = "Σούρουπο"; -var elevation$u = "Υψόμετρο"; -var moonrise$u = "Aνατολή σελήνης"; -var moonset$u = "Δύση σελήνης"; -var noon$u = "Μεσημέρι"; -var sunrise$u = "Ανατολή"; -var sunset$u = "Δύση"; -var el = { +var azimuth$u = "Azimuth"; +var dawn$u = "Dawn"; +var dusk$u = "Dusk"; +var elevation$u = "Elevation"; +var moonrise$u = "Moonrise"; +var moonset$u = "Moonset"; +var noon$u = "Solar noon"; +var sunrise$u = "Sunrise"; +var sunset$u = "Sunset"; +var en = { azimuth: azimuth$u, dawn: dawn$u, dusk: dusk$u, @@ -1976,16 +1997,16 @@ var el = { sunset: sunset$u }; -var azimuth$t = "Azimuth"; -var dawn$t = "Dawn"; -var dusk$t = "Dusk"; -var elevation$t = "Elevation"; -var moonrise$t = "Moonrise"; -var moonset$t = "Moonset"; -var noon$t = "Solar noon"; -var sunrise$t = "Sunrise"; -var sunset$t = "Sunset"; -var en = { +var azimuth$t = "Azimut"; +var dawn$t = "Amanecer"; +var dusk$t = "Anochecer"; +var elevation$t = "Elevación"; +var moonrise$t = "Salida de la luna"; +var moonset$t = "Puesta de la luna"; +var noon$t = "Mediodía solar"; +var sunrise$t = "Salida del sol"; +var sunset$t = "Atardecer"; +var es = { azimuth: azimuth$t, dawn: dawn$t, dusk: dusk$t, @@ -1997,16 +2018,16 @@ var en = { sunset: sunset$t }; -var azimuth$s = "Azimut"; -var dawn$s = "Amanecer"; -var dusk$s = "Anochecer"; -var elevation$s = "Elevación"; -var moonrise$s = "Salida de la luna"; -var moonset$s = "Puesta de la luna"; -var noon$s = "Mediodía solar"; -var sunrise$s = "Salida del sol"; -var sunset$s = "Atardecer"; -var es = { +var azimuth$s = "Asimuut"; +var dawn$s = "Koidik"; +var dusk$s = "Hämarik"; +var elevation$s = "Kõrgus"; +var moonrise$s = "Kuutõus"; +var moonset$s = "Kuuloojang"; +var noon$s = "Keskpäev"; +var sunrise$s = "Päikesetõus"; +var sunset$s = "Päikeseloojang"; +var et = { azimuth: azimuth$s, dawn: dawn$s, dusk: dusk$s, @@ -2018,16 +2039,16 @@ var es = { sunset: sunset$s }; -var azimuth$r = "Asimuut"; -var dawn$r = "Koidik"; -var dusk$r = "Hämarik"; -var elevation$r = "Kõrgus"; -var moonrise$r = "Kuutõus"; -var moonset$r = "Kuuloojang"; -var noon$r = "Keskpäev"; -var sunrise$r = "Päikesetõus"; -var sunset$r = "Päikeseloojang"; -var et = { +var azimuth$r = "Atsimuutti"; +var dawn$r = "Sarastus"; +var dusk$r = "Hämärä"; +var elevation$r = "Korkeus"; +var moonrise$r = "Kuunnousu"; +var moonset$r = "Kuunlasku"; +var noon$r = "Keskipäivä"; +var sunrise$r = "Auringonnousu"; +var sunset$r = "Auringonlasku"; +var fi = { azimuth: azimuth$r, dawn: dawn$r, dusk: dusk$r, @@ -2039,16 +2060,16 @@ var et = { sunset: sunset$r }; -var azimuth$q = "Atsimuutti"; -var dawn$q = "Sarastus"; -var dusk$q = "Hämärä"; -var elevation$q = "Korkeus"; -var moonrise$q = "Kuunnousu"; -var moonset$q = "Kuunlasku"; -var noon$q = "Keskipäivä"; -var sunrise$q = "Auringonnousu"; -var sunset$q = "Auringonlasku"; -var fi = { +var azimuth$q = "Azimut"; +var dawn$q = "Aube"; +var dusk$q = "Crépuscule"; +var elevation$q = "Élévation"; +var moonrise$q = "Lever de lune"; +var moonset$q = "Coucher de lune"; +var noon$q = "Midi solaire"; +var sunrise$q = "Lever du soleil"; +var sunset$q = "Coucher du soleil"; +var fr = { azimuth: azimuth$q, dawn: dawn$q, dusk: dusk$q, @@ -2060,16 +2081,16 @@ var fi = { sunset: sunset$q }; -var azimuth$p = "Azimut"; -var dawn$p = "Aube"; -var dusk$p = "Crépuscule"; -var elevation$p = "Élévation"; -var moonrise$p = "Lever de lune"; -var moonset$p = "Coucher de lune"; -var noon$p = "Midi solaire"; -var sunrise$p = "Lever du soleil"; -var sunset$p = "Coucher du soleil"; -var fr = { +var azimuth$p = "Acimut"; +var dawn$p = "Amencer"; +var dusk$p = "Luscofusco"; +var elevation$p = "Elevación"; +var moonrise$p = "Saída da lúa"; +var moonset$p = "Posta da lúa"; +var noon$p = "Mediodía solar"; +var sunrise$p = "Saída do sol"; +var sunset$p = "Atardecer"; +var gl = { azimuth: azimuth$p, dawn: dawn$p, dusk: dusk$p, @@ -2081,16 +2102,16 @@ var fr = { sunset: sunset$p }; -var azimuth$o = "Acimut"; -var dawn$o = "Amencer"; -var dusk$o = "Luscofusco"; -var elevation$o = "Elevación"; -var moonrise$o = "Saída da lúa"; -var moonset$o = "Posta da lúa"; -var noon$o = "Mediodía solar"; -var sunrise$o = "Saída do sol"; -var sunset$o = "Atardecer"; -var gl = { +var azimuth$o = "אזימוט"; +var dawn$o = "עלות השחר"; +var dusk$o = "בין הערבים"; +var elevation$o = "גובה"; +var moonrise$o = "זריחה ירח"; +var moonset$o = "שקיעה ירח"; +var noon$o = "אמצע היום"; +var sunrise$o = "זריחה"; +var sunset$o = "שקיעה"; +var he = { azimuth: azimuth$o, dawn: dawn$o, dusk: dusk$o, @@ -2102,16 +2123,16 @@ var gl = { sunset: sunset$o }; -var azimuth$n = "אזימוט"; -var dawn$n = "עלות השחר"; -var dusk$n = "בין הערבים"; -var elevation$n = "גובה"; -var moonrise$n = "זריחה ירח"; -var moonset$n = "שקיעה ירח"; -var noon$n = "אמצע היום"; -var sunrise$n = "זריחה"; -var sunset$n = "שקיעה"; -var he = { +var azimuth$n = "Azimut"; +var dawn$n = "Zora"; +var dusk$n = "Sumrak"; +var elevation$n = "Visina"; +var moonrise$n = "Izlazak mjeseca"; +var moonset$n = "Zalazak mjeseca"; +var noon$n = "Sunčano podne"; +var sunrise$n = "Izlazak sunca"; +var sunset$n = "Zalazak sunca"; +var hr = { azimuth: azimuth$n, dawn: dawn$n, dusk: dusk$n, @@ -2124,15 +2145,15 @@ var he = { }; var azimuth$m = "Azimut"; -var dawn$m = "Zora"; -var dusk$m = "Sumrak"; -var elevation$m = "Visina"; -var moonrise$m = "Izlazak mjeseca"; -var moonset$m = "Zalazak mjeseca"; -var noon$m = "Sunčano podne"; -var sunrise$m = "Izlazak sunca"; -var sunset$m = "Zalazak sunca"; -var hr = { +var dawn$m = "Hajnal"; +var dusk$m = "Szürkület"; +var elevation$m = "Magasság"; +var moonrise$m = "Holdkelte"; +var moonset$m = "Holdnyugta"; +var noon$m = "Dél"; +var sunrise$m = "Napkelte"; +var sunset$m = "Napnyugta"; +var hu = { azimuth: azimuth$m, dawn: dawn$m, dusk: dusk$m, @@ -2144,16 +2165,16 @@ var hr = { sunset: sunset$m }; -var azimuth$l = "Azimut"; -var dawn$l = "Hajnal"; -var dusk$l = "Szürkület"; -var elevation$l = "Magasság"; -var moonrise$l = "Holdkelte"; -var moonset$l = "Holdnyugta"; -var noon$l = "Dél"; -var sunrise$l = "Napkelte"; -var sunset$l = "Napnyugta"; -var hu = { +var azimuth$l = "Áttarhorn"; +var dawn$l = "Dögun"; +var dusk$l = "Rökkur"; +var elevation$l = "Hækkun"; +var moonrise$l = "Tunglupprás"; +var moonset$l = "Tunglsetur"; +var noon$l = "Sólarhádegi"; +var sunrise$l = "Sólarupprás"; +var sunset$l = "Sólsetur"; +var is = { azimuth: azimuth$l, dawn: dawn$l, dusk: dusk$l, @@ -2165,16 +2186,16 @@ var hu = { sunset: sunset$l }; -var azimuth$k = "Áttarhorn"; -var dawn$k = "Dögun"; -var dusk$k = "Rökkur"; -var elevation$k = "Hækkun"; -var moonrise$k = "Tunglupprás"; -var moonset$k = "Tunglsetur"; -var noon$k = "Sólarhádegi"; -var sunrise$k = "Sólarupprás"; -var sunset$k = "Sólsetur"; -var is = { +var azimuth$k = "Azimut"; +var dawn$k = "Aurora"; +var dusk$k = "Crepuscolo"; +var elevation$k = "Elevazione"; +var moonrise$k = "Levata"; +var moonset$k = "Calata"; +var noon$k = "Mezzogiorno"; +var sunrise$k = "Alba"; +var sunset$k = "Tramonto"; +var it = { azimuth: azimuth$k, dawn: dawn$k, dusk: dusk$k, @@ -2186,16 +2207,16 @@ var is = { sunset: sunset$k }; -var azimuth$j = "Azimut"; -var dawn$j = "Aurora"; -var dusk$j = "Crepuscolo"; -var elevation$j = "Elevazione"; -var moonrise$j = "Levata"; -var moonset$j = "Calata"; -var noon$j = "Mezzogiorno"; -var sunrise$j = "Alba"; -var sunset$j = "Tramonto"; -var it = { +var azimuth$j = "方位角"; +var dawn$j = "明け方"; +var dusk$j = "夕方"; +var elevation$j = "高度"; +var moonrise$j = "月の出"; +var moonset$j = "月の入り"; +var noon$j = "南中"; +var sunrise$j = "日の出"; +var sunset$j = "日没"; +var ja = { azimuth: azimuth$j, dawn: dawn$j, dusk: dusk$j, @@ -2207,16 +2228,16 @@ var it = { sunset: sunset$j }; -var azimuth$i = "方位角"; -var dawn$i = "明け方"; -var dusk$i = "夕方"; -var elevation$i = "高度"; -var moonrise$i = "月の出"; -var moonset$i = "月の入り"; -var noon$i = "南中"; -var sunrise$i = "日の出"; -var sunset$i = "日没"; -var ja = { +var azimuth$i = "방위각"; +var dawn$i = "새벽"; +var dusk$i = "저녁"; +var elevation$i = "태양 고도"; +var moonrise$i = "월출"; +var moonset$i = "월몰"; +var noon$i = "태양 정오"; +var sunrise$i = "해돋이"; +var sunset$i = "해넘이"; +var ko = { azimuth: azimuth$i, dawn: dawn$i, dusk: dusk$i, @@ -2228,16 +2249,16 @@ var ja = { sunset: sunset$i }; -var azimuth$h = "방위각"; -var dawn$h = "새벽"; -var dusk$h = "저녁"; -var elevation$h = "태양 고도"; -var moonrise$h = "월출"; -var moonset$h = "월몰"; -var noon$h = "태양 정오"; -var sunrise$h = "해돋이"; -var sunset$h = "해넘이"; -var ko = { +var azimuth$h = "Azimutas"; +var dawn$h = "Aušra"; +var dusk$h = "Prieblanda"; +var elevation$h = "Pakilimas"; +var moonrise$h = "Mėnulio kilimas"; +var moonset$h = "Mėnulio leidimasis"; +var noon$h = "Vidurdienis"; +var sunrise$h = "Saulėtekis"; +var sunset$h = "Saulėlydis"; +var lt = { azimuth: azimuth$h, dawn: dawn$h, dusk: dusk$h, @@ -2249,16 +2270,16 @@ var ko = { sunset: sunset$h }; -var azimuth$g = "Azimutas"; -var dawn$g = "Aušra"; -var dusk$g = "Prieblanda"; -var elevation$g = "Pakilimas"; -var moonrise$g = "Mėnulio kilimas"; -var moonset$g = "Mėnulio leidimasis"; -var noon$g = "Vidurdienis"; -var sunrise$g = "Saulėtekis"; -var sunset$g = "Saulėlydis"; -var lt = { +var azimuth$g = "Azimut"; +var dawn$g = "Fajar"; +var dusk$g = "Senja"; +var elevation$g = "Ketinggian"; +var moonrise$g = "Bulan terbit"; +var moonset$g = "Bulan terbenam"; +var noon$g = "Tengahari"; +var sunrise$g = "Matahari terbit"; +var sunset$g = "Matahari terbenam"; +var ms = { azimuth: azimuth$g, dawn: dawn$g, dusk: dusk$g, @@ -2271,15 +2292,15 @@ var lt = { }; var azimuth$f = "Azimut"; -var dawn$f = "Fajar"; -var dusk$f = "Senja"; -var elevation$f = "Ketinggian"; -var moonrise$f = "Bulan terbit"; -var moonset$f = "Bulan terbenam"; -var noon$f = "Tengahari"; -var sunrise$f = "Matahari terbit"; -var sunset$f = "Matahari terbenam"; -var ms = { +var dawn$f = "Daggry"; +var dusk$f = "Skumring"; +var elevation$f = "Elevasjon"; +var moonrise$f = "Måneoppgang"; +var moonset$f = "Månenedgang"; +var noon$f = "Middag"; +var sunrise$f = "Soloppgang"; +var sunset$f = "Solnedgang"; +var nb = { azimuth: azimuth$f, dawn: dawn$f, dusk: dusk$f, @@ -2292,15 +2313,15 @@ var ms = { }; var azimuth$e = "Azimut"; -var dawn$e = "Daggry"; -var dusk$e = "Skumring"; -var elevation$e = "Elevasjon"; -var moonrise$e = "Måneoppgang"; -var moonset$e = "Månenedgang"; -var noon$e = "Middag"; -var sunrise$e = "Soloppgang"; -var sunset$e = "Solnedgang"; -var nb = { +var dawn$e = "Dageraad"; +var dusk$e = "Schemer"; +var elevation$e = "Hoogte"; +var moonrise$e = "Maanopkomst"; +var moonset$e = "Maanondergang"; +var noon$e = "Middaguur"; +var sunrise$e = "Zonsopkomst"; +var sunset$e = "Zonsondergang"; +var nl = { azimuth: azimuth$e, dawn: dawn$e, dusk: dusk$e, @@ -2312,16 +2333,16 @@ var nb = { sunset: sunset$e }; -var azimuth$d = "Azimut"; -var dawn$d = "Dageraad"; -var dusk$d = "Schemer"; -var elevation$d = "Hoogte"; -var moonrise$d = "Maanopkomst"; -var moonset$d = "Maanondergang"; -var noon$d = "Middaguur"; -var sunrise$d = "Zonsopkomst"; -var sunset$d = "Zonsondergang"; -var nl = { +var azimuth$d = "Asimut"; +var dawn$d = "Daggry"; +var dusk$d = "Skumring"; +var elevation$d = "Høgde"; +var moonrise$d = "Måneoppgang"; +var moonset$d = "Månenedgang"; +var noon$d = "Middag"; +var sunrise$d = "Soloppgang"; +var sunset$d = "Solnedgang"; +var nn = { azimuth: azimuth$d, dawn: dawn$d, dusk: dusk$d, @@ -2333,16 +2354,16 @@ var nl = { sunset: sunset$d }; -var azimuth$c = "Asimut"; -var dawn$c = "Daggry"; -var dusk$c = "Skumring"; -var elevation$c = "Høgde"; -var moonrise$c = "Måneoppgang"; -var moonset$c = "Månenedgang"; -var noon$c = "Middag"; -var sunrise$c = "Soloppgang"; -var sunset$c = "Solnedgang"; -var nn = { +var azimuth$c = "Azymut"; +var dawn$c = "Świt"; +var dusk$c = "Zmierzch"; +var elevation$c = "Wysokość"; +var moonrise$c = "Wschód księżyca"; +var moonset$c = "Zachód księżyca"; +var noon$c = "Górowanie"; +var sunrise$c = "Wschód"; +var sunset$c = "Zachód"; +var pl = { azimuth: azimuth$c, dawn: dawn$c, dusk: dusk$c, @@ -2354,16 +2375,16 @@ var nn = { sunset: sunset$c }; -var azimuth$b = "Azymut"; -var dawn$b = "Świt"; -var dusk$b = "Zmierzch"; -var elevation$b = "Wysokość"; -var moonrise$b = "Wschód księżyca"; -var moonset$b = "Zachód księżyca"; -var noon$b = "Górowanie"; -var sunrise$b = "Wschód"; -var sunset$b = "Zachód"; -var pl = { +var azimuth$b = "Azimute"; +var dawn$b = "Amanhecer"; +var dusk$b = "Anoitecer"; +var elevation$b = "Elevação"; +var moonrise$b = "Anoitecer"; +var moonset$b = "Amanhecer"; +var noon$b = "Meio dia"; +var sunrise$b = "Nascer do sol"; +var sunset$b = "Pôr do sol"; +var pt = { azimuth: azimuth$b, dawn: dawn$b, dusk: dusk$b, @@ -2379,12 +2400,12 @@ var azimuth$a = "Azimute"; var dawn$a = "Amanhecer"; var dusk$a = "Anoitecer"; var elevation$a = "Elevação"; -var moonrise$a = "Anoitecer"; -var moonset$a = "Amanhecer"; -var noon$a = "Meio dia"; +var moonrise$a = "Nascer da lua"; +var moonset$a = "Pôr da lua"; +var noon$a = "Meio dia solar"; var sunrise$a = "Nascer do sol"; var sunset$a = "Pôr do sol"; -var pt = { +var ptBR = { azimuth: azimuth$a, dawn: dawn$a, dusk: dusk$a, @@ -2396,16 +2417,16 @@ var pt = { sunset: sunset$a }; -var azimuth$9 = "Azimute"; -var dawn$9 = "Amanhecer"; -var dusk$9 = "Anoitecer"; -var elevation$9 = "Elevação"; -var moonrise$9 = "Nascer da lua"; -var moonset$9 = "Pôr da lua"; -var noon$9 = "Meio dia solar"; -var sunrise$9 = "Nascer do sol"; -var sunset$9 = "Pôr do sol"; -var ptBR = { +var azimuth$9 = "Azimut"; +var dawn$9 = "Zori"; +var dusk$9 = "Amurg"; +var elevation$9 = "Elevație"; +var moonrise$9 = "Răsărit lunii"; +var moonset$9 = "Apus lunii"; +var noon$9 = "Zenit"; +var sunrise$9 = "Răsărit"; +var sunset$9 = "Apus"; +var ro = { azimuth: azimuth$9, dawn: dawn$9, dusk: dusk$9, @@ -2417,16 +2438,16 @@ var ptBR = { sunset: sunset$9 }; -var azimuth$8 = "Azimut"; -var dawn$8 = "Zori"; -var dusk$8 = "Amurg"; -var elevation$8 = "Elevație"; -var moonrise$8 = "Răsărit lunii"; -var moonset$8 = "Apus lunii"; -var noon$8 = "Zenit"; -var sunrise$8 = "Răsărit"; -var sunset$8 = "Apus"; -var ro = { +var azimuth$8 = "Азимут"; +var dawn$8 = "Рассвет"; +var dusk$8 = "Сумерки"; +var elevation$8 = "Высота"; +var moonrise$8 = "Восход луны"; +var moonset$8 = "Закат луны"; +var noon$8 = "Зенит"; +var sunrise$8 = "Восход"; +var sunset$8 = "Закат"; +var ru = { azimuth: azimuth$8, dawn: dawn$8, dusk: dusk$8, @@ -2438,16 +2459,16 @@ var ro = { sunset: sunset$8 }; -var azimuth$7 = "Азимут"; -var dawn$7 = "Рассвет"; -var dusk$7 = "Сумерки"; -var elevation$7 = "Высота"; -var moonrise$7 = "Восход луны"; -var moonset$7 = "Закат луны"; -var noon$7 = "Зенит"; -var sunrise$7 = "Восход"; -var sunset$7 = "Закат"; -var ru = { +var azimuth$7 = "Azimut"; +var dawn$7 = "Úsvit"; +var dusk$7 = "Súmrak"; +var elevation$7 = "Výška"; +var moonrise$7 = "Východ mesiaca"; +var moonset$7 = "Západ mesiaca"; +var noon$7 = "Slnečné poludnie"; +var sunrise$7 = "Východ slnka"; +var sunset$7 = "Západ slnka"; +var sk = { azimuth: azimuth$7, dawn: dawn$7, dusk: dusk$7, @@ -2460,15 +2481,15 @@ var ru = { }; var azimuth$6 = "Azimut"; -var dawn$6 = "Úsvit"; -var dusk$6 = "Súmrak"; -var elevation$6 = "Výška"; -var moonrise$6 = "Východ mesiaca"; -var moonset$6 = "Západ mesiaca"; -var noon$6 = "Slnečné poludnie"; -var sunrise$6 = "Východ slnka"; -var sunset$6 = "Západ slnka"; -var sk = { +var dawn$6 = "Zora"; +var dusk$6 = "Mrak"; +var elevation$6 = "Višina"; +var moonrise$6 = "Lunin vzhod"; +var moonset$6 = "Lunin zahod"; +var noon$6 = "Sončno poldne"; +var sunrise$6 = "Sončni vzhod"; +var sunset$6 = "Sončni zahod"; +var sl = { azimuth: azimuth$6, dawn: dawn$6, dusk: dusk$6, @@ -2481,15 +2502,15 @@ var sk = { }; var azimuth$5 = "Azimut"; -var dawn$5 = "Zora"; -var dusk$5 = "Mrak"; -var elevation$5 = "Višina"; -var moonrise$5 = "Lunin vzhod"; -var moonset$5 = "Lunin zahod"; -var noon$5 = "Sončno poldne"; -var sunrise$5 = "Sončni vzhod"; -var sunset$5 = "Sončni zahod"; -var sl = { +var dawn$5 = "Gryning"; +var dusk$5 = "Skymning"; +var elevation$5 = "Elevation"; +var moonrise$5 = "Månuppgång"; +var moonset$5 = "Månnedgång"; +var noon$5 = "Middag"; +var sunrise$5 = "Soluppgång"; +var sunset$5 = "Solnedgång"; +var sv = { azimuth: azimuth$5, dawn: dawn$5, dusk: dusk$5, @@ -2501,16 +2522,16 @@ var sl = { sunset: sunset$5 }; -var azimuth$4 = "Azimut"; -var dawn$4 = "Gryning"; -var dusk$4 = "Skymning"; -var elevation$4 = "Elevation"; -var moonrise$4 = "Månuppgång"; -var moonset$4 = "Månnedgång"; -var noon$4 = "Middag"; -var sunrise$4 = "Soluppgång"; -var sunset$4 = "Solnedgång"; -var sv = { +var azimuth$4 = "Güney Açısı"; +var dawn$4 = "Şafak"; +var dusk$4 = "Alacakaranlık"; +var elevation$4 = "Yükseklik"; +var moonrise$4 = "Ayın doğuşu"; +var moonset$4 = "Ayın batışı"; +var noon$4 = "Öğle"; +var sunrise$4 = "Gündoğumu"; +var sunset$4 = "Günbatımı"; +var tr = { azimuth: azimuth$4, dawn: dawn$4, dusk: dusk$4, @@ -2522,16 +2543,16 @@ var sv = { sunset: sunset$4 }; -var azimuth$3 = "Güney Açısı"; -var dawn$3 = "Şafak"; -var dusk$3 = "Alacakaranlık"; -var elevation$3 = "Yükseklik"; -var moonrise$3 = "Ayın doğuşu"; -var moonset$3 = "Ayın batışı"; -var noon$3 = "Öğle"; -var sunrise$3 = "Gündoğumu"; -var sunset$3 = "Günbatımı"; -var tr = { +var azimuth$3 = "Азимут"; +var dawn$3 = "Світанок"; +var dusk$3 = "Сутінки"; +var elevation$3 = "Висота"; +var moonrise$3 = "Схід місяця"; +var moonset$3 = "Захід місяця"; +var noon$3 = "Зеніт"; +var sunrise$3 = "Схід"; +var sunset$3 = "Захід"; +var uk = { azimuth: azimuth$3, dawn: dawn$3, dusk: dusk$3, @@ -2543,16 +2564,16 @@ var tr = { sunset: sunset$3 }; -var azimuth$2 = "Азимут"; -var dawn$2 = "Світанок"; -var dusk$2 = "Сутінки"; -var elevation$2 = "Висота"; -var moonrise$2 = "Схід місяця"; -var moonset$2 = "Захід місяця"; -var noon$2 = "Зеніт"; -var sunrise$2 = "Схід"; -var sunset$2 = "Захід"; -var uk = { +var azimuth$2 = "سمت الراسی"; +var dawn$2 = "سویرا"; +var dusk$2 = "شام"; +var elevation$2 = "بلندی"; +var moonrise$2 = "طلوع قمر"; +var moonset$2 = "غروب قمر"; +var noon$2 = "دوپہر"; +var sunrise$2 = "طلوع آفتاب"; +var sunset$2 = "غروب آفتاب"; +var ur = { azimuth: azimuth$2, dawn: dawn$2, dusk: dusk$2, @@ -2760,6 +2781,7 @@ _defineProperty(Constants, "LOCALIZATION_LANGUAGES", { sv: sv, tr: tr, uk: uk, + ur: ur, 'zh-Hans': zh_Hans, 'zh-Hant': zh_Hant }); @@ -3055,6 +3077,7 @@ var HorizonCardFooter = /*#__PURE__*/function () { _defineProperty(this, "azimuthExtraClasses", void 0); _defineProperty(this, "elevations", void 0); _defineProperty(this, "elevationExtraClasses", void 0); + _defineProperty(this, "southern_flip", void 0); this.data = data; this.i18n = i18n; this.sunTimes = data.sunData.times; @@ -3085,11 +3108,20 @@ var HorizonCardFooter = /*#__PURE__*/function () { } else { this.elevationExtraClasses = []; } + this.southern_flip = config.southern_flip; } _createClass(HorizonCardFooter, [{ key: "render", value: function render() { - return x(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n
\n ", "\n ", "\n ", "\n
\n "])), this.renderRow(this.fields.dawn ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Dawn, this.sunTimes.dawn) : A, this.fields.noon ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Noon, this.sunTimes.noon) : A, this.fields.dusk ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Dusk, this.sunTimes.dusk) : A), this.renderRow(this.fields.sun_azimuth || this.fields.moon_azimuth ? HelperFunctions.renderFieldElements(this.i18n, EHorizonCardI18NKeys.Azimuth, this.azimuths, this.azimuthExtraClasses) : A, this.fields.sun_elevation || this.fields.moon_elevation ? HelperFunctions.renderFieldElements(this.i18n, EHorizonCardI18NKeys.Elevation, this.elevations, this.elevationExtraClasses) : A), this.renderRow(this.fields.moonrise ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Moonrise, this.moonTimes.moonrise) : A, this.fields.moon_phase ? HelperFunctions.renderMoonElement(this.i18n, this.data.moonData.phase, this.data.moonData.phaseRotation) : A, this.fields.moonset ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Moonset, this.moonTimes.moonset) : A)); + var dawn = this.fields.dawn ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Dawn, this.sunTimes.dawn) : A; + var dusk = this.fields.dusk ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Dusk, this.sunTimes.dusk) : A; + var sunLeft = this.southern_flip ? dusk : dawn; + var sunRight = this.southern_flip ? dawn : dusk; + var moonrise = this.fields.moonrise ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Moonrise, this.moonTimes.moonrise) : A; + var moonset = this.fields.moonset ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Moonset, this.moonTimes.moonset) : A; + var moonLeft = this.southern_flip ? moonset : moonrise; + var moonRight = this.southern_flip ? moonrise : moonset; + return x(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n
\n ", "\n ", "\n ", "\n
\n "])), this.renderRow(sunLeft, this.fields.noon ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Noon, this.sunTimes.noon) : A, sunRight), this.renderRow(this.fields.sun_azimuth || this.fields.moon_azimuth ? HelperFunctions.renderFieldElements(this.i18n, EHorizonCardI18NKeys.Azimuth, this.azimuths, this.azimuthExtraClasses) : A, this.fields.sun_elevation || this.fields.moon_elevation ? HelperFunctions.renderFieldElements(this.i18n, EHorizonCardI18NKeys.Elevation, this.elevations, this.elevationExtraClasses) : A), this.renderRow(moonLeft, this.fields.moon_phase ? HelperFunctions.renderMoonElement(this.i18n, this.data.moonData.phase, this.data.moonData.phaseRotation) : A, moonRight)); } }, { key: "renderRow", @@ -3188,11 +3220,13 @@ var HorizonCardHeader = /*#__PURE__*/function () { _defineProperty(this, "times", void 0); _defineProperty(this, "fields", void 0); _defineProperty(this, "i18n", void 0); + _defineProperty(this, "southern_flip", void 0); this.title = config.title; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.fields = config.fields; this.times = data.sunData.times; this.i18n = i18n; + this.southern_flip = config.southern_flip; } _createClass(HorizonCardHeader, [{ key: "render", @@ -3207,7 +3241,11 @@ var HorizonCardHeader = /*#__PURE__*/function () { }, { key: "renderHeader", value: function renderHeader() { - return x(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n
\n ", "\n ", "\n
\n "])), this.fields.sunrise ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Sunrise, this.times.sunrise) : A, this.fields.sunset ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Sunset, this.times.sunset) : A); + var sunrise = this.fields.sunrise ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Sunrise, this.times.sunrise) : A; + var sunset = this.fields.sunset ? HelperFunctions.renderFieldElement(this.i18n, EHorizonCardI18NKeys.Sunset, this.times.sunset) : A; + var left = this.southern_flip ? sunset : sunrise; + var right = this.southern_flip ? sunrise : sunset; + return x(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["
", "", "
"])), left, right); } }, { key: "showTitle", diff --git a/www/community/lovelace-horizon-card/lovelace-horizon-card.js.gz b/www/community/lovelace-horizon-card/lovelace-horizon-card.js.gz index 50050bb8..1e37065c 100644 Binary files a/www/community/lovelace-horizon-card/lovelace-horizon-card.js.gz and b/www/community/lovelace-horizon-card/lovelace-horizon-card.js.gz differ diff --git a/www/community/lovelace-mushroom/mushroom.js b/www/community/lovelace-mushroom/mushroom.js index 7445eca4..de38f51e 100644 --- a/www/community/lovelace-mushroom/mushroom.js +++ b/www/community/lovelace-mushroom/mushroom.js @@ -167,7 +167,7 @@ const pt=t=>e=>"function"==typeof e?((t,e)=>(customElements.define(t,e),e))(t,e) color: var(--secondary-text-color); cursor: pointer; } -`,ai=(t,e,i,o)=>{const[n,r,a]=t.split(".",3);return Number(n)>e||Number(n)===e&&Number(r)>=i||void 0!==o};var si={form:{color_picker:{values:{default:"اللون الإفتراضي"}},info_picker:{values:{default:"المعلومات الافتراضية",name:"الإسم",state:"الحالة","last-changed":"آخر تغيير","last-updated":"آخر تحديث",none:"لا شئ"}},icon_type_picker:{values:{default:"النوع افتراضي",icon:"أيقونة","entity-picture":"صورة الكيان",none:"لا شئ"}},layout_picker:{values:{default:"تخطيط افتراضي",vertical:"تخطيط رأسي",horizontal:"تخطيط أفقي"}},alignment_picker:{values:{default:"المحاذاة الافتراضية",start:"بداية",end:"نهاية",center:"توسيط",justify:"مساواة"}}},card:{generic:{icon_color:"لون الأيقونة",layout:"التخطيط",fill_container:"ملئ الحاوية",primary_info:"المعلومات الأساسية",secondary_info:"المعلومات الفرعية",icon_type:"نوع الأيقونة",content_info:"المحتوى",use_entity_picture:"استخدم صورة الكيان؟",collapsible_controls:"تصغير عناصر التحكم عند الإيقاف",icon_animation:"تحريك الرمز عندما يكون نشطًا؟"},light:{show_brightness_control:"التحكم في السطوع؟",use_light_color:"استخدم لون فاتح",show_color_temp_control:"التحكم في حرارة اللون؟",show_color_control:"التحكم في اللون؟",incompatible_controls:"قد لا يتم عرض بعض عناصر التحكم إذا كان الضوء الخاص بك لا يدعم الميزة."},fan:{show_percentage_control:"التحكم في النسبة المئوية؟",show_oscillate_control:"التحكم في التذبذب؟"},cover:{show_buttons_control:"أزرار التحكم؟",show_position_control:"التحكم في الموقع؟"},template:{primary:"المعلومات الأساسية",secondary:"المعلومات الثانوية",multiline_secondary:"متعدد الأسطر الثانوية؟",entity_extra:"تستخدم في القوالب والإجراءات",content:"المحتوى",badge_icon:"أيقونة الشارة",badge_color:"لون الشارة",picture:"صورة (ستحل محل الأيقونة)"},title:{title:"العنوان",subtitle:"العنوان الفرعي"},chips:{alignment:"محاذاة"},weather:{show_conditions:"الأحوال الجوية؟",show_temperature:"الطقس؟"},update:{show_buttons_control:"أزرار التحكم؟"},vacuum:{commands:"الاوامر"},"media-player":{use_media_info:"استخدم معلومات الوسائط",use_media_artwork:"استخدم صورة الوسائط",show_volume_level:"إظهار مستوى الصوت",media_controls:"التحكم في الوسائط",media_controls_list:{on_off:"تشغيل/إيقاف",shuffle:"خلط",previous:"السابق",play_pause_stop:"تشغيل/إيقاف مؤقت/إيقاف",next:"التالي",repeat:"وضع التكرار"},volume_controls:"التحكم في الصوت",volume_controls_list:{volume_buttons:"أزرار الصوت",volume_set:"مستوى الصوت",volume_mute:"كتم"}},lock:{lock:"مقفل",unlock:"إلغاء قفل",open:"مفتوح"},humidifier:{show_target_humidity_control:"التحكم في الرطوبة؟?"},climate:{show_temperature_control:"التحكم في درجة الحرارة؟",hvac_modes:"أوضاع HVAC"}},chip:{sub_element_editor:{title:"محرر الرقاقة"},conditional:{chip:"رقاقة"},"chip-picker":{chips:"رقاقات",add:"أضف رقاقة",edit:"تعديل",clear:"مسح",select:"اختر الرقاقة",types:{action:"إجراء","alarm-control-panel":"تنبيه",back:"رجوع",conditional:"مشروط",entity:"الكيان",light:"Light",menu:"القائمة",template:"قالب",weather:"الطقس"}}}},li={editor:si},ci={form:{color_picker:{values:{default:"Основен цвят"}},info_picker:{values:{default:"Основна информация",name:"Име",state:"Състояние","last-changed":"Последно Променен","last-updated":"Последно Актуализиран",none:"Липсва"}},icon_type_picker:{values:{default:"Основен тип",icon:"Икона","entity-picture":"Картина на обекта",none:"Липсва"}},layout_picker:{values:{default:"Основно оформление",vertical:"Вертикално оформление",horizontal:"Хоризонтално оформление"}},alignment_picker:{values:{default:"Основно подравняване",start:"Старт",end:"Край",center:"Център",justify:"Подравнен"}}},card:{generic:{icon_color:"Цвят на икона",layout:"Оформление",fill_container:"Изпълване на контейнера",primary_info:"Първостепенна информация",secondary_info:"Второстепенна информация",icon_type:"Тип на икона",content_info:"Съдържание",use_entity_picture:"Използвай снимката на обекта?",collapsible_controls:"Свий контролите при изключен",icon_animation:"Анимирай иконата при активен?"},light:{show_brightness_control:"Контрол на яркостта?",use_light_color:"Използвай цвета на светлината",show_color_temp_control:"Контрол на температурата?",show_color_control:"Контрол на цвета?",incompatible_controls:"Някои опции могат да бъдат скрити при условие че осветителното тяло не поддържа фунцията."},fan:{show_percentage_control:"Процентов контрол?",show_oscillate_control:"Контрол на трептенето?"},cover:{show_buttons_control:"Контролни бутони?",show_position_control:"Контрол на позицията?",show_tilt_position_control:"Контрол на наклона?"},template:{primary:"Първостепенна информация",secondary:"Второстепенна информация",multiline_secondary:"Много-редова второстепенна информация?",entity_extra:"Използван в шаблони и действия",content:"Съдържание",badge_icon:"Икона на значка",badge_color:"Цвят на значка",picture:"Картина (ще замени иконата)"},title:{title:"Заглавие",subtitle:"Подзаглавие"},chips:{alignment:"Подравняване"},weather:{show_conditions:"Условия?",show_temperature:"Температура?"},update:{show_buttons_control:"Контролни бутони?"},vacuum:{commands:"Конади",commands_list:{on_off:"Вкл./Изкл."}},"media-player":{use_media_info:"Използвай информация от медията",use_media_artwork:"Използвай визуалните детайли от медията",show_volume_level:"Покажи контрола за звук",media_controls:"Контрол на Медиата",media_controls_list:{on_off:"Вкл./Изкл.",shuffle:"Разбъркано",previous:"Предишен",play_pause_stop:"Пусни/пауза/стоп",next:"Следващ",repeat:"Повтаряне"},volume_controls:"Контрол на звука",volume_controls_list:{volume_buttons:"Бутони за звук",volume_set:"Ниво на звука",volume_mute:"Заглуши"}},lock:{lock:"Заключен",unlock:"Отключен",open:"Отворен"},humidifier:{show_target_humidity_control:"Контрол на влажността?"},climate:{show_temperature_control:"Контрол на температурата?",hvac_modes:"HVAC Режими"}},chip:{sub_element_editor:{title:"Чип редактор"},conditional:{chip:"Чип"},"chip-picker":{chips:"Чипове",add:"Добави чип",edit:"Редактирай",clear:"Изчисти",select:"Избери чип",types:{action:"Действия","alarm-control-panel":"Аларма",back:"Назад",conditional:"Условни",entity:"Обект",light:"Осветление",menu:"Меню",template:"Шаблон",weather:"Време"}}}},di={editor:ci},ui={form:{color_picker:{values:{default:"Color per defecte"}},info_picker:{values:{default:"Informació per defecte",name:"Nom",state:"Estat","last-changed":"Últim Canvi","last-updated":"Última Actualització",none:"Cap"}},icon_type_picker:{values:{default:"Tipus per defecte",icon:"Icona","entity-picture":"Entitat d'imatge",none:"Cap"}},layout_picker:{values:{default:"Distribució per defecte",vertical:"Distribució vertical",horizontal:"Distribució horitzontal"}},alignment_picker:{values:{default:"Alineació per defecte",start:"Inici",end:"Final",center:"Centre",justify:"Justifica"}}},card:{generic:{icon_color:"Color d'icona",layout:"Distribució",fill_container:"Emplena el contenidor",primary_info:"Informació primaria",secondary_info:"Informació secundaria",icon_type:"Tipus d'icona",content_info:"Contingut",use_entity_picture:"Fer servir la imatge de l'entitat?",collapsible_controls:"Amaga els controls en desactivar",icon_animation:"Animar icona en activar?"},light:{show_brightness_control:"Control de brillantor?",use_light_color:"Fes servir el color del llum",show_color_temp_control:"Control de la temperatura del color?",show_color_control:"Control de color?",incompatible_controls:"Alguns controls no es mostraran si l'entitat no suporta eixa funció."},fan:{show_percentage_control:"Control de percentatge?",show_oscillate_control:"Control d'oscil·lació?"},cover:{show_buttons_control:"Botons de control?",show_position_control:"Control de posició?",show_tilt_position_control:"Control d'inclinació?"},template:{primary:"Informació primaria",secondary:"Informació secundaria",multiline_secondary:"Secundaria en varies línies?",entity_extra:"Utilitzats en plantilles i accions",content:"Contingut",badge_icon:"Icona de la insígnia",badge_color:"Color de la insígnia",picture:"Imatge (reemplaçarà la icona)"},title:{title:"Títol",subtitle:"Subtítol",title_tap_action:"Acció en tocar el títol",subtitle_tap_action:"Acció en tocar el subtítol"},chips:{alignment:"Alineació"},weather:{show_conditions:"Condicions?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Botons de control?"},vacuum:{commands:"Comandaments",commands_list:{on_off:"Engegar/Apagar"}},"media-player":{use_media_info:"Empra la informació multimèdia",use_media_artwork:"Fes servir l'art multimèdia",show_volume_level:"Mostra el nivell de volum",media_controls:"Controls multimèdia",media_controls_list:{on_off:"Engegar/Apagar",shuffle:"Mesclar",previous:"Pista anterior",play_pause_stop:"Reproduïr/Pausar/Detindre",next:"Pista següent",repeat:"Mode de repetició"},volume_controls:"Controls de volum",volume_controls_list:{volume_buttons:"Botons de volum",volume_set:"Nivell de volum",volume_mute:"Silenci"}},lock:{lock:"Bloqueja",unlock:"Desbloqueja",open:"Obri"},humidifier:{show_target_humidity_control:"Control d'humitat?"},climate:{show_temperature_control:"Control de temperatura?",hvac_modes:"Modes HVAC"},number:{display_mode:"Mode de visualització",display_mode_list:{default:"Per defecte (lliscant)",slider:"Lliscant",buttons:"Botons"}}},chip:{sub_element_editor:{title:"Editor de xips"},conditional:{chip:"Xip"},"chip-picker":{chips:"Xips",add:"Afegir xip",edit:"Editar",clear:"Buidar",select:"Seleccionar chip",types:{action:"Acció","alarm-control-panel":"Alarma",back:"Tornar",conditional:"Condicional",entity:"Entitat",light:"Llum",menu:"Menú",spacer:"Espai",template:"Plantilla",weather:"Oratge"}}}},hi={not_found:"No s'ha trobat l'entitat"},mi={editor:ui,card:hi},pi={form:{color_picker:{values:{default:"Výchozí barva"}},info_picker:{values:{default:"Výchozí informace",name:"Název",state:"Stav","last-changed":"Poslední změna","last-updated":"Poslední aktualizace",none:"Nic"}},icon_type_picker:{values:{default:"Výchozí typ",icon:"Ikona","entity-picture":"Ikona entity",none:"Nic"}},layout_picker:{values:{default:"Výchozí rozložení",vertical:"Svislé rozložení",horizontal:"Vodorovné rozložení"}},alignment_picker:{values:{default:"Výchozí zarovnání",start:"Na začátek",end:"Na konec",center:"Na střed",justify:"Do bloku"}}},card:{generic:{icon_color:"Barva ikony",layout:"Rozložení",fill_container:"Vyplnit prostor",primary_info:"Primární informace",secondary_info:"Sekundární informace",icon_type:"Typ ikony",content_info:"Obsah",use_entity_picture:"Použít ikonu entity?",collapsible_controls:"Pokud je vypnuto, skrýt ovládací prvky",icon_animation:"Pokud je aktivní, animovat ikonu?"},light:{show_brightness_control:"Ovládání jasu?",use_light_color:"Ikona podle barvy světla?",show_color_temp_control:"Ovládání teploty světla?",show_color_control:"Ovládání barvy světla?",incompatible_controls:"Některé ovládací prvky se nemusí zobrazit, pokud vaše světlo tuto funkci nepodporuje."},fan:{show_percentage_control:"Ovládání v procentech?",show_oscillate_control:"Ovládání oscilaceM"},cover:{show_buttons_control:"Zobrazit ovládací tlačítka?",show_position_control:"Zobrazit ovládání polohy?",show_tilt_position_control:"Zobrazit ovládání náklonu?"},template:{primary:"Primární informace",secondary:"Sekundární informace",multiline_secondary:"Víceřádková sekundární informace?",entity_extra:"Použito v šablonách a akcích",content:"Obsah",badge_icon:"Ikona odznaku",badge_color:"Barva odznaku",picture:"Obrázek (nahradí ikonu)"},title:{title:"Nadpis",subtitle:"Popis",title_tap_action:"Akce při klepnutí na nadpis",subtitle_tap_action:"Akce při klepnutí na popis"},chips:{alignment:"Zarovnání"},weather:{show_conditions:"Zobrazit podmínky?",show_temperature:"Zobrazit teplotu?"},update:{show_buttons_control:"Zobrazit ovládací tlačítka?"},vacuum:{commands:"Příkazy",commands_list:{on_off:"Zapnout/Vypnout"}},"media-player":{use_media_info:"Použít informace z média",use_media_artwork:"Použít artwork z média",show_volume_level:"Zobrazit úroveň hlasitosti",media_controls:"Ovládání médií",media_controls_list:{on_off:"Zapnout/Vypnout",shuffle:"Zamíchat",previous:"Předchozí stopa",play_pause_stop:"Přehrát/Pauza/Zastavit",next:"Další stopa",repeat:"Režim opakování"},volume_controls:"Ovládání hlasitosti",volume_controls_list:{volume_buttons:"Tlačítka hlasitosti",volume_set:"Úroveň hlasitosti",volume_mute:"Ztlumit"}},lock:{lock:"Zamčeno",unlock:"Odemčeno",open:"Otevřeno"},humidifier:{show_target_humidity_control:"Ovládání vlhkosti?"},climate:{show_temperature_control:"Ovládání teploty?",hvac_modes:"Režimy HVAC"},number:{display_mode:"Režim zobrazení",display_mode_list:{default:"Výchozí (posuvník)",slider:"Posuvník",buttons:"Tlačítka"}}},chip:{sub_element_editor:{title:"Editor tlačítek"},conditional:{chip:"Tlačítko"},"chip-picker":{chips:"Tlačítka",add:"Přidat tlačítko",edit:"Upravit",clear:"Vymazat",select:"Vybrat tlačítko",types:{action:"Akce","alarm-control-panel":"Alarm",back:"Zpět",conditional:"Podmínka",entity:"Entita",light:"Světlo",menu:"Menu",spacer:"Mezera",template:"Šablona",weather:"Počasí"}}}},fi={not_found:"Entita nebyla nalezena"},gi={editor:pi,card:fi},_i={form:{color_picker:{values:{default:"Standardfarve"}},info_picker:{values:{default:"Standard information",name:"Navn",state:"Status","last-changed":"Sidst ændret","last-updated":"Sidst opdateret",none:"Ingen"}},icon_type_picker:{values:{default:"Standard type",icon:"Ikon","entity-picture":"Enhedsbillede",none:"Ingen"}},layout_picker:{values:{default:"Standard layout",vertical:"Vertikal layout",horizontal:"Horisontal layout"}},alignment_picker:{values:{default:"Standard justering",start:"Start",end:"Slut",center:"Centrer",justify:"Lige margener"}}},card:{generic:{color:"Farve",icon_color:"Ikon farve",layout:"Layout",fill_container:"Fyld container",primary_info:"Primær information",secondary_info:"Sekundær information",icon_type:"Ikon type",content_info:"Indhold",use_entity_picture:"Brug enhedsbillede?",collapsible_controls:"Skjul kontroller når slukket",icon_animation:"Animér ikon når aktiv?"},light:{show_brightness_control:"Lysstyrkekontrol?",use_light_color:"Brug lysfarve",show_color_temp_control:"Temperaturfarvekontrol?",show_color_control:"Farvekontrol?",incompatible_controls:"Nogle kontroller vises muligvis ikke, hvis dit lys ikke understøtter funktionen."},fan:{show_percentage_control:"Procentkontrol?",show_oscillate_control:"Oscillationskontrol?"},cover:{show_buttons_control:"Betjeningsknapper?",show_position_control:"Positionskontrol?",show_tilt_position_control:"Tiltkontrol?"},template:{primary:"Primær information",secondary:"Sekundær information",multiline_secondary:"Multi-linje sekundær?",entity_extra:"Anvendes i skabeloner og handlinger",label:"Label",content:"Indhold",badge_icon:"Badge ikon",badge_color:"Badge farve",picture:"Billede (erstatter ikonet)"},title:{title:"Titel",subtitle:"Undertitel",title_tap_action:"Title tryk handling",subtitle_tap_action:"Undertitel tryk handling"},chips:{alignment:"Justering"},weather:{show_conditions:"Vejrforhold?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Betjeningsknapper?"},vacuum:{commands:"Kommandoer",commands_list:{on_off:"Slå til/fra"}},"media-player":{use_media_info:"Brug medieinformation",use_media_artwork:"Brug mediebilleder",show_volume_level:"Vis lydstyrke",media_controls:"Mediekontrol",media_controls_list:{on_off:"Tænd/Sluk",shuffle:"Bland",previous:"Forrige nummer",play_pause_stop:"Afspil/Pause/Stop",next:"Næste nummer",repeat:"Gentagelsestilstand"},volume_controls:"Lydstyrkekontrol",volume_controls_list:{volume_buttons:"Lydstyrkeknapper",volume_set:"Lydstyrke",volume_mute:"Lydløs"}},lock:{lock:"Lås",unlock:"Lås op",open:"Åben"},humidifier:{show_target_humidity_control:"Luftfugtighedskontrol?"},climate:{show_temperature_control:"Temperaturkontrol?",hvac_modes:"HVAC-tilstande"},number:{display_mode:"Visningstilstand",display_mode_list:{default:"Standard (slider)",slider:"Slider",buttons:"Knapper"}}},chip:{sub_element_editor:{title:"Chip-editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Tilføj chip",edit:"Rediger",clear:"Nulstil",select:"Vælg chip",types:{action:"Handling","alarm-control-panel":"Alarm",back:"Tilbage",conditional:"Betinget",entity:"Enhed",light:"Lys",menu:"Menu",spacer:"Afstand",template:"Skabelon",weather:"Vejr"}}}},vi={not_found:"Enhed ikke fundet"},bi={editor:_i,card:vi},yi={form:{color_picker:{values:{default:"Standardfarbe"}},info_picker:{values:{default:"Standard-Information",name:"Name",state:"Zustand","last-changed":"Letzte Änderung","last-updated":"Letzte Aktualisierung",none:"Keine"}},icon_type_picker:{values:{default:"Standard-Typ",icon:"Icon","entity-picture":"Entitätsbild",none:"Keines"}},layout_picker:{values:{default:"Standard-Layout",vertical:"Vertikales Layout",horizontal:"Horizontales Layout"}},alignment_picker:{values:{default:"Standard",start:"Anfang",end:"Ende",center:"Mitte",justify:"Ausrichten"}}},card:{generic:{icon_color:"Icon-Farbe",layout:"Layout",fill_container:"Container ausfüllen",primary_info:"Primäre Information",secondary_info:"Sekundäre Information",icon_type:"Icon-Typ",content_info:"Inhalt",use_entity_picture:"Entitätsbild verwenden?",collapsible_controls:"Schieberegler einklappen, wenn aus",icon_animation:"Icon animieren, wenn aktiv?"},light:{show_brightness_control:"Helligkeitsregelung?",use_light_color:"Farbsteuerung verwenden",show_color_temp_control:"Farbtemperatursteuerung?",show_color_control:"Farbsteuerung?",incompatible_controls:"Einige Steuerelemente werden möglicherweise nicht angezeigt, wenn Ihr Licht diese Funktion nicht unterstützt."},fan:{show_percentage_control:"Prozentuale Kontrolle?",show_oscillate_control:"Oszillationssteuerung?"},cover:{show_buttons_control:"Schaltflächensteuerung?",show_position_control:"Positionssteuerung?",show_tilt_position_control:"Winkelsteuerung?"},template:{primary:"Primäre Information",secondary:"Sekundäre Information",multiline_secondary:"Mehrzeilig sekundär?",entity_extra:"Wird in Vorlagen und Aktionen verwendet",content:"Inhalt",badge_icon:"Badge-Icon",badge_color:"Badge-Farbe",picture:"Bild (ersetzt das Icon)"},title:{title:"Titel",subtitle:"Untertitel",title_tap_action:"Titel Tipp-Aktion",subtitle_tap_action:"Untertitel Tipp-Aktion"},chips:{alignment:"Ausrichtung"},weather:{show_conditions:"Bedingungen?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Schaltflächensteuerung?"},vacuum:{commands:"Befehle",commands_list:{on_off:"An/Ausschalten"}},"media-player":{use_media_info:"Medieninfos verwenden",use_media_artwork:"Mediengrafik verwenden",show_volume_level:"Lautstärke-Level anzeigen",media_controls:"Mediensteuerung",media_controls_list:{on_off:"Ein/Aus",shuffle:"Zufällige Wiedergabe",previous:"Vorheriger Titel",play_pause_stop:"Play/Pause/Stop",next:"Nächster Titel",repeat:"Wiederholen"},volume_controls:"Lautstärkesteuerung",volume_controls_list:{volume_buttons:"Lautstärke-Buttons",volume_set:"Lautstärke-Level",volume_mute:"Stumm"}},lock:{lock:"Verriegeln",unlock:"Entriegeln",open:"Öffnen"},humidifier:{show_target_humidity_control:"Luftfeuchtigkeitssteuerung?"},climate:{show_temperature_control:"Temperatursteuerung?",hvac_modes:"HVAC-Modi"},number:{display_mode:"Anzeigemodus",display_mode_list:{default:"Standard (Schieberegler)",slider:"Schieberegler",buttons:"Buttons"}}},chip:{sub_element_editor:{title:"Chip Editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Chip hinzufügen",edit:"Editieren",clear:"Löschen",select:"Chip auswählen",types:{action:"Aktion","alarm-control-panel":"Alarm",back:"Zurück",conditional:"Bedingung",entity:"Entität",light:"Licht",menu:"Menü",spacer:"Abstand",template:"Vorlage",weather:"Wetter"}}}},xi={not_found:"Entität nicht gefunden"},wi={editor:yi,card:xi},ki={form:{color_picker:{values:{default:"Προεπιλεγμένο χρώμα"}},info_picker:{values:{default:"Προεπιλεγμένες πληροφορίες",name:"Όνομα",state:"Κατάσταση","last-changed":"Τελευταία αλλαγή","last-updated":"Τελευταία ενημέρωση",none:"Τίποτα"}},layout_picker:{values:{default:"Προεπιλεγμένη διάταξη",vertical:"Κάθετη διάταξη",horizontal:"Οριζόντια διάταξη"}},alignment_picker:{values:{default:"Προεπιλεγμένη στοίχιση",start:"Στοίχιση αριστερά",end:"Στοίχιση δεξιά",center:"Στοίχιση στο κέντρο",justify:"Πλήρης στοίχιση"}}},card:{generic:{icon_color:"Χρώμα εικονιδίου",layout:"Διάταξη",primary_info:"Πρωτεύουσες πληροφορίες",secondary_info:"Δευτερεύουσες πληροφορίες",content_info:"Περιεχόμενο",use_entity_picture:"Χρήση εικόνας οντότητας;",icon_animation:"Κίνηση εικονιδίου όταν είναι ενεργό;"},light:{show_brightness_control:"Έλεγχος φωτεινότητας;",use_light_color:"Χρήση χρώματος φωτος",show_color_temp_control:"Έλεγχος χρώματος θερμοκρασίας;",show_color_control:"Έλεγχος χρώματος;",incompatible_controls:"Ορισμένα στοιχεία ελέγχου ενδέχεται να μην εμφανίζονται εάν το φωτιστικό σας δεν υποστηρίζει τη λειτουργία."},fan:{show_percentage_control:"Έλεγχος ποσοστού;",show_oscillate_control:"Έλεγχος ταλάντωσης;"},cover:{show_buttons_control:"Έλεγχος κουμπιών;",show_position_control:"Έλεγχος θέσης;"},template:{primary:"Πρωτεύουσες πληροφορίες",secondary:"Δευτερεύουσες πληροφορίες",multiline_secondary:"Δευτερεύουσες πολλαπλών γραμμών;",entity_extra:"Χρησιμοποιείται σε πρότυπα και ενέργειες",content:"Περιεχόμενο"},title:{title:"Τίτλος",subtitle:"Υπότιτλος"},chips:{alignment:"Ευθυγράμμιση"},weather:{show_conditions:"Συνθήκες;",show_temperature:"Θερμοκρασία;"},update:{show_buttons_control:"Έλεγχος κουμπιών;"},vacuum:{commands:"Εντολές"},"media-player":{use_media_info:"Χρήση πληροφοριών πολυμέσων",use_media_artwork:"Χρήση έργων τέχνης πολυμέσων",media_controls:"Έλεγχος πολυμέσων",media_controls_list:{on_off:"Ενεργοποίηση/απενεργοποίηση",shuffle:"Τυχαία σειρά",previous:"Προηγούμενο κομμάτι",play_pause_stop:"Αναπαραγωγή/παύση/διακοπή",next:"Επόμενο κομμάτι",repeat:"Λειτουργία επανάληψης"},volume_controls:"Χειριστήρια έντασης ήχου",volume_controls_list:{volume_buttons:"Κουμπιά έντασης ήχου",volume_set:"Επίπεδο έντασης ήχου",volume_mute:"Σίγαση"}}},chip:{sub_element_editor:{title:"Επεξεργαστής Chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Προσθήκη chip",edit:"Επεξεργασία",clear:"Καθαρισμός",select:"Επιλογή chip",types:{action:"Ενέργεια","alarm-control-panel":"Συναγερμός",back:"Πίσω",conditional:"Υπό προϋποθέσεις",entity:"Οντότητα",light:"Φως",menu:"Μενού",template:"Πρότυπο",weather:"Καιρός"}}}},Ci={editor:ki},$i={form:{color_picker:{values:{default:"Default color"}},info_picker:{values:{default:"Default information",name:"Name",state:"State","last-changed":"Last Changed","last-updated":"Last Updated",none:"None"}},icon_type_picker:{values:{default:"Default type",icon:"Icon","entity-picture":"Entity picture",none:"None"}},layout_picker:{values:{default:"Default layout",vertical:"Vertical layout",horizontal:"Horizontal layout"}},alignment_picker:{values:{default:"Default alignment",start:"Start",end:"End",center:"Center",justify:"Justify"}}},card:{generic:{color:"Color",icon_color:"Icon color",layout:"Layout",fill_container:"Fill container",primary_info:"Primary information",secondary_info:"Secondary information",icon_type:"Icon type",content_info:"Content",use_entity_picture:"Use entity picture?",collapsible_controls:"Collapse controls when off",icon_animation:"Animate icon when active?"},light:{show_brightness_control:"Brightness control?",use_light_color:"Use light color",show_color_temp_control:"Temperature color control?",show_color_control:"Color control?",incompatible_controls:"Some controls may not be displayed if your light does not support the feature."},fan:{show_percentage_control:"Percentage control?",show_oscillate_control:"Oscillate control?"},cover:{show_buttons_control:"Control buttons?",show_position_control:"Position control?",show_tilt_position_control:"Tilt control?"},template:{primary:"Primary information",secondary:"Secondary information",multiline_secondary:"Multiline secondary?",entity_extra:"Used in templates and actions",label:"Label",content:"Content",badge_icon:"Badge icon",badge_color:"Badge color",picture:"Picture (will replace the icon)"},title:{title:"Title",subtitle:"Subtitle",title_tap_action:"Title tap action",subtitle_tap_action:"Subtitle tap action"},chips:{alignment:"Alignment"},weather:{show_conditions:"Conditions?",show_temperature:"Temperature?"},update:{show_buttons_control:"Control buttons?"},vacuum:{commands:"Commands",commands_list:{on_off:"Turn on/off"}},"media-player":{use_media_info:"Use media info",use_media_artwork:"Use media artwork",show_volume_level:"Show volume level",media_controls:"Media controls",media_controls_list:{on_off:"Turn on/off",shuffle:"Shuffle",previous:"Previous track",play_pause_stop:"Play/pause/stop",next:"Next track",repeat:"Repeat mode"},volume_controls:"Volume controls",volume_controls_list:{volume_buttons:"Volume buttons",volume_set:"Volume level",volume_mute:"Mute"}},lock:{lock:"Lock",unlock:"Unlock",open:"Open"},humidifier:{show_target_humidity_control:"Humidity control?"},climate:{show_temperature_control:"Temperature control?",hvac_modes:"HVAC Modes"},number:{display_mode:"Display Mode",display_mode_list:{default:"Default (slider)",slider:"Slider",buttons:"Buttons"}}},chip:{sub_element_editor:{title:"Chip editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Add chip",edit:"Edit",clear:"Clear",select:"Select chip",types:{action:"Action","alarm-control-panel":"Alarm",back:"Back",conditional:"Conditional",entity:"Entity",light:"Light",menu:"Menu",spacer:"Spacer",template:"Template",weather:"Weather"}}}},Ei={not_found:"Entity not found"},Ai={editor:$i,card:Ei},Si={form:{color_picker:{values:{default:"Color predeterminado"}},info_picker:{values:{default:"Información predeterminada",name:"Nombre",state:"Estado","last-changed":"Último cambio","last-updated":"Última actualización",none:"Ninguno"}},icon_type_picker:{values:{default:"Por defecto",icon:"Icono","entity-picture":"Imagen de entidad",none:"Ninguno"}},layout_picker:{values:{default:"Diseño predeterminado",vertical:"Diseño vertical",horizontal:"Diseño horizontal"}},alignment_picker:{values:{default:"Alineación predeterminada",start:"Inicio",end:"Final",center:"Centrado",justify:"Justificado"}}},card:{generic:{icon_color:"Color de icono",layout:"Diseño",fill_container:"Rellenar",primary_info:"Información primaria",secondary_info:"Información secundaria",icon_type:"Icono",content_info:"Contenido",use_entity_picture:"¿Usar imagen de entidad?",collapsible_controls:"Contraer controles cuando está apagado",icon_animation:"¿Icono animado cuando está activo?"},light:{show_brightness_control:"¿Controlar brillo?",use_light_color:"Usar color de la luz",show_color_temp_control:"¿Controlar temperatura del color?",show_color_control:"¿Controlar color?",incompatible_controls:"Es posible que algunos controles no se muestren si la luz no es compatible con esta función."},fan:{show_percentage_control:"¿Controlar porcentaje?",show_oscillate_control:"¿Controlar oscilación?"},cover:{show_buttons_control:"¿Botones de control?",show_position_control:"¿Control de posición?",show_tilt_position_control:"¿Control de inclinación?"},template:{primary:"Información primaria",secondary:"Información secundaria",multiline_secondary:"¿Secundaria multilínea?",entity_extra:"Utilizado en plantillas y acciones.",content:"Contenido",badge_icon:"Icono del distintivo",badge_color:"Color del distintivo",picture:"Imagen (sustituirá al icono)"},title:{title:"Título",subtitle:"Subtítulo",title_tap_action:"Acción al tocar el título",subtitle_tap_action:"Acción al tocar el subtítulo"},chips:{alignment:"Alineación"},weather:{show_conditions:"¿Condiciones?",show_temperature:"¿Temperatura?"},update:{show_buttons_control:"¿Botones de control?"},vacuum:{commands:"Comandos",commands_list:{on_off:"Activar/desactivar"}},"media-player":{use_media_info:"Usar información multimedia",use_media_artwork:"Usar ilustraciones multimedia",show_volume_level:"Mostrar nivel de volumen",media_controls:"Controles multimedia",media_controls_list:{on_off:"Activar/desactivar",shuffle:"Aleatoria",previous:"Pista anterior",play_pause_stop:"Reproducir/pausa/parar",next:"Pista siguiente",repeat:"Modo de repetición"},volume_controls:"Controles de volumen",volume_controls_list:{volume_buttons:"Botones de volumen",volume_set:"Nivel de volumen",volume_mute:"Silenciar"}},lock:{lock:"Bloquear",unlock:"Desbloquear",open:"Abrir"},humidifier:{show_target_humidity_control:"¿Controlar humedad?"},climate:{show_temperature_control:"¿Control de temperatura?",hvac_modes:"Modos de climatización"}},chip:{sub_element_editor:{title:"Editor de chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Añadir chip",edit:"Editar",clear:"Limpiar",select:"Seleccionar chip",types:{action:"Acción","alarm-control-panel":"Alarma",back:"Volver",conditional:"Condicional",entity:"Entidad",light:"Luz",menu:"Menú",template:"Plantilla",weather:"Clima"}}}},Ii={editor:Si},Ti={form:{color_picker:{values:{default:"Oletusväri"}},info_picker:{values:{default:"Oletustiedot",name:"Nimi",state:"Tila","last-changed":"Viimeksi muuttunut","last-updated":"Viimeksi päivittynyt",none:"Ei mitään"}},icon_type_picker:{values:{default:"Oletustyyppi",icon:"Kuvake","entity-picture":"Kohteen kuva",none:"Ei mitään"}},layout_picker:{values:{default:"Oletusasettelu",vertical:"Pystysuuntainen",horizontal:"Vaakasuuntainen"}},alignment_picker:{values:{default:"Keskitys",start:"Alku",end:"Loppu",center:"Keskitä",justify:"Sovita"}}},card:{generic:{icon_color:"Ikonin väri",layout:"Asettelu",fill_container:"Täytä alue",primary_info:"Ensisijaiset tiedot",secondary_info:"Toissijaiset tiedot",icon_type:"Kuvakkeen tyyppi",content_info:"Sisältö",use_entity_picture:"Käytä kohteen kuvaa?",collapsible_controls:"Piilota toiminnot off-tilassa",icon_animation:"Animoi kuvake, kun aktiivinen?"},light:{show_brightness_control:"Kirkkauden säätö?",use_light_color:"Käytä valaisimen väriä",show_color_temp_control:"Värilämpötilan säätö?",show_color_control:"Värin säätö?",incompatible_controls:"Jotkin toiminnot eivät näy, jos valaisimesi ei tue niitä."},fan:{show_percentage_control:"Prosentuaalinen säätö?",show_oscillate_control:"Oskillaation säätö?"},cover:{show_buttons_control:"Toimintopainikkeet?",show_position_control:"Sijainnin hallinta?"},template:{primary:"Ensisijaiset tiedot",secondary:"Toissijaiset tiedot",multiline_secondary:"Monirivinen toissijainen tieto?",entity_extra:"Käytetään malleissa ja toiminnoissa",content:"Sisältö",badge_icon:"Merkin kuvake",badge_color:"Merkin väri",picture:"Kuva (korvaa kuvakkeen)"},title:{title:"Otsikko",subtitle:"Tekstitys"},chips:{alignment:"Asettelu"},weather:{show_conditions:"Ehdot?",show_temperature:"Lämpötila?"},update:{show_buttons_control:"Toimintopainikkeet?"},vacuum:{commands:"Komennot"},"media-player":{use_media_info:"Käytä median tietoja",use_media_artwork:"Käytä median kuvituksia",show_volume_level:"Näytä äänenvoimakkuuden hallinta",media_controls:"Toiminnot",media_controls_list:{on_off:"Päälle/pois",shuffle:"Sekoita",previous:"Edellinen kappale",play_pause_stop:"Toista/keskeytä/pysäytä",next:"Seuraava kappale",repeat:"Jatkuva toisto"},volume_controls:"Äänenvoimakkuuden hallinta",volume_controls_list:{volume_buttons:"Äänenvoimakkuuspainikkeet",volume_set:"Äänenvoimakkuus",volume_mute:"Mykistä"}},lock:{lock:"Lukitse",unlock:"Poista lukitus",open:"Avaa"},humidifier:{show_target_humidity_control:"Kosteudenhallinta?"}},chip:{sub_element_editor:{title:"Merkkieditori"},conditional:{chip:"Merkki"},"chip-picker":{chips:"Merkit",add:"Lisää merkki",edit:"Muokkaa",clear:"Tyhjennä",select:"Valitse merkki",types:{action:"Toiminto","alarm-control-panel":"Hälytys",back:"Takaisin",conditional:"Ehdollinen",entity:"Kohde",light:"Valaisin",menu:"Valikko",template:"Malli",weather:"Sää"}}}},zi={editor:Ti},Oi={form:{color_picker:{values:{default:"Couleur par défaut"}},info_picker:{values:{default:"Information par défaut",name:"Nom",state:"État","last-changed":"Dernière modification","last-updated":"Dernière mise à jour",none:"Aucune"}},icon_type_picker:{values:{default:"Type par défaut",icon:"Icône","entity-picture":"Image de l'entité",none:"Aucune"}},layout_picker:{values:{default:"Disposition par défault",vertical:"Disposition verticale",horizontal:"Disposition horizontale"}},alignment_picker:{values:{default:"Alignement par défaut",start:"Début",end:"Fin",center:"Centré",justify:"Justifié"}}},card:{generic:{icon_color:"Couleur de l'icône",layout:"Disposition",fill_container:"Remplir le conteneur",primary_info:"Information principale",secondary_info:"Information secondaire",icon_type:"Type d'icône",content_info:"Contenu",use_entity_picture:"Utiliser l'image de l'entité ?",collapsible_controls:"Reduire les contrôles quand éteint",icon_animation:"Animation de l'icône ?"},light:{show_brightness_control:"Contrôle de luminosité ?",use_light_color:"Utiliser la couleur de la lumière",show_color_temp_control:"Contrôle de la température ?",show_color_control:"Contrôle de la couleur ?",incompatible_controls:"Certains contrôles peuvent ne pas être affichés si votre lumière ne supporte pas la fonctionnalité."},fan:{show_percentage_control:"Contrôle de la vitesse ?",show_oscillate_control:"Contrôle de l'oscillation ?"},cover:{show_buttons_control:"Contrôle avec boutons ?",show_position_control:"Contrôle de la position ?"},template:{primary:"Information principale",secondary:"Information secondaire",multiline_secondary:"Information secondaire sur plusieurs lignes ?",entity_extra:"Utilisée pour les templates et les actions",content:"Contenu",badge_icon:"Icône du badge",badge_color:"Couleur du badge",picture:"Picture (remplacera l'icône)"},title:{title:"Titre",subtitle:"Sous-titre",title_tap_action:"Appui sur le titre",subtitle_tap_action:"Appui sur le sous-titre"},chips:{alignment:"Alignement"},weather:{show_conditons:"Conditions ?",show_temperature:"Température ?"},update:{show_buttons_control:"Contrôle avec boutons ?"},vacuum:{commands:"Commandes",commands_list:{on_off:"Allumer/Éteindre"}},"media-player":{use_media_info:"Utiliser les informations du media",use_media_artwork:"Utiliser l'illustration du media",show_volume_level:"Afficher le niveau de volume",media_controls:"Contrôles du media",media_controls_list:{on_off:"Allumer/Éteindre",shuffle:"Lecture aléatoire",previous:"Précédent",play_pause_stop:"Lecture/pause/stop",next:"Suivant",repeat:"Mode de répétition"},volume_controls:"Contrôles du volume",volume_controls_list:{volume_buttons:"Bouton de volume",volume_set:"Niveau de volume",volume_mute:"Muet"}},lock:{lock:"Verrouiller",unlock:"Déverrouiller",open:"Ouvrir"},humidifier:{show_target_humidity_control:"Contrôle d'humidité ?"},climate:{show_temperature_control:"Contrôle de la température?",hvac_modes:"Modes du thermostat"},number:{display_mode:"Mode d'affichage",display_mode_list:{default:"Par défaut (Curseur)",slider:"Curseur",buttons:"Boutons"}}},chip:{sub_element_editor:{title:'Éditeur de "chip"'},conditional:{chip:"Chip"},"chip-picker":{chips:'"Chips"',add:'Ajouter une "chip"',edit:"Modifier",clear:"Effacer",select:'Sélectionner une "chip"',types:{action:"Action","alarm-control-panel":"Alarme",back:"Retour",conditional:"Conditionnel",entity:"Entité",light:"Lumière",menu:"Menu",spacer:"Espacement",template:"Template",weather:"Météo"}}}},Mi={editor:Oi},ji={form:{color_picker:{values:{default:"צבע ברירת מחדל"}},info_picker:{values:{default:"מידע ברירת מחדל",name:"שם",state:"מצב","last-changed":"שונה לאחרונה","last-updated":"עודכן לאחרונה",none:"ריק"}},layout_picker:{values:{default:"סידור ברירת מחדל",vertical:"סידור מאונך",horizontal:"סידור מאוזן"}},alignment_picker:{values:{default:"יישור ברירת מחדל",start:"התחלה",end:"סוף",center:"אמצע",justify:"מוצדק"}}},card:{generic:{icon_color:"צבע אייקון",layout:"סידור",fill_container:"מלא גבולות",primary_info:"מידע ראשי",secondary_info:"מידע מישני",content_info:"תוכן",use_entity_picture:"השתמש בתמונת ישות",collapsible_controls:"הסתר שליטה כשאר מכובה",icon_animation:"הנפש אייקון"},light:{show_brightness_control:"שליטה בבהירות?",use_light_color:"השתמש בצבע האור",show_color_temp_control:"הצג פקד גוון תאורה?",show_color_control:"הצג פקד צבע",incompatible_controls:"יתכן וחלק מהכפתורים לא יופיעו אם התאורה אינה תומכת בתכונה."},fan:{show_percentage_control:"שליטה באחוז?",show_oscillate_control:"שליטה בהתנדנדות?"},cover:{show_buttons_control:"הצג כפתורי שליטה",show_position_control:"הצג פקדי מיקום"},template:{primary:"מידע ראשי",secondary:"מידע מישני",multiline_secondary:"מידע מישני רב קווי",entity_extra:"משמש בתבניות ופעולות",content:"תוכן"},title:{title:"כותרת",subtitle:"כתובית"},chips:{alignment:"יישור"},weather:{show_conditions:"הצג תנאים?",show_temperature:"הצג טמפרטורה?"},update:{show_buttons_control:"הצג כפתורי שליטה?"},vacuum:{commands:"פקודות",icon_animation:"הנפשת אייקון"},"media-player":{use_media_info:"השתמש במידע מדיה",use_media_artwork:"השתמש באומנות מדיה",show_volume_level:"הצג שליטת ווליום",media_controls:"שליטה במדיה",media_controls_list:{on_off:"הדלק/כבה",shuffle:"ערבב",previous:"רצועה קודמת",play_pause_stop:"נגן/השהה/הפסק",next:"רצועה הבאה",repeat:"חזרה"},volume_controls:"שליטה בווליום",volume_controls_list:{volume_buttons:"כפתורי ווליום",volume_set:"רמת ווליום",volume_mute:"השתק"}},lock:{lock:"נעל",unlock:"בטל נעילה",open:"פתח"},humidifier:{show_target_humidity_control:"הצג פקדי לחות"}},chip:{sub_element_editor:{title:"עורך שבב"},conditional:{chip:"שבב"},"chip-picker":{chips:"שבבים",add:"הוסף שבב",edit:"ערוך",clear:"נקה",select:"בחר שבב",types:{action:"פעולה","alarm-control-panel":"אזעקה",back:"חזור",conditional:"מותנה",entity:"ישות",light:"אור",menu:"תפריט",template:"תבנית",weather:"מזג אוויר"}}}},Di={editor:ji},Li={form:{color_picker:{values:{default:"Alapértelmezett szín"}},info_picker:{values:{default:"Alepértelmezett információ",name:"Név",state:"Állapot","last-changed":"Utoljára módosítva","last-updated":"Utoljára frissítve",none:"Egyik sem"}},icon_type_picker:{values:{default:"Alapértelmezett típus",icon:"Ikon","entity-picture":"Entitás kép",none:"Egyik sem"}},layout_picker:{values:{default:"Alapértelmezet elrendezés",vertical:"Függőleges elrendezés",horizontal:"Vízszintes elrendezés"}},alignment_picker:{values:{default:"Alapértelmezett rendezés",start:"Kezdete",end:"Vége",center:"Közepe",justify:"Sorkizárt"}}},card:{generic:{icon_color:"Ikon szín",layout:"Elrendezés",fill_container:"Tároló kitöltése",primary_info:"Elsődleges információ",secondary_info:"Másodlagos információ",icon_type:"Ikon típus",content_info:"Tartalom",use_entity_picture:"Entitás kép használata",collapsible_controls:"Vezérlők összezárása kikapcsolt állapotban",icon_animation:"Ikon animálása aktív állapotban"},light:{show_brightness_control:"Fényerő vezérlő",use_light_color:"Fény szín használata",show_color_temp_control:"Színhőmérséklet vezérlő",show_color_control:"Szín vezérlő",incompatible_controls:"Azok a vezérlők nem lesznek megjelenítve, amelyeket a fényforrás nem támogat."},fan:{show_percentage_control:"Százalékos vezérlő",show_oscillate_control:"Oszcilláció vezérlő"},cover:{show_buttons_control:"Vezérlő gombok",show_position_control:"Pozíció vezérlő",show_tilt_position_control:"Dőlésszög szabályzó"},template:{primary:"Elsődleges információ",secondary:"Másodlagos információ",multiline_secondary:"Másodlagost több sorba?",entity_extra:"Műveletek és sablonok használatakor",content:"Tartalom",badge_icon:"Jelvény ikon",badge_color:"Jelvény szín",picture:"Kép (lecseréli az ikont)"},title:{title:"Fejléc",subtitle:"Alcím",title_tap_action:"Fejlécre koppintáskor",subtitle_tap_action:"Alcímre koppintáskor"},chips:{alignment:"Rendezés"},weather:{show_conditions:"Állapotok",show_temperature:"Hőmérséklet"},update:{show_buttons_control:"Vezérlő gombok"},vacuum:{commands:"Utasítások",commands_list:{on_off:"Ki/Bekapcsolás"}},"media-player":{use_media_info:"Média infó használata",use_media_artwork:"Média borító használata",show_volume_level:"Hangerő mutatása",media_controls:"Média vezérlők",media_controls_list:{on_off:"Ki/bekapcsolás",shuffle:"Véletlen lejátszás",previous:"Előző szám",play_pause_stop:"Lejátszás/szünet/állj",next:"Következő szám",repeat:"Ismétlés módja"},volume_controls:"Hangerő vezérlők",volume_controls_list:{volume_buttons:"Hangerő gombok",volume_set:"Hangerő szint",volume_mute:"Némítás"}},lock:{lock:"Zár",unlock:"Nyit",open:"Nyitva"},humidifier:{show_target_humidity_control:"Páratartalom vezérlő"},climate:{show_temperature_control:"Hőmérséklet vezérlő",hvac_modes:"HVAC mód"},number:{display_mode:"Megjelenítési mód",display_mode_list:{default:"Alepértelmezett (csúszka)",slider:"Csúszka",buttons:"Gombok"}}},chip:{sub_element_editor:{title:"Chip szerkesztő"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chip-ek",add:"Chip hozzáadása",edit:"Szerkesztés",clear:"Ürítés",select:"Chip kiválasztása",types:{action:"Művelet","alarm-control-panel":"Riasztó",back:"Vissza",conditional:"Feltételes",entity:"Entitás",light:"Fényforrás",menu:"Menü",spacer:"Térköz",template:"Sablon",weather:"Időjárás"}}}},Pi={not_found:"Entitás nem található"},Ni={editor:Li,card:Pi},Ri={form:{color_picker:{values:{default:"Warna bawaan"}},info_picker:{values:{default:"Informasi bawaan",name:"Nama",state:"Status","last-changed":"Terakhir Diubah","last-updated":"Terakhir Diperbarui",none:"Tidak ada"}},icon_type_picker:{values:{default:"Tipe bawaan",icon:"Ikon","entity-picture":"Gambar entitas",none:"Tidak ada"}},layout_picker:{values:{default:"Tata letak bawaan",vertical:"Tata letak vertikal",horizontal:"Tata letak horizontal"}},alignment_picker:{values:{default:"Perataan bawaan",start:"Awal",end:"Akhir",center:"Tengah",justify:"Rata kanan-kiri"}}},card:{generic:{icon_color:"Warna ikon",layout:"Tata letak",fill_container:"Isi kontainer",primary_info:"Informasi primer",secondary_info:"Informasi sekunder",icon_type:"Tipe ikon",content_info:"Konten",use_entity_picture:"Gunakan gambar entitas?",collapsible_controls:"Sembunyikan kontrol saat mati",icon_animation:"Animasikan ikon saat aktif?"},light:{show_brightness_control:"Kontrol kecerahan?",use_light_color:"Gunakan warna lampu",show_color_temp_control:"Kontrol suhu warna?",show_color_control:"Kontrol warna?",incompatible_controls:"Beberapa kontrol mungkin tidak ditampilkan jika lampu Anda tidak mendukung fitur tersebut."},fan:{show_percentage_control:"Kontrol persentase?",show_oscillate_control:"Kontrol osilasi?"},cover:{show_buttons_control:"Tombol kontrol?",show_position_control:"Kontrol posisi?",show_tilt_position_control:"Kontrol kemiringan?"},template:{primary:"Informasi primer",secondary:"Informasi sekunder",multiline_secondary:"Info sekunder multibaris?",entity_extra:"Digunakan dalam templat dan tindakan",content:"Konten",badge_icon:"Ikon lencana",badge_color:"Warna lencana",picture:"Gambar (akan menggantikan ikon)"},title:{title:"Judul",subtitle:"Subjudul",title_tap_action:"Tindakan ketuk judul",subtitle_tap_action:"Tindakan ketuk subjudul"},chips:{alignment:"Perataan"},weather:{show_conditions:"Kondisi?",show_temperature:"Suhu?"},update:{show_buttons_control:"Tombol kontrol?"},vacuum:{commands:"Perintah",commands_list:{on_off:"Nyalakan/Matikan"}},"media-player":{use_media_info:"Gunakan info media",use_media_artwork:"Gunakan gambar seni media",show_volume_level:"Tampilkan level volume",media_controls:"Kontrol media",media_controls_list:{on_off:"Nyalakan/Matikan",shuffle:"Acak",previous:"Lagu sebelumnya",play_pause_stop:"Putar/jeda/stop",next:"Lagu berikutnya",repeat:"Mode pengulangan"},volume_controls:"Kontrol volume",volume_controls_list:{volume_buttons:"Tombol volume",volume_set:"Level volume",volume_mute:"Bisukan"}},lock:{lock:"Kunci",unlock:"Buka kunci",open:"Buka"},humidifier:{show_target_humidity_control:"Kontrol kelembapan?"},climate:{show_temperature_control:"Kontrol suhu?",hvac_modes:"Mode HVAC"},number:{display_mode:"Mode Tampilan",display_mode_list:{default:"Bawaan (geser)",slider:"Geser",buttons:"Tombol"}}},chip:{sub_element_editor:{title:"Editor cip"},conditional:{chip:"Cip"},"chip-picker":{chips:"Cip",add:"Tambah cip",edit:"Edit",clear:"Hapus",select:"Pilih cip",types:{action:"Tindakan","alarm-control-panel":"Alarm",back:"Kembali",conditional:"Kondisional",entity:"Entitas",light:"Lampu",menu:"Menu",spacer:"Pemisah",template:"Templat",weather:"Cuaca"}}}},Fi={not_found:"Entitas tidak ditemukan"},Vi={editor:Ri,card:Fi},Bi={form:{color_picker:{values:{default:"Colore predefinito"}},info_picker:{values:{default:"Informazione predefinita",name:"Nome",state:"Stato","last-changed":"Ultimo cambiamento","last-updated":"Ultimo aggiornamento",none:"Nessuno"}},icon_type_picker:{values:{default:"Tipo predefinito",icon:"Icona","entity-picture":"Immagine dell'entità",none:"Nessuna"}},layout_picker:{values:{default:"Disposizione predefinita",vertical:"Disposizione verticale",horizontal:"Disposizione orizzontale"}},alignment_picker:{values:{default:"Allineamento predefinito",start:"Inizio",end:"Fine",center:"Centro",justify:"Giustificato"}}},card:{generic:{icon_color:"Colore dell'icona",layout:"Disposizione",fill_container:"Riempi il contenitore",primary_info:"Informazione primaria",secondary_info:"Informazione secondaria",icon_type:"Tipo icona",content_info:"Contenuto",use_entity_picture:"Usa l'immagine dell'entità",collapsible_controls:"Nascondi i controlli quando spento",icon_animation:"Anima l'icona quando attiva"},light:{use_light_color:"Usa il colore della luce",show_brightness_control:"Controllo luminosità",show_color_temp_control:"Controllo temperatura",show_color_control:"Controllo colore",incompatible_controls:"Alcuni controlli potrebbero non essere mostrati se la tua luce non li supporta."},fan:{show_percentage_control:"Controllo potenza",show_oscillate_control:"Controllo oscillazione"},cover:{show_buttons_control:"Pulsanti di controllo",show_position_control:"Controllo percentuale apertura",show_tilt_position_control:"Controllo percentuale inclinazione"},template:{primary:"Informazione primaria",secondary:"Informazione secondaria",multiline_secondary:"Abilita frasi multilinea",entity_extra:"Usato in templates ed azioni",content:"Contenuto",badge_icon:"Icona del badge",badge_color:"Colore del badge",picture:"Immagine (sostituirà l'icona)"},title:{title:"Titolo",subtitle:"Sottotitolo",title_tap_action:"Azione di tap sul titolo",subtitle_tap_action:"Azione di tap sul sottotitolo"},chips:{alignment:"Allineamento"},weather:{show_conditions:"Condizioni",show_temperature:"Temperatura"},update:{show_buttons_control:"Pulsanti di controllo"},vacuum:{commands:"Comandi",commands_list:{on_off:"Accendi/Spegni"}},"media-player":{use_media_info:"Mostra le informazioni della sorgente",use_media_artwork:"Usa la copertina della sorgente",show_volume_level:"Mostra volume",media_controls:"Controlli media",media_controls_list:{on_off:"Accendi/Spegni",shuffle:"Riproduzione casuale",previous:"Traccia precedente",play_pause_stop:"Play/Pausa/Stop",next:"Traccia successiva",repeat:"Ciclo continuo"},volume_controls:"Controlli del Volume",volume_controls_list:{volume_buttons:"Bottoni del volume",volume_set:"Livello del volume",volume_mute:"Silenzia"}},lock:{lock:"Blocca",unlock:"Sblocca",open:"Aperto"},humidifier:{show_target_humidity_control:"Controllo umidità"},climate:{show_temperature_control:"Controllo della temperatura?",hvac_modes:"Modalità del termostato"},number:{display_mode:"Modalità di visualizzazione",display_mode_list:{default:"Predefinito (cursore)",slider:"Cursore",buttons:"Pulsanti"}}},chip:{sub_element_editor:{title:"Editor di chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Aggiungi chip",edit:"Modifica",clear:"Rimuovi",select:"Seleziona chip",types:{action:"Azione","alarm-control-panel":"Allarme",back:"Pulsante indietro",conditional:"Condizione",entity:"Entità",light:"Luce",menu:"Menù",spacer:"Distanziere",template:"Modello",weather:"Meteo"}}}},Ui={not_found:"Entità non trovata"},Hi={editor:Bi,card:Ui},Yi={form:{color_picker:{values:{default:"기본 색"}},info_picker:{values:{default:"기본 정보",name:"이름",state:"상태","last-changed":"마지막 변경","last-updated":"마지막 업데이트",none:"없음"}},icon_type_picker:{values:{default:"기본 타입",icon:"아이콘","entity-picture":"엔티티 사진",none:"없음"}},layout_picker:{values:{default:"기본 레이아웃",vertical:"수직 레이아웃",horizontal:"수평 레이아웃"}},alignment_picker:{values:{default:"기본 정렬",start:"시작",end:"끝",center:"중앙",justify:"행 정렬"}}},card:{generic:{icon_color:"아이콘 색",layout:"레이아웃",fill_container:"콘테이너 채우기",primary_info:"기본 정보",secondary_info:"보조 정보",icon_type:"아이콘 타입",content_info:"내용 정보",use_entity_picture:"엔티티 사진 사용",collapsible_controls:"꺼져있을 때 컨트롤 접기",icon_animation:"활성화 시 아이콘 애니메이션 사용"},light:{show_brightness_control:"밝기 컨트롤 표시",use_light_color:"조명 색 사용",show_color_temp_control:"색 온도 컨트롤 표시",show_color_control:"색 컨트롤 표시",incompatible_controls:"조명이 기능을 지원하지 않는 경우 일부 컨트롤이 표시되지 않을 수 있습니다."},fan:{show_percentage_control:"퍼센트 컨트롤",show_oscillate_control:"오실레이트 컨트롤"},cover:{show_buttons_control:"컨트롤 버튼 표시",show_position_control:"위치 컨트롤 표시",show_tilt_position_control:"기울기 컨트롤 표시"},template:{primary:"기본 정보",secondary:"보조 정보",multiline_secondary:"Multiline secondary?",entity_extra:"템플릿 및 작업에 사용",content:"내용",badge_icon:"뱃지 아이콘",badge_color:"뱃지 색",picture:"그림 (아이콘 대체)"},title:{title:"제목",subtitle:"부제목",title_tap_action:"제목 탭 액션",subtitle_tap_action:"부제목 탭 액션"},chips:{alignment:"정렬"},weather:{show_conditions:"조건 표시",show_temperature:"온도 표시"},update:{show_buttons_control:"컨트롤 버튼 표시"},vacuum:{commands:"명령어",commands_list:{on_off:"켜기/끄기"}},"media-player":{use_media_info:"미디어 정보 사용",use_media_artwork:"미디어 아트워크 사용",show_volume_level:"볼륨 레벨 표시",media_controls:"미디어 컨트롤",media_controls_list:{on_off:"켜기/끄기",shuffle:"섞기",previous:"이전 트랙",play_pause_stop:"재생/일시 정지/정지",next:"다음 트랙",repeat:"반복 모드"},volume_controls:"볼륨 컨트롤",volume_controls_list:{volume_buttons:"볼륨 버튼",volume_set:"볼륨 레벨",volume_mute:"음소거"}},lock:{lock:"잠금",unlock:"잠금 해제",open:"열기"},humidifier:{show_target_humidity_control:"습도 조절 표시"},climate:{show_temperature_control:"온도 조절 표시",hvac_modes:"HVAC 모드"}},chip:{sub_element_editor:{title:"칩 에디터"},conditional:{chip:"칩"},"chip-picker":{chips:"칩",add:"칩 추가",edit:"수정",clear:"클리어",select:"칩 선택",types:{action:"액션","alarm-control-panel":"알람",back:"이전",conditional:"Conditional",entity:"엔티티",light:"조명",menu:"메뉴",template:"템플릿",weather:"날씨"}}}},Wi={editor:Yi},Xi={form:{color_picker:{values:{default:"Standard farge"}},info_picker:{values:{default:"Standard informasjon",name:"Navn",state:"Tilstand","last-changed":"Sist endret","last-updated":"Sist oppdatert",none:"Ingen"}},layout_picker:{values:{default:"Standardoppsett",vertical:"Vertikalt oppsett",horizontal:"Horisontalt oppsett"}},alignment_picker:{values:{default:"Standard justering",start:"Start",end:"Slutt",center:"Senter",justify:"Bekreft"}}},card:{generic:{icon_color:"Ikon farge",layout:"Oppsett",primary_info:"Primærinformasjon",secondary_info:"Sekundærinformasjon",content_info:"Innhold",use_entity_picture:"Bruk enhetsbilde?",icon_animation:"Animer ikon når aktivt?"},light:{show_brightness_control:"Lysstyrkekontroll?",use_light_color:"Bruk lys farge",show_color_temp_control:"Temperatur fargekontroll?",show_color_control:"Fargekontroll?",incompatible_controls:"Noen kontroller vises kanskje ikke hvis lyset ditt ikke støtter denne funksjonen."},fan:{show_percentage_control:"Prosentvis kontroll?",show_oscillate_control:"Oscillerende kontroll?"},cover:{show_buttons_control:"Kontollere med knapper?",show_position_control:"Posisjonskontroll?"},template:{primary:"Primærinformasjon",secondary:"Sekundærinformasjon",multiline_secondary:"Multiline sekundær?",entity_extra:"Brukes i maler og handlinger",content:"Inhold"},title:{title:"Tittel",subtitle:"Undertekst"},chips:{alignment:"Justering"},weather:{show_conditions:"Forhold?",show_temperature:"Temperatur?"},vacuum:{commands:"Kommandoer"}},chip:{sub_element_editor:{title:"Chip redaktør"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Legg til chip",edit:"Endre",clear:"Klare",select:"Velg chip",types:{action:"Handling","alarm-control-panel":"Alarm",back:"Tilbake",conditional:"Betinget",entity:"Entitet",light:"Lys",menu:"Meny",template:"Mal",weather:"Vær"}}}},Ki={editor:Xi},qi={form:{color_picker:{values:{default:"Standaard kleur"}},info_picker:{values:{default:"Standaard informatie",name:"Naam",state:"Staat","last-changed":"Laatst gewijzigd","last-updated":"Laatst bijgewerkt",none:"Geen"}},icon_type_picker:{values:{default:"Standaard icoon type",icon:"Icoon","entity-picture":"Entiteit afbeelding",none:"Geen"}},layout_picker:{values:{default:"Standaard lay-out",vertical:"Verticale lay-out",horizontal:"Horizontale lay-out"}},alignment_picker:{values:{default:"Standaard uitlijning",start:"Begin",end:"Einde",center:"Midden",justify:"Uitlijnen "}}},card:{generic:{icon_color:"Icoon kleur",layout:"Lay-out",fill_container:"Vul container",primary_info:"Primaire informatie",secondary_info:"Secundaire informatie",icon_type:"Icoon type",content_info:"Inhoud",use_entity_picture:"Gebruik entiteit afbeelding",collapsible_controls:"Bedieningselementen verbergen wanneer uitgeschakeld",icon_animation:"Pictogram animeren indien actief"},light:{show_brightness_control:"Bediening helderheid",use_light_color:"Gebruik licht kleur",show_color_temp_control:"Bediening kleurtemperatuur",show_color_control:"Bediening kleur",incompatible_controls:"Sommige bedieningselementen worden mogelijk niet weergegeven als uw lamp deze functie niet ondersteunt."},fan:{show_percentage_control:"Bediening middels percentage",show_oscillate_control:"Bediening oscillatie"},cover:{show_buttons_control:"Toon knoppen",show_position_control:"Toon positie bediening",show_tilt_position_control:"Toon tilt control"},template:{primary:"Primaire informatie",secondary:"Secundaire informatie",multiline_secondary:"Secundaire informatie op meerdere lijnen weergeven",entity_extra:"Gebruikt in sjablonen en acties",content:"Inhoud",badge_icon:"Badge icoon",badge_color:"Badge kleur",picture:"Afbeelding (zal het icoon vervangen)"},title:{title:"Titel",subtitle:"Ondertitel",title_tap_action:"Titel tik actie",subtitle_tap_action:"Ondertitel tik actie"},chips:{alignment:"Uitlijning"},weather:{show_conditions:"Weerbeeld",show_temperature:"Temperatuur"},update:{show_buttons_control:"Bedieningsknoppen"},vacuum:{commands:"Commando's",commands_list:{on_off:"Zet aan/uit"}},"media-player":{use_media_info:"Gebruik media informatie",use_media_artwork:"Gebruik media omslag",show_volume_level:"Toon volumeniveau",media_controls:"Mediabediening",media_controls_list:{on_off:"zet aan/uit",shuffle:"Shuffle",previous:"Vorige nummer",play_pause_stop:"Speel/pauze/stop",next:"Volgende nummer",repeat:"Herhalen"},volume_controls:"Volumeregeling",volume_controls_list:{volume_buttons:"Volume knoppen",volume_set:"Volumeniveau",volume_mute:"Dempen"}},lock:{lock:"Vergrendel",unlock:"Ontgrendel",open:"Open"},humidifier:{show_target_humidity_control:"Vochtigheid controle?"},climate:{show_temperature_control:"Temperatuur controle",hvac_modes:"HVAC Modes"},number:{display_mode:"Weergave Modus",display_mode_list:{default:"Standaard (schuifbalk)",slider:"Schuifbalk",buttons:"Knoppen"}}},chip:{sub_element_editor:{title:"Chip editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Toevoegen chip",edit:"Bewerk",clear:"Maak leeg",select:"Selecteer chip",types:{action:"Actie","alarm-control-panel":"Alarm",back:"Terug",conditional:"Voorwaardelijk",entity:"Entiteit",light:"Licht",menu:"Menu",spacer:"Afstandhouder",template:"Sjabloon",weather:"Weer"}}}},Gi={not_found:"Entiteit niet gevonden"},Zi={editor:qi,card:Gi},Ji={form:{color_picker:{values:{default:"Domyślny kolor"}},info_picker:{values:{default:"Domyślne informacje",name:"Nazwa",state:"Stan","last-changed":"Ostatnia zmiana","last-updated":"Ostatnia aktualizacja",none:"Brak"}},icon_type_picker:{values:{default:"Domyślny typ",icon:"Ikona","entity-picture":"Obraz encji",none:"Brak"}},layout_picker:{values:{default:"Układ domyślny",vertical:"Układ pionowy",horizontal:"Układ poziomy"}},alignment_picker:{values:{default:"Wyrównanie domyślne",start:"Wyrównanie do lewej",end:"Wyrównanie do prawej",center:"Wyśrodkowanie",justify:"Justowanie"}}},card:{generic:{icon_color:"Kolor ikony",layout:"Układ",fill_container:"Wypełnij zawartością",primary_info:"Informacje główne",secondary_info:"Informacje drugorzędne",icon_type:"Typ ikony",content_info:"Zawartość",use_entity_picture:"Użyć obrazu encji?",collapsible_controls:"Zwiń sterowanie, jeśli wyłączone",icon_animation:"Animować, gdy aktywny?"},light:{show_brightness_control:"Sterowanie jasnością?",use_light_color:"Użyj koloru światła",show_color_temp_control:"Sterowanie temperaturą światła?",show_color_control:"Sterowanie kolorami?",incompatible_controls:"Niektóre funkcje są niewidoczne, jeśli światło ich nie obsługuje."},fan:{show_percentage_control:"Sterowanie procentowe?",show_oscillate_control:"Sterowanie oscylacją?"},cover:{show_buttons_control:"Przyciski sterujące?",show_position_control:"Sterowanie położeniem?",show_tilt_position_control:"Sterowanie poziomem otwarcia?"},template:{primary:"Informacje główne",secondary:"Informacje drugorzędne",multiline_secondary:"Drugorzędne wielowierszowe?",entity_extra:"Używane w szablonach i akcjach",content:"Zawartość",badge_icon:"Ikona odznaki",badge_color:"Kolor odznaki",picture:"Obraz (zamiast ikony)"},title:{title:"Tytuł",subtitle:"Podtytuł"},chips:{alignment:"Wyrównanie"},weather:{show_conditions:"Warunki?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Przyciski sterujące?"},vacuum:{commands:"Polecenia"},"media-player":{use_media_info:"Użyj informacji o multimediach",use_media_artwork:"Użyj okładek multimediów",show_volume_level:"Wyświetl poziom głośności",media_controls:"Sterowanie multimediami",media_controls_list:{on_off:"Włącz/wyłącz",shuffle:"Losowo",previous:"Poprzednie nagranie",play_pause_stop:"Odtwórz/Pauza/Zatrzymaj",next:"Następne nagranie",repeat:"Powtarzanie"},volume_controls:"Sterowanie głośnością",volume_controls_list:{volume_buttons:"Przyciski głośności",volume_set:"Poziom głośności",volume_mute:"Wycisz"}},lock:{lock:"Zablokuj",unlock:"Odblokuj",open:"Otwórz"},humidifier:{show_target_humidity_control:"Sterowanie wilgotnością?"},climate:{show_temperature_control:"Sterowanie temperaturą?",hvac_modes:"Tryby urządzenia"}},chip:{sub_element_editor:{title:"Edytor czipów"},conditional:{chip:"Czip"},"chip-picker":{chips:"Czipy",add:"Dodaj czip",edit:"Edytuj",clear:"Wyczyść",select:"Wybierz czip",types:{action:"Akcja","alarm-control-panel":"Alarm",back:"Wstecz",conditional:"Warunkowy",entity:"Encja",light:"Światło",menu:"Menu",spacer:"Odstęp",template:"Szablon",weather:"Pogoda"}}}},Qi={editor:Ji},to={form:{color_picker:{values:{default:"Cor padrão"}},info_picker:{values:{default:"Informação padrão",name:"Nome",state:"Estado","last-changed":"Última alteração","last-updated":"Última atualização",none:"Nenhum"}},icon_type_picker:{values:{default:"Tipo padrão",icon:"Ícone","entity-picture":"Imagem da entidade",none:"Nenhum"}},layout_picker:{values:{default:"Layout padrão",vertical:"Layout vertical",horizontal:"Layout horizontal"}},alignment_picker:{values:{default:"Alinhamento padrão",start:"Início",end:"Fim",center:"Centro",justify:"Justificado"}}},card:{generic:{color:"Cor",icon_color:"Cor do ícone",layout:"Layout",fill_container:"Prencher",primary_info:"Informação primária",secondary_info:"Informação secundária",icon_type:"Tipo do ícone",content_info:"Conteúdo",use_entity_picture:"Usar imagem da entidade?",collapsible_controls:"Recolher controles quando desligado",icon_animation:"Animar ícone quando ativo?"},light:{show_brightness_control:"Controle de brilho?",use_light_color:"Usar cor da luz",show_color_temp_control:"Controle de temperatura de cor?",show_color_control:"Controle de cor?",incompatible_controls:"Alguns controles podem não ser exibidos se sua luz não suportar o recurso."},fan:{show_percentage_control:"Controle de porcentagem?",show_oscillate_control:"Controle de oscilação?"},cover:{show_buttons_control:"Botões de controle?",show_position_control:"Controle de posição?",show_tilt_position_control:"Controle de inclinação?"},template:{primary:"Informação primária",secondary:"Informação secundária",multiline_secondary:"Multilinha secundária?",entity_extra:"Usado em modelos e ações",label:"Label",content:"Conteúdo",badge_icon:"Ícone do badge",badge_color:"Cor do badge",picture:"Imagem (irá substituir o ícone)"},title:{title:"Título",subtitle:"Legenda",title_tap_action:"Ação de toque no título",subtitle_tap_action:"Ação de toque na legenda"},chips:{alignment:"Alinhamento"},weather:{show_conditions:"Condições?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Botões de controle?"},vacuum:{commands:"Comandos",commands_list:{on_off:"Ligar/Desligar"}},"media-player":{use_media_info:"Usar informação da mídia",use_media_artwork:"Usar arte da mídia",show_volume_level:"Mostrar nível de volume",media_controls:"Controles de mídia",media_controls_list:{on_off:"Ligar/Desligar",shuffle:"Embaralhar",previous:"Faixa anterior",play_pause_stop:"Reproduzir/pausar/parar",next:"Próxima faixa",repeat:"Modo repetição"},volume_controls:"Controles de volume",volume_controls_list:{volume_buttons:"Botões de volume",volume_set:"Nível de volume",volume_mute:"Mudo"}},lock:{lock:"Bloquear",unlock:"Desbloquear",open:"Abrir"},humidifier:{show_target_humidity_control:"Controle de umidade?"},climate:{show_temperature_control:"Controle de temperatura?",hvac_modes:"Modos do HVAC"},number:{display_mode:"Modo de exibição",display_mode_list:{default:"Padrão (deslizante)",slider:"Deslizante",buttons:"Botões"}}},chip:{sub_element_editor:{title:"Editor de chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Adicionar chip",edit:"Editar",clear:"Limpar",select:"Selecionar chip",types:{action:"Ação","alarm-control-panel":"Alarme",back:"Voltar",conditional:"Condicional",entity:"Entidade",light:"Luz",menu:"Menu",spacer:"Espaçador",template:"Template",weather:"Clima"}}}},eo={not_found:"Entidade não encontrada"},io={editor:to,card:eo},oo={form:{color_picker:{values:{default:"Cor padrão"}},info_picker:{values:{default:"Informações padrão",name:"Nome",state:"Estado","last-changed":"Última alteração","last-updated":"Última atualização",none:"Nenhum"}},layout_picker:{values:{default:"Layout padrão",vertical:"Layout vertical",horizontal:"Layout horizontal"}},alignment_picker:{values:{default:"Padrão (inicio)",end:"Fim",center:"Centrado",justify:"Justificado"}}},card:{generic:{icon_color:"Cor do ícone?",layout:"Layout",primary_info:"Informações primárias",secondary_info:"Informações secundárias",use_entity_picture:"Usar imagem da entidade?",icon_animation:"Animar ícone quando ativo?"},light:{show_brightness_control:"Mostrar controle de brilho?",use_light_color:"Usar cor da luz?",show_color_temp_control:"Mostrar controle de temperatura?",show_color_control:"Mostrar controle de cor?",incompatible_controls:"Alguns controles podem não ser exibidos se a luz não suportar o recurso."},fan:{show_percentage_control:"Mostrar controle de porcentagem?",show_oscillate_control:"Mostrar controle de oscilação?"},cover:{show_buttons_control:"Mostrar botões?",show_position_control:"Mostrar controle de posição?"},template:{primary:"Informações primárias",secondary:"Informações secundárias",multiline_secondary:"Multilinha secundária?",content:"Conteúdo"},title:{title:"Título",subtitle:"Subtítulo"},chips:{alignment:"Alinhamento"},weather:{show_conditions:"Condições?",show_temperature:"Temperatura?"}},chip:{sub_element_editor:{title:"Editor de fichas"},conditional:{chip:"Ficha"},"chip-picker":{chips:"Fichas",add:"Adicionar ficha",edit:"Editar",clear:"Limpar",select:"Selecionar ficha",types:{action:"Ação","alarm-control-panel":"Alarme",back:"Voltar",conditional:"Condicional",entity:"Entidade",light:"Iluminação",menu:"Menu",template:"Modelo",weather:"Clima"}}}},no={editor:oo},ro={form:{color_picker:{values:{default:"Culoare implicită"}},info_picker:{values:{default:"Informație implicită",name:"Nume",state:"Stare","last-changed":"Ultima modificare","last-updated":"Ultima actulizare",none:"Niciuna"}},icon_type_picker:{values:{default:"Tip implicit",icon:"Pictogramă","entity-picture":"Imagine",none:"Niciuna"}},layout_picker:{values:{default:"Aranjare implicită",vertical:"Verticală",horizontal:"Orizontală"}},alignment_picker:{values:{default:"Aliniere implicită",start:"Stânga",end:"Dreapta",center:"Centrat",justify:"Umplere"}}},card:{generic:{icon_color:"Culoare pictogramă",layout:"Aranjare",fill_container:"Umplere container",primary_info:"Informație principală",secondary_info:"Informație secundară",icon_type:"Tip pictogramă",content_info:"Conținut",use_entity_picture:"Imagine?",collapsible_controls:"Restrângere la dezactivare"},light:{show_brightness_control:"Comandă pentru strălucire?",use_light_color:"Folosește culoarea luminii",show_color_temp_control:"Comandă pentru temperatură de culoare?",show_color_control:"Comandă pentru culoare?",incompatible_controls:"Unele comenzi ar putea să nu fie afișate dacă lumina nu suportă această caracteristică."},fan:{icon_animation:"Animare pictograma la activare?",show_percentage_control:"Comandă procent?",show_oscillate_control:"Comandă oscilație?"},cover:{show_buttons_control:"Comenzi pentru control?",show_position_control:"Comandă pentru poziție?",show_tilt_position_control:"Comandă pentru înclinare?"},template:{primary:"Informație principală",secondary:"Informație secundară",multiline_secondary:"Informație secundară pe mai multe linii?",entity_extra:"Folosită în șabloane și acțiuni",content:"Conținut",badge_icon:"Pictogramă insignă",badge_color:"Culoare insignă",picture:"Imagine (inlocuiește pictograma)"},title:{title:"Titlu",subtitle:"Subtitlu"},chips:{alignment:"Aliniere"},weather:{show_conditions:"Condiții?",show_temperature:"Temperatură?"},update:{show_buttons_control:"Comenzi control?"},vacuum:{commands:"Comenzi"},"media-player":{use_media_info:"Informații media",use_media_artwork:"Grafică media",show_volume_level:"Nivel volum",media_controls:"Comenzi media",media_controls_list:{on_off:"Pornit/Oprit",shuffle:"Amestecare",previous:"Pista anterioară",play_pause_stop:"Redare/Pauză/Stop",next:"Pista următoare",repeat:"Mod repetare"},volume_controls:"Comenzi volum",volume_controls_list:{volume_buttons:"Comenzi volum",volume_set:"Nivel volum",volume_mute:"Dezactivare sunet"}},lock:{lock:"Încuie",unlock:"Descuie",open:"Deschide"},humidifier:{show_target_humidity_control:"Comenzi umiditate?"},climate:{show_temperature_control:"Comenzi temperatură?",hvac_modes:"Moduri HVAC"}},chip:{sub_element_editor:{title:"Editor jeton"},conditional:{chip:"Jeton"},"chip-picker":{chips:"Jetoane",add:"Adaugă jeton",edit:"Modifică",clear:"Șterge",select:"Alege jeton",types:{action:"Acțiune","alarm-control-panel":"Alarmă",back:"Înapoi",conditional:"Condițional",entity:"Entitate",light:"Lumină",menu:"Meniu",template:"Șablon",weather:"Vreme"}}}},ao={editor:ro},so={form:{color_picker:{values:{default:"Цвет по умолчанию"}},info_picker:{values:{default:"По умолчанию",name:"Имя",state:"Статус","last-changed":"Последнее изменение","last-updated":"Последнее обновление",none:"Нет"}},icon_type_picker:{values:{default:"По умолчанию",icon:"Иконка","entity-picture":"Изображение",none:"Нет"}},layout_picker:{values:{default:"Расположение по умолчанию",vertical:"Вертикальное расположение",horizontal:"Горизонтальное расположение"}},alignment_picker:{values:{default:"Выравнивание по умолчанию",start:"К началу",end:"К концу",center:"По центру",justify:"На всю ширину"}}},card:{generic:{icon_color:"Цвет иконки",layout:"Расположение",fill_container:"Заполнение",primary_info:"Основная информация",secondary_info:"Второстепенная информация",icon_type:"Тип иконки",content_info:"Содержимое",use_entity_picture:"Использовать изображение объекта?",collapsible_controls:"Сворачивать элементы управления при выключении"},light:{show_brightness_control:"Управлять яркостью?",use_light_color:"Использовать текущий цвет света",show_color_temp_control:"Управлять цветовой температурой?",show_color_control:"Управлять цветом?",incompatible_controls:"Некоторые элементы управления могут не отображаться, если ваш светильник не поддерживает эти функции."},fan:{icon_animation:"Анимировать иконку когда включено?",show_percentage_control:"Управлять процентами?",show_oscillate_control:"Oscillate control?"},cover:{show_buttons_control:"Добавить кнопки управления?",show_position_control:"Управлять позицией?",show_tilt_position_control:"Управлять наклоном?"},template:{primary:"Основная информация",secondary:"Второстепенная информация",multiline_secondary:"Многострочная Второстепенная информация?",entity_extra:"Используется в шаблонах и действиях",content:"Содержимое",badge_icon:"Иконка значка",badge_color:"Цвет значка",picture:"Изображение (заменить иконку)"},title:{title:"Заголовок",subtitle:"Подзаголовок"},chips:{alignment:"Выравнивание"},weather:{show_conditions:"Условия?",show_temperature:"Температура?"},update:{show_buttons_control:"Кнопки управления?"},vacuum:{commands:"Команды"},"media-player":{use_media_info:"Использовать информацию с медиа-устройства",use_media_artwork:"Использовать обложку с медиа-устройства",show_volume_level:"Показать уровень громкости",media_controls:"Управление медиа-устройством",media_controls_list:{on_off:"Включение/выключение",shuffle:"Перемешивание",previous:"Предыдущий трек",play_pause_stop:"Воспроизведение/пауза/остановка",next:"Следующий трек",repeat:"Режим повтора"},volume_controls:"Регулятор громкости",volume_controls_list:{volume_buttons:"Кнопки громкости",volume_set:"Уровень громкости",volume_mute:"Без звука"}},lock:{lock:"Закрыто",unlock:"Разблокировано",open:"Открыто"},humidifier:{show_target_humidity_control:"Управлять целевым уровенем влажности?"},climate:{show_temperature_control:"Управлять целевой температурой?",hvac_modes:"Режимы работы"}},chip:{sub_element_editor:{title:"Редактор мини-карточек"},conditional:{chip:"Мини-карточка"},"chip-picker":{chips:"Мини-карточки",add:"Добавить мини-карточку",edit:"Изменить",clear:"Очистить",select:"Выбрать мини-карточку",types:{action:"Действие","alarm-control-panel":"Тревога",back:"Назад",conditional:"Условия",entity:"Объект",light:"Освещение",menu:"Меню",template:"Шаблон",weather:"Погода"}}}},lo={editor:so},co={form:{color_picker:{values:{default:"Privzeta barva"}},info_picker:{values:{default:"Privzete informacije",name:"Naziv",state:"Stanje","last-changed":"Zadnja sprememba","last-updated":"Zadnja posodobitev",none:"Brez"}},icon_type_picker:{values:{default:"Privzeta vrsta",icon:"Ikona","entity-picture":"Slika entitete",none:"Brez"}},layout_picker:{values:{default:"Privzeta postavitev",vertical:"Vertikalna postavitev",horizontal:"Horizontalna postavitev"}},alignment_picker:{values:{default:"Privzeta poravnava",start:"Pričetek",end:"Konec",center:"Center",justify:"Poravnava"}}},card:{generic:{icon_color:"Barva ikone",layout:"Postavitev",fill_container:"Zapolnitev prostora",primary_info:"Primarna informacija",secondary_info:"Sekundarna informacija",icon_type:"Vrsta ikone",content_info:"Vsebina",use_entity_picture:"Uporabi sliko entitete?",collapsible_controls:"Strni kontrolnike, ko so izklopljeni",icon_animation:"Animacija ikone, ko je aktivna?"},light:{show_brightness_control:"Nadzor svetlosti?",use_light_color:"Uporabi svetlo barvo",show_color_temp_control:"Nadzor temperature barve?",show_color_control:"Nadzor barv?",incompatible_controls:"Nekateri kontrolniki morda ne bodo prikazani, če vaša luč ne podpira te funkcije."},fan:{show_percentage_control:"Kontrola v odstotkih?",show_oscillate_control:"Kontrola nihanja?"},cover:{show_buttons_control:"Gumbi za upravljanje?",show_position_control:"Nadzor položaja?",show_tilt_position_control:"Nadzor nagiba?"},template:{primary:"Primarna informacija",secondary:"Sekundarna informacija",multiline_secondary:"Večvrstični sekundarni?",entity_extra:"Uporablja se v predlogah in dejanjih",content:"Vsebina",badge_icon:"Ikona značke",badge_color:"Barva značke",picture:"Slika (nadomestila bo ikono)"},title:{title:"Naziv",subtitle:"Podnaslov",title_tap_action:"Dejanje dotika naslova",subtitle_tap_action:"Dejanje dotika podnapisov"},chips:{alignment:"Poravnava"},weather:{show_conditions:"Pogoji?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Gumbi za upravljanje?"},vacuum:{commands:"Ukazi",commands_list:{on_off:"Vklop/izklop"}},"media-player":{use_media_info:"Uporabite informacije o medijih",use_media_artwork:"Uporabite medijsko umetniško delo",show_volume_level:"Pokaži raven glasnosti",media_controls:"Nadzor medijev",media_controls_list:{on_off:"Vklop/izklop",shuffle:"Naključno",previous:"Prejšnja skladba",play_pause_stop:"Predvajaj/pavza/ustavi",next:"Naslednja skladba",repeat:"Ponavljajoči način"},volume_controls:"Kontrole glasnosti",volume_controls_list:{volume_buttons:"Gumbi za glasnost",volume_set:"Raven glasnosti",volume_mute:"Tiho"}},lock:{lock:"Zaklepanje",unlock:"Odkleni",open:"Odprto"},humidifier:{show_target_humidity_control:"Nadzor vlažnosti?"},climate:{show_temperature_control:"Nadzor temperature?",hvac_modes:"HVAC načini"},number:{display_mode:"Način prikaza",display_mode_list:{default:"Privzeto (drsnik)",slider:"Drsnik",buttons:"Gumbi"}}},chip:{sub_element_editor:{title:"Urejevalnik čipov"},conditional:{chip:"Ćiš"},"chip-picker":{chips:"Čipi",add:"Dodaj čip",edit:"Uredi",clear:"Pobriši",select:"Izbira čipa",types:{action:"Dejanje","alarm-control-panel":"Alarm",back:"Nazaj",conditional:"Pogojno",entity:"Entiteta",light:"Svetloba",menu:"Meni",spacer:"Distančnik",template:"Predloga",weather:"Vreme"}}}},uo={not_found:"Entiteta ni najdena"},ho={editor:co,card:uo},mo={form:{color_picker:{values:{default:"Predvolená farba"}},info_picker:{values:{default:"Predvolené informácie",name:"Názov",state:"Stav","last-changed":"Posledná zmena","last-updated":"Posledná aktualizácia",none:"Žiadna"}},icon_type_picker:{values:{default:"Predvolený typ",icon:"Ikona","entity-picture":"Obrázok entity",none:"Žiadny"}},layout_picker:{values:{default:"Predvolené rozloženie",vertical:"Zvislé rozloženie",horizontal:"Vodorovné rozloženie"}},alignment_picker:{values:{default:"Predvolené zarovnanie",start:"Začiatok",end:"Koniec",center:"Stred",justify:"Vyplniť"}}},card:{generic:{icon_color:"Farba ikony",layout:"Rozloženie",fill_container:"Vyplniť priestor",primary_info:"Základné info",secondary_info:"Doplnkové info",icon_type:"Typ ikony",content_info:"Obsah",use_entity_picture:"Použiť obrázok entity?",collapsible_controls:"Skryť ovládanie v stave VYP.",icon_animation:"Animovaná ikona v stave ZAP?"},light:{show_brightness_control:"Ovládanie jasu?",use_light_color:"Použiť farbu svetla",show_color_temp_control:"Ovládanie teploty?",show_color_control:"Ovládanie farby?",incompatible_controls:"Niektoré ovládacie prvky sa nemusia zobraziť, pokiaľ ich svetlo nepodporuje."},fan:{show_percentage_control:"Ovládanie rýchlosti v percentách?",show_oscillate_control:"Ovládanie oscilácie?"},cover:{show_buttons_control:"Zobraziť ovládacie tlačidlá?",show_position_control:"Ovládanie pozície?",show_tilt_position_control:"Ovládanie natočenia?"},template:{primary:"Základné info",secondary:"Doplnkové info",multiline_secondary:"Viacriadkové doplnkové info?",entity_extra:"Použitá v šablónach a akciách",content:"Obsah",badge_icon:"Ikona odznaku",badge_color:"Farba odznaku",picture:"Obrázok (nahrádza ikonu)"},title:{title:"Nadpis",subtitle:"Podnadpis",title_tap_action:"Akcia klepnutia na názov",subtitle_tap_action:"Akcia klepnutia na titulky"},chips:{alignment:"Zarovnanie"},weather:{show_conditions:"Zobraziť podmienky?",show_temperature:"Zobraziť teplotu?"},update:{show_buttons_control:"Zobraziť ovládacie tlačidlá?"},vacuum:{commands:"Príkazy",commands_list:{on_off:"Zapnúť/Vypnúť"}},"media-player":{use_media_info:"Použiť info o médiu",use_media_artwork:"Použiť obrázok z média",show_volume_level:"Zobraziť úroveň hlasitosti",media_controls:"Ovládanie média",media_controls_list:{on_off:"Zap / Vyp",shuffle:"Premiešať",previous:"Predchádzajúca",play_pause_stop:"Spustiť/pauza/stop",next:"Ďalšia",repeat:"Opakovať"},volume_controls:"Ovládanie hlasitosti",volume_controls_list:{volume_buttons:"Tlačidlá hlasitosti",volume_set:"Úroveň hlasitosti",volume_mute:"Stlmiť"}},lock:{lock:"Zamknuté",unlock:"Odomknuté",open:"Otvorené"},humidifier:{show_target_humidity_control:"Ovládanie vlhkosti?"},climate:{show_temperature_control:"Ovládanie teploty?",hvac_modes:"HVAC mód"},number:{display_mode:"Režim zobrazenia",display_mode_list:{default:"Predvolené (posúvač)",slider:"Posúvač",buttons:"Tlačidlá"}}},chip:{sub_element_editor:{title:"Editor štítkov"},conditional:{chip:"Štítok"},"chip-picker":{chips:"Štítky",add:"Pridať štítok",edit:"Editovať",clear:"Vymazať",select:"Vybrať štítok",types:{action:"Akcia","alarm-control-panel":"Alarm",back:"Späť",conditional:"Podmienené",entity:"Entita",light:"Svetlo",menu:"Menu",spacer:"Medzera",template:"Šablóna",weather:"Počasie"}}}},po={not_found:"Entita nenájdená"},fo={editor:mo,card:po},go={form:{color_picker:{values:{default:"Standardfärg"}},info_picker:{values:{default:"Förvald information",name:"Namn",state:"Status","last-changed":"Sist ändrad","last-updated":"Sist uppdaterad",none:"Ingen"}},layout_picker:{values:{default:"Standard",vertical:"Vertikal",horizontal:"Horisontell"}},alignment_picker:{values:{default:"Standard (början)",end:"Slutet",center:"Centrerad",justify:"Anpassa"}}},card:{generic:{color:"Färg",icon_color:"Ikonens färg",layout:"Layout",icon_type:"Ikontyp",primary_info:"Primär information",secondary_info:"Sekundär information",use_entity_picture:"Använd enhetens bild?",collapsible_controls:"Dölj kontroller när enehten är av",icon_animation:"Animera ikonen när enheten är på?"},light:{show_brightness_control:"Styr ljushet?",use_light_color:"Styr ljusets färg",show_color_temp_control:"Styr färgtemperatur?",show_color_control:"Styr färg?",incompatible_controls:"Kontroller som inte stöds av enheten kommer inte visas"},fan:{show_percentage_control:"Procentuell kontroll?",show_oscillate_control:"Kontroll för oscillera?"},cover:{show_buttons_control:"Visa kontrollknappar?",show_position_control:"Visa positionskontroll?",show_tilt_position_control:"Visa lutningskontroll?"},template:{primary:"Primär information",secondary:"Sekundär information",multiline_secondary:"Sekundär med flera rader?",content:"Innehåll",picture:"Bild (ersätter ikonen)"},title:{title:"Rubrik",subtitle:"Underrubrik"},chips:{alignment:"Justering"},weather:{show_conditions:"Förhållanden?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Visa kontrollknappar?"},vacuum:{commands:"Kommandon"},climate:{show_temperature_control:"Temperaturkontroll?",hvac_modes:"HVAC-lägen"},"media-player":{use_media_artwork:"Visa mediaomslag",show_volume_level:"Volymkontroll",media_controls:"Mediakontroller",media_controls_list:{on_off:"Slå på/av",previous:"Föregående spår",play_pause_stop:"Spela/pausa/stoppa",next:"Nästa spår",repeat:"Upprepa"},volume_controls:"Volymkontroller",volume_controls_list:{volume_buttons:"Volymknappar",volume_set:"Volymnivå",volume_mute:"Ljud av"}},lock:{lock:"Lås",unlock:"Lås upp",open:"Öppna"}},chip:{sub_element_editor:{title:"Chipredigerare"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Lägg till chip",edit:"Redigera",clear:"Rensa",select:"Välj chip",types:{action:"Åtgärd","alarm-control-panel":"Alarm",back:"Bakåt",conditional:"Villkorad",entity:"Enhet",light:"Ljus",menu:"Meny",template:"Mall",weather:"Väder"}}}},_o={editor:go},vo={form:{color_picker:{values:{default:"Varsayılan renk"}},info_picker:{values:{default:"Varsayılan bilgi",name:"İsim",state:"Durum","last-changed":"Son Değişim","last-updated":"Son Güncelleme",none:"None"}},layout_picker:{values:{default:"Varsayılan düzen",vertical:"Dikey düzen",horizontal:"Yatay düzen"}},alignment_picker:{values:{default:"Varsayılan hizalama",start:"Sola yasla",end:"Sağa yasla",center:"Ortala",justify:"İki yana yasla"}}},card:{generic:{icon_color:"Simge renki",layout:"Düzen",primary_info:"Birinci bilgi",secondary_info:"İkinci bilgi",content_info:"İçerik",use_entity_picture:"Varlık resmi kullanılsın",icon_animation:"Aktif olduğunda simgeyi hareket ettir"},light:{show_brightness_control:"Parlaklık kontrolü",use_light_color:"Işık rengini kullan",show_color_temp_control:"Renk ısısı kontrolü",show_color_control:"Renk kontrolü",incompatible_controls:"Kullandığınız lamba bu özellikleri desteklemiyorsa bazı kontroller görüntülenemeyebilir."},fan:{show_percentage_control:"Yüzde kontrolü",show_oscillate_control:"Salınım kontrolü"},cover:{show_buttons_control:"Düğme kontrolleri",show_position_control:"Pozisyon kontrolü"},template:{primary:"Birinci bilgi",secondary:"İkinci bilgi",multiline_secondary:"İkinci bilgi çok satır olsun",entity_extra:"Şablonlarda ve eylemlerde kullanılsın",content:"İçerik"},title:{title:"Başlık",subtitle:"Altbaşlık"},chips:{alignment:"Hizalama"},weather:{show_conditions:"Hava koşulu",show_temperature:"Sıcaklık"},update:{show_buttons_control:"Düğme kontrolü"},vacuum:{commands:"Komutlar"}},chip:{sub_element_editor:{title:"Chip düzenleyici"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Chip ekle",edit:"Düzenle",clear:"Temizle",select:"Chip seç",types:{action:"Eylem","alarm-control-panel":"Alarm",back:"Geri",conditional:"Koşullu",entity:"Varlık",light:"Işık",menu:"Menü",template:"Şablon",weather:"Hava Durumu"}}}},bo={editor:vo},yo={form:{color_picker:{values:{default:"Колір за замовчуванням"}},info_picker:{values:{default:"Інформація за замовчуванням",name:"Назва",state:"Стан","last-changed":"Востаннє змінено","last-updated":"Востаннє оновлено",none:"Нічого"}},icon_type_picker:{values:{default:"За замовчуванням",icon:"Іконка","entity-picture":"Зображення сутності",none:"Нічого"}},layout_picker:{values:{default:"Розташування за замовчуванням",vertical:"Вертикальне розташування",horizontal:"Горизонтальне розташування"}},alignment_picker:{values:{default:"Вирівнювання за замовчуванням",start:"На початку",end:"В кінці",center:"По центру",justify:"Вирівняти"}}},card:{generic:{icon_color:"Колір іконки",layout:"Розташування",fill_container:"Заповнити контейнер",primary_info:"Головна інформація",secondary_info:"Додаткова інформація",icon_type:"Тип іконки",content_info:"Вміст",use_entity_picture:"Використовувати зображення сутності?",collapsible_controls:"Приховувати елементи керування коли вимкнено?",icon_animation:"Анімувати іконку при активації?"},light:{show_brightness_control:"Контроль яскравості?",use_light_color:"Використовувати колір світла",show_color_temp_control:"Керування температурою світла?",show_color_control:"Керування кольором світла?",incompatible_controls:"Деякі елементи керування можуть не відображатись якщо ваш пристрій не підтримує цю функцію."},fan:{show_percentage_control:"Керування швидкістю?",show_oscillate_control:"Керування повротом?"},cover:{show_buttons_control:"Кнопки керування?",show_position_control:"Керування позицією?",show_tilt_position_control:"Керування нахилом?"},template:{primary:"Головна інформація",secondary:"Додаткова інформація",multiline_secondary:"Багаторядкова додаткова інформація?",entity_extra:"Використовується в шаблонах та діях",content:"Вміст",badge_icon:"Іконка значка",badge_color:"Колір значка",picture:"Зображення (замінить іконку)"},title:{title:"Заголовок",subtitle:"Підзаголовок",title_tap_action:"Дія при дотику до заголовку",subtitle_tap_action:"Дія при дотику до підзаголовку"},chips:{alignment:"Вирівнювання"},weather:{show_conditions:"Умови?",show_temperature:"Температура?"},update:{show_buttons_control:"Кнопки керування?"},vacuum:{commands:"Команди",commands_list:{on_off:"Увімкнути/Вимкнути"}},"media-player":{use_media_info:"Використовувати інформацію медіа",use_media_artwork:"Використовувати зображення медіа",show_volume_level:"Показати рівень гучності",media_controls:"Керування медіа",media_controls_list:{on_off:"Увімкнути/Вимкнути",shuffle:"Перемішати",previous:"Попередній трек",play_pause_stop:"Відтворити/пауза/стоп",next:"Наступний трек",repeat:"Режим повторення"},volume_controls:"Елементи керування гучністю",volume_controls_list:{volume_buttons:"Кнопки гучності",volume_set:"Рівень гучності",volume_mute:"Вимк. звук"}},lock:{lock:"Зачинити",unlock:"Відчинити",open:"Відкрити"},humidifier:{show_target_humidity_control:"Керування вологістю?"},climate:{show_temperature_control:"Керування температурою?",hvac_modes:"Режими"},number:{display_mode:"Відображати режим",display_mode_list:{default:"За замовчуванням (повзунок)",slider:"Повзунок",buttons:"Кнопки"}}},chip:{sub_element_editor:{title:"Редактор міні-карток"},conditional:{chip:"Міні-картка"},"chip-picker":{chips:"Міні-картки",add:"Додати міні-картку",edit:"Редагувати",clear:"Очистити",select:"Обрати міні-картку",types:{action:"Дія","alarm-control-panel":"Сигналізація",back:"Назад",conditional:"Умовна",entity:"Сутність",light:"Світло",menu:"Меню",spacer:"Порожнє місце",template:"Вручну",weather:"Погода"}}}},xo={not_found:"Сутність не знайдено"},wo={editor:yo,card:xo},ko={form:{color_picker:{values:{default:"Màu mặc định"}},info_picker:{values:{default:"Thông tin mặc định",name:"Tên",state:"Trạng thái","last-changed":"Lần thay đổi cuối","last-updated":"Lần cập nhật cuối",none:"Không có"}},icon_type_picker:{values:{default:"Kiểu mặc định",icon:"Biểu tượng","entity-picture":"Ảnh thực thể",none:"Không có"}},layout_picker:{values:{default:"Bố cục mặc định",vertical:"Bố cục dọc",horizontal:"Bố cục ngang"}},alignment_picker:{values:{default:"Căn chỉnh mặc định",start:"Căn đầu",end:"Căn cuối",center:"Căn giữa",justify:"Căn hai bên"}}},card:{generic:{icon_color:"Màu biểu tượng",layout:"Bố cục",fill_container:"Làm đầy ô chứa",primary_info:"Thông tin chính",secondary_info:"Thông tin phụ",icon_type:"Kiểu biểu tượng",content_info:"Nội dung",use_entity_picture:"Dùng ảnh của thực thể?",collapsible_controls:"Thu nhỏ điều kiển khi tắt",icon_animation:"Biểu tượng chuyển động khi kích hoạt?"},light:{show_brightness_control:"Điều khiển độ sáng?",use_light_color:"Dùng màu đèn",show_color_temp_control:"Điều khiển nhiệt độ màu?",show_color_control:"Điều khiển màu sắc?",incompatible_controls:"Một số điều khiển sẽ không được hiển thị nếu đèn của bạn không hỗ trợ tính năng đó."},fan:{show_percentage_control:"Điều khiển dạng phần trăm?",show_oscillate_control:"Điều khiển xoay?"},cover:{show_buttons_control:"Điều khiển nút bấm?",show_position_control:"Điều khiển vị trí?",show_tilt_position_control:"Điều khiển độ nghiêng?"},template:{primary:"Thông tin chính",secondary:"Thông tin phụ",multiline_secondary:"Nhiều dòng thông tin phụ?",entity_extra:"Được sử dụng trong bản mẫu và hành động",content:"Nội dung",badge_icon:"Biểu tượng huy hiệu",badge_color:"Màu huy hiệu",picture:"Ảnh (thay cho biểu tượng)"},title:{title:"Tiêu đề",subtitle:"Phụ đề",title_tap_action:"Hành động khi nhấp tiêu đề",subtitle_tap_action:"Hành động khi nhấp phụ đề"},chips:{alignment:"Căn chỉnh"},weather:{show_conditions:"Điều kiện?",show_temperature:"Nhiệt độ?"},update:{show_buttons_control:"Điều khiển nút bấm?"},vacuum:{commands:"Mệnh lệnh",commands_list:{on_off:"Bật/tắt"}},"media-player":{use_media_info:"Dùng thông tin đa phương tiện",use_media_artwork:"Dùng ảnh đa phương tiện",show_volume_level:"Hiện mức âm lượng",media_controls:"Điều khiển đa phương tiện",media_controls_list:{on_off:"Bật/tắt",shuffle:"Xáo trộn",previous:"Bài trước",play_pause_stop:"Phát/tạm dừng/dừng",next:"Bài tiếp theo",repeat:"Chế độ lặp lại"},volume_controls:"Điều khiển âm lượng",volume_controls_list:{volume_buttons:"Nút âm lượng",volume_set:"Mức âm lượng",volume_mute:"Im lặng"}},lock:{lock:"Khóa",unlock:"Mở khóa",open:"Mở"},humidifier:{show_target_humidity_control:"Điều khiển độ ẩm?"},climate:{show_temperature_control:"Điều khiển nhiệt độ?",hvac_modes:"Chế độ điều hòa"},number:{display_mode:"Chế độ hiển thị",display_mode_list:{default:"Mặc định (thanh trượt)",slider:"Thanh trượt",buttons:"Nút"}}},chip:{sub_element_editor:{title:"Trình soạn phỉnh"},conditional:{chip:"Phỉnh"},"chip-picker":{chips:"Phỉnh",add:"Thêm phỉnh",edit:"Chỉnh sửa",clear:"Tẩy trống",select:"Chọn phỉnh",types:{action:"Hành động","alarm-control-panel":"Báo động",back:"Quay về",conditional:"Điều kiện",entity:"Thực thể",light:"Đèn",menu:"Trình đơn",spacer:"Ngăn cách",template:"Mẫu",weather:"Thời tiết"}}}},Co={not_found:"Không tìm thấy thực thể"},$o={editor:ko,card:Co},Eo={form:{color_picker:{values:{default:"默认颜色"}},info_picker:{values:{default:"默认信息",name:"名称",state:"状态","last-changed":"变更时间","last-updated":"更新时间",none:"无"}},icon_type_picker:{values:{default:"默认类型",icon:"图标","entity-picture":"实体图片",none:"无"}},layout_picker:{values:{default:"默认布局",vertical:"垂直布局",horizontal:"水平布局"}},alignment_picker:{values:{default:"默认",start:"左对齐",end:"右对齐",center:"居中对齐",justify:"两端对齐"}}},card:{generic:{icon_color:"图标颜色",layout:"布局",fill_container:"填满容器",primary_info:"首要信息",secondary_info:"次要信息",icon_type:"图标类型",content_info:"内容",use_entity_picture:"使用实体图片?",collapsible_controls:"关闭时隐藏控制器",icon_animation:"激活时使用动态图标?"},light:{show_brightness_control:"亮度控制?",use_light_color:"使用灯光颜色",show_color_temp_control:"色温控制?",show_color_control:"颜色控制?",incompatible_controls:"设备不支持的控制器将不会显示。"},fan:{show_percentage_control:"百分比控制?",show_oscillate_control:"摆动控制?"},cover:{show_buttons_control:"按钮控制?",show_position_control:"位置控制?",show_tilt_position_control:"角度控制?"},template:{primary:"首要信息",secondary:"次要信息",multiline_secondary:"多行次要信息?",entity_extra:"用于模板和动作",content:"内容",badge_icon:"徽标图标",badge_color:"徽标颜色",picture:"图片 (将会替代图标)"},title:{title:"标题",subtitle:"子标题",title_tap_action:"标题点击动作",subtitle_tap_action:"子标题点击动作"},chips:{alignment:"对齐"},weather:{show_conditions:"条件?",show_temperature:"温度?"},update:{show_buttons_control:"控制按钮?"},vacuum:{commands:"命令",commands_list:{on_off:"开/关"}},"media-player":{use_media_info:"使用媒体信息",use_media_artwork:"使用媒体插图",show_volume_level:"显示音量大小",media_controls:"媒体控制",media_controls_list:{on_off:"开启/关闭",shuffle:"随机",previous:"上一曲",play_pause_stop:"播放/暂停/停止",next:"下一曲",repeat:"循环模式"},volume_controls:"音量控制",volume_controls_list:{volume_buttons:"音量按钮",volume_set:"音量等级",volume_mute:"静音"}},lock:{lock:"锁定",unlock:"解锁",open:"打开"},humidifier:{show_target_humidity_control:"湿度控制?"},climate:{show_temperature_control:"温度控制?",hvac_modes:"空调模式"},number:{display_mode:"显示模式",display_mode_list:{default:"默认 (滑块)",slider:"滑块",buttons:"按钮"}}},chip:{sub_element_editor:{title:"Chip 编辑"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"添加 chip",edit:"编辑",clear:"清除",select:"选择 chip",types:{action:"动作","alarm-control-panel":"警戒控制台",back:"返回",conditional:"条件显示",entity:"实体",light:"灯光",menu:"菜单",spacer:"占位符",template:"模板",weather:"天气"}}}},Ao={not_found:"未找到实体"},So={editor:Eo,card:Ao},Io={form:{color_picker:{values:{default:"預設顏色"}},info_picker:{values:{default:"預設訊息",name:"名稱",state:"狀態","last-changed":"最近變動時間","last-updated":"最近更新時間",none:"無"}},icon_type_picker:{values:{default:"預設樣式",icon:"圖示","entity-picture":"實體圖片",none:"無"}},layout_picker:{values:{default:"預設佈局",vertical:"垂直佈局",horizontal:"水平佈局"}},alignment_picker:{values:{default:"預設對齊",start:"居左對齊",end:"居右對齊",center:"居中對齊",justify:"兩端對齊"}}},card:{generic:{icon_color:"圖示顏色",layout:"佈局",fill_container:"填滿容器",primary_info:"主要訊息",secondary_info:"次要訊息",icon_type:"圖示樣式",content_info:"內容",use_entity_picture:"使用實體圖片?",collapsible_controls:"關閉時隱藏控制項",icon_animation:"啟動時使用動態圖示?"},light:{show_brightness_control:"亮度控制?",use_light_color:"使用燈光顏色",show_color_temp_control:"色溫控制?",show_color_control:"色彩控制?",incompatible_controls:"不會顯示裝置不支援的控制。"},fan:{show_percentage_control:"百分比控制?",show_oscillate_control:"擺頭控制?"},cover:{show_buttons_control:"按鈕控制?",show_position_control:"位置控制?",show_tilt_position_control:"角度控制?"},template:{primary:"主要訊息",secondary:"次要訊息",multiline_secondary:"多行次要訊息?",entity_extra:"用於模板與動作",content:"內容",badge_icon:"角標圖示",badge_color:"角標顏色",picture:"圖片 (將會取代圖示)"},title:{title:"標題",subtitle:"副標題",title_tap_action:"標題點擊動作",subtitle_tap_action:"副標題點擊動作"},chips:{alignment:"對齊"},weather:{show_conditions:"狀況?",show_temperature:"溫度?"},update:{show_buttons_control:"按鈕控制?"},vacuum:{commands:"指令",commands_list:{on_off:"開啟、關閉"}},"media-player":{use_media_info:"使用媒體資訊",use_media_artwork:"使用媒體插圖",show_volume_level:"顯示音量大小",media_controls:"媒體控制",media_controls_list:{on_off:"開啟、關閉",shuffle:"隨機播放",previous:"上一首",play_pause_stop:"播放、暫停、停止",next:"下一首",repeat:"重複播放"},volume_controls:"音量控制",volume_controls_list:{volume_buttons:"音量按鈕",volume_set:"音量等級",volume_mute:"靜音"}},lock:{lock:"上鎖",unlock:"解鎖",open:"打開"},humidifier:{show_target_humidity_control:"溼度控制?"},climate:{show_temperature_control:"溫度控制?",hvac_modes:"空調模式"},number:{display_mode:"顯示模式",display_mode_list:{default:"預設 (滑桿)",slider:"滑桿",buttons:"按鈕"}}},chip:{sub_element_editor:{title:"小卡片編輯器"},conditional:{chip:"小卡片"},"chip-picker":{chips:"小卡片",add:"新增小卡片",edit:"編輯",clear:"清除",select:"選擇小卡片",types:{action:"動作","alarm-control-panel":"警報器控制",back:"返回",conditional:"條件",entity:"實體",light:"燈光",menu:"選單",spacer:"佔位符",template:"模板",weather:"天氣"}}}},To={not_found:"未找到實體"},zo={editor:Io,card:To};const Oo={ar:Object.freeze({__proto__:null,default:li,editor:si}),bg:Object.freeze({__proto__:null,default:di,editor:ci}),ca:Object.freeze({__proto__:null,card:hi,default:mi,editor:ui}),cs:Object.freeze({__proto__:null,card:fi,default:gi,editor:pi}),da:Object.freeze({__proto__:null,card:vi,default:bi,editor:_i}),de:Object.freeze({__proto__:null,card:xi,default:wi,editor:yi}),el:Object.freeze({__proto__:null,default:Ci,editor:ki}),en:Object.freeze({__proto__:null,card:Ei,default:Ai,editor:$i}),es:Object.freeze({__proto__:null,default:Ii,editor:Si}),fi:Object.freeze({__proto__:null,default:zi,editor:Ti}),fr:Object.freeze({__proto__:null,default:Mi,editor:Oi}),he:Object.freeze({__proto__:null,default:Di,editor:ji}),hu:Object.freeze({__proto__:null,card:Pi,default:Ni,editor:Li}),id:Object.freeze({__proto__:null,card:Fi,default:Vi,editor:Ri}),it:Object.freeze({__proto__:null,card:Ui,default:Hi,editor:Bi}),"ko-KR":Object.freeze({__proto__:null,default:Wi,editor:Yi}),nb:Object.freeze({__proto__:null,default:Ki,editor:Xi}),nl:Object.freeze({__proto__:null,card:Gi,default:Zi,editor:qi}),pl:Object.freeze({__proto__:null,default:Qi,editor:Ji}),"pt-BR":Object.freeze({__proto__:null,card:eo,default:io,editor:to}),"pt-PT":Object.freeze({__proto__:null,default:no,editor:oo}),ro:Object.freeze({__proto__:null,default:ao,editor:ro}),ru:Object.freeze({__proto__:null,default:lo,editor:so}),sl:Object.freeze({__proto__:null,card:uo,default:ho,editor:co}),sk:Object.freeze({__proto__:null,card:po,default:fo,editor:mo}),sv:Object.freeze({__proto__:null,default:_o,editor:go}),tr:Object.freeze({__proto__:null,default:bo,editor:vo}),uk:Object.freeze({__proto__:null,card:xo,default:wo,editor:yo}),vi:Object.freeze({__proto__:null,card:Co,default:$o,editor:ko}),"zh-Hans":Object.freeze({__proto__:null,card:Ao,default:So,editor:Eo}),"zh-Hant":Object.freeze({__proto__:null,card:To,default:zo,editor:Io})};function Mo(t,e){try{return t.split(".").reduce(((t,e)=>t[e]),Oo[e])}catch(t){return}}function jo(t){return function(e){var i;let o=Mo(e,null!==(i=null==t?void 0:t.locale.language)&&void 0!==i?i:"en");return o||(o=Mo(e,"en")),null!=o?o:e}} +`,ai=(t,e,i,o)=>{const[n,r,a]=t.split(".",3);return Number(n)>e||Number(n)===e&&Number(r)>=i||void 0!==o};var si={form:{color_picker:{values:{default:"اللون الإفتراضي"}},info_picker:{values:{default:"المعلومات الافتراضية",name:"الإسم",state:"الحالة","last-changed":"آخر تغيير","last-updated":"آخر تحديث",none:"لا شئ"}},icon_type_picker:{values:{default:"النوع افتراضي",icon:"أيقونة","entity-picture":"صورة الكيان",none:"لا شئ"}},layout_picker:{values:{default:"تخطيط افتراضي",vertical:"تخطيط رأسي",horizontal:"تخطيط أفقي"}},alignment_picker:{values:{default:"المحاذاة الافتراضية",start:"بداية",end:"نهاية",center:"توسيط",justify:"مساواة"}}},card:{generic:{icon_color:"لون الأيقونة",layout:"التخطيط",fill_container:"ملئ الحاوية",primary_info:"المعلومات الأساسية",secondary_info:"المعلومات الفرعية",icon_type:"نوع الأيقونة",content_info:"المحتوى",use_entity_picture:"استخدم صورة الكيان؟",collapsible_controls:"تصغير عناصر التحكم عند الإيقاف",icon_animation:"تحريك الرمز عندما يكون نشطًا؟"},light:{show_brightness_control:"التحكم في السطوع؟",use_light_color:"استخدم لون فاتح",show_color_temp_control:"التحكم في حرارة اللون؟",show_color_control:"التحكم في اللون؟",incompatible_controls:"قد لا يتم عرض بعض عناصر التحكم إذا كان الضوء الخاص بك لا يدعم الميزة."},fan:{show_percentage_control:"التحكم في النسبة المئوية؟",show_oscillate_control:"التحكم في التذبذب؟"},cover:{show_buttons_control:"أزرار التحكم؟",show_position_control:"التحكم في الموقع؟"},template:{primary:"المعلومات الأساسية",secondary:"المعلومات الثانوية",multiline_secondary:"متعدد الأسطر الثانوية؟",entity_extra:"تستخدم في القوالب والإجراءات",content:"المحتوى",badge_icon:"أيقونة الشارة",badge_color:"لون الشارة",picture:"صورة (ستحل محل الأيقونة)"},title:{title:"العنوان",subtitle:"العنوان الفرعي"},chips:{alignment:"محاذاة"},weather:{show_conditions:"الأحوال الجوية؟",show_temperature:"الطقس؟"},update:{show_buttons_control:"أزرار التحكم؟"},vacuum:{commands:"الاوامر"},"media-player":{use_media_info:"استخدم معلومات الوسائط",use_media_artwork:"استخدم صورة الوسائط",show_volume_level:"إظهار مستوى الصوت",media_controls:"التحكم في الوسائط",media_controls_list:{on_off:"تشغيل/إيقاف",shuffle:"خلط",previous:"السابق",play_pause_stop:"تشغيل/إيقاف مؤقت/إيقاف",next:"التالي",repeat:"وضع التكرار"},volume_controls:"التحكم في الصوت",volume_controls_list:{volume_buttons:"أزرار الصوت",volume_set:"مستوى الصوت",volume_mute:"كتم"}},lock:{lock:"مقفل",unlock:"إلغاء قفل",open:"مفتوح"},humidifier:{show_target_humidity_control:"التحكم في الرطوبة؟?"},climate:{show_temperature_control:"التحكم في درجة الحرارة؟",hvac_modes:"أوضاع HVAC"}},chip:{sub_element_editor:{title:"محرر الرقاقة"},conditional:{chip:"رقاقة"},"chip-picker":{chips:"رقاقات",add:"أضف رقاقة",edit:"تعديل",clear:"مسح",select:"اختر الرقاقة",types:{action:"إجراء","alarm-control-panel":"تنبيه",back:"رجوع",conditional:"مشروط",entity:"الكيان",light:"Light",menu:"القائمة",template:"قالب",weather:"الطقس"}}}},li={editor:si},ci={form:{color_picker:{values:{default:"Основен цвят"}},info_picker:{values:{default:"Основна информация",name:"Име",state:"Състояние","last-changed":"Последно Променен","last-updated":"Последно Актуализиран",none:"Липсва"}},icon_type_picker:{values:{default:"Основен тип",icon:"Икона","entity-picture":"Картина на обекта",none:"Липсва"}},layout_picker:{values:{default:"Основно оформление",vertical:"Вертикално оформление",horizontal:"Хоризонтално оформление"}},alignment_picker:{values:{default:"Основно подравняване",start:"Старт",end:"Край",center:"Център",justify:"Подравнен"}}},card:{generic:{icon_color:"Цвят на икона",layout:"Оформление",fill_container:"Изпълване на контейнера",primary_info:"Първостепенна информация",secondary_info:"Второстепенна информация",icon_type:"Тип на икона",content_info:"Съдържание",use_entity_picture:"Използвай снимката на обекта?",collapsible_controls:"Свий контролите при изключен",icon_animation:"Анимирай иконата при активен?"},light:{show_brightness_control:"Контрол на яркостта?",use_light_color:"Използвай цвета на светлината",show_color_temp_control:"Контрол на температурата?",show_color_control:"Контрол на цвета?",incompatible_controls:"Някои опции могат да бъдат скрити при условие че осветителното тяло не поддържа фунцията."},fan:{show_percentage_control:"Процентов контрол?",show_oscillate_control:"Контрол на трептенето?"},cover:{show_buttons_control:"Контролни бутони?",show_position_control:"Контрол на позицията?",show_tilt_position_control:"Контрол на наклона?"},template:{primary:"Първостепенна информация",secondary:"Второстепенна информация",multiline_secondary:"Много-редова второстепенна информация?",entity_extra:"Използван в шаблони и действия",content:"Съдържание",badge_icon:"Икона на значка",badge_color:"Цвят на значка",picture:"Картина (ще замени иконата)"},title:{title:"Заглавие",subtitle:"Подзаглавие"},chips:{alignment:"Подравняване"},weather:{show_conditions:"Условия?",show_temperature:"Температура?"},update:{show_buttons_control:"Контролни бутони?"},vacuum:{commands:"Конади",commands_list:{on_off:"Вкл./Изкл."}},"media-player":{use_media_info:"Използвай информация от медията",use_media_artwork:"Използвай визуалните детайли от медията",show_volume_level:"Покажи контрола за звук",media_controls:"Контрол на Медиата",media_controls_list:{on_off:"Вкл./Изкл.",shuffle:"Разбъркано",previous:"Предишен",play_pause_stop:"Пусни/пауза/стоп",next:"Следващ",repeat:"Повтаряне"},volume_controls:"Контрол на звука",volume_controls_list:{volume_buttons:"Бутони за звук",volume_set:"Ниво на звука",volume_mute:"Заглуши"}},lock:{lock:"Заключен",unlock:"Отключен",open:"Отворен"},humidifier:{show_target_humidity_control:"Контрол на влажността?"},climate:{show_temperature_control:"Контрол на температурата?",hvac_modes:"HVAC Режими"}},chip:{sub_element_editor:{title:"Чип редактор"},conditional:{chip:"Чип"},"chip-picker":{chips:"Чипове",add:"Добави чип",edit:"Редактирай",clear:"Изчисти",select:"Избери чип",types:{action:"Действия","alarm-control-panel":"Аларма",back:"Назад",conditional:"Условни",entity:"Обект",light:"Осветление",menu:"Меню",template:"Шаблон",weather:"Време"}}}},di={editor:ci},ui={form:{color_picker:{values:{default:"Color per defecte"}},info_picker:{values:{default:"Informació per defecte",name:"Nom",state:"Estat","last-changed":"Últim Canvi","last-updated":"Última Actualització",none:"Cap"}},icon_type_picker:{values:{default:"Tipus per defecte",icon:"Icona","entity-picture":"Entitat d'imatge",none:"Cap"}},layout_picker:{values:{default:"Distribució per defecte",vertical:"Distribució vertical",horizontal:"Distribució horitzontal"}},alignment_picker:{values:{default:"Alineació per defecte",start:"Inici",end:"Final",center:"Centre",justify:"Justifica"}}},card:{generic:{icon_color:"Color d'icona",layout:"Distribució",fill_container:"Emplena el contenidor",primary_info:"Informació primaria",secondary_info:"Informació secundaria",icon_type:"Tipus d'icona",content_info:"Contingut",use_entity_picture:"Fer servir la imatge de l'entitat?",collapsible_controls:"Amaga els controls en desactivar",icon_animation:"Animar icona en activar?"},light:{show_brightness_control:"Control de brillantor?",use_light_color:"Fes servir el color del llum",show_color_temp_control:"Control de la temperatura del color?",show_color_control:"Control de color?",incompatible_controls:"Alguns controls no es mostraran si l'entitat no suporta eixa funció."},fan:{show_percentage_control:"Control de percentatge?",show_oscillate_control:"Control d'oscil·lació?"},cover:{show_buttons_control:"Botons de control?",show_position_control:"Control de posició?",show_tilt_position_control:"Control d'inclinació?"},template:{primary:"Informació primaria",secondary:"Informació secundaria",multiline_secondary:"Secundaria en varies línies?",entity_extra:"Utilitzats en plantilles i accions",content:"Contingut",badge_icon:"Icona de la insígnia",badge_color:"Color de la insígnia",picture:"Imatge (reemplaçarà la icona)"},title:{title:"Títol",subtitle:"Subtítol",title_tap_action:"Acció en tocar el títol",subtitle_tap_action:"Acció en tocar el subtítol"},chips:{alignment:"Alineació"},weather:{show_conditions:"Condicions?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Botons de control?"},vacuum:{commands:"Comandaments",commands_list:{on_off:"Engegar/Apagar"}},"media-player":{use_media_info:"Empra la informació multimèdia",use_media_artwork:"Fes servir l'art multimèdia",show_volume_level:"Mostra el nivell de volum",media_controls:"Controls multimèdia",media_controls_list:{on_off:"Engegar/Apagar",shuffle:"Mesclar",previous:"Pista anterior",play_pause_stop:"Reproduïr/Pausar/Detindre",next:"Pista següent",repeat:"Mode de repetició"},volume_controls:"Controls de volum",volume_controls_list:{volume_buttons:"Botons de volum",volume_set:"Nivell de volum",volume_mute:"Silenci"}},lock:{lock:"Bloqueja",unlock:"Desbloqueja",open:"Obri"},humidifier:{show_target_humidity_control:"Control d'humitat?"},climate:{show_temperature_control:"Control de temperatura?",hvac_modes:"Modes HVAC"},number:{display_mode:"Mode de visualització",display_mode_list:{default:"Per defecte (lliscant)",slider:"Lliscant",buttons:"Botons"}}},chip:{sub_element_editor:{title:"Editor de xips"},conditional:{chip:"Xip"},"chip-picker":{chips:"Xips",add:"Afegir xip",edit:"Editar",clear:"Buidar",select:"Seleccionar chip",types:{action:"Acció","alarm-control-panel":"Alarma",back:"Tornar",conditional:"Condicional",entity:"Entitat",light:"Llum",menu:"Menú",spacer:"Espai",template:"Plantilla",weather:"Oratge"}}}},hi={not_found:"No s'ha trobat l'entitat"},mi={editor:ui,card:hi},pi={form:{color_picker:{values:{default:"Výchozí barva"}},info_picker:{values:{default:"Výchozí informace",name:"Název",state:"Stav","last-changed":"Poslední změna","last-updated":"Poslední aktualizace",none:"Nic"}},icon_type_picker:{values:{default:"Výchozí typ",icon:"Ikona","entity-picture":"Ikona entity",none:"Nic"}},layout_picker:{values:{default:"Výchozí rozložení",vertical:"Svislé rozložení",horizontal:"Vodorovné rozložení"}},alignment_picker:{values:{default:"Výchozí zarovnání",start:"Na začátek",end:"Na konec",center:"Na střed",justify:"Do bloku"}}},card:{generic:{icon_color:"Barva ikony",layout:"Rozložení",fill_container:"Vyplnit prostor",primary_info:"Primární informace",secondary_info:"Sekundární informace",icon_type:"Typ ikony",content_info:"Obsah",use_entity_picture:"Použít ikonu entity?",collapsible_controls:"Pokud je vypnuto, skrýt ovládací prvky",icon_animation:"Pokud je aktivní, animovat ikonu?"},light:{show_brightness_control:"Ovládání jasu?",use_light_color:"Ikona podle barvy světla?",show_color_temp_control:"Ovládání teploty světla?",show_color_control:"Ovládání barvy světla?",incompatible_controls:"Některé ovládací prvky se nemusí zobrazit, pokud vaše světlo tuto funkci nepodporuje."},fan:{show_percentage_control:"Ovládání v procentech?",show_oscillate_control:"Ovládání oscilaceM"},cover:{show_buttons_control:"Zobrazit ovládací tlačítka?",show_position_control:"Zobrazit ovládání polohy?",show_tilt_position_control:"Zobrazit ovládání náklonu?"},template:{primary:"Primární informace",secondary:"Sekundární informace",multiline_secondary:"Víceřádková sekundární informace?",entity_extra:"Použito v šablonách a akcích",content:"Obsah",badge_icon:"Ikona odznaku",badge_color:"Barva odznaku",picture:"Obrázek (nahradí ikonu)"},title:{title:"Nadpis",subtitle:"Popis",title_tap_action:"Akce při klepnutí na nadpis",subtitle_tap_action:"Akce při klepnutí na popis"},chips:{alignment:"Zarovnání"},weather:{show_conditions:"Zobrazit podmínky?",show_temperature:"Zobrazit teplotu?"},update:{show_buttons_control:"Zobrazit ovládací tlačítka?"},vacuum:{commands:"Příkazy",commands_list:{on_off:"Zapnout/Vypnout"}},"media-player":{use_media_info:"Použít informace z média",use_media_artwork:"Použít artwork z média",show_volume_level:"Zobrazit úroveň hlasitosti",media_controls:"Ovládání médií",media_controls_list:{on_off:"Zapnout/Vypnout",shuffle:"Zamíchat",previous:"Předchozí stopa",play_pause_stop:"Přehrát/Pauza/Zastavit",next:"Další stopa",repeat:"Režim opakování"},volume_controls:"Ovládání hlasitosti",volume_controls_list:{volume_buttons:"Tlačítka hlasitosti",volume_set:"Úroveň hlasitosti",volume_mute:"Ztlumit"}},lock:{lock:"Zamčeno",unlock:"Odemčeno",open:"Otevřeno"},humidifier:{show_target_humidity_control:"Ovládání vlhkosti?"},climate:{show_temperature_control:"Ovládání teploty?",hvac_modes:"Režimy HVAC"},number:{display_mode:"Režim zobrazení",display_mode_list:{default:"Výchozí (posuvník)",slider:"Posuvník",buttons:"Tlačítka"}}},chip:{sub_element_editor:{title:"Editor tlačítek"},conditional:{chip:"Tlačítko"},"chip-picker":{chips:"Tlačítka",add:"Přidat tlačítko",edit:"Upravit",clear:"Vymazat",select:"Vybrat tlačítko",types:{action:"Akce","alarm-control-panel":"Alarm",back:"Zpět",conditional:"Podmínka",entity:"Entita",light:"Světlo",menu:"Menu",spacer:"Mezera",template:"Šablona",weather:"Počasí"}}}},fi={not_found:"Entita nebyla nalezena"},gi={editor:pi,card:fi},_i={form:{color_picker:{values:{default:"Standardfarve"}},info_picker:{values:{default:"Standard information",name:"Navn",state:"Status","last-changed":"Sidst ændret","last-updated":"Sidst opdateret",none:"Ingen"}},icon_type_picker:{values:{default:"Standard type",icon:"Ikon","entity-picture":"Enhedsbillede",none:"Ingen"}},layout_picker:{values:{default:"Standard layout",vertical:"Vertikal layout",horizontal:"Horisontal layout"}},alignment_picker:{values:{default:"Standard justering",start:"Start",end:"Slut",center:"Centrer",justify:"Lige margener"}}},card:{generic:{color:"Farve",icon_color:"Ikon farve",layout:"Layout",fill_container:"Fyld container",primary_info:"Primær information",secondary_info:"Sekundær information",icon_type:"Ikon type",content_info:"Indhold",use_entity_picture:"Brug enhedsbillede?",collapsible_controls:"Skjul kontroller når slukket",icon_animation:"Animér ikon når aktiv?"},light:{show_brightness_control:"Lysstyrkekontrol?",use_light_color:"Brug lysfarve",show_color_temp_control:"Temperaturfarvekontrol?",show_color_control:"Farvekontrol?",incompatible_controls:"Nogle kontroller vises muligvis ikke, hvis dit lys ikke understøtter funktionen."},fan:{show_percentage_control:"Procentkontrol?",show_oscillate_control:"Oscillationskontrol?"},cover:{show_buttons_control:"Betjeningsknapper?",show_position_control:"Positionskontrol?",show_tilt_position_control:"Tiltkontrol?"},template:{primary:"Primær information",secondary:"Sekundær information",multiline_secondary:"Multi-linje sekundær?",entity_extra:"Anvendes i skabeloner og handlinger",label:"Label",content:"Indhold",badge_icon:"Badge ikon",badge_color:"Badge farve",picture:"Billede (erstatter ikonet)"},title:{title:"Titel",subtitle:"Undertitel",title_tap_action:"Title tryk handling",subtitle_tap_action:"Undertitel tryk handling"},chips:{alignment:"Justering"},weather:{show_conditions:"Vejrforhold?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Betjeningsknapper?"},vacuum:{commands:"Kommandoer",commands_list:{on_off:"Slå til/fra"}},"media-player":{use_media_info:"Brug medieinformation",use_media_artwork:"Brug mediebilleder",show_volume_level:"Vis lydstyrke",media_controls:"Mediekontrol",media_controls_list:{on_off:"Tænd/Sluk",shuffle:"Bland",previous:"Forrige nummer",play_pause_stop:"Afspil/Pause/Stop",next:"Næste nummer",repeat:"Gentagelsestilstand"},volume_controls:"Lydstyrkekontrol",volume_controls_list:{volume_buttons:"Lydstyrkeknapper",volume_set:"Lydstyrke",volume_mute:"Lydløs"}},lock:{lock:"Lås",unlock:"Lås op",open:"Åben"},humidifier:{show_target_humidity_control:"Luftfugtighedskontrol?"},climate:{show_temperature_control:"Temperaturkontrol?",hvac_modes:"HVAC-tilstande"},number:{display_mode:"Visningstilstand",display_mode_list:{default:"Standard (slider)",slider:"Slider",buttons:"Knapper"}}},chip:{sub_element_editor:{title:"Chip-editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Tilføj chip",edit:"Rediger",clear:"Nulstil",select:"Vælg chip",types:{action:"Handling","alarm-control-panel":"Alarm",back:"Tilbage",conditional:"Betinget",entity:"Enhed",light:"Lys",menu:"Menu",spacer:"Afstand",template:"Skabelon",weather:"Vejr"}}}},vi={not_found:"Enhed ikke fundet"},bi={editor:_i,card:vi},yi={form:{color_picker:{values:{default:"Standardfarbe"}},info_picker:{values:{default:"Standard-Information",name:"Name",state:"Zustand","last-changed":"Letzte Änderung","last-updated":"Letzte Aktualisierung",none:"Keine"}},icon_type_picker:{values:{default:"Standard-Typ",icon:"Icon","entity-picture":"Entitätsbild",none:"Keines"}},layout_picker:{values:{default:"Standard-Layout",vertical:"Vertikales Layout",horizontal:"Horizontales Layout"}},alignment_picker:{values:{default:"Standard",start:"Anfang",end:"Ende",center:"Mitte",justify:"Ausrichten"}}},card:{generic:{icon_color:"Icon-Farbe",layout:"Layout",fill_container:"Container ausfüllen",primary_info:"Primäre Information",secondary_info:"Sekundäre Information",icon_type:"Icon-Typ",content_info:"Inhalt",use_entity_picture:"Entitätsbild verwenden?",collapsible_controls:"Schieberegler einklappen, wenn aus",icon_animation:"Icon animieren, wenn aktiv?"},light:{show_brightness_control:"Helligkeitsregelung?",use_light_color:"Farbsteuerung verwenden",show_color_temp_control:"Farbtemperatursteuerung?",show_color_control:"Farbsteuerung?",incompatible_controls:"Einige Steuerelemente werden möglicherweise nicht angezeigt, wenn Ihr Licht diese Funktion nicht unterstützt."},fan:{show_percentage_control:"Prozentuale Kontrolle?",show_oscillate_control:"Oszillationssteuerung?"},cover:{show_buttons_control:"Schaltflächensteuerung?",show_position_control:"Positionssteuerung?",show_tilt_position_control:"Winkelsteuerung?"},template:{primary:"Primäre Information",secondary:"Sekundäre Information",multiline_secondary:"Mehrzeilig sekundär?",entity_extra:"Wird in Vorlagen und Aktionen verwendet",content:"Inhalt",badge_icon:"Badge-Icon",badge_color:"Badge-Farbe",picture:"Bild (ersetzt das Icon)"},title:{title:"Titel",subtitle:"Untertitel",title_tap_action:"Titel Tipp-Aktion",subtitle_tap_action:"Untertitel Tipp-Aktion"},chips:{alignment:"Ausrichtung"},weather:{show_conditions:"Bedingungen?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Schaltflächensteuerung?"},vacuum:{commands:"Befehle",commands_list:{on_off:"An/Ausschalten"}},"media-player":{use_media_info:"Medieninfos verwenden",use_media_artwork:"Mediengrafik verwenden",show_volume_level:"Lautstärke-Level anzeigen",media_controls:"Mediensteuerung",media_controls_list:{on_off:"Ein/Aus",shuffle:"Zufällige Wiedergabe",previous:"Vorheriger Titel",play_pause_stop:"Play/Pause/Stop",next:"Nächster Titel",repeat:"Wiederholen"},volume_controls:"Lautstärkesteuerung",volume_controls_list:{volume_buttons:"Lautstärke-Buttons",volume_set:"Lautstärke-Level",volume_mute:"Stumm"}},lock:{lock:"Verriegeln",unlock:"Entriegeln",open:"Öffnen"},humidifier:{show_target_humidity_control:"Luftfeuchtigkeitssteuerung?"},climate:{show_temperature_control:"Temperatursteuerung?",hvac_modes:"HVAC-Modi"},number:{display_mode:"Anzeigemodus",display_mode_list:{default:"Standard (Schieberegler)",slider:"Schieberegler",buttons:"Buttons"}}},chip:{sub_element_editor:{title:"Chip Editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Chip hinzufügen",edit:"Editieren",clear:"Löschen",select:"Chip auswählen",types:{action:"Aktion","alarm-control-panel":"Alarm",back:"Zurück",conditional:"Bedingung",entity:"Entität",light:"Licht",menu:"Menü",spacer:"Abstand",template:"Vorlage",weather:"Wetter"}}}},xi={not_found:"Entität nicht gefunden"},wi={editor:yi,card:xi},ki={form:{color_picker:{values:{default:"Προεπιλεγμένο χρώμα"}},info_picker:{values:{default:"Προεπιλεγμένες πληροφορίες",name:"Όνομα",state:"Κατάσταση","last-changed":"Τελευταία αλλαγή","last-updated":"Τελευταία ενημέρωση",none:"Τίποτα"}},layout_picker:{values:{default:"Προεπιλεγμένη διάταξη",vertical:"Κάθετη διάταξη",horizontal:"Οριζόντια διάταξη"}},alignment_picker:{values:{default:"Προεπιλεγμένη στοίχιση",start:"Στοίχιση αριστερά",end:"Στοίχιση δεξιά",center:"Στοίχιση στο κέντρο",justify:"Πλήρης στοίχιση"}}},card:{generic:{icon_color:"Χρώμα εικονιδίου",layout:"Διάταξη",primary_info:"Πρωτεύουσες πληροφορίες",secondary_info:"Δευτερεύουσες πληροφορίες",content_info:"Περιεχόμενο",use_entity_picture:"Χρήση εικόνας οντότητας;",icon_animation:"Κίνηση εικονιδίου όταν είναι ενεργό;"},light:{show_brightness_control:"Έλεγχος φωτεινότητας;",use_light_color:"Χρήση χρώματος φωτος",show_color_temp_control:"Έλεγχος χρώματος θερμοκρασίας;",show_color_control:"Έλεγχος χρώματος;",incompatible_controls:"Ορισμένα στοιχεία ελέγχου ενδέχεται να μην εμφανίζονται εάν το φωτιστικό σας δεν υποστηρίζει τη λειτουργία."},fan:{show_percentage_control:"Έλεγχος ποσοστού;",show_oscillate_control:"Έλεγχος ταλάντωσης;"},cover:{show_buttons_control:"Έλεγχος κουμπιών;",show_position_control:"Έλεγχος θέσης;"},template:{primary:"Πρωτεύουσες πληροφορίες",secondary:"Δευτερεύουσες πληροφορίες",multiline_secondary:"Δευτερεύουσες πολλαπλών γραμμών;",entity_extra:"Χρησιμοποιείται σε πρότυπα και ενέργειες",content:"Περιεχόμενο"},title:{title:"Τίτλος",subtitle:"Υπότιτλος"},chips:{alignment:"Ευθυγράμμιση"},weather:{show_conditions:"Συνθήκες;",show_temperature:"Θερμοκρασία;"},update:{show_buttons_control:"Έλεγχος κουμπιών;"},vacuum:{commands:"Εντολές"},"media-player":{use_media_info:"Χρήση πληροφοριών πολυμέσων",use_media_artwork:"Χρήση έργων τέχνης πολυμέσων",media_controls:"Έλεγχος πολυμέσων",media_controls_list:{on_off:"Ενεργοποίηση/απενεργοποίηση",shuffle:"Τυχαία σειρά",previous:"Προηγούμενο κομμάτι",play_pause_stop:"Αναπαραγωγή/παύση/διακοπή",next:"Επόμενο κομμάτι",repeat:"Λειτουργία επανάληψης"},volume_controls:"Χειριστήρια έντασης ήχου",volume_controls_list:{volume_buttons:"Κουμπιά έντασης ήχου",volume_set:"Επίπεδο έντασης ήχου",volume_mute:"Σίγαση"}}},chip:{sub_element_editor:{title:"Επεξεργαστής Chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Προσθήκη chip",edit:"Επεξεργασία",clear:"Καθαρισμός",select:"Επιλογή chip",types:{action:"Ενέργεια","alarm-control-panel":"Συναγερμός",back:"Πίσω",conditional:"Υπό προϋποθέσεις",entity:"Οντότητα",light:"Φως",menu:"Μενού",template:"Πρότυπο",weather:"Καιρός"}}}},Ci={editor:ki},$i={form:{color_picker:{values:{default:"Default color"}},info_picker:{values:{default:"Default information",name:"Name",state:"State","last-changed":"Last Changed","last-updated":"Last Updated",none:"None"}},icon_type_picker:{values:{default:"Default type",icon:"Icon","entity-picture":"Entity picture",none:"None"}},layout_picker:{values:{default:"Default layout",vertical:"Vertical layout",horizontal:"Horizontal layout"}},alignment_picker:{values:{default:"Default alignment",start:"Start",end:"End",center:"Center",justify:"Justify"}}},card:{generic:{color:"Color",icon_color:"Icon color",layout:"Layout",fill_container:"Fill container",primary_info:"Primary information",secondary_info:"Secondary information",icon_type:"Icon type",content_info:"Content",use_entity_picture:"Use entity picture?",collapsible_controls:"Collapse controls when off",icon_animation:"Animate icon when active?"},light:{show_brightness_control:"Brightness control?",use_light_color:"Use light color",show_color_temp_control:"Temperature color control?",show_color_control:"Color control?",incompatible_controls:"Some controls may not be displayed if your light does not support the feature."},fan:{show_percentage_control:"Percentage control?",show_oscillate_control:"Oscillate control?"},cover:{show_buttons_control:"Control buttons?",show_position_control:"Position control?",show_tilt_position_control:"Tilt control?"},template:{primary:"Primary information",secondary:"Secondary information",multiline_secondary:"Multiline secondary?",entity_extra:"Used in templates and actions",label:"Label",content:"Content",badge_icon:"Badge icon",badge_color:"Badge color",picture:"Picture (will replace the icon)"},title:{title:"Title",subtitle:"Subtitle",title_tap_action:"Title tap action",subtitle_tap_action:"Subtitle tap action"},chips:{alignment:"Alignment"},weather:{show_conditions:"Conditions?",show_temperature:"Temperature?"},update:{show_buttons_control:"Control buttons?"},vacuum:{commands:"Commands",commands_list:{on_off:"Turn on/off"}},"media-player":{use_media_info:"Use media info",use_media_artwork:"Use media artwork",show_volume_level:"Show volume level",media_controls:"Media controls",media_controls_list:{on_off:"Turn on/off",shuffle:"Shuffle",previous:"Previous track",play_pause_stop:"Play/pause/stop",next:"Next track",repeat:"Repeat mode"},volume_controls:"Volume controls",volume_controls_list:{volume_buttons:"Volume buttons",volume_set:"Volume level",volume_mute:"Mute"}},lock:{lock:"Lock",unlock:"Unlock",open:"Open"},humidifier:{show_target_humidity_control:"Humidity control?"},climate:{show_temperature_control:"Temperature control?",hvac_modes:"HVAC Modes"},number:{display_mode:"Display Mode",display_mode_list:{default:"Default (slider)",slider:"Slider",buttons:"Buttons"}}},chip:{sub_element_editor:{title:"Chip editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Add chip",edit:"Edit",clear:"Clear",select:"Select chip",types:{action:"Action","alarm-control-panel":"Alarm",back:"Back",conditional:"Conditional",entity:"Entity",light:"Light",menu:"Menu",spacer:"Spacer",template:"Template",weather:"Weather"}}}},Ei={not_found:"Entity not found"},Ai={editor:$i,card:Ei},Si={form:{color_picker:{values:{default:"Color predeterminado"}},info_picker:{values:{default:"Información predeterminada",name:"Nombre",state:"Estado","last-changed":"Último cambio","last-updated":"Última actualización",none:"Ninguno"}},icon_type_picker:{values:{default:"Por defecto",icon:"Icono","entity-picture":"Imagen de entidad",none:"Ninguno"}},layout_picker:{values:{default:"Diseño predeterminado",vertical:"Diseño vertical",horizontal:"Diseño horizontal"}},alignment_picker:{values:{default:"Alineación predeterminada",start:"Inicio",end:"Final",center:"Centrado",justify:"Justificado"}}},card:{generic:{icon_color:"Color de icono",layout:"Diseño",fill_container:"Rellenar",primary_info:"Información primaria",secondary_info:"Información secundaria",icon_type:"Icono",content_info:"Contenido",use_entity_picture:"¿Usar imagen de entidad?",collapsible_controls:"Contraer controles cuando está apagado",icon_animation:"¿Icono animado cuando está activo?"},light:{show_brightness_control:"¿Controlar brillo?",use_light_color:"Usar color de la luz",show_color_temp_control:"¿Controlar temperatura del color?",show_color_control:"¿Controlar color?",incompatible_controls:"Es posible que algunos controles no se muestren si la luz no es compatible con esta función."},fan:{show_percentage_control:"¿Controlar porcentaje?",show_oscillate_control:"¿Controlar oscilación?"},cover:{show_buttons_control:"¿Botones de control?",show_position_control:"¿Control de posición?",show_tilt_position_control:"¿Control de inclinación?"},template:{primary:"Información primaria",secondary:"Información secundaria",multiline_secondary:"¿Secundaria multilínea?",entity_extra:"Utilizado en plantillas y acciones.",content:"Contenido",badge_icon:"Icono del distintivo",badge_color:"Color del distintivo",picture:"Imagen (sustituirá al icono)"},title:{title:"Título",subtitle:"Subtítulo",title_tap_action:"Acción al tocar el título",subtitle_tap_action:"Acción al tocar el subtítulo"},chips:{alignment:"Alineación"},weather:{show_conditions:"¿Condiciones?",show_temperature:"¿Temperatura?"},update:{show_buttons_control:"¿Botones de control?"},vacuum:{commands:"Comandos",commands_list:{on_off:"Activar/desactivar"}},"media-player":{use_media_info:"Usar información multimedia",use_media_artwork:"Usar ilustraciones multimedia",show_volume_level:"Mostrar nivel de volumen",media_controls:"Controles multimedia",media_controls_list:{on_off:"Activar/desactivar",shuffle:"Aleatoria",previous:"Pista anterior",play_pause_stop:"Reproducir/pausa/parar",next:"Pista siguiente",repeat:"Modo de repetición"},volume_controls:"Controles de volumen",volume_controls_list:{volume_buttons:"Botones de volumen",volume_set:"Nivel de volumen",volume_mute:"Silenciar"}},lock:{lock:"Bloquear",unlock:"Desbloquear",open:"Abrir"},humidifier:{show_target_humidity_control:"¿Controlar humedad?"},climate:{show_temperature_control:"¿Control de temperatura?",hvac_modes:"Modos de climatización"}},chip:{sub_element_editor:{title:"Editor de chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Añadir chip",edit:"Editar",clear:"Limpiar",select:"Seleccionar chip",types:{action:"Acción","alarm-control-panel":"Alarma",back:"Volver",conditional:"Condicional",entity:"Entidad",light:"Luz",menu:"Menú",template:"Plantilla",weather:"Clima"}}}},Ii={editor:Si},Ti={form:{color_picker:{values:{default:"Oletusväri"}},info_picker:{values:{default:"Oletustiedot",name:"Nimi",state:"Tila","last-changed":"Viimeksi muuttunut","last-updated":"Viimeksi päivittynyt",none:"Ei mitään"}},icon_type_picker:{values:{default:"Oletustyyppi",icon:"Kuvake","entity-picture":"Kohteen kuva",none:"Ei mitään"}},layout_picker:{values:{default:"Oletusasettelu",vertical:"Pystysuuntainen",horizontal:"Vaakasuuntainen"}},alignment_picker:{values:{default:"Keskitys",start:"Alku",end:"Loppu",center:"Keskitä",justify:"Sovita"}}},card:{generic:{icon_color:"Ikonin väri",layout:"Asettelu",fill_container:"Täytä alue",primary_info:"Ensisijaiset tiedot",secondary_info:"Toissijaiset tiedot",icon_type:"Kuvakkeen tyyppi",content_info:"Sisältö",use_entity_picture:"Käytä kohteen kuvaa?",collapsible_controls:"Piilota toiminnot off-tilassa",icon_animation:"Animoi kuvake, kun aktiivinen?"},light:{show_brightness_control:"Kirkkauden säätö?",use_light_color:"Käytä valaisimen väriä",show_color_temp_control:"Värilämpötilan säätö?",show_color_control:"Värin säätö?",incompatible_controls:"Jotkin toiminnot eivät näy, jos valaisimesi ei tue niitä."},fan:{show_percentage_control:"Prosentuaalinen säätö?",show_oscillate_control:"Oskillaation säätö?"},cover:{show_buttons_control:"Toimintopainikkeet?",show_position_control:"Sijainnin hallinta?"},template:{primary:"Ensisijaiset tiedot",secondary:"Toissijaiset tiedot",multiline_secondary:"Monirivinen toissijainen tieto?",entity_extra:"Käytetään malleissa ja toiminnoissa",content:"Sisältö",badge_icon:"Merkin kuvake",badge_color:"Merkin väri",picture:"Kuva (korvaa kuvakkeen)"},title:{title:"Otsikko",subtitle:"Tekstitys"},chips:{alignment:"Asettelu"},weather:{show_conditions:"Ehdot?",show_temperature:"Lämpötila?"},update:{show_buttons_control:"Toimintopainikkeet?"},vacuum:{commands:"Komennot"},"media-player":{use_media_info:"Käytä median tietoja",use_media_artwork:"Käytä median kuvituksia",show_volume_level:"Näytä äänenvoimakkuuden hallinta",media_controls:"Toiminnot",media_controls_list:{on_off:"Päälle/pois",shuffle:"Sekoita",previous:"Edellinen kappale",play_pause_stop:"Toista/keskeytä/pysäytä",next:"Seuraava kappale",repeat:"Jatkuva toisto"},volume_controls:"Äänenvoimakkuuden hallinta",volume_controls_list:{volume_buttons:"Äänenvoimakkuuspainikkeet",volume_set:"Äänenvoimakkuus",volume_mute:"Mykistä"}},lock:{lock:"Lukitse",unlock:"Poista lukitus",open:"Avaa"},humidifier:{show_target_humidity_control:"Kosteudenhallinta?"}},chip:{sub_element_editor:{title:"Merkkieditori"},conditional:{chip:"Merkki"},"chip-picker":{chips:"Merkit",add:"Lisää merkki",edit:"Muokkaa",clear:"Tyhjennä",select:"Valitse merkki",types:{action:"Toiminto","alarm-control-panel":"Hälytys",back:"Takaisin",conditional:"Ehdollinen",entity:"Kohde",light:"Valaisin",menu:"Valikko",template:"Malli",weather:"Sää"}}}},zi={editor:Ti},Oi={form:{color_picker:{values:{default:"Couleur par défaut"}},info_picker:{values:{default:"Information par défaut",name:"Nom",state:"État","last-changed":"Dernière modification","last-updated":"Dernière mise à jour",none:"Aucune"}},icon_type_picker:{values:{default:"Type par défaut",icon:"Icône","entity-picture":"Image de l'entité",none:"Aucune"}},layout_picker:{values:{default:"Disposition par défault",vertical:"Disposition verticale",horizontal:"Disposition horizontale"}},alignment_picker:{values:{default:"Alignement par défaut",start:"Début",end:"Fin",center:"Centré",justify:"Justifié"}}},card:{generic:{icon_color:"Couleur de l'icône",layout:"Disposition",fill_container:"Remplir le conteneur",primary_info:"Information principale",secondary_info:"Information secondaire",icon_type:"Type d'icône",content_info:"Contenu",use_entity_picture:"Utiliser l'image de l'entité ?",collapsible_controls:"Reduire les contrôles quand éteint",icon_animation:"Animation de l'icône ?"},light:{show_brightness_control:"Contrôle de luminosité ?",use_light_color:"Utiliser la couleur de la lumière",show_color_temp_control:"Contrôle de la température ?",show_color_control:"Contrôle de la couleur ?",incompatible_controls:"Certains contrôles peuvent ne pas être affichés si votre lumière ne supporte pas la fonctionnalité."},fan:{show_percentage_control:"Contrôle de la vitesse ?",show_oscillate_control:"Contrôle de l'oscillation ?"},cover:{show_buttons_control:"Contrôle avec boutons ?",show_position_control:"Contrôle de la position ?"},template:{primary:"Information principale",secondary:"Information secondaire",multiline_secondary:"Information secondaire sur plusieurs lignes ?",entity_extra:"Utilisée pour les templates et les actions",content:"Contenu",badge_icon:"Icône du badge",badge_color:"Couleur du badge",picture:"Picture (remplacera l'icône)"},title:{title:"Titre",subtitle:"Sous-titre",title_tap_action:"Appui sur le titre",subtitle_tap_action:"Appui sur le sous-titre"},chips:{alignment:"Alignement"},weather:{show_conditons:"Conditions ?",show_temperature:"Température ?"},update:{show_buttons_control:"Contrôle avec boutons ?"},vacuum:{commands:"Commandes",commands_list:{on_off:"Allumer/Éteindre"}},"media-player":{use_media_info:"Utiliser les informations du media",use_media_artwork:"Utiliser l'illustration du media",show_volume_level:"Afficher le niveau de volume",media_controls:"Contrôles du media",media_controls_list:{on_off:"Allumer/Éteindre",shuffle:"Lecture aléatoire",previous:"Précédent",play_pause_stop:"Lecture/pause/stop",next:"Suivant",repeat:"Mode de répétition"},volume_controls:"Contrôles du volume",volume_controls_list:{volume_buttons:"Bouton de volume",volume_set:"Niveau de volume",volume_mute:"Muet"}},lock:{lock:"Verrouiller",unlock:"Déverrouiller",open:"Ouvrir"},humidifier:{show_target_humidity_control:"Contrôle d'humidité ?"},climate:{show_temperature_control:"Contrôle de la température?",hvac_modes:"Modes du thermostat"},number:{display_mode:"Mode d'affichage",display_mode_list:{default:"Par défaut (Curseur)",slider:"Curseur",buttons:"Boutons"}}},chip:{sub_element_editor:{title:'Éditeur de "chip"'},conditional:{chip:"Chip"},"chip-picker":{chips:'"Chips"',add:'Ajouter une "chip"',edit:"Modifier",clear:"Effacer",select:'Sélectionner une "chip"',types:{action:"Action","alarm-control-panel":"Alarme",back:"Retour",conditional:"Conditionnel",entity:"Entité",light:"Lumière",menu:"Menu",spacer:"Espacement",template:"Template",weather:"Météo"}}}},Mi={editor:Oi},ji={form:{color_picker:{values:{default:"צבע ברירת מחדל"}},info_picker:{values:{default:"מידע ברירת מחדל",name:"שם",state:"מצב","last-changed":"שונה לאחרונה","last-updated":"עודכן לאחרונה",none:"ריק"}},layout_picker:{values:{default:"סידור ברירת מחדל",vertical:"סידור מאונך",horizontal:"סידור מאוזן"}},alignment_picker:{values:{default:"יישור ברירת מחדל",start:"התחלה",end:"סוף",center:"אמצע",justify:"מוצדק"}}},card:{generic:{icon_color:"צבע אייקון",layout:"סידור",fill_container:"מלא גבולות",primary_info:"מידע ראשי",secondary_info:"מידע מישני",content_info:"תוכן",use_entity_picture:"השתמש בתמונת ישות",collapsible_controls:"הסתר שליטה כשאר מכובה",icon_animation:"הנפש אייקון"},light:{show_brightness_control:"שליטה בבהירות?",use_light_color:"השתמש בצבע האור",show_color_temp_control:"הצג פקד גוון תאורה?",show_color_control:"הצג פקד צבע",incompatible_controls:"יתכן וחלק מהכפתורים לא יופיעו אם התאורה אינה תומכת בתכונה."},fan:{show_percentage_control:"שליטה באחוז?",show_oscillate_control:"שליטה בהתנדנדות?"},cover:{show_buttons_control:"הצג כפתורי שליטה",show_position_control:"הצג פקדי מיקום"},template:{primary:"מידע ראשי",secondary:"מידע מישני",multiline_secondary:"מידע מישני רב קווי",entity_extra:"משמש בתבניות ופעולות",content:"תוכן"},title:{title:"כותרת",subtitle:"כתובית"},chips:{alignment:"יישור"},weather:{show_conditions:"הצג תנאים?",show_temperature:"הצג טמפרטורה?"},update:{show_buttons_control:"הצג כפתורי שליטה?"},vacuum:{commands:"פקודות",icon_animation:"הנפשת אייקון"},"media-player":{use_media_info:"השתמש במידע מדיה",use_media_artwork:"השתמש באומנות מדיה",show_volume_level:"הצג שליטת ווליום",media_controls:"שליטה במדיה",media_controls_list:{on_off:"הדלק/כבה",shuffle:"ערבב",previous:"רצועה קודמת",play_pause_stop:"נגן/השהה/הפסק",next:"רצועה הבאה",repeat:"חזרה"},volume_controls:"שליטה בווליום",volume_controls_list:{volume_buttons:"כפתורי ווליום",volume_set:"רמת ווליום",volume_mute:"השתק"}},lock:{lock:"נעל",unlock:"בטל נעילה",open:"פתח"},humidifier:{show_target_humidity_control:"הצג פקדי לחות"}},chip:{sub_element_editor:{title:"עורך שבב"},conditional:{chip:"שבב"},"chip-picker":{chips:"שבבים",add:"הוסף שבב",edit:"ערוך",clear:"נקה",select:"בחר שבב",types:{action:"פעולה","alarm-control-panel":"אזעקה",back:"חזור",conditional:"מותנה",entity:"ישות",light:"אור",menu:"תפריט",template:"תבנית",weather:"מזג אוויר"}}}},Di={editor:ji},Li={form:{color_picker:{values:{default:"Alapértelmezett szín"}},info_picker:{values:{default:"Alepértelmezett információ",name:"Név",state:"Állapot","last-changed":"Utoljára módosítva","last-updated":"Utoljára frissítve",none:"Egyik sem"}},icon_type_picker:{values:{default:"Alapértelmezett típus",icon:"Ikon","entity-picture":"Entitás kép",none:"Egyik sem"}},layout_picker:{values:{default:"Alapértelmezet elrendezés",vertical:"Függőleges elrendezés",horizontal:"Vízszintes elrendezés"}},alignment_picker:{values:{default:"Alapértelmezett rendezés",start:"Kezdete",end:"Vége",center:"Közepe",justify:"Sorkizárt"}}},card:{generic:{icon_color:"Ikon szín",layout:"Elrendezés",fill_container:"Tároló kitöltése",primary_info:"Elsődleges információ",secondary_info:"Másodlagos információ",icon_type:"Ikon típus",content_info:"Tartalom",use_entity_picture:"Entitás kép használata",collapsible_controls:"Vezérlők összezárása kikapcsolt állapotban",icon_animation:"Ikon animálása aktív állapotban"},light:{show_brightness_control:"Fényerő vezérlő",use_light_color:"Fény szín használata",show_color_temp_control:"Színhőmérséklet vezérlő",show_color_control:"Szín vezérlő",incompatible_controls:"Azok a vezérlők nem lesznek megjelenítve, amelyeket a fényforrás nem támogat."},fan:{show_percentage_control:"Százalékos vezérlő",show_oscillate_control:"Oszcilláció vezérlő"},cover:{show_buttons_control:"Vezérlő gombok",show_position_control:"Pozíció vezérlő",show_tilt_position_control:"Dőlésszög szabályzó"},template:{primary:"Elsődleges információ",secondary:"Másodlagos információ",multiline_secondary:"Másodlagost több sorba?",entity_extra:"Műveletek és sablonok használatakor",content:"Tartalom",badge_icon:"Jelvény ikon",badge_color:"Jelvény szín",picture:"Kép (lecseréli az ikont)"},title:{title:"Fejléc",subtitle:"Alcím",title_tap_action:"Fejlécre koppintáskor",subtitle_tap_action:"Alcímre koppintáskor"},chips:{alignment:"Rendezés"},weather:{show_conditions:"Állapotok",show_temperature:"Hőmérséklet"},update:{show_buttons_control:"Vezérlő gombok"},vacuum:{commands:"Utasítások",commands_list:{on_off:"Ki/Bekapcsolás"}},"media-player":{use_media_info:"Média infó használata",use_media_artwork:"Média borító használata",show_volume_level:"Hangerő mutatása",media_controls:"Média vezérlők",media_controls_list:{on_off:"Ki/bekapcsolás",shuffle:"Véletlen lejátszás",previous:"Előző szám",play_pause_stop:"Lejátszás/szünet/állj",next:"Következő szám",repeat:"Ismétlés módja"},volume_controls:"Hangerő vezérlők",volume_controls_list:{volume_buttons:"Hangerő gombok",volume_set:"Hangerő szint",volume_mute:"Némítás"}},lock:{lock:"Zár",unlock:"Nyit",open:"Nyitva"},humidifier:{show_target_humidity_control:"Páratartalom vezérlő"},climate:{show_temperature_control:"Hőmérséklet vezérlő",hvac_modes:"HVAC mód"},number:{display_mode:"Megjelenítési mód",display_mode_list:{default:"Alepértelmezett (csúszka)",slider:"Csúszka",buttons:"Gombok"}}},chip:{sub_element_editor:{title:"Chip szerkesztő"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chip-ek",add:"Chip hozzáadása",edit:"Szerkesztés",clear:"Ürítés",select:"Chip kiválasztása",types:{action:"Művelet","alarm-control-panel":"Riasztó",back:"Vissza",conditional:"Feltételes",entity:"Entitás",light:"Fényforrás",menu:"Menü",spacer:"Térköz",template:"Sablon",weather:"Időjárás"}}}},Pi={not_found:"Entitás nem található"},Ni={editor:Li,card:Pi},Ri={form:{color_picker:{values:{default:"Warna bawaan"}},info_picker:{values:{default:"Informasi bawaan",name:"Nama",state:"Status","last-changed":"Terakhir Diubah","last-updated":"Terakhir Diperbarui",none:"Tidak ada"}},icon_type_picker:{values:{default:"Tipe bawaan",icon:"Ikon","entity-picture":"Gambar entitas",none:"Tidak ada"}},layout_picker:{values:{default:"Tata letak bawaan",vertical:"Tata letak vertikal",horizontal:"Tata letak horizontal"}},alignment_picker:{values:{default:"Perataan bawaan",start:"Awal",end:"Akhir",center:"Tengah",justify:"Rata kanan-kiri"}}},card:{generic:{icon_color:"Warna ikon",layout:"Tata letak",fill_container:"Isi kontainer",primary_info:"Informasi primer",secondary_info:"Informasi sekunder",icon_type:"Tipe ikon",content_info:"Konten",use_entity_picture:"Gunakan gambar entitas?",collapsible_controls:"Sembunyikan kontrol saat mati",icon_animation:"Animasikan ikon saat aktif?"},light:{show_brightness_control:"Kontrol kecerahan?",use_light_color:"Gunakan warna lampu",show_color_temp_control:"Kontrol suhu warna?",show_color_control:"Kontrol warna?",incompatible_controls:"Beberapa kontrol mungkin tidak ditampilkan jika lampu Anda tidak mendukung fitur tersebut."},fan:{show_percentage_control:"Kontrol persentase?",show_oscillate_control:"Kontrol osilasi?"},cover:{show_buttons_control:"Tombol kontrol?",show_position_control:"Kontrol posisi?",show_tilt_position_control:"Kontrol kemiringan?"},template:{primary:"Informasi primer",secondary:"Informasi sekunder",multiline_secondary:"Info sekunder multibaris?",entity_extra:"Digunakan dalam templat dan tindakan",content:"Konten",badge_icon:"Ikon lencana",badge_color:"Warna lencana",picture:"Gambar (akan menggantikan ikon)"},title:{title:"Judul",subtitle:"Subjudul",title_tap_action:"Tindakan ketuk judul",subtitle_tap_action:"Tindakan ketuk subjudul"},chips:{alignment:"Perataan"},weather:{show_conditions:"Kondisi?",show_temperature:"Suhu?"},update:{show_buttons_control:"Tombol kontrol?"},vacuum:{commands:"Perintah",commands_list:{on_off:"Nyalakan/Matikan"}},"media-player":{use_media_info:"Gunakan info media",use_media_artwork:"Gunakan gambar seni media",show_volume_level:"Tampilkan level volume",media_controls:"Kontrol media",media_controls_list:{on_off:"Nyalakan/Matikan",shuffle:"Acak",previous:"Lagu sebelumnya",play_pause_stop:"Putar/jeda/stop",next:"Lagu berikutnya",repeat:"Mode pengulangan"},volume_controls:"Kontrol volume",volume_controls_list:{volume_buttons:"Tombol volume",volume_set:"Level volume",volume_mute:"Bisukan"}},lock:{lock:"Kunci",unlock:"Buka kunci",open:"Buka"},humidifier:{show_target_humidity_control:"Kontrol kelembapan?"},climate:{show_temperature_control:"Kontrol suhu?",hvac_modes:"Mode HVAC"},number:{display_mode:"Mode Tampilan",display_mode_list:{default:"Bawaan (geser)",slider:"Geser",buttons:"Tombol"}}},chip:{sub_element_editor:{title:"Editor cip"},conditional:{chip:"Cip"},"chip-picker":{chips:"Cip",add:"Tambah cip",edit:"Edit",clear:"Hapus",select:"Pilih cip",types:{action:"Tindakan","alarm-control-panel":"Alarm",back:"Kembali",conditional:"Kondisional",entity:"Entitas",light:"Lampu",menu:"Menu",spacer:"Pemisah",template:"Templat",weather:"Cuaca"}}}},Fi={not_found:"Entitas tidak ditemukan"},Vi={editor:Ri,card:Fi},Bi={form:{color_picker:{values:{default:"Colore predefinito"}},info_picker:{values:{default:"Informazione predefinita",name:"Nome",state:"Stato","last-changed":"Ultimo cambiamento","last-updated":"Ultimo aggiornamento",none:"Nessuno"}},icon_type_picker:{values:{default:"Tipo predefinito",icon:"Icona","entity-picture":"Immagine dell'entità",none:"Nessuna"}},layout_picker:{values:{default:"Disposizione predefinita",vertical:"Disposizione verticale",horizontal:"Disposizione orizzontale"}},alignment_picker:{values:{default:"Allineamento predefinito",start:"Inizio",end:"Fine",center:"Centro",justify:"Giustificato"}}},card:{generic:{icon_color:"Colore dell'icona",layout:"Disposizione",fill_container:"Riempi il contenitore",primary_info:"Informazione primaria",secondary_info:"Informazione secondaria",icon_type:"Tipo icona",content_info:"Contenuto",use_entity_picture:"Usa l'immagine dell'entità",collapsible_controls:"Nascondi i controlli quando spento",icon_animation:"Anima l'icona quando attiva"},light:{use_light_color:"Usa il colore della luce",show_brightness_control:"Controllo luminosità",show_color_temp_control:"Controllo temperatura",show_color_control:"Controllo colore",incompatible_controls:"Alcuni controlli potrebbero non essere mostrati se la tua luce non li supporta."},fan:{show_percentage_control:"Controllo potenza",show_oscillate_control:"Controllo oscillazione"},cover:{show_buttons_control:"Pulsanti di controllo",show_position_control:"Controllo percentuale apertura",show_tilt_position_control:"Controllo percentuale inclinazione"},template:{primary:"Informazione primaria",secondary:"Informazione secondaria",multiline_secondary:"Abilita frasi multilinea",entity_extra:"Usato in templates ed azioni",content:"Contenuto",badge_icon:"Icona del badge",badge_color:"Colore del badge",picture:"Immagine (sostituirà l'icona)"},title:{title:"Titolo",subtitle:"Sottotitolo",title_tap_action:"Azione di tap sul titolo",subtitle_tap_action:"Azione di tap sul sottotitolo"},chips:{alignment:"Allineamento"},weather:{show_conditions:"Condizioni",show_temperature:"Temperatura"},update:{show_buttons_control:"Pulsanti di controllo"},vacuum:{commands:"Comandi",commands_list:{on_off:"Accendi/Spegni"}},"media-player":{use_media_info:"Mostra le informazioni della sorgente",use_media_artwork:"Usa la copertina della sorgente",show_volume_level:"Mostra volume",media_controls:"Controlli media",media_controls_list:{on_off:"Accendi/Spegni",shuffle:"Riproduzione casuale",previous:"Traccia precedente",play_pause_stop:"Play/Pausa/Stop",next:"Traccia successiva",repeat:"Ciclo continuo"},volume_controls:"Controlli del Volume",volume_controls_list:{volume_buttons:"Bottoni del volume",volume_set:"Livello del volume",volume_mute:"Silenzia"}},lock:{lock:"Blocca",unlock:"Sblocca",open:"Aperto"},humidifier:{show_target_humidity_control:"Controllo umidità"},climate:{show_temperature_control:"Controllo della temperatura?",hvac_modes:"Modalità del termostato"},number:{display_mode:"Modalità di visualizzazione",display_mode_list:{default:"Predefinito (cursore)",slider:"Cursore",buttons:"Pulsanti"}}},chip:{sub_element_editor:{title:"Editor di chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Aggiungi chip",edit:"Modifica",clear:"Rimuovi",select:"Seleziona chip",types:{action:"Azione","alarm-control-panel":"Allarme",back:"Pulsante indietro",conditional:"Condizione",entity:"Entità",light:"Luce",menu:"Menù",spacer:"Distanziere",template:"Modello",weather:"Meteo"}}}},Ui={not_found:"Entità non trovata"},Hi={editor:Bi,card:Ui},Yi={form:{color_picker:{values:{default:"기본 색"}},info_picker:{values:{default:"기본 정보",name:"이름",state:"상태","last-changed":"마지막 변경","last-updated":"마지막 업데이트",none:"없음"}},icon_type_picker:{values:{default:"기본 타입",icon:"아이콘","entity-picture":"엔티티 사진",none:"없음"}},layout_picker:{values:{default:"기본 레이아웃",vertical:"수직 레이아웃",horizontal:"수평 레이아웃"}},alignment_picker:{values:{default:"기본 정렬",start:"시작",end:"끝",center:"중앙",justify:"행 정렬"}}},card:{generic:{icon_color:"아이콘 색",layout:"레이아웃",fill_container:"콘테이너 채우기",primary_info:"기본 정보",secondary_info:"보조 정보",icon_type:"아이콘 타입",content_info:"내용 정보",use_entity_picture:"엔티티 사진 사용",collapsible_controls:"꺼져있을 때 컨트롤 접기",icon_animation:"활성화 시 아이콘 애니메이션 사용"},light:{show_brightness_control:"밝기 컨트롤 표시",use_light_color:"조명 색 사용",show_color_temp_control:"색 온도 컨트롤 표시",show_color_control:"색 컨트롤 표시",incompatible_controls:"조명이 기능을 지원하지 않는 경우 일부 컨트롤이 표시되지 않을 수 있습니다."},fan:{show_percentage_control:"퍼센트 컨트롤",show_oscillate_control:"오실레이트 컨트롤"},cover:{show_buttons_control:"컨트롤 버튼 표시",show_position_control:"위치 컨트롤 표시",show_tilt_position_control:"기울기 컨트롤 표시"},template:{primary:"기본 정보",secondary:"보조 정보",multiline_secondary:"Multiline secondary?",entity_extra:"템플릿 및 작업에 사용",content:"내용",badge_icon:"뱃지 아이콘",badge_color:"뱃지 색",picture:"그림 (아이콘 대체)"},title:{title:"제목",subtitle:"부제목",title_tap_action:"제목 탭 액션",subtitle_tap_action:"부제목 탭 액션"},chips:{alignment:"정렬"},weather:{show_conditions:"조건 표시",show_temperature:"온도 표시"},update:{show_buttons_control:"컨트롤 버튼 표시"},vacuum:{commands:"명령어",commands_list:{on_off:"켜기/끄기"}},"media-player":{use_media_info:"미디어 정보 사용",use_media_artwork:"미디어 아트워크 사용",show_volume_level:"볼륨 레벨 표시",media_controls:"미디어 컨트롤",media_controls_list:{on_off:"켜기/끄기",shuffle:"섞기",previous:"이전 트랙",play_pause_stop:"재생/일시 정지/정지",next:"다음 트랙",repeat:"반복 모드"},volume_controls:"볼륨 컨트롤",volume_controls_list:{volume_buttons:"볼륨 버튼",volume_set:"볼륨 레벨",volume_mute:"음소거"}},lock:{lock:"잠금",unlock:"잠금 해제",open:"열기"},humidifier:{show_target_humidity_control:"습도 조절 표시"},climate:{show_temperature_control:"온도 조절 표시",hvac_modes:"HVAC 모드"}},chip:{sub_element_editor:{title:"칩 에디터"},conditional:{chip:"칩"},"chip-picker":{chips:"칩",add:"칩 추가",edit:"수정",clear:"클리어",select:"칩 선택",types:{action:"액션","alarm-control-panel":"알람",back:"이전",conditional:"Conditional",entity:"엔티티",light:"조명",menu:"메뉴",template:"템플릿",weather:"날씨"}}}},Wi={editor:Yi},Xi={form:{color_picker:{values:{default:"Standard farge"}},info_picker:{values:{default:"Standard informasjon",name:"Navn",state:"Tilstand","last-changed":"Sist endret","last-updated":"Sist oppdatert",none:"Ingen"}},layout_picker:{values:{default:"Standardoppsett",vertical:"Vertikalt oppsett",horizontal:"Horisontalt oppsett"}},alignment_picker:{values:{default:"Standard justering",start:"Start",end:"Slutt",center:"Senter",justify:"Bekreft"}}},card:{generic:{icon_color:"Ikon farge",layout:"Oppsett",primary_info:"Primærinformasjon",secondary_info:"Sekundærinformasjon",content_info:"Innhold",use_entity_picture:"Bruk enhetsbilde?",icon_animation:"Animer ikon når aktivt?"},light:{show_brightness_control:"Lysstyrkekontroll?",use_light_color:"Bruk lys farge",show_color_temp_control:"Temperatur fargekontroll?",show_color_control:"Fargekontroll?",incompatible_controls:"Noen kontroller vises kanskje ikke hvis lyset ditt ikke støtter denne funksjonen."},fan:{show_percentage_control:"Prosentvis kontroll?",show_oscillate_control:"Oscillerende kontroll?"},cover:{show_buttons_control:"Kontollere med knapper?",show_position_control:"Posisjonskontroll?"},template:{primary:"Primærinformasjon",secondary:"Sekundærinformasjon",multiline_secondary:"Multiline sekundær?",entity_extra:"Brukes i maler og handlinger",content:"Inhold"},title:{title:"Tittel",subtitle:"Undertekst"},chips:{alignment:"Justering"},weather:{show_conditions:"Forhold?",show_temperature:"Temperatur?"},vacuum:{commands:"Kommandoer"}},chip:{sub_element_editor:{title:"Chip redaktør"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Legg til chip",edit:"Endre",clear:"Klare",select:"Velg chip",types:{action:"Handling","alarm-control-panel":"Alarm",back:"Tilbake",conditional:"Betinget",entity:"Entitet",light:"Lys",menu:"Meny",template:"Mal",weather:"Vær"}}}},Ki={editor:Xi},qi={form:{color_picker:{values:{default:"Standaard kleur"}},info_picker:{values:{default:"Standaard informatie",name:"Naam",state:"Staat","last-changed":"Laatst gewijzigd","last-updated":"Laatst bijgewerkt",none:"Geen"}},icon_type_picker:{values:{default:"Standaard icoon type",icon:"Icoon","entity-picture":"Entiteit afbeelding",none:"Geen"}},layout_picker:{values:{default:"Standaard lay-out",vertical:"Verticale lay-out",horizontal:"Horizontale lay-out"}},alignment_picker:{values:{default:"Standaard uitlijning",start:"Begin",end:"Einde",center:"Midden",justify:"Uitlijnen "}}},card:{generic:{icon_color:"Icoon kleur",layout:"Lay-out",fill_container:"Vul container",primary_info:"Primaire informatie",secondary_info:"Secundaire informatie",icon_type:"Icoon type",content_info:"Inhoud",use_entity_picture:"Gebruik entiteit afbeelding",collapsible_controls:"Bedieningselementen verbergen wanneer uitgeschakeld",icon_animation:"Pictogram animeren indien actief"},light:{show_brightness_control:"Bediening helderheid",use_light_color:"Gebruik licht kleur",show_color_temp_control:"Bediening kleurtemperatuur",show_color_control:"Bediening kleur",incompatible_controls:"Sommige bedieningselementen worden mogelijk niet weergegeven als uw lamp deze functie niet ondersteunt."},fan:{show_percentage_control:"Bediening middels percentage",show_oscillate_control:"Bediening oscillatie"},cover:{show_buttons_control:"Toon knoppen",show_position_control:"Toon positie bediening",show_tilt_position_control:"Toon tilt control"},template:{primary:"Primaire informatie",secondary:"Secundaire informatie",multiline_secondary:"Secundaire informatie op meerdere lijnen weergeven",entity_extra:"Gebruikt in sjablonen en acties",content:"Inhoud",badge_icon:"Badge icoon",badge_color:"Badge kleur",picture:"Afbeelding (zal het icoon vervangen)"},title:{title:"Titel",subtitle:"Ondertitel",title_tap_action:"Titel tik actie",subtitle_tap_action:"Ondertitel tik actie"},chips:{alignment:"Uitlijning"},weather:{show_conditions:"Weerbeeld",show_temperature:"Temperatuur"},update:{show_buttons_control:"Bedieningsknoppen"},vacuum:{commands:"Commando's",commands_list:{on_off:"Zet aan/uit"}},"media-player":{use_media_info:"Gebruik media informatie",use_media_artwork:"Gebruik media omslag",show_volume_level:"Toon volumeniveau",media_controls:"Mediabediening",media_controls_list:{on_off:"zet aan/uit",shuffle:"Shuffle",previous:"Vorige nummer",play_pause_stop:"Speel/pauze/stop",next:"Volgende nummer",repeat:"Herhalen"},volume_controls:"Volumeregeling",volume_controls_list:{volume_buttons:"Volume knoppen",volume_set:"Volumeniveau",volume_mute:"Dempen"}},lock:{lock:"Vergrendel",unlock:"Ontgrendel",open:"Open"},humidifier:{show_target_humidity_control:"Vochtigheid controle?"},climate:{show_temperature_control:"Temperatuur controle",hvac_modes:"HVAC Modes"},number:{display_mode:"Weergave Modus",display_mode_list:{default:"Standaard (schuifbalk)",slider:"Schuifbalk",buttons:"Knoppen"}}},chip:{sub_element_editor:{title:"Chip editor"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Toevoegen chip",edit:"Bewerk",clear:"Maak leeg",select:"Selecteer chip",types:{action:"Actie","alarm-control-panel":"Alarm",back:"Terug",conditional:"Voorwaardelijk",entity:"Entiteit",light:"Licht",menu:"Menu",spacer:"Afstandhouder",template:"Sjabloon",weather:"Weer"}}}},Gi={not_found:"Entiteit niet gevonden"},Zi={editor:qi,card:Gi},Ji={form:{color_picker:{values:{default:"Domyślny kolor"}},info_picker:{values:{default:"Domyślne informacje",name:"Nazwa",state:"Stan","last-changed":"Ostatnia zmiana","last-updated":"Ostatnia aktualizacja",none:"Brak"}},icon_type_picker:{values:{default:"Domyślny typ",icon:"Ikona","entity-picture":"Obraz encji",none:"Brak"}},layout_picker:{values:{default:"Układ domyślny",vertical:"Układ pionowy",horizontal:"Układ poziomy"}},alignment_picker:{values:{default:"Wyrównanie domyślne",start:"Wyrównanie do lewej",end:"Wyrównanie do prawej",center:"Wyśrodkowanie",justify:"Justowanie"}}},card:{generic:{icon_color:"Kolor ikony",layout:"Układ",fill_container:"Wypełnij zawartością",primary_info:"Informacje główne",secondary_info:"Informacje drugorzędne",icon_type:"Typ ikony",content_info:"Zawartość",use_entity_picture:"Użyć obrazu encji?",collapsible_controls:"Zwiń sterowanie, jeśli wyłączone",icon_animation:"Animować, gdy aktywny?"},light:{show_brightness_control:"Sterowanie jasnością?",use_light_color:"Użyj koloru światła",show_color_temp_control:"Sterowanie temperaturą światła?",show_color_control:"Sterowanie kolorami?",incompatible_controls:"Niektóre funkcje są niewidoczne, jeśli światło ich nie obsługuje."},fan:{show_percentage_control:"Sterowanie procentowe?",show_oscillate_control:"Sterowanie oscylacją?"},cover:{show_buttons_control:"Przyciski sterujące?",show_position_control:"Sterowanie położeniem?",show_tilt_position_control:"Sterowanie poziomem otwarcia?"},template:{primary:"Informacje główne",secondary:"Informacje drugorzędne",multiline_secondary:"Drugorzędne wielowierszowe?",entity_extra:"Używane w szablonach i akcjach",content:"Zawartość",badge_icon:"Ikona odznaki",badge_color:"Kolor odznaki",picture:"Obraz (zamiast ikony)"},title:{title:"Tytuł",subtitle:"Podtytuł"},chips:{alignment:"Wyrównanie"},weather:{show_conditions:"Warunki?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Przyciski sterujące?"},vacuum:{commands:"Polecenia"},"media-player":{use_media_info:"Użyj informacji o multimediach",use_media_artwork:"Użyj okładek multimediów",show_volume_level:"Wyświetl poziom głośności",media_controls:"Sterowanie multimediami",media_controls_list:{on_off:"Włącz/wyłącz",shuffle:"Losowo",previous:"Poprzednie nagranie",play_pause_stop:"Odtwórz/Pauza/Zatrzymaj",next:"Następne nagranie",repeat:"Powtarzanie"},volume_controls:"Sterowanie głośnością",volume_controls_list:{volume_buttons:"Przyciski głośności",volume_set:"Poziom głośności",volume_mute:"Wycisz"}},lock:{lock:"Zablokuj",unlock:"Odblokuj",open:"Otwórz"},humidifier:{show_target_humidity_control:"Sterowanie wilgotnością?"},climate:{show_temperature_control:"Sterowanie temperaturą?",hvac_modes:"Tryby urządzenia"}},chip:{sub_element_editor:{title:"Edytor czipów"},conditional:{chip:"Czip"},"chip-picker":{chips:"Czipy",add:"Dodaj czip",edit:"Edytuj",clear:"Wyczyść",select:"Wybierz czip",types:{action:"Akcja","alarm-control-panel":"Alarm",back:"Wstecz",conditional:"Warunkowy",entity:"Encja",light:"Światło",menu:"Menu",spacer:"Odstęp",template:"Szablon",weather:"Pogoda"}}}},Qi={editor:Ji},to={form:{color_picker:{values:{default:"Cor padrão"}},info_picker:{values:{default:"Informação padrão",name:"Nome",state:"Estado","last-changed":"Última alteração","last-updated":"Última atualização",none:"Nenhum"}},icon_type_picker:{values:{default:"Tipo padrão",icon:"Ícone","entity-picture":"Imagem da entidade",none:"Nenhum"}},layout_picker:{values:{default:"Layout padrão",vertical:"Layout vertical",horizontal:"Layout horizontal"}},alignment_picker:{values:{default:"Alinhamento padrão",start:"Início",end:"Fim",center:"Centro",justify:"Justificado"}}},card:{generic:{color:"Cor",icon_color:"Cor do ícone",layout:"Layout",fill_container:"Prencher",primary_info:"Informação primária",secondary_info:"Informação secundária",icon_type:"Tipo do ícone",content_info:"Conteúdo",use_entity_picture:"Usar imagem da entidade?",collapsible_controls:"Recolher controles quando desligado",icon_animation:"Animar ícone quando ativo?"},light:{show_brightness_control:"Controle de brilho?",use_light_color:"Usar cor da luz",show_color_temp_control:"Controle de temperatura de cor?",show_color_control:"Controle de cor?",incompatible_controls:"Alguns controles podem não ser exibidos se sua luz não suportar o recurso."},fan:{show_percentage_control:"Controle de porcentagem?",show_oscillate_control:"Controle de oscilação?"},cover:{show_buttons_control:"Botões de controle?",show_position_control:"Controle de posição?",show_tilt_position_control:"Controle de inclinação?"},template:{primary:"Informação primária",secondary:"Informação secundária",multiline_secondary:"Multilinha secundária?",entity_extra:"Usado em modelos e ações",label:"Label",content:"Conteúdo",badge_icon:"Ícone do badge",badge_color:"Cor do badge",picture:"Imagem (irá substituir o ícone)"},title:{title:"Título",subtitle:"Legenda",title_tap_action:"Ação de toque no título",subtitle_tap_action:"Ação de toque na legenda"},chips:{alignment:"Alinhamento"},weather:{show_conditions:"Condições?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Botões de controle?"},vacuum:{commands:"Comandos",commands_list:{on_off:"Ligar/Desligar"}},"media-player":{use_media_info:"Usar informação da mídia",use_media_artwork:"Usar arte da mídia",show_volume_level:"Mostrar nível de volume",media_controls:"Controles de mídia",media_controls_list:{on_off:"Ligar/Desligar",shuffle:"Embaralhar",previous:"Faixa anterior",play_pause_stop:"Reproduzir/pausar/parar",next:"Próxima faixa",repeat:"Modo repetição"},volume_controls:"Controles de volume",volume_controls_list:{volume_buttons:"Botões de volume",volume_set:"Nível de volume",volume_mute:"Mudo"}},lock:{lock:"Bloquear",unlock:"Desbloquear",open:"Abrir"},humidifier:{show_target_humidity_control:"Controle de umidade?"},climate:{show_temperature_control:"Controle de temperatura?",hvac_modes:"Modos do HVAC"},number:{display_mode:"Modo de exibição",display_mode_list:{default:"Padrão (deslizante)",slider:"Deslizante",buttons:"Botões"}}},chip:{sub_element_editor:{title:"Editor de chip"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Adicionar chip",edit:"Editar",clear:"Limpar",select:"Selecionar chip",types:{action:"Ação","alarm-control-panel":"Alarme",back:"Voltar",conditional:"Condicional",entity:"Entidade",light:"Luz",menu:"Menu",spacer:"Espaçador",template:"Template",weather:"Clima"}}}},eo={not_found:"Entidade não encontrada"},io={editor:to,card:eo},oo={form:{color_picker:{values:{default:"Cor padrão"}},info_picker:{values:{default:"Informações padrão",name:"Nome",state:"Estado","last-changed":"Última alteração","last-updated":"Última atualização",none:"Nenhum"}},layout_picker:{values:{default:"Layout padrão",vertical:"Layout vertical",horizontal:"Layout horizontal"}},alignment_picker:{values:{default:"Padrão (inicio)",end:"Fim",center:"Centrado",justify:"Justificado"}}},card:{generic:{icon_color:"Cor do ícone?",layout:"Layout",primary_info:"Informações primárias",secondary_info:"Informações secundárias",use_entity_picture:"Usar imagem da entidade?",icon_animation:"Animar ícone quando ativo?"},light:{show_brightness_control:"Mostrar controle de brilho?",use_light_color:"Usar cor da luz?",show_color_temp_control:"Mostrar controle de temperatura?",show_color_control:"Mostrar controle de cor?",incompatible_controls:"Alguns controles podem não ser exibidos se a luz não suportar o recurso."},fan:{show_percentage_control:"Mostrar controle de porcentagem?",show_oscillate_control:"Mostrar controle de oscilação?"},cover:{show_buttons_control:"Mostrar botões?",show_position_control:"Mostrar controle de posição?"},template:{primary:"Informações primárias",secondary:"Informações secundárias",multiline_secondary:"Multilinha secundária?",content:"Conteúdo"},title:{title:"Título",subtitle:"Subtítulo"},chips:{alignment:"Alinhamento"},weather:{show_conditions:"Condições?",show_temperature:"Temperatura?"}},chip:{sub_element_editor:{title:"Editor de fichas"},conditional:{chip:"Ficha"},"chip-picker":{chips:"Fichas",add:"Adicionar ficha",edit:"Editar",clear:"Limpar",select:"Selecionar ficha",types:{action:"Ação","alarm-control-panel":"Alarme",back:"Voltar",conditional:"Condicional",entity:"Entidade",light:"Iluminação",menu:"Menu",template:"Modelo",weather:"Clima"}}}},no={editor:oo},ro={form:{color_picker:{values:{default:"Culoare implicită"}},info_picker:{values:{default:"Informație implicită",name:"Nume",state:"Stare","last-changed":"Ultima modificare","last-updated":"Ultima actulizare",none:"Niciuna"}},icon_type_picker:{values:{default:"Tip implicit",icon:"Pictogramă","entity-picture":"Imagine",none:"Niciuna"}},layout_picker:{values:{default:"Aranjare implicită",vertical:"Verticală",horizontal:"Orizontală"}},alignment_picker:{values:{default:"Aliniere implicită",start:"Stânga",end:"Dreapta",center:"Centrat",justify:"Umplere"}}},card:{generic:{icon_color:"Culoare pictogramă",layout:"Aranjare",fill_container:"Umplere container",primary_info:"Informație principală",secondary_info:"Informație secundară",icon_type:"Tip pictogramă",content_info:"Conținut",use_entity_picture:"Imagine?",collapsible_controls:"Restrângere la dezactivare"},light:{show_brightness_control:"Comandă pentru strălucire?",use_light_color:"Folosește culoarea luminii",show_color_temp_control:"Comandă pentru temperatură de culoare?",show_color_control:"Comandă pentru culoare?",incompatible_controls:"Unele comenzi ar putea să nu fie afișate dacă lumina nu suportă această caracteristică."},fan:{icon_animation:"Animare pictograma la activare?",show_percentage_control:"Comandă procent?",show_oscillate_control:"Comandă oscilație?"},cover:{show_buttons_control:"Comenzi pentru control?",show_position_control:"Comandă pentru poziție?",show_tilt_position_control:"Comandă pentru înclinare?"},template:{primary:"Informație principală",secondary:"Informație secundară",multiline_secondary:"Informație secundară pe mai multe linii?",entity_extra:"Folosită în șabloane și acțiuni",content:"Conținut",badge_icon:"Pictogramă insignă",badge_color:"Culoare insignă",picture:"Imagine (inlocuiește pictograma)"},title:{title:"Titlu",subtitle:"Subtitlu"},chips:{alignment:"Aliniere"},weather:{show_conditions:"Condiții?",show_temperature:"Temperatură?"},update:{show_buttons_control:"Comenzi control?"},vacuum:{commands:"Comenzi"},"media-player":{use_media_info:"Informații media",use_media_artwork:"Grafică media",show_volume_level:"Nivel volum",media_controls:"Comenzi media",media_controls_list:{on_off:"Pornit/Oprit",shuffle:"Amestecare",previous:"Pista anterioară",play_pause_stop:"Redare/Pauză/Stop",next:"Pista următoare",repeat:"Mod repetare"},volume_controls:"Comenzi volum",volume_controls_list:{volume_buttons:"Comenzi volum",volume_set:"Nivel volum",volume_mute:"Dezactivare sunet"}},lock:{lock:"Încuie",unlock:"Descuie",open:"Deschide"},humidifier:{show_target_humidity_control:"Comenzi umiditate?"},climate:{show_temperature_control:"Comenzi temperatură?",hvac_modes:"Moduri HVAC"}},chip:{sub_element_editor:{title:"Editor jeton"},conditional:{chip:"Jeton"},"chip-picker":{chips:"Jetoane",add:"Adaugă jeton",edit:"Modifică",clear:"Șterge",select:"Alege jeton",types:{action:"Acțiune","alarm-control-panel":"Alarmă",back:"Înapoi",conditional:"Condițional",entity:"Entitate",light:"Lumină",menu:"Meniu",template:"Șablon",weather:"Vreme"}}}},ao={editor:ro},so={form:{color_picker:{values:{default:"Цвет по умолчанию"}},info_picker:{values:{default:"По умолчанию",name:"Имя",state:"Статус","last-changed":"Последнее изменение","last-updated":"Последнее обновление",none:"Нет"}},icon_type_picker:{values:{default:"По умолчанию",icon:"Иконка","entity-picture":"Изображение",none:"Нет"}},layout_picker:{values:{default:"Расположение по умолчанию",vertical:"Вертикальное расположение",horizontal:"Горизонтальное расположение"}},alignment_picker:{values:{default:"Выравнивание по умолчанию",start:"К началу",end:"К концу",center:"По центру",justify:"На всю ширину"}}},card:{generic:{icon_color:"Цвет иконки",layout:"Расположение",fill_container:"Заполнение",primary_info:"Основная информация",secondary_info:"Второстепенная информация",icon_type:"Тип иконки",content_info:"Содержимое",use_entity_picture:"Использовать изображение объекта?",collapsible_controls:"Сворачивать элементы управления при выключении"},light:{show_brightness_control:"Управлять яркостью?",use_light_color:"Использовать текущий цвет света",show_color_temp_control:"Управлять цветовой температурой?",show_color_control:"Управлять цветом?",incompatible_controls:"Некоторые элементы управления могут не отображаться, если ваш светильник не поддерживает эти функции."},fan:{icon_animation:"Анимировать иконку когда включено?",show_percentage_control:"Управлять процентами?",show_oscillate_control:"Oscillate control?"},cover:{show_buttons_control:"Добавить кнопки управления?",show_position_control:"Управлять позицией?",show_tilt_position_control:"Управлять наклоном?"},template:{primary:"Основная информация",secondary:"Второстепенная информация",multiline_secondary:"Многострочная Второстепенная информация?",entity_extra:"Используется в шаблонах и действиях",content:"Содержимое",badge_icon:"Иконка значка",badge_color:"Цвет значка",picture:"Изображение (заменить иконку)"},title:{title:"Заголовок",subtitle:"Подзаголовок"},chips:{alignment:"Выравнивание"},weather:{show_conditions:"Условия?",show_temperature:"Температура?"},update:{show_buttons_control:"Кнопки управления?"},vacuum:{commands:"Команды"},"media-player":{use_media_info:"Использовать информацию с медиа-устройства",use_media_artwork:"Использовать обложку с медиа-устройства",show_volume_level:"Показать уровень громкости",media_controls:"Управление медиа-устройством",media_controls_list:{on_off:"Включение/выключение",shuffle:"Перемешивание",previous:"Предыдущий трек",play_pause_stop:"Воспроизведение/пауза/остановка",next:"Следующий трек",repeat:"Режим повтора"},volume_controls:"Регулятор громкости",volume_controls_list:{volume_buttons:"Кнопки громкости",volume_set:"Уровень громкости",volume_mute:"Без звука"}},lock:{lock:"Закрыто",unlock:"Разблокировано",open:"Открыто"},humidifier:{show_target_humidity_control:"Управлять целевым уровенем влажности?"},climate:{show_temperature_control:"Управлять целевой температурой?",hvac_modes:"Режимы работы"}},chip:{sub_element_editor:{title:"Редактор мини-карточек"},conditional:{chip:"Мини-карточка"},"chip-picker":{chips:"Мини-карточки",add:"Добавить мини-карточку",edit:"Изменить",clear:"Очистить",select:"Выбрать мини-карточку",types:{action:"Действие","alarm-control-panel":"Тревога",back:"Назад",conditional:"Условия",entity:"Объект",light:"Освещение",menu:"Меню",template:"Шаблон",weather:"Погода"}}}},lo={editor:so},co={form:{color_picker:{values:{default:"Privzeta barva"}},info_picker:{values:{default:"Privzete informacije",name:"Naziv",state:"Stanje","last-changed":"Zadnja sprememba","last-updated":"Zadnja posodobitev",none:"Brez"}},icon_type_picker:{values:{default:"Privzeta vrsta",icon:"Ikona","entity-picture":"Slika entitete",none:"Brez"}},layout_picker:{values:{default:"Privzeta postavitev",vertical:"Vertikalna postavitev",horizontal:"Horizontalna postavitev"}},alignment_picker:{values:{default:"Privzeta poravnava",start:"Pričetek",end:"Konec",center:"Center",justify:"Poravnava"}}},card:{generic:{icon_color:"Barva ikone",layout:"Postavitev",fill_container:"Zapolnitev prostora",primary_info:"Primarna informacija",secondary_info:"Sekundarna informacija",icon_type:"Vrsta ikone",content_info:"Vsebina",use_entity_picture:"Uporabi sliko entitete?",collapsible_controls:"Strni kontrolnike, ko so izklopljeni",icon_animation:"Animacija ikone, ko je aktivna?"},light:{show_brightness_control:"Nadzor svetlosti?",use_light_color:"Uporabi svetlo barvo",show_color_temp_control:"Nadzor temperature barve?",show_color_control:"Nadzor barv?",incompatible_controls:"Nekateri kontrolniki morda ne bodo prikazani, če vaša luč ne podpira te funkcije."},fan:{show_percentage_control:"Kontrola v odstotkih?",show_oscillate_control:"Kontrola nihanja?"},cover:{show_buttons_control:"Gumbi za upravljanje?",show_position_control:"Nadzor položaja?",show_tilt_position_control:"Nadzor nagiba?"},template:{primary:"Primarna informacija",secondary:"Sekundarna informacija",multiline_secondary:"Večvrstični sekundarni?",entity_extra:"Uporablja se v predlogah in dejanjih",content:"Vsebina",badge_icon:"Ikona značke",badge_color:"Barva značke",picture:"Slika (nadomestila bo ikono)"},title:{title:"Naziv",subtitle:"Podnaslov",title_tap_action:"Dejanje dotika naslova",subtitle_tap_action:"Dejanje dotika podnapisov"},chips:{alignment:"Poravnava"},weather:{show_conditions:"Pogoji?",show_temperature:"Temperatura?"},update:{show_buttons_control:"Gumbi za upravljanje?"},vacuum:{commands:"Ukazi",commands_list:{on_off:"Vklop/izklop"}},"media-player":{use_media_info:"Uporabite informacije o medijih",use_media_artwork:"Uporabite medijsko umetniško delo",show_volume_level:"Pokaži raven glasnosti",media_controls:"Nadzor medijev",media_controls_list:{on_off:"Vklop/izklop",shuffle:"Naključno",previous:"Prejšnja skladba",play_pause_stop:"Predvajaj/pavza/ustavi",next:"Naslednja skladba",repeat:"Ponavljajoči način"},volume_controls:"Kontrole glasnosti",volume_controls_list:{volume_buttons:"Gumbi za glasnost",volume_set:"Raven glasnosti",volume_mute:"Tiho"}},lock:{lock:"Zaklepanje",unlock:"Odkleni",open:"Odprto"},humidifier:{show_target_humidity_control:"Nadzor vlažnosti?"},climate:{show_temperature_control:"Nadzor temperature?",hvac_modes:"HVAC načini"},number:{display_mode:"Način prikaza",display_mode_list:{default:"Privzeto (drsnik)",slider:"Drsnik",buttons:"Gumbi"}}},chip:{sub_element_editor:{title:"Urejevalnik čipov"},conditional:{chip:"Ćiš"},"chip-picker":{chips:"Čipi",add:"Dodaj čip",edit:"Uredi",clear:"Pobriši",select:"Izbira čipa",types:{action:"Dejanje","alarm-control-panel":"Alarm",back:"Nazaj",conditional:"Pogojno",entity:"Entiteta",light:"Svetloba",menu:"Meni",spacer:"Distančnik",template:"Predloga",weather:"Vreme"}}}},uo={not_found:"Entiteta ni najdena"},ho={editor:co,card:uo},mo={form:{color_picker:{values:{default:"Predvolená farba"}},info_picker:{values:{default:"Predvolené informácie",name:"Názov",state:"Stav","last-changed":"Posledná zmena","last-updated":"Posledná aktualizácia",none:"Žiadna"}},icon_type_picker:{values:{default:"Predvolený typ",icon:"Ikona","entity-picture":"Obrázok entity",none:"Žiadny"}},layout_picker:{values:{default:"Predvolené rozloženie",vertical:"Zvislé rozloženie",horizontal:"Vodorovné rozloženie"}},alignment_picker:{values:{default:"Predvolené zarovnanie",start:"Začiatok",end:"Koniec",center:"Stred",justify:"Vyplniť"}}},card:{generic:{color:"Farba",icon_color:"Farba ikony",layout:"Rozloženie",fill_container:"Vyplniť priestor",primary_info:"Základné info",secondary_info:"Doplnkové info",icon_type:"Typ ikony",content_info:"Obsah",use_entity_picture:"Použiť obrázok entity?",collapsible_controls:"Skryť ovládanie v stave VYP.",icon_animation:"Animovaná ikona v stave ZAP?"},light:{show_brightness_control:"Ovládanie jasu?",use_light_color:"Použiť farbu svetla",show_color_temp_control:"Ovládanie teploty?",show_color_control:"Ovládanie farby?",incompatible_controls:"Niektoré ovládacie prvky sa nemusia zobraziť, pokiaľ ich svetlo nepodporuje."},fan:{show_percentage_control:"Ovládanie rýchlosti v percentách?",show_oscillate_control:"Ovládanie oscilácie?"},cover:{show_buttons_control:"Zobraziť ovládacie tlačidlá?",show_position_control:"Ovládanie pozície?",show_tilt_position_control:"Ovládanie natočenia?"},template:{primary:"Základné info",secondary:"Doplnkové info",multiline_secondary:"Viacriadkové doplnkové info?",entity_extra:"Použitá v šablónach a akciách",label:"Štítok",content:"Obsah",badge_icon:"Ikona odznaku",badge_color:"Farba odznaku",picture:"Obrázok (nahrádza ikonu)"},title:{title:"Nadpis",subtitle:"Podnadpis",title_tap_action:"Akcia klepnutia na názov",subtitle_tap_action:"Akcia klepnutia na titulky"},chips:{alignment:"Zarovnanie"},weather:{show_conditions:"Zobraziť podmienky?",show_temperature:"Zobraziť teplotu?"},update:{show_buttons_control:"Zobraziť ovládacie tlačidlá?"},vacuum:{commands:"Príkazy",commands_list:{on_off:"Zapnúť/Vypnúť"}},"media-player":{use_media_info:"Použiť info o médiu",use_media_artwork:"Použiť obrázok z média",show_volume_level:"Zobraziť úroveň hlasitosti",media_controls:"Ovládanie média",media_controls_list:{on_off:"Zap / Vyp",shuffle:"Premiešať",previous:"Predchádzajúca",play_pause_stop:"Spustiť/pauza/stop",next:"Ďalšia",repeat:"Opakovať"},volume_controls:"Ovládanie hlasitosti",volume_controls_list:{volume_buttons:"Tlačidlá hlasitosti",volume_set:"Úroveň hlasitosti",volume_mute:"Stlmiť"}},lock:{lock:"Zamknuté",unlock:"Odomknuté",open:"Otvorené"},humidifier:{show_target_humidity_control:"Ovládanie vlhkosti?"},climate:{show_temperature_control:"Ovládanie teploty?",hvac_modes:"HVAC mód"},number:{display_mode:"Režim zobrazenia",display_mode_list:{default:"Predvolené (posúvač)",slider:"Posúvač",buttons:"Tlačidlá"}}},chip:{sub_element_editor:{title:"Editor štítkov"},conditional:{chip:"Štítok"},"chip-picker":{chips:"Štítky",add:"Pridať štítok",edit:"Editovať",clear:"Vymazať",select:"Vybrať štítok",types:{action:"Akcia","alarm-control-panel":"Alarm",back:"Späť",conditional:"Podmienené",entity:"Entita",light:"Svetlo",menu:"Menu",spacer:"Medzera",template:"Šablóna",weather:"Počasie"}}}},po={not_found:"Entita nenájdená"},fo={editor:mo,card:po},go={form:{color_picker:{values:{default:"Standardfärg"}},info_picker:{values:{default:"Förvald information",name:"Namn",state:"Status","last-changed":"Sist ändrad","last-updated":"Sist uppdaterad",none:"Ingen"}},layout_picker:{values:{default:"Standard",vertical:"Vertikal",horizontal:"Horisontell"}},alignment_picker:{values:{default:"Standard (början)",end:"Slutet",center:"Centrerad",justify:"Anpassa"}}},card:{generic:{color:"Färg",icon_color:"Ikonens färg",layout:"Layout",icon_type:"Ikontyp",primary_info:"Primär information",secondary_info:"Sekundär information",use_entity_picture:"Använd enhetens bild?",collapsible_controls:"Dölj kontroller när enehten är av",icon_animation:"Animera ikonen när enheten är på?"},light:{show_brightness_control:"Styr ljushet?",use_light_color:"Styr ljusets färg",show_color_temp_control:"Styr färgtemperatur?",show_color_control:"Styr färg?",incompatible_controls:"Kontroller som inte stöds av enheten kommer inte visas"},fan:{show_percentage_control:"Procentuell kontroll?",show_oscillate_control:"Kontroll för oscillera?"},cover:{show_buttons_control:"Visa kontrollknappar?",show_position_control:"Visa positionskontroll?",show_tilt_position_control:"Visa lutningskontroll?"},template:{primary:"Primär information",secondary:"Sekundär information",multiline_secondary:"Sekundär med flera rader?",content:"Innehåll",picture:"Bild (ersätter ikonen)"},title:{title:"Rubrik",subtitle:"Underrubrik"},chips:{alignment:"Justering"},weather:{show_conditions:"Förhållanden?",show_temperature:"Temperatur?"},update:{show_buttons_control:"Visa kontrollknappar?"},vacuum:{commands:"Kommandon"},climate:{show_temperature_control:"Temperaturkontroll?",hvac_modes:"HVAC-lägen"},"media-player":{use_media_artwork:"Visa mediaomslag",show_volume_level:"Volymkontroll",media_controls:"Mediakontroller",media_controls_list:{on_off:"Slå på/av",previous:"Föregående spår",play_pause_stop:"Spela/pausa/stoppa",next:"Nästa spår",repeat:"Upprepa"},volume_controls:"Volymkontroller",volume_controls_list:{volume_buttons:"Volymknappar",volume_set:"Volymnivå",volume_mute:"Ljud av"}},lock:{lock:"Lås",unlock:"Lås upp",open:"Öppna"}},chip:{sub_element_editor:{title:"Chipredigerare"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Lägg till chip",edit:"Redigera",clear:"Rensa",select:"Välj chip",types:{action:"Åtgärd","alarm-control-panel":"Alarm",back:"Bakåt",conditional:"Villkorad",entity:"Enhet",light:"Ljus",menu:"Meny",template:"Mall",weather:"Väder"}}}},_o={editor:go},vo={form:{color_picker:{values:{default:"Varsayılan renk"}},info_picker:{values:{default:"Varsayılan bilgi",name:"İsim",state:"Durum","last-changed":"Son Değişim","last-updated":"Son Güncelleme",none:"None"}},layout_picker:{values:{default:"Varsayılan düzen",vertical:"Dikey düzen",horizontal:"Yatay düzen"}},alignment_picker:{values:{default:"Varsayılan hizalama",start:"Sola yasla",end:"Sağa yasla",center:"Ortala",justify:"İki yana yasla"}}},card:{generic:{icon_color:"Simge renki",layout:"Düzen",primary_info:"Birinci bilgi",secondary_info:"İkinci bilgi",content_info:"İçerik",use_entity_picture:"Varlık resmi kullanılsın",icon_animation:"Aktif olduğunda simgeyi hareket ettir"},light:{show_brightness_control:"Parlaklık kontrolü",use_light_color:"Işık rengini kullan",show_color_temp_control:"Renk ısısı kontrolü",show_color_control:"Renk kontrolü",incompatible_controls:"Kullandığınız lamba bu özellikleri desteklemiyorsa bazı kontroller görüntülenemeyebilir."},fan:{show_percentage_control:"Yüzde kontrolü",show_oscillate_control:"Salınım kontrolü"},cover:{show_buttons_control:"Düğme kontrolleri",show_position_control:"Pozisyon kontrolü"},template:{primary:"Birinci bilgi",secondary:"İkinci bilgi",multiline_secondary:"İkinci bilgi çok satır olsun",entity_extra:"Şablonlarda ve eylemlerde kullanılsın",content:"İçerik"},title:{title:"Başlık",subtitle:"Altbaşlık"},chips:{alignment:"Hizalama"},weather:{show_conditions:"Hava koşulu",show_temperature:"Sıcaklık"},update:{show_buttons_control:"Düğme kontrolü"},vacuum:{commands:"Komutlar"}},chip:{sub_element_editor:{title:"Chip düzenleyici"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"Chip ekle",edit:"Düzenle",clear:"Temizle",select:"Chip seç",types:{action:"Eylem","alarm-control-panel":"Alarm",back:"Geri",conditional:"Koşullu",entity:"Varlık",light:"Işık",menu:"Menü",template:"Şablon",weather:"Hava Durumu"}}}},bo={editor:vo},yo={form:{color_picker:{values:{default:"Колір за замовчуванням"}},info_picker:{values:{default:"Інформація за замовчуванням",name:"Назва",state:"Стан","last-changed":"Востаннє змінено","last-updated":"Востаннє оновлено",none:"Нічого"}},icon_type_picker:{values:{default:"За замовчуванням",icon:"Іконка","entity-picture":"Зображення сутності",none:"Нічого"}},layout_picker:{values:{default:"Розташування за замовчуванням",vertical:"Вертикальне розташування",horizontal:"Горизонтальне розташування"}},alignment_picker:{values:{default:"Вирівнювання за замовчуванням",start:"На початку",end:"В кінці",center:"По центру",justify:"Вирівняти"}}},card:{generic:{icon_color:"Колір іконки",layout:"Розташування",fill_container:"Заповнити контейнер",primary_info:"Головна інформація",secondary_info:"Додаткова інформація",icon_type:"Тип іконки",content_info:"Вміст",use_entity_picture:"Використовувати зображення сутності?",collapsible_controls:"Приховувати елементи керування коли вимкнено?",icon_animation:"Анімувати іконку при активації?"},light:{show_brightness_control:"Контроль яскравості?",use_light_color:"Використовувати колір світла",show_color_temp_control:"Керування температурою світла?",show_color_control:"Керування кольором світла?",incompatible_controls:"Деякі елементи керування можуть не відображатись якщо ваш пристрій не підтримує цю функцію."},fan:{show_percentage_control:"Керування швидкістю?",show_oscillate_control:"Керування повротом?"},cover:{show_buttons_control:"Кнопки керування?",show_position_control:"Керування позицією?",show_tilt_position_control:"Керування нахилом?"},template:{primary:"Головна інформація",secondary:"Додаткова інформація",multiline_secondary:"Багаторядкова додаткова інформація?",entity_extra:"Використовується в шаблонах та діях",content:"Вміст",badge_icon:"Іконка значка",badge_color:"Колір значка",picture:"Зображення (замінить іконку)"},title:{title:"Заголовок",subtitle:"Підзаголовок",title_tap_action:"Дія при дотику до заголовку",subtitle_tap_action:"Дія при дотику до підзаголовку"},chips:{alignment:"Вирівнювання"},weather:{show_conditions:"Умови?",show_temperature:"Температура?"},update:{show_buttons_control:"Кнопки керування?"},vacuum:{commands:"Команди",commands_list:{on_off:"Увімкнути/Вимкнути"}},"media-player":{use_media_info:"Використовувати інформацію медіа",use_media_artwork:"Використовувати зображення медіа",show_volume_level:"Показати рівень гучності",media_controls:"Керування медіа",media_controls_list:{on_off:"Увімкнути/Вимкнути",shuffle:"Перемішати",previous:"Попередній трек",play_pause_stop:"Відтворити/пауза/стоп",next:"Наступний трек",repeat:"Режим повторення"},volume_controls:"Елементи керування гучністю",volume_controls_list:{volume_buttons:"Кнопки гучності",volume_set:"Рівень гучності",volume_mute:"Вимк. звук"}},lock:{lock:"Зачинити",unlock:"Відчинити",open:"Відкрити"},humidifier:{show_target_humidity_control:"Керування вологістю?"},climate:{show_temperature_control:"Керування температурою?",hvac_modes:"Режими"},number:{display_mode:"Відображати режим",display_mode_list:{default:"За замовчуванням (повзунок)",slider:"Повзунок",buttons:"Кнопки"}}},chip:{sub_element_editor:{title:"Редактор міні-карток"},conditional:{chip:"Міні-картка"},"chip-picker":{chips:"Міні-картки",add:"Додати міні-картку",edit:"Редагувати",clear:"Очистити",select:"Обрати міні-картку",types:{action:"Дія","alarm-control-panel":"Сигналізація",back:"Назад",conditional:"Умовна",entity:"Сутність",light:"Світло",menu:"Меню",spacer:"Порожнє місце",template:"Вручну",weather:"Погода"}}}},xo={not_found:"Сутність не знайдено"},wo={editor:yo,card:xo},ko={form:{color_picker:{values:{default:"Màu mặc định"}},info_picker:{values:{default:"Thông tin mặc định",name:"Tên",state:"Trạng thái","last-changed":"Lần thay đổi cuối","last-updated":"Lần cập nhật cuối",none:"Không có"}},icon_type_picker:{values:{default:"Kiểu mặc định",icon:"Biểu tượng","entity-picture":"Ảnh thực thể",none:"Không có"}},layout_picker:{values:{default:"Bố cục mặc định",vertical:"Bố cục dọc",horizontal:"Bố cục ngang"}},alignment_picker:{values:{default:"Căn chỉnh mặc định",start:"Căn đầu",end:"Căn cuối",center:"Căn giữa",justify:"Căn hai bên"}}},card:{generic:{icon_color:"Màu biểu tượng",layout:"Bố cục",fill_container:"Làm đầy ô chứa",primary_info:"Thông tin chính",secondary_info:"Thông tin phụ",icon_type:"Kiểu biểu tượng",content_info:"Nội dung",use_entity_picture:"Dùng ảnh của thực thể?",collapsible_controls:"Thu nhỏ điều kiển khi tắt",icon_animation:"Biểu tượng chuyển động khi kích hoạt?"},light:{show_brightness_control:"Điều khiển độ sáng?",use_light_color:"Dùng màu đèn",show_color_temp_control:"Điều khiển nhiệt độ màu?",show_color_control:"Điều khiển màu sắc?",incompatible_controls:"Một số điều khiển sẽ không được hiển thị nếu đèn của bạn không hỗ trợ tính năng đó."},fan:{show_percentage_control:"Điều khiển dạng phần trăm?",show_oscillate_control:"Điều khiển xoay?"},cover:{show_buttons_control:"Điều khiển nút bấm?",show_position_control:"Điều khiển vị trí?",show_tilt_position_control:"Điều khiển độ nghiêng?"},template:{primary:"Thông tin chính",secondary:"Thông tin phụ",multiline_secondary:"Nhiều dòng thông tin phụ?",entity_extra:"Được sử dụng trong bản mẫu và hành động",content:"Nội dung",badge_icon:"Biểu tượng huy hiệu",badge_color:"Màu huy hiệu",picture:"Ảnh (thay cho biểu tượng)"},title:{title:"Tiêu đề",subtitle:"Phụ đề",title_tap_action:"Hành động khi nhấp tiêu đề",subtitle_tap_action:"Hành động khi nhấp phụ đề"},chips:{alignment:"Căn chỉnh"},weather:{show_conditions:"Điều kiện?",show_temperature:"Nhiệt độ?"},update:{show_buttons_control:"Điều khiển nút bấm?"},vacuum:{commands:"Mệnh lệnh",commands_list:{on_off:"Bật/tắt"}},"media-player":{use_media_info:"Dùng thông tin đa phương tiện",use_media_artwork:"Dùng ảnh đa phương tiện",show_volume_level:"Hiện mức âm lượng",media_controls:"Điều khiển đa phương tiện",media_controls_list:{on_off:"Bật/tắt",shuffle:"Xáo trộn",previous:"Bài trước",play_pause_stop:"Phát/tạm dừng/dừng",next:"Bài tiếp theo",repeat:"Chế độ lặp lại"},volume_controls:"Điều khiển âm lượng",volume_controls_list:{volume_buttons:"Nút âm lượng",volume_set:"Mức âm lượng",volume_mute:"Im lặng"}},lock:{lock:"Khóa",unlock:"Mở khóa",open:"Mở"},humidifier:{show_target_humidity_control:"Điều khiển độ ẩm?"},climate:{show_temperature_control:"Điều khiển nhiệt độ?",hvac_modes:"Chế độ điều hòa"},number:{display_mode:"Chế độ hiển thị",display_mode_list:{default:"Mặc định (thanh trượt)",slider:"Thanh trượt",buttons:"Nút"}}},chip:{sub_element_editor:{title:"Trình soạn phỉnh"},conditional:{chip:"Phỉnh"},"chip-picker":{chips:"Phỉnh",add:"Thêm phỉnh",edit:"Chỉnh sửa",clear:"Tẩy trống",select:"Chọn phỉnh",types:{action:"Hành động","alarm-control-panel":"Báo động",back:"Quay về",conditional:"Điều kiện",entity:"Thực thể",light:"Đèn",menu:"Trình đơn",spacer:"Ngăn cách",template:"Mẫu",weather:"Thời tiết"}}}},Co={not_found:"Không tìm thấy thực thể"},$o={editor:ko,card:Co},Eo={form:{color_picker:{values:{default:"默认颜色"}},info_picker:{values:{default:"默认信息",name:"名称",state:"状态","last-changed":"变更时间","last-updated":"更新时间",none:"无"}},icon_type_picker:{values:{default:"默认类型",icon:"图标","entity-picture":"实体图片",none:"无"}},layout_picker:{values:{default:"默认布局",vertical:"垂直布局",horizontal:"水平布局"}},alignment_picker:{values:{default:"默认",start:"左对齐",end:"右对齐",center:"居中对齐",justify:"两端对齐"}}},card:{generic:{icon_color:"图标颜色",layout:"布局",fill_container:"填满容器",primary_info:"首要信息",secondary_info:"次要信息",icon_type:"图标类型",content_info:"内容",use_entity_picture:"使用实体图片?",collapsible_controls:"关闭时隐藏控制器",icon_animation:"激活时使用动态图标?"},light:{show_brightness_control:"亮度控制?",use_light_color:"使用灯光颜色",show_color_temp_control:"色温控制?",show_color_control:"颜色控制?",incompatible_controls:"设备不支持的控制器将不会显示。"},fan:{show_percentage_control:"百分比控制?",show_oscillate_control:"摆动控制?"},cover:{show_buttons_control:"按钮控制?",show_position_control:"位置控制?",show_tilt_position_control:"角度控制?"},template:{primary:"首要信息",secondary:"次要信息",multiline_secondary:"多行次要信息?",entity_extra:"用于模板和动作",content:"内容",badge_icon:"徽标图标",badge_color:"徽标颜色",picture:"图片 (将会替代图标)"},title:{title:"标题",subtitle:"子标题",title_tap_action:"标题点击动作",subtitle_tap_action:"子标题点击动作"},chips:{alignment:"对齐"},weather:{show_conditions:"条件?",show_temperature:"温度?"},update:{show_buttons_control:"控制按钮?"},vacuum:{commands:"命令",commands_list:{on_off:"开/关"}},"media-player":{use_media_info:"使用媒体信息",use_media_artwork:"使用媒体插图",show_volume_level:"显示音量大小",media_controls:"媒体控制",media_controls_list:{on_off:"开启/关闭",shuffle:"随机",previous:"上一曲",play_pause_stop:"播放/暂停/停止",next:"下一曲",repeat:"循环模式"},volume_controls:"音量控制",volume_controls_list:{volume_buttons:"音量按钮",volume_set:"音量等级",volume_mute:"静音"}},lock:{lock:"锁定",unlock:"解锁",open:"打开"},humidifier:{show_target_humidity_control:"湿度控制?"},climate:{show_temperature_control:"温度控制?",hvac_modes:"空调模式"},number:{display_mode:"显示模式",display_mode_list:{default:"默认 (滑块)",slider:"滑块",buttons:"按钮"}}},chip:{sub_element_editor:{title:"Chip 编辑"},conditional:{chip:"Chip"},"chip-picker":{chips:"Chips",add:"添加 chip",edit:"编辑",clear:"清除",select:"选择 chip",types:{action:"动作","alarm-control-panel":"警戒控制台",back:"返回",conditional:"条件显示",entity:"实体",light:"灯光",menu:"菜单",spacer:"占位符",template:"模板",weather:"天气"}}}},Ao={not_found:"未找到实体"},So={editor:Eo,card:Ao},Io={form:{color_picker:{values:{default:"預設顏色"}},info_picker:{values:{default:"預設訊息",name:"名稱",state:"狀態","last-changed":"最近變動時間","last-updated":"最近更新時間",none:"無"}},icon_type_picker:{values:{default:"預設樣式",icon:"圖示","entity-picture":"實體圖片",none:"無"}},layout_picker:{values:{default:"預設佈局",vertical:"垂直佈局",horizontal:"水平佈局"}},alignment_picker:{values:{default:"預設對齊",start:"居左對齊",end:"居右對齊",center:"居中對齊",justify:"兩端對齊"}}},card:{generic:{icon_color:"圖示顏色",layout:"佈局",fill_container:"填滿容器",primary_info:"主要訊息",secondary_info:"次要訊息",icon_type:"圖示樣式",content_info:"內容",use_entity_picture:"使用實體圖片?",collapsible_controls:"關閉時隱藏控制項",icon_animation:"啟動時使用動態圖示?"},light:{show_brightness_control:"亮度控制?",use_light_color:"使用燈光顏色",show_color_temp_control:"色溫控制?",show_color_control:"色彩控制?",incompatible_controls:"不會顯示裝置不支援的控制。"},fan:{show_percentage_control:"百分比控制?",show_oscillate_control:"擺頭控制?"},cover:{show_buttons_control:"按鈕控制?",show_position_control:"位置控制?",show_tilt_position_control:"角度控制?"},template:{primary:"主要訊息",secondary:"次要訊息",multiline_secondary:"多行次要訊息?",entity_extra:"用於模板與動作",content:"內容",badge_icon:"角標圖示",badge_color:"角標顏色",picture:"圖片 (將會取代圖示)"},title:{title:"標題",subtitle:"副標題",title_tap_action:"標題點擊動作",subtitle_tap_action:"副標題點擊動作"},chips:{alignment:"對齊"},weather:{show_conditions:"狀況?",show_temperature:"溫度?"},update:{show_buttons_control:"按鈕控制?"},vacuum:{commands:"指令",commands_list:{on_off:"開啟、關閉"}},"media-player":{use_media_info:"使用媒體資訊",use_media_artwork:"使用媒體插圖",show_volume_level:"顯示音量大小",media_controls:"媒體控制",media_controls_list:{on_off:"開啟、關閉",shuffle:"隨機播放",previous:"上一首",play_pause_stop:"播放、暫停、停止",next:"下一首",repeat:"重複播放"},volume_controls:"音量控制",volume_controls_list:{volume_buttons:"音量按鈕",volume_set:"音量等級",volume_mute:"靜音"}},lock:{lock:"上鎖",unlock:"解鎖",open:"打開"},humidifier:{show_target_humidity_control:"溼度控制?"},climate:{show_temperature_control:"溫度控制?",hvac_modes:"空調模式"},number:{display_mode:"顯示模式",display_mode_list:{default:"預設 (滑桿)",slider:"滑桿",buttons:"按鈕"}}},chip:{sub_element_editor:{title:"小卡片編輯器"},conditional:{chip:"小卡片"},"chip-picker":{chips:"小卡片",add:"新增小卡片",edit:"編輯",clear:"清除",select:"選擇小卡片",types:{action:"動作","alarm-control-panel":"警報器控制",back:"返回",conditional:"條件",entity:"實體",light:"燈光",menu:"選單",spacer:"佔位符",template:"模板",weather:"天氣"}}}},To={not_found:"未找到實體"},zo={editor:Io,card:To};const Oo={ar:Object.freeze({__proto__:null,default:li,editor:si}),bg:Object.freeze({__proto__:null,default:di,editor:ci}),ca:Object.freeze({__proto__:null,card:hi,default:mi,editor:ui}),cs:Object.freeze({__proto__:null,card:fi,default:gi,editor:pi}),da:Object.freeze({__proto__:null,card:vi,default:bi,editor:_i}),de:Object.freeze({__proto__:null,card:xi,default:wi,editor:yi}),el:Object.freeze({__proto__:null,default:Ci,editor:ki}),en:Object.freeze({__proto__:null,card:Ei,default:Ai,editor:$i}),es:Object.freeze({__proto__:null,default:Ii,editor:Si}),fi:Object.freeze({__proto__:null,default:zi,editor:Ti}),fr:Object.freeze({__proto__:null,default:Mi,editor:Oi}),he:Object.freeze({__proto__:null,default:Di,editor:ji}),hu:Object.freeze({__proto__:null,card:Pi,default:Ni,editor:Li}),id:Object.freeze({__proto__:null,card:Fi,default:Vi,editor:Ri}),it:Object.freeze({__proto__:null,card:Ui,default:Hi,editor:Bi}),"ko-KR":Object.freeze({__proto__:null,default:Wi,editor:Yi}),nb:Object.freeze({__proto__:null,default:Ki,editor:Xi}),nl:Object.freeze({__proto__:null,card:Gi,default:Zi,editor:qi}),pl:Object.freeze({__proto__:null,default:Qi,editor:Ji}),"pt-BR":Object.freeze({__proto__:null,card:eo,default:io,editor:to}),"pt-PT":Object.freeze({__proto__:null,default:no,editor:oo}),ro:Object.freeze({__proto__:null,default:ao,editor:ro}),ru:Object.freeze({__proto__:null,default:lo,editor:so}),sl:Object.freeze({__proto__:null,card:uo,default:ho,editor:co}),sk:Object.freeze({__proto__:null,card:po,default:fo,editor:mo}),sv:Object.freeze({__proto__:null,default:_o,editor:go}),tr:Object.freeze({__proto__:null,default:bo,editor:vo}),uk:Object.freeze({__proto__:null,card:xo,default:wo,editor:yo}),vi:Object.freeze({__proto__:null,card:Co,default:$o,editor:ko}),"zh-Hans":Object.freeze({__proto__:null,card:Ao,default:So,editor:Eo}),"zh-Hant":Object.freeze({__proto__:null,card:To,default:zo,editor:Io})};function Mo(t,e){try{return t.split(".").reduce(((t,e)=>t[e]),Oo[e])}catch(t){return}}function jo(t){return function(e){var i;let o=Mo(e,null!==(i=null==t?void 0:t.locale.language)&&void 0!==i?i:"en");return o||(o=Mo(e,"en")),null!=o?o:e}} /** * @license * Copyright 2020 Google Inc. @@ -3420,7 +3420,7 @@ const ca="important",da=" !"+ca,ua=He(class extends Ye{constructor(t){var e;if(s padding-inline-start: 4px; } ${rl} - `}};n([_t({attribute:!1})],Rd.prototype,"hass",void 0),n([vt()],Rd.prototype,"_config",void 0),n([vt()],Rd.prototype,"_templateResults",void 0),n([vt()],Rd.prototype,"_unsubRenderTemplates",void 0),Rd=n([pt(Ld)],Rd),console.info("%c🍄 Mushroom 🍄 - 4.0.7","color: #ef5350; font-weight: 700;");const Fd=Ce({tap_action:$e(ni),hold_action:$e(ni),double_tap_action:$e(ni)}),Vd=(t,e)=>(e&&t&&(t=t.map((t=>"perform-action"===t?"call-service":t))),[{name:"tap_action",selector:{"ui-action":{actions:t}}},{name:"hold_action",selector:{"ui-action":{actions:t}}},{name:"double_tap_action",selector:{"ui-action":{actions:t}}}]),Bd=Ce({layout:$e(Se([we("horizontal"),we("vertical"),we("default")])),fill_container:$e(ye()),primary_info:$e(xe(rs)),secondary_info:$e(xe(rs)),icon_type:$e(xe(as))}),Ud=[{type:"grid",name:"",schema:[{name:"layout",selector:{mush_layout:{}}},{name:"fill_container",selector:{boolean:{}}}]},{type:"grid",name:"",schema:[{name:"primary_info",selector:{mush_info:{}}},{name:"secondary_info",selector:{mush_info:{}}},{name:"icon_type",selector:{mush_icon_type:{}}}]}],Hd=["color","icon_color","layout","fill_container","primary_info","secondary_info","icon_type","content_info","use_entity_picture","collapsible_controls","icon_animation"],Yd=Ce({entity:$e(Ee()),name:$e(Ee()),icon:$e(Ee())}),Wd=Ce({index:$e(ke()),view_index:$e(ke()),view_layout:ve(),type:Ee(),layout_options:ve(),visibility:ve()}),Xd=fe(Wd,fe(Yd,Bd,Fd),Ce({states:$e(be()),show_keypad:(Kd=$e(ye()),qd=(t,e)=>{console.warn(`🍄 "${e.path}" option is deprecated and no longer available. Remove it from your YAML configuration or use the built-in Home Assistant alarm panel card if you want keypad.`)},new he({...Kd,refiner:(t,e)=>void 0===t||Kd.refiner(t,e),validator:(t,e)=>void 0===t||(qd(t,e),Kd.validator(t,e))}))}));var Kd,qd;const Gd=["more-info","navigate","url","perform-action","assist","none"],Zd=["armed_home","armed_away","armed_night","armed_vacation","armed_custom_bypass"],Jd=Tt(((t,e)=>[{name:"entity",selector:{entity:{domain:Hs}}},{name:"name",selector:{text:{}}},{name:"icon",selector:{icon:{}},context:{icon_entity:"entity"}},...Ud,{type:"multi_select",name:"states",options:Zd.map((e=>[e,t(`ui.card.alarm_control_panel.${e.replace("armed","arm")}`)]))},...Vd(Gd,e)]));let Qd=class extends Ps{constructor(){super(...arguments),this._computeLabel=t=>{const e=jo(this.hass);return Hd.includes(t.name)?e(`editor.card.generic.${t.name}`):"states"===t.name?this.hass.localize("ui.panel.lovelace.editor.card.alarm-panel.available_states"):this.hass.localize(`ui.panel.lovelace.editor.card.generic.${t.name}`)}}connectedCallback(){super.connectedCallback(),vl()}setConfig(t){me(t,Xd),this._config=t}render(){if(!this.hass||!this._config)return K;const t=!ai(this.hass.config.version,2024,8),e=Jd(this.hass.localize,t);return Y` + `}};n([_t({attribute:!1})],Rd.prototype,"hass",void 0),n([vt()],Rd.prototype,"_config",void 0),n([vt()],Rd.prototype,"_templateResults",void 0),n([vt()],Rd.prototype,"_unsubRenderTemplates",void 0),Rd=n([pt(Ld)],Rd),console.info("%c🍄 Mushroom 🍄 - 4.0.8","color: #ef5350; font-weight: 700;");const Fd=Ce({tap_action:$e(ni),hold_action:$e(ni),double_tap_action:$e(ni)}),Vd=(t,e)=>(e&&t&&(t=t.map((t=>"perform-action"===t?"call-service":t))),[{name:"tap_action",selector:{"ui-action":{actions:t}}},{name:"hold_action",selector:{"ui-action":{actions:t}}},{name:"double_tap_action",selector:{"ui-action":{actions:t}}}]),Bd=Ce({layout:$e(Se([we("horizontal"),we("vertical"),we("default")])),fill_container:$e(ye()),primary_info:$e(xe(rs)),secondary_info:$e(xe(rs)),icon_type:$e(xe(as))}),Ud=[{type:"grid",name:"",schema:[{name:"layout",selector:{mush_layout:{}}},{name:"fill_container",selector:{boolean:{}}}]},{type:"grid",name:"",schema:[{name:"primary_info",selector:{mush_info:{}}},{name:"secondary_info",selector:{mush_info:{}}},{name:"icon_type",selector:{mush_icon_type:{}}}]}],Hd=["color","icon_color","layout","fill_container","primary_info","secondary_info","icon_type","content_info","use_entity_picture","collapsible_controls","icon_animation"],Yd=Ce({entity:$e(Ee()),name:$e(Ee()),icon:$e(Ee())}),Wd=Ce({index:$e(ke()),view_index:$e(ke()),view_layout:ve(),type:Ee(),layout_options:ve(),grid_options:ve(),visibility:ve()}),Xd=fe(Wd,fe(Yd,Bd,Fd),Ce({states:$e(be()),show_keypad:(Kd=$e(ye()),qd=(t,e)=>{console.warn(`🍄 "${e.path}" option is deprecated and no longer available. Remove it from your YAML configuration or use the built-in Home Assistant alarm panel card if you want keypad.`)},new he({...Kd,refiner:(t,e)=>void 0===t||Kd.refiner(t,e),validator:(t,e)=>void 0===t||(qd(t,e),Kd.validator(t,e))}))}));var Kd,qd;const Gd=["more-info","navigate","url","perform-action","assist","none"],Zd=["armed_home","armed_away","armed_night","armed_vacation","armed_custom_bypass"],Jd=Tt(((t,e)=>[{name:"entity",selector:{entity:{domain:Hs}}},{name:"name",selector:{text:{}}},{name:"icon",selector:{icon:{}},context:{icon_entity:"entity"}},...Ud,{type:"multi_select",name:"states",options:Zd.map((e=>[e,t(`ui.card.alarm_control_panel.${e.replace("armed","arm")}`)]))},...Vd(Gd,e)]));let Qd=class extends Ps{constructor(){super(...arguments),this._computeLabel=t=>{const e=jo(this.hass);return Hd.includes(t.name)?e(`editor.card.generic.${t.name}`):"states"===t.name?this.hass.localize("ui.panel.lovelace.editor.card.alarm-panel.available_states"):this.hass.localize(`ui.panel.lovelace.editor.card.generic.${t.name}`)}}connectedCallback(){super.connectedCallback(),vl()}setConfig(t){me(t,Xd),this._config=t}render(){if(!this.hass||!this._config)return K;const t=!ai(this.hass.config.version,2024,8),e=Jd(this.hass.localize,t);return Y`